guhongwei 4 년 전
부모
커밋
12cf05e4cc
3개의 변경된 파일59개의 추가작업 그리고 161개의 파일을 삭제
  1. 4 0
      src/store/index.js
  2. 55 91
      src/views/league/index.vue
  3. 0 70
      src/views/league/leagueData.vue

+ 4 - 0
src/store/index.js

@@ -39,6 +39,8 @@ import answerapply from '@frame/store/answerapply';
 import chatroom from '@frame/store/chatroom';
 import answerchat from '@frame/store/answerchat';
 import trainvideo from '@frame/store/trainvideo';
+import personalscore from '@frame/store/personalscore';
+import groupscore from '@frame/store/groupscore';
 import * as ustate from '@frame/store/user/state';
 import * as umutations from '@frame/store/user/mutations';
 import * as dostate from '@frame/store/setting/state';
@@ -90,6 +92,8 @@ export default new Vuex.Store({
     chatroom,
     answerchat,
     trainvideo,
+    personalscore,
+    groupscore,
   },
   state: { ...ustate, ...dostate },
   mutations: { ...umutations, ...domutations },

+ 55 - 91
src/views/league/index.vue

@@ -17,15 +17,23 @@
         </el-form-item>
       </el-form>
       <el-col :span="24">
-        <leagueData :lessonList="lessonList" :list="list"></leagueData>
+        <leagueData
+          :lessonList="lessonList"
+          :groupList="groupList"
+          :list="list"
+          :getPScore="getPScore"
+          :homeworkList="homeworkList"
+          :groupscoreList="groupscoreList"
+        ></leagueData>
       </el-col>
     </list-frame>
   </div>
 </template>
 
 <script>
+var moment = require('moment');
 import _ from 'lodash';
-import leagueData from './leagueData.vue';
+import leagueData from '@frame/layout/leagueData.vue';
 import listFrame from '@frame/layout/admin/list-frame';
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: trainplan } = createNamespacedHelpers('trainplan');
@@ -34,6 +42,8 @@ const { mapActions: student } = createNamespacedHelpers('student');
 const { mapActions: lesson } = createNamespacedHelpers('lesson');
 const { mapActions: group } = createNamespacedHelpers('group');
 const { mapActions: uploadtask } = createNamespacedHelpers('uploadtask');
