Browse Source

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

lrf402788946 4 years ago
parent
commit
b9da693714
3 changed files with 164 additions and 0 deletions
  1. 7 0
      src/router/index.js
  2. 2 0
      src/store/index.js
  3. 155 0
      src/views/centerTeaching/index.vue

+ 7 - 0
src/router/index.js

@@ -473,6 +473,13 @@ const routes = [
         meta: { title: '通知查看' },
         component: () => import('@/views/receive/index.vue'),
       },
+      // 新增在线课堂
+      {
+        path: '/centerTeaching/index',
+        name: 'centerTeaching_index',
+        meta: { title: '在线课堂' },
+        component: () => import('@/views/centerTeaching/index.vue'),
+      },
     ],
   },
   {

+ 2 - 0
src/store/index.js

@@ -34,6 +34,7 @@ import dirPlan from '@frame/store/dir-plan';
 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 * as ustate from '@frame/store/user/state';
 import * as umutations from '@frame/store/user/mutations';
 import * as dostate from '@frame/store/setting/state';
@@ -80,6 +81,7 @@ export default new Vuex.Store({
     uploadtask,
     notice,
     classtype,
+    liveroom,
   },
   state: { ...ustate, ...dostate },
   mutations: { ...umutations, ...domutations },

+ 155 - 0
src/views/centerTeaching/index.vue

@@ -0,0 +1,155 @@
+<template>
+  <div id="index">
+    <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 #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: liveroom } = createNamespacedHelpers('liveroom');
+const { mapActions: subject } = createNamespacedHelpers('subject');
+export default {
+  metaInfo: { title: '在线课堂' },
+  name: 'index',
+  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: 'number' },
+        { label: '科目名称', prop: 'subid', format: true },
+        { label: '申请说明', prop: 'reason' },
+        { label: '状态', prop: 'status', format: i => (i === '0' ? '待审核' : i === '1' ? '审核通过' : '审核拒绝') },
+      ],
+      list: [],
+      total: 0,
+      // 审核
+      dialog: false,
+      form: {},
+      formFields: [
+        { label: '房间号', required: true, model: 'number' },
+        { label: '科目', required: true, model: 'subid', type: 'select' },
+        { label: '说明', required: true, model: 'reason', type: 'textarea' },
+        { label: '状态', required: true, model: 'status', type: 'radio' },
+      ],
+      // 科目
+      subjectList: [],
+    };
+  },
+  created() {
+    this.getOtherList();
+    this.search();
+  },
+  methods: {
+    ...subject({ getSubjectList: 'query' }),
+    ...liveroom(['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 }) {
+      console.log(data);
+      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>