瀏覽代碼

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

lrf402788946 4 年之前
父節點
當前提交
5304351607

+ 17 - 0
src/layout/class/stuList.vue

@@ -0,0 +1,17 @@
+<template>
+  <div id="stuList"></div>
+</template>
+
+<script>
+export default {
+  name: 'stuList',
+  props: {},
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped></style>

+ 1 - 40
src/layout/index/mainData.vue

@@ -31,45 +31,6 @@
                 <p></p>
                 <p></p>
               </el-col>
               </el-col>
             </el-col>
             </el-col>
-            <!-- <el-col :span="24" class="context" v-if="lesson.subname">
-              <el-col :span="12" class="contexttime">
-                <span>11:30—13:30</span>
-              </el-col>
-              <el-col :span="12" class="contextclass">
-                <p></p>
-                <p>午餐+休息</p>
-              </el-col>
-            </el-col>
-            <el-col :span="24" class="context">
-              <el-col :span="12" class="contexttime">
-                <span>11:30—4:30</span>
-              </el-col>
-              <el-col :span="12" class="contextclass">
-                <p>{{ lesson.subname }}</p>
-                <p>{{ lesson.teaname }}</p>
-              </el-col>
-              <el-col :span="24">
-                <p></p>
-              </el-col>
-            </el-col>
-            <el-col :span="24" class="context" v-if="lesson.subname">
-              <el-col :span="12" class="contexttime">
-                <span>16:30—17:30</span>
-              </el-col>
-              <el-col :span="12" class="contextclass">
-                <p></p>
-                <p>晚餐</p>
-              </el-col>
-            </el-col>
-            <el-col :span="24" class="context">
-              <el-col :span="12" class="contexttime">
-                <span>17:30 — 19:45</span>
-              </el-col>
-              <el-col :span="12" class="contextclass">
-                <p></p>
-                <p>{{ lesson.lastLesson }}</p>
-              </el-col>
-            </el-col> -->
           </template>
           </template>
         </el-col>
         </el-col>
       </el-col>
       </el-col>
@@ -99,7 +60,7 @@ export default {
 
 
     click(item) {
     click(item) {
       console.log(item);
       console.log(item);
-      this.$router.push({ path: 'teacherscore/index', query: { teaid: item.teaid, lessonid: item._id } });
+      this.$router.push({ path: '/home/teacher', query: { teaid: item.teaid, lessonid: item._id } });
     },
     },
   },
   },
   filters: {
   filters: {

+ 157 - 0
src/layout/teacher/teacherInfo.vue

@@ -0,0 +1,157 @@
+<template>
+  <div id="teacherInfo">
+    <el-row>
+      <el-col :span="24" class="messageInfo">
+        <el-col :span="24" class="mess">
+          <el-col :span="22" class="info">
+            <p class="title">姓名</p>
+            <p class="name">{{ teainfo.name }}</p>
+          </el-col>
+          <el-col :span="2" class="icon">
+            <van-icon name="arrow" />
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="mess">
+          <el-col :span="22" class="info">
+            <p class="title">性别</p>
+            <p class="name">{{ teainfo.gender }}</p>
+          </el-col>
+          <el-col :span="2" class="icon">
+            <van-icon name="arrow" />
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="mess">
+          <el-col :span="22" class="info">
+            <p class="title">年龄</p>
+            <p class="name">{{ teainfo.age }}</p>
+          </el-col>
+          <el-col :span="2" class="icon">
+            <van-icon name="arrow" />
+          </el-col>
+        </el-col>
+
+        <el-col :span="24" class="mess">
+          <el-col :span="22" class="info">
+            <p class="title">手机号</p>
+            <p class="name">{{ teainfo.phone }}</p>
+          </el-col>
+          <el-col :span="2" class="icon">
+            <van-icon name="arrow" />
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="mess">
+          <el-col :span="22" class="info">
+            <p class="title">学校名称</p>
+            <p class="name">{{ teainfo.schname }}</p>
+          </el-col>
+          <el-col :span="2" class="icon">
+            <van-icon name="arrow" />
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="mess">
+          <el-col :span="22" class="info">
+            <p class="title">邮箱</p>
+            <p class="name">{{ teainfo.email }}</p>
+          </el-col>
+          <el-col :span="2" class="icon">
+            <van-icon name="arrow" />
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="mess">
+          <el-col :span="22" class="info">
+            <p class="title">资料评分</p>
+            <p class="name">{{ teainfo.zlscore }}</p>
+          </el-col>
+          <el-col :span="2" class="icon">
+            <van-icon name="arrow" />
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="mess">
+          <el-col :span="22" class="info">
+            <p class="title">面试评分</p>
+            <p class="name">{{ teainfo.msscore }}</p>
+          </el-col>
+          <el-col :span="2" class="icon">
+            <van-icon name="arrow" />
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="mess">
+          <el-col :span="22" class="info">
+            <p class="title">学生评分</p>
+            <p class="name">{{ teainfo.xsscore }}</p>
+          </el-col>
+          <el-col :span="2" class="icon">
+            <van-icon name="arrow" />
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: teacher } = createNamespacedHelpers('teacher');
+export default {
+  name: 'teacherInfo',
+  props: {
+    teaid: null,
+  },
+  components: {},
+  data: () => ({
+    teainfo: {},
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    ...teacher(['fetch']),
+    async search() {
+      const teacher = await this.fetch(this.teaid);
+      let xsscore = parseFloat(teacher.data.xsscore).toFixed(2);
+      teacher.data.xsscore = xsscore;
+      this.$set(this, `teainfo`, teacher.data);
+    },
+  },
+  watch: {
+    teaid: {
+      handler(val) {
+        if (val) {
+          this.search();
+        }
+      },
+      immediate: true,
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.messageInfo {
+  margin: 0 0 10px 0;
+}
+.mess {
+  min-height: 50px;
+  border-bottom: 1px solid #efeff4;
+}
+.info {
+  padding: 0 15px;
+}
+.info .title {
+  font-size: 14px;
+  color: #92a1b1;
+  padding: 4px 0;
+}
+.info .name {
+  font-size: 16px;
+  color: #000;
+}
+.icon {
+  padding: 11px 0;
+  font-size: 20px;
+  color: #ccc;
+}
+</style>

+ 68 - 0
src/layout/user/clickBtn.vue

@@ -0,0 +1,68 @@
+<template>
+  <div id="clickBtn">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="native" v-if="this.user.type === '1'">
+          <van-cell is-link @click="$router.push({ path: '/user/teaLeave' })">请假管理</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/leave' })">请假</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/checkWork' })">考勤</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/homework' })">作业管理</van-cell>
+        </el-col>
+
+        <el-col :span="24" class="native">
+          <van-cell is-link @click="$router.push({ path: '/user/pingfenclass' })">评分</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>
+        </el-col>
+        <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 :span="24" class="native" v-if="this.user.type === '3'">
+          <van-cell is-link @click="$router.push({ path: '/user/terstudent' })">查看任课教师</van-cell>
+        </el-col> -->
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+export default {
+  name: 'clickBtn',
+  props: {},
+  components: {},
+  data: () => ({}),
+  created() {
+    console.log(this.user.type);
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.native {
+  height: 50px;
+  background-color: #fff;
+  margin: 0 0 5px 0;
+}
+/deep/.van-cell {
+  line-height: 30px;
+}
+/deep/.van-cell__right-icon {
+  height: 30px;
+  line-height: 30px;
+}
+</style>

+ 90 - 0
src/layout/user/messageInfo.vue

@@ -0,0 +1,90 @@
+<template>
+  <div id="messageInfo">
+    <el-row>
+      <el-col :span="24" class="message" @click.native="$router.push({ path: '/user/personalDetail', query: { id: info.id } })" v-if="this.user.type === '4'">
+        <el-col :span="7" class="name">
+          {{ info.name }}
+        </el-col>
+        <el-col :span="17" class="mess">
+          <p>{{ info.school_name }}</p>
+          <p>{{ info.faculty }}&nbsp;&nbsp;{{ info.major }}</p>
+          <p>民族:{{ info.nation }}&nbsp;性别:{{ info.gender }}</p>
+        </el-col>
+      </el-col>
+      <el-col
+        :span="24"
+        class="message"
+        @click.native="$router.push({ path: '/user/personalDetail', query: { id: teainfo.id } })"
+        v-if="this.user.type === '1'"
+      >
+        <el-col :span="7" class="name">
+          {{ teainfo.name }}
+        </el-col>
+        <el-col :span="17" class="mess">
+          <p>年龄:{{ teainfo.age }}&nbsp;&nbsp;性别:{{ teainfo.gender }}</p>
+          <p>手机号:{{ teainfo.phone }}</p>
+          <p>所在部门:{{ teainfo.department }}</p>
+        </el-col>
+      </el-col>
+      <el-col
+        :span="24"
+        class="message"
+        @click.native="$router.push({ path: '/user/personalDetail', query: { id: jiaoshiinfo.id } })"
+        v-if="this.user.type === '3'"
+      >
+        <el-col :span="7" class="name">
+          {{ jiaoshiinfo.name }}
+        </el-col>
+        <el-col :span="17" class="mess">
+          <p>年龄:{{ jiaoshiinfo.age }}&nbsp;&nbsp;性别:{{ jiaoshiinfo.gender }}</p>
+          <p>手机号:{{ jiaoshiinfo.phone }}</p>
+          <p>所在部门:{{ jiaoshiinfo.department }}</p>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+export default {
+  name: 'messageInfo',
+  props: {
+    info: null,
+    teainfo: null,
+    jiaoshiinfo: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {
+    ...mapState(['user']),
+  },
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.message {
+  padding: 10px 0;
+}
+.name {
+  text-align: center;
+  padding: 20px 0;
+  font-size: 20px;
+  font-family: 微软雅黑;
+  font-weight: bold;
+}
+.mess p {
+  padding: 5px 0;
+  font-size: 16px;
+  color: #333;
+}
+.tea {
+  padding: 10px 0;
+}
+</style>

+ 7 - 0
src/router/index.js

@@ -18,6 +18,13 @@ const routes = [
     meta: { title: '班级首页', isleftarrow: true },
     meta: { title: '班级首页', isleftarrow: true },
     component: () => import('../views/home/index.vue'),
     component: () => import('../views/home/index.vue'),
   },
   },
+  // 班级首页
+  {
+    path: '/home/teacher',
+    name: 'home_teacher',
+    meta: { title: '班级首页', isleftarrow: true },
+    component: () => import('../views/home/teacher.vue'),
+  },
   // 班级名单
   // 班级名单
   {
   {
     path: '/class/index',
     path: '/class/index',

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

@@ -6,7 +6,7 @@
           <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
           <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
         </el-col>
         </el-col>
         <el-col :span="24" class="main">
         <el-col :span="24" class="main">
-          班級名單
+          <stuList></stuList>
         </el-col>
         </el-col>
         <el-col :span="24" class="foot">
         <el-col :span="24" class="foot">
           <footInfo></footInfo>
           <footInfo></footInfo>
@@ -19,6 +19,7 @@
 <script>
 <script>
 import NavBar from '@/layout/common/topInfo.vue';
 import NavBar from '@/layout/common/topInfo.vue';
 import footInfo from '@/layout/common/footInfo.vue';
 import footInfo from '@/layout/common/footInfo.vue';
+import stuList from '@/layout/class/stuList.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
 export default {
   name: 'index',
   name: 'index',
@@ -26,6 +27,7 @@ export default {
   components: {
   components: {
     NavBar,
     NavBar,
     footInfo,
     footInfo,
+    stuList,
   },
   },
   data: function() {
   data: function() {
     return {
     return {

+ 3 - 1
src/views/home/index.vue

@@ -6,7 +6,7 @@
           <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
           <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
         </el-col>
         </el-col>
         <el-col :span="24" class="main">
         <el-col :span="24" class="main">
-          <mainData :lesson="lesson" :today="today" @getLesson="getLesson"></mainData>
+          <mainData :lesson="lesson" :today="today" @getLesson="getLesson" :arrange="arrange"></mainData>
         </el-col>
         </el-col>
         <el-col :span="24" class="foot">
         <el-col :span="24" class="foot">
           <footInfo></footInfo>
           <footInfo></footInfo>
@@ -36,7 +36,9 @@ export default {
       isleftarrow: '',
       isleftarrow: '',
       navShow: true,
       navShow: true,
       lesson: {},
       lesson: {},
+      originLesson: [],
       today: {},
       today: {},
+      arrange: [],
     };
     };
   },
   },
   created() {
   created() {

+ 57 - 0
src/views/home/teacher.vue

@@ -0,0 +1,57 @@
+<template>
+  <div id="teacher">
+    <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">
+        <teacherInfo :teaid="teaid"></teacherInfo>
+      </el-col>
+      <el-col :span="24" class="foot">
+        <footInfo></footInfo>
+      </el-col>
+    </el-col>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/layout/common/topInfo.vue';
+import footInfo from '@/layout/common/footInfo.vue';
+import teacherInfo from '@/layout/teacher/teacherInfo.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'teacher',
+  props: {},
+  components: { NavBar, footInfo, teacherInfo },
+  data: () => ({
+    teaid: {},
+    isleftarrow: '',
+    navShow: true,
+    title: '教师信息',
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    id() {
+      return this.$route.query.teaid;
+    },
+  },
+  methods: {
+    async search() {
+      this.teaid = this.id;
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 46px;
+  overflow: hidden;
+}
+.foot {
+  height: 90px;
+  overflow: hidden;
+}
+</style>

+ 47 - 7
src/views/user/index.vue

@@ -6,7 +6,12 @@
           <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
           <NavBar v-show="navShow" :title="title" :isleftarrow="isleftarrow"> </NavBar>
         </el-col>
         </el-col>
         <el-col :span="24" class="main">
         <el-col :span="24" class="main">
-          個人中心
+          <el-col :span="24" class="message">
+            <messageInfo :info="info" :teainfo="teainfo" :jiaoshiinfo="jiaoshiinfo"></messageInfo>
+          </el-col>
+          <el-col :span="24" class="clickBtn">
+            <clickBtn></clickBtn>
+          </el-col>
         </el-col>
         </el-col>
         <el-col :span="24" class="foot">
         <el-col :span="24" class="foot">
           <footInfo></footInfo>
           <footInfo></footInfo>
@@ -15,27 +20,62 @@
     </el-row>
     </el-row>
   </div>
   </div>
 </template>
 </template>
-
 <script>
 <script>
 import NavBar from '@/layout/common/topInfo.vue';
 import NavBar from '@/layout/common/topInfo.vue';
 import footInfo from '@/layout/common/footInfo.vue';
 import footInfo from '@/layout/common/footInfo.vue';
-import { mapState, createNamespacedHelpers } from 'vuex';
+import messageInfo from '@/layout/user/messageInfo.vue';
+import clickBtn from '@/layout/user/clickBtn.vue';
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapDirectors } = createNamespacedHelpers('director');
+const { mapActions: mapStudent } = createNamespacedHelpers('student');
+const { mapActions: mapTeacher } = createNamespacedHelpers('teacher');
+const { mapActions: mapDept } = createNamespacedHelpers('dept');
 export default {
 export default {
   name: 'index',
   name: 'index',
   props: {},
   props: {},
   components: {
   components: {
-    NavBar,
-    footInfo,
+    NavBar, //头部导航
+    footInfo, //底部导航
+    messageInfo, //个人信息
+    clickBtn, //功能按钮
   },
   },
   data: function() {
   data: function() {
     return {
     return {
+      info: {},
+      teainfo: {},
+      jiaoshiinfo: {},
       title: '',
       title: '',
       isleftarrow: '',
       isleftarrow: '',
       navShow: true,
       navShow: true,
     };
     };
   },
   },
-  created() {},
-  methods: {},
+  created() {
+    this.searchSite();
+  },
+  methods: {
+    ...mapDirectors({ directorQuery: 'query', directorFetch: 'fetch' }),
+    ...mapStudent({ studentQuery: 'query', studentFetch: 'fetch' }),
+    ...mapTeacher({ teacherlist: 'query', teacherfetch: 'fetch' }),
+    ...mapDept({ deptFetch: 'fetch' }),
+    // 查询登录用户信息
+    async searchSite() {
+      // 1:班主任,4:学生
+      console.log(this.user);
+      if (this.user.type === '1') {
+        const res = await this.directorFetch(this.user.userid);
+        const arr = await this.deptFetch(res.data.department);
+        res.data.department = arr.data.name;
+
+        console.log(res.data);
+
+        this.$set(this, `teainfo`, res.data);
+      } else if (this.user.type === '3') {
+        const res = await this.teacherfetch(this.user.userid);
+        console.log(res.data);
+        this.$set(this, `jiaoshiinfo`, res.data);
+      }
+    },
+  },
   computed: {
   computed: {
     ...mapState(['user']),
     ...mapState(['user']),
   },
   },