wuhongyu vor 4 Jahren
Ursprung
Commit
3e788f5d24

+ 6 - 9
src/layout/class/achieveList/homeworkAchiece.vue

@@ -5,16 +5,16 @@
         <van-collapse v-model="openCollapse">
           <van-collapse-item :name="index" v-for="(item, index) in achieveList" :key="index">
             <div slot="title" class="title" @click="clickcds(item.id)">
-              <span class="name">{{ item.stuname }}</span>
+              <span class="name">{{ item.name }}</span>
             </div>
-            <van-row v-for="(tag, index) in item.lesson" :key="index">
+            <van-row v-for="(tag, index) in lesson" :key="index">
               <el-col :span="18">
-                <van-col :span="24" class="score"> 名称:{{ tag.name }} </van-col>
+                <van-col :span="24" class="score"> 名称:{{ tag.lessonname }} </van-col>
                 <van-col :span="24" class="score"> 作业分: {{ tag.score }}分</van-col>
               </el-col>
               <el-col :span="6" class="anniu">
                 <van-col :span="3" class="score">
-                  <van-button v-if="user.job == '学委' || user.type == '3'" type="primary" size="mini" @click="clickBtn(tag.taskid, tag.name, tag.score)"
+                  <van-button v-if="user.job == '学委' || user.type == '3'" type="primary" size="mini" @click="clickBtn(tag.id, tag.name, tag.score)"
                     >上成绩</van-button
                   >
                 </van-col>
@@ -74,11 +74,8 @@ export default {
       console.log(id);
       this.$emit('submitss', { id: id });
     },
