浏览代码

Merge branch 'master' of https://git.cocorobo.cn/CocoRoboLabs/pbl-teacher-table

zengyicheng 2 年之前
父节点
当前提交
894cdaa167

文件差异内容过多而无法显示
+ 17689 - 1
package-lock.json


二进制
src/assets/icon/isNoMessage.png


二进制
src/assets/icon/notice/doi.png


二进制
src/assets/icon/notice/notice.png


二进制
src/assets/icon/notice/noticeBg.png


+ 4 - 1
src/components/pages/GM/notice.vue

@@ -108,6 +108,7 @@ export default {
       role: this.$route.query.role,
       noticeTitle: "",
       detail: "",
+      now:"",
     };
   },
   mounted() {
@@ -157,7 +158,9 @@ export default {
       this.dialogVisible = true;
       this.res = res;
     },
-
+    change(val){
+      console.log(val);
+    },
     getNews() {
       this.loading = true;
       let params = { uid: this.userid, oid: this.oid, org: this.org, page: this.page };

+ 26 - 2
src/components/pages/components/proMan.vue

@@ -5,7 +5,7 @@
         <div class="rwBox">
           <div class="rwTop">
             <div class="rwTouImg"></div>
-            <div>{{ item2.people }}</div>
+            <div>{{ getMan(item2.people) }}</div>
           </div>
           <div class="rwMidBox">
             <div>{{ item2.task }}</div>
@@ -38,9 +38,10 @@
 
 <script>
 export default {
-  props: ['Json'],
+  props: ['Json','ManAarray'],
   data() {
     return {
+      ManAarray2:[]
     };
   },
   computed: {
@@ -60,6 +61,29 @@ export default {
           + ((time.getDate()) < 10 ? '0' + (time.getDate()) : (time.getDate()));
         return s2
       }
+    },
+    getMan(){
+      return function (people) {
+        let _people = people
+        if(this.ManAarray2.length){
+          for(var i = 0;i<this.ManAarray2.length;i++){
+            if(this.ManAarray2[i].userid == people){
+              _people = this.ManAarray2[i].name;
+              break;
+            }
+          }
+        }
+        return _people
+      }
+    },
+  },
+  watch: {
+    ManAarray: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.ManAarray2 = newValue
+      }
     }
   },
   methods: {

+ 17 - 22
src/components/pages/scourse.vue

@@ -40,16 +40,16 @@
           </div>
         </div>
       </div>
-      <div class="student_table">
+      <div class="student_table" v-loading="isLoading">
         <div class="course_box">
           <div class="out_box" v-for="(item, index) in course" :key="index">
-            <!-- <div class="myCourse" v-if="item.isCourseType == 1 && groupA == 0">
+            <div class="myCourse" v-if="item.userid == userid">
               我的项目
             </div>
-            <div class="myCourse" v-else-if="groupA == 1">
+            <div class="myCourse" v-else-if="item.course_teacher.indexOf(userid) == -1">
               他人项目
             </div>
-            <div class="xtCourse" v-else>协同项目</div> -->
+            <div class="xtCourse" v-else>协同项目</div>
             <div class="tup">
               <img :src="
                 item.cover != null && item.cover != ''
@@ -79,7 +79,7 @@
               </div>
             </div>
             <div class="three_bottom">
-              <!-- <div @click="jump(item.courseId)">评课</div> -->
+              <div @click="jump(item.courseId)">评论</div>
               <div @click="get(item.courseId)">查看内容</div>
               <div @click="getA(item.courseId)">项目进展</div>
               <div @click="goToCourse(item.courseId)">
@@ -203,6 +203,7 @@ export default {
       userid: this.$route.query.userid,
       oid: this.$route.query.oid,
       org: this.$route.query.org,
+      role: this.$route.query.role,
       Juri: "",
       groupList: [],
       JuriList: [],
@@ -294,13 +295,18 @@ export default {
       //     "&userid=" +
       //     this.userid
       // );
-      window.parent.postMessage({ cid: cid, screenType: "2" }, "*");
+      window.parent.postMessage({ cid: cid, screenType: "2s" }, "*");
     },
-    get(cid){
+    get(cid) {
       window.parent.postMessage({ cid: cid, screenType: "3s" }, "*");
     },
-    getA(cid){
-      this.$router.push("/courseProgress?cid=" + cid)
+    getA(cid) {
+      this.$router.push("/courseProgress?cid=" + cid + "&userid=" +
+        this.userid +
+        "&oid=" +
+        this.oid +
+        "&org=" +
+        this.org)
     },
     handle_remove(file, fileList) {
       var _tmp = this.fileList;
@@ -377,11 +383,6 @@ export default {
       this.getCourse();
     },
     getCourse() {
-      if (!this.loading) {
-        this.loading = this.openLoading(
-          document.querySelector(".student_table")
-        );
-      }
       var typeE = [];
       var typea, typeb, typec, typed;
       if (this.isChoose == 1) {
@@ -410,7 +411,7 @@ export default {
       }
       this.isLoading = true;
       let params = {
-        type: this.groupA,
+        type: this.role == '1' ? '2' : this.groupA,
         uid: this.userid,
         oid: this.oid,
         typea: typea != undefined ? typea : "",
@@ -425,8 +426,6 @@ export default {
       this.ajax
         .get(this.$store.state.api + "selectStudentCourseNew2", params)
         .then((res) => {
-          this.loading.close();
-          this.loading = "";
           this.isLoading = false;
           this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
           this.course = res.data[0];
@@ -468,9 +467,6 @@ export default {
         type: "warning",
       })
         .then(() => {
-          const loading = this.openLoading(
-            document.querySelector(".student_table")
-          );
           this.isLoading = true;
           let params = {
             cid: cid,
@@ -478,7 +474,6 @@ export default {
           this.ajax
             .get(this.$store.state.api + "deleteCourse", params)
             .then((res) => {
-              loading.close();
               this.isLoading = false;
               this.$message.success("删除成功");
               this.getCourse();
@@ -1057,7 +1052,7 @@ export default {
 .more div {
   position: absolute;
   bottom: 0px;
-  transform: translate(-50%,100%);
+  transform: translate(-50%, 100%);
   background: #f5f4f4;
   padding: 10px 20px;
   z-index: 99;

+ 50 - 13
src/components/pages/student/addCourse.vue

@@ -115,7 +115,7 @@
   : steps == 2
     ? "第二步"
     : steps == 3
-      ? "第三步"
+      ? (cidttt === 0 ? "第三步" : "第二步")
       : ""
               }}
             </div>
@@ -221,12 +221,12 @@
                         添加班级
                       </div>
                     </div> -->
-                    <!-- <div style="flex: 0.5 1 0%; margin: 0" v-if="courseUserid != '' ? courseUserid == userid : true">
+                    <div style="flex: 0.5 1 0%; margin: 0" v-if="courseUserid != '' ? courseUserid == userid : true">
                       <div class="bInfo_title">协同编辑</div>
                       <div class="addPeople" @click="dialogVisibleMember = true" style="background: #6b92c9">
                         添加协同成员
                       </div>
-                    </div> -->
+                    </div>
                   </div>
                 </div>
               </div>
@@ -537,12 +537,19 @@
                             负责人
                           </div>
                           <div style="width:auto">
-                            <input type="text" placeholder="输入负责人" class="binfo_input" style="border-radius: 4px"
+                            <!-- <input type="text" placeholder="输入负责人" class="binfo_input" style="border-radius: 4px"
                               v-model="
                                 unitJson[unitIndex].chapterInfo[0].taskJson[
                                   itemTaskIndex
                                 ].people
-                              " />
+                              " /> -->
+                            <el-select v-model="unitJson[unitIndex].chapterInfo[0].taskJson[
+                              itemTaskIndex
+                            ].people" placeholder="请选择负责人" clearable filterable>
+                              <el-option v-for="item in ManAarray" :key="item.userid" :label="item.name"
+                                :value="item.userid">
+                              </el-option>
+                            </el-select>
                           </div>
                         </div>
                         <div class="remove" v-if="item.taskJson.length > 1" @click="deleteTask(itemTaskIndex)"
@@ -621,6 +628,11 @@
                           <div class="remove" @click="deleteTool(itemTaskIndex, toolIndex)"
                             v-if="itemTask.toolArray.length > 0" style="position: absolute; right: 55px"></div>
                         </div>
+                        <div>
+                          <textarea rows="3" type="text" placeholder="添加工具描述" class="binfo_input"
+                            style="margin: 20px 0 0;resize: none; width: 71.5% !important"
+                            v-model="itemTool.toolDetail"></textarea>
+                        </div>
                         <div style="margin-top:10px">
                           <div class="tool">
                             <div class="whiteBIcon" v-if="itemTool.tool == 1"
@@ -867,6 +879,7 @@
               <el-tooltip placement="top" :content="item.name ? item.name : '暂无姓名'">
                 <span>{{ item.name ? item.name : "暂无姓名" }}</span>
               </el-tooltip>
+              <span>{{ item.type == '1' ? '老师' : '学生' }}</span>
               <el-tooltip placement="top" :content="item.username">
                 <span>{{ item.username }}</span>
               </el-tooltip>
@@ -1652,6 +1665,7 @@ export default {
       ],
       studentJuri: [],
       teacherJuri: [],
+      teacherJuri2: [],
       checkboxList: [],
       checkboxList2: [],
       checkboxList3: [],
@@ -1684,7 +1698,8 @@ export default {
       selectSteps: 1,
       groupJson: {},
       dialogVisibleGroup: false,
-      fpath: ""
+      fpath: "",
+      ManAarray: [],
     };
   },
   computed: {
@@ -1895,6 +1910,7 @@ export default {
               this.updateWork();
             }
           }
+          this.setMan();
         }
         if (s == 1) {
           this.steps = 1;
@@ -1976,6 +1992,7 @@ export default {
               this.updateWork();
             }
           }
+          this.setMan();
         }
         if (s == 1) {
           this.steps = 1;
@@ -2067,6 +2084,7 @@ export default {
             this.$message.error("请将信息填写完整");
             return;
           }
+          this.setMan();
         } else if (this.steps == 3) {
           if (this.cid == "" || this.cid == undefined) {
             if (this.courseName == "") {
@@ -2115,6 +2133,7 @@ export default {
             this.$message.error("请将信息填写完整");
             return;
           }
+          this.setMan();
         } else if (this.steps == 2) {
           if (this.templateC.id != "" || this.templateC.id != undefined) {
             this.cTemplate = this.templateC.content;
@@ -2146,7 +2165,7 @@ export default {
               }
             }
           }
-        } 
+        }
         // else if (this.steps == 4) {
         //   if (this.userid != this.courseUserid) {
         //     this.updateWork2();
@@ -2928,18 +2947,21 @@ export default {
         cu: "",
         cn: this.searchTN,
       };
+
       this.ajax
         .get(
           this.$store.state.api +
           (this.org && this.org != "undefined" && this.org != "null"
-            ? "selectTeacherAddOrg"
-            : "selectTeacherAdd"),
+            ? "selectUserAddOrg"
+            : "selectUserAdd"),
           params
         )
         .then((res) => {
           let teacherJuri = res.data[0];
+          this.teacherJuri2 = JSON.parse(JSON.stringify(res.data[0]))
           for (var i = 0; i < teacherJuri.length; i++) {
             if (teacherJuri[i].userid == this.userid) {
+              this.ManAarray.push(teacherJuri[i])
               teacherJuri.splice(i, 1);
               break;
             }
@@ -2950,6 +2972,17 @@ export default {
           console.error(err);
         });
     },
+    setMan() {
+      let teacherJuri = this.teacherJuri2;
+      this.ManAarray = []
+      for (var i = 0; i < teacherJuri.length; i++) {
+        if (teacherJuri[i].userid == this.userid) {
+          this.ManAarray.push(teacherJuri[i])
+        } else if (this.checkboxList3.indexOf(teacherJuri[i].userid) != -1) {
+          this.ManAarray.push(teacherJuri[i])
+        }
+      }
+    },
     searchStudent() {
       this.getStudent();
     },
@@ -7066,16 +7099,20 @@ ol {
   text-overflow: ellipsis;
   white-space: nowrap;
 }
-
 .t_j_box span:nth-child(2) {
-  width: 30%;
+  min-width: 30px;
+  margin-right: 10px;
+}
+
+.t_j_box span:nth-child(3) {
+  width: 38%;
   overflow: hidden;
   text-overflow: ellipsis;
   margin-right: 10px;
 }
 
-.t_j_box span:nth-child(3) {
-  width: calc(55% - 20px);
+.t_j_box span:nth-child(4) {
+  width: calc(45% - 60px);
   overflow: hidden;
   text-overflow: ellipsis;
 }

+ 1002 - 0
src/components/pages/student/checkCourse.vue

@@ -0,0 +1,1002 @@
+<template>
+  <div class="pb_content" style="height: auto">
+    <div class="pb_head top">
+      <div>
+        <span>学生项目</span>
+        <span
+            @click="
+              goTo(
+                '/tcStudent?userid='+
+                  userid +
+                  '&oid=' +
+                  oid+'&org=' +
+                  org
+              )
+            "
+            >学生管理</span
+          >
+      </div>
+      <div class="student_button">
+        <!-- <el-button type="primary" class="bgColor" @click="goToCourse()">添加项目</el-button> -->
+      </div>
+    </div>
+    <div class="pb_content_body" style="height: 100%">
+      <div class="student_head">
+        <div class="choose">
+          <div class="all_choose" v-for="(item, index) in CourseType[0]" :key="index">
+            <span>{{ item.name }}</span>
+            <el-select v-model="courseTypeId[item.id]" placeholder="请选择" @change="getTypeName">
+              <el-option label="全部" value="1">全部</el-option>
+              <el-option v-for="item1 in CourseTypeJson[item.id]" :key="item1.id" :label="item1.name" :value="item1.id">
+              </el-option>
+            </el-select>
+          </div>
+          <div @click="clear" class="clear">重置</div>
+        </div>
+
+        <div class="student_right">
+          <div class="head_left">
+            <el-input v-model="courseName" class="student_input" placeholder="请输入项目名称"></el-input>
+            <el-button class="course_button" @click="searchCourse">查询</el-button>
+          </div>
+        </div>
+      </div>
+      <div class="student_table" v-loading="isLoading">
+        <div class="course_box">
+          <div class="out_box" v-for="(item, index) in course" :key="index">
+            <div class="myCourse" v-if="item.isCourseType == 1 && groupA == 0">
+              我的项目
+            </div>
+            <div class="myCourse" v-else-if="groupA == 1">
+              他人项目
+            </div>
+            <div class="xtCourse" v-else>协同项目</div>
+            <div class="tup">
+              <img :src="
+                item.cover != null && item.cover != ''
+                  ? JSON.parse(item.cover).length > 0
+                    ? JSON.parse(item.cover)[0].url
+                    : mr
+                  : mr
+              " alt />
+            </div>
+            <!-- <div class="bottom_box">
+              <div>{{ item.title }}</div>
+              <div class="kc_t" v-if="groupA == '1'">
+                创建老师:{{ item.uname }}
+              </div>
+              <div class="kc_time">{{ item.time }}</div>
+            </div> -->
+            <div class="bottom_box">
+              <div>{{ item.title }}</div>
+              <div class="kc_t">
+                负责人:{{ item.uname }}
+              </div>
+              <div class="kc_time">
+                <span style="color: #4b4b4b">创建日期:</span>{{ item.time }}
+              </div>
+              <div class="kc_time">
+                <span style="color: #4b4b4b">修改日期:</span>{{ item.utime }}
+              </div>
+            </div>
+            <div class="three_bottom">
+              <div @click="get(item.courseId)">查看内容</div>
+              <div @click="getA(item.courseId)">项目进展</div>
+            </div>
+          </div>
+          <div class="course_empty" v-if="course.length == 0">暂无数据</div>
+        </div>
+      </div>
+    </div>
+    <div class="student_page">
+      <el-pagination background layout="prev, pager, next" :page-size="10" :total="total" v-if="page && course.length"
+        style="padding-bottom: 20px" @current-change="handleCurrentChange"></el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+import "../../../common/aws-sdk-2.235.1.min";
+import EditorBar from "../../../components/tools/wangEnduit";
+import CourseProblem from "../components/courseProblem";
+export default {
+  components: { EditorBar, CourseProblem },
+  data() {
+    return {
+      itemCount: 1,
+      courseTitle: "",
+      courseText: "",
+      courseTime: "",
+      isLoading: false,
+      fileList: [],
+      fileList1: [],
+      homeworkList: [{ name: "" }],
+      formLabelWidth: "100px",
+      dialogVisible: false,
+      dialogVisible1: false,
+      dialogVisibleCourse: false,
+      dialogImageUrl: "",
+      group: "",
+      tuserid: this.$route.query.tuserid,
+      userid: this.$route.query.userid,
+      oid: this.$route.query.oid,
+      org: this.$route.query.org,
+      Juri: "",
+      groupList: [],
+      JuriList: [],
+      page: 1,
+      total: 0,
+      tableData: [],
+      now: "",
+      courseDetail: {},
+      addCourse: {},
+      groupA: "0",
+      classX: "",
+      course: [],
+      courseName: "",
+      mr: require("../../../assets/icon/kc1.png"),
+      CourseType: [],
+      CourseTypeJson: {},
+      courseTypeId: {},
+      courseTypeSon: [],
+      isChoose: 0,
+      problemCourse: null, //查看提问的项目
+      courseTeam: [],
+    };
+  },
+  methods: {
+    change(val) {
+      console.log(val);
+    },
+    time() {
+      if (!this.now) {
+        this.now = new Date().getTime();
+        return true;
+      } else {
+        let time = new Date().getTime();
+        if (time - this.now > 3000) {
+          this.now = time;
+          return true;
+        } else {
+          return false;
+        }
+      }
+    },
+    addHomeworkBox() {
+      this.homeworkList.push({ name: "" });
+      this.itemCount++;
+    },
+    reduceHomeworkBox() {
+      var a = this.homeworkList;
+      a.splice(a.length - 1);
+      this.itemCount--;
+    },
+    goTo(path) {
+      this.$router.push(path);
+    },
+    goToCourse(courseId) {
+      if (courseId) {
+        this.$router.push(
+          "/studentAddCourse?cid=" +
+          courseId +
+          "&userid=" +
+          this.userid +
+          "&oid=" +
+          this.oid +
+          "&org=" +
+          this.org
+        );
+      } else {
+        this.$router.push(
+          "/studentAddCourse?userid=" +
+          this.userid +
+          "&oid=" +
+          this.oid +
+          "&org=" +
+          this.org
+        );
+      }
+      // this.$router.push(path);
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if ((rowIndex + 1) % 2 === 0) {
+        return "even_row";
+      } else {
+        return "";
+      }
+    },
+    jump(cid) {
+      // window.open(
+      //   "//pbl.cocorobo.cn/pbl-student-table/dist/#/courseDetail?courseId=" +
+      //     cid +
+      //     "&userid=" +
+      //     this.userid
+      // );
+      window.parent.postMessage({ cid: cid, screenType: "2" }, "*");
+    },
+    get(cid) {
+      window.parent.postMessage({ cid: cid, screenType: "3s" }, "*");
+    },
+    getA(cid) {
+      this.$router.push("/courseProgress?cid=" + cid + "&userid=" +
+        this.tuserid +
+        "&oid=" +
+        this.oid +
+        "&org=" +
+        this.org)
+    },
+    handle_remove(file, fileList) {
+      var _tmp = this.fileList;
+      for (var i = 0, len = _tmp.length; i < len; i++) {
+        if (_tmp[i].uid == file.uid) {
+          _tmp.splice(i, 1);
+          break;
+        }
+        this.fileList = _tmp;
+      }
+    },
+    handle_remove1(file, fileList) {
+      var _tmp = this.fileList1;
+      for (var i = 0, len = _tmp.length; i < len; i++) {
+        if (_tmp[i].uid == file.uid) {
+          _tmp.splice(i, 1);
+          break;
+        }
+        this.fileList1 = _tmp;
+      }
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.page = val;
+      this.getCourse();
+    },
+    init() { },
+    handleClose(done) {
+      done();
+    },
+    handleRemove(file, fileList) {
+      console.log(file, fileList);
+    },
+    handlePictureCardPreview(file) {
+      this.dialogImageUrl = file.url;
+      this.dialogVisible1 = true;
+    },
+    onExceed() {
+      this.$message.error("项目海报仅支持上传一张,请删除后再进行上传");
+    },
+    //uuid生成
+    guid() {
+      return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
+        /[xy]/g,
+        function (c) {
+          var r = (Math.random() * 16) | 0,
+            v = c == "x" ? r : (r & 0x3) | 0x8;
+          return v.toString(16);
+        }
+      );
+    },
+    time() {
+      if (!this.now) {
+        this.now = new Date().getTime();
+        return true;
+      } else {
+        let time = new Date().getTime();
+        if (time - this.now > 3000) {
+          this.now = time;
+          return true;
+        } else {
+          return false;
+        }
+      }
+    },
+    searchCourse() {
+      this.page = 1;
+      this.getCourse();
+    },
+    clear() {
+      for (var i = 0; i < this.CourseType[0].length; i++) {
+        this.courseTypeId[this.CourseType[0][i].id] = "";
+      }
+      this.getCourse();
+    },
+    getCourse() {
+      var typeE = [];
+      var typea, typeb, typec, typed;
+      if (this.isChoose == 1) {
+        for (var i = 0; i < this.CourseType[0].length; i++) {
+          if (this.courseTypeId[this.CourseType[0][i].id] == "1") {
+            typeE.push(this.CourseType[0][i].id);
+          } else if (this.courseTypeId[this.CourseType[0][i].id] != "") {
+            if (this.CourseType[0][i].name == "年级") {
+              typea = this.courseTypeId[this.CourseType[0][i].id];
+            } else if (this.CourseType[0][i].name == "专栏") {
+              typeb = this.courseTypeId[this.CourseType[0][i].id];
+            } else if (this.CourseType[0][i].name == "栏目") {
+              typeb = this.courseTypeId[this.CourseType[0][i].id];
+            } else if (this.CourseType[0][i].name == "学院") {
+              typeb = this.courseTypeId[this.CourseType[0][i].id];
+            } else if (this.CourseType[0][i].name == "新技能") {
+              typec = this.courseTypeId[this.CourseType[0][i].id];
+            } else if (this.CourseType[0][i].name == "学科") {
+              typed = this.courseTypeId[this.CourseType[0][i].id];
+            }
+            this.courseTypeSon.push(
+              this.courseTypeId[this.CourseType[0][i].id]
+            );
+          }
+        }
+      }
+      this.isLoading = true;
+      let params = {
+        type: this.groupA,
+        uid: this.tuserid,
+        oid: this.oid,
+        typea: typea != undefined ? typea : "",
+        typeb: typeb != undefined ? typeb : "",
+        typec: typec != undefined ? typec : "",
+        typed: typed != undefined ? typed : "",
+        typeE: typeE.join(","),
+        cu: "",
+        cn: this.courseName,
+        page: this.page,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectStudentCourseNew2", params)
+        .then((res) => {
+          this.isLoading = false;
+          this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
+          this.course = res.data[0];
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    getTypeName() {
+      this.$forceUpdate();
+      this.page = 1;
+      this.isChoose = 1;
+      this.getCourse();
+    },
+    // searchCourse() {
+    //   this.isLoading = true;
+    //   let params = {
+    //     cu: "",
+    //     cn: this.courseName,
+    //     page: this.page,
+    //   };
+    //   this.ajax
+    //     .get(this.$store.state.api + "searchCourse", params)
+    //     .then((res) => {
+    //       this.isLoading = false;
+    //       this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
+    //       this.course = res.data[0];
+    //     })
+    //     .catch((err) => {
+    //       this.isLoading = false;
+    //       console.error(err);
+    //     });
+    // },
+    deleteCourse(cid) {
+      // if (this.time()) {
+      this.$confirm("确定删除此项目吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.isLoading = true;
+          let params = {
+            cid: cid,
+          };
+          this.ajax
+            .get(this.$store.state.api + "deleteStudentCourse", params)
+            .then((res) => {
+              this.isLoading = false;
+              this.$message.success("删除成功");
+              this.getCourse();
+            })
+            .catch((err) => {
+              console.error(err);
+            });
+        })
+        .catch(() => {
+          loading.close();
+          this.isLoading = false;
+          return;
+        });
+      // }
+    },
+    selectType() {
+      this.ajax
+        .get(this.$store.state.api + "selectType")
+        .then((res) => {
+          this.CourseType = res.data;
+          for (var i = 0; i < res.data[0].length; i++) {
+            if (!this.cid) {
+              this.courseTypeId[res.data[0][i].id] = "";
+            }
+            if (this.oid == "69893dca-1d47-11ed-8c78-005056b86db5") {
+              if (res.data[0][i].name == "栏目") {
+                this.CourseType[0][i].name = "主题";
+              }
+            }
+            for (var j = 0; j < res.data[1].length; j++) {
+              if (res.data[0][i].id == res.data[1][j].pid) {
+                if (!this.CourseTypeJson[res.data[0][i].id]) {
+                  this.CourseTypeJson[res.data[0][i].id] = [];
+                }
+                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]); //去除公共分类
+              }
+            }
+          }
+          this.selectTypeByOid();
+          this.selectTypeByOrg();
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    selectTypeByOid() {
+      let params = {
+        oid: this.oid,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectTypeByOid", params)
+        .then((res) => {
+          for (var i = 0; i < res.data[0].length; i++) {
+            for (var j = 0; j < res.data[1].length; j++) {
+              if (res.data[0][i].id == res.data[1][j].pid) {
+                if (!this.CourseTypeJson[res.data[0][i].id]) {
+                  this.CourseTypeJson[res.data[0][i].id] = [];
+                }
+                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
+              }
+            }
+          }
+          this.$forceUpdate();
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    selectTypeByOrg() {
+      let params = {
+        oid: this.org,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectTypeByOrg", params)
+        .then((res) => {
+          for (var i = 0; i < res.data[0].length; i++) {
+            for (var j = 0; j < res.data[1].length; j++) {
+              if (res.data[0][i].id == res.data[1][j].pid) {
+                if (!this.CourseTypeJson[res.data[0][i].id]) {
+                  this.CourseTypeJson[res.data[0][i].id] = [];
+                }
+                this.CourseTypeJson[res.data[0][i].id].push(res.data[1][j]);
+              }
+            }
+          }
+          this.$forceUpdate();
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    openCourse() {
+      this.dialogVisibleCourse = true;
+      this.getTeamCourse();
+    },
+    getTeamCourse() {
+      let params = {
+        uid: this.tuserid,
+        oid: this.oid,
+      };
+      this.ajax
+        .get(this.$store.state.api + "selectCourseTeam", params)
+        .then((res) => {
+          this.courseTeam = res.data[0];
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    },
+    search() {
+      this.page = 1;
+      this.getCourse();
+    },
+    checkProblem(res) {
+      this.problemCourse = res;
+      this.dialogVisible = true;
+    },
+    copyCourse(cid) {
+      let params = [{
+        cid: cid,
+        uid: this.userid
+      }]
+      this.ajax
+        .post(this.$store.state.api + "copyCourse", params)
+        .then((res) => {
+          this.page = 1
+          this.groupA = '0'
+          this.clear()
+        })
+        .catch((err) => {
+          console.error(err);
+        });
+    }
+  },
+  created() {
+    this.page = 1;
+    this.selectType();
+    this.getCourse();
+  },
+};
+</script>
+
+<style scoped>
+.pb_head div> span:nth-child(2) {
+  font-size: 16px;
+  cursor: pointer;
+  margin-left: 10px;
+  /* color: #ab582f; */
+  color: #409eff;
+}
+.dialog_diy>>>.el-dialog__header {
+  background: #3d67bc !important;
+  padding: 15px 20px;
+}
+
+.dialog_diy>>>.el-dialog__title {
+  color: #fff;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn {
+  top: 19px;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
+  color: #fff;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
+  color: #fff;
+}
+
+.student_head>>>.el-button--primary {
+  background-color: #2268bc;
+}
+
+.xls_button {
+  font-size: 14px;
+  cursor: pointer;
+  text-decoration: underline;
+  color: rgb(34, 104, 188);
+}
+
+.student_head {
+  display: flex;
+  justify-content: space-between;
+  align-items: baseline;
+  flex-direction: row;
+  flex-wrap: wrap;
+}
+
+.top {
+  display: flex;
+  justify-content: space-between;
+}
+
+.bgColor {
+  background: #466b99;
+}
+
+.student_search {
+  display: flex;
+  align-items: center;
+  width: calc(100% / 3);
+}
+
+.student_search span {
+  margin: 0 10px 0 0;
+  min-width: 65px;
+}
+
+.student_button {
+  display: flex;
+  overflow: hidden;
+  height: 40px;
+}
+
+.upload-demo {
+  display: flex;
+  flex-direction: column;
+  align-items: end;
+  /* position: relative; */
+  width: 100px;
+  overflow: hidden;
+}
+
+.student_table {
+  padding: 20px 0;
+  height: 100%;
+  /* overflow: auto; */
+  min-height: 360px;
+}
+
+.student_empty {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.el-table>>>.even_row {
+  background-color: #f1f1f1;
+}
+
+.time {
+  font-size: 13px;
+  color: #999;
+}
+
+.course_button {
+  padding: 10px 20px;
+}
+
+.course_button_box {
+  display: flex;
+  margin-top: 5px;
+  justify-content: space-between;
+}
+
+.course_rate {
+  margin-top: 5px;
+}
+
+.course_view {
+  display: flex;
+  align-items: center;
+  margin: 5px 0 0 0;
+}
+
+.course_view i {
+  background-image: url("../../../assets/liulan.png");
+  width: 25px;
+  height: 25px;
+  background-size: 100% 100%;
+  /* margin-top: 1px; */
+  line-height: 25px;
+  vertical-align: text-top;
+  background-repeat: no-repeat;
+}
+
+.image {
+  width: 100%;
+  height: 150px;
+  display: block;
+}
+
+.course_box {
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.student_page {
+  width: 95%;
+  margin: 0 auto;
+}
+
+.course_create_box {
+  font-size: 18px;
+}
+
+.course_name {
+  margin-top: 10px;
+}
+
+.course_name span {
+  margin-bottom: 10px;
+  display: block;
+}
+
+.homework_box {
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+}
+
+.course_homework {
+  width: 130px;
+  display: flex;
+  justify-content: center;
+  flex-direction: column;
+  align-items: center;
+  margin: 0 10px 10px 0;
+}
+
+.course_type {
+  margin-top: 10px;
+  display: flex;
+}
+
+.course_type1 span {
+  margin-bottom: 10px;
+  display: block;
+}
+
+.course_type2 {
+  margin-left: 20px;
+}
+
+.course_type2 span {
+  margin-bottom: 10px;
+  display: block;
+}
+
+.course_empty {
+  color: rgb(110, 110, 110);
+  width: 100%;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.el_cards>>>.el-card__body {
+  height: 100%;
+}
+
+.courseBtnBox {
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  height: calc(100% - 170px);
+  padding: 10px;
+}
+
+.wordUpload {
+  display: flex;
+}
+
+.wordUpload>.buttonUp {
+  margin-right: 5px;
+}
+
+.out_box {
+  display: flex;
+  flex-direction: column;
+  flex-wrap: nowrap;
+  width: 250px;
+  background: #fff;
+  margin-right: 25px;
+  border: 1px solid #ccc;
+  height: fit-content;
+  box-sizing: border-box;
+  border-radius: 0px 0px 5px 5px;
+  /* overflow: hidden; */
+  margin-bottom: 15px;
+  position: relative;
+}
+
+.bottom_box {
+  display: flex;
+  padding: 10px 0 10px 10px;
+  flex-direction: column;
+  box-sizing: border-box;
+  height: 121px;
+  flex-wrap: nowrap;
+  justify-content: space-evenly;
+}
+
+.bottom_box>div:nth-child(1) {
+  width: 230px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.tup {
+  width: 100%;
+  height: 141.06px;
+  margin: 0 auto;
+  overflow: hidden;
+  display: flex;
+  align-items: center;
+}
+
+.tup>img {
+  width: 100%;
+  height: 100%;
+  object-fit: contain;
+}
+
+.kc_time {
+  margin-top: 8px;
+  font-size: 14px;
+  color: #999;
+}
+
+.kc_t {
+  margin-top: 5px;
+}
+
+.three_bottom {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-around;
+  height: 40px;
+  align-items: center;
+  background: #f5f4f4;
+  font-size: 14px;
+}
+
+.three_bottom>div {
+  cursor: pointer;
+}
+
+.three_bottom>div:hover {
+  color: #79a2ff;
+}
+
+.head_left {
+  display: flex;
+}
+
+.student_input>>>.el-input__inner {
+  height: 40px;
+  width: 190px;
+  font-size: 13px;
+  padding: 0 10px;
+}
+
+.course_button {
+  color: #fff;
+  background: #2268bc;
+  width: 75px;
+  height: 40px;
+  padding: 0 !important;
+  font-size: 12px;
+  line-height: 40px;
+}
+
+.all_choose {
+  margin: 15px 0 10px;
+  height: 20%;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  width: calc(100% / 3 - 50px);
+}
+
+.all_choose>span {
+  width: 50px;
+  display: block;
+}
+
+.choose {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  align-content: space-between;
+  height: 100%;
+  justify-content: flex-start;
+  width: 60%;
+  min-width: 868px;
+  align-items: center;
+}
+
+.choose>div:nth-child(2) {
+  margin-left: 1%;
+  width: 32.33333%;
+}
+
+/* .choose>div:nth-child(4) {
+  margin-right: 1%;
+  width: 32.33333%;
+} */
+
+.choose>div:nth-child(5) {
+  margin: 5px 0 0 1%;
+}
+
+.choose>div:nth-child(4)>span {
+  width: 74px !important;
+  min-width: 74px;
+}
+
+.choose>div:nth-child(4)>>>.el-select {
+  width: 217.5px;
+  min-width: 215.06px;
+}
+
+.clear {
+  width: 70px;
+  height: 35px;
+  background: #2268bc;
+  color: #fff;
+  text-align: center;
+  border-radius: 5px;
+  line-height: 35px;
+  cursor: pointer;
+  margin-left: 20px;
+}
+
+.ct_box {
+  height: 500px;
+  overflow: auto;
+  display: flex;
+  flex-wrap: wrap;
+}
+
+.myCourse {
+  position: absolute;
+  background: #3c3c3c;
+  width: 70px;
+  height: 30px;
+  border-radius: 30px;
+  color: #fff;
+  font-size: 14px;
+  text-align: center;
+  line-height: 30px;
+  top: 5px;
+  left: 5px;
+}
+
+.xtCourse {
+  position: absolute;
+  background: #41a5f0;
+  width: 70px;
+  height: 30px;
+  border-radius: 30px;
+  color: #fff;
+  font-size: 14px;
+  text-align: center;
+  line-height: 30px;
+  top: 5px;
+  left: 5px;
+}
+
+.subClick {
+  font-size: 16px;
+  cursor: pointer;
+  margin-left: 10px;
+  /* color: #ab582f; */
+  color: #409eff;
+}
+
+.more {
+  position: relative;
+
+}
+
+.more:hover div {
+  display: block;
+  color: #000;
+}
+
+.more div {
+  position: absolute;
+  bottom: 0px;
+  transform: translate(-50%, 100%);
+  background: #f5f4f4;
+  padding: 10px 20px;
+  z-index: 99;
+  width: 40px;
+  border-radius: 5px;
+  box-shadow: 0 0 3px 3px #80808020;
+  display: none;
+}
+
+.more div>span+span {
+  margin-top: 10px;
+}
+
+.more div>span {
+  display: block;
+  width: 100%;
+  text-align: center;
+}
+
+.more div>span:hover {
+  color: #79a2ff;
+}
+</style>

+ 15 - 16
src/components/pages/student/course.vue

@@ -40,7 +40,7 @@
           </div>
         </div>
       </div>
-      <div class="student_table">
+      <div class="student_table" v-loading="isLoading">
         <div class="course_box">
           <div class="out_box" v-for="(item, index) in course" :key="index">
             <div class="myCourse" v-if="item.isCourseType == 1 && groupA == 0">
@@ -79,7 +79,7 @@
               </div>
             </div>
             <div class="three_bottom">
-              <!-- <div @click="jump(item.courseId)">评课</div> -->
+              <div @click="jump(item.courseId)">评论</div>
               <div @click="get(item.courseId)">查看内容</div>
               <div @click="getA(item.courseId)">项目进展</div>
               <div v-if="groupA == '0'" @click="goToCourse(item.courseId)">
@@ -152,7 +152,8 @@
             <div class="kc_time">{{ item.time }}</div>
           </div>
           <div class="three_bottom">
-            <div @click="jump(item.courseId)">查看内容</div>
+            <div @click="get(item.courseId)">查看内容</div>
+            <div @click="getA(item.courseId)">项目进展</div>
             <div @click="
               goTo(
                 '/studentAddCourse?cid=' +
@@ -294,13 +295,18 @@ export default {
       //     "&userid=" +
       //     this.userid
       // );
-      window.parent.postMessage({ cid: cid, screenType: "2" }, "*");
+      window.parent.postMessage({ cid: cid, screenType: "2s" }, "*");
     },
     get(cid) {
       window.parent.postMessage({ cid: cid, screenType: "3s" }, "*");
     },
     getA(cid) {
-      this.$router.push("/courseProgress?cid=" + cid)
+      this.$router.push("/courseProgress?cid=" + cid + "&userid=" +
+        this.userid +
+        "&oid=" +
+        this.oid +
+        "&org=" +
+        this.org)
     },
     handle_remove(file, fileList) {
       var _tmp = this.fileList;
@@ -377,11 +383,6 @@ export default {
       this.getCourse();
     },
     getCourse() {
-      if (!this.loading) {
-        this.loading = this.openLoading(
-          document.querySelector(".student_table")
-        );
-      }
       var typeE = [];
       var typea, typeb, typec, typed;
       if (this.isChoose == 1) {
@@ -425,8 +426,6 @@ export default {
       this.ajax
         .get(this.$store.state.api + "selectStudentCourseNew2", params)
         .then((res) => {
-          this.loading.close();
-          this.loading = "";
           this.isLoading = false;
           this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
           this.course = res.data[0];
@@ -468,9 +467,6 @@ export default {
         type: "warning",
       })
         .then(() => {
-          const loading = this.openLoading(
-            document.querySelector(".student_table")
-          );
           this.isLoading = true;
           let params = {
             cid: cid,
@@ -478,9 +474,12 @@ export default {
           this.ajax
             .get(this.$store.state.api + "deleteStudentCourse", params)
             .then((res) => {
-              loading.close();
               this.isLoading = false;
               this.$message.success("删除成功");
+                
+              if(this.tableData.length == 1 && this.page>1){
+                this.page--
+              }
               this.getCourse();
             })
             .catch((err) => {

+ 103 - 5
src/components/pages/student/courseProgress.vue

@@ -1,13 +1,14 @@
 <template>
     <div v-loading="loading" class="box">
         <el-button type="primary" size="small" class="returnBtn" @click="retrunA()">返回</el-button>
-        <div class="proMan">
+        <div v-if="cPan == 2" class="noneClass">项目数据不完善,无法显示数据,请前去完善</div>
+        <div class="proMan" v-if="cPan == 1">
             <div class="title"><img src="../../../assets/icon/task.png" alt />任务进展甘特图</div>
             <ganChart :Json="unitJson"></ganChart>
         </div>
-        <div class="proMan">
+        <div class="proMan" v-if="cPan == 1">
             <div class="title"><img src="../../../assets/icon/proMan.png" alt />负责人看板</div>
-            <proMan :Json="unitJson"></proMan>
+            <proMan :Json="unitJson" :ManAarray="ManAarray"></proMan>
         </div>
     </div>
 </template>
@@ -20,8 +21,15 @@ export default {
     data() {
         return {
             cid: this.$route.query.cid,
+            userid: this.$route.query.userid,
+            oid: this.$route.query.oid,
+            org: this.$route.query.org,
             loading: false,
             unitJson: {},
+            cPan: 1,
+            teacherJuri2: [],
+            ManAarray: [],
+            checkboxList3: []
         }
     },
     methods: {
@@ -35,17 +43,99 @@ export default {
             this.ajax
                 .get(this.$store.state.api + "select_student_course_detail", params)
                 .then((res) => {
-                    this.loading = false;
                     this.unitJson = JSON.parse(res.data[0][0].chapters);
+                    this.checkboxList3 = res.data[0][0].course_teacher
+                        ? res.data[0][0].course_teacher.split(",")
+                        : [];
+                    this.cPan = 1;
+                    for (var i = 0; i < this.unitJson.length; i++) {
+                        for (
+                            var j = 0;
+                            j < this.unitJson[i].chapterInfo[0].taskJson.length;
+                            j++
+                        ) {
+                            if (
+                                !this.unitJson[i].chapterInfo[0].taskJson[j].task
+                            ) {
+                                // this.$message.error("请填写任务名称");
+                                this.cPan = 2
+                                break;
+                            }
+                            if (
+                                !this.unitJson[i].chapterInfo[0].taskJson[j].people
+                            ) {
+                                // this.$message.error("请填写负责人");
+                                this.cPan = 2
+                                break;
+                            }
+                            if (
+                                !this.unitJson[i].chapterInfo[0].taskJson[j].time
+                            ) {
+                                // this.$message.error("请填写任务完成时间");
+                                this.cPan = 2
+                                break;
+                            }
+                            if (this.unitJson[i].chapterInfo[0].taskJson[j].eList) {
+                                this.unitJson[i].chapterInfo[0].taskJson[j].eList = this.unitJson[
+                                    i
+                                ].chapterInfo[0].taskJson[j].eList.filter((ele) => {
+                                    return ele.value != "";
+                                });
+                            }
+                        }
+                    }
+                    this.getTeacher();
                 })
                 .catch((err) => {
                     console.error(err);
                 });
-        }
+        },
+        getTeacher() {
+            let params = {
+                oid:
+                    this.org && this.org != "undefined" && this.org != "null"
+                        ? this.org
+                        : this.oid,
+                cu: "",
+                cn: "",
+            };
+
+            this.ajax
+                .get(
+                    this.$store.state.api +
+                    (this.org && this.org != "undefined" && this.org != "null"
+                        ? "selectUserAddOrg"
+                        : "selectUserAdd"),
+                    params
+                )
+                .then((res) => {
+                    this.teacherJuri2 = res.data[0]
+                    this.ManAarray  = res.data[0]
+                    this.setMan();
+                })
+                .catch((err) => {
+                    console.error(err);
+                });
+        },
+        setMan() {
+            // let teacherJuri = this.teacherJuri2;
+            // debugger
+            // this.ManAarray = []
+            // for (var i = 0; i < teacherJuri.length; i++) {
+            //     if (teacherJuri[i].userid == this.userid) {
+            //         this.ManAarray.push(teacherJuri[i])
+            //     } else if (this.checkboxList3.indexOf(teacherJuri[i].userid) != -1) {
+            //         this.ManAarray.push(teacherJuri[i])
+            //     }
+            // }
+            this.loading = false;
+
+        },
     },
     mounted() {
         this.loading = true;
         this.getCourse();
+
     },
 }
 </script>
@@ -57,6 +147,14 @@ export default {
     top: 15px;
 }
 
+.noneClass {
+    margin-top: 10px;
+    display: flex;
+    justify-content: center;
+    font-size: 20px;
+    font-weight: 700;
+}
+
 .box {
     background: #fff;
     height: 100%;

+ 599 - 0
src/components/pages/tencent/notice.vue

@@ -0,0 +1,599 @@
+<template>
+  <div class="pb_content" style="background: unset;height: 100%;" v-loading="loading">
+    <div class="pb_content_body" style="
+        background: #fff;
+        padding: 0px 25px;
+        box-sizing: border-box;
+        border-radius: 5px;
+      ">
+      <div class="pb_head">
+        <span>通知公告</span>
+        <div class="student_button">
+          <el-button type="primary" @click="dialogVisibleAdd = true" v-if="role == '1'">新建通知</el-button>
+        </div>
+      </div>
+
+    </div>
+    <div class="pb_content_body" style="height:calc(100% - 100px)">
+      <div class="noneBox" v-if="!tableData.length">
+        <img src="../../../assets/icon/isNoMessage.png" />
+      </div>
+      <div class="n_noticeBox" v-else>
+        <div class="left">
+          <div class="title">通知内容</div>
+          <div class="content">
+            <div class="noticeContent" v-for="(item, index) in tableData" :key="index"
+              @click="res = item, activeId = item.id" :class="{ active: item.id == activeId }">
+              <div class="n_title"><span>{{ item.title }}</span></div>
+              <div class="n_content">{{ snippet(item.content) }}</div>
+              <div class="n_time">{{ item.creatTime }}</div>
+            </div>
+          </div>
+        </div>
+        <div class="right">
+          <div class="title">通知详情</div>
+          <div class="content">
+            <img src="../../../assets/icon/notice/noticeBg.png" alt="">
+            <div class="r_n_content">
+              <div class="r_n_title">
+                <div class="r_title"><span>{{ res.title }}</span></div>
+                <div class="r_time"><span></span><span>{{ res.creatTime }}</span></div>
+              </div>
+              <div class="r_n_main">
+                <div class="notice_content cont" v-html="res.content"></div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <el-dialog title="添加全站通知" :visible.sync="dialogVisibleAdd" width="700px" :before-close="handleClose"
+      class="dialog_diy" center>
+      <div>
+        <div class="tian1">
+          <span>通知标题</span>
+          <el-input v-model="noticeTitle" style="width: 250px; margin: 15px 0px" placeholder="请输入通知标题"></el-input>
+        </div>
+        <div class="tian1">
+          <span>通知内容</span>
+          <editor-bar v-model="detail" @change="change"></editor-bar>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="addNotice">确认通知</el-button>
+        <el-button @click="dialogVisibleAdd = false">取 消</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import EditorBar from "../../../components/tools/wangEnduit";
+
+export default {
+  components: {
+    EditorBar,
+  },
+  data() {
+    return {
+      tableHeight: "500px",
+      page: 1,
+      total: 0,
+      loading: false,
+      formLabelWidth: "100px",
+      dialogVisible: false,
+      dialogVisibleAdd: false,
+      title: "",
+      tableData: [],
+      res: {},
+      userid: this.$route.query.userid,
+      oid: this.$route.query.oid,
+      org: this.$route.query.org,
+      role: this.$route.query.role,
+      noticeTitle: "",
+      detail: "",
+      now: "",
+      timer: null,
+      activeId: "",
+    };
+  },
+  mounted() {
+  },
+  beforeDestroy() {
+    if (this.timer) {
+      clearInterval(this.timer)
+      this.timer = null
+    }
+  },
+  beforeRouteLeave(to, from, next) {
+    if (this.timer) {
+      clearInterval(this.timer)
+      this.timer = null
+    }
+    next();
+  },
+  methods: {
+    tableRowClassName({ row, rowIndex }) {
+      if ((rowIndex + 1) % 2 === 0) {
+        return "even_row";
+      } else {
+        return "";
+      }
+    },
+    snippet(str) {
+      str = str.replace(/<\/?[^>]*>/g, ''); //去除HTML tag
+      str = str.replace(/[ | ]*\n/g, '\n'); //去除行尾空白
+      //str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行
+      str = str.replace(/&nbsp;/ig, '');//去掉&nbsp;
+      return str;
+      // return value.replace(/<[^>]*>/g, "");
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if ((rowIndex + 1) % 2 === 0) {
+        return "even_row";
+      } else {
+        return "";
+      }
+    },
+    handleCurrentChange(val) {
+      this.page = val;
+      this.getNews();
+    },
+    handleClose(done) {
+      done();
+    },
+    getNewDetail(id) {
+      this.dialogVisible = true;
+      let params = { nid: id };
+      this.ajax
+        .get(this.$store.state.api + "selectNewDetail", params)
+        .then((res) => {
+          this.dialogVisible = true;
+          this.res = res.data[0][0];
+        })
+        .catch((err) => {
+          this.loading = false;
+        });
+    },
+
+    getNews() {
+      this.loading = true;
+      let params = { uid: this.userid, oid: this.oid, org: this.org };
+      this.ajax
+        .get(this.$store.state.api + "selectNotice2", params)
+        .then((res) => {
+          this.loading = false;
+          this.tableData = res.data[0];
+          this.res = res.data[0][0];
+          this.activeId = res.data[0][0].id;
+
+          if (!this.timer) {
+            this.timer = setInterval(() => {
+              this.getNews2();
+            }, 5000);
+          }
+        })
+        .catch((err) => {
+          this.loading = false;
+        });
+    },
+    getNews2() {
+      let params = { uid: this.userid, oid: this.oid, org: this.org };
+      this.ajax
+        .get(this.$store.state.api + "selectNotice2", params)
+        .then((res) => {
+          this.tableData = res.data[0];
+        })
+        .catch((err) => {
+          this.loading = false;
+        });
+    },
+    change(val) {
+      console.log(val);
+    },
+    time() {
+      if (!this.now) {
+        this.now = new Date().getTime();
+        return true;
+      } else {
+        let time = new Date().getTime();
+        if (time - this.now > 3000) {
+          this.now = time;
+          return true;
+        } else {
+          return false;
+        }
+      }
+    },
+    //添加通知
+    addNotice() {
+      if (this.noticeTitle === "") {
+        this.$message.error("请输入文章标题");
+        return;
+      } else if (this.detail === "") {
+        this.$message.error("请输入文章内容");
+        return;
+      }
+      if (this.time()) {
+        let params = [
+          {
+            t: this.noticeTitle,
+            nc: this.detail.replace(/%/g, "%25"),
+            oid: this.oid,
+            org: this.org,
+          },
+        ];
+        this.ajax
+          .post(this.$store.state.api + "addNotice", params)
+          .then((res) => {
+            this.$message({
+              message: "添加成功",
+              type: "success",
+            });
+            this.noticeTitle = ""
+            this.detail = ""
+            this.getNews();
+            this.dialogVisibleAdd = false;
+          })
+          .catch((err) => {
+            this.$message.error("添加失败");
+            console.error(err);
+          });
+      }
+    },
+  },
+  created() {
+    this.getNews();
+  },
+};
+</script>
+
+<style scoped>
+.pb_head {
+  display: flex;
+  justify-content: space-between;
+}
+
+.student_head {
+  margin-bottom: 20px;
+}
+
+.student_search {
+  display: flex;
+}
+
+.student_search>div:nth-child(1) {
+  line-height: 35px;
+  font-size: 14px;
+}
+
+.student_search>>>.el-input__inner {
+  width: 190px;
+  height: 35px;
+  margin-left: 10px;
+}
+
+.student_table>>>.el-table--border td {
+  border-right: 0px !important;
+}
+
+.header-title {
+  display: flex;
+}
+
+.logoImg {
+  width: 30px;
+}
+
+.logoImg>img {
+  width: 100%;
+  height: 100%;
+}
+
+.title_add_student {
+  margin: 0 auto;
+  color: #fff;
+}
+
+.dialog_diy>>>.el-dialog__header {
+  background: #454545 !important;
+  padding: 15px 20px;
+}
+
+.dialog_diy>>>.el-dialog__title {
+  color: #fff;
+}
+
+.student_table>>>.el-table--border td {
+  border-right: 0px !important;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn {
+  top: 19px;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
+  color: #fff;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
+  color: #fff;
+}
+
+.notice_content {
+  width: 100%;
+  word-wrap: break-word;
+  word-break: break-all;
+  overflow: hidden;
+  font-size: 18px;
+  line-height: 35px;
+  text-indent: 35px;
+}
+
+.close {
+  width: 320px;
+  height: 30px;
+  line-height: 30px;
+  font-size: 14px;
+  background: #0e72e6;
+  padding: 0 !important;
+}
+
+/* table 样式 */
+.cont>>>table {
+  border-top: 1px solid #ccc;
+  border-left: 1px solid #ccc;
+}
+
+.cont>>>table td,
+.cont>>>table th {
+  border-bottom: 1px solid #ccc;
+  border-right: 1px solid #ccc;
+  padding: 3px 5px;
+}
+
+.cont>>>table th {
+  border-bottom: 2px solid #ccc;
+  text-align: center;
+}
+
+/* blockquote 样式 */
+.cont>>>blockquote {
+  display: block;
+  border-left: 8px solid #d0e5f2;
+  padding: 5px 10px;
+  margin: 10px 0;
+  line-height: 1.4;
+  font-size: 100%;
+  background-color: #f1f1f1;
+}
+
+/* code 样式 */
+.cont>>>code {
+  display: inline-block;
+  *display: inline;
+  *zoom: 1;
+  background-color: #f1f1f1;
+  border-radius: 3px;
+  padding: 3px 5px;
+  margin: 0 3px;
+}
+
+.cont>>>pre code {
+  display: block;
+}
+
+/* ul ol 样式 */
+.cont>>>ul,
+ol {
+  margin: 10px 0 10px 20px;
+}
+
+.el-table>>>.even_row {
+  background-color: #f1f1f1;
+}
+
+
+.student_page {
+  margin-top: 10px;
+}
+
+.pb_head {
+  margin: 0 !important;
+  width: 100% !important;
+}
+
+.student_table>>>.el-table,
+.student_table>>>.el-table__body-wrapper {
+  height: auto !important;
+}
+
+.noneBox {
+  height: 100%;
+  width: 100%;
+  background: rgb(242, 242, 242);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.noneBox img {
+  width: 400px;
+}
+
+.n_noticeBox {
+  height: 100%;
+  width: 100%;
+  display: flex;
+  justify-content: space-between;
+}
+
+.n_noticeBox .left {
+  width: 350px;
+  height: 100%;
+}
+
+.n_noticeBox .left .title {
+  background: rgb(241, 241, 241);
+  width: 100%;
+  font-weight: 700;
+  color: rgb(153, 148, 143);
+  text-align: center;
+  height: 40px;
+  line-height: 40px;
+  border-radius: 5px;
+}
+
+.n_noticeBox .left .content {
+  height: calc(100% - 50px);
+  margin-top: 10px;
+  background: #fff;
+  border-radius: 5px;
+  overflow: auto;
+}
+
+.n_noticeBox .right {
+  width: calc(100% - 370px);
+}
+
+.n_noticeBox .right .title {
+  background: rgb(241, 241, 241);
+  width: 100%;
+  font-weight: 700;
+  color: rgb(153, 148, 143);
+  text-align: center;
+  height: 40px;
+  line-height: 40px;
+  border-top-left-radius: 5px;
+  border-top-right-radius: 5px;
+}
+
+.n_noticeBox .right .content {
+  height: calc(100% - 40px);
+  background: #fff;
+  border-bottom-left-radius: 5px;
+  border-bottom-right-radius: 5px;
+  position: relative;
+}
+
+.n_noticeBox .right .content>img {
+  position: absolute;
+  right: 20px;
+  bottom: -30px;
+  max-width: 100%;
+}
+
+.active {
+  background: rgb(250, 250, 250) !important;
+}
+
+.noticeContent {
+  padding: 15px 20px;
+  cursor: pointer;
+}
+
+.noticeContent:hover {
+  background: rgb(250, 250, 250) !important;
+}
+
+.noticeContent:nth-child(even) {
+  background: rgb(247, 250, 255);
+}
+
+.n_title {
+  width: 100%;
+  display: flex;
+  align-items: center;
+}
+
+.n_title span {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  word-break: break-all;
+  white-space: nowrap;
+}
+
+.n_title::before {
+  content: '';
+  display: block;
+  background-image: url(../../../assets/icon/notice/doi.png);
+  min-width: 25px;
+  height: 25px;
+  background-size: 100% 100%;
+  margin-right: 5px;
+  margin-left: -5px;
+}
+
+.n_content {
+  font-size: 14px;
+  color: rgb(126, 126, 126);
+  margin-top: 5px;
+  line-height: 1.5;
+  text-overflow: -o-ellipsis-lastline;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  line-clamp: 2;
+  -webkit-box-orient: vertical;
+}
+
+.n_time {
+  font-size: 14px;
+  color: rgb(61, 61, 61);
+  margin-top: 5px;
+}
+
+.r_n_content {
+  padding: 20px;
+  height: 100%;
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.r_n_title {}
+
+.r_title {
+  font-size: 25px;
+  display: flex;
+  /* padding-bottom: 10px; */
+}
+
+.r_title::before {
+  content: '';
+  display: block;
+  background-image: url(../../../assets/icon/notice/notice.png);
+  min-width: 40px;
+  height: 40px;
+  background-size: 100% 100%;
+  margin-right: 5px;
+  margin-left: -5px;
+}
+
+.r_time {
+  display: flex;
+  font-size: 15px;
+  align-items: center;
+  color: rgb(61, 61, 61);
+}
+
+.r_time span:nth-child(1) {
+  height: 1px;
+  width: 100%;
+  background: #eee;
+}
+
+.r_time span:nth-child(2) {
+  min-width: fit-content;
+  margin: 0 30px;
+}
+
+.r_n_main {
+  height: calc(100% - 120px);
+  width: 100%;
+  overflow: auto;
+  margin-top: 20px;
+  padding: 0 20px;
+  box-sizing: border-box;
+}
+</style>

+ 167 - 192
src/components/pages/tencent/student.vue

@@ -1,43 +1,41 @@
 <template>
   <div class="pb_content" style="background: unset;height: 100%;overflow: auto;">
-    <div
-      class="pb_content_body"
-      style="
+    <div class="pb_content_body" style="
         background: #fff;
         padding: 0px 25px;
         box-sizing: border-box;
         margin: 10px auto 0;
         /* border-radius: 5px; */
-      "
-    >
+      ">
       <div class="pb_head">
         <span>我的学生列表</span>
+        <span
+            @click="
+              goTo(
+                '/works?userid='+
+                  userid +
+                  '&oid=' +
+                  oid+'&org=' +
+                  org+'&type=2'
+              )
+            "
+            >评价管理</span
+          >
       </div>
       <div class="student_head">
         <div class="head_left">
           <el-input v-model="sPhoneUser" class="student_input" placeholder="请输入用户名"></el-input>
-          <el-select v-model="cid" placeholder="请选择班级" class="student_input inputClass" @change="searchStudent">
+          <el-select v-model="cid" placeholder="请选择班级" class="student_input " @change="searchStudent">
             <el-option label="所有人" value=""></el-option>
-            <el-option
-              v-for="(item, index) in classJuri"
-              :key="index"
-              :label="item.name"
-              :value="item.id"
-            ></el-option>
+            <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
           <el-button class="student_button" @click="searchStudent">查询</el-button>
         </div>
         <div class="head_right">
           <el-button @click="addStudent">添加学生</el-button>
-          <el-upload
-            class="upload-demo newCss"
-            :http-request="handleChange"
-            :on-remove="handleRemove"
-            action="#"
-            :file-list="fileListUpload"
-            accept=".xlsx"
-          >
-            <el-button class="btnClassGM" size="primary" type="primary">批量添加</el-button>
+          <el-upload class="upload-demo newCss" :http-request="handleChange" :on-remove="handleRemove" action="#"
+            :file-list="fileListUpload" accept=".xlsx">
+            <el-button size="primary" type="primary">批量添加</el-button>
             <div slot="tip" class="el-upload__tip" style="margin-left:10px;">只能上传xlsx文件,且不超过500kb</div>
           </el-upload>
           <!-- <el-button @click="exportExcel">导出学生</el-button> -->
@@ -47,45 +45,32 @@
     </div>
     <div class="pb_content_body" style="margin:0 auto">
       <div class="student_table">
-        <el-table
-          ref="table"
-          :data="tableData"
-          border
-          :height="tableHeight"
-          :fit="true"
-          v-loading="isLoading"
-          style="width: 100%"
-          :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }"
-          :row-class-name="tableRowClassName"
-        >
+        <el-table ref="table" :data="tableData" border :height="tableHeight" :fit="true" v-loading="isLoading"
+          style="width: 100%" :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }"
+          :row-class-name="tableRowClassName">
           <el-table-column label="姓名" min-width="10" align="center">
             <template slot-scope="scope">
               <div class="userImg">
                 <div class="tx">
-                  <img
-                    :src="
-                      scope.row.headportrait != null
-                        ? scope.row.headportrait
-                        : tx
-                    "
-                    alt
-                  />
+                  <img :src="
+                    scope.row.headportrait != null
+                      ? scope.row.headportrait
+                      : tx
+                  " alt />
                 </div>
-                <div
-                  style="
+                <div style="
                     width: 150px;
                     text-align: left;
                     white-space: nowrap;
                     overflow: hidden;
                     text-overflow: ellipsis;
-                  "
-                >{{ scope.row.name }}</div>
+                  ">{{ scope.row.name }}</div>
               </div>
             </template>
           </el-table-column>
-            <el-table-column label="账号" min-width="15" align="center">
+          <el-table-column label="账号" min-width="15" align="center">
             <template slot-scope="scope">
-              <div>{{scope.row.un ? scope.row.un : "" }}</div>
+              <div>{{ scope.row.un ? scope.row.un : "" }}</div>
             </template>
           </el-table-column>
           <!-- <el-table-column label="电话" min-width="15" align="center">
@@ -101,69 +86,47 @@
             align="center"
           >
           </el-table-column>-->
-          <el-table-column
-            prop="classname2"
-            label="班级"
-            min-width="15"
-            align="center"
-          >
+          <el-table-column prop="classname2" label="班级" min-width="15" align="center">
           </el-table-column>
-          <el-table-column label="操作" width="220px">
+          <el-table-column label="操作" width="320px">
             <template slot-scope="scope">
-              <!-- <el-button
-                class="de_button"
-                type="primary"
-                size="small"
-                @click="deleteStudent(scope.row.userid, scope.row.state)"
-                >删除</el-button
-              >-->
-              <div class="delete" @click="deleteStudent(scope.row.userid, scope.row.state)">
-                <img src="../../../assets/remove.png" alt />
+              <div style="display:flex;align-items: center;">
+                <el-button type="primary" size="small"
+                  @click="checkCourse(scope.row.userid)">学生项目</el-button>
+                <div class="delete" @click="deleteStudent(scope.row.userid, scope.row.state)">
+                  <img src="../../../assets/remove.png" alt />
+                </div>
               </div>
             </template>
           </el-table-column>
         </el-table>
       </div>
       <div class="student_page">
-        <el-pagination
-          background
-          layout="prev, pager, next"
-          :page-size="10"
-          :total="total"
-          v-if="page"
-          @current-change="handleCurrentChange"
-        ></el-pagination>
+        <el-pagination background layout="prev, pager, next" :page-size="10" :total="total" v-if="page"
+          @current-change="handleCurrentChange"></el-pagination>
       </div>
     </div>
-    <el-dialog
-      :visible.sync="dialogVisible"
-      :append-to-body="true"
-      width="700px"
-      :before-close="handleClose"
-      class="add_student"
-    >
+    <el-dialog :visible.sync="dialogVisible" :append-to-body="true" width="700px" :before-close="handleClose"
+      class="add_student">
       <div slot="title" class="header-title">
-        <div class="logoImg">
-          <img src="../../../assets/logo.png" alt />
-        </div>
         <div class="title_add_student">添加学生</div>
       </div>
-      <el-form class="inputClass">
+      <el-form class="">
         <el-form-item label="学生名称" :label-width="formLabelWidth">
           <span>
             <el-input placeholder="请输入学生昵称" clearable v-model="sName" class="add_input"></el-input>
           </span>
         </el-form-item>
-        <el-form-item label="学生学号" :label-width="formLabelWidth">
+        <!-- <el-form-item label="学生学号" :label-width="formLabelWidth">
           <span>
             <el-input placeholder="请输入学生学号" clearable v-model="sId" class="add_input"></el-input>
           </span>
-        </el-form-item>
-        <el-form-item label="学生手机号" :label-width="formLabelWidth">
+        </el-form-item> -->
+        <!-- <el-form-item label="学生手机号" :label-width="formLabelWidth">
           <span>
             <el-input placeholder="请输入学生手机号" clearable v-model="sPhone" class="add_input"></el-input>
           </span>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="学生邮箱" :label-width="formLabelWidth">
           <span>
             <el-input placeholder="请输入学生邮箱" clearable v-model="sMail" class="add_input"></el-input>
@@ -174,12 +137,7 @@
         </el-form-item>
         <el-form-item label="班级" :label-width="formLabelWidth">
           <el-select v-model="sByClass" placeholder="请选择班级">
-            <el-option
-              v-for="(item, index) in classJuri"
-              :key="index"
-              :label="item.name"
-              :value="item.id"
-            ></el-option>
+            <el-option v-for="(item, index) in classJuri" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <div style="text-align: center; color: #adb3b7">注:添加学生的账号密码为123456</div>
@@ -242,6 +200,9 @@ export default {
     });
   },
   methods: {
+    goTo(path) {
+      this.$router.push(path);
+    },
     tableRowClassName({ row, rowIndex }) {
       if ((rowIndex + 1) % 2 === 0) {
         return "even_row";
@@ -253,6 +214,15 @@ export default {
       this.page = 1;
       this.getStudent();
     },
+    checkCourse(uid) {
+      this.$router.push('/studentCheckCourse?tuserid=' + uid +
+        "&userid=" +
+        this.userid +
+        "&oid=" +
+        this.oid +
+        "&org=" +
+        this.org)
+    },
     addStudent() {
       this.dialogVisible = true;
       (this.sName = ""), (this.sPhone = ""), (this.sByClass = "");
@@ -265,7 +235,8 @@ export default {
     getExcel(res) {
       require.ensure([], () => {
         const { export_json_to_excel } = require("../../../common/Export2Excel");
-        const tHeader = ["学号", "学生姓名", "学生邮箱", "学生手机号", "班级"];
+        // const tHeader = ["学号", "学生姓名", "学生邮箱", "学生手机号", "班级"];
+        const tHeader = ["学生姓名", "学生邮箱", "班级"];
         const data = [];
         export_json_to_excel(tHeader, data, "上传学生样例");
       });
@@ -294,9 +265,6 @@ export default {
       if (this.sName === "") {
         this.$message.error("学生昵称不能为空");
         return;
-      }  else if (this.sByClass === "") {
-        this.$message.error("请为学生选择班级");
-        return;
       } else if (this.sPhone != "" && !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.sPhone)) {
         this.$message.error("手机号格式不正确");
         return;
@@ -305,6 +273,9 @@ export default {
       ) {
         this.$message.error("邮箱格式不正确");
         return;
+      } else if (this.sByClass === "") {
+        this.$message.error("请为学生选择班级");
+        return;
       }
 
       // else if (this.sId === "") {
@@ -322,36 +293,36 @@ export default {
         //     if (res.data[0].length > 0) {
         //       this.$message.error("此学生手机号码已被注册");
         //     } else {
-              let params = { un: this.sMail };
-              this.ajax
-                .get(this.$store.state.api + "findMail", params)
-                .then((res) => {
-                  if (res.data[0].length > 0) {
-                    this.$message.error("此学生邮箱已被注册");
-                  } else {
-                    // let params = { un: this.sId };
-                    // this.ajax
-                    //   .get(this.$store.state.api + "findSid", params)
-                    //   .then((res) => {
-                        // if (res.data[0].length > 0) {
-                        //   this.$message.error("此学生学号已被注册");
-                        // } else {
-                          this.add_Student();
-                        // }
-                      // })
-                      // .catch((err) => {
-                      //   console.error(err);
-                      // });
-                  }
-                })
-                .catch((err) => {
-                  console.error(err);
-                });
-            // }
-          // })
-          // .catch((err) => {
-          //   console.error(err);
-          // });
+        let params = { un: this.sMail };
+        this.ajax
+          .get(this.$store.state.api + "findMail", params)
+          .then((res) => {
+            if (res.data[0].length > 0) {
+              this.$message.error("此学生邮箱已被注册");
+            } else {
+              // let params = { un: this.sId };
+              // this.ajax
+              //   .get(this.$store.state.api + "findSid", params)
+              //   .then((res) => {
+              // if (res.data[0].length > 0) {
+              //   this.$message.error("此学生学号已被注册");
+              // } else {
+              this.add_Student();
+              // }
+              // })
+              // .catch((err) => {
+              //   console.error(err);
+              // });
+            }
+          })
+          .catch((err) => {
+            console.error(err);
+          });
+        // }
+        // })
+        // .catch((err) => {
+        //   console.error(err);
+        // });
       }
     },
     add_Student() {
@@ -475,7 +446,7 @@ export default {
       if (this.fileTemp) {
         if (
           this.fileTemp.type ==
-            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
+          "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ||
           this.fileTemp.type == "application/vnd.ms-excel"
         ) {
           this.importCount = 1;
@@ -616,7 +587,7 @@ export default {
             } else if (item.sId === "") {
               _b = 1;
               _this.$message.error("学生学号不能为空,请重新上传");
-            }else if (item.mail === "") {
+            } else if (item.mail === "") {
               _b = 1;
               _this.$message.error("学生邮箱不能为空,请重新上传");
               break;
@@ -715,7 +686,7 @@ export default {
               console.error(err);
             });
         })
-        .catch(() => {});
+        .catch(() => { });
     },
   },
   created() {
@@ -729,69 +700,84 @@ export default {
 
 <style scoped>
 .pb_head > span:nth-child(2) {
+  font-size: 16px;
+  cursor: pointer;
+  margin-left: 10px;
+  /* color: #ab582f; */
+  color: #409eff;
+}
+/* .pb_head>span:nth-child(2) {
   font-size: 20px;
   margin-left: 5px;
   color: #828282;
-}
+} */
+
 .pb_head {
   margin: 0 !important;
   width: 100% !important;
 }
+
 .student_page {
   margin-top: 10px;
 }
+
 .student_head {
   margin-top: 10px;
   padding-bottom: 10px;
   display: flex;
   justify-content: space-between;
 }
+
 .head_left {
   display: flex;
   align-items: center;
 }
+
 .head_right {
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
   align-items: baseline;
 }
-.student_input >>> .el-input__inner {
+
+.student_input>>>.el-input__inner {
   height: 30px;
   width: 190px;
   font-size: 13px;
   padding: 0 10px;
 }
+
 .student_button {
   color: #fff;
-  background: #8681b7;
-  border-color: #8681b7;
+  background: #2268bc;
   width: 60px;
   height: 30px;
   padding: 0 !important;
   font-size: 12px;
   line-height: 30px;
 }
-.head_right > button:nth-child(1) {
+
+.head_right>button:nth-child(1) {
   color: #fff;
-  background: #8681b7;
-  border-color: #8681b7;
+  background: #2268bc;
   width: 70px;
   height: 30px;
   padding: 0 !important;
   font-size: 12px;
   line-height: 30px;
 }
-.head_right > button:nth-child(2) {
+
+.head_right>button:nth-child(2) {
   color: #fff;
-  background: #8681b7;
+  background: #2268bc;
   width: 70px;
   height: 30px;
   padding: 0 !important;
   font-size: 12px;
   line-height: 30px;
 }
-.head_right > div {
+
+.head_right>div {
   font-size: 12px;
   line-height: 40px;
   margin-left: 10px;
@@ -799,15 +785,20 @@ export default {
   text-decoration: underline;
   cursor: pointer;
 }
-.student_table >>> .el-table--border td {
+
+.student_table>>>.el-table--border td {
   border-right: 0px !important;
 }
-.student_table >>> .el-table,.student_table >>> .el-table__body-wrapper{
+
+.student_table>>>.el-table,
+.student_table>>>.el-table__body-wrapper {
   height: auto !important;
 }
-.el-table >>> .even_row {
+
+.el-table>>>.even_row {
   background-color: #f1f1f1 !important;
 }
+
 .de_button {
   color: #fff;
   background: #5190fd;
@@ -817,59 +808,74 @@ export default {
   font-size: 12px;
   line-height: 25px;
 }
-.add_student >>> .el-dialog__header {
-  padding: 20px 20px 10px;
+
+.add_student>>>.el-dialog__header {
+  padding: 20px 20px 20px;
   text-align: center;
   background: #454545;
 }
-.add_student >>> .el-dialog__title {
+
+.add_student>>>.el-dialog__title {
   font-size: 14px !important;
   color: #fff !important;
 }
-.add_student >>> .el-dialog__headerbtn {
+
+.add_student>>>.el-dialog__headerbtn {
   font-size: 20px !important;
 }
-.add_student >>> .el-form-item__label {
+
+.add_student>>>.el-form-item__label {
   margin-left: 65px;
 }
-.add_student >>> .el-form-item {
+
+.add_student>>>.el-form-item {
   display: flex;
 }
-.add_student >>> .el-form-item__content {
+
+.add_student>>>.el-form-item__content {
   margin: 0 !important;
 }
+
 .add_input {
   width: 365px;
 }
-.add_student >>> .el-dialog__footer {
+
+.add_student>>>.el-dialog__footer {
   text-align: center !important;
 }
+
 .right {
   width: 250px;
   color: #fff;
-  background: #8681b7;
+  background: #0e72e6;
   margin-bottom: 20px;
 }
+
 .header-title {
   display: flex;
 }
+
 .logoImg {
   width: 30px;
 }
-.logoImg > img {
+
+.logoImg>img {
   width: 100%;
   height: 100%;
 }
+
 .title_add_student {
   margin: 0 auto;
   color: #fff;
 }
+
 .upload-demo {
   line-height: 0px !important;
 }
-.upload-demo >>> .el-button {
+
+.upload-demo>>>.el-button {
   color: #fff;
-  background: #8681b7;
+  background: #2268bc;
   width: 70px;
   height: 30px;
   padding: 0 !important;
@@ -891,11 +897,13 @@ export default {
 
 .delete {
   width: 25px;
+  height: 25px;
   cursor: pointer;
+  margin-left: 10px;
 }
 
-.tx > img,
-.delete > img {
+.tx>img,
+.delete>img {
   width: 100%;
   height: 100%;
 }
@@ -907,48 +915,15 @@ export default {
   align-items: baseline;
 }
 
-
-.student_page
-  >>> .el-pagination.is-background
-  .el-pager
-  li:not(.disabled).active {
-  background-color: #5c549f;
-  color: #fff !important;
-}
-.student_page
-  >>> .el-pagination.is-background
-  .el-pager
-  li:not(.disabled):hover {
-  color: #5c549f;
-}
-
-
-
-.el-select-dropdown__item.selected {
-  color: #5c549f;
-}
-
-.inputClass.is-active >>> .el-input__inner,
-.inputClass  >>> .el-input__inner:focus {
-  border-color: #5c549f;
-}
-
-.inputClass >>> .el-select .el-input.is-focus .el-input__inner {
-  border-color: #5c549f;
-}
-.inputClass >>> .el-select .el-input__inner:focus {
-  border-color: #5c549f;
-}
-
-.student_input.el-input{
-  width: auto; 
+.student_input.el-input {
+  width: auto;
 }
 
-.student_input{
+.student_input {
   margin-right: 10px;
 }
 
-.student_input >>> .el-input__icon{
+.student_input>>>.el-input__icon {
   line-height: unset;
 }
 </style>

+ 15 - 0
src/components/pages/works.vue

@@ -33,6 +33,20 @@
           <span>评价管理</span>
           <!-- <span>备注:教师可以根据课程、班级条件筛选学生并查看该学生信息</span> -->
           <span
+            v-if="type == '2'"
+            @click="
+              goTo(
+                '/tcStudent?userid='+
+                  userid +
+                  '&oid=' +
+                  oid+'&org=' +
+                  org
+              )
+            "
+            >学生管理</span
+          >
+          <span
+            v-else
             @click="
               goTo(
                 '/course?userid='+
@@ -311,6 +325,7 @@ export default {
       userid: this.$route.query.userid,
       org: this.$route.query.org,
       oid: this.$route.query.oid,
+      type: this.$route.query.type,
       dialogVisible: false,
       dialogVisibleBao: false,
       dataJson: {},

+ 17 - 4
src/router/index.js

@@ -51,12 +51,14 @@ import teacherGM from '@/components/pages/GM/teacher'
 import examineGM from '@/components/pages/GM/examine'
 import noticeGM from '@/components/pages/GM/notice'
 import studentCourse from '@/components/pages/student/course'
+import studentCheckCourse from '@/components/pages/student/checkCourse'
 import studentAddCourse from '@/components/pages/student/addCourse'
 import courseProgress from '@/components/pages/student/courseProgress'
 import tcData from '@/components/pages/tencent/data'
 import tcSchool from '@/components/pages/tencent/school'
 import tcStudent from '@/components/pages/tencent/student'
 import tcTeacher from '@/components/pages/tencent/teacher'
+import tcNotice from '@/components/pages/tencent/notice'
 
 Vue.use(Router).use(ElementUI)
 
@@ -101,6 +103,13 @@ export default new Router({
                 requireAuth: '' // 是否需要判断是否登录,这里是需要判断
             }
         },
+        {
+            path: '/studentCheckCourse',
+            component: studentCheckCourse,
+            meta: {
+                requireAuth: '' // 是否需要判断是否登录,这里是需要判断
+            }
+        },
         {
             path: '/studentAddCourse',
             component: studentAddCourse,
@@ -487,9 +496,13 @@ export default new Router({
                 requireAuth: '' // 不需要鉴权
             }
         },
-        
-
-
-
+        {
+            path: '/tcNotice',
+            name: 'tcNotice',
+            component: tcNotice,
+            meta: {
+                requireAuth: '' // 不需要鉴权
+            }
+        },
     ]
 })

部分文件因为文件数量过多而无法显示