studentIndex.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982
  1. <template>
  2. <div class="pb_content">
  3. <div class="pb_content_body">
  4. <div class="student_head">
  5. <!-- <img src="../assets/banner.png" alt="" /> -->
  6. <el-carousel trigger="click" style="width: 100%; height: 100%">
  7. <el-carousel-item v-for="item in bannerList" :key="item.id">
  8. <!-- <h3 class="small">{{ item }}</h3> -->
  9. <img class="imgS" :src="item.poster" alt="" />
  10. </el-carousel-item>
  11. </el-carousel>
  12. </div>
  13. <div class="reBox">
  14. <div class="reTop">
  15. <div>课程</div>
  16. <div>
  17. <div class="search" @click="selectAll">
  18. <img src="../assets/icon/search.png" alt="" />
  19. </div>
  20. <input class="sInput" type="text" placeholder="请输入关键字" v-model="sCourse" />
  21. </div>
  22. </div>
  23. <div class="choose">
  24. <div class="all_choose" v-for="(item, index) in CourseType[0]" :key="index" :style="{margin:!CourseTypeJson[item.id].length && 0}">
  25. <div v-if="CourseTypeJson[item.id].length"><span>{{ item.name }}</span>:</div>
  26. <div class="typeCss" v-if="CourseTypeJson[item.id].length">
  27. <div class="cName" @click="getCourse(item.name, '', item.id, 1)"
  28. :class="typeE.indexOf(item.id) != -1 ? 'isCType' : ''" style="min-width: fit-content;width: auto;">
  29. 全部
  30. </div>
  31. <div v-for="(item1, index1) in CourseTypeJson[item.id]" :key="index + '-' + index1" :label="item1.id"
  32. @click="getCourse(item.name, item.id, item1.id, 2)">
  33. <div class="cName" :class="
  34. typea == item1.id || typeb == item1.id || typed == item1.id || typef == item1.id
  35. ? 'isCType'
  36. : ''
  37. ">
  38. {{ item1.name }}
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. <div class="body_student">
  46. <!-- <div class="top">
  47. <div :class="{ active: 0 == zoneListId }" @click="selectAll()">
  48. 所有课程
  49. </div>
  50. <div
  51. :class="{ active: item.id == zoneListId }"
  52. v-for="(item, index) in zoneList"
  53. :key="index"
  54. @click="checkZone(item.id)"
  55. >
  56. {{ item.name }}
  57. </div>
  58. </div> -->
  59. <div>
  60. <div class="main_box">
  61. <div class="box_course" v-for="(item, index) in zoneClass" :key="index">
  62. <div class="wheel">
  63. <img :src="
  64. item.cover
  65. ? JSON.parse(item.cover)[0].url
  66. : require('../assets/wheel.png')
  67. " alt="" />
  68. </div>
  69. <div class="middle_white">
  70. <div class="textOverflow">{{ item.title }}</div>
  71. <div class="nameAndLength">
  72. <el-tooltip class="typeN" effect="light" :content="item.typename" placement="top">
  73. <div>{{ item.typename }}</div>
  74. </el-tooltip>
  75. <div>{{ JSON.parse(item.chapters).length }}阶段</div>
  76. </div>
  77. <div class="school_box">
  78. <el-tooltip effect="light" :content="item.school" placement="top">
  79. <div class="school">
  80. {{ item.school }}
  81. </div>
  82. </el-tooltip>
  83. <div style="color: #b4b4b4">{{ item.utime }}</div>
  84. </div>
  85. <!-- <div class="people">
  86. <div class="man">
  87. <img src="../assets/people.png" alt="" />
  88. </div>
  89. <div>
  90. {{
  91. item.pNum != null && item.pNum != "" ? item.pNum : "0"
  92. }}人学习
  93. </div>
  94. </div> -->
  95. </div>
  96. <div class="now_study" @click="
  97. goTo(
  98. '/courseDetailS?courseId=' +
  99. item.courseId +
  100. '&userid=' +
  101. userid +
  102. '&oid=' +
  103. oid +
  104. '&org=' +
  105. org +
  106. '&cid=' +
  107. classId +
  108. '&tType=' +
  109. tType +
  110. '&role=' +
  111. role +
  112. '&screenType=' +
  113. screenType
  114. )
  115. ">
  116. 立即学习
  117. </div>
  118. </div>
  119. <div class="course_empty" v-if="zoneClass.length == 0">
  120. 暂无课程
  121. </div>
  122. </div>
  123. </div>
  124. <div class="student_page" style="margin: 15px 0 0" v-if="zoneClass.length > 0">
  125. <el-pagination background layout="prev, pager, next" :page-size="10" :total="total"
  126. v-if="page && zoneListId != 0" @current-change="handleCurrentChange">
  127. </el-pagination>
  128. <el-pagination background layout="prev, pager, next" :page-size="10" :total="total"
  129. v-if="page && zoneListId == 0" @current-change="handleCurrentChange1">
  130. </el-pagination>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. </template>
  136. <script>
  137. export default {
  138. data() {
  139. return {
  140. zoneList: [],
  141. zoneClass: [],
  142. page: 1,
  143. total: 0,
  144. isListAjax: false,
  145. zoneListId: "",
  146. bannerList: [],
  147. userid: this.$route.query.userid,
  148. oid: this.$route.query.oid,
  149. classId: this.$route.query.cid,
  150. tType: this.$route.query.tType,
  151. org: this.$route.query.org,
  152. role: this.$route.query.role,
  153. screenType: this.$route.query.screenType,
  154. CourseType: [],
  155. CourseTypeJson: {},
  156. courseTypeId: {},
  157. sCourse: "",
  158. isCType: "",
  159. typea: "",
  160. typeb: "",
  161. typed: "",
  162. typef: "",
  163. typeE: [],
  164. loading: "",
  165. };
  166. },
  167. methods: {
  168. goTo(path) {
  169. this.$router.push(path);
  170. },
  171. // getZone() {
  172. // this.ajax
  173. // .get(this.$store.state.api + "getZone", "")
  174. // .then((res) => {
  175. // this.zoneList = res.data[0];
  176. // // this.zoneListId = this.zoneList[0].id;
  177. // // this.getZoneClass(this.zoneList[0].id);
  178. // this.selectAll();
  179. // })
  180. // .catch((err) => {
  181. // console.error(err);
  182. // });
  183. // },
  184. //获取专区下的课程
  185. getZoneClass(zid) {
  186. this.isListAjax = true;
  187. // const loading = this.openLoading(document.querySelector(".main_box"));
  188. let params = {
  189. bid: zid,
  190. oid: this.oid,
  191. page: this.page,
  192. };
  193. this.ajax
  194. .get(this.$store.state.api + "getZoneClassStudent", params)
  195. .then((res) => {
  196. // loading.close();
  197. this.isListAjax = false;
  198. this.zoneClass = res.data[0];
  199. this.total = res.data[0].length ? res.data[0][0].num : 0;
  200. })
  201. .catch((err) => {
  202. console.error(err);
  203. });
  204. },
  205. getCourse(typeName, ftypeId, typeid, type) {
  206. this.page = 1;
  207. this.zoneClass = [];
  208. if (typeName == "年级") {
  209. if (type == 1) {
  210. if (this.typeE.indexOf(typeid) != -1) {
  211. this.typeE.splice(this.typeE.indexOf(typeid), 1);
  212. } else {
  213. this.typeE.push(typeid);
  214. if (this.typea != "") {
  215. this.typea = "";
  216. }
  217. }
  218. } else {
  219. if (this.typea == typeid) {
  220. this.typea = "";
  221. } else {
  222. this.typea = typeid;
  223. if (this.typeE.indexOf(ftypeId) != -1) {
  224. this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
  225. }
  226. }
  227. }
  228. } else if (typeName == "专栏") {
  229. if (type == 1) {
  230. if (this.typeE.indexOf(typeid) != -1) {
  231. this.typeE.splice(this.typeE.indexOf(typeid), 1);
  232. } else {
  233. this.typeE.push(typeid);
  234. if (this.typeb != "") {
  235. this.typeb = "";
  236. }
  237. }
  238. } else {
  239. if (this.typeb == typeid) {
  240. this.typeb = "";
  241. } else {
  242. this.typeb = typeid;
  243. if (this.typeE.indexOf(ftypeId) != -1) {
  244. this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
  245. }
  246. }
  247. }
  248. } else if (typeName == "栏目") {
  249. if (type == 1) {
  250. if (this.typeE.indexOf(typeid) != -1) {
  251. this.typeE.splice(this.typeE.indexOf(typeid), 1);
  252. } else {
  253. this.typeE.push(typeid);
  254. if (this.typeb != "") {
  255. this.typeb = "";
  256. }
  257. }
  258. } else {
  259. if (this.typeb == typeid) {
  260. this.typeb = "";
  261. } else {
  262. this.typeb = typeid;
  263. if (this.typeE.indexOf(ftypeId) != -1) {
  264. this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
  265. }
  266. }
  267. }
  268. } else if (typeName == "主题") {
  269. if (type == 1) {
  270. if (this.typeE.indexOf(typeid) != -1) {
  271. this.typeE.splice(this.typeE.indexOf(typeid), 1);
  272. } else {
  273. this.typeE.push(typeid);
  274. if (this.typef != "") {
  275. this.typef = "";
  276. }
  277. }
  278. } else {
  279. if (this.typef == typeid) {
  280. this.typef = "";
  281. } else {
  282. this.typef = typeid;
  283. if (this.typeE.indexOf(ftypeId) != -1) {
  284. this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
  285. }
  286. }
  287. }
  288. } else if (typeName == "赛道") {
  289. if (type == 1) {
  290. if (this.typeE.indexOf(typeid) != -1) {
  291. this.typeE.splice(this.typeE.indexOf(typeid), 1);
  292. } else {
  293. this.typeE.push(typeid);
  294. if (this.typed != "") {
  295. this.typed = "";
  296. }
  297. }
  298. } else {
  299. if (this.typed == typeid) {
  300. this.typed = "";
  301. } else {
  302. this.typed = typeid;
  303. if (this.typeE.indexOf(ftypeId) != -1) {
  304. this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
  305. }
  306. }
  307. }
  308. } else if (typeName == "项目类型") {
  309. if (type == 1) {
  310. if (this.typeE.indexOf(typeid) != -1) {
  311. this.typeE.splice(this.typeE.indexOf(typeid), 1);
  312. } else {
  313. this.typeE.push(typeid);
  314. if (this.typed != "") {
  315. this.typed = "";
  316. }
  317. }
  318. } else {
  319. if (this.typed == typeid) {
  320. this.typed = "";
  321. } else {
  322. this.typed = typeid;
  323. if (this.typeE.indexOf(ftypeId) != -1) {
  324. this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
  325. }
  326. }
  327. }
  328. } else if (typeName == "学院") {
  329. if (type == 1) {
  330. if (this.typeE.indexOf(typeid) != -1) {
  331. this.typeE.splice(this.typeE.indexOf(typeid), 1);
  332. } else {
  333. this.typeE.push(typeid);
  334. if (this.typeb != "") {
  335. this.typeb = "";
  336. }
  337. }
  338. } else {
  339. if (this.typeb == typeid) {
  340. this.typeb = "";
  341. } else {
  342. this.typeb = typeid;
  343. if (this.typeE.indexOf(ftypeId) != -1) {
  344. this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
  345. }
  346. }
  347. }
  348. } else if (typeName == "学科") {
  349. if (type == 1) {
  350. if (this.typeE.indexOf(typeid) != -1) {
  351. this.typeE.splice(this.typeE.indexOf(typeid), 1);
  352. } else {
  353. this.typeE.push(typeid);
  354. if (this.typed != "") {
  355. this.typed = "";
  356. }
  357. }
  358. } else {
  359. if (this.typed == typeid) {
  360. this.typed = "";
  361. } else {
  362. this.typed = typeid;
  363. if (this.typeE.indexOf(ftypeId) != -1) {
  364. this.typeE.splice(this.typeE.indexOf(ftypeId), 1);
  365. }
  366. }
  367. }
  368. }
  369. this.loading = this.openLoading(document.querySelector(".main_box"));
  370. if (!this.loading) {
  371. this.loading = this.openLoading(document.querySelector(".main_box"));
  372. }
  373. this.selectAll();
  374. },
  375. selectAll() {
  376. this.zoneListId = 0;
  377. this.isListAjax = true;
  378. // this.loading = this.openLoading(document.querySelector(".main_box"));
  379. // if (!this.loading) {
  380. // this.loading = this.openLoading(document.querySelector(".main_box"));
  381. // }
  382. let type = '0'
  383. if (!this.org || this.org == "undefined" || this.org == "null") {
  384. if (this.tType == 1) {
  385. type = '2'
  386. }
  387. } else {
  388. if (this.role == 1) {
  389. type = '2'
  390. }
  391. }
  392. let params = {
  393. type: type,
  394. uid: this.userid,
  395. oid: this.oid,
  396. org: this.org,
  397. typea: this.typea != undefined ? this.typea : "",
  398. typeb: this.typeb != undefined ? this.typeb : "",
  399. typec: this.typec != undefined ? this.typec : "",
  400. typed: this.typed != undefined ? this.typed : "",
  401. typef: this.typef != undefined ? this.typef : "",
  402. typeE: this.typeE.join(","),
  403. cu: "",
  404. cn: this.sCourse,
  405. page: this.page,
  406. };
  407. this.ajax
  408. .get(this.$store.state.api + "selectStudentCourseNew22", params)
  409. .then((res) => {
  410. if (this.loading) {
  411. this.loading.close();
  412. this.loading = "";
  413. }
  414. this.isListAjax = false;
  415. this.zoneClass = res.data[0];
  416. this.total = res.data[0].length ? res.data[0][0].num : 0;
  417. // this.selectType({
  418. // data: [res.data[1], res.data[2], res.data[3], res.data[4]],
  419. // });
  420. this.selectAllType();
  421. // this.getBanner({
  422. // data: [res.data[6], res.data[5], res.data[7]],
  423. // });
  424. this.getBanner()
  425. })
  426. .catch((err) => {
  427. console.error(err);
  428. });
  429. },
  430. checkZone(id) {
  431. this.page = 1;
  432. this.zoneListId = id;
  433. this.getZoneClass(id);
  434. },
  435. handleCurrentChange(val) {
  436. this.page = val;
  437. this.getZoneClass(this.zoneListId);
  438. },
  439. handleCurrentChange1(val) {
  440. if (!this.loading) {
  441. this.loading = this.openLoading(document.querySelector(".main_box"));
  442. }
  443. this.page = val;
  444. this.selectAll();
  445. },
  446. //获取banner
  447. getBanner(res) {
  448. let params = {
  449. oid: this.org,
  450. };
  451. this.ajax
  452. .get(this.$store.state.api + "selectBannerByOidS", params)
  453. .then((res) => {
  454. if (res.data[0].length > 0) {
  455. this.bannerList = res.data[0];
  456. } else {
  457. // this.getBannerByOid({
  458. // data: [res.data[1], res.data[2]],
  459. // });
  460. this.getBannerByOid();
  461. }
  462. })
  463. .catch((err) => {
  464. console.error(err);
  465. });
  466. },
  467. getBannerByOid(res) {
  468. let params = {
  469. oid: this.oid,
  470. };
  471. this.ajax
  472. .get(this.$store.state.api + "selectBannerByOidS", params)
  473. .then((res) => {
  474. if (res.data[0].length > 0) {
  475. this.bannerList = res.data[0];
  476. } else {
  477. // this.getOldBanner({
  478. // data: [res.data[1]],
  479. // });
  480. this.getOldBanner();
  481. }
  482. })
  483. .catch((err) => {
  484. console.error(err);
  485. });
  486. },
  487. getOldBanner(res) {
  488. this.ajax
  489. .get(this.$store.state.api + "getBannerS", "")
  490. .then((res) => {
  491. this.bannerList = res.data[0];
  492. })
  493. .catch((err) => {
  494. console.error(err);
  495. });
  496. },
  497. selectAllType() {
  498. let params = {
  499. org: this.org && this.org != "" ? this.org : "",
  500. oid: this.oid && this.oid != "" ? this.oid : "",
  501. };
  502. this.ajax
  503. .get(this.$store.state.api + "selectAllTypeS", params)
  504. .then((res) => {
  505. this.CourseTypeJson = {}
  506. this.CourseType = res.data;
  507. for (var i = 0; i < res.data[0].length; i++) {
  508. if (!this.CourseTypeJson[res.data[0][i].id]) {
  509. this.CourseTypeJson[res.data[0][i].id] = [];
  510. }
  511. if (this.oid == "1c3b9def-8fbe-11ed-b13d-005056b86db5") {
  512. if (res.data[0][i].name == "赛道") {
  513. this.CourseType[0][i].name = "项目类型";
  514. }
  515. }
  516. if (res.data[2].length == 0 && res.data[3].length == 0) {
  517. for (var j = 0; j < res.data[1].length; j++) {
  518. if (res.data[0][i].id == res.data[1][j].pid) {
  519. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
  520. }
  521. }
  522. } else {
  523. if (res.data[2].length > 0) {
  524. for (var j = 0; j < res.data[2].length; j++) {
  525. if (res.data[0][i].id == res.data[2][j].pid) {
  526. this.CourseTypeJson[res.data[0][i].id].push(res.data[2][j]); // 去除公共分类
  527. }
  528. }
  529. }
  530. if (res.data[3].length > 0) {
  531. for (var j = 0; j < res.data[3].length; j++) {
  532. if (res.data[0][i].id == res.data[3][j].pid) {
  533. this.CourseTypeJson[res.data[0][i].id].push(res.data[3][j]); // 去除公共分类
  534. }
  535. }
  536. }
  537. }
  538. }
  539. this.$forceUpdate();
  540. })
  541. .catch((err) => {
  542. console.error(err);
  543. });
  544. },
  545. selectType(res) {
  546. // this.ajax
  547. // .get(this.$store.state.api + "selectType")
  548. // .then((res) => {
  549. this.CourseTypeJson = {};
  550. this.CourseType = res.data;
  551. for (var i = 0; i < res.data[0].length; i++) {
  552. if (!this.cid) {
  553. this.courseTypeId[res.data[0][i].id] = "";
  554. }
  555. if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
  556. if (res.data[0][i].name == "栏目") {
  557. this.CourseType[0][i].name = "主题";
  558. }
  559. }
  560. for (var j = 0; j < res.data[1].length; j++) {
  561. if (res.data[0][i].id == res.data[1][j].pid) {
  562. if (!this.CourseTypeJson[res.data[0][i].id]) {
  563. this.CourseTypeJson[res.data[0][i].id] = [];
  564. }
  565. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); // 去除公共分类
  566. }
  567. }
  568. }
  569. this.selectTypeByOid({ data: [res.data[0], res.data[2]] });
  570. this.selectTypeByOrg({ data: [res.data[0], res.data[3]] });
  571. // })
  572. // .catch((err) => {
  573. // console.error(err);
  574. // });
  575. },
  576. selectTypeByOid(res) {
  577. // let params = {
  578. // oid: this.oid,
  579. // };
  580. // this.ajax
  581. // .get(this.$store.state.api + "selectTypeByOid", params)
  582. // .then((res) => {
  583. for (var i = 0; i < res.data[0].length; i++) {
  584. for (var j = 0; j < res.data[1].length; j++) {
  585. if (res.data[0][i].id == res.data[1][j].pid) {
  586. if (!this.CourseTypeJson[res.data[0][i].id]) {
  587. this.CourseTypeJson[res.data[0][i].id] = [];
  588. }
  589. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  590. }
  591. }
  592. }
  593. this.$forceUpdate();
  594. // })
  595. // .catch((err) => {
  596. // console.error(err);
  597. // });
  598. },
  599. selectTypeByOrg(res) {
  600. // let params = {
  601. // oid: this.org,
  602. // };
  603. // this.ajax
  604. // .get(this.$store.state.api + "selectTypeByOrg", params)
  605. // .then((res) => {
  606. for (var i = 0; i < res.data[0].length; i++) {
  607. for (var j = 0; j < res.data[1].length; j++) {
  608. if (res.data[0][i].id == res.data[1][j].pid) {
  609. if (!this.CourseTypeJson[res.data[0][i].id]) {
  610. this.CourseTypeJson[res.data[0][i].id] = [];
  611. }
  612. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  613. }
  614. }
  615. }
  616. this.$forceUpdate();
  617. // })
  618. // .catch((err) => {
  619. // console.error(err);
  620. // });
  621. },
  622. },
  623. beforeDestroy() {
  624. clearInterval(this.timer);
  625. this.timer = null;
  626. },
  627. created() {
  628. this.loading = this.openLoading(document.querySelector(".main_box"));
  629. // this.selectType();
  630. this.selectAll();
  631. // this.getBanner();
  632. this.timer = setInterval(() => {
  633. this.selectAll();
  634. // this.getBanner();
  635. }, 5000);
  636. document.scrollingElement.scrollTop = 0;
  637. },
  638. };
  639. </script>
  640. <style scoped>
  641. @media screen and (max-width: 1024px) {
  642. .box_course {
  643. margin: 0px 5px 20px 5px !important;
  644. }
  645. }
  646. .student_head .imgS {
  647. width: 100%;
  648. height: 100%;
  649. cursor: pointer;
  650. object-fit: cover;
  651. }
  652. .top {
  653. padding: 20px 30px 20px 1%;
  654. box-sizing: border-box;
  655. display: flex;
  656. align-items: center;
  657. }
  658. .top div {
  659. cursor: pointer;
  660. box-sizing: border-box;
  661. height: 35px;
  662. line-height: 35px;
  663. margin: 0 10px 0 0;
  664. padding-bottom: 5px;
  665. width: 80px;
  666. text-align: center;
  667. }
  668. .top .active {
  669. border-bottom: 3px solid #0e71e6;
  670. }
  671. .isactive {
  672. border-bottom: 3px solid #0e71e6;
  673. }
  674. .box_fk {
  675. width: 8px;
  676. height: 21px;
  677. background: #0e71e6;
  678. margin-right: 5px;
  679. }
  680. .wheel {
  681. width: 100%;
  682. height: 140px;
  683. }
  684. .man {
  685. width: 16px;
  686. height: 16px;
  687. }
  688. .wheel>img,
  689. .man>img {
  690. width: 100%;
  691. height: 100%;
  692. object-fit: cover;
  693. }
  694. .box_course {
  695. display: flex;
  696. flex-direction: column;
  697. flex-wrap: nowrap;
  698. margin: 0px 1% 20px;
  699. width: 300px;
  700. height: 260px;
  701. /*border: 1px solid #cecece; */
  702. border-radius: 10px;
  703. overflow: hidden;
  704. box-shadow: 0px 1px 3px 0px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%),
  705. 0px 2px 1px -1px rgb(0 0 0 / 12%);
  706. justify-content: space-between;
  707. }
  708. .middle_white {
  709. font-size: 14px;
  710. margin: 5px 10px;
  711. }
  712. .people {
  713. display: flex;
  714. align-items: center;
  715. }
  716. .people>div:nth-child(2) {
  717. margin-left: 10px;
  718. }
  719. .now_study {
  720. width: 100%;
  721. height: 40px;
  722. color: #fff;
  723. background: #4a9eed;
  724. text-align: center;
  725. line-height: 40px;
  726. font-size: 13px;
  727. cursor: pointer;
  728. }
  729. .now_study:hover {
  730. background: #205cc6;
  731. }
  732. .main_box {
  733. width: 100%;
  734. display: flex;
  735. flex-direction: row;
  736. flex-wrap: wrap;
  737. justify-content: flex-start;
  738. margin: 0 auto;
  739. }
  740. .right_bottom_flex {
  741. width: 219px;
  742. height: 144px;
  743. margin: auto 0;
  744. }
  745. .right_bottom_flex>img {
  746. width: 100%;
  747. height: 100%;
  748. }
  749. .body_student {
  750. margin: 10px auto;
  751. width: 91.5%;
  752. height: 100%;
  753. }
  754. .student_head {
  755. width: 100%;
  756. /* height: 30%; */
  757. }
  758. .textOverflow {
  759. padding: 0 5px 0 0px;
  760. width: 95%;
  761. overflow: hidden;
  762. white-space: nowrap;
  763. text-overflow: ellipsis;
  764. font-weight: bold;
  765. font-size: 16px;
  766. }
  767. .student_page {
  768. margin-top: 10px;
  769. }
  770. .course_empty {
  771. width: 100%;
  772. height: 200px;
  773. display: flex;
  774. align-items: center;
  775. justify-content: center;
  776. }
  777. .choose {
  778. display: flex;
  779. flex-direction: column;
  780. flex-wrap: nowrap;
  781. height: 100%;
  782. justify-content: space-evenly;
  783. align-items: flex-start;
  784. padding: 10px 0;
  785. }
  786. .all_choose {
  787. display: flex;
  788. flex-direction: row;
  789. align-items: baseline;
  790. margin: 10px 0;
  791. width: 100%;
  792. }
  793. .all_choose>div:nth-child(1) span {
  794. text-align-last: justify;
  795. width: 100%;
  796. display: block;
  797. }
  798. .all_choose>div:nth-child(1) {
  799. min-width: 80px;
  800. width: 80px;
  801. font-weight: bold;
  802. margin-right: 10px;
  803. display: flex;
  804. }
  805. .all_choose>>>.el-checkbox-group {
  806. display: flex;
  807. flex-direction: row;
  808. width: 820px;
  809. flex-wrap: wrap;
  810. align-content: center;
  811. justify-content: flex-start;
  812. align-items: center;
  813. margin-top: 3px;
  814. }
  815. .all_choose>.el-checkbox-group>>>.el-checkbox {
  816. margin-bottom: 10px;
  817. display: flex;
  818. flex-direction: row;
  819. align-items: center;
  820. }
  821. .all_choose>.el-checkbox-group>.el-checkbox>>>.el-checkbox__label {
  822. min-width: 80px;
  823. overflow: hidden;
  824. width: 80px;
  825. text-overflow: ellipsis;
  826. white-space: nowrap;
  827. }
  828. .all_choose>.el-checkbox-group>.el-checkbox>>>.el-checkbox__label:hover {
  829. width: auto;
  830. }
  831. .cName {
  832. cursor: pointer;
  833. margin: 0 10px 10px 0;
  834. color: #b9b6b9;
  835. min-width: 80px;
  836. width: 80px;
  837. white-space: nowrap;
  838. overflow: hidden;
  839. text-overflow: ellipsis;
  840. }
  841. .reBox {
  842. position: relative;
  843. top: -25px;
  844. z-index: 999;
  845. left: 5%;
  846. background: #fff;
  847. width: 90%;
  848. border-radius: 5px;
  849. padding-left: 20px;
  850. }
  851. .reTop {
  852. padding: 20px 0 0 0;
  853. border-bottom: 1px solid #eee;
  854. width: 98%;
  855. display: flex;
  856. flex-direction: row;
  857. flex-wrap: nowrap;
  858. align-items: center;
  859. justify-content: space-between;
  860. }
  861. .reTop>div:nth-child(1) {
  862. font-weight: bold;
  863. width: 40px;
  864. border-bottom: 1px solid #205cc6;
  865. padding-bottom: 20px;
  866. color: #205cc6;
  867. font-size: 20px;
  868. }
  869. .reTop>div:nth-child(2) {
  870. display: flex;
  871. flex-direction: row;
  872. align-items: center;
  873. border: 1px solid #ccced3;
  874. width: 300px;
  875. border-radius: 8px;
  876. padding: 5px 0;
  877. margin-bottom: 10px;
  878. }
  879. .search {
  880. width: 20px;
  881. padding: 0 5px;
  882. }
  883. .search>img {
  884. width: 100%;
  885. height: 100%;
  886. }
  887. .sInput {
  888. border: none;
  889. width: 85%;
  890. }
  891. .sInput:focus-visible {
  892. outline: none;
  893. }
  894. .nameAndLength {
  895. display: flex;
  896. flex-direction: row;
  897. flex-wrap: nowrap;
  898. align-items: center;
  899. justify-content: space-between;
  900. margin: 5px 0;
  901. }
  902. .typeN {
  903. width: 200px;
  904. white-space: nowrap;
  905. overflow: hidden;
  906. text-overflow: ellipsis;
  907. }
  908. .isCType {
  909. color: #6282c2;
  910. }
  911. .typeCss {
  912. display: flex;
  913. flex-direction: row;
  914. flex-wrap: wrap;
  915. justify-content: flex-start;
  916. align-items: center;
  917. }
  918. .school {
  919. white-space: nowrap;
  920. overflow: hidden;
  921. text-overflow: ellipsis;
  922. max-width: 50%;
  923. box-sizing: border-box;
  924. }
  925. .school_box {
  926. display: flex;
  927. align-items: center;
  928. justify-content: space-between;
  929. }
  930. </style>