-    clickBtn(taskid, name, score) {
-      console.log(taskid);
-      console.log(name);
-
-      this.$emit('clickDialog', { id: taskid, name: name, score: score });
+    clickBtn(id, name, score) {
+      this.$emit('clickDialog', { id: id, name: name, score: score });
     },
     onSubmit() {
       this.$emit('submit', { data: this.form });

+ 9 - 0
src/layout/class/classGroup.vue

@@ -75,4 +75,13 @@ export default {
   padding: 10px 20px 20px;
   text-align: center;
 }
+
+/deep/ .van-dialog {
+  position: fixed;
+  top: 70%;
+  left: 50%;
+  width: 373px;
+  overflow: hidden;
+  font-size: 16px;
+}
 </style>

+ 2 - 1
src/layout/class/classList.vue

@@ -4,7 +4,7 @@
       <el-col :span="24">
         <van-tabs v-model="active">
           <van-tab title="班级名单">
-            <stuNameList :stuNameList="stuNameList"></stuNameList>
+            <stuNameList :stuNameList="stuNameList" v-on="$listeners"></stuNameList>
           </van-tab>
           <van-tab title="班级分组">
             <classGroup
@@ -32,6 +32,7 @@ export default {
   name: 'classList',
   props: {
     stuNameList: null, //学生看班级学生名单
+    // newform: null, //班长任命班委会
     // 班級分組列表
     groupList: null,
     createGroupDialog: null, //创建分组显示dialog

+ 7 - 5
src/layout/class/groupList.vue

@@ -1,6 +1,9 @@
 <template>
   <div id="groupList">
     <el-row>
+      <el-col :span="24" class="top">
+        <van-button type="primary" v-if="this.user.job === '班长'" @click="affirm()">确认</van-button>
+      </el-col>
       <el-col :span="24" class="list" v-for="(item, index) in groupList" :key="index">
         <el-collapse accordion>
           <el-collapse-item>
@@ -32,7 +35,7 @@
                 </el-col>
                 <el-col :span="1"></el-col>
                 <el-col :span="6" v-if="user.job === '班长'">
-                  <el-button round type="danger" style="width:55px" plain size="mini" @click.native="save(item)">确认</el-button>
+                  <!-- <el-button round type="danger" style="width:55px" plain size="mini" @click.native="save(item)">确认</el-button> -->
                 </el-col>
               </el-col>
             </template>
@@ -100,6 +103,9 @@ export default {
     },
   },
   methods: {
+    affirm() {
+      this.$emit('affirm');
+    },
     // 进组
     joinGroup(groupId) {
       Dialog.confirm({
@@ -154,11 +160,7 @@ export default {
       this.showPicker = false;
       this.$emit('onvalue', { value });
     },
-    save(item) {
-      console.log();
 
-      this.$emit('queren', item);
-    },
     onConfirms(value) {},
   },
 };

+ 115 - 4
src/layout/class/nameList/stuNameList.vue

@@ -8,9 +8,11 @@
           </el-button>
         </el-col>
       </el-row>
+
+      <el-col :span="24" v-if="user.job == '班长'"> </el-col>
       <el-col :span="24" class="info">
         <el-col :span="12" class="list" v-for="(item, index) in stuNameList" :key="index">
-          <p class="name">{{ item.name }}</p>
+          <p class="name" @click="submitinfo(item)">{{ item.name }}</p>
           <p class="job" v-if="item.job">
             职务:{{ item.job }}<span v-if="item.job == '班长' || item.job == '学委'"><i class="el-icon-circle-check"></i></span>
           </p>
@@ -22,20 +24,122 @@
         </el-col>
       </el-col>
     </el-row>
+    <van-popup v-model="show" position="bottom">
+      <van-form @submit="onSubmit">
+        <van-field
+          v-model="newform.name"
+          disabled
+          name="学生名称"
+          label="学生名称"
+          placeholder="请输入学生名称"
+          :rules="[{ required: true, message: '请填写用户名' }]"
+        />
+
+        <van-field readonly clickable name="picker" :value="newform.job" label="选择器" placeholder="点击选择城市" @click="showPicker = true" />
+        <van-popup v-model="showPicker" position="bottom">
+          <van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="showPicker = false" />
+        </van-popup>
+        <van-field name="radio" label="选择优秀学生">
+          <template #input>
+            <van-radio-group v-model="newform.is_fine" direction="horizontal">
+              <van-radio name="0">否</van-radio>
+              <van-radio name="1">是</van-radio>
+            </van-radio-group>
+          </template>
+        </van-field>
+        <div style="margin: 16px;">
+          <van-button round block type="info" native-type="submit">
+            提交
+          </van-button>
+        </div>
+      </van-form>
+    </van-popup>
   </div>
 </template>
 
 <script>
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
 export default {
   name: 'stuNameList',
   props: {
     stuNameList: null,
   },
   components: {},
-  data: () => ({}),
+  data: () => ({
+    newform: {},
+    form: {},
+    show: false,
+    newshow: false,
+    value: '',
+    columns: [],
+    showPicker: false,
+    column1: ['文艺委员', '安全委员', '普通学生'],
+    column2: ['文艺委员', '普通学生'],
+    column3: ['安全委员', '普通学生'],
+    column4: ['普通学生'],
+  }),
   created() {},
-  computed: {},
-  methods: {},
+  computed: { ...mapState(['user']) },
+  methods: {
+    onSubmit(values) {
+      this.$emit('newsubmit', { data: this.newform });
+      this.show = false;
+    },
+
+    submitinfo(item) {
+      // this.value = item.job;
+      console.log(this.stuNameList);
+      var wenyi = this.stuNameList.filter(item => item.job == '文艺委员');
+      var anquan = this.stuNameList.filter(item => item.job == '安全委员');
+      console.log('ccc');
+      // this.value = item.job;
+      // this.columns = this.column1;
+      if (wenyi.length == '1') {
+        if (anquan.length == '0') {
+          if (item.job == '文艺委员') {
+            this.columns = this.column1;
+          } else {
+            console.log('2313');
+            this.columns = this.column3;
+          }
+        } else if (anquan.length == '1') {
+          console.log('c');
+
+          if (item.job == '普通学生') {
+            this.columns = this.column4;
+          } else if (item.job == '安全委员') {
+            this.columns = this.column3;
+          } else if (item.job == '文艺委员') {
+            this.columns = this.column2;
+          }
+        }
+      } else if (wenyi.length == '0') {
+        if (anquan.length == '0') {
+          console.log('cc3123');
+          this.columns = this.column1;
+        } else if (anquan.length == 1) {
+          if (item.job == '安全委员') {
+            this.columns = this.column1;
+          } else {
+            this.columns = this.column2;
+          }
+        }
+      }
+      this.show = true;
+      this.newform = item;
+    },
+
+    //设置优秀学员
+    goodstu(item) {
+      this.newshow = true;
+    },
+
+    onConfirm(job) {
+      this.$set(this.form, `job`, job);
+
+      this.showPicker = false;
+    },
+  },
 };
 </script>
 
@@ -57,4 +161,11 @@ p {
   color: #405ffe;
   padding: 5px 0 0 0;
 }
+
+/deep/.van-popup--bottom {
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 400px;
+}
 </style>

+ 1 - 0
src/layout/user/leaveRefuse.vue

@@ -14,6 +14,7 @@
             <p>开始时间</p>
             <p class="info">{{ refuseInfo.starttime }}</p>
           </el-col>
+
           <el-col :span="24" class="message">
             <p>結束时间</p>
             <p class="info">{{ refuseInfo.endtime }}</p>

+ 60 - 30
src/layout/user/leaveRequest.vue

@@ -2,25 +2,17 @@
   <div id="leaveRequest">
     <el-row>
       <el-col :span="24">
-        <el-form ref="form" :model="form" v-if="types == 0">
-          <el-form-item>
-            <span slot="label">
-              <i class="el-icon-date date"></i>
-              开始时间
-            </span>
-            <el-date-picker v-model="form.starttime" type="date" placeholder="选择开始日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd"> </el-date-picker>
-          </el-form-item>
-          <el-form-item>
-            <span slot="label">
-              <i class="el-icon-date endDate"></i>
-              结束时间
-            </span>
-            <el-date-picker v-model="form.endtime" type="date" placeholder="选择开始日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd"> </el-date-picker>
-          </el-form-item>
-          <el-form-item>
-            <span slot="label">请假事由</span>
-            <el-input type="textarea" v-model="form.reason" :rows="4" placeholder="请输入请假理由"></el-input>
-          </el-form-item>
+        <el-form ref="form" :model="form" v-if="types == '0'">
+          <van-cell title="开始时间" is-link :value="form.starttime" @click="birthdayPopup" />
+          <van-popup v-model="birthdayShow" position="bottom">
+            <van-datetime-picker @confirm="birthdayPicker" type="datetime" title="选择完整时间" :min-date="minDate" :max-date="maxDate" />
+          </van-popup>
+          <van-cell title="结束时间" is-link :value="form.endtime" @click="birthdayPopups" />
+          <van-popup v-model="endbirthdayshow" position="bottom">
+            <van-datetime-picker @confirm="birthdayPickers" type="datetime" title="选择完整时间" :min-date="minDate" :max-date="maxDate" />
+          </van-popup>
+          <van-field v-model="form.reason" rows="1" autosize label="请假理由" type="textarea" placeholder="请输入请假理由" />
+
           <el-form-item>
             <el-button type="primary" @click="onSubmit">提交</el-button>
             <el-button @click="cancelClick()">取消</el-button>
@@ -28,17 +20,15 @@
         </el-form>
 
         <el-form ref="form" :model="form" v-if="types == '1'">
-          <el-form-item>
-            <span slot="label">
-              <i class="el-icon-date date"></i>
-              退出时间
-            </span>
-            <el-date-picker v-model="form.starttime" type="date" placeholder="选择开始日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd"> </el-date-picker>
-          </el-form-item>
-          <el-form-item>
-            <span slot="label">退出事由</span>
-            <el-input type="textarea" v-model="form.reason" :rows="4" placeholder="请输入退出事由"></el-input>
-          </el-form-item>
+          <van-cell title="开始时间" is-link :value="form.starttime" @click="birthdayPopup" />
+          <van-popup v-model="birthdayShow" position="bottom">
+            <van-datetime-picker @confirm="birthdayPicker" type="datetime" title="选择完整时间" :min-date="minDate" :max-date="maxDate" />
+          </van-popup>
+          <!-- <van-cell title="结束时间" is-link :value="form.endtime" @click="birthdayPopups" />
+          <van-popup v-model="endbirthdayshow" position="bottom">
+            <van-datetime-picker @confirm="birthdayPickers" type="datetime" title="选择完整时间" :min-date="minDate" :max-date="maxDate" />
+          </van-popup> -->
+          <van-field v-model="form.reason" rows="1" autosize label="退出理由" type="textarea" placeholder="请输入退出理由" />
           <el-form-item>
             <el-button type="primary" @click="onSubmits">提交</el-button>
             <el-button @click="cancelClick()">取消</el-button>
@@ -58,11 +48,51 @@ export default {
   },
   components: {},
   data: () => ({
+    starttime: '',
+    minDate: new Date(2020, 0, 1),
+    maxDate: new Date(2025, 10, 1),
+    currentDate: new Date(),
+    birthdayShow: false,
+    endbirthdayshow: false,
     date: require('@/assets/date.png'),
   }),
   created() {},
   computed: {},
   methods: {
+    // 出生日期
+    birthdayPopup() {
+      this.birthdayShow = true;
+    },
+
+    birthdayPopups() {
+      this.endbirthdayshow = true;
+    },
+    // 确认选择之后的时间
+    birthdayPicker(val) {
+      let year = val.getFullYear();
+      let month = val.getMonth() + 1;
+      let day = val.getDate();
+      let Hours = val.getHours();
+      let getMinutes = val.getMinutes();
+      console.log(Hours);
+
+      let starttime = `${year}-${month}-${day}-${Hours}-${getMinutes}`;
+
+      this.$set(this.form, `starttime`, starttime);
+      this.birthdayShow = false;
+    },
+    birthdayPickers(val) {
+      let year = val.getFullYear();
+      let month = val.getMonth() + 1;
+      let day = val.getDate();
+      let Hours = val.getHours();
+      let getMinutes = val.getMinutes();
+      console.log(Hours);
+      let endtime = `${year}-${month}-${day}-${Hours}-${getMinutes}`;
+      this.$set(this.form, `endtime`, endtime);
+      this.endbirthdayshow = false;
+    },
+
     onSubmit() {
       this.$emit('submit', { data: this.form });
     },

+ 13 - 58
src/views/class/achieve.vue

@@ -70,7 +70,7 @@ export default {
     taskid: '',
     subname: '',
     task: [],
-
+    homework: [],
     groupsocre: '',
   }),
   created() {
@@ -111,62 +111,11 @@ export default {
       let classsid = this.user.classid;
       const result = await this.uploadtasklist({ classsid });
 
-      for (const accc of res.data) {
-        var arr = result.data.filter(item => item.studentid === accc.id);
+      for (const accc of result.data) {
+        var arr = res.data.filter(item => item.id === accc.studentid);
+        console.log(arr);
+        this.$set(this, `achieveList`, arr);
       }
-
-      // let lessons = [];
-      let lessone = [];
-      let stus = [];
-      for (const val of result.data) {
-        let newsid = val.lessonid;
-
-        let classid = this.user.classid;
-        //查询这个班的课程
-        const lessonInfo = await this.lessonlist({ classid });
-
-        for (const hic of lessonInfo.data) {
-          //过滤出有作业的科目
-
-          var fff = hic.lessons.filter(item => item.subid === newsid);
-
-          for (const less of fff) {
-            console.log(less.subname);
-
-            this.$set(this, `subname`, less.subname);
-          }
-        }
-        val.subName = this.subname;
-        const stuInfo = await this.fet(val.studentid);
-        if (stuInfo.data.name) {
-          val.stuName = stuInfo.data.name;
-          //创建学生名字相关数组
-          let stu = [{ stuname: stuInfo.data.name, id: val.studentid, lesson: [] }];
-          //合并数组
-
-          stus = [...stu, ...stus];
-
-          //去掉重复数组对象
-          var appArray = _.uniqBy(stus, _.isEqual);
-
-          //合并数组
-          this.$set(this, `achieveList`, appArray);
-          let lessonss = [{ name: this.subname, id: val.studentid, taskid: val.id, score: val.score }];
-          lessone = [...lessonss, ...lessone];
-        }
-
-        for (const ss of appArray) {
-          var vre = lessone.filter(item => item.id === ss.id);
-
-          ss.lesson = vre;
-        }
-        // for (const eee of appArray) {
-        //   eee.less = lessone;
-        //   var qq = eee.less.filter(item => item.id === eee.id);
-
-        // }
-      }
-      this.$set(this, `task`, appArray);
     },
     // 学委上作业分+存储学生id
     clickAchieve({ id }) {
@@ -266,11 +215,15 @@ export default {
     },
     //为了获取当前点击学生id和当前学生上传的作业
     async onsist({ id }) {
-      var arr = this.task.filter(item => item.id === id);
+      console.log(this.homework);
+      const result = await this.uploadtasklist({ studentid: id });
+      console.log(result.data);
 
-      this.$set(this, `lesson`, arr);
+      this.$set(this, `lesson`, result.data);
     },
     async opensave({ id, name, score }) {
+      console.log(id);
+
       this.show = true;
       this.$set(this, `names`, name);
       this.$set(this.form, `score`, score);
@@ -278,6 +231,8 @@ export default {
     },
     async onsave(form) {
       this.form.id = this.taskid;
+      console.log(this.form);
+
       let res = await this.uploadtaskupdate(this.form);
       this.show = false;
     },

+ 24 - 3
src/views/class/index.vue

@@ -16,6 +16,7 @@
           <span v-else>
             <classList
               :stuNameList="stuNameList"
+              @newsubmit="newsubmit"
               :groupList="groupList"
               @createGroup="createGroup"
               :createGroupDialog="createGroupDialog"
@@ -34,7 +35,7 @@
               :show="show"
               :columns="columns"
               @onvalue="onvalue"
-              @queren="queren"
+              @affirm="affirm"
             ></classList>
           </span>
         </el-col>
@@ -72,6 +73,7 @@ export default {
   data: () => ({
     form: {},
     columns: [],
+
     show: false,
     // 班主任看班级名单
     headClassList: [],
@@ -128,14 +130,22 @@ export default {
     async searchstu() {
       let classid = this.user.classid;
       const res = await this.stuQery({ classid });
-      console.log(res.data);
+
       this.$set(this, `stuNameList`, res.data);
     },
+    //班长分配班委会成员
+    async newsubmit({ data }) {
+      console.log(data);
+      let res = await this.updates(data);
+
+      this.$checkRes(res, '分配成功', '分配失败');
+    },
     // 查询组
     async findGroup() {
       let stuid = this.user.userid;
       let classid = this.user.classid;
       const result = await this.query({ classid });
+
       const groupList = result.data;
 
       this.$set(this, 'groupList', groupList);
@@ -239,8 +249,11 @@ export default {
     opanSubmit(item) {
       this.form.groupid = item.id;
       console.log(item);
+      console.log(item.students);
+      // var stu = item.students.filter(item => item.job == '普通学生');
+      // console.log(stu);
 
-      this.$set(this, 'columns', item.students);
+      // this.$set(this, 'columns', stu);
       if (this.user.job === '班长') {
         if (item.status != '1') {
           this.show = true;
@@ -261,6 +274,14 @@ export default {
       console.log(res.data);
       this.$set(this, 'newclassList', res.data);
     },
+
+    //确认所有
+    async affirm() {
+      for (const val of this.groupList) {
+        val.status = '1';
+        const res = await this.update(val);
+      }
+    },
   },
 };
 </script>