wuhongyu 5 years ago
parent
commit
dee10f66bd

+ 89 - 0
src/layout/class/jiaoshistuwork.vue

@@ -0,0 +1,89 @@
+<template>
+  <div id="stuleaveList">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="list" v-for="(item, index) in newclassList" :key="index">
+          <el-col :span="24" class="name">
+            <p>学生姓名:{{ item.name }}作业分:{{ item.socre }}</p>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+export default {
+  name: 'stuleaveList',
+  props: {
+    newclassList: null,
+    leaveInfo: null,
+    show: null,
+    headinfo: null,
+    teacherinfo: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    clickShows(id) {
+      this.$router.push({ path: '/class/stuDetail', query: { id } });
+    },
+    clicktea(id) {
+      console.log(id);
+
+      this.$router.push({ path: '/class/stuDetail', query: { id } });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.list {
+  margin: 10px 10px 0 10px;
+  background: #fff;
+  width: 95%;
+  padding: 10px;
+  border-radius: 10px;
+}
+.list .name {
+  padding: 5px 0;
+}
+.list .btn {
+  padding: 5px 0;
+  text-align: center;
+}
+.wrapper {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+.leaveInfo {
+  width: 90%;
+  background: #ffffff;
+  padding: 0 0 10px 0;
+  border-radius: 10px;
+}
+.info {
+  height: 450px;
+  overflow-y: auto;
+}
+.jilu {
+  text-align: center;
+  padding: 10px 0;
+}
+.leavelist {
+  padding: 10px 10px 0 10px;
+}
+.leavelist .date p {
+  padding: 0;
+}
+.leavelist .status {
+  padding: 10px 0;
+}
+</style>

+ 3 - 0
src/layout/class/teacherClassList.vue

@@ -11,6 +11,9 @@
             <el-link :underline="false" @click="$router.push({ path: '/class/teaclass', query: { id: item.id, headteacherid: item.headteacherid } })"
               >班级名单</el-link
             >
+            <el-link :underline="false" @click="$router.push({ path: '/class/teastuwork', query: { id: item.id, headteacherid: item.headteacherid } })"
+              >查看作业</el-link
+            >
           </el-col>
         </el-col>
       </el-col>

+ 54 - 0
src/layout/user/classpingfen.vue

@@ -0,0 +1,54 @@
+<template>
+  <div id="teaLeaveList">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="list" v-for="(item, index) in classList" :key="index">
+          <el-col :span="18" class="mess">
+            <p>班级:{{ item.name }}</p>
+            <p>班级人数:{{ item.number }}</p>
+          </el-col>
+          <el-col :span="6" class="btn">
+            <el-link :underline="false" @click="$router.push({ path: '/user/pingfenindex', query: { id: item.id } })">查看评分</el-link>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'teaLeaveList',
+  props: {
+    classList: null,
+  },
+  components: {},
+  data: () => ({
+    openCollapse: [],
+  }),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.list {
+  background: #fff;
+  margin: 10px;
+  width: 94%;
+  padding: 10px;
+  border-radius: 20px;
+}
+.list .mess p {
+  padding: 5px 0;
+}
+.list .btn {
+  padding: 20px 0;
+  text-align: center;
+}
+</style>

+ 2 - 2
src/layout/user/clickBtn.vue

@@ -15,8 +15,8 @@
           <van-cell is-link @click="$router.push({ path: '/user/homework' })">作业管理</van-cell>
         </el-col>
 
-        <el-col :span="24" class="native" v-if="this.user.type === '4'">
-          <van-cell is-link @click="$router.push({ path: '/user/pingfenindex' })">评分</van-cell>
+        <el-col :span="24" class="native">
+          <van-cell is-link @click="$router.push({ path: '/user/pingfenclass' })">评分</van-cell>
         </el-col>
         <el-col :span="24" class="native" v-if="this.user.type === '4'">
           <van-cell is-link @click="$router.push({ path: '/user/quit' })">退出</van-cell>

+ 15 - 0
src/router/index.js

@@ -78,6 +78,13 @@ const routes = [
     component: () => import('../views/class/stuDetail.vue'),
   },
 
+  //教师学生作业列表
+  {
+    path: '/class/teastuwork',
+    meta: { title: '学生作业列表', isleftarrow: true },
+    component: () => import('../views/class/teastuwork.vue'),
+  },
+
   // 问卷调查
   {
     path: '/question/index',
@@ -180,6 +187,14 @@ const routes = [
     meta: { title: '查看评分', isleftarrow: true },
     component: () => import('../views/user/pingfenindex.vue'),
   },
+
+  //个人信息查看评分
+  {
+    path: '/user/pingfenclass',
+    meta: { title: '班级列表', isleftarrow: true },
+    component: () => import('../views/user/pingfenclass.vue'),
+  },
+
   //个人信息-退出审请
   {
     path: '/user/quit',

+ 86 - 0
src/views/class/teastuwork.vue

@@ -0,0 +1,86 @@
+<template>
+  <div id="teaLeave">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="main">
+          <jiaoshistuwork :newclassList="newclassList" :teacherinfo="teacherinfo"></jiaoshistuwork>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import jiaoshistuwork from '@/layout/class/jiaoshistuwork.vue';
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapClass } = createNamespacedHelpers('classes');
+const { mapActions: mapStudent } = createNamespacedHelpers('student');
+const { mapActions: mapHeadteacher } = createNamespacedHelpers('director');
+
+export default {
+  name: 'leave',
+  props: {},
+  components: {
+    NavBar, //头部导航
+    jiaoshistuwork, //班主任学生请假列表
+  },
+  data: () => ({
+    newclassList: [],
+    isleftarrow: '',
+    title: '',
+    isleftarrow: '',
+    teacherinfo: {},
+
+    navShow: true,
+  }),
+  created() {
+    this.searchInfo();
+  },
+  computed: {
+    ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
+    headteacherid() {
+      return this.$route.query.headteacherid;
+    },
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  watch: {
+    $route(to, from) {
+      this.title = to.meta.title;
+      this.isleftarrow = to.meta.isleftarrow;
+    },
+  },
+  methods: {
+    ...mapClass({ classinfo: 'query', classFetch: 'fetch' }),
+    ...mapStudent({ stuQuery: 'query', stuFetch: 'fetch' }),
+    ...mapHeadteacher({ teaQuery: 'query', stuFetch: 'fetch' }),
+
+    async searchInfo({ ...info } = {}) {},
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.style {
+  width: 100%;
+  min-height: 667px;
+  position: relative;
+  background-color: #f9fafc;
+}
+.top {
+  height: 46px;
+  overflow: hidden;
+}
+.main {
+  min-height: 570px;
+}
+</style>

+ 76 - 0
src/views/user/pingfenclass.vue

@@ -0,0 +1,76 @@
+<template>
+  <div id="teaLeave">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="main">
+          <classpingfen :classList="classList"></classpingfen>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import classpingfen from '@/layout/user/classpingfen.vue';
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapClass } = createNamespacedHelpers('classes');
+const { mapActions: mapStudent } = createNamespacedHelpers('student');
+export default {
+  name: 'leave',
+  props: {},
+  components: {
+    NavBar, //头部导航
+    classpingfen, //班主任学生请假列表
+  },
+  data: () => ({
+    classList: [],
+    title: '',
+    isleftarrow: '',
+    navShow: true,
+  }),
+  created() {
+    this.searchInfo();
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  mounted() {
+    this.title = this.$route.meta.title;
+    this.isleftarrow = this.$route.meta.isleftarrow;
+  },
+  watch: {
+    $route(to, from) {
+      this.title = to.meta.title;
+      this.isleftarrow = to.meta.isleftarrow;
+    },
+  },
+  methods: {
+    ...mapClass({ classinfo: 'query' }),
+    ...mapStudent({ stuQuery: 'query', stuFetch: 'fetch' }),
+    async searchInfo({ ...info } = {}) {
+      const res = await this.classinfo({ ...info });
+      this.$set(this, `classList`, res.data);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.style {
+  width: 100%;
+  min-height: 667px;
+  position: relative;
+  background-color: #f9fafc;
+}
+.top {
+  height: 46px;
+  overflow: hidden;
+}
+.main {
+  min-height: 570px;
+}
+</style>

+ 15 - 17
src/views/user/pingfenindex.vue

@@ -49,6 +49,9 @@ export default {
   },
   computed: {
     ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
   },
   mounted() {
     this.title = this.$route.meta.title;
@@ -65,41 +68,36 @@ export default {
     ...group({ groupinfo: 'query', groupfetch: 'fetch' }),
     ...mapclass({ mapclass: 'query', classfetch: 'fetch' }),
     async searchInfo() {
-      const leaveList = await this.fetch(this.user.userid);
-      let classid = this.user.classid;
-      const res = await this.query({ classid });
-      let selfscore = res.data.map(i => i.selfscore);
+      let classid = this.id;
+      const acc = await this.query({ classid });
+      console.log(res);
+      var res = acc.data.filter(item => item.classid === classid);
+      let selfscore = res.map(i => i.selfscore);
       let nes = selfscore.filter(d => d);
+      console.log(nes);
       let num = eval(nes.join('+'));
-      leaveList.data.num = num;
-      console.log(leaveList.data);
-      this.$set(this, `leaveList`, leaveList.data);
-      const resq = await this.groupinfo();
-
+      console.log(num);
+      this.leaveList.num = num;
+      this.$set(this, `leaveList`, this.leaveList);
+      const resq = await this.groupinfo({ classid });
       for (const val of resq.data) {
         for (const acc of val.students) {
-          var ref = res.data.filter(item => item.id === acc.stuid);
+          var ref = res.filter(item => item.id === acc.stuid);
           for (const aaa of ref) {
             acc.stores = aaa.selfscore;
           }
-
           let asd = val.students.map(i => i.stores);
-          console.log(asd);
           let nes = asd.filter(d => d);
           let snewcore = eval(nes.join('+'));
-
           val.score = snewcore;
         }
       }
-      console.log(resq.data);
-
       this.$set(this, `groupList`, resq.data);
     },
-
     async clickShow(acc) {},
     // 跳转到请假
     onClickRight() {
-      this.$router.push({ path: '/user/socre' });
+      this.$router.push({ path: '/user/socre', query: { classid: this.id } });
     },
   },
 };

+ 1 - 2
src/views/user/socre.vue

@@ -67,12 +67,11 @@ export default {
   },
   methods: {
     ...mapStudent({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
-
     // 平时成绩学生名单查询+作业成绩学生名单查询
     async search() {
       let classid;
       if (this.user.type === '1') classid = this.classid;
-      else classid = this.user.classid;
+      else classid = this.classid;
       const res = await this.list({ classid });
       console.log(res.data);
       let name = res.data.map(i => i.name);