courseGM.vue 27 KB

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