Jelajahi Sumber

表单管理样式修改

SanHQin 9 bulan lalu
induk
melakukan
f2149fbd19

+ 40 - 0
src/components/pages/test/add/edit/check/checkGlobal_style.css

@@ -0,0 +1,40 @@
+.c_box{
+	padding-left: 45px;
+}
+
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}

+ 58 - 7
src/components/pages/test/add/edit/check/choice.vue

@@ -5,23 +5,23 @@
         <!-- <div v-if="!cJson">暂未设置题目</div> -->
         <div class="set_box" v-if="!cJson">请设置题目</div>
         <div v-else class="choice_box">
-            <div class="title" style="display: flex;">
+            <div class="title" style="display: flex;align-items: center;">
                 <!-- + `(${option[checkJson.type].name})` -->
-                <span style="min-width: fit-content;">{{ tindex + 1 + "、"  }}</span>
+                <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1 }}</span>
                 <span>{{ checkJson.title }}</span>
                 <!-- {{ tindex + 1 + "、" + `(${option[checkJson.type].name})` + checkJson.title }} -->
                 <span style="min-width: fit-content;" v-if="checkJson.type == 2">{{ `(${option[checkJson.type].name})` }}</span>
                 <span style="color: #efa030;min-width: fit-content;" v-if="checkJson.score">({{ '分值:' + checkJson.score + '分' }})</span></div>
             <div class="choices">
                 <div class="choice" v-for="(item, index) in checkJson.array" :key="index">
-                    <div class="choice_c" v-if="checkJson.type == 2"><el-checkbox v-model="checkJson.answer2" :label="index"
+                    <div class="choice_c" v-if="checkJson.type == 2"  @click="check(checkJson.type, index)"><el-checkbox v-model="checkJson.answer2" :label="index"
                             :disabled="checktype == 2"></el-checkbox><span
                             :class="{ right: see && cJson.answer.indexOf(index) != -1 }"
-                            @click="check(checkJson.type, index)">{{ item.option }}</span></div>
-                    <div class="choice_c" v-if="checkJson.type == 1"><el-radio v-model="checkJson.answer2[0]" :label="index"
+                           >{{ item.option }}</span></div>
+                    <div class="choice_c" v-if="checkJson.type == 1"  @click="check(checkJson.type, index)"><el-radio v-model="checkJson.answer2[0]" :label="index"
                             :disabled="checktype == 2"></el-radio><span
                             :class="{ right: see && cJson.answer.indexOf(index) != -1 }"
-                            @click="check(checkJson.type, index)">{{ item.option }}</span></div>
+                           >{{ item.option }}</span></div>
                 </div>
             </div>
         </div>
@@ -93,9 +93,10 @@ export default {
 .c_box {
     width: 100%;
     position: relative;
+		padding-left: 45px;
 }
 
-@import '../../global_styles.css';
+/* @import '../../global_styles.css'; */
 
 
 
@@ -165,4 +166,54 @@ export default {
 .choice_box>.choices>.choice>>>.el-radio__input.is-disabled.is-checked .el-radio__inner::after {
     background-color: #fff !important;
 }
+
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
+
+.choice_c{
+	width: calc(100% - 45px);
+	height: auto;
+	padding: 12px 10px;
+	background-color: #F3F7FD;
+	border: solid 1px #3681FC;
+	border-radius: 30px;
+	display: flex;
+	align-items: center;
+	cursor: pointer;
+	margin-bottom: 10px;
+}
 </style>

+ 41 - 3
src/components/pages/test/add/edit/check/course.vue

@@ -1,12 +1,12 @@
 <template>
     <div class="c_box">
         <div class="choice_box" v-loading="isloading">
-            <div class="title" style="display: flex;">
-                <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+            <div class="title" style="display: flex; align-items: center;">
+                <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1 }}</span>
                 <span>{{ checkJson.title }}</span>
             </div>
             <div class="detail" v-if="checkJson.detail" v-html="checkJson.detail"
-                style="color: #00000099;margin-top: 5px;">
+                style="color: #00000066;margin-top: 5px;">
             </div>
             <div class="choices" v-if="checkJson.courses.length">
                 <div class="course" @click="openCourse()">
