courseGM.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182
  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. '/works?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.parent.postMessage({ cid: cid, screenType: "2gm" }, "*");
  362. },
  363. get(cid){
  364. window.parent.postMessage({ cid: cid, screenType: "3gm" }, "*");
  365. },
  366. handle_remove(file, fileList) {
  367. var _tmp = this.fileList;
  368. for (var i = 0, len = _tmp.length; i < len; i++) {
  369. if (_tmp[i].uid == file.uid) {
  370. _tmp.splice(i, 1);
  371. break;
  372. }
  373. this.fileList = _tmp;
  374. }
  375. },
  376. handle_remove1(file, fileList) {
  377. var _tmp = this.fileList1;
  378. for (var i = 0, len = _tmp.length; i < len; i++) {
  379. if (_tmp[i].uid == file.uid) {
  380. _tmp.splice(i, 1);
  381. break;
  382. }
  383. this.fileList1 = _tmp;
  384. }
  385. },
  386. handleCurrentChange(val) {
  387. // console.log(`当前页: ${val}`);
  388. this.page = val;
  389. this.getCourse();
  390. },
  391. init() {},
  392. handleClose(done) {
  393. done();
  394. },
  395. handleRemove(file, fileList) {
  396. console.log(file, fileList);
  397. },
  398. handlePictureCardPreview(file) {
  399. this.dialogImageUrl = file.url;
  400. this.dialogVisible1 = true;
  401. },
  402. onExceed() {
  403. this.$message.error("项目海报仅支持上传一张,请删除后再进行上传");
  404. },
  405. //uuid生成
  406. guid() {
  407. return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
  408. /[xy]/g,
  409. function (c) {
  410. var r = (Math.random() * 16) | 0,
  411. v = c == "x" ? r : (r & 0x3) | 0x8;
  412. return v.toString(16);
  413. }
  414. );
  415. },
  416. time() {
  417. if (!this.now) {
  418. this.now = new Date().getTime();
  419. return true;
  420. } else {
  421. let time = new Date().getTime();
  422. if (time - this.now > 3000) {
  423. this.now = time;
  424. return true;
  425. } else {
  426. return false;
  427. }
  428. }
  429. },
  430. searchCourse() {
  431. this.page = 1;
  432. this.getCourse();
  433. },
  434. clear() {
  435. for (var i = 0; i < this.CourseType[0].length; i++) {
  436. this.courseTypeId[this.CourseType[0][i].id] = "";
  437. }
  438. this.getCourse();
  439. },
  440. getCourse() {
  441. if (!this.loading) {
  442. this.loading = this.openLoading(
  443. document.querySelector(".student_table")
  444. );
  445. }
  446. var typeE = [];
  447. var typea, typeb, typec, typed;
  448. if (this.isChoose == 1) {
  449. for (var i = 0; i < this.CourseType[0].length; i++) {
  450. if (this.courseTypeId[this.CourseType[0][i].id] == "1") {
  451. typeE.push(this.CourseType[0][i].id);
  452. } else if (this.courseTypeId[this.CourseType[0][i].id] != "") {
  453. if (this.CourseType[0][i].name == "年级") {
  454. typea = this.courseTypeId[this.CourseType[0][i].id];
  455. } else if (this.CourseType[0][i].name == "专栏") {
  456. typeb = 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. typec = this.courseTypeId[this.CourseType[0][i].id];
  463. } else if (this.CourseType[0][i].name == "学科") {
  464. typed = this.courseTypeId[this.CourseType[0][i].id];
  465. }
  466. this.courseTypeSon.push(
  467. this.courseTypeId[this.CourseType[0][i].id]
  468. );
  469. }
  470. }
  471. }
  472. this.isLoading = true;
  473. let params = {
  474. type: this.groupA,
  475. uid: this.userid,
  476. oid: this.oid,
  477. typea: typea != undefined ? typea : "",
  478. typeb: typeb != undefined ? typeb : "",
  479. typec: typec != undefined ? typec : "",
  480. typed: typed != undefined ? typed : "",
  481. typeE: typeE.join(","),
  482. cu: "",
  483. cn: this.courseName,
  484. page: this.page,
  485. };
  486. this.ajax
  487. .get(this.$store.state.api + "selectCourseNew2", params)
  488. .then((res) => {
  489. this.loading.close();
  490. this.loading = "";
  491. this.isLoading = false;
  492. this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
  493. this.course = res.data[0];
  494. })
  495. .catch((err) => {
  496. console.error(err);
  497. });
  498. },
  499. getTypeName() {
  500. this.$forceUpdate();
  501. this.page = 1;
  502. this.isChoose = 1;
  503. this.getCourse();
  504. },
  505. // searchCourse() {
  506. // this.isLoading = true;
  507. // let params = {
  508. // cu: "",
  509. // cn: this.courseName,
  510. // page: this.page,
  511. // };
  512. // this.ajax
  513. // .get(this.$store.state.api + "searchCourse", params)
  514. // .then((res) => {
  515. // this.isLoading = false;
  516. // this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
  517. // this.course = res.data[0];
  518. // })
  519. // .catch((err) => {
  520. // this.isLoading = false;
  521. // console.error(err);
  522. // });
  523. // },
  524. deleteCourse(cid) {
  525. // if (this.time()) {
  526. this.$confirm("确定删除此项目吗?", "提示", {
  527. confirmButtonText: "确定",
  528. cancelButtonText: "取消",
  529. type: "warning",
  530. })
  531. .then(() => {
  532. const loading = this.openLoading(
  533. document.querySelector(".student_table")
  534. );
  535. this.isLoading = true;
  536. let params = {
  537. cid: cid,
  538. };
  539. this.ajax
  540. .get(this.$store.state.api + "deleteCourse", params)
  541. .then((res) => {
  542. loading.close();
  543. this.isLoading = false;
  544. this.$message.success("删除成功");
  545. this.getCourse();
  546. })
  547. .catch((err) => {
  548. console.error(err);
  549. });
  550. })
  551. .catch(() => {
  552. loading.close();
  553. this.isLoading = false;
  554. return;
  555. });
  556. // }
  557. },
  558. selectType() {
  559. this.ajax
  560. .get(this.$store.state.api + "selectType")
  561. .then((res) => {
  562. this.CourseType = res.data;
  563. for (var i = 0; i < res.data[0].length; i++) {
  564. if (!this.cid) {
  565. this.courseTypeId[res.data[0][i].id] = "";
  566. }
  567. if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
  568. if (res.data[0][i].name == "栏目") {
  569. this.CourseType[0][i].name = "主题";
  570. }
  571. }
  572. for (var j = 0; j < res.data[1].length; j++) {
  573. if (res.data[0][i].id == res.data[1][j].pid) {
  574. if (!this.CourseTypeJson[res.data[0][i].id]) {
  575. this.CourseTypeJson[res.data[0][i].id] = [];
  576. }
  577. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);//去除公共分类
  578. }
  579. }
  580. }
  581. this.selectTypeByOid();
  582. this.selectTypeByOrg();
  583. })
  584. .catch((err) => {
  585. console.error(err);
  586. });
  587. },
  588. selectTypeByOid() {
  589. let params = {
  590. oid: this.oid,
  591. };
  592. this.ajax
  593. .get(this.$store.state.api + "selectTypeByOid", params)
  594. .then((res) => {
  595. for (var i = 0; i < res.data[0].length; i++) {
  596. for (var j = 0; j < res.data[1].length; j++) {
  597. if (res.data[0][i].id == res.data[1][j].pid) {
  598. if (!this.CourseTypeJson[res.data[0][i].id]) {
  599. this.CourseTypeJson[res.data[0][i].id] = [];
  600. }
  601. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  602. }
  603. }
  604. }
  605. this.$forceUpdate();
  606. })
  607. .catch((err) => {
  608. console.error(err);
  609. });
  610. },
  611. selectTypeByOrg() {
  612. let params = {
  613. oid: this.org,
  614. };
  615. this.ajax
  616. .get(this.$store.state.api + "selectTypeByOrg", params)
  617. .then((res) => {
  618. for (var i = 0; i < res.data[0].length; i++) {
  619. for (var j = 0; j < res.data[1].length; j++) {
  620. if (res.data[0][i].id == res.data[1][j].pid) {
  621. if (!this.CourseTypeJson[res.data[0][i].id]) {
  622. this.CourseTypeJson[res.data[0][i].id] = [];
  623. }
  624. this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
  625. }
  626. }
  627. }
  628. this.$forceUpdate();
  629. })
  630. .catch((err) => {
  631. console.error(err);
  632. });
  633. },
  634. openCourse() {
  635. this.dialogVisibleCourse = true;
  636. this.getTeamCourse();
  637. },
  638. getTeamCourse() {
  639. let params = {
  640. uid: this.userid,
  641. oid: this.oid,
  642. };
  643. this.ajax
  644. .get(this.$store.state.api + "selectCourseTeam", params)
  645. .then((res) => {
  646. this.courseTeam = res.data[0];
  647. })
  648. .catch((err) => {
  649. console.error(err);
  650. });
  651. },
  652. search() {
  653. this.page = 1;
  654. this.getCourse();
  655. },
  656. checkProblem(res) {
  657. this.problemCourse = res;
  658. this.dialogVisible = true;
  659. },
  660. copyCourse(cid) {
  661. let params = [{
  662. cid: cid,
  663. uid: this.userid
  664. }]
  665. this.ajax
  666. .post(this.$store.state.api + "copyCourse", params)
  667. .then((res) => {
  668. this.page = 1
  669. this.groupA = '0'
  670. this.clear()
  671. })
  672. .catch((err) => {
  673. console.error(err);
  674. });
  675. }
  676. },
  677. created() {
  678. this.page = 1;
  679. this.selectType();
  680. this.getCourse();
  681. },
  682. };
  683. </script>
  684. <style scoped>
  685. .dialog_diy >>> .el-dialog__header {
  686. background: #3d67bc !important;
  687. padding: 15px 20px;
  688. }
  689. .dialog_diy >>> .el-dialog__title {
  690. color: #fff;
  691. }
  692. .dialog_diy >>> .el-dialog__headerbtn {
  693. top: 19px;
  694. }
  695. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
  696. color: #fff;
  697. }
  698. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
  699. color: #fff;
  700. }
  701. .student_head >>> .el-button--primary {
  702. background-color: #2268bc;
  703. }
  704. .xls_button {
  705. font-size: 14px;
  706. cursor: pointer;
  707. text-decoration: underline;
  708. color: rgb(34, 104, 188);
  709. }
  710. .student_head {
  711. display: flex;
  712. justify-content: space-between;
  713. align-items: baseline;
  714. flex-direction: row;
  715. flex-wrap: wrap;
  716. }
  717. .top {
  718. display: flex;
  719. justify-content: space-between;
  720. }
  721. .bgColor {
  722. background: #8681b7;
  723. border-color: #8681b7;
  724. }
  725. .student_search {
  726. display: flex;
  727. align-items: center;
  728. width: calc(100% / 3);
  729. }
  730. .student_search span {
  731. margin: 0 10px 0 0;
  732. min-width: 65px;
  733. }
  734. .student_button {
  735. display: flex;
  736. overflow: hidden;
  737. height: 40px;
  738. }
  739. .upload-demo {
  740. display: flex;
  741. flex-direction: column;
  742. align-items: end;
  743. /* position: relative; */
  744. width: 100px;
  745. overflow: hidden;
  746. }
  747. .student_table {
  748. padding: 20px 0;
  749. height: 100%;
  750. overflow: auto;
  751. }
  752. .student_empty {
  753. display: flex;
  754. justify-content: center;
  755. align-items: center;
  756. }
  757. .el-table >>> .even_row {
  758. background-color: #f1f1f1;
  759. }
  760. .time {
  761. font-size: 13px;
  762. color: #999;
  763. }
  764. .course_button {
  765. padding: 10px 20px;
  766. }
  767. .course_button_box {
  768. display: flex;
  769. margin-top: 5px;
  770. justify-content: space-between;
  771. }
  772. .course_rate {
  773. margin-top: 5px;
  774. }
  775. .course_view {
  776. display: flex;
  777. align-items: center;
  778. margin: 5px 0 0 0;
  779. }
  780. .course_view i {
  781. background-image: url("../../assets/liulan.png");
  782. width: 25px;
  783. height: 25px;
  784. background-size: 100% 100%;
  785. /* margin-top: 1px; */
  786. line-height: 25px;
  787. vertical-align: text-top;
  788. background-repeat: no-repeat;
  789. }
  790. .image {
  791. width: 100%;
  792. height: 150px;
  793. display: block;
  794. }
  795. .course_box {
  796. display: flex;
  797. flex-wrap: wrap;
  798. }
  799. .student_page {
  800. width: 95%;
  801. margin: 0 auto;
  802. }
  803. .course_create_box {
  804. font-size: 18px;
  805. }
  806. .course_name {
  807. margin-top: 10px;
  808. }
  809. .course_name span {
  810. margin-bottom: 10px;
  811. display: block;
  812. }
  813. .homework_box {
  814. display: flex;
  815. align-items: center;
  816. flex-wrap: wrap;
  817. }
  818. .course_homework {
  819. width: 130px;
  820. display: flex;
  821. justify-content: center;
  822. flex-direction: column;
  823. align-items: center;
  824. margin: 0 10px 10px 0;
  825. }
  826. .course_type {
  827. margin-top: 10px;
  828. display: flex;
  829. }
  830. .course_type1 span {
  831. margin-bottom: 10px;
  832. display: block;
  833. }
  834. .course_type2 {
  835. margin-left: 20px;
  836. }
  837. .course_type2 span {
  838. margin-bottom: 10px;
  839. display: block;
  840. }
  841. .course_empty {
  842. color: rgb(110, 110, 110);
  843. width: 100%;
  844. height: 100%;
  845. display: flex;
  846. align-items: center;
  847. justify-content: center;
  848. }
  849. .el_cards >>> .el-card__body {
  850. height: 100%;
  851. }
  852. .courseBtnBox {
  853. display: flex;
  854. flex-direction: column;
  855. justify-content: space-between;
  856. height: calc(100% - 170px);
  857. padding: 10px;
  858. }
  859. .wordUpload {
  860. display: flex;
  861. }
  862. .wordUpload > .buttonUp {
  863. margin-right: 5px;
  864. }
  865. .out_box {
  866. display: flex;
  867. flex-direction: column;
  868. flex-wrap: nowrap;
  869. width: 250px;
  870. background: #fff;
  871. margin-right: 25px;
  872. border: 1px solid #ccc;
  873. height: fit-content;
  874. box-sizing: border-box;
  875. border-radius: 0px 0px 5px 5px;
  876. /* overflow: hidden; */
  877. margin-bottom: 15px;
  878. position: relative;
  879. }
  880. .bottom_box {
  881. display: flex;
  882. padding: 10px 0 10px 10px;
  883. flex-direction: column;
  884. box-sizing: border-box;
  885. height: 121px;
  886. flex-wrap: nowrap;
  887. justify-content: space-evenly;
  888. }
  889. .bottom_box > div:nth-child(1) {
  890. width: 230px;
  891. overflow: hidden;
  892. text-overflow: ellipsis;
  893. white-space: nowrap;
  894. }
  895. .tup {
  896. width: 100%;
  897. height: 141.06px;
  898. margin: 0 auto;
  899. overflow: hidden;
  900. display: flex;
  901. align-items: center;
  902. }
  903. .tup > img {
  904. width: 100%;
  905. height: 100%;
  906. object-fit: contain;
  907. }
  908. .kc_time {
  909. margin-top: 8px;
  910. font-size: 14px;
  911. color: #999;
  912. }
  913. .kc_t {
  914. margin-top: 5px;
  915. }
  916. .three_bottom {
  917. display: flex;
  918. flex-direction: row;
  919. justify-content: space-around;
  920. height: 40px;
  921. align-items: center;
  922. background: #f5f4f4;
  923. font-size: 14px;
  924. }
  925. .three_bottom > div {
  926. cursor: pointer;
  927. }
  928. .three_bottom > div:hover {
  929. color: #79a2ff;
  930. }
  931. .head_left {
  932. display: flex;
  933. }
  934. .student_input >>> .el-input__inner {
  935. height: 40px;
  936. width: 190px;
  937. font-size: 13px;
  938. padding: 0 10px;
  939. }
  940. .course_button {
  941. color: #fff;
  942. background: #8681b7;
  943. width: 75px;
  944. height: 40px;
  945. padding: 0 !important;
  946. font-size: 12px;
  947. line-height: 40px;
  948. }
  949. .all_choose {
  950. margin: 15px 0 10px;
  951. height: 20%;
  952. display: flex;
  953. flex-direction: row;
  954. align-items: center;
  955. width: calc(100% / 3);
  956. }
  957. .all_choose > span {
  958. width: 50px;
  959. display: block;
  960. }
  961. .choose {
  962. display: flex;
  963. flex-direction: row;
  964. flex-wrap: wrap;
  965. align-content: space-between;
  966. height: 100%;
  967. justify-content: flex-start;
  968. width: 60%;
  969. min-width: 868px;
  970. align-items: center;
  971. }
  972. .choose > div:nth-child(2) {
  973. margin-left: 1%;
  974. width: 32.33333%;
  975. }
  976. .choose > div:nth-child(4) {
  977. margin-right: 1%;
  978. width: 32.33333%;
  979. }
  980. .choose > div:nth-child(5) {
  981. margin: 5px 0 0 1%;
  982. }
  983. .choose > div:nth-child(4) > span {
  984. width: 74px !important;
  985. min-width: 74px;
  986. }
  987. .choose > div:nth-child(4) >>> .el-select {
  988. width: 217.5px;
  989. min-width: 215.06px;
  990. }
  991. .clear {
  992. width: 70px;
  993. height: 35px;
  994. background: #8681b7;
  995. color: #fff;
  996. text-align: center;
  997. border-radius: 5px;
  998. line-height: 35px;
  999. cursor: pointer;
  1000. margin-left: 20px;
  1001. }
  1002. .ct_box {
  1003. height: 500px;
  1004. overflow: auto;
  1005. display: flex;
  1006. flex-wrap: wrap;
  1007. }
  1008. .myCourse {
  1009. position: absolute;
  1010. background: #3c3c3c;
  1011. width: 70px;
  1012. height: 30px;
  1013. border-radius: 30px;
  1014. color: #fff;
  1015. font-size: 14px;
  1016. text-align: center;
  1017. line-height: 30px;
  1018. top: 5px;
  1019. left: 5px;
  1020. }
  1021. .xtCourse {
  1022. position: absolute;
  1023. background: #41a5f0;
  1024. width: 70px;
  1025. height: 30px;
  1026. border-radius: 30px;
  1027. color: #fff;
  1028. font-size: 14px;
  1029. text-align: center;
  1030. line-height: 30px;
  1031. top: 5px;
  1032. left: 5px;
  1033. }
  1034. .subClick {
  1035. font-size: 16px;
  1036. cursor: pointer;
  1037. margin-left: 10px;
  1038. /* color: #ab582f; */
  1039. color: #5c549f;
  1040. }
  1041. .student_page
  1042. >>> .el-pagination.is-background
  1043. .el-pager
  1044. li:not(.disabled).active {
  1045. background-color: #5c549f;
  1046. }
  1047. .student_page
  1048. >>> .el-pagination.is-background
  1049. .el-pager
  1050. li:not(.disabled):hover {
  1051. color: #5c549f;
  1052. }
  1053. .student_search >>> .el-select .el-input.is-focus .el-input__inner {
  1054. border-color: #5c549f;
  1055. }
  1056. .student_search >>> .el-select .el-input__inner:focus {
  1057. border-color: #5c549f;
  1058. }
  1059. .el-select-dropdown__item.selected {
  1060. color: #5c549f;
  1061. }
  1062. .student_input.is-active >>> .el-input__inner,
  1063. .student_input >>> .el-input__inner:focus {
  1064. border-color: #5c549f;
  1065. }
  1066. .all_choose >>> .el-select .el-input.is-focus .el-input__inner {
  1067. border-color: #5c549f;
  1068. }
  1069. .all_choose >>> .el-select .el-input__inner:focus {
  1070. border-color: #5c549f;
  1071. }
  1072. .more {
  1073. position: relative;
  1074. }
  1075. .more:hover div {
  1076. display: block;
  1077. color: #000;
  1078. }
  1079. .more div {
  1080. position: absolute;
  1081. bottom: 0px;
  1082. transform: translate(-50%,100%);
  1083. background: #f5f4f4;
  1084. padding: 10px 20px;
  1085. z-index: 99;
  1086. width: 40px;
  1087. border-radius: 5px;
  1088. box-shadow: 0 0 3px 3px #80808020;
  1089. display: none;
  1090. }
  1091. .more div>span+span {
  1092. margin-top: 10px;
  1093. }
  1094. .more div>span {
  1095. display: block;
  1096. width: 100%;
  1097. text-align: center;
  1098. }
  1099. .more div>span:hover {
  1100. color: #79a2ff;
  1101. }
  1102. </style>