+const { mapActions: pscore } = createNamespacedHelpers('personalscore');
+const { mapActions: groupscore } = createNamespacedHelpers('groupscore');
 const { mapActions: util } = createNamespacedHelpers('util');
 export default {
   metaInfo: { title: '积分榜' },
@@ -53,78 +63,17 @@ export default {
       // 期
       termList: [],
       // 课表
-      lessonList: [
-        {
-          id: '1',
-          name: '测试1',
-        },
-        {
-          id: '2',
-          name: '测试2',
-        },
-        {
-          id: '3',
-          name: '测试3',
-        },
-        {
-          id: '4',
-          name: '测试4',
-        },
-      ],
+      lessonList: [],
+      // 组列表
+      groupList: [],
       // 学生名单
-      list: [
-        {
-          group: '1',
-          index: '1',
-          name: '测试1',
-          team: '10',
-          person: '10',
-          homework: '10',
-          team1: '10',
-          person1: '10',
-          homework1: '10',
-        },
-        {
-          group: '1',
-          index: '2',
-          name: '测试2',
-          team: '10',
-          person: '10',
-          homework: '10',
-        },
-        {
-          group: '1',
-          index: '3',
-          name: '测试3',
-          team: '10',
-          person: '10',
-          homework: '10',
-        },
-        {
-          group: '2',
-          index: '1',
-          name: '测试4',
-          team: '10',
-          person: '10',
-          homework: '10',
-        },
-        {
-          group: '2',
-          index: '2',
-          name: '测试5',
-          team: '10',
-          person: '10',
-          homework: '10',
-        },
-        {
-          group: '2',
-          index: '3',
-          name: '测试6',
-          team: '10',
-          person: '10',
-          homework: '10',
-        },
-      ],
+      list: [],
+      // 平时成绩
+      getPScore: [],
+      // 作业成绩
+      homeworkList: [],
+      // 团队分
+      groupscoreList: [],
     };
   },
   created() {
@@ -138,35 +87,45 @@ export default {
     ...lesson({ lessonQuery: 'query', lessonFetch: 'fetch' }),
     ...group({ groupQuery: 'query' }),
     ...uploadtask({ uploadtaskQuery: 'query' }),
+    ...pscore({ getPScoreList: 'query', pscoreOpera: 'opera' }),
+    ...groupscore({ groupscoreQuery: 'query' }),
     ...util({ modelFetch: 'fetch' }),
     async search() {
-      console.log(this.form);
       // 查询课表
       let classid = this.form.classid;
       let res = await this.modelFetch({ model: 'lesson', classid });
-      let lesson = _.uniqBy(
-        res.data.lessons.filter(item => item.subid != null),
-        'subid'
-      );
-      this.$set(this, `lessonList`, lesson);
-      // 查询学生
+      let r = res.data.lessons.filter(f => f.subid);
+      r = r.map(r => {
+        let time = r.time.split('-');
+        r.start = `${r.date} ${time[0]}`;
+        return r;
+      });
+      r = Object.values(_.groupBy(r, 'subid'));
+      r = r.map(a => {
+        let na = _.orderBy(a, ['start'], ['asc']);
+        return _.head(na);
+      });
+      this.$set(this, `lessonList`, r);
       res = await this.groupQuery({ classid });
+      this.$set(this, `groupList`, res.data);
       for (const val of res.data) {
         for (const student of val.students) {
-          // 组成绩
-          student.groupScore = val.score;
-          let studentInfo = await this.studentFetch(student.stuid);
-          // 平时成绩
-          student.selfscore = studentInfo.data.selfscore;
+          student.groupname = val.name;
+          student.groupid = val.id;
         }
       }
+      let arr = res.data.map(item => item.students);
+      arr = _.flattenDeep(arr);
+      this.$set(this, `list`, arr);
+      // 平时成绩
+      res = await this.getPScoreList({ classid: classid });
+      this.$set(this, `getPScore`, res.data);
       // 作业成绩
-      let homeWork = await this.uploadtaskQuery({ classid });
-      console.log(homeWork.data);
-      // console.log(res.data);
-      // let student = res.data.map(item => item.students);
-      // student = _.flattenDeep(student);
-      // console.log(student);
+      res = await this.uploadtaskQuery({ classid });
+      this.$set(this, `homeworkList`, res.data);
+      // 团队分
+      res = await this.groupscoreQuery({ classid });
+      this.$set(this, `groupscoreList`, res.data);
     },
     // 期
     async getPlan() {
@@ -183,6 +142,11 @@ export default {
       const res = await this.classesquery({ termid });
       this.$set(this, `classList`, res.data);
     },
+    // getX(data) {
+    //   let r = _.uniqBy(data, 'date').map(i => ({ date: i.date, subname: i.subname, subid: i.subid }));
+    //   r = r.sort((a, b) => moment(a).format('X') - moment(b).format('X'));
+    //   return r;
+    // },
   },
 
   watch: {

+ 0 - 70
src/views/league/leagueData.vue

@@ -1,70 +0,0 @@
-<template>
-  <div id="leagueData">
-    <el-row>
-      <el-col :span="24">
-        <el-table :data="list" border :span-method="objectSpanMethod">
-          <el-table-column label="小组" prop="group" align="center"> </el-table-column>
-          <!-- <el-table-column label="序号" prop="index" align="center"> </el-table-column> -->
-          <el-table-column label="姓名" prop="name" align="center"> </el-table-column>
-          <el-table-column v-for="info in lessonList" :prop="info.subid" :key="info.subid" :label="info.subname" align="center">
-            <template v-slot="{ row }">
-              {{ dirData(info.subid, row) }}
-            </template>
-            <el-table-column label="团队" prop="team" align="center"> </el-table-column>
-            <el-table-column label="个人" prop="person" align="center"> </el-table-column>
-            <el-table-column label="作业" prop="homework" align="center"> </el-table-column>
-          </el-table-column>
-          <el-table-column label="总分" prop="totalScore" align="center">
-            <template v-slot="{ row }">{{ calcTotal(row) }}</template>
-          </el-table-column>
-        </el-table>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import _ from 'lodash';
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'leagueData',
-  props: {
-    lessonList: { type: Array },
-    list: { type: Array },
-  },
-  components: {},
-  data: function() {
-    return {};
-  },
-  created() {},
-  computed: { ...mapState(['user', 'defaultOption']) },
-  methods: {
-    // 合并
-    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
-      let prop = _.get(column, 'property');
-      if (prop == 'group' || prop == 'team') {
-        let data = _.flatten(_.toPairs(_.groupBy(this.list, 'group'))).filter(_.isArray);
-        let num = data.find(i => i.every(e => e.group === row.group));
-        let head = _.head(num);
-        if (_.isEqual(head, row)) {
-          return {
-            rowspan: num.length,
-            colspan: 1,
-          };
-        } else {
-          return {
-            rowspan: 0,
-            colspan: 0,
-          };
-        }
-      }
-    },
-    // 计算总分
-    calcTotal(data) {
-      // console.log(data);
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped></style>