guhongwei 4 jaren geleden
bovenliggende
commit
e1a02dbc58
5 gewijzigde bestanden met toevoegingen van 182 en 7 verwijderingen
  1. 8 2
      src/router/index.js
  2. 6 0
      src/store/index.js
  3. 163 0
      src/views/centerTeaching/afterClass.vue
  4. 3 3
      src/views/director/detail.vue
  5. 2 2
      src/views/director/index.vue

+ 8 - 2
src/router/index.js

@@ -473,13 +473,19 @@ const routes = [
         meta: { title: '通知查看' },
         component: () => import('@/views/receive/index.vue'),
       },
-      // 新增在线课堂
+      // 在线授课管理
       {
         path: '/centerTeaching/index',
         name: 'centerTeaching_index',
-        meta: { title: '在线课堂' },
+        meta: { title: '直播讲课' },
         component: () => import('@/views/centerTeaching/index.vue'),
       },
+      {
+        path: '/centerTeaching/afterClass',
+        name: 'centerTeaching_afterClass',
+        meta: { title: '课后答疑' },
+        component: () => import('@/views/centerTeaching/afterClass.vue'),
+      },
     ],
   },
   {

+ 6 - 0
src/store/index.js

@@ -35,6 +35,9 @@ import login from '@frame/store/login';
 import notice from '@frame/store/notice';
 import classtype from '@frame/store/classtype';
 import liveroom from '@frame/store/liveroom';
+import answerapply from '@frame/store/answerapply';
+import chatroom from '@frame/store/chatroom';
+import answerchat from '@frame/store/answerchat';
 import * as ustate from '@frame/store/user/state';
 import * as umutations from '@frame/store/user/mutations';
 import * as dostate from '@frame/store/setting/state';
@@ -82,6 +85,9 @@ export default new Vuex.Store({
     notice,
     classtype,
     liveroom,
+    answerapply,
+    chatroom,
+    answerchat,
   },
   state: { ...ustate, ...dostate },
   mutations: { ...umutations, ...domutations },

+ 163 - 0
src/views/centerTeaching/afterClass.vue

@@ -0,0 +1,163 @@
+<template>
+  <div id="afterClass">
+    <list-frame :title="mainTitle" @query="search" :total="total" :needFilter="false" :needAdd="false">
+      <data-table :fields="fields" :data="list" :opera="opera" @check="toCheck" @delete="toDelete" :toFormat="toFormat"></data-table>
+    </list-frame>
+    <el-dialog :visible.sync="dialog" title="审核课后答疑信息" @close="toClose" width="50%">
+      <data-form :data="form" :fields="formFields" :rules="{}" @save="turnSave">
+        <template #options="{item}">
+          <template v-if="item.model === 'subid'">
+            <el-option v-for="(i, index) in subjectList" :key="index" :label="i.name" :value="i._id"></el-option>
+          </template>
+        </template>
+        <template #custom="{item}">
+          <template v-if="item.model == 'date'">
+            <el-col :span="24">
+              <span v-for="item in dateList" :key="item">{{ item }};</span>
+            </el-col>
+          </template>
+        </template>
+        <template #radios="{item}">
+          <template v-if="item.model === 'status'">
+            <el-radio label="0">待审核</el-radio>
+            <el-radio label="1">审核通过</el-radio>
+            <el-radio label="2">审核拒绝</el-radio>
+          </template>
+        </template>
+      </data-form>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import listFrame from '@frame/layout/admin/list-frame';
+import dataTable from '@frame/components/data-table';
+import dataForm from '@frame/components/form';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: answerapply } = createNamespacedHelpers('answerapply');
+const { mapActions: subject } = createNamespacedHelpers('subject');
+export default {
+  metaInfo: { title: '课后答疑' },
+  name: 'afterClass',
+  props: {},
+  components: {
+    listFrame,
+    dataTable,
+    dataForm,
+  },
+  data: function() {
+    return {
+      opera: [
+        {
+          label: '确定',
+          icon: 'el-icon-check',
+          method: 'check',
+          display: item => {
+            return item.status === '0' ? true : false;
+          },
+        },
+        {
+          label: '删除',
+          icon: 'el-icon-delete',
+          method: 'delete',
+        },
+      ],
+      fields: [
+        { label: '教师', prop: 'teacher' },
+        { label: '科目名称', prop: 'subid', format: true },
+        { label: '状态', prop: 'status', format: i => (i === '0' ? '待审核' : i === '1' ? '审核通过' : '审核拒绝') },
+      ],
+      list: [],
+      total: 0,
+      // 审核
+      dialog: false,
+      form: {},
+      formFields: [
+        { label: '教师', required: true, model: 'teacher' },
+        { label: '科目', required: true, model: 'subid', type: 'select' },
+        { label: '申请时间', required: true, model: 'date', custom: true },
+        { label: '状态', required: true, model: 'status', type: 'radio' },
+      ],
+      // 答疑时间
+      dateList: [],
+      // 科目
+      subjectList: [],
+    };
+  },
+  created() {
+    this.getOtherList();
+    this.search();
+  },
+  methods: {
+    ...subject({ getSubjectList: 'query' }),
+    ...answerapply(['query', 'delete', 'fetch', 'update']),
+    // 查询科目
+    async getOtherList() {
+      let res;
+      res = await this.getSubjectList();
+      if (this.$checkRes(res)) this.$set(this, `subjectList`, res.data);
+    },
+    async search({ skip, limit = 10, ...info } = {}) {
+      let res = await this.query({ skip, limit, ...info });
+      if (this.$checkRes(res)) this.$set(this, `list`, res.data);
+      this.$set(this, `total`, res.total);
+    },
+    // 确定
+    toCheck({ data }) {
+      this.$set(this, `dateList`, data.date);
+      this.$set(this, `form`, data);
+      this.dialog = true;
+    },
+    // 提交
+    async turnSave({ data }) {
+      let res = await this.update(data);
+      if (this.$checkRes(res)) {
+        this.$message({
+          message: '修改信息成功',
+          type: 'success',
+        });
+        this.dialog = false;
+        this.search();
+      }
+    },
+    // 删除
+    async toDelete({ data }) {
+      let res = await this.delete(data.id);
+      if (this.$checkRes(res)) {
+        this.$message({
+          message: '刪除信息成功',
+          type: 'success',
+        });
+        this.search();
+      }
+    },
+    // 关闭
+    toClose() {
+      this.form = {};
+      this.dialog = false;
+    },
+    // 过滤科目名称
+    toFormat({ model, value }) {
+      if (model == 'subid') {
+        const res = this.subjectList.find(f => f.id == value);
+        if (res) return res.name;
+      }
+    },
+  },
+  computed: {
+    mainTitle() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      let sub = meta.sub || '';
+      return `${main}${sub}`;
+    },
+    keyWord() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      return main;
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 3 - 3
src/views/director/detail.vue

@@ -38,14 +38,14 @@ export default {
     fields: [
       { label: '姓名', required: true, model: 'name', tip: '请输入姓名' },
       { label: '性别', required: true, model: 'gender', type: `radio` },
-      { label: '手机', required: true, model: 'phone', options: { maxlength: 11, minlength: 11 }, tip: '请输入11位电话号码' },
+      { label: '手机', required: true, model: 'mobile', options: { maxlength: 11, minlength: 11 }, tip: '请输入11位电话号码' },
       { label: '所属部门', required: true, model: 'department', type: 'select' },
     ],
     rules: {
       name: [{ required: true, message: '请输入姓名' }],
       department: [{ required: true, message: '请选择部门' }],
       gender: [{ required: true, message: '请选择性别' }],
-      phone: [
+      mobile: [
         { required: true, message: '请输入电话' },
         { min: 11, max: 11, message: '请输入11位电话号码', trigger: 'blur' },
       ],
@@ -72,7 +72,7 @@ export default {
       let res;
       let msg;
       if (isNew) {
-        data.openid = new Date().getTime();
+        //data.openid = new Date().getTime();
         res = await this.create(data);
         msg = `${this.keyWord}添加成功`;
       } else {

+ 2 - 2
src/views/director/index.vue

@@ -48,8 +48,8 @@ export default {
       { label: '姓名', prop: 'name' },
       { label: '性别', prop: 'gender' },
       { label: '民族', prop: 'nation' },
-      { label: '手机', prop: 'phone' },
-      { label: '固定电话', prop: 'mobile' },
+      { label: '手机', prop: 'mobile' },
+      { label: '固定电话', prop: 'phone' },
       { label: '身份证号', prop: 'idnumber' },
       { label: '政治面貌', prop: 'politics' },
       { label: '工作单位', prop: 'jobaddress' },