Ver Fonte

更新系统日志

lex-xin há 4 anos atrás
pai
commit
e2ba56526e

+ 24 - 177
src/views/workBenchManager/journal/index.vue

@@ -4,201 +4,48 @@
       <div class="squrt"></div>系统日志
     </h2>
     <div class="m-core">
-      <location-hash v-model="searchForm.group" @change="onTabClick">
-        <el-tabs v-model="activeIndex" @tab-click="onTabClick">
-          <el-tab-pane label="系统通知" v-if="permissionList.journalItem" name="SYSTEM" value="SYSTEM"></el-tab-pane>
-          <el-tab-pane label="学生申诉" v-if="permissionList.studentComplain" name="STUDENT" value="STUDENT"></el-tab-pane>
+      <location-hash v-model="activeIndex">
+        <el-tabs v-model="activeIndex">
+          <el-tab-pane label="系统通知" lazy v-if="permissionList.journalItem" name="SYSTEM">
+            <list :type="activeIndex" />
+          </el-tab-pane>
+          <el-tab-pane label="学生申诉" lazy v-if="permissionList.studentComplain" name="STUDENT">
+            <list :type="activeIndex" />
+          </el-tab-pane>
           <!-- <el-tab-pane label="退团退课" value="MUSICGROUP"></el-tab-pane> -->
-          <el-tab-pane label="请假处理" v-if="permissionList.leaveOperation" name="LEAVE" value="LEAVE"></el-tab-pane>
-          <el-tab-pane label="VIP申请审核" v-if="permissionList.vipApply" name="VIPAPPLY" value="VIPAPPLY"></el-tab-pane>
+          <el-tab-pane label="请假处理" lazy v-if="permissionList.leaveOperation" name="LEAVE">
+            <list :type="activeIndex" />
+          </el-tab-pane>
+          <el-tab-pane label="VIP申请审核" lazy v-if="permissionList.vipApply" name="VIPAPPLY">
+            <list :type="activeIndex" />
+          </el-tab-pane>
         </el-tabs>
       </location-hash>
-      <el-form :inline="true"
-                ref="searchForm"
-               :model="searchForm">
-        <el-form-item prop="readStatus">
-          <el-select v-model.trim="searchForm.readStatus"
-                     clearable
-                     placeholder="日志状态">
-            <el-option label="已读" :value="1"></el-option>
-            <el-option label="未读" :value="0"></el-option>
-          </el-select>
-        </el-form-item>
-        <!-- <el-form-item>
-          <el-date-picker :clearable="false"
-                          v-model="searchForm.month"
-                          type="date"
-                          placeholder="选择年月"></el-date-picker>
-        </el-form-item> -->
-        <el-form-item>
-          <el-button type="danger" @click="onSearch">搜索</el-button>
-        </el-form-item>
-      </el-form>
-      <div class="tableWrap">
-        <el-table style="width: 100%"
-                  :header-cell-style="{background:'#EDEEF0',color:'#444'}"
-                  :data="tableList">
-          <el-table-column label="申请人" prop="userId" width="100px">
-            <template slot-scope="scope">
-              <el-badge :is-dot="!scope.row.readStatus" style="vertical-align: sub;"></el-badge>
-              {{ scope.row.userId }}
-            </template>
-          </el-table-column>
-          <el-table-column align="center" label="申请时间" prop="createOn"></el-table-column>
-          <el-table-column align="center" label="内容" prop="content"></el-table-column>
-          <el-table-column align="center"
-                           label="操作"
-                           fixed="right">
-            <template slot-scope="scope">
-              <el-button type="text" @click="onLook(scope.row)">查看</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-        <pagination :total="pageInfo.total"
-                    :page.sync="pageInfo.page"
-                    :limit.sync="pageInfo.limit"
-                    :page-sizes="pageInfo.page_size"
-                    @pagination="getList" />
-      </div>
     </div>
