Pārlūkot izejas kodu

微信提示显示部分信息

lrf402788946 4 gadi atpakaļ
vecāks
revīzija
12f77a53c9

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
     "axios": "^0.19.2",
     "core-js": "^3.6.5",
     "element-ui": "^2.13.2",
+    "lodash": "^4.17.19",
     "moment": "^2.27.0",
     "naf-core": "^0.1.2",
     "vant": "^2.9.4",

+ 97 - 6
src/views/index.vue

@@ -8,8 +8,8 @@
         <span v-else-if="type == '2'">
           普通
         </span>
-        <span v-else-if="(type = '3')">
-          班主任,教师
+        <span v-else-if="type == '3'">
+          <class-index :dayList="dayList" :lessonList="lessonList" :classInfo="classInfo" />
         </span>
       </el-col>
     </el-row>
@@ -17,23 +17,114 @@
 </template>
 
 <script>
+import _ from 'lodash';
+import classIndex from './worker/index.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: { classIndex },
   data: function() {
     return {
-      type: '1',
+      type: '3',
+      lessonList: [
+        { _id: '5f2a10297f40d16be433e81b', subname: '报道+开班仪式', day: '0', date: '2020-04-07', time: '13:30-16:30' },
+        { _id: '5f2a10297f40d16be433e81c', subid: '', subname: '晚餐', date: '2020-04-07', time: '16:30-17:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e81d', subid: '', subname: '团队组建', date: '2020-04-07', time: '17:30-19:45', day: '0' },
+        {
+          _id: '5f2a10297f40d16be433e81e',
+          teaid: '5ef08199fbf5d71a24881f11',
+          teaname: '吉林大学测试科目一教师',
+          subid: '5f27bb47dd73cc2308f7b978',
+          subname: '测试科目1',
+          day: '0',
+          date: '2020-04-08',
+          time: '08:00-11:30',
+        },
+        { _id: '5f2a10297f40d16be433e81f', subid: '', subname: '午餐+休息', date: '2020-04-08', time: '11:30-13:30', day: '0' },
+        {
+          _id: '5f2a10297f40d16be433e820',
+          subid: '5f27bb47dd73cc2308f7b978',
+          subname: '测试科目1',
+          date: '2020-04-08',
+          time: '13:30-16:30',
+          day: '0',
+          teaid: '5ef08199fbf5d71a24881f11',
+          teaname: '吉林大学测试科目一教师',
+        },
+        { _id: '5f2a10297f40d16be433e821', subid: '', subname: '晚餐', date: '2020-04-08', time: '16:30-17:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e822', subid: '', subname: '拓展交流', date: '2020-04-08', time: '17:30-19:45', day: '0' },
+        { _id: '5f2a10297f40d16be433e823', subid: '5e730d755a52a378a817ec7d', subname: '测试科目二', day: '0', date: '2020-04-09', time: '08:00-11:30' },
+        { _id: '5f2a10297f40d16be433e824', subid: '', subname: '午餐+休息', date: '2020-04-09', time: '11:30-13:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e825', subid: '5e730d755a52a378a817ec7d', subname: '测试科目二', date: '2020-04-09', time: '13:30-16:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e826', subid: '', subname: '晚餐', date: '2020-04-09', time: '16:30-17:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e827', subid: '', subname: '课程作业小组展示\t', date: '2020-04-09', time: '17:30-19:45', day: '0' },
+        { _id: '5f2a10297f40d16be433e828', subid: '5e730d7e5a52a378a817ec7e', subname: '测试科目三', day: '0', date: '2020-04-10', time: '08:00-11:30' },
+        { _id: '5f2a10297f40d16be433e829', subid: '', subname: '午餐+休息', date: '2020-04-10', time: '11:30-13:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e82a', subid: '5e730d7e5a52a378a817ec7e', subname: '测试科目三', date: '2020-04-10', time: '13:30-16:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e82b', subid: '', subname: '晚餐', date: '2020-04-10', time: '16:30-17:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e82c', subid: '', subname: '课程作业', date: '2020-04-10', time: '17:30-19:45', day: '0' },
+        { _id: '5f2a10297f40d16be433e82d', subid: '5e730d855a52a378a817ec7f', subname: '测试科目四', day: '0', date: '2020-04-11', time: '08:00-11:30' },
+        { _id: '5f2a10297f40d16be433e82e', subid: '', subname: '午餐+休息', date: '2020-04-11', time: '11:30-13:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e82f', subid: '5e730d855a52a378a817ec7f', subname: '测试科目四', date: '2020-04-11', time: '13:30-16:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e830', subid: '', subname: '晚餐', date: '2020-04-11', time: '16:30-17:30', day: '0' },
+        { _id: '5f2a10297f40d16be433e831', subid: '', subname: '礼仪课小组面试\t', date: '2020-04-11', time: '17:30-19:45', day: '0' },
+        { _id: '5f2a10297f40d16be433e832', subname: '结业仪式', day: '0', date: '2020-04-12', time: '17:30-19:45' },
+      ],
+      classInfo: {
+        meta: { state: 0, createdAt: '2020-08-01T08:12:03.344Z', updatedAt: '2020-08-05T09:23:15.928Z' },
+        _id: '5f2523d3a0109c964c60495e',
+        name: '2',
+        number: '56',
+        batchid: '5f1f8bdc26941e8a38670364',
+        termid: '5f1f8bdc26941e8a38670363',
+        planid: '5f110d2ee48f4e6ff461283d',
+        type: '0',
+        headteacherid: '5f228f3936578693741c3e78',
+        __v: 0,
+        jslocationid: '5e730ca35a52a378a817ec75',
+        kbyslocationid: '5e730d535a52a378a817ec7b',
+        kzjhlocationid: '5e730d135a52a378a817ec77',
+        lyteacherid: '5f228f3936578693741c3e78',
+        yclocationid: '5e730d3d5a52a378a817ec78',
+        id: '5f2523d3a0109c964c60495e',
+        term: '1',
+        batch: '1',
+        startdate: '2020-04-07',
+        enddate: '2020-04-12',
+        yclocation: '食堂',
+        kzjhlocation: '室外拓展训练场地',
+        kbyslocation: '会议室',
+        jslocation: '第一教室',
+        headteacher: '顾红伟2',
+        lyteacher: '顾红伟2',
+      },
+      dayList: [],
     };
   },
