test.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  1. <template>
  2. <div class="i_body_box">
  3. <div class="check_nav">
  4. <!-- <div class="nav all" :class="{ active: type == '' }" @click="checkType('')">
  5. 所有评测
  6. </div> -->
  7. <div class="nav" :class="{
  8. active: type == item.id,
  9. gr: item.id == 'afc3f97f-2429-408d-8dcd-5e63a44d355a',
  10. md: item.id == '478bcccd-e3a1-472b-aa29-3ed7bc479469',
  11. jy: item.id == '178a377a-b4f1-4a75-b3c3-2787a7c98784',
  12. yy: item.id == 'dda9728e-5f11-469e-89ee-aca518daf223',
  13. bj: item.id == 'afc3f97f-2429-408d-8dcd-5e63a44d355c'
  14. }" @click="checkType(item.id)" v-for="(item, index) in typeArray" :key="index">
  15. {{ item.name }}
  16. </div>
  17. <div class="nav all" :class="{ active: type == '0' }" @click="checkType('0')">
  18. 其他
  19. </div>
  20. </div>
  21. <div class="check_box" v-loading="loading">
  22. <div class="noneData" v-if="!worksArray.length" style="text-align: center;">
  23. 暂无数据
  24. </div>
  25. <div class="test_panel" v-for="(item, index) in worksArray" :key="index">
  26. <div class="test_panel_title">
  27. <div class="title">
  28. <span :class="{ is: item.array.length > 0, no: !item.array.length }">{{ item.array.length > 0 ?
  29. "已完成" : "未完成" }}</span>
  30. <span>{{ item.title }}</span>
  31. </div>
  32. <div class="time">
  33. <span>创建时间: {{ item.time }}</span>
  34. <span>修改时间: {{ item.utime }}</span>
  35. <span v-if="item.overtime">截止时间: {{ item.overtime }}</span>
  36. </div>
  37. </div>
  38. <div class="test_panel_box">
  39. <div class="detail" v-if="item.array.length === 0 || item.brief">
  40. <span>{{ item.brief ? item.brief : "暂无描述" }}</span>
  41. </div>
  42. <div class="test_add_box"
  43. style="width: calc(100% - 350px - 20px);border: none;margin-right: 20px;padding: 0;" v-else>
  44. <div class="test" v-for="test in item.array" :key="test.id">
  45. <img :src="getImg(test.courseJson)
  46. ? getImg(test.courseJson)
  47. : require('../../../../assets/icon/test/teacher.jpg')
  48. " />
  49. <div class="time">
  50. <span>提交时间</span>
  51. <span>{{ test.time }}</span>
  52. <span>修改时间</span>
  53. <span>{{ test.utime }}</span>
  54. </div>
  55. <img @click="deleteTest(test.id)" class="delete" src="../../../../assets/icon/test/delete.png"
  56. alt="" />
  57. <div class="mask">
  58. <div @click="doTest(test.courseid, test.id)">
  59. <span></span><span>编辑</span>
  60. </div>
  61. <div @click="checkTest(test.courseid, test.id)">
  62. <span></span><span>查看</span>
  63. </div>
  64. <div @click="copyTest(test.id)">
  65. <span></span><span>复制</span>
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. <div class="panel">
  71. <div class="score">
  72. <div>
  73. <span>{{ getNum(item.chapters) }}</span><span>题</span>
  74. </div>
  75. <div>题目总数</div>
  76. </div>
  77. <div class="score">
  78. <div>
  79. <span>{{ getScore(item.array) }}</span><span>分</span>
  80. </div>
  81. <div>综合得分</div>
  82. </div>
  83. <div class="btn">
  84. <!-- <div @click="doTest(item.courseid,item.id)"><span></span><span>编辑</span></div> -->
  85. <div @click="doTest2(item.courseid)">
  86. <span></span><span>提交</span>
  87. </div>
  88. <!-- <div @click="checkTest(item.courseid,item.id)"><span></span><span>查看</span></div> -->
  89. <!-- <div @click="copyTest(item.id)"><span></span><span>复制</span></div> -->
  90. </div>
  91. </div>
  92. </div>
  93. <div class="test_add_box" v-if="item.array.length > 0 && item.brief">
  94. <div class="test" v-for="test in item.array" :key="test.id">
  95. <img :src="getImg(test.courseJson)
  96. ? getImg(test.courseJson)
  97. : require('../../../../assets/icon/test/teacher.jpg')
  98. " />
  99. <div class="time">
  100. <span>提交时间</span>
  101. <span>{{ test.time }}</span>
  102. <span>修改时间</span>
  103. <span>{{ test.utime }}</span>
  104. </div>
  105. <img @click="deleteTest(test.id)" class="delete" src="../../../../assets/icon/test/delete.png"
  106. alt="" />
  107. <div class="mask">
  108. <div @click="doTest(test.courseid, test.id)">
  109. <span></span><span>编辑</span>
  110. </div>
  111. <div @click="checkTest(test.courseid, test.id)">
  112. <span></span><span>查看</span>
  113. </div>
  114. <div @click="copyTest(test.id)">
  115. <span></span><span>复制</span>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. </div>
  123. </template>
  124. <script>
  125. export default {
  126. props: {
  127. userid: {
  128. type: String,
  129. },
  130. oid: {
  131. type: String,
  132. },
  133. },
  134. data() {
  135. return {
  136. type: "",
  137. typeArray: [],
  138. typeArrayCheck: [],
  139. worksArray: [],
  140. org: this.$route.query.org,
  141. role: this.$route.query.role,
  142. loading: false
  143. };
  144. },
  145. computed: {
  146. getNum() {
  147. return function (array) {
  148. let _array = JSON.parse(array);
  149. let num = 0;
  150. _array.forEach(el => {
  151. if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
  152. el.array.forEach(item => {
  153. if (item.ttype == 2 && item.array.length > 0) {
  154. item.array.forEach(item2 => {
  155. if (item2.ttype == 1 && item2.json) {
  156. num++;
  157. }
  158. });
  159. } else if (item.ttype == 1 && item.json) {
  160. num++;
  161. }
  162. });
  163. } else if (el.ttype == 1 && el.json) {
  164. num++;
  165. }
  166. });
  167. return num;
  168. };
  169. },
  170. getScore() {
  171. return function (array) {
  172. // let _array = JSON.parse(array)
  173. let _score = 0;
  174. let scoreArray = [];
  175. for (var i = 0; i < array.length; i++) {
  176. let _array = JSON.parse(array[i].courseJson);
  177. let score = 0;
  178. for (var j = 0; j < _array.length; j++) {
  179. let el = _array[j];
  180. if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
  181. for (var k = 0; k < el.array.length; k++) {
  182. let item = el.array[k];
  183. if (item.ttype == 2 && item.array.length > 0) {
  184. for (var z = 0; z < item.array.length; z++) {
  185. let item2 = item.array[z];
  186. if (item2.ttype == 1 && item2.json && item2.json.score2) {
  187. score += parseInt(item2.json.score2);
  188. }
  189. }
  190. } else if (item.ttype == 1 && item.json && item.json.score2) {
  191. score += parseInt(item.json.score2);
  192. }
  193. }
  194. } else if (el.ttype == 1 && el.json && el.json.score2) {
  195. score += parseInt(el.json.score2);
  196. }
  197. }
  198. scoreArray.push(score);
  199. }
  200. scoreArray.forEach(el => {
  201. _score += el;
  202. });
  203. console.log(scoreArray);
  204. return _score ? _score / scoreArray.length : 0;
  205. };
  206. },
  207. getImg() {
  208. return function (array) {
  209. let _array = JSON.parse(array);
  210. let _img = "";
  211. s: for (var j = 0; j < _array.length; j++) {
  212. let el = _array[j];
  213. if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
  214. for (var k2 = 0; k2 < el.array.length; k2++) {
  215. let item = el.array[k2];
  216. console.log(k2);
  217. if (item.ttype == 2 && item.array.length > 0) {
  218. for (var z = 0; z < item.array.length; z++) {
  219. let item2 = item.array[z];
  220. if (
  221. item2.ttype == 1 &&
  222. item2.type == 5 &&
  223. item2.json &&
  224. item2.json.file &&
  225. item2.json.file.length > 0
  226. ) {
  227. for (var k4 = 0; k4 < item2.json.file.length; k4++) {
  228. let ik = item2.json.file[k4];
  229. if (ik.type == 3) {
  230. _img = ik.url;
  231. break s;
  232. }
  233. }
  234. }
  235. }
  236. } else if (
  237. item.ttype == 1 &&
  238. item.type == 5 &&
  239. item.json &&
  240. item.json.file &&
  241. item.json.file.length > 0
  242. ) {
  243. for (var k3 = 0; k3 < item.json.file.length; k3++) {
  244. let ik = item.json.file[k3];
  245. if (ik.type == 3) {
  246. _img = ik.url;
  247. break s;
  248. }
  249. }
  250. }
  251. }
  252. } else if (
  253. el.ttype == 1 &&
  254. el.type == 5 &&
  255. el.json &&
  256. el.json.file &&
  257. el.json.file.length > 0
  258. ) {
  259. for (var k = 0; k < el.json.file.length; k++) {
  260. let ik = el.json.file[k];
  261. if (ik.type == 3) {
  262. _img = ik.url;
  263. break s;
  264. }
  265. }
  266. }
  267. }
  268. return _img;
  269. };
  270. }
  271. },
  272. methods: {
  273. checkType(type) {
  274. this.type = type;
  275. this.getWorks();
  276. },
  277. selectTestType() {
  278. let params = {
  279. oid: this.oid
  280. };
  281. this.ajax
  282. .get(this.$store.state.api + "selectTestType", params)
  283. .then(res => {
  284. this.typeArray = res.data[0];
  285. if(this.typeArray.length){
  286. this.type = this.typeArray[0].id;
  287. }else{
  288. this.type = '0';
  289. }
  290. })
  291. .catch(err => {
  292. console.error(err);
  293. });
  294. },
  295. getWorks() {
  296. this.loading = true;
  297. let params = {
  298. uid: this.userid,
  299. typeid: this.type
  300. };
  301. this.ajax
  302. .get(this.$store.state.api + "getTestWorksPerson", params)
  303. .then(res => {
  304. this.loading = false;
  305. let array = res.data[0];
  306. let array2 = res.data[1];
  307. // 用于存储归类后的数据的对象
  308. let worksArray = {};
  309. // 遍历原始数据,根据 parentId 进行分组
  310. array2.forEach(item => {
  311. // console.log(item.chapters);
  312. worksArray[item.courseId] = {
  313. id: item.id,
  314. courseid: item.courseId,
  315. title: item.title,
  316. time: item.time,
  317. utime: item.utime,
  318. overtime: item.overtime,
  319. chapters: item.chapters,
  320. brief: item.brief,
  321. array: []
  322. };
  323. });
  324. worksArray = Object.values(worksArray);
  325. worksArray.forEach(el => {
  326. array.forEach(el2 => {
  327. if (el.courseid == el2.courseid) {
  328. el.array.push(el2);
  329. }
  330. });
  331. });
  332. // worksArray[item.courseid].array.push(item);
  333. this.worksArray = worksArray;
  334. this.$forceUpdate();
  335. })
  336. .catch(err => {
  337. this.loading = false;
  338. console.error(err);
  339. });
  340. },
  341. returnA() {
  342. this.$router.push(
  343. "/testStudent?userid=" +
  344. this.userid +
  345. "&oid=" +
  346. this.oid +
  347. "&org=" +
  348. this.org +
  349. "&role=" +
  350. this.role
  351. );
  352. },
  353. checkTest(cid, tid) {
  354. this.$router.push(
  355. "/checkTest?cid=" +
  356. cid +
  357. "&tid=" +
  358. tid +
  359. "&userid=" +
  360. this.userid +
  361. "&oid=" +
  362. this.oid +
  363. "&org=" +
  364. this.org +
  365. "&type=3" +
  366. "&role=" +
  367. this.role
  368. );
  369. },
  370. doTest(cid, tid) {
  371. this.$router.push(
  372. "/doTest?cid=" +
  373. cid +
  374. "&tid=" +
  375. tid +
  376. "&userid=" +
  377. this.userid +
  378. "&oid=" +
  379. this.oid +
  380. "&org=" +
  381. this.org +
  382. "&type=3" +
  383. "&role=" +
  384. this.role
  385. );
  386. },
  387. doTest2(cid) {
  388. this.$router.push(
  389. "/doTest?cid=" +
  390. cid +
  391. "&userid=" +
  392. this.userid +
  393. "&oid=" +
  394. this.oid +
  395. "&org=" +
  396. this.org +
  397. "&type=3" +
  398. "&role=" +
  399. this.role
  400. );
  401. },
  402. copyTest(tid) {
  403. let params = [
  404. {
  405. tid: tid,
  406. uid: this.userid
  407. }
  408. ];
  409. this.ajax
  410. .post(this.$store.state.api + "copyTestWorks", params)
  411. .then(res => {
  412. this.$message.success("复制成功");
  413. this.getWorks();
  414. })
  415. .catch(err => {
  416. console.error(err);
  417. });
  418. },
  419. deleteTest(tid) {
  420. let _this = this;
  421. _this
  422. .$confirm("确定删除此提交的评测么?", "提示", {
  423. confirmButtonText: "确定",
  424. cancelButtonText: "取消",
  425. type: "warning"
  426. })
  427. .then(() => {
  428. let params = [
  429. {
  430. tid: tid
  431. }
  432. ];
  433. _this.ajax
  434. .post(_this.$store.state.api + "deleteTestCourseWorks", params)
  435. .then(res => {
  436. _this.$message.success("删除成功");
  437. _this.getWorks();
  438. })
  439. .catch(err => {
  440. console.error(err);
  441. });
  442. })
  443. .catch(() => {
  444. return;
  445. });
  446. }
  447. },
  448. mounted() {
  449. this.selectTestType();
  450. this.getWorks();
  451. }
  452. };
  453. </script>
  454. <style scoped>
  455. .i_body_box {
  456. height: calc(100% - 30px);
  457. padding: 30px 0 0;
  458. box-sizing: border-box;
  459. }
  460. .check_nav {
  461. display: flex;
  462. height: 50px;
  463. align-items: center;
  464. padding: 0;
  465. box-sizing: border-box;
  466. width: 100%;
  467. }
  468. .check_nav>.nav {
  469. width: 120px;
  470. height: 100%;
  471. display: flex;
  472. align-items: center;
  473. justify-content: center;
  474. color: rgb(167, 167, 167);
  475. /* background: #000000; */
  476. cursor: pointer;
  477. }
  478. .check_nav>.active {
  479. color: #3681fc;
  480. background: rgb(248, 250, 254);
  481. border-radius: 10px 10px 0 0;
  482. }
  483. .check_nav>.all::before,
  484. .check_nav>.gr::before,
  485. .check_nav>.md::before,
  486. .check_nav>.jy::before,
  487. .check_nav>.bj::before,
  488. .check_nav>.yy::before {
  489. content: "";
  490. display: block;
  491. width: 18px;
  492. height: 18px;
  493. background-size: 100% 100%;
  494. margin-right: 5px;
  495. }
  496. .check_nav>.all::before {
  497. background-image: url('../../../../assets/icon/test/all_icon.png');
  498. }
  499. .check_nav>.active.all::before {
  500. background-image: url('../../../../assets/icon/test/all_icon_active.png');
  501. }
  502. .check_nav>.gr::before {
  503. background-image: url('../../../../assets/icon/test/gr_icon.png');
  504. }
  505. .check_nav>.active.gr::before {
  506. background-image: url('../../../../assets/icon/test/gr_icon_active.png');
  507. }
  508. .check_nav>.md::before {
  509. background-image: url('../../../../assets/icon/test/md_icon.png');
  510. }
  511. .check_nav>.active.md::before {
  512. background-image: url('../../../../assets/icon/test/md_icon_active.png');
  513. }
  514. .check_nav>.jy::before {
  515. background-image: url('../../../../assets/icon/test/jy_icon.png');
  516. }
  517. .check_nav>.active.jy::before {
  518. background-image: url('../../../../assets/icon/test/jy_icon_active.png');
  519. }
  520. .check_nav>.yy::before {
  521. background-image: url('../../../../assets/icon/test/yy_icon.png');
  522. }
  523. .check_nav>.active.yy::before {
  524. background-image: url('../../../../assets/icon/test/yy_icon_active.png');
  525. }
  526. .check_nav>.bj::before {
  527. background-image: url('../../../../assets/icon/test/bj_icon.png');
  528. }
  529. .check_nav>.active.bj::before {
  530. background-image: url('../../../../assets/icon/test/bj_icon_active.png');
  531. }
  532. .check_box {
  533. height: calc(100% - 50px);
  534. overflow: auto;
  535. padding: 20px 0;
  536. box-sizing: border-box;
  537. background: rgb(248, 250, 254);
  538. }
  539. .test_panel {
  540. width: calc(100% - 40px);
  541. margin: 0 auto;
  542. background: #fff;
  543. border-radius: 10px;
  544. /* height: 300px; */
  545. overflow: hidden;
  546. }
  547. .test_panel+.test_panel {
  548. margin-top: 20px;
  549. }
  550. .test_panel_title {
  551. height: 60px;
  552. display: flex;
  553. align-items: center;
  554. width: 100%;
  555. justify-content: space-between;
  556. padding: 0 20px;
  557. box-sizing: border-box;
  558. border-bottom: 2px solid #f0f0f0;
  559. }
  560. .test_panel_title>.title {
  561. display: flex;
  562. align-items: center;
  563. }
  564. .test_panel_title>.title>span:nth-child(1) {
  565. font-size: 12px;
  566. padding: 3px 5px;
  567. border-radius: 5px;
  568. margin-right: 10px;
  569. }
  570. .test_panel_title>.title>.is:nth-child(1) {
  571. color: rgb(100, 215, 155);
  572. background: rgb(241, 255, 248);
  573. border: 1px solid rgb(100, 215, 155);
  574. }
  575. .test_panel_title>.title>.no:nth-child(1) {
  576. color: rgb(240, 66, 66);
  577. background: rgb(255, 241, 241);
  578. border: 1px solid rgb(240, 66, 66);
  579. }
  580. .test_panel_title>.title>span:nth-child(2) {
  581. font-size: 18px;
  582. font-weight: 600;
  583. }
  584. .test_panel_title>.time {
  585. font-size: 14px;
  586. color: #a1a1a1;
  587. }
  588. .test_panel_title>.time>span+span {
  589. margin-left: 10px;
  590. }
  591. .test_panel_box {
  592. width: 100%;
  593. display: flex;
  594. align-items: center;
  595. padding: 20px 20px;
  596. box-sizing: border-box;
  597. }
  598. .test_panel_box>.detail {
  599. width: calc(100% - 350px - 20px);
  600. margin-right: 20px;
  601. color: #a1a1a1;
  602. font-size: 14px;
  603. line-height: 24px;
  604. word-break: break-all;
  605. display: -webkit-box;
  606. -webkit-line-clamp: 4;
  607. -webkit-box-orient: vertical;
  608. overflow: hidden;
  609. }
  610. .test_panel_box>.panel {
  611. display: flex;
  612. align-items: center;
  613. justify-content: space-between;
  614. width: 350px;
  615. min-width: 350px;
  616. }
  617. .test_panel_box>.panel>.score {
  618. height: 110px;
  619. display: flex;
  620. align-items: center;
  621. justify-content: center;
  622. flex-direction: column;
  623. border: 1px solid #dbdbdb;
  624. background: rgb(252, 252, 252);
  625. width: 120px;
  626. border-radius: 5px;
  627. }
  628. .test_panel_box>.panel>.score:nth-child(1) {
  629. display: flex;
  630. }
  631. .test_panel_box>.panel>.score>div:nth-child(1)>span:nth-child(1) {
  632. font-size: 30px;
  633. font-weight: 700;
  634. }
  635. .test_panel_box>.panel>.score>div:nth-child(1)>span:nth-child(2) {
  636. margin-left: 5px;
  637. }
  638. .test_panel_box>.panel>.score>div:nth-child(2) {
  639. font-size: 14px;
  640. margin-top: 10px;
  641. color: #a1a1a1;
  642. }
  643. .test_panel_box>.panel>.btn {
  644. height: 100px;
  645. display: flex;
  646. flex-direction: column;
  647. justify-content: space-between;
  648. }
  649. .test_panel_box>.panel>.btn>div {
  650. display: flex;
  651. color: rgb(69, 141, 255);
  652. align-items: center;
  653. cursor: pointer;
  654. font-size: 14px;
  655. }
  656. /* .test_panel_box > .panel >.btn > div + div{
  657. margin: 15px 0 0 0;
  658. } */
  659. .test_panel_box>.panel>.btn>div>span:nth-child(1) {
  660. display: block;
  661. width: 13px;
  662. height: 13px;
  663. background-size: 100% 100%;
  664. margin-right: 7px;
  665. }
  666. .test_panel_box>.panel>.btn>div:nth-child(1)>span:nth-child(1) {
  667. background-image: url('../../../../assets/icon/test/edit_icon.png');
  668. }
  669. .test_panel_box>.panel>.btn>div:nth-child(2)>span:nth-child(1) {
  670. background-image: url('../../../../assets/icon/test/check_icon.png');
  671. }
  672. .test_panel_box>.panel>.btn>div:nth-child(3)>span:nth-child(1) {
  673. background-image: url('../../../../assets/icon/test/paste_icon.png');
  674. }
  675. .test_add_box {
  676. height: 160px;
  677. width: 100%;
  678. padding: 0 20px;
  679. border-top: 2px solid #f0f0f0;
  680. box-sizing: border-box;
  681. display: flex;
  682. align-items: center;
  683. overflow: auto;
  684. }
  685. .test_add_box>.test {
  686. width: 120px;
  687. min-width: 120px;
  688. height: 120px;
  689. border-radius: 5px;
  690. /* overflow: hidden; */
  691. position: relative;
  692. }
  693. .test_add_box>.test:hover .mask {
  694. display: flex;
  695. }
  696. .test_add_box>.test:hover .delete {
  697. display: block;
  698. }
  699. .test_add_box>.test>img {
  700. width: 100%;
  701. height: 100%;
  702. object-fit: cover;
  703. border-radius: 5px;
  704. }
  705. .test_add_box>.test+.test {
  706. margin-left: 10px;
  707. }
  708. .test_add_box>.test>.time {
  709. position: absolute;
  710. width: 100%;
  711. height: 100%;
  712. flex-direction: column;
  713. display: flex;
  714. justify-content: center;
  715. align-items: center;
  716. top: 0;
  717. left: 0;
  718. color: #fff;
  719. background: rgba(0, 0, 0, 0.5);
  720. font-size: 14px;
  721. text-align: center;
  722. border-radius: 5px;
  723. }
  724. .test_add_box>.test>.time>span {
  725. margin-top: 5px;
  726. }
  727. .test_add_box>.test>.mask {
  728. position: absolute;
  729. width: 100%;
  730. height: 100%;
  731. background: rgba(0, 0, 0, 0.5);
  732. /* display: flex; */
  733. flex-direction: column;
  734. justify-content: center;
  735. align-items: center;
  736. top: 0;
  737. left: 0;
  738. color: rgb(69, 141, 255);
  739. display: none;
  740. border-radius: 5px;
  741. }
  742. .test_add_box>.test>.delete {
  743. position: absolute;
  744. width: 20px;
  745. height: 20px;
  746. right: -5px;
  747. top: -5px;
  748. cursor: pointer;
  749. z-index: 2;
  750. display: none;
  751. }
  752. .test_add_box>.test>.mask>div {
  753. display: flex;
  754. color: #fff;
  755. align-items: center;
  756. cursor: pointer;
  757. font-size: 14px;
  758. }
  759. .test_add_box>.test>.mask>div+div {
  760. margin: 10px 0 0 0;
  761. }
  762. /*
  763. .test_add_box>.test>.mask>div>span:nth-child(1) {
  764. display: block;
  765. width: 13px;
  766. height: 13px;
  767. background-size: 100% 100%;
  768. margin-right: 7px;
  769. }
  770. .test_add_box>.test>.mask>div:nth-child(1)>span:nth-child(1) {
  771. background-image: url('../../../../assets/icon/test/edit_icon.png');
  772. }
  773. .test_add_box>.test>.mask>div:nth-child(2)>span:nth-child(1) {
  774. background-image: url('../../../../assets/icon/test/check_icon.png');
  775. }
  776. .test_add_box>.test>.mask>div:nth-child(3)>span:nth-child(1) {
  777. background-image: url('../../../../assets/icon/test/paste_icon.png');
  778. } */
  779. .bgColor {
  780. background: #466b99;
  781. }</style>