-
-    <el-dialog :title="dialogTitle"
-               :visible.sync="dialogSystem"
-               width="400px">
-      <el-row>
-        <el-col :span="24">{{ dialogDetail.content }}</el-col>
-      </el-row>
-      <div slot="footer">
-        <el-button type="primary" @click="dialogSystem = false">确 定</el-button>
-      </div>
-    </el-dialog>
-
-    <el-dialog :title="dialogTitle"
-               :visible.sync="dialogStudent"
-               width="500px">
-      <student-model v-if="dialogStudent"
-               :dialogDetail="dialogDetail"
-               @close="dialogStudent = false" />
-    </el-dialog>
-    <!-- 请假 -->
-    <el-dialog :title="dialogTitle"
-               :visible.sync="dialogLeave"
-               width="800px">
-      <leave-model v-if="dialogLeave"
-               :dialogDetail="dialogDetail"
-               @close="dialogLeave = false" />
-    </el-dialog>
-    <!-- 请假 -->
-    <el-dialog :title="dialogTitle"
-               :visible.sync="dialogVipApply"
-               width="500px">
-      <vip-apply-model v-if="dialogVipApply"
-               :dialogDetail="dialogDetail"
-               @close="dialogVipApply = false" />
-    </el-dialog>
   </div>
 </template>
 <script>
-import cleanDeep from 'clean-deep';
-import pagination from "@/components/Pagination/index";
-import { queryCountOfUnread, sysMessageList, setRead } from '@/api/journal'
-import { journalType } from '@/constant'
-import StudentModel from './model/student'
-import LeaveModel from './model/leave'
-import vipApplyModel from './model/vipApply'
 import { permission } from '@/utils/directivePage'
