guhongwei 4 gadi atpakaļ
vecāks
revīzija
37912faad0
2 mainītis faili ar 177 papildinājumiem un 2 dzēšanām
  1. 50 2
      src/views/class/index.vue
  2. 127 0
      src/views/class/newClass/homework.vue

+ 50 - 2
src/views/class/index.vue

@@ -28,7 +28,16 @@
             <el-tab-pane label="平时成绩" name="third">
               <daily :data="studentList"></daily>
             </el-tab-pane>
-            <el-tab-pane label="作业成绩" name="forth"></el-tab-pane>
+            <el-tab-pane label="作业成绩" name="forth">
+              <homework
+                :homeworkList="homeworkList"
+                :homeworkLessonList="homeworkLessonList"
+                @onsist="onsist"
+                :homeworkForm="homeworkForm"
+                @homeworkBtn="homeworkBtn"
+                @homeworkOnsubmit="homeworkOnsubmit"
+              ></homework>
+            </el-tab-pane>
           </el-tabs>
         </el-col>
         <el-col :span="24" class="foot">
@@ -46,10 +55,14 @@ import footInfo from '@/layout/common/footInfo.vue';
 import classGroup from './newClass/classGroup.vue';
 import nameList from './newClass/nameList.vue';
 import daily from './newClass/daily.vue';
+// 作业成绩
+import homework from './newClass/homework.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: group } = createNamespacedHelpers('group');
 const { mapActions: student } = createNamespacedHelpers('student');
 const { mapActions: pscore } = createNamespacedHelpers('personalscore');
+const { mapActions: uploadtask } = createNamespacedHelpers('uploadtask');
+
 export default {
   metaInfo: { title: '班级名单' },
   name: 'index',
@@ -63,6 +76,8 @@ export default {
     nameList,
     // 日常分
     daily,
+    // 作业成绩
+    homework,
   },
   data: function() {
     return {
@@ -71,7 +86,7 @@ export default {
       navShow: true,
       // 班级信息
       // 头部标签
-      activeName: 'first',
+      activeName: 'forth',
       // 小组列表
       groupList: [],
       // 登陆者所在组,id
@@ -84,17 +99,24 @@ export default {
       studentList: [],
       // 平时分列表
       pscoreList: [],
+      // 作业成绩
+      homeworkList: [],
+      homeworkLessonList: [],
+      homeworkForm: {},
     };
   },
   async created() {
     await this.toGetStudentList();
     // 查看班级小组
     await this.findGroup();
+    // 查询学生作业成绩
+    await this.searchHomework();
   },
   methods: {
     ...pscore({ getPScoreList: 'query' }),
     ...group({ groupQuery: 'query', groupDelete: 'delete', groupCreate: 'create', groupUpdate: 'update', groupInsert: 'insert', groupExit: 'exit' }),
     ...student({ getStudentList: 'query', updateStudent: 'update' }),
+    ...uploadtask({ uploadtasklist: 'query', uploadtaskUpdate: 'update' }),
     // first 查学生
     async toGetStudentList() {
       const res = await this.getStudentList({ classid: this.user.classid });
@@ -211,6 +233,32 @@ export default {
       const { name } = tab;
       if (name === 'third') this.toGetPScoreList();
     },
+    // forth作业成绩
+    async searchHomework() {
+      let classid = this.user.classid;
+      const res = await this.uploadtasklist({ classid });
+      for (const val of res.data) {
+        var arr = this.studentList.filter(item => item.id === val.studentid);
+        this.$set(this, `homeworkList`, arr);
+      }
+    },
+    // 当前学生上传科目成绩
+    async onsist({ id }) {
+      const res = await this.uploadtasklist({ studentid: id });
+      if (res.errcode === 0) {
+        this.$set(this, `homeworkLessonList`, res.data);
+      }
+    },
+    // 打开上成绩
+    homeworkBtn({ data }) {
+      console.log(data);
+      this.$set(this, `homeworkForm`, data);
+    },
+    // 提交上成绩
+    async homeworkOnsubmit({ data }) {
+      let res = await this.uploadtaskUpdate(data);
+      this.searchHomework();
+    },
   },
   computed: {
     ...mapState(['user']),

+ 127 - 0
src/views/class/newClass/homework.vue

@@ -0,0 +1,127 @@
+<template>
+  <div id="homework">
+    <el-row>
+      <el-col :span="24" class="homework">
+        <van-collapse v-model="openCollapse">
+          <van-collapse-item :name="index" v-for="(item, index) in homeworkList" :key="index">
+            <div slot="title" class="title" @click="onsist(item.id)">
+              <span class="name">{{ item.name }}</span>
+            </div>
+            <van-row class="homeworkLessonList" v-for="(tag, index) in homeworkLessonList" :key="index">
+              <van-col span="18" class="info">
+                <p>课程名称:{{ tag.lessonname }}</p>
+                <p>作业分: {{ tag.score }}分</p>
+              </van-col>
+              <van-col span="6" class="btn">
+                <van-button v-if="user.job == '学委'" type="info" size="mini" @click="homeworkBtn(tag)">上成绩</van-button>
+              </van-col>
+            </van-row>
+          </van-collapse-item>
+        </van-collapse>
+      </el-col>
+    </el-row>
+    <van-dialog v-model="show" title="学生成绩上传" :showConfirmButton="false">
+      <van-form @submit="homeworkOnsubmit">
+        <van-field v-model="homeworkForm.lessonname" name="课程名称" label="课程名称" readonly />
+        <van-field v-model="homeworkForm.score" type="digit" name="作业分数" label="作业分数" placeholder="请输入作业分数" />
+        <div style="margin: 16px;">
+          <van-button round block type="info" native-type="submit">
+            提交
+          </van-button>
+        </div>
+      </van-form>
+    </van-dialog>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'homework',
+  props: {
+    homeworkList: { type: Array },
+    homeworkLessonList: { type: Array },
+    homeworkForm: { type: Object },
+  },
+  components: {},
+  data: function() {
+    return {
+      openCollapse: [],
+      show: false,
+    };
+  },
+  created() {},
+  methods: {
+    onsist(id) {
+      this.$emit('onsist', { id: id });
+    },
+    // 学生上成绩
+    homeworkBtn(data) {
+      this.show = true;
+      this.$emit('homeworkBtn', { data: data });
+    },
+    homeworkOnsubmit() {
+      this.$emit('homeworkOnsubmit', { data: this.homeworkForm });
+      this.show = false;
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.homework {
+  margin: 5px;
+  width: 97%;
+  padding: 0 10px;
+  border-radius: 15px;
+}
+.homework .title {
+  float: left;
+  width: 100%;
+}
+.homework .name {
+  float: left;
+  width: 80%;
+  font-size: 20px;
+}
+/deep/.van-cell {
+  border-top-left-radius: 10px;
+  border-top-right-radius: 10px;
+}
+/deep/.van-collapse-item__content {
+  border-bottom-left-radius: 10px;
+  border-bottom-right-radius: 10px;
+  padding: 5px 10px;
+}
+/deep/.van-collapse-item {
+  margin: 0 0 10px 0;
+}
+/deep/.el-collapse-item__content {
+  padding: 10px 0 10px 0;
+}
+.homeworkLessonList {
+  border-bottom: 1px dashed #ccc;
+  padding: 5px 0 0 0;
+  .info {
+    p {
+      font-size: 16px;
+    }
+  }
+  .btn {
+    text-align: right;
+  }
+}
+</style>