wuhongyu 5 år sedan
förälder
incheckning
9b291e2816

+ 0 - 1
src/layout/class/groupList.vue

@@ -149,7 +149,6 @@ export default {
 
     onConfirm(value, index) {
       console.log(value);
-
       this.value = value.stuname;
       console.log(this.value);
       this.showPicker = false;

+ 4 - 1
src/layout/user/clickBtn.vue

@@ -16,7 +16,7 @@
         </el-col>
 
         <el-col :span="24" class="native" v-if="this.user.type === '4'">
-          <van-cell is-link @click="$router.push({ path: '/user/socre' })">评分</van-cell>
+          <van-cell is-link @click="$router.push({ path: '/user/pingfenindex' })">评分</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>
@@ -24,6 +24,9 @@
         <el-col :span="24" class="native" v-if="this.user.type === '1'">
           <van-cell is-link @click="$router.push({ path: '/user/teaquit' })">退出</van-cell>
         </el-col>
+        <el-col :span="24" class="native" v-if="this.user.type === '1'">
+          <van-cell is-link @click="$router.push({ path: '/user/teacher' })">查看任课教师</van-cell>
+        </el-col>
       </el-col>
     </el-row>
   </div>

+ 74 - 44
src/layout/user/pingfen.vue

@@ -1,69 +1,99 @@
 <template>
-  <div id="peaceAchieve">
+  <div id="groupList">
     <el-row>
-      <el-col :span="24" class="info">
-        <el-form ref="form" :model="form" label-width="80px">
-          <el-form-item label="学生">
-            <el-select v-model="form.stuid" placeholder="请选择学生" style="width: 200px;">
-              <el-option v-for="item in stulist" :key="item.value" :label="item.name" :value="item.id"> </el-option>
-            </el-select>
-          </el-form-item>
-
-          <el-form-item label="课程">
-            <el-select v-model="form.lessonid" placeholder="请选择课程" style="width: 200px;">
-              <el-option v-for="item in lessonlists" :key="item.value" :label="item.name" :value="item.subid"> </el-option>
-            </el-select>
-          </el-form-item>
-
-          <el-form-item label="平时分数">
-            <el-input v-model="form.score" style="width: 200px;"></el-input>
-          </el-form-item>
-
-          <el-form-item label="评价" prop="desc">
-            <el-input type="textarea" v-model="form.remark" style="width: 200px;"></el-input>
-          </el-form-item>
-          <el-form-item>
-            <el-button type="primary" @click="onSubmit" style="text-align:center;">评分</el-button>
-          </el-form-item>
-        </el-form>
-      </el-col>
+      <van-form @submit="onSubmit">
+        <van-field readonly clickable name="picker" :value="value" label="学生" placeholder="点击选择学生" @click="showPicker = true" />
+        <van-field v-model="form.selfscore" name="分数" label="分数" placeholder="请输入分数" :rules="[{ required: true, message: '请输入分数' }]" />
+        <div style="margin:16px,16px,0,16px;text-align:center">
+          <van-button type="info">提交</van-button>
+        </div>
+      </van-form>
+      <van-popup v-model="showPicker" position="bottom">
+        <van-picker value-key="stuname" show-toolbar :columns="columns" @confirm="onConfirm" @cancel="showPicker = false" />
+      </van-popup>
     </el-row>
   </div>
 </template>
-
 <script>
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+import Vue from 'vue';
+import { Dialog } from 'vant';
+// 全局注册
+Vue.use(Dialog);
 export default {
-  name: 'peaceAchieve',
+  name: 'groupList',
   props: {
+    show: null,
+    groupList: null,
+    stuIdAndGroupId: null,
     form: null,
-    stulist: null,
-    lessonlists: null,
+    columns: null,
   },
   components: {},
   data: () => ({
-    username: '',
+    value: '',
+    column: ['杭州', '宁波', '温州', '嘉兴', '湖州'],
+    showPicker: false,
   }),
-  created() {},
-  computed: {},
+  created() {
+    console.log(this.user.job);
+  },
+  computed: {
+    ...mapState(['user']),
+    userid() {
+      return this.user.userid;
+    },
+  },
   methods: {
-    showBtn(id) {
-      this.$emit('showBtn', id);
+    openClick(item) {
+      this.$emit('opanSubmit', item);
     },
-    onConfirm(value) {
-      this.$emit('onConfirm', value);
+    onSubmit() {
+      this.$emit('onSubmit', { data: this.form });
     },
 
-    onSubmit(form) {
-      console.log(this.form);
-      this.form.lessonid;
-      this.$emit('onSubmit', this.form);
+    onConfirm(value, index) {
+      console.log(value);
+      this.value = value;
+      console.log(this.value);
+      this.showPicker = false;
+      this.$emit('onvalue', { value });
     },
+    save(item) {
+      console.log();
+
+      this.$emit('queren', item);
+    },
+    onConfirms(value) {},
   },
 };
 </script>
 
 <style lang="less" scoped>
-.info {
-  padding: 30px;
+p {
+  padding: 0;
+  margin: 0;
+}
+.list {
+  background: #fff;
+  margin: 0 5px 5px 5px;
+  width: 97%;
+  padding: 0 10px;
+  border-radius: 15px;
+}
+.list .groupName {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.childName {
+  padding: 15px 0;
+  font-size: 15px;
+}
+button {
+  width: 120%;
+}
+/deep/.van-dialog {
+  height: 400px;
 }
 </style>

+ 75 - 0
src/layout/user/pingfenList.vue

@@ -0,0 +1,75 @@
+<template>
+  <div id="checkList">
+    <el-row>
+      <van-col :span="24">
+        <van-collapse v-model="openCollapse" @change="onclick">
+          <!-- <van-collapse-item :name="index" v-for="(item, index) in checkWorkList" :key="index"> -->
+          <van-collapse-item :name="acc.id" v-for="(acc, index) in groupList" :key="index">
+            <div slot="title" class="title">
+              <span class="name">{{ acc.name }}</span>
+            </div>
+            <van-row class="attend" v-for="(item, index) in acc.students" :key="index">
+              <template>
+                <p>{{ item.stuname }}</p>
+              </template>
+            </van-row>
+          </van-collapse-item>
+        </van-collapse>
+      </van-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'checkList',
+  props: {
+    groupList: null,
+    stuList: null,
+  },
+  components: {},
+  data: () => ({
+    openCollapse: [],
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    onclick(acc) {
+      console.log(acc);
+      this.$emit('clickShow', acc);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.list {
+  background: #fff;
+  margin: 0 5px 5px 5px;
+  width: 97%;
+  padding: 0 10px;
+  border-radius: 15px;
+}
+.list .title {
+  float: left;
+  width: 100%;
+}
+.list .name {
+  float: left;
+  width: 80%;
+  font-size: 20px;
+}
+.attend {
+  border-bottom: 1px solid #f3f3f3;
+}
+.dateTime p {
+  padding: 2px 0;
+}
+.status {
+  padding: 12px 0;
+}
+</style>

+ 2 - 1
src/layout/user/socrecontext.vue

@@ -2,7 +2,7 @@
   <div id="achieve">
     <el-row>
       <el-col :span="24">
-        <pingfen v-on="$listeners" :form="form" :lessonlists="lessonlists" :stulist="stulist"></pingfen>
+        <pingfen v-on="$listeners" :columns="columns" :form="form" :lessonlists="lessonlists" :stulist="stulist"></pingfen>
       </el-col>
     </el-row>
   </div>
@@ -22,6 +22,7 @@ export default {
     form: null, //修改form
     stulist: null,
     lessonlists: null,
+    columns: null,
   },
   components: {
     pingfen, //评分

+ 89 - 0
src/layout/user/tea.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 stuleaveList" :key="index">
+          <el-col :span="18" class="name">
+            <p>{{ item.name }}</p>
+          </el-col>
+          <el-col :span="6" class="btn">
+            <el-link :underline="false" @click="clickShow(item.id)">教师信息</el-link>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'stuleaveList',
+  props: {
+    stuleaveList: null,
+    leaveInfo: null,
+    show: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    clickShow(id) {
+      this.$emit('clickShow', id);
+    },
+    clickDown() {
+      this.$emit('clickDown');
+    },
+  },
+};
+</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>

+ 15 - 2
src/router/index.js

@@ -154,12 +154,18 @@ const routes = [
     component: () => import('../views/user/chuanzuoye.vue'),
   },
 
-  //个人信息-查看评分
+  //个人信息增加评分
   {
     path: '/user/socre',
-    meta: { title: '查看评分', isleftarrow: true },
+    meta: { title: '增加评分', isleftarrow: true },
     component: () => import('../views/user/socre.vue'),
   },
+  //个人信息查看评分
+  {
+    path: '/user/pingfenindex',
+    meta: { title: '查看评分', isleftarrow: true },
+    component: () => import('../views/user/pingfenindex.vue'),
+  },
   //个人信息-退出审请
   {
     path: '/user/quit',
@@ -179,6 +185,13 @@ const routes = [
     meta: { title: '退出学生列表', isleftarrow: true },
     component: () => import('../views/user/stuquit.vue'),
   },
+
+  //个人信息-班主任查看任课教师
+  {
+    path: '/user/teacher',
+    meta: { title: '任课教师列表', isleftarrow: true },
+    component: () => import('../views/user/teacher.vue'),
+  },
   //学生退出申请
 
   {

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

@@ -231,6 +231,8 @@ export default {
     },
     opanSubmit(item) {
       this.form.groupid = item.id;
+      console.log(item);
+
       this.$set(this, 'columns', item.students);
       if (this.user.job === '班长') {
         if (item.status != '1') {

+ 126 - 0
src/views/user/pingfenindex.vue

@@ -0,0 +1,126 @@
+<template>
+  <div id="leave">
+    <el-row>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <!-- <topInfo></topInfo> -->
+          <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
+        </el-col>
+        <el-col :span="24" class="main">
+          <el-col :span="24" class="leaveBtn">
+            <van-button round type="info" icon="smile" @click="onClickRight()">添加分数</van-button>
+          </el-col>
+          <el-col :span="24" class="leaveList">
+            <pingfenList :groupList="groupList" :stuList="groupList" @clickShow="clickShow"></pingfenList>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topTitle.vue';
+import pingfenList from '@/layout/user/pingfenList.vue';
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapStudent } = createNamespacedHelpers('student');
+const { mapActions: group } = createNamespacedHelpers('group');
+const { mapActions: mapclass } = createNamespacedHelpers('classes');
+
+export default {
+  metaInfo: { title: '评分列表' },
+  name: 'leave',
+  props: {},
+  components: {
+    NavBar, //头部导航
+    pingfenList, //请假列表
+  },
+  data: () => ({
+    groupList: [],
+    stuList: [],
+    title: '',
+    isleftarrow: '',
+    transitionName: 'fade',
+    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: {
+    ...mapStudent(['fetch', 'query']),
+    ...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 nes = selfscore.filter(d => d);
+      let num = eval(nes.join('+'));
+      leaveList.data.num = num;
+      console.log(leaveList.data);
+      let resgroup = await this.groupinfo();
+      this.$set(this, `groupList`, resgroup.data);
+      for (const acc of resgroup.data) {
+        for (const stu of acc.students) {
+          console.log(stu);
+        }
+      }
+    },
+
+    async clickShow(acc) {
+      for (const id of acc) {
+        var result = this.groupList.filter(item => item.id === id);
+        const stu = await this.query();
+        for (const acc of result) {
+          for (const val of acc.students) {
+            var ref = stu.data.filter(item => item.id === val.stuid);
+            console.log(ref);
+            let sum = ref.map(i => i.selfscore);
+            if (sum.length == 0) {
+              let score = 0;
+            }
+          }
+        }
+      }
+    },
+    // 跳转到请假
+    onClickRight() {
+      this.$router.push({ path: '/user/socre' });
+    },
+  },
+};
+</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;
+}
+.main .leaveBtn {
+  text-align: center;
+  padding: 15px 0;
+}
+</style>

+ 24 - 59
src/views/user/socre.vue

@@ -7,7 +7,7 @@
           <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
         </el-col>
         <el-col :span="24" class="main">
-          <socrecontext :stulist="stulist" :form="form" @onSubmit="submit" :lessonlists="lessonlists"></socrecontext>
+          <socrecontext :stulist="stulist" :columns="columns" @onvalue="onvalue" :form="form" @onSubmit="submit" :lessonlists="lessonlists"></socrecontext>
         </el-col>
       </el-col>
     </el-row>
@@ -37,27 +37,13 @@ export default {
     achieveList: [],
     show: false,
     form: {},
-    lessons: [
-      {
-        day1: '测试科目1',
-        day2: '测试科目2',
-        day3: '测试科目3',
-        day4: '测试科目4',
-        subid1: '1',
-        subid2: '2',
-        subid3: '3',
-        subid4: '4',
-        teacherid1: '1234556',
-        teacherid2: '345456676',
-        teacherid3: '35456654',
-        teacherid4: '354563346',
-      },
-    ],
-
+    columns: [],
     title: '',
     isleftarrow: '',
     transitionName: 'fade',
     navShow: true,
+    info: {},
+
     // 修改
   }),
   created() {
@@ -81,57 +67,36 @@ export default {
   },
   methods: {
     ...mapStudent({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
-    ...mapScore({ scorelist: 'query', scorecreate: 'create' }),
-    ...maplesson({ lessonfetch: 'fetch', lessonlist: 'query' }),
+
     // 平时成绩学生名单查询+作业成绩学生名单查询
     async search() {
       let classid;
       if (this.user.type === '1') classid = this.classid;
       else classid = this.user.classid;
       const res = await this.list({ classid });
-      const score = await this.scorelist({ classid });
-      const lesson = await this.lessonlist({ classid });
-      for (const acc of this.lessons) {
-        console.log(acc);
-        let day1 = acc.day1;
-        let day2 = acc.day2;
-        let day3 = acc.day3;
-        let day4 = acc.day4;
-        let subid1 = acc.subid1;
-        let subid2 = acc.subid2;
-        let subid3 = acc.subid3;
-        let subid4 = acc.subid4;
-        let teacher1 = acc.teacherid1;
-        let teacher2 = acc.teacherid2;
-        let teacher3 = acc.teacherid3;
-        let teacher4 = acc.teacherid4;
-        let news = [
-          { name: day1, subid: subid1, teacherid: teacher1 },
-          { name: day2, subid: subid2, teacherid: teacher2 },
-          { name: day3, subid: subid3, teacherid: teacher3 },
-          { name: day4, subid: subid4, teacherid: teacher4 },
-        ];
-        this.lessonlists = news;
-        console.log(this.lessonlists);
-      }
-
-      console.log();
+      console.log(res.data);
+      let name = res.data.map(i => i.name);
+      console.log(name);
 
-      console.log(lesson.data);
-      this.$set(this, `stulist`, res.data);
+      this.$set(this, `columns`, name);
     },
-
-    async submit() {
-      console.log(this.lessonlists);
-      var result = this.lessonlists.filter(item => item.subid === this.form.lessonid);
-      for (const acc of result) {
-        console.log(acc.teacherid);
-        this.form.teacherid = acc.teacherid;
-        console.log(this.form);
+    async onvalue(value) {
+      let name = value.value;
+      const res = await this.list({ name });
+      for (const acc of res.data) {
+        this.$set(this, `info`, acc);
       }
+      console.log(res);
 
-      let data = this.form;
-      let res = await this.scorecreate(data);
+      this.form.id = value.value.id;
+    },
+    async submit() {
+      console.log(this.form);
+      this.info.selfscore = this.form.selfscore;
+      console.log(this.info);
+      let res = await this.updates(this.info);
+      this.$checkRes(res, '修改成功', '修改失败');
+      console.log(res);
     },
   },
 };

+ 13 - 2
src/views/user/stuLeave.vue

@@ -65,9 +65,20 @@ export default {
     // 查询学生列表
     async searchInfo({ ...info } = {}) {
       let classid = this.id;
+      const stus = await this.leaveinfo({ classid });
+      var acc = stus.data.filter(item => item.type === '0');
+      let ids = acc.map(i => {
+        i.ids = i.studentid;
+        return i.ids;
+      });
+      let newid = _.uniq(ids);
+      console.log(newid);
       const stu = await this.list({ classid });
-      console.log(stu);
-      this.$set(this, `stuleaveList`, stu.data);
+      for (const studentid of newid) {
+        var results = stu.data.filter(item => item.id === studentid);
+        console.log(results);
+        this.$set(this, `stuleaveList`, results);
+      }
     },
     async clickShow(id) {
       this.show = true;

+ 15 - 2
src/views/user/stuquit.vue

@@ -65,9 +65,22 @@ export default {
     // 查询学生列表
     async searchInfo({ ...info } = {}) {
       let classid = this.id;
+      const stus = await this.leaveinfo({ classid });
+      var acc = stus.data.filter(item => item.type === '1');
+      console.log(acc);
+
+      let ids = acc.map(i => {
+        i.ids = i.studentid;
+        return i.ids;
+      });
+      let newid = _.uniq(ids);
+      console.log(newid);
       const stu = await this.list({ classid });
-      console.log(stu);
-      this.$set(this, `stuleaveList`, stu.data);
+      for (const studentid of newid) {
+        var results = stu.data.filter(item => item.id === studentid);
+        console.log(results);
+        this.$set(this, `stuleaveList`, results);
+      }
     },
     async clickShow(id) {
       this.show = true;

+ 96 - 0
src/views/user/teacher.vue

@@ -0,0 +1,96 @@
+<template>
+  <div id="stuLeave">
+    <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">
+          <tea :stuleaveList="stuleaveList" @clickShow="clickShow" @clickDown="clickDown" :leaveInfo="leaveInfo" :show="show"></tea>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import tea from '@/layout/user/tea.vue';
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapClass } = createNamespacedHelpers('classes');
+const { mapActions: mapStudent } = createNamespacedHelpers('student');
+const { mapActions: mapLeave } = createNamespacedHelpers('leave');
+export default {
+  name: 'stuLeave',
+  props: {},
+  components: {
+    NavBar, //头部导航
+    tea, //学生請假列表
+  },
+  data: () => ({
+    stuleaveList: [],
+    leaveInfo: [
+      {
+        name: '你好',
+      },
+    ],
+    show: false,
+    title: '',
+    isleftarrow: '',
+    navShow: true,
+  }),
+  created() {
+    this.searchInfo();
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+    ...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', classFetch: 'fetch' }),
+    ...mapStudent({ list: 'query', add: 'create', fet: 'fetch', updates: 'update' }),
+    ...mapLeave({ leaveinfo: 'query', leaveFetch: 'fetch' }),
+    // 查询学生列表
+    async searchInfo({ ...info } = {}) {},
+    async clickShow(id) {
+      this.show = true;
+      const leaveList = await this.leaveinfo(id);
+      var result = leaveList.data.filter(item => item.studentid === id);
+      var acc = result.filter(item => item.type === '1');
+      console.log(acc);
+      this.$set(this, `leaveInfo`, acc);
+    },
+    clickDown() {
+      this.show = false;
+    },
+  },
+};
+</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>