-  created() {},
-  methods: {},
+  created() {
+    this.dealLesson();
+  },
+  methods: {
+    dealLesson() {
+      let dl = _.cloneDeep(this.lessonList);
+      dl = _.groupBy(dl, 'date');
+      let dayList = Object.keys(dl);
+      this.$set(this, `dayList`, dayList);
+      this.$set(this, `lessonList`, dl);
+    },
+  },
   computed: {
     ...mapState(['user']),
     pageTitle() {
       return `${this.$route.meta.title}`;
     },
+    classid() {
+      return this.$route.query.classid;
+    },
+    infoid() {
+      return this.$route.query.infoid;
+    },
   },
   metaInfo() {
     return { title: this.$route.meta.title };

+ 66 - 0
src/views/worker/class-info.vue

@@ -0,0 +1,66 @@
+<template>
+  <div id="class-info" style="padding:10px 0">
+    <van-cell-group title="时间相关">
+      <van-cell>
+        <template #title> 第{{ getProp('term') }}期-第{{ getProp('batch') }}批 </template>
+      </van-cell>
+      <van-cell :title="`${getProp('startdate')} 至 ${getProp('enddate')}`"></van-cell>
+    </van-cell-group>
+    <van-cell-group title="班级信息">
+      <van-cell title="班级">
+        <span style="color:#323233;">{{ getProp('name') }}</span>
+      </van-cell>
+      <van-cell title="班主任">
+        <span style="color:#323233;">{{ getProp('headteacher') }}</span>
+      </van-cell>
+      <van-cell title="礼仪教师">
+        <span style="color:#323233;">{{ getProp('lyteacher') }}</span>
+      </van-cell>
+      <van-cell title="教室地点">
+        <span style="color:#323233;">{{ getProp('jslocation') }}</span>
+      </van-cell>
+      <van-cell title="开班地点">
+        <span style="color:#323233;">{{ getProp('kbyslocation') }}</span>
+      </van-cell>
+      <van-cell title="拓展训练地点">
+        <span style="color:#323233;">{{ getProp('kzjhlocation') }}</span>
+      </van-cell>
+      <van-cell title="用餐地点">
+        <span style="color:#323233;">{{ getProp('yclocation') }}</span>
+      </van-cell>
+    </van-cell-group>
+  </div>
+</template>
+
+<script>
+import _ from 'lodash';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'class-info',
+  props: {
+    classInfo: { type: Object, default: () => {} },
+  },
+
+  components: {},
+  data: function() {
+    return {};
+  },
+  created() {},
+  methods: {
+    getProp(prop) {
+      return _.get(this.classInfo, prop);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 41 - 0
src/views/worker/index.vue

@@ -0,0 +1,41 @@
+<template>
+  <div id="classIndex">
+    <van-tabs v-model="active" animated color="#007FFF">
+      <van-tab title="课程表">
+        <lesson-table v-bind="$attrs" />
+      </van-tab>
+      <van-tab title="班级相关">
+        <class-info v-bind="$attrs" />
+      </van-tab>
+    </van-tabs>
+  </div>
+</template>
+
+<script>
+import lessonTable from './lesson-table.vue';
+import classInfo from './class-info.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'classIndex',
+  props: {},
+  components: { lessonTable, classInfo },
+  data: function() {
+    return {
+      active: 0,
+    };
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 64 - 0
src/views/worker/lesson-table.vue

@@ -0,0 +1,64 @@
+<template>
+  <div id="lesson-table" style="padding:10px 0">
+    <van-row type="flex" gutter="5">
+      <van-col span="6">
+        <van-sidebar v-model="active">
+          <van-sidebar-item v-for="(i, index) in dayList" :key="`${index}`" :title="dateTOPoint(i)"> </van-sidebar-item>
+        </van-sidebar>
+      </van-col>
+      <van-col span="18">
+        <van-cell v-for="(item, itemIndex) in getData(active)" :key="`${itemIndex}`">
+          <template #title> <i class="el-icon-timer" style="padding-right:3px"></i>{{ item.time }} </template>
+          <template>
+            <i class="el-icon-notebook-2" style="padding-right:3px"></i><span style="color:#323233;">{{ item.subname }}</span>
+          </template>
+          <template v-if="item.teaid" #label>
+            <i class="el-icon-user" style="padding-right:3px"></i><span style="color:#323233;">{{ item.teaname }}</span>
+          </template>
+        </van-cell>
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'lesson-table',
+  props: {
+    dayList: { type: Array, default: () => [] },
+    lessonList: { type: Object, default: () => {} },
+  },
+  components: {},
+  data: function() {
+    return {
+      active: 0,
+    };
+  },
+  created() {},
+  methods: {
+    getData(index) {
+      return this.lessonList[this.dayList[index]];
+    },
+    getContent(date) {
+      return date;
+    },
+    dateTOPoint(date) {
+      let arr = date.split('-');
+      if (arr.length > 0) return `${arr[1]}-${arr[2]}`;
+      else return date;
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>