Bladeren bron

Merge branch 'master' of http://git.cc-lotus.info/new_train/train-student

nihao 5 jaren geleden
bovenliggende
commit
3749898d1e

BIN
src/assets/date.png


+ 48 - 0
src/layout/class/achieve.vue

@@ -0,0 +1,48 @@
+<template>
+  <div id="achieve">
+    <el-row>
+      <el-col :span="24">
+        <van-tabs v-model="active">
+          <van-tab title="平时成绩">
+            <peaceAchieve :peaceAchieveList="peaceAchieveList"></peaceAchieve>
+          </van-tab>
+          <van-tab title="作业成绩">
+            <homeworkAchiece :achieveList="achieveList"></homeworkAchiece>
+          </van-tab>
+        </van-tabs>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import peaceAchieve from '@/layout/class/achieveList/peaceAchieve.vue';
+import homeworkAchiece from '@/layout/class/achieveList/homeworkAchiece.vue';
+export default {
+  name: 'achieve',
+  props: {
+    peaceAchieveList: null, //平时成绩
+    achieveList: null, //作业成绩
+  },
+  components: {
+    peaceAchieve, //平時成績
+    homeworkAchiece, //作业成绩
+  },
+  data: () => ({
+    active: 0,
+  }),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.van-tabs__line {
+  width: 50% !important;
+  background-color: #405ffe;
+}
+/deep/.van-tab--active {
+  color: #405ffe;
+}
+</style>

+ 10 - 31
src/layout/class/achieveList.vue

@@ -1,5 +1,5 @@
 <template>
-  <div id="achieveList">
+  <div id="homeworkAchiece">
     <el-row>
       <el-col :span="24" class="list">
         <van-collapse v-model="openCollapse">
@@ -16,48 +16,22 @@
         </van-collapse>
       </el-col>
     </el-row>
-    <van-dialog v-model="show" title="学生成绩上传" :showConfirmButton="false">
-      <van-form @submit="onSubmit">
-        <van-field v-model="form.name" name="学生名称" disabled />
-        <van-field v-model="form.lessonid" name="课程名称" label="课程名称" placeholder="请输入课程名称" />
-        <van-field v-model="form.score" 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>
 export default {
-  name: 'achieveList',
+  name: 'homeworkAchiece',
   props: {
     achieveList: null,
-    show: null,
-    form: null,
-    lessonList: null,
   },
   components: {},
   data: () => ({
     openCollapse: [],
-    option1: [
-      { text: '全部商品', value: 0 },
-      { text: '新款商品', value: 1 },
-    ],
   }),
   created() {},
   computed: {},
-  methods: {
-    clickBtn() {
-      this.$emit('clickDialog');
-    },
-    onSubmit() {
-      this.$emit('submit', { data: this.form });
-    },
-  },
+  methods: {},
 };
 </script>
 
@@ -67,8 +41,7 @@ p {
   margin: 0;
 }
 .list {
-  background: #fff;
-  margin: 0 5px 5px 5px;
+  margin: 5px;
   width: 97%;
   padding: 0 10px;
   border-radius: 15px;
@@ -82,6 +55,12 @@ p {
   width: 80%;
   font-size: 20px;
 }
+/deep/.van-cell {
+  border-radius: 10px;
+}
+/deep/.van-collapse-item {
+  margin: 0 0 10px 0;
+}
 /deep/.el-collapse-item__content {
   padding: 10px 0 10px 0;
 }

+ 65 - 0
src/layout/class/achieveList/peaceAchieve.vue

@@ -0,0 +1,65 @@
+<template>
+  <div id="peaceAchieve">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="list" v-for="(item, index) in peaceAchieveList" :key="index">
+          <el-col :span="12" class="name">
+            {{ item.name }}
+          </el-col>
+          <el-col :span="12" class="score">
+            <span>分数:{{ item.score }}分</span>
+            <el-button type="primary" size="mini" @click="showPicker = true" round>选择</el-button>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+    <van-popup v-model="showPicker" position="bottom">
+      <van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="showPicker = false" />
+    </van-popup>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'peaceAchieve',
+  props: {
+    peaceAchieveList: null,
+  },
+  components: {},
+  data: () => ({
+    value: '',
+    columns: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
+    showPicker: false,
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    onConfirm(value) {
+      this.value = value;
+      console.log(value);
+      this.showPicker = false;
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.info {
+  padding: 0 30px;
+}
+.list {
+  border-bottom: 1px dashed #333;
+}
+// .list:nth-child(2n) {
+//   background-color: #ccc;
+// }
+.list .name {
+  padding: 15px 15px;
+}
+.list .score {
+  padding: 15px 0;
+}
+.list .score span {
+  padding: 0 7px 0 0;
+}
+</style>

+ 22 - 3
src/layout/class/classList.vue

@@ -4,7 +4,12 @@
       <el-col :span="24">
         <van-tabs v-model="active">
           <van-tab title="班级名单">
-            显示班级学生名称(带有职务),班主任:点击学生指派学生担任职务。学委:给学生上分(平时成绩只有一个,课程作业成绩,都要显示)
+            <span v-if="role === '1'">
+              <headNameList v-on="$listeners" :headNameList="headNameList" :assignShow="assignShow" :assignForm="assignForm"></headNameList>
+            </span>
+            <span v-else>
+              <stuNameList :stuNameList="stuNameList"></stuNameList>
+            </span>
           </van-tab>
           <van-tab title="班级分组">
             班级分组,需要有创建分组按钮,显示小组名称,小组人数,加入小组。(未分组学生显示)
@@ -16,12 +21,26 @@
 </template>
 
 <script>
+import headNameList from '@/layout/class/nameList/headNameList.vue';
+import stuNameList from '@/layout/class/nameList/stuNameList.vue';
 export default {
   name: 'classList',
-  props: {},
-  components: {},
+  props: {
+    headNameList: null, //班主任看班級學生名單
+    assignShow: null, //指派职务弹窗
+    assignForm: null, //指派职务form表单
+    stuNameList: null, //学生看班级学生名单
+  },
+  components: {
+    // 显示班级学生名称(带有职务)
+    // 班主任:点击学生指派学生担任职务。
+    // 学委:给学生上分(平时成绩只有一个,课程作业成绩,都要显示)
+    headNameList, //班主任班级学生名单
+    stuNameList, //学生班级学生名单
+  },
   data: () => ({
     active: 0,
+    role: '4',
   }),
   created() {},
   computed: {},

+ 86 - 0
src/layout/class/nameList/headNameList.vue

@@ -0,0 +1,86 @@
+<template>
+  <div id="headNameList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="6" class="list" v-for="(item, index) in headNameList" :key="index" @click.native="clickAssign()">
+          <p class="name">{{ item.name }}</p>
+          <p class="job" v-if="item.job">{{ item.job }}<i class="el-icon-circle-check"></i></p>
+        </el-col>
+      </el-col>
+    </el-row>
+    <el-dialog title="指派职务" width="90%" :visible.sync="assignShow">
+      <el-form :model="assignForm">
+        <el-form-item label="学生姓名">
+          <el-input v-model="assignForm.name" :disabled="true"></el-input>
+        </el-form-item>
+        <el-form-item label="学生职务">
+          <!-- <el-input v-model="assignForm.job" placeholder="请输入学生职务"></el-input> -->
+          <el-select v-model="assignForm.job" placeholder="请选择学生职务">
+            <el-option v-for="(item, index) in job_list" :key="index" :label="item.name" :value="item.name"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="outAssignShow">取 消</el-button>
+        <el-button type="primary" @click="onAssignShow">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'headNameList',
+  props: {
+    headNameList: null,
+    assignForm: null,
+    assignShow: null,
+  },
+  components: {},
+  data: () => ({
+    job_list: [
+      {
+        name: '班长',
+      },
+      {
+        name: '学委',
+      },
+    ],
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    clickAssign() {
+      this.$emit('assign');
+    },
+    outAssignShow() {
+      this.$emit('outForm');
+    },
+    onAssignShow() {
+      this.$emit('onForm', { data: this.assignForm });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.list {
+  text-align: center;
+  padding: 15px 0 0 0;
+}
+.list .name {
+  font-size: 14px;
+}
+.list .job {
+  font-size: 12px;
+  color: #405ffe;
+  padding: 5px 0 0 0;
+}
+/deep/.el-dialog__headerbtn {
+  display: none;
+}
+</style>

+ 51 - 0
src/layout/class/nameList/stuNameList.vue

@@ -0,0 +1,51 @@
+<template>
+  <div id="stuNameList">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col
+          :span="6"
+          class="list"
+          v-for="(item, index) in stuNameList"
+          :key="index"
+          @click.native="$router.push({ path: '/class/achieve', query: { id: item.id } })"
+        >
+          <p class="name">{{ item.name }}</p>
+          <p class="job" v-if="item.job">{{ item.job }}<i class="el-icon-circle-check"></i></p>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'stuNameList',
+  props: {
+    stuNameList: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.list {
+  text-align: center;
+  padding: 15px 0 0 0;
+}
+.list .name {
+  font-size: 14px;
+}
+.list .job {
+  font-size: 12px;
+  color: #405ffe;
+  padding: 5px 0 0 0;
+}
+</style>

+ 2 - 2
src/layout/common/topInfos.vue

@@ -1,5 +1,5 @@
 <template>
-  <div id="topInfo">
+  <div id="topLeave">
     <el-row>
       <el-col :span="24" class="topInfos">
         <van-nav-bar title="日程安排" left-text="返回" right-text="请假" left-arrow fixed @click-left="onClickLeft" @click-right="onClickRight" />
@@ -10,7 +10,7 @@
 
 <script>
 export default {
-  name: 'topInfo',
+  name: 'topLeave',
   props: {},
   components: {},
   data: () => ({}),

+ 57 - 4
src/layout/user/checkList.vue

@@ -1,19 +1,72 @@
 <template>
   <div id="checkList">
-    <p>checkList</p>
+    <el-row>
+      <van-col :span="24">
+        <van-collapse v-model="openCollapse">
+          <van-collapse-item :name="index" v-for="(item, index) in checkWorkList" :key="index">
+            <div slot="title" class="title">
+              <span class="name">{{ item.studentid }}</span>
+            </div>
+            <van-row class="attend" v-for="(tag, index) in item.attend" :key="index">
+              <van-col :span="20" class="dateTime">
+                <p>{{ tag.date }}</p>
+                <p>{{ tag.time }}</p>
+              </van-col>
+              <van-col :span="4" class="status">
+                {{ tag.status === '0' ? '未签到' : tag.status === '1' ? '签到' : '迟到' }}
+              </van-col>
+            </van-row>
+          </van-collapse-item>
+        </van-collapse>
+      </van-col>
+    </el-row>
   </div>
 </template>
 
 <script>
 export default {
   name: 'checkList',
-  props: {},
+  props: {
+    checkWorkList: null,
+  },
   components: {},
-  data: () => ({}),
+  data: () => ({
+    openCollapse: [],
+  }),
   created() {},
   computed: {},
   methods: {},
 };
 </script>
 
-<style lang="less" scoped></style>
+<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>

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

@@ -0,0 +1,65 @@
+<template>
+  <div id="leaveRefuse">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="top">
+          请假审核结果
+        </el-col>
+        <el-col :span="24" class="main">
+          <el-col :span="24" class="message">
+            <p>开始时间</p>
+            <p class="info">{{ refuseInfo.starttime }}</p>
+          </el-col>
+          <el-col :span="24" class="message">
+            <p>結束时间</p>
+            <p class="info">{{ refuseInfo.endtime }}</p>
+          </el-col>
+          <el-col :span="24" class="message">
+            <p>请假理由</p>
+            <p class="info">{{ refuseInfo.reason }}</p>
+          </el-col>
+          <el-col :span="24" v-if="refuseInfo.status === '2'" class="message">
+            <p>拒绝理由</p>
+            <p class="info">{{ refuseInfo.refcause }}</p>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'leaveRefuse',
+  props: {
+    refuseInfo: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.top {
+  text-align: center;
+  font-size: 20px;
+  padding: 15px 0;
+}
+.message {
+  padding: 0 10px;
+}
+.message p {
+  padding: 0 0 10px 0;
+  font-size: 18px;
+}
+.message p:last-child {
+  text-indent: 1rem;
+}
+</style>

+ 39 - 9
src/layout/user/formLeave.vue

@@ -1,19 +1,28 @@
 <template>
-  <div id="formLeave">
+  <div id="leaveRequest">
     <el-row>
       <el-col :span="24">
-        <el-form ref="form" :model="form" label-width="100px">
-          <el-form-item label="开始日期">
+        <el-form ref="form" :model="form">
+          <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 label="结束日期">
+          <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 label="请假理由">
+          <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-item>
-            <el-button type="primary" @click="onSubmit">保存</el-button>
+            <el-button type="primary" @click="onSubmit">提交</el-button>
             <el-button @click="cancelClick()">取消</el-button>
           </el-form-item>
         </el-form>
@@ -24,12 +33,14 @@
 
 <script>
 export default {
-  name: 'formLeave',
+  name: 'leaveRequest',
   props: {
     form: null,
   },
   components: {},
-  data: () => ({}),
+  data: () => ({
+    date: require('@/assets/date.png'),
+  }),
   created() {},
   computed: {},
   methods: {
@@ -44,7 +55,26 @@ export default {
 </script>
 
 <style lang="less" scoped>
+/deep/.el-form-item__label {
+  width: 100%;
+  text-align: left;
+  float: none;
+}
+/deep/.el-form-item {
+  margin: 15px 0;
+  text-align: center;
+}
+.date {
+  color: blue;
+}
+.endDate {
+  color: red;
+}
+/deep/.el-textarea {
+  width: 90%;
+}
 /deep/.el-textarea__inner {
-  width: 98%;
+  background: #f5f5f5;
+  border: none;
 }
 </style>

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

@@ -1,5 +1,5 @@
 <template>
-  <div id="topInfo">
+  <div id="messageInfo">
     <el-row>
       <el-col :span="24" class="message" @click.native="$router.push({ path: '/user/personalDetail', query: { id: info.id } })">
         <el-col :span="6" class="name">
@@ -17,7 +17,7 @@
 
 <script>
 export default {
-  name: 'topInfo',
+  name: 'messageInfo',
   props: {
     info: null,
   },

+ 5 - 2
src/layout/user/messageInfo copy.vue

@@ -1,5 +1,5 @@
 <template>
-  <div id="messageInfo">
+  <div id="studentInfo">
     <el-row>
       <el-col :span="24" class="messageInfo">
         <el-col :span="24" class="images">
@@ -140,7 +140,7 @@
 
 <script>
 export default {
-  name: 'messageInfo',
+  name: 'studentInfo',
   props: {
     messInfo: null,
   },
@@ -159,6 +159,9 @@ p {
   padding: 0;
   margin: 0;
 }
+.messageInfo {
+  margin: 0 0 10px 0;
+}
 .images {
   text-align: center;
   padding: 15px 0;

+ 48 - 40
src/views/class/achieve.vue

@@ -1,17 +1,12 @@
 <template>
   <div id="achieve">
     <el-row>
-      <el-col :span="24" class="info">
+      <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <el-col :span="15" class="title">
-            班级学生成绩
-          </el-col>
+          <topInfo></topInfo>
         </el-col>
         <el-col :span="24" class="main">
-          <achieveList :achieveList="achieveList" :show="show" :form="form" @clickDialog="clickAchieve" @submit="submitAchieve"></achieveList>
-        </el-col>
-        <el-col :span="24" class="foot">
-          <footInfo></footInfo>
+          <achieves :peaceAchieveList="peaceAchieveList" :achieveList="achieveList"></achieves>
         </el-col>
       </el-col>
     </el-row>
@@ -19,17 +14,39 @@
 </template>
 
 <script>
-import footInfo from '@/layout/common/footInfo.vue';
-import achieveList from '@/layout/class/achieveList.vue';
+import topInfo from '@/layout/common/topInfo.vue';
+import achieves from '@/layout/class/achieve.vue';
 
 export default {
   name: 'achieve',
   props: {},
   components: {
-    footInfo, //底部信息
-    achieveList, //学生成绩列表
+    topInfo, //头部导航
+    achieves, //班级学生成绩列表
   },
   data: () => ({
+    peaceAchieveList: [
+      {
+        name: '流域你好',
+        score: '10',
+      },
+      {
+        name: '流域',
+        score: '2',
+      },
+      {
+        name: '流域好',
+        score: '3',
+      },
+      {
+        name: '流域',
+        score: '4',
+      },
+      {
+        name: '流域',
+        score: '5',
+      },
+    ],
     achieveList: [
       {
         studentid: '刘裕',
@@ -44,48 +61,39 @@ export default {
           },
         ],
       },
+      {
+        studentid: '刘裕',
+        lesson: [
+          {
+            lessonid: '拓展训练',
+            score: '20',
+          },
+          {
+            lessonid: '简历制作',
+            score: '20',
+          },
+        ],
+      },
     ],
-    show: false,
-    form: {
-      name: '刘裕',
-    },
   }),
   created() {},
   computed: {},
-  methods: {
-    clickAchieve() {
-      this.show = true;
-    },
-    submitAchieve(form) {
-      console.log(form);
-      this.show = false;
-    },
-  },
+  methods: {},
 };
 </script>
 
 <style lang="less" scoped>
-.info {
+.style {
   width: 100%;
   min-height: 667px;
   position: relative;
-  background-color: #edeae8;
+  background-color: #eeeeee;
 }
 .top {
-  height: 50px;
-  line-height: 50px;
-  margin: 0 0 10px 0;
-  background: #fff;
-}
-.top .title {
-  padding: 0 15px;
-  font-size: 20px;
-}
-.top .btn {
-  text-align: right;
-  padding: 0 30px;
+  height: 46px;
+  overflow: hidden;
 }
 .main {
-  margin: 0 0 50px 0;
+  min-height: 570px;
 }
 </style>

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

@@ -6,7 +6,15 @@
           <topInfo></topInfo>
         </el-col>
         <el-col :span="24" class="main">
-          <classList></classList>
+          <classList
+            :headNameList="headNameList"
+            @assign="clickAssign"
+            :assignShow="assignShow"
+            :assignForm="assignForm"
+            @outForm="outAssignShow"
+            @onForm="onAssignShow"
+            :stuNameList="stuNameList"
+          ></classList>
         </el-col>
         <el-col :span="24" class="foot">
           <footInfo></footInfo>
@@ -29,10 +37,62 @@ export default {
     footInfo, //底部导航
     classList, //班级名单
   },
-  data: () => ({}),
+  data: () => ({
+    // 班主任看学生名单
+    headNameList: [
+      {
+        name: '测试人员',
+        job: '班长',
+      },
+      {
+        name: '测试人',
+        job: '',
+      },
+      {
+        name: '测试人员',
+        job: '班长',
+      },
+      {
+        name: '测试人',
+        job: '班长',
+      },
+    ],
+    assignShow: false,
+    assignForm: {},
+    // 学生看学生名单
+    stuNameList: [
+      {
+        name: '测试人员',
+        job: '班长',
+      },
+      {
+        name: '测试人',
+        job: '',
+      },
+      {
+        name: '测试人员',
+        job: '班长',
+      },
+      {
+        name: '测试人',
+        job: '班长',
+      },
+    ],
+  }),
   created() {},
   computed: {},
-  methods: {},
+  methods: {
+    clickAssign() {
+      this.assignShow = true;
+    },
+    onAssignShow(assignForm) {
+      console.log(assignForm);
+      this.assignShow = false;
+    },
+    outAssignShow() {
+      this.assignShow = false;
+    },
+  },
 };
 </script>
 

+ 46 - 42
src/views/user/checkWork.vue

@@ -1,20 +1,17 @@
 <template>
   <div id="checkWork">
     <el-row>
-      <el-col :span="24" class="info">
+      <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <el-col :span="15" class="title">
-            学生考勤情况
-          </el-col>
-          <el-col :span="9" class="btn">
-            <el-button type="primary" @click="checkClick()">考勤</el-button>
-          </el-col>
+          <topInfo></topInfo>
         </el-col>
         <el-col :span="24" class="main">
-          <checkList></checkList>
-        </el-col>
-        <el-col :span="24" class="foot">
-          <footInfo></footInfo>
+          <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">
+            <checkList :checkWorkList="checkWorkList"></checkList>
+          </el-col>
         </el-col>
       </el-col>
     </el-row>
@@ -22,58 +19,65 @@
 </template>
 
 <script>
+import topInfo from '@/layout/common/topInfo.vue';
 import checkList from '@/layout/user/checkList.vue';
-import footInfo from '@/layout/common/footInfo.vue';
-import { createNamespacedHelpers, mapGetters } from 'vuex';
-const { mapActions: mapCheck } = createNamespacedHelpers('attendance');
 export default {
   name: 'checkWork',
   props: {},
   components: {
+    topInfo, //头部导航
     checkList, //考勤列表
-    footInfo, //底部信息
-  },
-  data: () => ({}),
-  created() {
-    this.searchInfo();
   },
+  data: () => ({
+    checkWorkList: [
+      {
+        studentid: '流域',
+        attend: [
+          {
+            date: '2020-02-25',
+            time: '80:30',
+            status: '0',
+          },
+          {
+            date: '2020-02-25',
+            time: '80:30',
+            status: '1',
+          },
+          {
+            date: '2020-02-25',
+            time: '80:30',
+            status: '2',
+          },
+        ],
+      },
+    ],
+  }),
+  created() {},
   computed: {},
   methods: {
-    ...mapCheck(['query']),
-    async searchInfo({ skip = 0, limit = 10, ...info } = {}) {
-      const res = await this.query({ skip, limit, ...info });
-      console.log(res.data);
-      // this.$set(this, `leaveList`, res.data);
-    },
-    checkClick() {
-      console.log('考勤管理');
+    onClickRight() {
+      console.log('考勤打卡');
     },
   },
 };
 </script>
 
 <style lang="less" scoped>
-.info {
+.style {
   width: 100%;
   min-height: 667px;
   position: relative;
-  background-color: #edeae8;
+  background-color: #f9fafc;
 }
 .top {
-  height: 50px;
-  line-height: 50px;
-  margin: 0 0 10px 0;
-  background: #fff;
-}
-.top .title {
-  padding: 0 15px;
-  font-size: 20px;
-}
-.top .btn {
-  text-align: right;
-  padding: 0 30px;
+  height: 46px;
+  overflow: hidden;
 }
 .main {
-  margin: 0 0 50px 0;
+  min-height: 570px;
+}
+.main .leaveBtn {
+  text-align: center;
+  padding: 15px 0;
 }
 </style>

+ 28 - 11
src/views/user/leave.vue

@@ -1,12 +1,17 @@
 <template>
   <div id="leave">
     <el-row>
-      <el-col :span="24" class="info">
-        <el-col :span="24" class="native">
-          <topNative></topNative>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <topInfo></topInfo>
         </el-col>
-        <el-col :span="24" class="leaves">
-          <leaveList :leaveList="leaveList"></leaveList>
+        <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">
+            <leaveList :leaveList="leaveList"></leaveList>
+          </el-col>
         </el-col>
       </el-col>
     </el-row>
@@ -14,7 +19,7 @@
 </template>
 
 <script>
-import topNative from '@/layout/common/topInfos.vue';
+import topInfo from '@/layout/common/topInfo.vue';
 import leaveList from '@/layout/user/leaveList.vue';
 import { createNamespacedHelpers, mapGetters } from 'vuex';
 const { mapActions: mapLeave } = createNamespacedHelpers('leave');
@@ -22,8 +27,8 @@ export default {
   name: 'leave',
   props: {},
   components: {
-    topNative,
-    leaveList,
+    topInfo, //头部导航
+    leaveList, //请假列表
   },
   data: () => ({
     leaveList: [],
@@ -38,18 +43,30 @@ export default {
       const res = await this.query({ skip, limit, ...info });
       this.$set(this, `leaveList`, res.data);
     },
+    // 跳转到请假
+    onClickRight() {
+      this.$router.push({ path: '/user/leaveDetail' });
+    },
   },
 };
 </script>
 
 <style lang="less" scoped>
-.info {
+.style {
   width: 100%;
   min-height: 667px;
   position: relative;
   background-color: #f9fafc;
 }
-.native {
-  margin: 0 0 50px 0;
+.top {
+  height: 46px;
+  overflow: hidden;
+}
+.main {
+  min-height: 570px;
+}
+.main .leaveBtn {
+  text-align: center;
+  padding: 15px 0;
 }
 </style>

+ 18 - 16
src/views/user/leaveDetail.vue

@@ -1,12 +1,12 @@
 <template>
   <div id="leaveDetail">
     <el-row>
-      <el-col :span="24" class="info">
-        <el-col :span="24" class="native">
-          <topNative></topNative>
+      <el-col :span="24" class="style">
+        <el-col :span="24" class="top">
+          <topInfo></topInfo>
         </el-col>
-        <el-col :span="24" class="form">
-          <formLeave :form="form" @submit="onSubmit" @cancelClick="cancelClick"></formLeave>
+        <el-col :span="24" class="main">
+          <leaveRequest :form="form" @submit="submitForm" @cancelClick="cancelClick"></leaveRequest>
         </el-col>
       </el-col>
     </el-row>
@@ -14,17 +14,16 @@
 </template>
 
 <script>
-import topNative from '@/layout/common/footInfo.vue';
-import formLeave from '@/layout/user/formLeave.vue';
-
+import topInfo from '@/layout/common/topInfo.vue';
+import leaveRequest from '@/layout/user/leaveRequest.vue';
 import { createNamespacedHelpers, mapGetters } from 'vuex';
 const { mapActions: mapLeave } = createNamespacedHelpers('leave');
 export default {
   name: 'leaveDetail',
   props: {},
   components: {
-    topNative, //导航
-    formLeave, //请假
+    topInfo, //头部导航
+    leaveRequest, //请假申请
   },
   data: () => ({
     form: {},
@@ -39,7 +38,7 @@ export default {
   },
   methods: {
     ...mapLeave(['create']),
-    async onSubmit(form) {
+    async submitForm(form) {
       this.form.studentid = '99991';
       let data = this.form;
       let res = await this.create(data);
@@ -54,14 +53,17 @@ export default {
 </script>
 
 <style lang="less" scoped>
-.info {
+.style {
   width: 100%;
-  height: 100vh;
+  min-height: 667px;
   position: relative;
-  overflow: hidden;
   background-color: #f9fafc;
 }
-.native {
-  margin: 0 0 50px 0;
+.top {
+  height: 46px;
+  overflow: hidden;
+}
+.main {
+  min-height: 570px;
 }
 </style>

+ 20 - 47
src/views/user/leaveReason.vue

@@ -1,23 +1,12 @@
 <template>
   <div id="leaveReason">
     <el-row>
-      <el-col :span="24" class="info">
+      <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          请假审核结果
+          <topInfo></topInfo>
         </el-col>
-        <el-col :span="24" class="reason">
-          <p>请假开始时间:{{ reasonInfo.starttime }}</p>
-          <p>请假结束时间:{{ reasonInfo.endtime }}</p>
-          <p>
-            请假理由:
-            <span class="span">{{ reasonInfo.reason }}</span>
-          </p>
-          <span v-if="reasonInfo.ispass === '0' || reasonInfo.ispass === '1'">
-            <p>
-              请假拒绝理由:
-              <span class="span">{{ reasonInfo.refcause }}</span>
-            </p>
-          </span>
+        <el-col :span="24" class="main">
+          <leaveRefuse :refuseInfo="refuseInfo"></leaveRefuse>
         </el-col>
       </el-col>
     </el-row>
@@ -25,19 +14,19 @@
 </template>
 
 <script>
+import topInfo from '@/layout/common/topInfo.vue';
+import leaveRefuse from '@/layout/user/leaveRefuse.vue';
 import { createNamespacedHelpers, mapGetters } from 'vuex';
 const { mapActions: mapLeave } = createNamespacedHelpers('leave');
 export default {
   name: 'leaveReason',
   props: {},
-  components: {},
+  components: {
+    topInfo, //头部导航
+    leaveRefuse, //拒绝理由
+  },
   data: () => ({
-    reasonInfo: {
-      starttime: '2020-02-18',
-      endtime: '2020-02-20',
-      reason: '请假理由请假理由请假理由请假理由请假理由请假理由请假理由请假理由',
-      refcause: '拒绝理由拒绝理由拒绝理由拒绝理由拒绝理由拒绝理由拒绝理由拒绝理由',
-    },
+    refuseInfo: {},
   }),
   created() {
     this.searchInfo();
@@ -52,7 +41,7 @@ export default {
     async searchInfo() {
       if (this.$route.query.id) {
         const res = await this.fetch(this.id);
-        this.$set(this, `reasonInfo`, res.data);
+        this.$set(this, `refuseInfo`, res.data);
       }
     },
   },
@@ -60,33 +49,17 @@ export default {
 </script>
 
 <style lang="less" scoped>
-p {
-  padding: 0;
-  margin: 0;
-}
-.info {
+.style {
   width: 100%;
-  height: 100vh;
+  min-height: 667px;
   position: relative;
-  overflow: hidden;
-  background-color: #edeae8;
+  background-color: #f9fafc;
 }
-.info .top {
-  text-align: center;
-  padding: 15px 0;
-  font-size: 30px;
-}
-.reason {
-  padding: 0 15px;
-  color: #333;
-}
-.reason p {
-  padding: 10px 0;
+.top {
+  height: 46px;
+  overflow: hidden;
 }
-.reason p .span {
-  width: 100%;
-  display: inline-block;
-  text-indent: 2rem;
-  line-height: 30px;
+.main {
+  min-height: 570px;
 }
 </style>

+ 20 - 40
src/views/user/personalDetail.vue

@@ -1,12 +1,12 @@
 <template>
   <div id="personalDetail">
     <el-row>
-      <el-col :span="24" class="info">
+      <el-col :span="24" class="style">
         <el-col :span="24" class="top">
-          <topNative></topNative>
+          <topInfo></topInfo>
         </el-col>
-        <el-col :span="24" class="message">
-          <messageInfo :messInfo="messInfo"></messageInfo>
+        <el-col :span="24" class="main">
+          <studentInfo :messInfo="messInfo"></studentInfo>
         </el-col>
       </el-col>
     </el-row>
@@ -14,37 +14,34 @@
 </template>
 
 <script>
-import topNative from '@/layout/common/footInfo.vue';
-import messageInfo from '@/layout/user/messageInfo.vue';
-
+import topInfo from '@/layout/common/topInfo.vue';
+import studentInfo from '@/layout/user/studentInfo.vue';
 export default {
   name: 'personalDetail',
   props: {},
   components: {
-    topNative, //头部导航
-    messageInfo, //学生信息
+    topInfo, //头部导航
+    studentInfo, //学生详细信息
   },
   data: () => ({
     messInfo: {
-      name: '刘裕',
+      name: '测试学生',
       id_number: '220182199603257019',
       phone: '17319450324',
       gender: '男',
-      nation: '汉',
+      nation: '汉',
       school_name: '吉林大学',
       faculty: '计算机学院',
       major: '应用软件技术专业',
-      entry_year: '2002',
-      finish_year: '2006',
+      entry_year: '2016',
+      finish_year: '2020',
       school_job: '班长',
       qq: '1345526645',
-      email: '17319450324@163.com',
+      email: 'guhongwei0324@163.com',
       family_place: '吉林省长春市朝阳区力旺广场B座16楼',
+      family_is_hard: '1',
+      have_grant: '1',
       job: '班长',
-      termid: '期id',
-      batchid: '批次id',
-      classid: '班级id',
-      bedroomid: '寝室id',
     },
   }),
   created() {},
@@ -54,34 +51,17 @@ export default {
 </script>
 
 <style lang="less" scoped>
-p {
-  padding: 0;
-  margin: 0;
-}
-.info {
+.style {
   width: 100%;
-  height: 100%;
+  min-height: 667px;
+  position: relative;
   background-color: #f9fafc;
 }
 .top {
   height: 46px;
-  background-color: #fff;
   overflow: hidden;
 }
-.message {
-  min-height: 667px;
+.main {
+  min-height: 570px;
 }
-// .message p {
-//   padding: 5px 0;
-// }
-// .message p .title {
-//   display: inline-block;
-//   text-align: left;
-//   width: 110px;
-// }
-// .message p .content {
-//   display: inline-block;
-//   text-align: left;
-//   width: 235px;
-// }
 </style>