|
@@ -0,0 +1,843 @@
|
|
|
+<template>
|
|
|
+ <div class="i_body_box">
|
|
|
+ <div class="check_nav">
|
|
|
+ <!-- <div class="nav all" :class="{ active: type == '' }" @click="checkType('')">
|
|
|
+ 所有评测
|
|
|
+ </div> -->
|
|
|
+ <div class="nav" :class="{
|
|
|
+ active: type == item.id,
|
|
|
+ gr: item.id == 'afc3f97f-2429-408d-8dcd-5e63a44d355a',
|
|
|
+ md: item.id == '478bcccd-e3a1-472b-aa29-3ed7bc479469',
|
|
|
+ jy: item.id == '178a377a-b4f1-4a75-b3c3-2787a7c98784',
|
|
|
+ yy: item.id == 'dda9728e-5f11-469e-89ee-aca518daf223',
|
|
|
+ bj: item.id == 'afc3f97f-2429-408d-8dcd-5e63a44d355c'
|
|
|
+ }" @click="checkType(item.id)" v-for="(item, index) in typeArray" :key="index">
|
|
|
+ {{ item.name }}
|
|
|
+ </div>
|
|
|
+ <div class="nav all" :class="{ active: type == '0' }" @click="checkType('0')">
|
|
|
+ 其他
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="check_box" v-loading="loading">
|
|
|
+ <div class="noneData" v-if="!worksArray.length" style="text-align: center;">
|
|
|
+ 暂无数据
|
|
|
+ </div>
|
|
|
+ <div class="test_panel" v-for="(item, index) in worksArray" :key="index">
|
|
|
+ <div class="test_panel_title">
|
|
|
+ <div class="title">
|
|
|
+ <span :class="{ is: item.array.length > 0, no: !item.array.length }">{{ item.array.length > 0 ?
|
|
|
+ "已完成" : "未完成" }}</span>
|
|
|
+ <span>{{ item.title }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="time">
|
|
|
+ <span>创建时间: {{ item.time }}</span>
|
|
|
+ <span>修改时间: {{ item.utime }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="test_panel_box">
|
|
|
+ <div class="detail" v-if="item.array.length === 0 || item.brief">
|
|
|
+ <span>{{ item.brief ? item.brief : "暂无描述" }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="test_add_box"
|
|
|
+ style="width: calc(100% - 350px - 20px);border: none;margin-right: 20px;padding: 0;" v-else>
|
|
|
+ <div class="test" v-for="test in item.array" :key="test.id">
|
|
|
+ <img :src="getImg(test.courseJson)
|
|
|
+ ? getImg(test.courseJson)
|
|
|
+ : require('../../../../assets/icon/test/teacher.jpg')
|
|
|
+ " />
|
|
|
+ <div class="time">
|
|
|
+ <span>提交时间</span>
|
|
|
+ <span>{{ test.time }}</span>
|
|
|
+ <span>修改时间</span>
|
|
|
+ <span>{{ test.utime }}</span>
|
|
|
+ </div>
|
|
|
+ <img @click="deleteTest(test.id)" class="delete" src="../../../../assets/icon/test/delete.png"
|
|
|
+ alt="" />
|
|
|
+ <div class="mask">
|
|
|
+ <div @click="doTest(test.courseid, test.id)">
|
|
|
+ <span></span><span>编辑</span>
|
|
|
+ </div>
|
|
|
+ <div @click="checkTest(test.courseid, test.id)">
|
|
|
+ <span></span><span>查看</span>
|
|
|
+ </div>
|
|
|
+ <div @click="copyTest(test.id)">
|
|
|
+ <span></span><span>复制</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="panel">
|
|
|
+ <div class="score">
|
|
|
+ <div>
|
|
|
+ <span>{{ getNum(item.chapters) }}</span><span>题</span>
|
|
|
+ </div>
|
|
|
+ <div>题目总数</div>
|
|
|
+ </div>
|
|
|
+ <div class="score">
|
|
|
+ <div>
|
|
|
+ <span>{{ getScore(item.array) }}</span><span>分</span>
|
|
|
+ </div>
|
|
|
+ <div>综合得分</div>
|
|
|
+ </div>
|
|
|
+ <div class="btn">
|
|
|
+ <!-- <div @click="doTest(item.courseid,item.id)"><span></span><span>编辑</span></div> -->
|
|
|
+ <div @click="doTest2(item.courseid)">
|
|
|
+ <span></span><span>添加</span>
|
|
|
+ </div>
|
|
|
+ <!-- <div @click="checkTest(item.courseid,item.id)"><span></span><span>查看</span></div> -->
|
|
|
+ <!-- <div @click="copyTest(item.id)"><span></span><span>复制</span></div> -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="test_add_box" v-if="item.array.length > 0 && item.brief">
|
|
|
+ <div class="test" v-for="test in item.array" :key="test.id">
|
|
|
+ <img :src="getImg(test.courseJson)
|
|
|
+ ? getImg(test.courseJson)
|
|
|
+ : require('../../../../assets/icon/test/teacher.jpg')
|
|
|
+ " />
|
|
|
+ <div class="time">
|
|
|
+ <span>提交时间</span>
|
|
|
+ <span>{{ test.time }}</span>
|
|
|
+ <span>修改时间</span>
|
|
|
+ <span>{{ test.utime }}</span>
|
|
|
+ </div>
|
|
|
+ <img @click="deleteTest(test.id)" class="delete" src="../../../../assets/icon/test/delete.png"
|
|
|
+ alt="" />
|
|
|
+ <div class="mask">
|
|
|
+ <div @click="doTest(test.courseid, test.id)">
|
|
|
+ <span></span><span>编辑</span>
|
|
|
+ </div>
|
|
|
+ <div @click="checkTest(test.courseid, test.id)">
|
|
|
+ <span></span><span>查看</span>
|
|
|
+ </div>
|
|
|
+ <div @click="copyTest(test.id)">
|
|
|
+ <span></span><span>复制</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ props: {
|
|
|
+ userid: {
|
|
|
+ type: String,
|
|
|
+ },
|
|
|
+ oid: {
|
|
|
+ type: String,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ type: "",
|
|
|
+ typeArray: [],
|
|
|
+ typeArrayCheck: [],
|
|
|
+ worksArray: [],
|
|
|
+ org: this.$route.query.org,
|
|
|
+ role: this.$route.query.role,
|
|
|
+ loading: false
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ getNum() {
|
|
|
+ return function (array) {
|
|
|
+ let _array = JSON.parse(array);
|
|
|
+ let num = 0;
|
|
|
+ _array.forEach(el => {
|
|
|
+ if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
|
|
|
+ el.array.forEach(item => {
|
|
|
+ if (item.ttype == 2 && item.array.length > 0) {
|
|
|
+ item.array.forEach(item2 => {
|
|
|
+ if (item2.ttype == 1 && item2.json) {
|
|
|
+ num++;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else if (item.ttype == 1 && item.json) {
|
|
|
+ num++;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else if (el.ttype == 1 && el.json) {
|
|
|
+ num++;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return num;
|
|
|
+ };
|
|
|
+ },
|
|
|
+ getScore() {
|
|
|
+ return function (array) {
|
|
|
+ // let _array = JSON.parse(array)
|
|
|
+ let _score = 0;
|
|
|
+ let scoreArray = [];
|
|
|
+ for (var i = 0; i < array.length; i++) {
|
|
|
+ let _array = JSON.parse(array[i].courseJson);
|
|
|
+ let score = 0;
|
|
|
+ for (var j = 0; j < _array.length; j++) {
|
|
|
+ let el = _array[j];
|
|
|
+ if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
|
|
|
+ for (var k = 0; k < el.array.length; k++) {
|
|
|
+ let item = el.array[k];
|
|
|
+ if (item.ttype == 2 && item.array.length > 0) {
|
|
|
+ for (var z = 0; z < item.array.length; z++) {
|
|
|
+ let item2 = item.array[k];
|
|
|
+ if (item2.ttype == 1 && item2.json && item2.json.score2) {
|
|
|
+ score += parseInt(item2.json.score2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (item.ttype == 1 && item.json && item.json.score2) {
|
|
|
+ score += parseInt(item.json.score2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (el.ttype == 1 && el.json && el.json.score2) {
|
|
|
+ score += parseInt(el.json.score2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ scoreArray.push(score);
|
|
|
+ }
|
|
|
+ scoreArray.forEach(el => {
|
|
|
+ _score += el;
|
|
|
+ });
|
|
|
+ console.log(scoreArray);
|
|
|
+ return _score ? _score / scoreArray.length : 0;
|
|
|
+ };
|
|
|
+ },
|
|
|
+ getImg() {
|
|
|
+ return function (array) {
|
|
|
+ let _array = JSON.parse(array);
|
|
|
+ let _img = "";
|
|
|
+ s: for (var j = 0; j < _array.length; j++) {
|
|
|
+ let el = _array[j];
|
|
|
+ if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
|
|
|
+ for (var k = 0; k < el.array.length; k++) {
|
|
|
+ let item = el.array[k];
|
|
|
+ if (item.ttype == 2 && item.array.length > 0) {
|
|
|
+ for (var z = 0; z < item.array.length; z++) {
|
|
|
+ let item2 = item.array[k];
|
|
|
+ if (
|
|
|
+ item2.ttype == 1 &&
|
|
|
+ item2.type == 5 &&
|
|
|
+ item2.json &&
|
|
|
+ item2.json.file &&
|
|
|
+ item2.json.file.length > 0
|
|
|
+ ) {
|
|
|
+ for (var k = 0; k < item2.json.file.length; k++) {
|
|
|
+ let ik = item2.json.file[k];
|
|
|
+ if (ik.type == 3) {
|
|
|
+ _img = ik.url;
|
|
|
+ break s;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (
|
|
|
+ item.ttype == 1 &&
|
|
|
+ item.type == 5 &&
|
|
|
+ item.json &&
|
|
|
+ item.json.file &&
|
|
|
+ item.json.file.length > 0
|
|
|
+ ) {
|
|
|
+ for (var k = 0; k < item.json.file.length; k++) {
|
|
|
+ let ik = item.json.file[k];
|
|
|
+ if (ik.type == 3) {
|
|
|
+ _img = ik.url;
|
|
|
+ break s;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (
|
|
|
+ el.ttype == 1 &&
|
|
|
+ el.type == 5 &&
|
|
|
+ el.json &&
|
|
|
+ el.json.file &&
|
|
|
+ el.json.file.length > 0
|
|
|
+ ) {
|
|
|
+ for (var k = 0; k < el.json.file.length; k++) {
|
|
|
+ let ik = el.json.file[k];
|
|
|
+ if (ik.type == 3) {
|
|
|
+ _img = ik.url;
|
|
|
+ break s;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return _img;
|
|
|
+ };
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ checkType(type) {
|
|
|
+ this.type = type;
|
|
|
+ this.getWorks();
|
|
|
+ },
|
|
|
+ selectTestType() {
|
|
|
+ let params = {
|
|
|
+ oid: this.oid
|
|
|
+ };
|
|
|
+ this.ajax
|
|
|
+ .get(this.$store.state.api + "selectTestType", params)
|
|
|
+ .then(res => {
|
|
|
+ this.typeArray = res.data[0];
|
|
|
+ if(this.typeArray.length){
|
|
|
+ this.type = this.typeArray[0].id;
|
|
|
+ }else{
|
|
|
+ this.type = '0';
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ console.error(err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getWorks() {
|
|
|
+ this.loading = true;
|
|
|
+ let params = {
|
|
|
+ uid: this.userid,
|
|
|
+ typeid: this.type
|
|
|
+ };
|
|
|
+ this.ajax
|
|
|
+ .get(this.$store.state.api + "getTestWorksPerson", params)
|
|
|
+ .then(res => {
|
|
|
+ this.loading = false;
|
|
|
+ let array = res.data[0];
|
|
|
+ let array2 = res.data[1];
|
|
|
+ // 用于存储归类后的数据的对象
|
|
|
+ let worksArray = {};
|
|
|
+
|
|
|
+ // 遍历原始数据,根据 parentId 进行分组
|
|
|
+ array2.forEach(item => {
|
|
|
+ // console.log(item.chapters);
|
|
|
+ worksArray[item.courseId] = {
|
|
|
+ id: item.id,
|
|
|
+ courseid: item.courseId,
|
|
|
+ title: item.title,
|
|
|
+ time: item.time,
|
|
|
+ utime: item.utime,
|
|
|
+ chapters: item.chapters,
|
|
|
+ brief: item.brief,
|
|
|
+ array: []
|
|
|
+ };
|
|
|
+ });
|
|
|
+ worksArray = Object.values(worksArray);
|
|
|
+ worksArray.forEach(el => {
|
|
|
+ array.forEach(el2 => {
|
|
|
+ if (el.courseid == el2.courseid) {
|
|
|
+ el.array.push(el2);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ // worksArray[item.courseid].array.push(item);
|
|
|
+
|
|
|
+ this.worksArray = worksArray;
|
|
|
+ this.$forceUpdate();
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ this.loading = false;
|
|
|
+ console.error(err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ returnA() {
|
|
|
+ this.$router.push(
|
|
|
+ "/testStudent?userid=" +
|
|
|
+ this.userid +
|
|
|
+ "&oid=" +
|
|
|
+ this.oid +
|
|
|
+ "&org=" +
|
|
|
+ this.org +
|
|
|
+ "&role=" +
|
|
|
+ this.role
|
|
|
+ );
|
|
|
+ },
|
|
|
+ checkTest(cid, tid) {
|
|
|
+ this.$router.push(
|
|
|
+ "/checkTest?cid=" +
|
|
|
+ cid +
|
|
|
+ "&tid=" +
|
|
|
+ tid +
|
|
|
+ "&userid=" +
|
|
|
+ this.userid +
|
|
|
+ "&oid=" +
|
|
|
+ this.oid +
|
|
|
+ "&org=" +
|
|
|
+ this.org +
|
|
|
+ "&type=3" +
|
|
|
+ "&role=" +
|
|
|
+ this.role
|
|
|
+ );
|
|
|
+ },
|
|
|
+ doTest(cid, tid) {
|
|
|
+ this.$router.push(
|
|
|
+ "/doTest?cid=" +
|
|
|
+ cid +
|
|
|
+ "&tid=" +
|
|
|
+ tid +
|
|
|
+ "&userid=" +
|
|
|
+ this.userid +
|
|
|
+ "&oid=" +
|
|
|
+ this.oid +
|
|
|
+ "&org=" +
|
|
|
+ this.org +
|
|
|
+ "&type=3" +
|
|
|
+ "&role=" +
|
|
|
+ this.role
|
|
|
+ );
|
|
|
+ },
|
|
|
+ doTest2(cid) {
|
|
|
+ this.$router.push(
|
|
|
+ "/doTest?cid=" +
|
|
|
+ cid +
|
|
|
+ "&userid=" +
|
|
|
+ this.userid +
|
|
|
+ "&oid=" +
|
|
|
+ this.oid +
|
|
|
+ "&org=" +
|
|
|
+ this.org +
|
|
|
+ "&type=3" +
|
|
|
+ "&role=" +
|
|
|
+ this.role
|
|
|
+ );
|
|
|
+ },
|
|
|
+ copyTest(tid) {
|
|
|
+ let params = [
|
|
|
+ {
|
|
|
+ tid: tid,
|
|
|
+ uid: this.userid
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ this.ajax
|
|
|
+ .post(this.$store.state.api + "copyTestWorks", params)
|
|
|
+ .then(res => {
|
|
|
+ this.$message.success("复制成功");
|
|
|
+ this.getWorks();
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ console.error(err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ deleteTest(tid) {
|
|
|
+ let _this = this;
|
|
|
+ _this
|
|
|
+ .$confirm("确定删除此提交的评测么?", "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ let params = [
|
|
|
+ {
|
|
|
+ tid: tid
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ _this.ajax
|
|
|
+ .post(_this.$store.state.api + "deleteTestCourseWorks", params)
|
|
|
+ .then(res => {
|
|
|
+ _this.$message.success("删除成功");
|
|
|
+ _this.getWorks();
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ console.error(err);
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ return;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.selectTestType();
|
|
|
+ this.getWorks();
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.i_body_box {
|
|
|
+ height: calc(100% - 30px);
|
|
|
+ padding: 30px 0 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav {
|
|
|
+ display: flex;
|
|
|
+ height: 50px;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.nav {
|
|
|
+ width: 120px;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ color: rgb(167, 167, 167);
|
|
|
+ /* background: #000000; */
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.active {
|
|
|
+ color: #3681fc;
|
|
|
+ background: rgb(248, 250, 254);
|
|
|
+ border-radius: 10px 10px 0 0;
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.all::before,
|
|
|
+.check_nav>.gr::before,
|
|
|
+.check_nav>.md::before,
|
|
|
+.check_nav>.jy::before,
|
|
|
+.check_nav>.bj::before,
|
|
|
+.check_nav>.yy::before {
|
|
|
+ content: "";
|
|
|
+ display: block;
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ margin-right: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.all::before {
|
|
|
+
|
|
|
+ background-image: url('../../../../assets/icon/test/all_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.active.all::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/all_icon_active.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.gr::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/gr_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.active.gr::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/gr_icon_active.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.md::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/md_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.active.md::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/md_icon_active.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.jy::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/jy_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.active.jy::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/jy_icon_active.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.yy::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/yy_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.active.yy::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/yy_icon_active.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.bj::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/bj_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.check_nav>.active.bj::before {
|
|
|
+ background-image: url('../../../../assets/icon/test/bj_icon_active.png');
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+.check_box {
|
|
|
+ height: calc(100% - 50px);
|
|
|
+ overflow: auto;
|
|
|
+ padding: 20px 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ background: rgb(248, 250, 254);
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel {
|
|
|
+ width: calc(100% - 40px);
|
|
|
+ margin: 0 auto;
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 10px;
|
|
|
+ /* height: 300px; */
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel+.test_panel {
|
|
|
+ margin-top: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_title {
|
|
|
+ height: 60px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ width: 100%;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 0 20px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border-bottom: 2px solid #f0f0f0;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_title>.title {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_title>.title>span:nth-child(1) {
|
|
|
+ font-size: 12px;
|
|
|
+ padding: 3px 5px;
|
|
|
+ border-radius: 5px;
|
|
|
+ margin-right: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_title>.title>.is:nth-child(1) {
|
|
|
+ color: rgb(100, 215, 155);
|
|
|
+ background: rgb(241, 255, 248);
|
|
|
+ border: 1px solid rgb(100, 215, 155);
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_title>.title>.no:nth-child(1) {
|
|
|
+ color: rgb(240, 66, 66);
|
|
|
+ background: rgb(255, 241, 241);
|
|
|
+ border: 1px solid rgb(240, 66, 66);
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_title>.title>span:nth-child(2) {
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_title>.time {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #a1a1a1;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_title>.time>span+span {
|
|
|
+ margin-left: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 20px 20px;
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.detail {
|
|
|
+ width: calc(100% - 350px - 20px);
|
|
|
+ margin-right: 20px;
|
|
|
+ color: #a1a1a1;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 24px;
|
|
|
+ word-break: break-all;
|
|
|
+ display: -webkit-box;
|
|
|
+ -webkit-line-clamp: 4;
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ width: 350px;
|
|
|
+ min-width: 350px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.score {
|
|
|
+ height: 110px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ flex-direction: column;
|
|
|
+ border: 1px solid #dbdbdb;
|
|
|
+ background: rgb(252, 252, 252);
|
|
|
+ width: 120px;
|
|
|
+ border-radius: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.score:nth-child(1) {
|
|
|
+ display: flex;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.score>div:nth-child(1)>span:nth-child(1) {
|
|
|
+ font-size: 30px;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.score>div:nth-child(1)>span:nth-child(2) {
|
|
|
+ margin-left: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.score>div:nth-child(2) {
|
|
|
+ font-size: 14px;
|
|
|
+ margin-top: 10px;
|
|
|
+ color: #a1a1a1;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.btn {
|
|
|
+ height: 100px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: space-between;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.btn>div {
|
|
|
+ display: flex;
|
|
|
+ color: rgb(69, 141, 255);
|
|
|
+ align-items: center;
|
|
|
+ cursor: pointer;
|
|
|
+ font-size: 14px;
|
|
|
+}
|
|
|
+
|
|
|
+/* .test_panel_box > .panel >.btn > div + div{
|
|
|
+ margin: 15px 0 0 0;
|
|
|
+ } */
|
|
|
+.test_panel_box>.panel>.btn>div>span:nth-child(1) {
|
|
|
+ display: block;
|
|
|
+ width: 13px;
|
|
|
+ height: 13px;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ margin-right: 7px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.btn>div:nth-child(1)>span:nth-child(1) {
|
|
|
+ background-image: url('../../../../assets/icon/test/edit_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.btn>div:nth-child(2)>span:nth-child(1) {
|
|
|
+ background-image: url('../../../../assets/icon/test/check_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.test_panel_box>.panel>.btn>div:nth-child(3)>span:nth-child(1) {
|
|
|
+ background-image: url('../../../../assets/icon/test/paste_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box {
|
|
|
+ height: 160px;
|
|
|
+ width: 100%;
|
|
|
+ padding: 0 20px;
|
|
|
+ border-top: 2px solid #f0f0f0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ overflow: auto;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+.test_add_box>.test {
|
|
|
+ width: 120px;
|
|
|
+ min-width: 120px;
|
|
|
+ height: 120px;
|
|
|
+ border-radius: 5px;
|
|
|
+ /* overflow: hidden; */
|
|
|
+ position: relative;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test:hover .mask {
|
|
|
+ display: flex;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test:hover .delete {
|
|
|
+ display: block;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ object-fit: cover;
|
|
|
+ border-radius: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test+.test {
|
|
|
+ margin-left: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>.time {
|
|
|
+ position: absolute;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ flex-direction: column;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ color: #fff;
|
|
|
+ background: rgba(0, 0, 0, 0.5);
|
|
|
+ font-size: 14px;
|
|
|
+ text-align: center;
|
|
|
+ border-radius: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>.time>span {
|
|
|
+ margin-top: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>.mask {
|
|
|
+ position: absolute;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ background: rgba(0, 0, 0, 0.5);
|
|
|
+ /* display: flex; */
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ color: rgb(69, 141, 255);
|
|
|
+ display: none;
|
|
|
+ border-radius: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>.delete {
|
|
|
+ position: absolute;
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ right: -5px;
|
|
|
+ top: -5px;
|
|
|
+ cursor: pointer;
|
|
|
+ z-index: 2;
|
|
|
+ display: none;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>.mask>div {
|
|
|
+ display: flex;
|
|
|
+ color: #fff;
|
|
|
+ align-items: center;
|
|
|
+ cursor: pointer;
|
|
|
+ font-size: 14px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>.mask>div+div {
|
|
|
+ margin: 10px 0 0 0;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+.test_add_box>.test>.mask>div>span:nth-child(1) {
|
|
|
+ display: block;
|
|
|
+ width: 13px;
|
|
|
+ height: 13px;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ margin-right: 7px;
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>.mask>div:nth-child(1)>span:nth-child(1) {
|
|
|
+ background-image: url('../../../../assets/icon/test/edit_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>.mask>div:nth-child(2)>span:nth-child(1) {
|
|
|
+ background-image: url('../../../../assets/icon/test/check_icon.png');
|
|
|
+}
|
|
|
+
|
|
|
+.test_add_box>.test>.mask>div:nth-child(3)>span:nth-child(1) {
|
|
|
+ background-image: url('../../../../assets/icon/test/paste_icon.png');
|
|
|
+} */
|
|
|
+
|
|
|
+.bgColor {
|
|
|
+ background: #466b99;
|
|
|
+}</style>
|