course.vue 25 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073
  1. <template>
  2. <div class="pb_content" style="height: auto">
  3. <div class="pb_head top">
  4. <div>
  5. <span>项目管理</span>
  6. <span class="subClick" @click="
  7. goTo('/works?userid=' + userid + '&oid=' + oid + '&org=' + org)
  8. ">评价管理</span>
  9. </div>
  10. <div class="student_button">
  11. <el-button type="primary" class="bgColor" @click="openCourse">协同编辑</el-button>
  12. <el-button type="primary" class="bgColor" @click="goToCourse()">添加项目</el-button>
  13. </div>
  14. </div>
  15. <div class="pb_content_body" style="height: 100%">
  16. <div class="student_head">
  17. <div class="choose">
  18. <div class="student_search">
  19. <span>项目筛选</span>
  20. <el-select v-model="groupA" @change="search">
  21. <el-option value="0" label="我的项目"></el-option>
  22. <el-option value="1" label="他人项目"></el-option>
  23. </el-select>
  24. </div>
  25. <div class="all_choose" v-for="(item, index) in CourseType[0]" :key="index">
  26. <span>{{ item.name }}</span>
  27. <el-select v-model="courseTypeId[item.id]" placeholder="请选择" @change="getTypeName">
  28. <el-option label="全部" value="1">全部</el-option>
  29. <el-option v-for="item1 in CourseTypeJson[item.id]" :key="item1.id" :label="item1.name" :value="item1.id">
  30. </el-option>
  31. </el-select>
  32. </div>
  33. <div @click="clear" class="clear">重置</div>
  34. </div>
  35. <div class="student_right">
  36. <div class="head_left">
  37. <el-input v-model="courseName" class="student_input" placeholder="请输入项目名称"></el-input>
  38. <el-button class="course_button" @click="searchCourse">查询</el-button>
  39. </div>
  40. </div>
  41. </div>
  42. <div class="student_table">
  43. <div class="course_box">
  44. <div class="out_box" v-for="(item, index) in course" :key="index">
  45. <div class="myCourse" v-if="item.isCourseType == 1 && groupA == 0">
  46. 我的项目
  47. </div>
  48. <div class="myCourse" v-else-if="groupA == 1">
  49. 他人项目
  50. </div>
  51. <div class="xtCourse" v-else>协同项目</div>
  52. <div class="tup">
  53. <img :src="
  54. item.cover != null && item.cover != ''
  55. ? JSON.parse(item.cover).length > 0
  56. ? JSON.parse(item.cover)[0].url
  57. : mr
  58. : mr
  59. " alt />
  60. </div>
  61. <!-- <div class="bottom_box">
  62. <div>{{ item.title }}</div>
  63. <div class="kc_t" v-if="groupA == '1'">
  64. 创建老师:{{ item.uname }}
  65. </div>
  66. <div class="kc_time">{{ item.time }}</div>
  67. </div> -->
  68. <div class="bottom_box">
  69. <div>{{ item.title }}</div>
  70. <div class="kc_t" v-if="item.isCourseType == 2 || groupA == 1">
  71. 负责老师:{{ item.uname }}
  72. </div>
  73. <div class="kc_time">
  74. <span style="color: #4b4b4b">创建日期:</span>{{ item.time }}
  75. </div>
  76. <div class="kc_time">
  77. <span style="color: #4b4b4b">修改日期:</span>{{ item.utime }}
  78. </div>
  79. </div>
  80. <div class="three_bottom">
  81. <div @click="jump(item.courseId)">评课</div>
  82. <div v-if="groupA == '0'" @click="goToCourse(item.courseId)">
  83. 修改
  84. </div>
  85. <div v-if="groupA == '0'" @click="
  86. goTo(
  87. '/works?cid=' +
  88. item.courseId +
  89. '&userid=' +
  90. userid +
  91. '&oid=' +
  92. oid +
  93. '&org=' +
  94. org
  95. )
  96. ">
  97. 报告
  98. </div>
  99. <div v-if="(item.isCourseType == 1)" @click="deleteCourse(item.courseId)">
  100. 删除
  101. </div>
  102. <div class="more">
  103. <span style="font-size:18px;font-weight:700">...</span>
  104. <div>
  105. <span @click="copyCourse(item.courseId)">复制</span>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. <div class="course_empty" v-if="course.length == 0">暂无数据</div>
  111. </div>
  112. </div>
  113. </div>
  114. <div class="student_page">
  115. <el-pagination background layout="prev, pager, next" :page-size="10" :total="total" v-if="page && course.length"
  116. style="padding-bottom: 20px" @current-change="handleCurrentChange"></el-pagination>
  117. </div>
  118. <el-dialog :visible.sync="dialogVisible1" size="tiny">
  119. <img width="100%" :src="dialogImageUrl" alt />
  120. </el-dialog>
  121. <el-dialog title="查看提问" :visible.sync="dialogVisible" :append-to-body="true" width="750px"
  122. :before-close="handleClose" class="dialog_diy">
  123. <div>
  124. <div class="a_addBox">
  125. <CourseProblem :problemCourse="problemCourse"></CourseProblem>
  126. </div>
  127. </div>
  128. <span slot="footer" class="dialog-footer">
  129. <el-button @click="dialogVisible = false">关 闭</el-button>
  130. </span>
  131. </el-dialog>
  132. <el-dialog title="查看协同项目" :visible.sync="dialogVisibleCourse" :append-to-body="true" width="850px"
  133. :before-close="handleClose" class="dialog_diy">
  134. <div class="ct_box">
  135. <div class="out_box" v-for="(item, index) in courseTeam" :key="index" style="margin-left: 15px">
  136. <div class="tup">
  137. <img :src="
  138. item.cover != null && item.cover != ''
  139. ? JSON.parse(item.cover).length > 0
  140. ? JSON.parse(item.cover)[0].url
  141. : mr
  142. : mr
  143. " alt />
  144. </div>
  145. <div class="bottom_box">
  146. <div>{{ item.title }}</div>
  147. <div class="kc_t">创建老师:{{ item.uname }}</div>
  148. <div class="kc_time">{{ item.time }}</div>
  149. </div>
  150. <div class="three_bottom">
  151. <div @click="jump(item.courseId)">查看内容</div>
  152. <div @click="
  153. goTo(
  154. '/course/addCourse?cid=' +
  155. item.courseId +
  156. '&userid=' +
  157. userid +
  158. '&oid=' +
  159. oid +
  160. '&org=' +
  161. org
  162. )
  163. ">
  164. 编辑
  165. </div>
  166. </div>
  167. </div>
  168. <div class="course_empty" v-if="courseTeam.length == 0">暂无数据</div>
  169. </div>
  170. <span slot="footer" class="dialog-footer">
  171. <el-button @click="dialogVisibleCourse = false">关 闭</el-button>
  172. </span>
  173. </el-dialog>
  174. </div>
  175. </template>
  176. <script>
  177. import "../../common/aws-sdk-2.235.1.min";
  178. import EditorBar from "../../components/tools/wangEnduit";
  179. import CourseProblem from "./components/courseProblem";
  180. export default {
  181. components: { EditorBar, CourseProblem },
  182. data() {
  183. return {
  184. itemCount: 1,
  185. courseTitle: "",
  186. courseText: "",
  187. courseTime: "",
  188. isLoading: false,
  189. fileList: [],
  190. fileList1: [],
  191. homeworkList: [{ name: "" }],
  192. formLabelWidth: "100px",
  193. dialogVisible: false,
  194. dialogVisible1: false,
  195. dialogVisibleCourse: false,
  196. dialogImageUrl: "",
  197. group: "",
  198. userid: this.$route.query.userid,
  199. oid: this.$route.query.oid,
  200. org: this.$route.query.org,
  201. Juri: "",
  202. groupList: [],
  203. JuriList: [],
  204. page: 1,
  205. total: 0,
  206. tableData: [],
  207. now: "",
  208. courseDetail: {},
  209. addCourse: {},
  210. groupA: "0",
  211. classX: "",
  212. course: [],
  213. courseName: "",
  214. mr: require("../../assets/icon/kc1.png"),
  215. CourseType: [],
  216. CourseTypeJson: {},
  217. courseTypeId: {},
  218. courseTypeSon: [],
  219. isChoose: 0,
  220. problemCourse: null, //查看提问的项目
  221. courseTeam: [],
  222. };
  223. },
  224. methods: {
  225. change(val) {
  226. console.log(val);
  227. },
  228. time() {
  229. if (!this.now) {
  230. this.now = new Date().getTime();
  231. return true;
  232. } else {
  233. let time = new Date().getTime();
  234. if (time - this.now > 3000) {
  235. this.now = time;
  236. return true;
  237. } else {
  238. return false;
  239. }
  240. }
  241. },
  242. addHomeworkBox() {
  243. this.homeworkList.push({ name: "" });
  244. this.itemCount++;
  245. },
  246. reduceHomeworkBox() {
  247. var a = this.homeworkList;
  248. a.splice(a.length - 1);
  249. this.itemCount--;
  250. },
  251. goTo(path) {
  252. this.$router.push(path);
  253. },
  254. goToCourse(courseId) {
  255. if (courseId) {
  256. this.$router.push(
  257. "/course/addCourse?cid=" +
  258. courseId +
  259. "&userid=" +
  260. this.userid +
  261. "&oid=" +
  262. this.oid +
  263. "&org=" +
  264. this.org
  265. );
  266. } else {
  267. this.$router.push(
  268. "/course/addCourse?userid=" +
  269. this.userid +
  270. "&oid=" +
  271. this.oid +
  272. "&org=" +
  273. this.org
  274. );
  275. }
  276. // this.$router.push(path);
  277. },
  278. tableRowClassName({ row, rowIndex }) {
  279. if ((rowIndex + 1) % 2 === 0) {
  280. return "even_row";
  281. } else {
  282. return "";
  283. }
  284. },
  285. jump(cid) {
  286. // window.open(
  287. // "//pbl.cocorobo.cn/pbl-student-table/dist/#/courseDetail?courseId=" +
  288. // cid +
  289. // "&userid=" +
  290. // this.userid
  291. // );
  292. window.parent.postMessage({ cid: cid, screenType: "2" }, "*");
  293. },
  294. handle_remove(file, fileList) {
  295. var _tmp = this.fileList;
  296. for (var i = 0, len = _tmp.length; i < len; i++) {
  297. if (_tmp[i].uid == file.uid) {
  298. _tmp.splice(i, 1);
  299. break;
  300. }
  301. this.fileList = _tmp;
  302. }
  303. },
  304. handle_remove1(file, fileList) {
  305. var _tmp = this.fileList1;
  306. for (var i = 0, len = _tmp.length; i < len; i++) {
  307. if (_tmp[i].uid == file.uid) {
  308. _tmp.splice(i, 1);
  309. break;
  310. }
  311. this.fileList1 = _tmp;
  312. }
  313. },
  314. handleCurrentChange(val) {
  315. // console.log(`当前页: ${val}`);
  316. this.page = val;
  317. this.getCourse();
  318. },
  319. init() { },
  320. handleClose(done) {
  321. done();
  322. },
  323. handleRemove(file, fileList) {
  324. console.log(file, fileList);
  325. },
  326. handlePictureCardPreview(file) {
  327. this.dialogImageUrl = file.url;
  328. this.dialogVisible1 = true;
  329. },
  330. onExceed() {
  331. this.$message.error("项目海报仅支持上传一张,请删除后再进行上传");
  332. },
  333. //uuid生成
  334. guid() {
  335. return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
  336. /[xy]/g,
  337. function (c) {
  338. var r = (Math.random() * 16) | 0,
  339. v = c == "x" ? r : (r & 0x3) | 0x8;
  340. return v.toString(16);
  341. }
  342. );
  343. },
  344. time() {
  345. if (!this.now) {
  346. this.now = new Date().getTime();
  347. return true;
  348. } else {
  349. let time = new Date().getTime();
  350. if (time - this.now > 3000) {
  351. this.now = time;
  352. return true;
  353. } else {
  354. return false;
  355. }
  356. }
  357. },
  358. searchCourse() {
  359. this.page = 1;
  360. this.getCourse();
  361. },
  362. clear() {
  363. for (var i = 0; i < this.CourseType[0].length; i++) {
  364. this.courseTypeId[this.CourseType[0][i].id] = "";
  365. }
  366. this.getCourse();
  367. },
  368. getCourse() {
  369. if (!this.loading) {
  370. this.loading = this.openLoading(
  371. document.querySelector(".student_table")
  372. );
  373. }
  374. var typeE = [];
  375. var typea, typeb, typec, typed;
  376. if (this.isChoose == 1) {
  377. for (var i = 0; i < this.CourseType[0].length; i++) {
  378. if (this.courseTypeId[this.CourseType[0][i].id] == "1") {
  379. typeE.push(this.CourseType[0][i].id);
  380. } else if (this.courseTypeId[this.CourseType[0][i].id] != "") {
  381. if (this.CourseType[0][i].name == "年级") {
  382. typea = this.courseTypeId[this.CourseType[0][i].id];
  383. } else if (this.CourseType[0][i].name == "专栏") {
  384. typeb = this.courseTypeId[this.CourseType[0][i].id];
  385. } else if (this.CourseType[0][i].name == "栏目") {
  386. typeb = this.courseTypeId[this.CourseType[0][i].id];
  387. } else if (this.CourseType[0][i].name == "学院") {
  388. typeb = this.courseTypeId[this.CourseType[0][i].id];
  389. } else if (this.CourseType[0][i].name == "新技能") {
  390. typec = this.courseTypeId[this.CourseType[0][i].id];
  391. } else if (this.CourseType[0][i].name == "学科") {
  392. typed = this.courseTypeId[this.CourseType[0][i].id];
  393. }
  394. this.courseTypeSon.push(
  395. this.courseTypeId[this.CourseType[0][i].id]
  396. );
  397. }
  398. }
  399. }
  400. this.isLoading = true;
  401. let params = {
  402. type: this.groupA,
  403. uid: this.userid,
  404. oid: this.oid,
  405. typea: typea != undefined ? typea : "",
  406. typeb: typeb != undefined ? typeb : "",
  407. typec: typec != undefined ? typec : "",
  408. typed: typed != undefined ? typed : "",
  409. typeE: typeE.join(","),
  410. cu: "",
  411. cn: this.courseName,
  412. page: this.page,
  413. };
  414. this.ajax
  415. .get(this.$store.state.api + "selectCourseNew2", params)
  416. .then((res) => {
  417. this.loading.close();
  418. this.loading = "";
  419. this.isLoading = false;
  420. this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
  421. this.course = res.data[0];
  422. })
  423. .catch((err) => {
  424. console.error(err);
  425. });
  426. },
  427. getTypeName() {
  428. this.$forceUpdate();
  429. this.page = 1;
  430. this.isChoose = 1;
  431. this.getCourse();
  432. },
  433. // searchCourse() {
  434. // this.isLoading = true;
  435. // let params = {
  436. // cu: "",
  437. // cn: this.courseName,
  438. // page: this.page,
  439. // };
  440. // this.ajax
  441. // .get(this.$store.state.api + "searchCourse", params)
  442. // .then((res) => {
  443. // this.isLoading = false;
  444. // this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
  445. // this.course = res.data[0];
  446. // })
  447. // .catch((err) => {
  448. // this.isLoading = false;
  449. // console.error(err);
  450. // });
  451. // },
  452. deleteCourse(cid) {
  453. // if (this.time()) {
  454. this.$confirm("确定删除此项目吗?", "提示", {
  455. confirmButtonText: "确定",
  456. cancelButtonText: "取消",
  457. type: "warning",
  458. })
  459. .then(() => {
  460. const loading = this.openLoading(
  461. document.querySelector(".student_table")
  462. );
  463. this.isLoading = true;
  464. let params = {
  465. cid: cid,
  466. };
  467. this.ajax
  468. .get(this.$store.state.api + "deleteCourse", params)
  469. .then((res) => {
  470. loading.close();
  471. this.isLoading = false;
  472. this.$message.success("删除成功");
  473. this.getCourse();
  474. })
  475. .catch((err) => {
  476. console.error(err);
  477. });
  478. })
  479. .catch(() => {
  480. loading.close();
  481. this.isLoading = false;
  482. return;
  483. });
  484. // }
  485. },
  486. selectType() {
  487. this.ajax
  488. .get(this.$store.state.api + "selectType")
  489. .then((res) => {
  490. this.CourseType = res.data;
  491. for (var i = 0; i < res.data[0].length; i++) {
  492. if (!this.cid) {
  493. this.courseTypeId[res.data[0][i].id] = "";
  494. }
  495. if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
  496. if (res.data[0][i].name == "栏目") {
  497. this.CourseType[0][i].name = "主题";
  498. }
  499. }
  500. for (var j = 0; j < res.data[1].length; j++) {
  501. if (res.data[0][i].id == res.data[1][j].pid) {
  502. if (!this.CourseTypeJson[res.data[0][i].id]) {
  503. this.CourseTypeJson[res.data[0][i].id] = [];
  504. }
  505. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  506. }
  507. }
  508. }
  509. this.selectTypeByOid();
  510. this.selectTypeByOrg();
  511. })
  512. .catch((err) => {
  513. console.error(err);
  514. });
  515. },
  516. selectTypeByOid() {
  517. let params = {
  518. oid: this.oid,
  519. };
  520. this.ajax
  521. .get(this.$store.state.api + "selectTypeByOid", params)
  522. .then((res) => {
  523. for (var i = 0; i < res.data[0].length; i++) {
  524. for (var j = 0; j < res.data[1].length; j++) {
  525. if (res.data[0][i].id == res.data[1][j].pid) {
  526. if (!this.CourseTypeJson[res.data[0][i].id]) {
  527. this.CourseTypeJson[res.data[0][i].id] = [];
  528. }
  529. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  530. }
  531. }
  532. }
  533. this.$forceUpdate();
  534. })
  535. .catch((err) => {
  536. console.error(err);
  537. });
  538. },
  539. selectTypeByOrg() {
  540. let params = {
  541. oid: this.org,
  542. };
  543. this.ajax
  544. .get(this.$store.state.api + "selectTypeByOrg", params)
  545. .then((res) => {
  546. for (var i = 0; i < res.data[0].length; i++) {
  547. for (var j = 0; j < res.data[1].length; j++) {
  548. if (res.data[0][i].id == res.data[1][j].pid) {
  549. if (!this.CourseTypeJson[res.data[0][i].id]) {
  550. this.CourseTypeJson[res.data[0][i].id] = [];
  551. }
  552. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  553. }
  554. }
  555. }
  556. this.$forceUpdate();
  557. })
  558. .catch((err) => {
  559. console.error(err);
  560. });
  561. },
  562. openCourse() {
  563. this.dialogVisibleCourse = true;
  564. this.getTeamCourse();
  565. },
  566. getTeamCourse() {
  567. let params = {
  568. uid: this.userid,
  569. oid: this.oid,
  570. };
  571. this.ajax
  572. .get(this.$store.state.api + "selectCourseTeam", params)
  573. .then((res) => {
  574. this.courseTeam = res.data[0];
  575. })
  576. .catch((err) => {
  577. console.error(err);
  578. });
  579. },
  580. search() {
  581. this.page = 1;
  582. this.getCourse();
  583. },
  584. checkProblem(res) {
  585. this.problemCourse = res;
  586. this.dialogVisible = true;
  587. },
  588. copyCourse(cid) {
  589. let params = [{
  590. cid: cid,
  591. uid: this.userid
  592. }]
  593. this.ajax
  594. .post(this.$store.state.api + "copyCourse", params)
  595. .then((res) => {
  596. this.page = 1
  597. this.groupA = '0'
  598. this.clear()
  599. })
  600. .catch((err) => {
  601. console.error(err);
  602. });
  603. }
  604. },
  605. created() {
  606. this.page = 1;
  607. this.selectType();
  608. this.getCourse();
  609. },
  610. };
  611. </script>
  612. <style scoped>
  613. .dialog_diy>>>.el-dialog__header {
  614. background: #3d67bc !important;
  615. padding: 15px 20px;
  616. }
  617. .dialog_diy>>>.el-dialog__title {
  618. color: #fff;
  619. }
  620. .dialog_diy>>>.el-dialog__headerbtn {
  621. top: 19px;
  622. }
  623. .dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
  624. color: #fff;
  625. }
  626. .dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
  627. color: #fff;
  628. }
  629. .student_head>>>.el-button--primary {
  630. background-color: #2268bc;
  631. }
  632. .xls_button {
  633. font-size: 14px;
  634. cursor: pointer;
  635. text-decoration: underline;
  636. color: rgb(34, 104, 188);
  637. }
  638. .student_head {
  639. display: flex;
  640. justify-content: space-between;
  641. align-items: baseline;
  642. flex-direction: row;
  643. flex-wrap: wrap;
  644. }
  645. .top {
  646. display: flex;
  647. justify-content: space-between;
  648. }
  649. .bgColor {
  650. background: #466b99;
  651. }
  652. .student_search {
  653. display: flex;
  654. align-items: center;
  655. width: calc(100% / 3);
  656. }
  657. .student_search span {
  658. margin: 0 10px 0 0;
  659. min-width: 65px;
  660. }
  661. .student_button {
  662. display: flex;
  663. overflow: hidden;
  664. height: 40px;
  665. }
  666. .upload-demo {
  667. display: flex;
  668. flex-direction: column;
  669. align-items: end;
  670. /* position: relative; */
  671. width: 100px;
  672. overflow: hidden;
  673. }
  674. .student_table {
  675. padding: 20px 0;
  676. height: 100%;
  677. overflow: auto;
  678. }
  679. .student_empty {
  680. display: flex;
  681. justify-content: center;
  682. align-items: center;
  683. }
  684. .el-table>>>.even_row {
  685. background-color: #f1f1f1;
  686. }
  687. .time {
  688. font-size: 13px;
  689. color: #999;
  690. }
  691. .course_button {
  692. padding: 10px 20px;
  693. }
  694. .course_button_box {
  695. display: flex;
  696. margin-top: 5px;
  697. justify-content: space-between;
  698. }
  699. .course_rate {
  700. margin-top: 5px;
  701. }
  702. .course_view {
  703. display: flex;
  704. align-items: center;
  705. margin: 5px 0 0 0;
  706. }
  707. .course_view i {
  708. background-image: url("../../assets/liulan.png");
  709. width: 25px;
  710. height: 25px;
  711. background-size: 100% 100%;
  712. /* margin-top: 1px; */
  713. line-height: 25px;
  714. vertical-align: text-top;
  715. background-repeat: no-repeat;
  716. }
  717. .image {
  718. width: 100%;
  719. height: 150px;
  720. display: block;
  721. }
  722. .course_box {
  723. display: flex;
  724. flex-wrap: wrap;
  725. }
  726. .student_page {
  727. width: 95%;
  728. margin: 0 auto;
  729. }
  730. .course_create_box {
  731. font-size: 18px;
  732. }
  733. .course_name {
  734. margin-top: 10px;
  735. }
  736. .course_name span {
  737. margin-bottom: 10px;
  738. display: block;
  739. }
  740. .homework_box {
  741. display: flex;
  742. align-items: center;
  743. flex-wrap: wrap;
  744. }
  745. .course_homework {
  746. width: 130px;
  747. display: flex;
  748. justify-content: center;
  749. flex-direction: column;
  750. align-items: center;
  751. margin: 0 10px 10px 0;
  752. }
  753. .course_type {
  754. margin-top: 10px;
  755. display: flex;
  756. }
  757. .course_type1 span {
  758. margin-bottom: 10px;
  759. display: block;
  760. }
  761. .course_type2 {
  762. margin-left: 20px;
  763. }
  764. .course_type2 span {
  765. margin-bottom: 10px;
  766. display: block;
  767. }
  768. .course_empty {
  769. color: rgb(110, 110, 110);
  770. width: 100%;
  771. height: 100%;
  772. display: flex;
  773. align-items: center;
  774. justify-content: center;
  775. }
  776. .el_cards>>>.el-card__body {
  777. height: 100%;
  778. }
  779. .courseBtnBox {
  780. display: flex;
  781. flex-direction: column;
  782. justify-content: space-between;
  783. height: calc(100% - 170px);
  784. padding: 10px;
  785. }
  786. .wordUpload {
  787. display: flex;
  788. }
  789. .wordUpload>.buttonUp {
  790. margin-right: 5px;
  791. }
  792. .out_box {
  793. display: flex;
  794. flex-direction: column;
  795. flex-wrap: nowrap;
  796. width: 250px;
  797. background: #fff;
  798. margin-right: 25px;
  799. border: 1px solid #ccc;
  800. height: fit-content;
  801. box-sizing: border-box;
  802. border-radius: 0px 0px 5px 5px;
  803. /* overflow: hidden; */
  804. margin-bottom: 15px;
  805. position: relative;
  806. }
  807. .bottom_box {
  808. display: flex;
  809. padding: 10px 0 10px 10px;
  810. flex-direction: column;
  811. box-sizing: border-box;
  812. height: 121px;
  813. flex-wrap: nowrap;
  814. justify-content: space-evenly;
  815. }
  816. .bottom_box>div:nth-child(1) {
  817. width: 230px;
  818. overflow: hidden;
  819. text-overflow: ellipsis;
  820. white-space: nowrap;
  821. }
  822. .tup {
  823. width: 100%;
  824. height: 141.06px;
  825. margin: 0 auto;
  826. overflow: hidden;
  827. display: flex;
  828. align-items: center;
  829. }
  830. .tup>img {
  831. width: 100%;
  832. height: 100%;
  833. object-fit: contain;
  834. }
  835. .kc_time {
  836. margin-top: 8px;
  837. font-size: 14px;
  838. color: #999;
  839. }
  840. .kc_t {
  841. margin-top: 5px;
  842. }
  843. .three_bottom {
  844. display: flex;
  845. flex-direction: row;
  846. justify-content: space-around;
  847. height: 40px;
  848. align-items: center;
  849. background: #f5f4f4;
  850. font-size: 14px;
  851. }
  852. .three_bottom>div {
  853. cursor: pointer;
  854. }
  855. .three_bottom>div:hover {
  856. color: #79a2ff;
  857. }
  858. .head_left {
  859. display: flex;
  860. }
  861. .student_input>>>.el-input__inner {
  862. height: 40px;
  863. width: 190px;
  864. font-size: 13px;
  865. padding: 0 10px;
  866. }
  867. .course_button {
  868. color: #fff;
  869. background: #2268bc;
  870. width: 75px;
  871. height: 40px;
  872. padding: 0 !important;
  873. font-size: 12px;
  874. line-height: 40px;
  875. }
  876. .all_choose {
  877. margin: 15px 0 10px;
  878. height: 20%;
  879. display: flex;
  880. flex-direction: row;
  881. align-items: center;
  882. width: calc(100% / 3);
  883. }
  884. .all_choose>span {
  885. width: 50px;
  886. display: block;
  887. }
  888. .choose {
  889. display: flex;
  890. flex-direction: row;
  891. flex-wrap: wrap;
  892. align-content: space-between;
  893. height: 100%;
  894. justify-content: flex-start;
  895. width: 60%;
  896. min-width: 868px;
  897. align-items: center;
  898. }
  899. .choose>div:nth-child(2) {
  900. margin-left: 1%;
  901. width: 32.33333%;
  902. }
  903. .choose>div:nth-child(4) {
  904. margin-right: 1%;
  905. width: 32.33333%;
  906. }
  907. .choose>div:nth-child(5) {
  908. margin: 5px 0 0 1%;
  909. }
  910. .choose>div:nth-child(4)>span {
  911. width: 74px !important;
  912. min-width: 74px;
  913. }
  914. .choose>div:nth-child(4)>>>.el-select {
  915. width: 217.5px;
  916. min-width: 215.06px;
  917. }
  918. .clear {
  919. width: 70px;
  920. height: 35px;
  921. background: #2268bc;
  922. color: #fff;
  923. text-align: center;
  924. border-radius: 5px;
  925. line-height: 35px;
  926. cursor: pointer;
  927. margin-left: 20px;
  928. }
  929. .ct_box {
  930. height: 500px;
  931. overflow: auto;
  932. display: flex;
  933. flex-wrap: wrap;
  934. }
  935. .myCourse {
  936. position: absolute;
  937. background: #3c3c3c;
  938. width: 70px;
  939. height: 30px;
  940. border-radius: 30px;
  941. color: #fff;
  942. font-size: 14px;
  943. text-align: center;
  944. line-height: 30px;
  945. top: 5px;
  946. left: 5px;
  947. }
  948. .xtCourse {
  949. position: absolute;
  950. background: #41a5f0;
  951. width: 70px;
  952. height: 30px;
  953. border-radius: 30px;
  954. color: #fff;
  955. font-size: 14px;
  956. text-align: center;
  957. line-height: 30px;
  958. top: 5px;
  959. left: 5px;
  960. }
  961. .subClick {
  962. font-size: 16px;
  963. cursor: pointer;
  964. margin-left: 10px;
  965. /* color: #ab582f; */
  966. color: #409eff;
  967. }
  968. .more {
  969. position: relative;
  970. }
  971. .more:hover div {
  972. display: block;
  973. color: #000;
  974. }
  975. .more div {
  976. position: absolute;
  977. bottom: 0px;
  978. transform: translate(-50%,100%);
  979. background: #f5f4f4;
  980. padding: 10px 20px;
  981. z-index: 99;
  982. width: 40px;
  983. border-radius: 5px;
  984. box-shadow: 0 0 3px 3px #80808020;
  985. display: none;
  986. }
  987. .more div>span+span {
  988. margin-top: 10px;
  989. }
  990. .more div>span {
  991. display: block;
  992. width: 100%;
  993. text-align: center;
  994. }
  995. .more div>span:hover {
  996. color: #79a2ff;
  997. }
  998. </style>