+import List from './model/list'
 export default {
-  components: { pagination, StudentModel, LeaveModel, vipApplyModel },
   name: 'journal',
+  components: { List },
   data () {
-    const query = this.$route.query
+    const query = this.$route.query;
     return {
-      permissionList: {
-        journalItem: permission('/journalItem'),
-        studentComplain: permission('/studentComplain'),
-        musicGroupCourse: permission('/musicGroupCourse'),
-        leaveOperation: permission('/leaveOperation'),
-        vipApply: permission('/vipApply')
-      },
-      dialogSystem: false,
-      dialogStudent: false,
-      dialogLeave: false,
-      dialogVipApply: false,
-      dialogTitle: null,
-      dialogDetail: {},
       activeIndex: query.opt || 'SYSTEM',
-      searchForm: {
-        search: null,
-        group: query.opt || 'SYSTEM',
-        readStatus: 0
+      permissionList: {
+        journalItem: permission("/journalItem"),
+        studentComplain: permission("/studentComplain"),
+        musicGroupCourse: permission("/musicGroupCourse"),
+        leaveOperation: permission("/leaveOperation"),
+        vipApply: permission("/vipApply")
       },
-      tableList: [],
-      pageInfo: {
-        // 分页规则
-        limit: 10, // 限制显示条数
-        page: 1, // 当前页
-        total: 0, // 总条数
-        page_size: [10, 20, 40, 50] // 选择限制显示条数
-      }
     }
   },
   mounted() {
-    this.getList()
-    console.log(this.searchForm.group)
   },
   methods: {
-    onSearch() {
-      this.pageInfo.page = 1
-      this.getList()
-    },
-    onTabClick(elm) {
-      // 判断 group 是否一致
-      const searchForm = this.searchForm
-      console.log(searchForm)
-      this.activeIndex = searchForm.group
-      if(elm.$attrs.value == searchForm.group) {
-        return
-      }
-      searchForm.group = elm.$attrs.value
-      this.getList()
-    },
-    async getList() {
-      const pageInfo = this.pageInfo
-      const params = Object.assign({}, this.searchForm)
-      params.rows = pageInfo.limit
-      params.page = pageInfo.page
-      await sysMessageList(params).then(res => {
-        if (res.code == 200) {
-          this.tableList = res.data.rows
-          pageInfo.total = res.data.total
-        }
-      })
-    },
-    async onLook(row) {
-      // 把当前消息变成已读
-      if(row.readStatus != 1) {
-        await setRead({ id: row.id })
-        row.readStatus = 1 // 手动把消息变一下状态
-      }
-      this.dialogTitle = journalType[row.group]
-      this.dialogDetail = row
-      switch(row.group) {
-        case 'SYSTEM':
-          this.dialogSystem = true
-          break;
-        case 'STUDENT':
-          this.dialogStudent = true
-          break;
-        case 'LEAVE':
-          this.dialogLeave = true
-          break;
-        case 'VIPAPPLY':
-          this.dialogVipApply = true
-          break;
-      }
-    }
   }
 }
-</script>
-<style lang="scss" scoped>
-</style>
+</script>

+ 179 - 0
src/views/workBenchManager/journal/model/list.vue

@@ -0,0 +1,179 @@
+<template>
+  <div>
+    <save-form :inline="true" ref="searchForm" :model="searchForm">
+      <el-form-item prop="readStatus">
+        <el-select
+          v-model.trim="searchForm.readStatus"
+          clearable
+          placeholder="日志状态"
+        >
+          <el-option label="已读" :value="1"></el-option>
+          <el-option label="未读" :value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="danger" @click="onSearch">搜索</el-button>
+      </el-form-item>
+    </save-form>
+    <div class="tableWrap">
+      <el-table
+        style="width: 100%"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        :data="tableList"
+      >
+        <el-table-column label="申请人" prop="userId" width="100px">
+          <template slot-scope="scope">
+            <el-badge
+              :is-dot="!scope.row.readStatus"
+              style="vertical-align: sub;"
+            ></el-badge>
+            {{ scope.row.userId }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="申请时间"
+          prop="createOn"
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="内容"
+          prop="content"
+        ></el-table-column>
+        <el-table-column align="center" label="操作" fixed="right">
+          <template slot-scope="scope">
+            <el-button type="text" @click="onLook(scope.row)">查看</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        :total="pageInfo.total"
+        :page.sync="pageInfo.page"
+        :limit.sync="pageInfo.limit"
+        :page-sizes="pageInfo.page_size"
+        @pagination="getList"
+      />
+    </div>
+    <el-dialog :title="dialogTitle" :visible.sync="dialogSystem" width="400px">
+      <el-row>
+        <el-col :span="24">{{ dialogDetail.content }}</el-col>
+      </el-row>
+      <div slot="footer">
+        <el-button type="primary" @click="dialogSystem = false"
+          >确 定</el-button
+        >
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="dialogTitle" :visible.sync="dialogStudent" width="500px">
+      <student-model
+        v-if="dialogStudent"
+        :dialogDetail="dialogDetail"
+        @close="dialogStudent = false"
+      />
+    </el-dialog>
+    <!-- 请假 -->
+    <el-dialog :title="dialogTitle" :visible.sync="dialogLeave" width="800px">
+      <leave-model
+        v-if="dialogLeave"
+        :dialogDetail="dialogDetail"
+        @close="dialogLeave = false"
+      />
+    </el-dialog>
+    <!-- 请假 -->
+    <el-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogVipApply"
+      width="500px"
+    >
+      <vip-apply-model
+        v-if="dialogVipApply"
+        :dialogDetail="dialogDetail"
+        @close="dialogVipApply = false"
+      />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import pagination from "@/components/Pagination/index";
+import { queryCountOfUnread, sysMessageList, setRead } from "@/api/journal";
+import { journalType } from "@/constant";
+import StudentModel from "./student";
+import LeaveModel from "./leave";
+import vipApplyModel from "./vipApply";
+export default {
+  components: { pagination, StudentModel, LeaveModel, vipApplyModel },
+  props: ["type"],
+  data() {
+    return {
+      dialogSystem: false,
+      dialogStudent: false,
+      dialogLeave: false,
+      dialogVipApply: false,
+      dialogTitle: null,
+      dialogDetail: {},
+      searchForm: {
+        search: null,
+        group: "SYSTEM",
+        readStatus: 0
+      },
+      tableList: [],
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      }
+    };
+  },
+  mounted() {
+    const query = this.$route.query;
+    this.searchForm.group = query.opt || this.type;
+
+    this.getList();
+  },
+  methods: {
+    onSearch() {
+      this.pageInfo.page = 1;
+      this.getList();
+    },
+    async getList() {
+      const pageInfo = this.pageInfo;
+      const params = Object.assign({}, this.searchForm);
+      params.rows = pageInfo.limit;
+      params.page = pageInfo.page;
+      await sysMessageList(params).then(res => {
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          pageInfo.total = res.data.total;
+        }
+      });
+    },
+    async onLook(row) {
+      // 把当前消息变成已读
+      if (row.readStatus != 1) {
+        await setRead({ id: row.id });
+        row.readStatus = 1; // 手动把消息变一下状态
+      }
+      this.dialogTitle = journalType[row.group];
+      this.dialogDetail = row;
+      switch (row.group) {
+        case "SYSTEM":
+          this.dialogSystem = true;
+          break;
+        case "STUDENT":
+          this.dialogStudent = true;
+          break;
+        case "LEAVE":
+          this.dialogLeave = true;
+          break;
+        case "VIPAPPLY":
+          this.dialogVipApply = true;
+          break;
+      }
+    }
+  }
+};
+</script>