course.vue 24 KB

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