indexJIU.vue 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542
  1. <template>
  2. <div class="pb_content" style="height: auto; width: 94%; margin: 10px auto;background: unset;">
  3. <div style="width:100%;padding:0 21px;background:#fff;border-radius: 5px;box-sizing: border-box;">
  4. <div class="pb_head top">
  5. <div style="display: flex;align-items: center;">
  6. <span class="sub_head">表单管理</span>
  7. <span class="subClick" v-show="oid == '4c686762-1d0a-11ed-8c78-005056b86db5'" @click="
  8. goTo(
  9. '/trainCourse?userid=' +
  10. userid +
  11. '&oid=' +
  12. oid +
  13. '&org=' +
  14. org +
  15. '&role=' +
  16. role
  17. )
  18. ">培训管理</span>
  19. </div>
  20. <div class="student_button">
  21. <el-button type="primary" class="bgColor" @click="openTestDataBoard()" v-if="oid == '4c686762-1d0a-11ed-8c78-005056b86db5'">评测看板</el-button>
  22. <el-button type="primary" class="bgColor" @click="goToCourse()">新建评测</el-button>
  23. </div>
  24. </div>
  25. <div class="student_head">
  26. <div class="choose">
  27. <!-- <div class="all_choose" v-for="(item, index) in CourseType[0]" :key="index">
  28. <span v-if="CourseTypeJson[item.id].length">{{ item.name }}</span>
  29. <el-select v-if="CourseTypeJson[item.id].length" v-model="courseTypeId[item.id]" placeholder="请选择"
  30. @change="getTypeName">
  31. <el-option label="全部" value="1">全部</el-option>
  32. <el-option v-for="item1 in CourseTypeJson[item.id]" :key="item1.id" :label="item1.name"
  33. :value="item1.id">
  34. </el-option>
  35. </el-select>
  36. </div> -->
  37. <div class="student_search" v-if="typeArray.length">
  38. <span>类型</span>
  39. <el-select v-model="typeCheck" placeholder="请选择" clearable @change="search">
  40. <el-option v-for="(item, index) in typeArray" :key="index" :label="item.name"
  41. :value="item.id"></el-option>
  42. </el-select>
  43. </div>
  44. <div class="student_search" style="width:100px">
  45. <!-- <span></span> -->
  46. <el-select v-model="groupA" @change="search">
  47. <el-option value="0" label="我的"></el-option>
  48. <el-option value="2" label="他人"></el-option>
  49. <el-option value="4" label="所有人"></el-option>
  50. </el-select>
  51. </div>
  52. <div @click="clear" class="clear" v-if="CourseType.length">重置</div>
  53. </div>
  54. <div class="student_right" >
  55. <div class="head_left">
  56. <el-input v-model="courseName" class="student_input" placeholder="请输入项目名称"></el-input>
  57. <el-button class="course_button" @click="searchCourse">查询</el-button>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. <div class="pb_content_body" style="height: 100%;width: 100%;">
  63. <div class="student_table" v-loading="isLoading">
  64. <div class="course_box">
  65. <!-- <div class="out_box" v-for="(item, index) in course" :key="index">
  66. <div class="myCourse" v-if="item.userid == userid">
  67. 我的项目
  68. </div>
  69. <div class="myCourse" style="background:#4187f0" v-else-if="!item.course_teacher ||
  70. (item.course_teacher &&
  71. item.course_teacher.indexOf(userid) == -1)">
  72. 他人项目
  73. </div>
  74. <div class="xtCourse" v-else>协同项目</div>
  75. <div class="bottom_box">
  76. <div>
  77. <el-tooltip :content="item.title" placement="top" effect="dark">
  78. <span>{{ item.title }}</span>
  79. </el-tooltip>
  80. <span>{{ item.look == '1' ? '未发布' : '已发布' }}</span>
  81. </div>
  82. <div class="kc_t">
  83. 创建人:{{ item.uname }}
  84. </div>
  85. <div class="kc_time">
  86. <span style="color: #4b4b4b">创建日期:</span>{{ item.time }}
  87. </div>
  88. <div class="kc_time">
  89. <span style="color: #4b4b4b">修改日期:</span>{{ item.utime }}
  90. </div>
  91. </div>
  92. <div class="three_bottom">
  93. <div @click="goToCourse2(item.courseId)" v-if="((item.userid == userid) ||
  94. (item.course_teacher &&
  95. item.course_teacher.indexOf(userid) !== -1) || role == '1')">编辑</div>
  96. <div @click="checkToTest(item.courseId)">查看</div>
  97. <div @click="deleteCourse(item.courseId)">删除</div>
  98. </div>
  99. </div> -->
  100. <div class="test_box" v-for="(item, index) in course" :key="index">
  101. <div class="test_top">
  102. <div class="test_top_img" v-if="!item.typeN"></div>
  103. <el-tooltip :content="item.typeN" placement="top" effect="dark" v-else>
  104. <div class="test_top_img"
  105. :class="{ gr: item.typeid == 'afc3f97f-2429-408d-8dcd-5e63a44d355a', md: item.typeid == '478bcccd-e3a1-472b-aa29-3ed7bc479469', js: item.typeid == '178a377a-b4f1-4a75-b3c3-2787a7c98784', yy: item.typeid == 'dda9728e-5f11-469e-89ee-aca518daf223', bj: item.typeid == 'afc3f97f-2429-408d-8dcd-5e63a44d355c' }">
  106. </div>
  107. </el-tooltip>
  108. <div class="test_top_title">
  109. <span>{{ item.title }}</span>
  110. <!-- <span>创建人:{{ item.uname }}</span> -->
  111. <span>提交数量:{{ item.worksCount }}</span>
  112. </div>
  113. </div>
  114. <div class="test_time">
  115. <span><span>创建人</span></span><span>{{ item.uname }}</span>
  116. </div>
  117. <div class="test_time">
  118. <span><span>创建日期</span></span><span>{{ item.time }}</span>
  119. </div>
  120. <div class="test_time">
  121. <span><span>修改日期</span></span><span>{{ item.utime }}</span>
  122. </div>
  123. <div class="test_time tset_type" v-if="typeArray.length">
  124. <span><span>类型</span></span>
  125. <span v-if="!item.typeN">未设置类型</span>
  126. <span v-else>{{ item.typeN }}</span>
  127. </div>
  128. <!-- <div class="test_time">
  129. <span><span>分类</span></span>
  130. <span v-if="!item.typename">未设置分类</span>
  131. <el-tooltip :content="item.typename" placement="top" effect="dark" v-else>
  132. <span>{{ item.typename }}</span>
  133. </el-tooltip>
  134. </div> -->
  135. <div class="test_btn">
  136. <div class="test_o_btn">
  137. <el-tooltip content="编辑" placement="top" effect="dark">
  138. <span class="edit" @click="goToCourse2(item.courseId)" v-if="((item.userid == userid) ||
  139. (item.course_teacher &&
  140. item.course_teacher.indexOf(userid) !== -1) || role == '1')"></span>
  141. </el-tooltip>
  142. <el-tooltip class="check" content="查看" placement="top" effect="dark">
  143. <span @click="checkToTest(item.courseId)"></span>
  144. </el-tooltip>
  145. <el-tooltip class="delete" content="删除" placement="top" effect="dark">
  146. <span @click="deleteCourse(item.courseId)" v-if="((item.userid == userid) ||
  147. (item.course_teacher &&
  148. item.course_teacher.indexOf(userid) !== -1) || role == '1')"></span>
  149. </el-tooltip>
  150. </div>
  151. <div class="test_type" :class="{ no: item.look == '1', is: item.look == '2' }">
  152. <span>{{ item.look == '1' ? '未发布' : '已发布' }}</span>
  153. </div>
  154. </div>
  155. </div>
  156. <div class="course_empty" v-if="course.length == 0">暂无数据</div>
  157. </div>
  158. </div>
  159. </div>
  160. <div class="student_page">
  161. <el-pagination background layout="prev, pager, next" :page-size="pageSize" :total="total"
  162. v-if="page && course.length" style="padding-bottom: 20px"
  163. @current-change="handleCurrentChange"></el-pagination>
  164. </div>
  165. <el-dialog :visible.sync="dialogVisible1" size="tiny">
  166. <img width="100%" :src="dialogImageUrl" alt />
  167. </el-dialog>
  168. <el-dialog title="查看提问" :visible.sync="dialogVisible" :append-to-body="true" width="750px"
  169. :before-close="handleClose" class="dialog_diy">
  170. <div>
  171. <div class="a_addBox">
  172. <CourseProblem :problemCourse="problemCourse"></CourseProblem>
  173. </div>
  174. </div>
  175. <span slot="footer" class="dialog-footer">
  176. <el-button @click="dialogVisible = false">关 闭</el-button>
  177. </span>
  178. </el-dialog>
  179. <el-dialog title="查看协同项目" :visible.sync="dialogVisibleCourse" :append-to-body="true" width="850px"
  180. :before-close="handleClose" class="dialog_diy">
  181. <div class="ct_box">
  182. <div class="out_box" v-for="(item, index) in courseTeam" :key="index" style="margin-left: 15px">
  183. <div class="tup">
  184. <img :src="item.cover != null && item.cover != ''
  185. ? JSON.parse(item.cover).length > 0
  186. ? JSON.parse(item.cover)[0].url
  187. : mr
  188. : mr
  189. " alt />
  190. </div>
  191. <div class="bottom_box">
  192. <div>{{ item.title }}</div>
  193. <div class="kc_t">创建人:{{ item.uname }}</div>
  194. <div class="kc_time">{{ item.time }}</div>
  195. </div>
  196. <div class="three_bottom">
  197. <!-- <div @click="jump(item.courseId)">查看内容</div> -->
  198. <div @click="
  199. goTo(
  200. '/studentAddCourse?cid=' +
  201. item.courseId +
  202. '&userid=' +
  203. userid +
  204. '&oid=' +
  205. oid +
  206. '&org=' +
  207. org +
  208. '&role=' +
  209. role
  210. )
  211. ">
  212. 编辑
  213. </div>
  214. </div>
  215. </div>
  216. <div class="course_empty" v-if="courseTeam.length == 0">暂无数据</div>
  217. </div>
  218. <span slot="footer" class="dialog-footer">
  219. <el-button @click="dialogVisibleCourse = false">关 闭</el-button>
  220. </span>
  221. </el-dialog>
  222. </div>
  223. </template>
  224. <script>
  225. import "../../../common/aws-sdk-2.235.1.min";
  226. import EditorBar from "../../../components/tools/wangEnduit";
  227. import CourseProblem from "../components/courseProblem";
  228. export default {
  229. name:'test',
  230. components: { EditorBar, CourseProblem },
  231. data() {
  232. return {
  233. itemCount: 1,
  234. courseTitle: "",
  235. courseText: "",
  236. courseTime: "",
  237. isLoading: false,
  238. fileList: [],
  239. fileList1: [],
  240. homeworkList: [{ name: "" }],
  241. formLabelWidth: "100px",
  242. dialogVisible: false,
  243. dialogVisible1: false,
  244. dialogVisibleCourse: false,
  245. dialogImageUrl: "",
  246. group: "",
  247. userid: this.$route.query.userid,
  248. oid: this.$route.query.oid,
  249. org: this.$route.query.org,
  250. role: this.$route.query.role,
  251. orgArray: ["150e3120-9195-11ed-b13d-005056b86db5"],
  252. oidArray: [],
  253. Juri: "",
  254. groupList: [],
  255. JuriList: [],
  256. page: 1,
  257. total: 0,
  258. pageSize: 20,
  259. tableData: [],
  260. now: "",
  261. courseDetail: {},
  262. addCourse: {},
  263. groupA: "0",
  264. classX: "",
  265. course: [],
  266. courseName: "",
  267. mr: require("../../../assets/icon/kc1.png"),
  268. CourseType: [],
  269. CourseTypeJson: {},
  270. courseTypeId: {},
  271. courseTypeSon: [],
  272. isChoose: 0,
  273. problemCourse: null, //查看提问的项目
  274. courseTeam: [],
  275. typeArray: [],
  276. typeCheck: "",
  277. };
  278. },
  279. methods: {
  280. change(val) {
  281. console.log(val);
  282. },
  283. time() {
  284. if (!this.now) {
  285. this.now = new Date().getTime();
  286. return true;
  287. } else {
  288. let time = new Date().getTime();
  289. if (time - this.now > 3000) {
  290. this.now = time;
  291. return true;
  292. } else {
  293. return false;
  294. }
  295. }
  296. },
  297. addHomeworkBox() {
  298. this.homeworkList.push({ name: "" });
  299. this.itemCount++;
  300. },
  301. reduceHomeworkBox() {
  302. var a = this.homeworkList;
  303. a.splice(a.length - 1);
  304. this.itemCount--;
  305. },
  306. goTo(path) {
  307. this.$router.push(path);
  308. },
  309. goToCourse(courseId) {
  310. if (courseId) {
  311. this.$router.push(
  312. "/addTest?cid=" +
  313. courseId +
  314. "&userid=" +
  315. this.userid +
  316. "&oid=" +
  317. this.oid +
  318. "&org=" +
  319. this.org +
  320. "&role=" +
  321. this.role
  322. );
  323. } else {
  324. this.$router.push(
  325. "/addTest?userid=" +
  326. this.userid +
  327. "&oid=" +
  328. this.oid +
  329. "&org=" +
  330. this.org +
  331. "&role=" +
  332. this.role
  333. );
  334. }
  335. // this.$router.push(path);
  336. },
  337. goToCourse2(cid) {
  338. this.$router.push(
  339. "/addTest?cid=" +
  340. cid +
  341. "&userid=" +
  342. this.userid +
  343. "&oid=" +
  344. this.oid +
  345. "&org=" +
  346. this.org +
  347. "&type=2" +
  348. "&role=" +
  349. this.role
  350. );
  351. },
  352. checkToTest(cid) {
  353. this.$router.push(
  354. "/checkToTest?cid=" +
  355. cid +
  356. "&userid=" +
  357. this.userid +
  358. "&oid=" +
  359. this.oid +
  360. "&org=" +
  361. this.org +
  362. "&type=2" +
  363. "&role=" +
  364. this.role
  365. );
  366. },
  367. tableRowClassName({ row, rowIndex }) {
  368. if ((rowIndex + 1) % 2 === 0) {
  369. return "even_row";
  370. } else {
  371. return "";
  372. }
  373. },
  374. jump(cid) {
  375. // window.open(
  376. // "//pbl.cocorobo.cn/pbl-student-table/dist/#/courseDetail?courseId=" +
  377. // cid +
  378. // "&userid=" +
  379. // this.userid
  380. // );
  381. window.parent.postMessage({ cid: cid, screenType: "2s" }, "*");
  382. },
  383. get(cid) {
  384. window.parent.postMessage({ cid: cid, screenType: "3s" }, "*");
  385. },
  386. openTestDataBoard(){
  387. window.parent.postMessage({ tools: "dataBoardTest" }, "*");
  388. },
  389. getA(cid) {
  390. this.$router.push("/courseProgress?cid=" + cid + "&userid=" +
  391. this.userid +
  392. "&oid=" +
  393. this.oid +
  394. "&org=" +
  395. this.org)
  396. },
  397. handle_remove(file, fileList) {
  398. var _tmp = this.fileList;
  399. for (var i = 0, len = _tmp.length; i < len; i++) {
  400. if (_tmp[i].uid == file.uid) {
  401. _tmp.splice(i, 1);
  402. break;
  403. }
  404. this.fileList = _tmp;
  405. }
  406. },
  407. handle_remove1(file, fileList) {
  408. var _tmp = this.fileList1;
  409. for (var i = 0, len = _tmp.length; i < len; i++) {
  410. if (_tmp[i].uid == file.uid) {
  411. _tmp.splice(i, 1);
  412. break;
  413. }
  414. this.fileList1 = _tmp;
  415. }
  416. },
  417. handleCurrentChange(val) {
  418. // console.log(`当前页: ${val}`);
  419. this.page = val;
  420. this.getCourse();
  421. },
  422. init() { },
  423. handleClose(done) {
  424. done();
  425. },
  426. handleRemove(file, fileList) {
  427. console.log(file, fileList);
  428. },
  429. handlePictureCardPreview(file) {
  430. this.dialogImageUrl = file.url;
  431. this.dialogVisible1 = true;
  432. },
  433. onExceed() {
  434. this.$message.error("项目海报仅支持上传一张,请删除后再进行上传");
  435. },
  436. //uuid生成
  437. guid() {
  438. return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
  439. /[xy]/g,
  440. function (c) {
  441. var r = (Math.random() * 16) | 0,
  442. v = c == "x" ? r : (r & 0x3) | 0x8;
  443. return v.toString(16);
  444. }
  445. );
  446. },
  447. time() {
  448. if (!this.now) {
  449. this.now = new Date().getTime();
  450. return true;
  451. } else {
  452. let time = new Date().getTime();
  453. if (time - this.now > 3000) {
  454. this.now = time;
  455. return true;
  456. } else {
  457. return false;
  458. }
  459. }
  460. },
  461. searchCourse() {
  462. this.page = 1;
  463. this.getCourse();
  464. },
  465. clear() {
  466. if (this.CourseType.length) {
  467. for (var i = 0; i < this.CourseType[0].length; i++) {
  468. this.courseTypeId[this.CourseType[0][i].id] = "";
  469. }
  470. }
  471. this.typeCheck = ''
  472. this.page = 1
  473. this.getCourse();
  474. },
  475. getCourse() {
  476. var typeE = [];
  477. var typea, typeb, typec, typed, typef;
  478. if (this.isChoose == 1) {
  479. for (var i = 0; i < this.CourseType[0].length; i++) {
  480. if (this.courseTypeId[this.CourseType[0][i].id] == "1") {
  481. typeE.push(this.CourseType[0][i].id);
  482. } else if (this.courseTypeId[this.CourseType[0][i].id] != "") {
  483. if (this.CourseType[0][i].name == "年级") {
  484. typea = this.courseTypeId[this.CourseType[0][i].id];
  485. } else if (this.CourseType[0][i].name == "学科") {
  486. typeb = this.courseTypeId[this.CourseType[0][i].id];
  487. } else if (this.CourseType[0][i].name == "栏目") {
  488. typeb = this.courseTypeId[this.CourseType[0][i].id];
  489. } else if (this.CourseType[0][i].name == "学院") {
  490. typeb = this.courseTypeId[this.CourseType[0][i].id];
  491. } else if (this.CourseType[0][i].name == "新技能") {
  492. typec = this.courseTypeId[this.CourseType[0][i].id];
  493. } else if (this.CourseType[0][i].name == "赛道") {
  494. typed = this.courseTypeId[this.CourseType[0][i].id];
  495. } else if (this.CourseType[0][i].name == "项目类型") {
  496. typed = this.courseTypeId[this.CourseType[0][i].id];
  497. } else if (this.CourseType[0][i].name == "主题") {
  498. // typef = this.courseTypeId[this.CourseType[0][i].id];
  499. }
  500. this.courseTypeSon.push(
  501. this.courseTypeId[this.CourseType[0][i].id]
  502. );
  503. }
  504. }
  505. }
  506. this.isLoading = true;
  507. let params = {
  508. type: this.groupA,
  509. uid: this.userid,
  510. oid: this.oid,
  511. org: this.org,
  512. typea: typea != undefined ? typea : "",
  513. typeb: typeb != undefined ? typeb : "",
  514. typec: typec != undefined ? typec : "",
  515. typed: typed != undefined ? typed : "",
  516. typef: this.typeCheck,
  517. typeE: typeE.join(","),
  518. cu: "",
  519. cn: this.courseName,
  520. page: this.page,
  521. pageSize: this.pageSize,
  522. };
  523. this.ajax
  524. .get(this.$store.state.api + "selectTesttCourse", params)
  525. .then((res) => {
  526. this.isLoading = false;
  527. this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
  528. this.course = res.data[0];
  529. })
  530. .catch((err) => {
  531. console.error(err);
  532. });
  533. },
  534. getTypeName() {
  535. this.$forceUpdate();
  536. this.page = 1;
  537. this.isChoose = 1;
  538. this.getCourse();
  539. },
  540. // searchCourse() {
  541. // this.isLoading = true;
  542. // let params = {
  543. // cu: "",
  544. // cn: this.courseName,
  545. // page: this.page,
  546. // };
  547. // this.ajax
  548. // .get(this.$store.state.api + "searchCourse", params)
  549. // .then((res) => {
  550. // this.isLoading = false;
  551. // this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
  552. // this.course = res.data[0];
  553. // })
  554. // .catch((err) => {
  555. // this.isLoading = false;
  556. // console.error(err);
  557. // });
  558. // },
  559. deleteCourse(cid) {
  560. // if (this.time()) {
  561. this.$confirm("确定删除此评测吗?", "提示", {
  562. confirmButtonText: "确定",
  563. cancelButtonText: "取消",
  564. type: "warning",
  565. })
  566. .then(() => {
  567. this.isLoading = true;
  568. let params = [{
  569. cid: cid,
  570. }];
  571. this.ajax
  572. .post(this.$store.state.api + "deleteTestCourse", params)
  573. .then((res) => {
  574. this.isLoading = false;
  575. this.$message.success("删除成功");
  576. this.getCourse();
  577. })
  578. .catch((err) => {
  579. loading.close();
  580. this.isLoading = false;
  581. console.error(err);
  582. });
  583. })
  584. .catch(() => {
  585. return;
  586. });
  587. // }
  588. },
  589. selectAllType() {
  590. let params = {
  591. org: this.org && this.org != "" ? this.org : "",
  592. oid: this.oid && this.oid != "" ? this.oid : "",
  593. };
  594. this.ajax
  595. .get(this.$store.state.api + "selectAllTypeT", params)
  596. .then((res) => {
  597. this.CourseType = res.data;
  598. for (var i = 0; i < res.data[0].length; i++) {
  599. if (res.data[0][i].id == "34629907-d02f-11ec-8c78-005056b86db5") {
  600. res.data[0][i].name = "学科";
  601. } else if (res.data[0][i].id == "34628934-d02f-11ec-8c78-005056b86db5") {
  602. res.data[0][i].name = "年级";
  603. }
  604. if (!this.cid) {
  605. this.courseTypeId[res.data[0][i].id] = '';
  606. }
  607. if (!this.CourseTypeJson[res.data[0][i].id]) {
  608. this.CourseTypeJson[res.data[0][i].id] = [];
  609. }
  610. if (res.data[2].length == 0 && res.data[3].length == 0) {
  611. // for (var j = 0; j < res.data[1].length; j++) {
  612. // if (res.data[0][i].id == res.data[1][j].pid) {
  613. // this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
  614. // }
  615. // }
  616. // if(this.org == '150e3120-9195-11ed-b13d-005056b86db5'){
  617. for (var j = 0; j < res.data[1].length; j++) {
  618. if (res.data[0][i].id == res.data[1][j].pid) {
  619. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
  620. }
  621. }
  622. // }else{
  623. // this.CourseType = []
  624. // }
  625. } else {
  626. if (res.data[2].length > 0) {
  627. for (var j = 0; j < res.data[2].length; j++) {
  628. if (res.data[0][i].id == res.data[2][j].pid) {
  629. this.CourseTypeJson[res.data[0][i].id].push(res.data[2][j]); // 去除公共分类
  630. }
  631. }
  632. }
  633. if (res.data[3].length > 0) {
  634. for (var j = 0; j < res.data[3].length; j++) {
  635. if (res.data[0][i].id == res.data[3][j].pid) {
  636. this.CourseTypeJson[res.data[0][i].id].push(res.data[3][j]); // 去除公共分类
  637. }
  638. }
  639. }
  640. }
  641. }
  642. })
  643. .catch((err) => {
  644. console.error(err);
  645. });
  646. },
  647. selectTestType() {
  648. let params = {
  649. oid: this.oid,
  650. };
  651. this.ajax
  652. .get(this.$store.state.api + "selectTestType", params)
  653. .then((res) => {
  654. this.typeArray = res.data[0];
  655. })
  656. .catch((err) => {
  657. console.error(err);
  658. });
  659. },
  660. selectType() {
  661. this.ajax
  662. .get(this.$store.state.api + "selectStudentType")
  663. .then((res) => {
  664. this.CourseType = res.data;
  665. for (var i = 0; i < res.data[0].length; i++) {
  666. if (!this.cid) {
  667. this.courseTypeId[res.data[0][i].id] = "";
  668. }
  669. if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
  670. if (res.data[0][i].name == "栏目") {
  671. this.CourseType[0][i].name = "主题";
  672. }
  673. }
  674. for (var j = 0; j < res.data[1].length; j++) {
  675. if (res.data[0][i].id == res.data[1][j].pid) {
  676. if (!this.CourseTypeJson[res.data[0][i].id]) {
  677. this.CourseTypeJson[res.data[0][i].id] = [];
  678. }
  679. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); //去除公共分类
  680. }
  681. }
  682. }
  683. this.selectTypeByOid();
  684. this.selectTypeByOrg();
  685. })
  686. .catch((err) => {
  687. console.error(err);
  688. });
  689. },
  690. selectTypeByOid() {
  691. let params = {
  692. oid: this.oid,
  693. };
  694. this.ajax
  695. .get(this.$store.state.api + "selectStudentTypeByOid", params)
  696. .then((res) => {
  697. for (var i = 0; i < res.data[0].length; i++) {
  698. for (var j = 0; j < res.data[1].length; j++) {
  699. if (res.data[0][i].id == res.data[1][j].pid) {
  700. if (!this.CourseTypeJson[res.data[0][i].id]) {
  701. this.CourseTypeJson[res.data[0][i].id] = [];
  702. }
  703. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  704. }
  705. }
  706. }
  707. this.$forceUpdate();
  708. })
  709. .catch((err) => {
  710. console.error(err);
  711. });
  712. },
  713. selectTypeByOrg() {
  714. let params = {
  715. oid: this.org,
  716. };
  717. this.ajax
  718. .get(this.$store.state.api + "selectStudentTypeByOid", params)
  719. .then((res) => {
  720. for (var i = 0; i < res.data[0].length; i++) {
  721. for (var j = 0; j < res.data[1].length; j++) {
  722. if (res.data[0][i].id == res.data[1][j].pid) {
  723. if (!this.CourseTypeJson[res.data[0][i].id]) {
  724. this.CourseTypeJson[res.data[0][i].id] = [];
  725. }
  726. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  727. }
  728. }
  729. }
  730. this.$forceUpdate();
  731. })
  732. .catch((err) => {
  733. console.error(err);
  734. });
  735. },
  736. openCourse() {
  737. this.dialogVisibleCourse = true;
  738. this.getTeamCourse();
  739. },
  740. getTeamCourse() {
  741. let params = {
  742. uid: this.userid,
  743. oid: this.oid,
  744. };
  745. this.ajax
  746. .get(this.$store.state.api + "selectCourseTeam", params)
  747. .then((res) => {
  748. this.courseTeam = res.data[0];
  749. })
  750. .catch((err) => {
  751. console.error(err);
  752. });
  753. },
  754. search() {
  755. this.page = 1;
  756. this.getCourse();
  757. },
  758. checkProblem(res) {
  759. this.problemCourse = res;
  760. this.dialogVisible = true;
  761. },
  762. copyCourse(cid) {
  763. let params = [{
  764. cid: cid,
  765. uid: this.userid
  766. }]
  767. this.ajax
  768. .post(this.$store.state.api + "copySCourse", params)
  769. .then((res) => {
  770. this.page = 1
  771. if (this.role == "1") {
  772. this.groupA = "0";
  773. } else {
  774. this.groupA = "0";
  775. }
  776. this.$message.success("复制成功")
  777. this.clear()
  778. })
  779. .catch((err) => {
  780. console.error(err);
  781. });
  782. }
  783. },
  784. activated(){
  785. console.log(1);
  786. this.selectAllType();
  787. this.getCourse();
  788. this.selectTestType();
  789. },
  790. mounted() {
  791. console.log(2);
  792. if (this.role == '1') {
  793. this.groupA = '0'
  794. }
  795. this.page = 1;
  796. this.selectAllType();
  797. this.getCourse();
  798. this.selectTestType();
  799. },
  800. };
  801. </script>
  802. <style scoped>
  803. @media screen and (max-width: 1380px) {
  804. .test_box {
  805. width: calc(100% / 4 - (15px * 3) / 4) !important;
  806. }
  807. .test_box:nth-child(5n) {
  808. margin-right: 15px !important;
  809. }
  810. .test_box:nth-child(4n) {
  811. margin-right: 0 !important;
  812. }
  813. }
  814. @media screen and (max-width: 1080px) {
  815. .test_box {
  816. width: calc(100% / 3 - (15px * 2) / 3) !important;
  817. }
  818. .test_box:nth-child(5n) {
  819. margin-right: 15px !important;
  820. }
  821. .test_box:nth-child(4n) {
  822. margin-right: 15px !important;
  823. }
  824. .test_box:nth-child(3n) {
  825. margin-right: 0 !important;
  826. }
  827. }
  828. .dialog_diy>>>.el-dialog__header {
  829. background: #3d67bc !important;
  830. padding: 15px 20px;
  831. }
  832. .dialog_diy>>>.el-dialog__title {
  833. color: #fff;
  834. }
  835. .dialog_diy>>>.el-dialog__headerbtn {
  836. top: 19px;
  837. }
  838. .dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
  839. color: #fff;
  840. }
  841. .dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
  842. color: #fff;
  843. }
  844. .student_head>>>.el-button--primary {
  845. background-color: #3681fc;
  846. }
  847. .xls_button {
  848. font-size: 14px;
  849. cursor: pointer;
  850. text-decoration: underline;
  851. color: rgb(34, 104, 188);
  852. }
  853. .student_head {
  854. display: flex;
  855. justify-content: space-between;
  856. align-items: baseline;
  857. flex-direction: row;
  858. flex-wrap: wrap;
  859. padding: 0 0 15px;
  860. }
  861. .top {
  862. display: flex;
  863. justify-content: space-between;
  864. width: 100% !important;
  865. box-sizing: border-box;
  866. margin: 0px auto;
  867. padding: 10px 0;
  868. height: 54px;
  869. }
  870. .bgColor {
  871. background: #3681fc;
  872. }
  873. .student_search {
  874. display: flex;
  875. align-items: center;
  876. /* width: calc(100% / 3); */
  877. width: 190px;
  878. }
  879. .student_search span {
  880. margin: 0 10px 0 0;
  881. min-width: 50px;
  882. text-align-last: justify;
  883. }
  884. .student_button {
  885. display: flex;
  886. overflow: hidden;
  887. height: 40px;
  888. }
  889. .upload-demo {
  890. display: flex;
  891. flex-direction: column;
  892. align-items: end;
  893. /* position: relative; */
  894. width: 100px;
  895. overflow: hidden;
  896. }
  897. .student_table {
  898. padding: 0 0;
  899. height: 100%;
  900. /* overflow: auto; */
  901. min-height: 360px;
  902. }
  903. .student_empty {
  904. display: flex;
  905. justify-content: center;
  906. align-items: center;
  907. }
  908. .el-table>>>.even_row {
  909. background-color: #f1f1f1;
  910. }
  911. .time {
  912. font-size: 13px;
  913. color: #999;
  914. }
  915. .course_button {
  916. padding: 10px 20px;
  917. }
  918. .course_button_box {
  919. display: flex;
  920. margin-top: 5px;
  921. justify-content: space-between;
  922. }
  923. .course_rate {
  924. margin-top: 5px;
  925. }
  926. .course_view {
  927. display: flex;
  928. align-items: center;
  929. margin: 5px 0 0 0;
  930. }
  931. .course_view i {
  932. background-image: url("../../../assets/liulan.png");
  933. width: 25px;
  934. height: 25px;
  935. background-size: 100% 100%;
  936. /* margin-top: 1px; */
  937. line-height: 25px;
  938. vertical-align: text-top;
  939. background-repeat: no-repeat;
  940. }
  941. .image {
  942. width: 100%;
  943. height: 150px;
  944. display: block;
  945. }
  946. .course_box {
  947. display: flex;
  948. flex-wrap: wrap;
  949. }
  950. .student_page {
  951. width: 100%;
  952. margin: 0 auto;
  953. }
  954. .course_create_box {
  955. font-size: 18px;
  956. }
  957. .course_name {
  958. margin-top: 10px;
  959. }
  960. .course_name span {
  961. margin-bottom: 10px;
  962. display: block;
  963. }
  964. .homework_box {
  965. display: flex;
  966. align-items: center;
  967. flex-wrap: wrap;
  968. }
  969. .course_homework {
  970. width: 130px;
  971. display: flex;
  972. justify-content: center;
  973. flex-direction: column;
  974. align-items: center;
  975. margin: 0 10px 10px 0;
  976. }
  977. .course_type {
  978. margin-top: 10px;
  979. display: flex;
  980. }
  981. .course_type1 span {
  982. margin-bottom: 10px;
  983. display: block;
  984. }
  985. .course_type2 {
  986. margin-left: 20px;
  987. }
  988. .course_type2 span {
  989. margin-bottom: 10px;
  990. display: block;
  991. }
  992. .course_empty {
  993. color: rgb(110, 110, 110);
  994. width: 100%;
  995. height: 100%;
  996. display: flex;
  997. align-items: center;
  998. justify-content: center;
  999. }
  1000. .el_cards>>>.el-card__body {
  1001. height: 100%;
  1002. }
  1003. .courseBtnBox {
  1004. display: flex;
  1005. flex-direction: column;
  1006. justify-content: space-between;
  1007. height: calc(100% - 170px);
  1008. padding: 10px;
  1009. }
  1010. .wordUpload {
  1011. display: flex;
  1012. }
  1013. .wordUpload>.buttonUp {
  1014. margin-right: 5px;
  1015. }
  1016. .out_box {
  1017. display: flex;
  1018. flex-direction: column;
  1019. flex-wrap: nowrap;
  1020. width: 250px;
  1021. background: #fff;
  1022. margin-right: 25px;
  1023. border: 1px solid #ccc;
  1024. height: fit-content;
  1025. box-sizing: border-box;
  1026. border-radius: 0px 0px 5px 5px;
  1027. /* overflow: hidden; */
  1028. margin-bottom: 15px;
  1029. position: relative;
  1030. padding-top: 30px;
  1031. }
  1032. .bottom_box {
  1033. display: flex;
  1034. padding: 0 0 10px 10px;
  1035. flex-direction: column;
  1036. box-sizing: border-box;
  1037. height: 140px;
  1038. flex-wrap: nowrap;
  1039. justify-content: space-evenly;
  1040. }
  1041. .bottom_box>div:nth-child(1) {
  1042. width: 230px;
  1043. overflow: hidden;
  1044. display: flex;
  1045. align-items: center;
  1046. }
  1047. .bottom_box>div:nth-child(1) span:nth-child(1) {
  1048. font-weight: bold;
  1049. font-size: 18px;
  1050. overflow: hidden;
  1051. text-overflow: ellipsis;
  1052. white-space: nowrap;
  1053. max-width: 100%;
  1054. }
  1055. .bottom_box>div:nth-child(1) span:nth-child(2) {
  1056. font-size: 14px;
  1057. min-width: fit-content;
  1058. margin-left: 5px;
  1059. color: #0074ff;
  1060. }
  1061. .tup {
  1062. width: 100%;
  1063. height: 141.06px;
  1064. margin: 0 auto;
  1065. overflow: hidden;
  1066. display: flex;
  1067. align-items: center;
  1068. }
  1069. .tup>img {
  1070. width: 100%;
  1071. height: 100%;
  1072. object-fit: contain;
  1073. }
  1074. .kc_time {
  1075. margin-top: 8px;
  1076. font-size: 14px;
  1077. color: #999;
  1078. }
  1079. .kc_t {
  1080. margin-top: 5px;
  1081. width: 100%;
  1082. white-space: nowrap;
  1083. overflow: hidden;
  1084. text-overflow: ellipsis;
  1085. }
  1086. .three_bottom {
  1087. display: flex;
  1088. flex-direction: row;
  1089. justify-content: space-around;
  1090. height: 40px;
  1091. align-items: center;
  1092. background: #f5f4f4;
  1093. font-size: 14px;
  1094. }
  1095. .three_bottom>div {
  1096. cursor: pointer;
  1097. }
  1098. .three_bottom>div:hover {
  1099. color: #79a2ff;
  1100. }
  1101. .head_left {
  1102. display: flex;
  1103. margin-top: 15px;
  1104. }
  1105. .student_input>>>.el-input__inner {
  1106. height: 40px;
  1107. width: 190px;
  1108. font-size: 13px;
  1109. padding: 0 10px;
  1110. }
  1111. .course_button {
  1112. color: #fff;
  1113. background: #3681fc;
  1114. width: 75px;
  1115. height: 40px;
  1116. padding: 0 !important;
  1117. font-size: 12px;
  1118. line-height: 40px;
  1119. }
  1120. .all_choose {
  1121. /* margin: 15px 0 10px; */
  1122. /* height: 20%; */
  1123. display: flex;
  1124. flex-direction: row;
  1125. align-items: center;
  1126. max-width: 180px;
  1127. width: 180px;
  1128. }
  1129. .all_choose>span {
  1130. min-width: 50px;
  1131. display: block;
  1132. margin-right: 10px;
  1133. text-align-last: justify;
  1134. }
  1135. .choose {
  1136. display: flex;
  1137. flex-direction: row;
  1138. flex-wrap: wrap;
  1139. align-content: space-between;
  1140. height: 100%;
  1141. justify-content: flex-start;
  1142. /* width: 60%; */
  1143. /* min-width: 868px; */
  1144. align-items: center;
  1145. }
  1146. .choose>div {
  1147. margin-left: 10px;
  1148. width: 180px;
  1149. margin-top: 15px;
  1150. }
  1151. .choose>.clear {
  1152. width: 70px
  1153. }
  1154. .clear {
  1155. width: 70px;
  1156. max-width: 70px;
  1157. height: 35px;
  1158. background: #3681fc;
  1159. color: #fff;
  1160. text-align: center;
  1161. border-radius: 5px;
  1162. line-height: 35px;
  1163. cursor: pointer;
  1164. margin-left: 20px;
  1165. }
  1166. .ct_box {
  1167. height: 500px;
  1168. overflow: auto;
  1169. display: flex;
  1170. flex-wrap: wrap;
  1171. }
  1172. .myCourse {
  1173. position: absolute;
  1174. background: #3c3c3c;
  1175. width: 65px;
  1176. height: 25px;
  1177. color: #fff;
  1178. font-size: 12px;
  1179. text-align: center;
  1180. line-height: 25px;
  1181. top: 0;
  1182. right: 0;
  1183. }
  1184. .xtCourse {
  1185. position: absolute;
  1186. background: #3681fc;
  1187. width: 70px;
  1188. height: 30px;
  1189. border-radius: 30px;
  1190. color: #fff;
  1191. font-size: 14px;
  1192. text-align: center;
  1193. line-height: 30px;
  1194. top: 5px;
  1195. left: 5px;
  1196. }
  1197. .subClick {
  1198. font-size: 16px;
  1199. cursor: pointer;
  1200. margin-left: 10px;
  1201. /* color: #ab582f; */
  1202. color: #409eff;
  1203. }
  1204. .more {
  1205. position: relative;
  1206. }
  1207. .more:hover div {
  1208. display: block;
  1209. color: #000;
  1210. }
  1211. .more div {
  1212. position: absolute;
  1213. bottom: 0px;
  1214. transform: translate(-50%, 100%);
  1215. background: #f5f4f4;
  1216. padding: 10px 20px;
  1217. z-index: 99;
  1218. width: 40px;
  1219. border-radius: 5px;
  1220. box-shadow: 0 0 3px 3px #80808020;
  1221. display: none;
  1222. }
  1223. .more div>span+span {
  1224. margin-top: 10px;
  1225. }
  1226. .more div>span {
  1227. display: block;
  1228. width: 100%;
  1229. text-align: center;
  1230. }
  1231. .more div>span:hover {
  1232. color: #79a2ff;
  1233. }
  1234. .test_box {
  1235. width: calc(100% / 5 - (15px * 4) / 5);
  1236. /* width: 250px; */
  1237. background: #fff;
  1238. border-radius: 5px;
  1239. padding: 20px;
  1240. margin: 5px 15px 10px 0;
  1241. box-sizing: border-box;
  1242. }
  1243. .test_box:nth-child(5n) {
  1244. margin-right: 0;
  1245. }
  1246. .test_top {
  1247. width: 100%;
  1248. display: flex;
  1249. align-items: center;
  1250. }
  1251. .test_top>.test_top_img {
  1252. height: 40px;
  1253. width: 40px;
  1254. background: rgb(108 150 217);
  1255. margin-right: 10px;
  1256. border-radius: 5px;
  1257. display: flex;
  1258. align-items: center;
  1259. justify-content: center;
  1260. }
  1261. .test_top>.gr {
  1262. background: rgb(142, 189, 176);
  1263. }
  1264. .test_top>.md {
  1265. background: rgb(139, 174, 227);
  1266. }
  1267. .test_top>.js {
  1268. background: rgb(64, 149, 174);
  1269. }
  1270. .test_top>.yy {
  1271. background: rgb(98, 102, 188);
  1272. }
  1273. .test_top>.bj {
  1274. background: rgb(98, 158, 188);
  1275. }
  1276. .test_top>.test_top_img:after {
  1277. content: '';
  1278. display: block;
  1279. width: 23px;
  1280. height: 23px;
  1281. background-size: 100% 100%;
  1282. background-image: url('../../../assets/icon/test/all_icon_b.png');
  1283. }
  1284. .test_top>.gr:after {
  1285. background-image: url('../../../assets/icon/test/gr_icon_b.png');
  1286. }
  1287. .test_top>.md:after {
  1288. background-image: url('../../../assets/icon/test/md_icon_b.png');
  1289. }
  1290. .test_top>.js:after {
  1291. background-image: url('../../../assets/icon/test/js_icon_b.png');
  1292. }
  1293. .test_top>.yy:after {
  1294. background-image: url('../../../assets/icon/test/yy_icon_b.png');
  1295. }
  1296. .test_top>.bj:after {
  1297. background-image: url('../../../assets/icon/test/bj_icon_b.png');
  1298. }
  1299. .test_top>.test_top_title {
  1300. display: flex;
  1301. flex-direction: column;
  1302. justify-content: space-between;
  1303. height: 40px;
  1304. width: calc(100% - 40px - 10px)
  1305. }
  1306. .test_top>.test_top_title>span {
  1307. width: 100;
  1308. display: block;
  1309. word-break: break-all;
  1310. overflow: hidden;
  1311. text-overflow: ellipsis;
  1312. white-space: nowrap;
  1313. }
  1314. .test_top>.test_top_title>span:nth-child(1) {
  1315. font-size: 15px;
  1316. }
  1317. .test_top>.test_top_title>span:nth-child(2) {
  1318. font-size: 14px;
  1319. color: rgb(58, 131, 252);
  1320. }
  1321. .test_box>.test_time {
  1322. margin-top: 10px;
  1323. font-size: 14px;
  1324. color: #a7a7a7;
  1325. display: flex;
  1326. }
  1327. .test_box>.test_time>span:nth-child(1) {
  1328. width: 70px;
  1329. display: flex;
  1330. }
  1331. .test_box>.test_time>span:nth-child(1) > span{
  1332. width: 100%;
  1333. text-align-last: justify;
  1334. }
  1335. .test_box>.test_time>span:nth-child(1)::after{
  1336. content: ':';
  1337. }
  1338. .test_box>.test_time>span:nth-child(2) {
  1339. width: calc(100% - 70px);
  1340. overflow: hidden;
  1341. display: block;
  1342. text-overflow: ellipsis;
  1343. white-space: nowrap;
  1344. word-break: break-all;
  1345. }
  1346. .test_box>.test_btn {
  1347. margin-top: 10px;
  1348. display: flex;
  1349. align-items: center;
  1350. justify-content: space-between;
  1351. }
  1352. .test_box>.test_btn>.test_o_btn {
  1353. display: flex;
  1354. align-items: center;
  1355. }
  1356. .test_box>.test_btn>.test_o_btn>span {
  1357. display: block;
  1358. width: 18px;
  1359. height: 18px;
  1360. background-size: 100% 100%;
  1361. cursor: pointer;
  1362. }
  1363. .test_box>.test_btn>.test_o_btn>.edit {
  1364. background-image: url('../../../assets/icon/test/edit_test_icon.png');
  1365. margin-right: 20px;
  1366. }
  1367. .test_box>.test_btn>.test_o_btn>.check {
  1368. background-image: url('../../../assets/icon/test/check_test_icon.png');
  1369. margin-right: 20px;
  1370. }
  1371. .test_box>.test_btn>.test_o_btn>.delete {
  1372. background-image: url('../../../assets/icon/test/delete_test_icon.png');
  1373. }
  1374. .test_box>.test_btn>.test_type {
  1375. font-size: 12px;
  1376. border-radius: 5px;
  1377. border: 1.5px solid;
  1378. padding: 3px 8px;
  1379. }
  1380. .test_box>.test_btn>.is {
  1381. color: rgb(57, 204, 127);
  1382. background-color: rgba(57, 204, 127, .1);
  1383. }
  1384. .test_box>.test_btn>.no {
  1385. color: rgb(235, 154, 96);
  1386. background-color: rgba(235, 154, 96, .1);
  1387. }
  1388. .sub_head {
  1389. position: relative;
  1390. }
  1391. .sub_head::after {
  1392. content: "";
  1393. width: 100%;
  1394. background: #5a9cea;
  1395. height: 2px;
  1396. position: absolute;
  1397. left: 0;
  1398. bottom: -10px;
  1399. }
  1400. .subClick {
  1401. /* font-size: 16px; */
  1402. font-size: 26px;
  1403. cursor: pointer;
  1404. /* margin-left: 17.5px; */
  1405. /* color: #ab582f; */
  1406. /* color: #409eff; */
  1407. color: #999;
  1408. }
  1409. .subClick:hover {
  1410. color: #000;
  1411. }
  1412. .sub_head + .subClick,
  1413. .subClick + .subClick,
  1414. .subClick + .sub_head{
  1415. margin-left: 17.5px;
  1416. }
  1417. </style>