@@ -142,6 +142,7 @@ export default {
 .c_box {
     width: 100%;
     position: relative;
+		padding-left: 45px;
 }
 
 /* .mask {
@@ -202,4 +203,41 @@ export default {
 }
 .course > .content > .c_c span:nth-child(1){}
 .course > .content > .c_c span:nth-child(2){}
+
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
 </style>

+ 303 - 156
src/components/pages/test/add/edit/check/course2.vue

@@ -1,18 +1,49 @@
 <template>
-    <div class="c_box">
-        <div class="choice_box" v-loading="isloading">
-            <div class="title" style="display: flex;">
-                <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
-                <span>{{ checkJson.title }}</span>
-            </div>
-            <div class="detail" v-if="checkJson.detail" v-html="checkJson.detail"
-                style="color: #00000099;margin-top: 5px;">
-            </div>
-            <div class="choices">
+  <div class="c_box">
+    <div class="choice_box" v-loading="isloading">
+      <div class="title" style="display: flex;align-items: center;">
+        <span class="g_t_index" style="min-width: fit-content;">{{
+          tindex + 1
+        }}</span>
+        <span>{{ checkJson.title }}</span>
+      </div>
+      <div
+        class="detail"
+        v-if="checkJson.detail"
+        v-html="checkJson.detail"
+        style="color: #00000066;margin-top: 5px;"
+      ></div>
+      <!-- <div class="choices">
                 <el-button type="primary" size="small" @click="openCourseD">选择课程</el-button>
+            </div> -->
+      <div class="choices">
+        <div class="c_list">
+          <div
+            class="c_l_add1"
+            v-if="courseDetail.length == 0"
+            @click="openCourseD"
+          >
+            点击选择课程
+          </div>
+          <div
+            class="c_l_item"
+            @click="openCourse(course.courseId)"
+            v-for="(course, index) in courseDetail"
+						 v-if="courseDetail.length!==0"
+            :key="index"
+          >
+            <img :src="course.cover" alt="" />
+            <div>
+              <div>{{ course.title }}</div>
+              <div>{{ course.name ? course.name : "暂无" }}</div>
+              <div>创建人:{{ course.username }}</div>
+              <div>协作者:{{ course.xieName ? course.xieName : "暂无" }}</div>
             </div>
-            <div class="choices" v-if="checkJson.answer2.length">
-                <div class="course" @click="openCourse(course.courseId)" v-for="(course, index) in courseDetail" :key="index">
+          </div>
+
+					<div class="c_l_add2"  @click="openCourseD" v-if="courseDetail.length!==0">点击选择课程</div>
+        </div>
+        <!-- <div class="course" @click="openCourse(course.courseId)" v-for="(course, index) in courseDetail" :key="index">
                     <div class="banner">
                         <img :src="course.cover" alt="">
                     </div>    
@@ -34,134 +65,138 @@
                             <span>{{ course.xieName ? course.xieName : '暂无' }}</span>
                         </div>
                     </div>    
-                </div>
-                <!-- <div class="page" v-if="checktype == '1'">
+                </div> -->
+        <!-- <div class="page" v-if="checktype == '1'">
                     <el-button type="primary" size="mini" :disabled="page == 0" @click="setPage('-1')">上一个</el-button>
                     <div class="p_page"><span>{{ page + 1 }}</span><span>/</span><span>{{ checkJson.courses.length }}</span>
                     </div>
                     <el-button type="primary" size="mini" :disabled="page == (checkJson.courses.length - 1)"
                         @click="setPage('1')">下一个</el-button>
                 </div> -->
-            </div>
-        </div>
-        <courseDilogVue :dialogVisibleCourse.sync="dialogVisibleCourse" :courses="checkJson.answer2" @setCourse="setCourse">
-        </courseDilogVue>
+      </div>
     </div>
+    <courseDilogVue
+      :dialogVisibleCourse.sync="dialogVisibleCourse"
+      :courses="checkJson.answer2"
+      @setCourse="setCourse"
+    >
+    </courseDilogVue>
+  </div>
 </template>
 
 <script>
-import courseDilogVue from '../../../add/components/course2/courseDilog.vue'
+import courseDilogVue from "../../../add/components/course2/courseDilog.vue";
 export default {
-    components: {
-        courseDilogVue,
+  components: {
+    courseDilogVue
+  },
+  props: {
+    tindex: {
+      type: Number
     },
-    props: {
-        tindex: {
-            type: Number
-        },
-        cJson: {
-            type: Object,
-        },
-        checktype: {
-            type: Number,
-            default: 1
-        },
-        see: {
-            type: Boolean,
-            default: false
-        }
+    cJson: {
+      type: Object
     },
-    data() {
-        return {
-            option: {
-                1: { name: '附件' },
-            },
-            userid: this.$route.query.userid,
-            checkJson: undefined,
-            progress: 0,
-            isFinishSize: 0,
-            proVisible: false,
-            isAllSize: 0,
-            wurl: "",
-            isTong: false,
-            page: 0,
-            isloading: false,
-            courseDetail:[],
-            dialogVisibleCourse: false
-        }
+    checktype: {
+      type: Number,
+      default: 1
     },
-    computed: {
-
+    see: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data() {
+    return {
+      option: {
+        1: { name: "附件" }
+      },
+      userid: this.$route.query.userid,
+      checkJson: undefined,
+      progress: 0,
+      isFinishSize: 0,
+      proVisible: false,
+      isAllSize: 0,
+      wurl: "",
+      isTong: false,
+      page: 0,
+      isloading: false,
+      courseDetail: [],
+      dialogVisibleCourse: false
+    };
+  },
+  computed: {},
+  watch: {
+    checkJson: {
+      handler(newValue) {
+        this.$emit("update:cJson", newValue);
+      },
+      deep: true
+    }
+  },
+  methods: {
+    setCourse(courses) {
+      this.checkJson.answer2 = courses;
+      this.getCourse(this.checkJson.answer2);
+      this.$forceUpdate();
+    },
+    depthCopy(s) {
+      return JSON.parse(JSON.stringify(s));
     },
-    watch: {
-        checkJson: {
-            handler(newValue) {
-                this.$emit('update:cJson', newValue)
-            },
-            deep: true
-        },
+    openFileBox() {
+      this.dialogVisiblefile = true;
     },
-    methods: {
-        setCourse(courses) {
-            this.checkJson.answer2 = courses
-            this.getCourse(this.checkJson.answer2)
-            this.$forceUpdate()
-        },
-        depthCopy(s) {
-            return JSON.parse(JSON.stringify(s));
-        },
-        openFileBox() {
-            this.dialogVisiblefile = true
-        },
-        setPage(index) {
-            if (index == '1') {
-                this.page++
-            } else if (index == '-1') {
-                this.page--
-            }
-            this.checkJson.answer2 = this.checkJson.courses[this.page]
-            this.getCourse(this.checkJson.answer2)
-        },
-        openCourse(cid){
-            top.postMessage({ cid: cid, screenType: "3" }, "*");
-        },
-        getCourse(id) {
-            this.isloading = true
-            let params = {
-                cid: id.join(","),
-            };
-            this.ajax
-                .get(this.$store.state.api + "getCourseInfoTestAll", params)
-                .then((res) => {
-                    this.isloading = false
-                    this.courseDetail = res.data[0]
-                    this.courseDetail.forEach(element => {
-                        element.cover = JSON.parse(element.cover)[0].url
-                    });
-                })
-                .catch((err) => {
-                    this.isloading = false
-                    console.error(err);
-                });
-        },
-        openCourseD(){
-            this.dialogVisibleCourse = true
-        }
+    setPage(index) {
+      if (index == "1") {
+        this.page++;
+      } else if (index == "-1") {
+        this.page--;
+      }
+      this.checkJson.answer2 = this.checkJson.courses[this.page];
+      this.getCourse(this.checkJson.answer2);
     },
-    mounted() {
-        this.checkJson = this.cJson ? this.depthCopy(this.cJson) : undefined
-        if(this.checkJson.answer2.length){
-            // this.page = this.checkJson.courses.indexOf(this.checkJson.answer2)
-            this.getCourse(this.checkJson.answer2)
-        }
+    openCourse(cid) {
+      top.postMessage({ cid: cid, screenType: "3" }, "*");
+    },
+    getCourse(id) {
+      this.isloading = true;
+      let params = {
+        cid: id.join(",")
+      };
+      this.ajax
+        .get(this.$store.state.api + "getCourseInfoTestAll", params)
+        .then(res => {
+          this.isloading = false;
+          this.courseDetail = res.data[0];
+          this.courseDetail.forEach(element => {
+            element.cover = JSON.parse(element.cover)[0].url;
+          });
+        })
+        .catch(err => {
+          this.isloading = false;
+          console.error(err);
+        });
+    },
+    openCourseD() {
+      this.dialogVisibleCourse = true;
     }
-}
+  },
+  mounted() {
+    this.checkJson = this.cJson ? this.depthCopy(this.cJson) : undefined;
+    if (this.checkJson.answer2.length) {
+      // this.page = this.checkJson.courses.indexOf(this.checkJson.answer2)
+      this.getCourse(this.checkJson.answer2);
+    }
+  }
+};
 </script>
 
 <style scoped>
 .c_box {
-    width: 100%;
-    position: relative;
+  width: 100%;
+  position: relative;
+  padding-left: 45px;
+  overflow: visible;
 }
 
 /* .mask {
@@ -172,59 +207,171 @@ export default {
 } */
 
 .choice_box {
-    white-space: pre-line;
+  white-space: pre-line;
 }
 
-.choice_box>.title {
-    font-weight: bold;
-    width: 100%;
-    word-break: break-all;
+.choice_box > .title {
+  font-weight: bold;
+  width: 100%;
+  word-break: break-all;
 }
 
-.choice_box>.choices {
-    margin-top: 10px;
+.choice_box > .choices {
+  margin-top: 10px;
 }
 
-.choices > .page{
-    margin-top: 10px;
-    display: flex;
-    align-items: center;
+.choices > .page {
+  margin-top: 10px;
+  display: flex;
+  align-items: center;
 }
 
-.p_page{
-    margin: 0 10px;
+.p_page {
+  margin: 0 10px;
 }
 
 .course {
-    display: flex;
-    align-items: center;
-    cursor: pointer;
+  display: flex;
+  align-items: center;
+  cursor: pointer;
 }
 
-.course + .course{
-    margin-top: 10px;
+.course + .course {
+  margin-top: 10px;
 }
 
 .course > .banner {
-    width: 200px;
-    height: 120px;
-    border-radius: 5px;
-    overflow: hidden;
-    border: 1px solid #3896fc;
-    box-sizing: border-box;
-    padding: 5px;
-    margin-right: 15px;
-}
-.course > .banner > img{
-    width: 100%;
-    height: 100%;
-    object-fit: cover;
+  width: 200px;
+  height: 120px;
+  border-radius: 5px;
+  overflow: hidden;
+  border: 1px solid #3896fc;
+  box-sizing: border-box;
+  padding: 5px;
+  margin-right: 15px;
+}
+.course > .banner > img {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
+}
+.course > .content {
+}
+.course > .content > .c_c {
 }
-.course > .content {}
-.course > .content > .c_c {}
-.course > .content > .c_c + .c_c{
-    margin-top: 5px;
+.course > .content > .c_c + .c_c {
+  margin-top: 5px;
+}
+.course > .content > .c_c span:nth-child(1) {
+}
+.course > .content > .c_c span:nth-child(2) {
+}
+
+.g_t_index {
+  color: #3681fc;
+  font-size: 28px;
+  font-weight: bold;
+  position: relative;
+  margin-right: 30px;
+  margin-left: -40px;
+}
+
+.g_t_index + span {
+  font-weight: bold;
+  font-size: 18px;
+}
+
+.g_t_index::after {
+  content: "";
+  width: 18px;
+  height: 2px;
+  position: absolute;
+  right: -18px;
+  top: 50%;
+  transform: translateY(-50%);
+  background: #3681fc;
+}
+
+.g_t_index::before {
+  content: "";
+  width: 6px;
+  height: 6px;
+  border-right: 2px solid #3681fc;
+  border-top: 2px solid #3681fc;
+  position: absolute;
+  right: -15px;
+  top: 50%;
+  transform: rotate(45deg) translateY(-5px);
+}
+
+.c_list {
+  width: calc(100% - 10px);
+  min-height: 200px;
+  height: auto;
+  border: 1px solid #e7e7e7;
+  border-radius: 5px;
+  box-sizing: border-box;
+  padding: 10px;
+  display: flex;
+  flex-wrap: wrap;
+  /* overflow: auto; */
+}
+
+.c_l_add1 {
+  width: 100%;
+  height: 200px;
+  background-color: #F9FAFB;
+	border: 1.5px dashed #dfdfdf;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  color: #00000066;
+  border-radius: 5px;
+  font-size: 18px;
+  cursor: pointer;
+}
+
+.c_l_add2{
+	width: 230px;
+  height: 200px;
+	background-color: #F9FAFB;
+	border: 1.5px dashed #dfdfdf;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  color: #00000066;
+  border-radius: 5px;
+  font-size: 18px;
+  cursor: pointer;
+}
+
+.c_l_item {
+  width: 230px;
+  height: 200px;
+  margin-right: 10px;
+  box-sizing: border-box;
+  border: solid 1px #3896FC;
+  border-radius: 5px;
+	cursor: pointer;
+	box-sizing: border-box;
+	padding: 5px;
+}
+
+.c_l_item > img {
+  width: 100%;
+  height: 110px;
+  object-fit: cover;
+	margin-bottom: 5px;
+}
+
+.c_l_item > div {
+  width: 210px;
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  font-size: 14px; /* 设置字体大小 */
+  color: #333; /* 设置字体颜色 */
+	box-sizing: border-box;
 }
-.course > .content > .c_c span:nth-child(1){}
-.course > .content > .c_c span:nth-child(2){}
-</style>
+</style>

+ 41 - 3
src/components/pages/test/add/edit/check/eva.vue

@@ -1,12 +1,12 @@
 <template>
     <div class="c_box">
         <div class="choice_box">
-            <div class="title" style="display: flex;">
-                <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+            <div class="title" style="display: flex;align-items: center;">
+                <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1}}</span>
                 <span>{{ checkJson.title }}</span>
             </div>
             <div class="detail" v-if="checkJson.detail" v-html="checkJson.detail"
-                style="color: #00000099;margin-top: 5px;">
+                style="color:#00000066;margin-top: 5px;">
             </div>
             <div class="choices">
                 <div class="score" :class="{active: (checkJson.answer2 || checkJson.answer2 === 0) && (checkJson.answer2 > index || checkJson.answer2 === index)}" @click="score(index)" v-for="(item, index) in (parseInt(checkJson.big) - parseInt(checkJson.small) + 1)" :key="index">{{ parseInt(checkJson.small) + index }}</div>
@@ -82,6 +82,7 @@ export default {
 .c_box {
     width: 100%;
     position: relative;
+		padding-left: 45px;
 }
 
 /* .mask {
@@ -129,4 +130,41 @@ export default {
     background: #65b1ff;
 }
 
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
+
 </style>

+ 49 - 7
src/components/pages/test/add/edit/check/file.vue

@@ -10,22 +10,23 @@
     </div>
     <div v-else class="choice_box">
       <!-- <div class="title"><div>{{ `(${option[checkJson.type].name})` }}</div><div v-html="checkJson.title"></div></div> -->
-      <div class="title" style="display: flex;">
+      <div class="title" style="display: flex;align-items: center;">
         <!-- + `(${option[checkJson.type].name})` -->
-        <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+        <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1}}</span>
         <span>{{ checkJson.title }}</span>
         <span
           style="color: #efa030;min-width: fit-content;"
           v-if="checkJson.score"
-          >({{ "分值:" + checkJson.score + "分" }})</span
+          >({{ "分值:" + checkJson.score + "分" }})</span	
         >
+				
         <!-- </div><div v-html="checkJson.title"></div> -->
       </div>
       <div
         class="detail"
         v-if="checkJson.detail"
         v-html="checkJson.detail"
-        style="color: #00000099;margin-top: 5px;"
+        style="color: #00000066;margin-top: 5px;"
       ></div>
       <div class="choices">
         <div class="file_box" v-if="checkJson.mobanFile && checkJson.mobanFile.length" v-loading="loading">
@@ -142,7 +143,7 @@
           </div>
           <!-- @click.stop="addImg($event)"  @click.stop="addImg($event)" -->
           <div class="uploadQ" v-else>
-            <span>填写者上传</span>
+            <span>填写者上传</span>
             <!-- <input type="file" accept="*" style="display: none" multiple="multiple" @change="beforeUpload($event)" /> -->
           </div>
           <div v-if="proVisible" class="mask">
@@ -824,6 +825,7 @@ export default {
 .c_box {
   width: 100%;
   position: relative;
+	padding-left: 45px;
 }
 
 /* .mask {
@@ -857,7 +859,7 @@ export default {
   box-sizing: border-box;
   background: none;
   border: none;
-  border-radius: 5px;
+  border-radius: 8px;
   background: #fff;
   font-size: 16px;
   resize: none;
@@ -865,6 +867,7 @@ export default {
   min-height: 120px;
   /* border: 1px solid #3682fc00; */
   border: 1.5px solid #e0e0e0;
+  border-style: dashed;
   position: relative;
 }
 
@@ -875,7 +878,9 @@ export default {
   display: flex;
   align-items: center;
   justify-content: center;
-  background: #f9fafb;
+  /* background: #f9fafb; */
+	background-color: #fff;
+	font-size: 22px;
   color: rgb(124, 124, 124);
   border-radius: 5px;
   cursor: pointer;
@@ -1112,4 +1117,41 @@ export default {
     color: #3681fc;
     cursor: pointer;
 }
+
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
 </style>

+ 48 - 8
src/components/pages/test/add/edit/check/gap.vue

@@ -6,9 +6,9 @@
         <div v-else class="choice_box">
             <!-- <div class="title"><div>{{ `(${option[checkJson.type].name})` }}</div><div v-html="checkJson.title"></div></div> -->
             <div class="title">
-                <div  style="display: flex;">
+                <div  style="display: flex;align-items: center;">
                     <!--  + `(${option[checkJson.type].name})` -->
-                    <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+                    <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1 }}</span>
                     <span>{{ checkJson.title }}</span>
                     <span style="min-width: fit-content;color: #efa030;">{{ checkJson.score ? '(分值:'+checkJson.score+'分)' : '' }}</span>
                 </div>
@@ -29,8 +29,8 @@
                 <!-- </div><div v-html="checkJson.title"></div> -->
             </div>
             <div class="choices">
-                <textarea :readonly="checktype == 2" rows="2" v-autoHeight="68" class="binfo_input binfo_textarea" cols v-model="checkJson.answer2"
-                    placeholder=""></textarea>
+                <textarea :readonly="checktype == 2" rows="2" v-autoHeight="80" class="binfo_input binfo_textarea" cols v-model="checkJson.answer2"
+                    placeholder="请输入内容"></textarea>
             </div>
         </div>
     </div>
@@ -105,15 +105,13 @@ export default {
 </script>
 
 <style scoped>
+
 .c_box {
     width: 100%;
     position: relative;
+		padding-left: 45px;
 }
 
-@import '../../global_styles.css';
-
-
-
 .choice_box>.choices {
     margin-top: 10px;
 }
@@ -149,4 +147,46 @@ export default {
 .binfo_input:focus-visible {
     border: 1.5px solid #3681FC !important;
 }
+
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
+
+.choices>textarea{
+	border-color: #E7E7E7;
+	border-radius: 8px;
+}
 </style>

+ 6 - 4
src/components/pages/test/add/edit/check/index.vue

@@ -275,13 +275,14 @@ export default {
 .check_box+.check_box {
   margin-top: 10px;
   padding-top: 10px;
-  border-top: 1px solid #eee;
+  /* border-top: 1px solid #eee; */
 }
 
 .check_box>.title {
-  font-size: 20px;
+  font-size: 24px;
   word-break: break-all;
   font-weight: bold;
+	margin-left: 45px;
 }
 
 .check_box>.answerBox {
@@ -298,12 +299,13 @@ export default {
 }
 
 .check_box_xia + .check_box_xia {
-  border-top: 1px solid #eee;
+  /* border-top: 1px solid #eee; */
 }
 
 .check_box_xia>.title {
-  font-size: 18px;
+  font-size: 22px;
   font-weight: bold;
+	margin-left: 45px;
 }
 
 .check_box_xia>.answerBox {

+ 52 - 6
src/components/pages/test/add/edit/check/time.vue

@@ -1,20 +1,20 @@
 <template>
     <div class="c_box">
         <div class="choice_box">
-            <div class="title" style="display: flex;">
-                <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+            <div class="title" style="display: flex;align-items: center;">
+                <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1 }}</span>
                 <span>{{ checkJson.title }}</span>
             </div>
             <div class="detail" v-if="checkJson.detail" v-html="checkJson.detail"
-                style="color: #00000099;margin-top: 5px;">
+                style="color: #00000066;margin-top: 5px;">
             </div>
-            <div style="margin-top: 10px;">
+            <div style="margin-top: 10px;" class="datePicker">
                 <el-date-picker
                     v-model="checkJson.answer2"
                     type="date"
                     format="yyyy 年 MM 月 dd 日"
                     value-format="yyyy年MM月dd日"
-                    placeholder="年/月/日">
+                    placeholder="年/月/日 (请选择日期)">
                 </el-date-picker>
             </div>
         </div>
@@ -80,6 +80,7 @@ export default {
 .c_box {
     width: 100%;
     position: relative;
+		padding-left: 45px;
 }
 
 /* .mask {
@@ -89,8 +90,53 @@ export default {
     z-index: 2;
 } */
 
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
 
-@import '../../global_styles.css'
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
+
+.datePicker>>>.el-date-editor{
+	width: 100%;
+}
+
+.datePicker>>>.el-input__inner{
+	border: none;
+	outline: none;
+	font-size: 16px;
+	border-bottom: solid 1px #E7E7E7;
+}
 
 
 </style>

+ 57 - 6
src/components/pages/testStudent/view/component/choice.vue

@@ -4,9 +4,9 @@
         <div v-if="!checkJson">暂未设置题目</div>
         <div v-else class="choice_box">
             <div class="c_title">
-                <div class="title" style="display: flex;">
+                <div class="title" style="display: flex;align-items: center;">
                     <!-- + `(${option[checkJson.type].name})` -->
-                    <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+                    <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1}}</span>
                     <span>{{ checkJson.title }}</span>
                     <!-- {{ tindex + 1 + "、" + `(${option[checkJson.type].name})` + checkJson.title }} -->
                     <span style="min-width: fit-content;" v-if="checkJson.type == 2">{{
@@ -25,14 +25,14 @@
             </div>
             <div class="choices">
                 <div class="choice" v-for="(item, index) in checkJson.array" :key="index">
-                    <div class="choice_c" v-if="checkJson.type == 2"><el-checkbox v-model="checkJson.answer2"
+                    <div class="choice_c" v-if="checkJson.type == 2" @click="check(checkJson.type, index)"><el-checkbox v-model="checkJson.answer2"
                             :label="index" :disabled="checktype == 2" @change="changeJson"></el-checkbox><span
                             :class="{ right: see && cJson.answer.indexOf(index) != -1 }"
-                            @click="check(checkJson.type, index)">{{ item.option }}</span></div>
-                    <div class="choice_c" v-if="checkJson.type == 1"><el-radio v-model="checkJson.answer2[0]"
+                            >{{ item.option }}</span></div>
+                    <div class="choice_c" v-if="checkJson.type == 1" @click="check(checkJson.type, index)"><el-radio v-model="checkJson.answer2[0]"
                             :label="index" :disabled="checktype == 2" @change="changeJson"></el-radio><span
                             :class="{ right: see && cJson.answer.indexOf(index) != -1 }"
-                            @click="check(checkJson.type, index)">{{ item.option }}</span></div>
+                            >{{ item.option }}</span></div>
                 </div>
             </div>
         </div>
@@ -136,6 +136,7 @@ export default {
 .c_box {
     width: 100%;
     position: relative;
+		padding-left: 45px;
 }
 
 .mask {
@@ -241,4 +242,54 @@ export default {
     padding: 0 5px;
     text-align: right;
 }
+
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
+
+.choice_c{
+	width: calc(100% - 45px);
+	height: auto;
+	padding: 12px 10px;
+	background-color: #F3F7FD;
+	border: solid 1px #3681FC;
+	border-radius: 30px;
+	display: flex;
+	align-items: center;
+	cursor: pointer;
+	margin-bottom: 10px;
+}
 </style>

+ 41 - 3
src/components/pages/testStudent/view/component/course.vue

@@ -1,12 +1,12 @@
 <template>
     <div class="c_box">
         <div class="choice_box" v-loading="isloading" v-if="checkJson">
-            <div class="title" style="display: flex;">
-                <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+            <div class="title" style="display: flex;align-items: center;">
+                <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1 }}</span>
                 <span>{{ checkJson.title }}</span>
             </div>
             <div class="detail" v-if="checkJson.detail" v-html="checkJson.detail"
-                style="color: #00000099;margin-top: 5px;">
+                style="color: #00000066;margin-top: 5px;">
             </div>
             <div class="choices" v-if="checkJson.courses.length">
                 <div class="course" @click="openCourse()">
@@ -191,6 +191,7 @@ export default {
 .c_box {
     width: 100%;
     position: relative;
+		padding-left: 45px;
 }
 
 /* .mask {
@@ -286,4 +287,41 @@ export default {
     display: block;
     text-overflow: ellipsis;
 }
+
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
 </style>

+ 311 - 157
src/components/pages/testStudent/view/component/course2.vue

@@ -1,18 +1,57 @@
 <template>
-    <div class="c_box">
-        <div class="choice_box" v-loading="isloading">
-            <div class="title" style="display: flex;">
-                <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
-                <span>{{ checkJson.title }}</span>
+  <div class="c_box">
+    <div class="choice_box" v-loading="isloading">
+      <div class="title" style="display: flex;align-items: center;">
+        <span class="g_t_index" style="min-width: fit-content;">{{
+          tindex + 1
+        }}</span>
+        <span>{{ checkJson.title }}</span>
+      </div>
+      <div
+        class="detail"
+        v-if="checkJson.detail"
+        v-html="checkJson.detail"
+        style="color: #00000066;margin-top: 5px;"
+      ></div>
+      <!-- <div class="choices" v-if="!see">
+        <el-button type="primary" size="small" @click="openCourseD"
+          >选择课程</el-button
+        >
+      </div> -->
+      <div class="choices">
+        <div class="c_list">
+          <div
+            class="c_l_add1"
+            v-if="courseDetail.length == 0"
+            @click="openCourseD"
+          >
+            点击选择课程
+          </div>
+          <div
+            class="c_l_item"
+            @click="openCourse(course.courseId)"
+            v-for="(course, index) in courseDetail"
+            v-if="courseDetail.length !== 0"
+            :key="index"
+          >
+            <img :src="course.cover" alt="" />
+            <div>
+              <div>{{ course.title }}</div>
+              <div>{{ course.name ? course.name : "暂无" }}</div>
+              <div>创建人:{{ course.username }}</div>
+              <div>协作者:{{ course.xieName ? course.xieName : "暂无" }}</div>
             </div>
-            <div class="detail" v-if="checkJson.detail" v-html="checkJson.detail"
-                style="color: #00000099;margin-top: 5px;">
-            </div>
-            <div class="choices" v-if="!see">
-                <el-button type="primary" size="small" @click="openCourseD">选择课程</el-button>
-            </div>
-            <div class="choices" v-if="checkJson.answer2.length">
-                <div class="course" @click="openCourse(course.courseId)" v-for="(course, index) in courseDetail" :key="index">
+          </div>
+
+          <div
+            class="c_l_add2"
+            @click="openCourseD"
+            v-if="courseDetail.length !== 0"
+          >
+            点击选择课程
+          </div>
+        </div>
+        <!-- <div class="course" @click="openCourse(course.courseId)" v-for="(course, index) in courseDetail" :key="index">
                     <div class="banner">
                         <img :src="course.cover" alt="">
                     </div>    
@@ -34,134 +73,137 @@
                             <span>{{ course.xieName ? course.xieName : '暂无' }}</span>
                         </div>
                     </div>    
-                </div>
-                <!-- <div class="page" v-if="checktype == '1'">
+                </div> -->
+        <!-- <div class="page" v-if="checktype == '1'">
                     <el-button type="primary" size="mini" :disabled="page == 0" @click="setPage('-1')">上一个</el-button>
                     <div class="p_page"><span>{{ page + 1 }}</span><span>/</span><span>{{ checkJson.courses.length }}</span>
                     </div>
                     <el-button type="primary" size="mini" :disabled="page == (checkJson.courses.length - 1)"
                         @click="setPage('1')">下一个</el-button>
                 </div> -->
-            </div>
-        </div>
-        <courseDilogVue :dialogVisibleCourse.sync="dialogVisibleCourse" :courses="checkJson.answer2" @setCourse="setCourse">
-        </courseDilogVue>
+      </div>
     </div>
+    <courseDilogVue
+      :dialogVisibleCourse.sync="dialogVisibleCourse"
+      :courses="checkJson.answer2"
+      @setCourse="setCourse"
+    >
+    </courseDilogVue>
+  </div>
 </template>
 
 <script>
-import courseDilogVue from '../../../test/add/components/course2/courseDilog.vue'
+import courseDilogVue from "../../../test/add/components/course2/courseDilog.vue";
 export default {
-    components: {
-        courseDilogVue,
+  components: {
+    courseDilogVue
+  },
+  props: {
+    tindex: {
+      type: Number
     },
-    props: {
-        tindex: {
-            type: Number
-        },
-        cJson: {
-            type: Object,
-        },
-        checktype: {
-            type: Number,
-            default: 1
-        },
-        see: {
-            type: Boolean,
-            default: false
-        }
+    cJson: {
+      type: Object
     },
-    data() {
-        return {
-            option: {
-                1: { name: '附件' },
-            },
-            userid: this.$route.query.userid,
-            checkJson: undefined,
-            progress: 0,
-            isFinishSize: 0,
-            proVisible: false,
-            isAllSize: 0,
-            wurl: "",
-            isTong: false,
-            page: 0,
-            isloading: false,
-            courseDetail:[],
-            dialogVisibleCourse: false
-        }
+    checktype: {
+      type: Number,
+      default: 1
     },
-    computed: {
-
+    see: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data() {
+    return {
+      option: {
+        1: { name: "附件" }
+      },
+      userid: this.$route.query.userid,
+      checkJson: undefined,
+      progress: 0,
+      isFinishSize: 0,
+      proVisible: false,
+      isAllSize: 0,
+      wurl: "",
+      isTong: false,
+      page: 0,
+      isloading: false,
+      courseDetail: [],
+      dialogVisibleCourse: false
+    };
+  },
+  computed: {},
+  watch: {
+    checkJson: {
+      handler(newValue) {
+        this.$emit("update:cJson", newValue);
+      },
+      deep: true
+    }
+  },
+  methods: {
+    setCourse(courses) {
+      this.checkJson.answer2 = courses;
+      this.getCourse(this.checkJson.answer2);
+      this.$forceUpdate();
+    },
+    depthCopy(s) {
+      return JSON.parse(JSON.stringify(s));
     },
-    watch: {
-        checkJson: {
-            handler(newValue) {
-                this.$emit('update:cJson', newValue)
-            },
-            deep: true
-        },
+    openFileBox() {
+      this.dialogVisiblefile = true;
     },
-    methods: {
-        setCourse(courses) {
-            this.checkJson.answer2 = courses
-            this.getCourse(this.checkJson.answer2)
-            this.$forceUpdate()
-        },
-        depthCopy(s) {
-            return JSON.parse(JSON.stringify(s));
-        },
-        openFileBox() {
-            this.dialogVisiblefile = true
-        },
-        setPage(index) {
-            if (index == '1') {
-                this.page++
-            } else if (index == '-1') {
-                this.page--
-            }
-            this.checkJson.answer2 = this.checkJson.courses[this.page]
-            this.getCourse(this.checkJson.answer2)
-        },
-        openCourse(cid){
-            top.postMessage({ cid: cid, screenType: "3" }, "*");
-        },
-        getCourse(id) {
-            this.isloading = true
-            let params = {
-                cid: id.join(","),
-            };
-            this.ajax
-                .get(this.$store.state.api + "getCourseInfoTestAll", params)
-                .then((res) => {
-                    this.isloading = false
-                    this.courseDetail = res.data[0]
-                    this.courseDetail.forEach(element => {
-                        element.cover = JSON.parse(element.cover)[0].url
-                    });
-                })
-                .catch((err) => {
-                    this.isloading = false
-                    console.error(err);
-                });
-        },
-        openCourseD(){
-            this.dialogVisibleCourse = true
-        }
+    setPage(index) {
+      if (index == "1") {
+        this.page++;
+      } else if (index == "-1") {
+        this.page--;
+      }
+      this.checkJson.answer2 = this.checkJson.courses[this.page];
+      this.getCourse(this.checkJson.answer2);
     },
-    mounted() {
-        this.checkJson = this.cJson ? this.depthCopy(this.cJson) : undefined
-        if(this.checkJson.answer2.length){
-            // this.page = this.checkJson.courses.indexOf(this.checkJson.answer2)
-            this.getCourse(this.checkJson.answer2)
-        }
+    openCourse(cid) {
+      top.postMessage({ cid: cid, screenType: "3" }, "*");
+    },
+    getCourse(id) {
+      this.isloading = true;
+      let params = {
+        cid: id.join(",")
+      };
+      this.ajax
+        .get(this.$store.state.api + "getCourseInfoTestAll", params)
+        .then(res => {
+          this.isloading = false;
+          this.courseDetail = res.data[0];
+          this.courseDetail.forEach(element => {
+            element.cover = JSON.parse(element.cover)[0].url;
+          });
+        })
+        .catch(err => {
+          this.isloading = false;
+          console.error(err);
+        });
+    },
+    openCourseD() {
+      this.dialogVisibleCourse = true;
     }
-}
+  },
+  mounted() {
+    this.checkJson = this.cJson ? this.depthCopy(this.cJson) : undefined;
+    if (this.checkJson.answer2.length) {
+      // this.page = this.checkJson.courses.indexOf(this.checkJson.answer2)
+      this.getCourse(this.checkJson.answer2);
+    }
+  }
+};
 </script>
 
 <style scoped>
 .c_box {
-    width: 100%;
-    position: relative;
+  width: 100%;
+  position: relative;
+	padding-left: 45px;
 }
 
 /* .mask {
@@ -172,59 +214,171 @@ export default {
 } */
 
 .choice_box {
-    white-space: pre-line;
+  white-space: pre-line;
 }
 
-.choice_box>.title {
-    font-weight: bold;
-    width: 100%;
-    word-break: break-all;
+.choice_box > .title {
+  font-weight: bold;
+  width: 100%;
+  word-break: break-all;
 }
 
-.choice_box>.choices {
-    margin-top: 10px;
+.choice_box > .choices {
+  margin-top: 10px;
 }
 
-.choices > .page{
-    margin-top: 10px;
-    display: flex;
-    align-items: center;
+.choices > .page {
+  margin-top: 10px;
+  display: flex;
+  align-items: center;
 }
 
-.p_page{
-    margin: 0 10px;
+.p_page {
+  margin: 0 10px;
 }
 
 .course {
-    display: flex;
-    align-items: center;
-    cursor: pointer;
+  display: flex;
+  align-items: center;
+  cursor: pointer;
 }
 
-.course + .course{
-    margin-top: 10px;
+.course + .course {
+  margin-top: 10px;
 }
 
 .course > .banner {
-    width: 200px;
-    height: 120px;
-    border-radius: 5px;
-    overflow: hidden;
-    border: 1px solid #3896fc;
-    box-sizing: border-box;
-    padding: 5px;
-    margin-right: 15px;
-}
-.course > .banner > img{
-    width: 100%;
-    height: 100%;
-    object-fit: cover;
+  width: 200px;
+  height: 120px;
+  border-radius: 5px;
+  overflow: hidden;
+  border: 1px solid #3896fc;
+  box-sizing: border-box;
+  padding: 5px;
+  margin-right: 15px;
+}
+.course > .banner > img {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
+}
+.course > .content {
+}
+.course > .content > .c_c {
 }
-.course > .content {}
-.course > .content > .c_c {}
-.course > .content > .c_c + .c_c{
-    margin-top: 5px;
+.course > .content > .c_c + .c_c {
+  margin-top: 5px;
+}
+.course > .content > .c_c span:nth-child(1) {
+}
+.course > .content > .c_c span:nth-child(2) {
+}
+
+.g_t_index {
+  color: #3681fc;
+  font-size: 28px;
+  font-weight: bold;
+  position: relative;
+  margin-right: 30px;
+  margin-left: -40px;
+}
+
+.g_t_index + span {
+  font-weight: bold;
+  font-size: 18px;
+}
+
+.g_t_index::after {
+  content: "";
+  width: 18px;
+  height: 2px;
+  position: absolute;
+  right: -18px;
+  top: 50%;
+  transform: translateY(-50%);
+  background: #3681fc;
+}
+
+.g_t_index::before {
+  content: "";
+  width: 6px;
+  height: 6px;
+  border-right: 2px solid #3681fc;
+  border-top: 2px solid #3681fc;
+  position: absolute;
+  right: -15px;
+  top: 50%;
+  transform: rotate(45deg) translateY(-5px);
+}
+
+.c_list {
+  width: calc(100% - 10px);
+  min-height: 200px;
+  height: auto;
+  border: 1px solid #e7e7e7;
+  border-radius: 5px;
+  box-sizing: border-box;
+  padding: 10px;
+  display: flex;
+  flex-wrap: wrap;
+  /* overflow: auto; */
+}
+
+.c_l_add1 {
+  width: 100%;
+  height: 200px;
+  background-color: #F9FAFB;
+	border: 1.5px dashed #dfdfdf;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  color: #00000066;
+  border-radius: 5px;
+  font-size: 18px;
+  cursor: pointer;
+}
+
+.c_l_add2{
+	width: 230px;
+  height: 200px;
+	background-color: #F9FAFB;
+	border: 1.5px dashed #dfdfdf;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  color: #00000066;
+  border-radius: 5px;
+  font-size: 18px;
+  cursor: pointer;
+}
+
+.c_l_item {
+  width: 230px;
+  height: 200px;
+  margin-right: 10px;
+  box-sizing: border-box;
+  border: solid 1px #3896FC;
+  border-radius: 5px;
+	cursor: pointer;
+	box-sizing: border-box;
+	padding: 5px;
+}
+
+.c_l_item > img {
+  width: 100%;
+  height: 110px;
+  object-fit: cover;
+	margin-bottom: 5px;
+}
+
+.c_l_item > div {
+  width: 210px;
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  font-size: 14px; /* 设置字体大小 */
+  color: #333; /* 设置字体颜色 */
+	box-sizing: border-box;
 }
-.course > .content > .c_c span:nth-child(1){}
-.course > .content > .c_c span:nth-child(2){}
-</style>
+</style>

+ 41 - 3
src/components/pages/testStudent/view/component/eva.vue

@@ -1,12 +1,12 @@
 <template>
     <div class="c_box">
         <div class="choice_box" v-if="checkJson">
-            <div class="title" style="display: flex;">
-                <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+            <div class="title" style="display: flex;align-items: center;">
+                <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1 }}</span>
                 <span>{{ checkJson.title }}</span>
             </div>
             <div class="detail" v-if="checkJson.detail" v-html="checkJson.detail"
-                style="color: #00000099;margin-top: 5px;">
+                style="color: #00000066;margin-top: 5px;">
             </div>
             <div class="choices" :style=" isN==1? 'justify-content: space-around;width:100%' : ''">
                 <div class="score" :style=" isN==1? 'width:25px;height:25px;margin:0;' : ''" :class="{active: (checkJson.answer2 || checkJson.answer2 === 0) && (checkJson.answer2 > index || checkJson.answer2 === index)}" @click="score(index)" v-for="(item, index) in (parseInt(checkJson.big) - parseInt(checkJson.small) + 1)" :key="index">{{ parseInt(checkJson.small) + index }}</div>
@@ -93,6 +93,7 @@ export default {
 .c_box {
     width: 100%;
     position: relative;
+		padding-left: 45px;
 }
 
 /* .mask {
@@ -140,4 +141,41 @@ export default {
     background: #65b1ff;
 }
 
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
+
 </style>

+ 47 - 7
src/components/pages/testStudent/view/component/file.vue

@@ -5,9 +5,9 @@
     <div v-else class="choice_box">
       <!-- <div class="title"><div>{{ `(${option[checkJson.type].name})` }}</div><div v-html="checkJson.title"></div></div> -->
       <div class="c_title">
-        <div class="title" style="display: flex;">
+        <div class="title" style="display: flex;align-items: center;">
           <!-- + `(${option[checkJson.type].name})` -->
-          <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+          <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1}}</span>
           <span>{{ checkJson.title }}</span>
           <span
             style="color: #efa030;min-width: fit-content;"
@@ -40,7 +40,7 @@
         class="detail"
         v-if="checkJson.detail"
         v-html="checkJson.detail"
-        style="color: #00000099;margin-top: 5px;"
+        style="color: #00000066;margin-top: 5px;"
       ></div>
       <div class="choices">
         <div class="file_box" v-if="checkJson.mobanFile && checkJson.mobanFile.length" v-loading="loading">
@@ -164,7 +164,7 @@
                         </div> -->
           </div>
           <div class="uploadQ" v-else-if="checktype == 1">
-            <span>填写者上传</span>
+            <span>填写者上传</span>
             <!-- <input type="file" accept="*" style="display: none" @change="beforeUpload($event)" /> -->
           </div>
           <div class="uploadQ" v-else>
@@ -928,6 +928,7 @@ export default {
 .c_box {
   width: 100%;
   position: relative;
+	padding-left: 45px;
 }
 
 /* .mask {
@@ -973,13 +974,15 @@ export default {
 }
 
 .binfo_input > .uploadQ {
-  /* border: 1.5px dashed #d1fdfdf; */
-  height: 120px;
+   /* border: 1.5px dashed #dfdfdf; */
+	 height: 120px;
   width: 100%;
   display: flex;
   align-items: center;
   justify-content: center;
-  background: #f9fafb;
+  /* background: #f9fafb; */
+	background-color: #fff;
+	font-size: 22px;
   color: rgb(124, 124, 124);
   border-radius: 5px;
   cursor: pointer;
@@ -1261,4 +1264,41 @@ export default {
     color: #3681fc;
     cursor: pointer;
 }
+
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
 </style>

+ 45 - 2
src/components/pages/testStudent/view/component/gap.vue

@@ -6,9 +6,9 @@
             <!-- <div class="title"><div>{{ `(${option[checkJson.type].name})` }}</div><div v-html="checkJson.title"></div></div> -->
             <div class="c_title">
                 <div class="title">
-                    <div  style="display: flex;">
+                    <div  style="display: flex;align-items: center;">
                         <!-- + `(${option[checkJson.type].name})` -->
-                    <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+                    <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1}}</span>
                     <span>{{ checkJson.title }}</span>
                     <span style="min-width: fit-content;color: #efa030;">{{ checkJson.score ? '(分值:'+checkJson.score+'分)' : '' }}</span>
                 </div>
@@ -217,6 +217,7 @@ export default {
 .c_box {
     width: 100%;
     position: relative;
+		padding-left: 45px;
 }
 
 .mask {
@@ -292,4 +293,46 @@ export default {
     padding: 0 5px;
     text-align: right;
 }
+
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
+
+.choices>textarea{
+	border-color: #E7E7E7;
+	border-radius: 8px;
+}
 </style>

+ 54 - 5
src/components/pages/testStudent/view/component/time.vue

@@ -1,21 +1,21 @@
 <template>
     <div class="c_box">
         <div class="choice_box">
-            <div class="title" style="display: flex;">
-                <span style="min-width: fit-content;">{{ tindex + 1 + "、" }}</span>
+            <div class="title" style="display: flex;align-items: center;">
+                <span class="g_t_index" style="min-width: fit-content;">{{ tindex + 1}}</span>
                 <span>{{ checkJson.title }}</span>
             </div>
             <div class="detail" v-if="checkJson.detail" v-html="checkJson.detail"
-                style="color: #00000099;margin-top: 5px;">
+                style="color: #00000066;margin-top: 5px;">
             </div>
-            <div style="margin-top: 10px;">
+            <div style="margin-top: 10px;" class="datePicker">
                 <el-date-picker
                     :readonly="checktype == 2"
                     v-model="checkJson.answer2"
                     type="date"
                     format="yyyy 年 MM 月 dd 日"
                     value-format="yyyy年MM月dd日"
-                    placeholder="年/月/日">
+                    placeholder="年/月/日 (请选择日期)">
                 </el-date-picker>
             </div>
         </div>
@@ -82,6 +82,7 @@ export default {
     width: 100%;
     position: relative;
     overflow: unset;
+		padding-left: 45px;
 }
 
 /* .mask {
@@ -101,5 +102,53 @@ export default {
     word-break: break-all;
 }
 
+.g_t_index{
+	color: #3681FC;
+	font-size: 28px;
+	font-weight: bold;
+	position: relative;
+	margin-right: 30px;
+	margin-left: -40px;
+}
+
+.g_t_index+span{
+	font-weight: bold;
+	font-size: 18px;
+}
+
+.g_t_index::after{
+	content: "";
+	width: 18px;
+	height: 2px;
+	position: absolute;
+	right: -18px;
+	top: 50%;
+	transform: translateY(-50%);
+	background: #3681FC;
+}
+
+.g_t_index::before{
+	content: "";
+	width: 6px;
+	height: 6px;
+	border-right: 2px solid #3681FC;
+	border-top: 2px solid #3681FC;
+	position: absolute;
+	right: -15px;
+	top: 50%;
+	transform: rotate(45deg) translateY(-5px);
+}
+
+.datePicker>>>.el-date-editor{
+	width: 100%;
+}
+
+.datePicker>>>.el-input__inner{
+	border: none;
+	outline: none;
+	font-size: 16px;
+	border-bottom: solid 1px #E7E7E7;
+}
+
 
 </style>

+ 6 - 4
src/components/pages/testStudent/view/component/topic.vue

@@ -381,13 +381,14 @@ export default {
 .check_box+.check_box {
   margin-top: 10px;
   padding-top: 10px;
-  border-top: 1px solid #eee;
+  /* border-top: 1px solid #eee; */
 }
 
 .check_box>.title {
-  font-size: 20px;
+	font-size: 24px;
   word-break: break-all;
   font-weight: bold;
+	padding-left: 45px;
 }
 
 .check_box>.answerBox {
@@ -403,12 +404,13 @@ export default {
 }
 
 .check_box_xia+.check_box_xia {
-  border-top: 1px solid #eee;
+  /* border-top: 1px solid #eee; */
 }
 
 .check_box_xia>.title {
-  font-size: 18px;
+  font-size: 22px;
   font-weight: bold;
+	padding-left: 45px;
 }
 
 .check_box_xia>.answerBox {