Ver Fonte

学生日志

xiatian há 4 anos atrás
pai
commit
3bc9de8e90
1 ficheiros alterados com 151 adições e 8 exclusões
  1. 151 8
      src/modules/examwork/view/student.vue

+ 151 - 8
src/modules/examwork/view/student.vue

@@ -288,12 +288,13 @@
             label="学习中心"
             sortable
           ></el-table-column>
-          <el-table-column
-            prop="updateTime"
-            width="168"
-            label="更新时间"
-            sortable
-          ></el-table-column>
+          <el-table-column width="168" label="更新时间" sortable>
+            <template slot-scope="scope">
+              <el-button @click="gotoOperateLog(scope.row.id)" type="text">{{
+                scope.row.updateTime
+              }}</el-button>
+            </template>
+          </el-table-column>
           <el-table-column width="50" label="状态">
             <span slot-scope="scope">
               <span v-if="scope.row.enable">
@@ -613,6 +614,80 @@
         >
           <img :src="photo.url" height="100%" width="100%" />
         </el-dialog>
+
+        <el-dialog
+          title="学生日志"
+          width="60%"
+          :visible.sync="stuLogDialog"
+          v-loading="studentLog.loading"
+          :close-on-click-modal="false"
+          element-loading-text="拼命加载中"
+        >
+          <!-- 表单 -->
+          <el-form inline :model="studentLog.formSearch">
+            <el-form-item label="操作内容">
+              <el-input
+                placeholder="请输入操作内容"
+                v-model="studentLog.formSearch.operate"
+                style="width: 180px"
+              />
+            </el-form-item>
+            <el-form-item label="操作时间">
+              <el-date-picker
+                class="input"
+                v-model="studentLog.timeRange"
+                type="datetimerange"
+                start-placeholder="开始日期"
+                range-separator="至"
+                end-placeholder="结束日期"
+                value-format="yyyy/MM/dd HH:mm:ss"
+                :clearable="false"
+                size="small"
+                @change="changeTimeRange"
+              ></el-date-picker>
+            </el-form-item>
+            <el-form-item>
+              <el-button
+                size="small"
+                type="primary"
+                icon="el-icon-search"
+                @click="loghandleSearchBtn"
+              >
+                查询
+              </el-button>
+            </el-form-item>
+          </el-form>
+
+          <div class="block-seperator"></div>
+          <!-- 页面列表 -->
+          <el-table
+            :data="studentLog.tableData"
+            border
+            resizable
+            stripe
+            style="width: 100%;"
+          >
+            <el-table-column width="200" prop="operateTime" label="操作时间">
+            </el-table-column>
+            <el-table-column width="200" prop="operateIp" label="IP">
+            </el-table-column>
+            <el-table-column width="200" prop="operateClient" label="操作端">
+            </el-table-column>
+            <el-table-column prop="operate" label="操作内容"> </el-table-column>
+          </el-table>
+          <div class="page pull-right">
+            <el-pagination
+              v-if="studentLog.paginationShow"
+              @current-change="loghandleCurrentChange"
+              :current-page="studentLog.currentPage"
+              :page-size="studentLog.pageSize"
+              :page-sizes="[10, 20, 50, 100, 200, 300]"
+              @size-change="loghandleSizeChange"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="studentLog.total"
+            />
+          </div>
+        </el-dialog>
       </div>
     </div>
   </section>
@@ -622,7 +697,8 @@
 import {
   CORE_API,
   EXAM_WORK_API,
-  EXCHANGE_API
+  EXCHANGE_API,
+  REPORTS_API
 } from "@/constants/constants.js";
 import { mapState } from "vuex";
 
@@ -678,6 +754,7 @@ export default {
       pageSize: 10,
       total: 10,
       photoDialog: false,
+      stuLogDialog: false,
       photo: { url: "" },
 
       unbindStudentCodeDialog: false,
@@ -726,7 +803,21 @@ export default {
       },
       examStageDisabled4Search: true,
       queryExamStages4SearchLoading: false,
-      examStageList4Search: []
+      examStageList4Search: [],
+      studentLog: {
+        loading: false,
+        timeRange: [],
+        paginationShow: false,
+        formSearch: {
+          studentId: "",
+          startTime: null,
+          endTime: null
+        },
+        tableData: [],
+        currentPage: 1,
+        pageSize: 10,
+        total: 10
+      }
     };
   },
   computed: {
@@ -750,6 +841,58 @@ export default {
     }
   },
   methods: {
+    gotoOperateLog(studentId) {
+      this.studentLog.formSearch.studentId = studentId;
+      this.studentLog.tableData = [];
+      this.studentLog.total = 0;
+      this.studentLog.currentPage = 1;
+      this.stuLogDialog = true;
+      this.logsearchForm();
+    },
+    changeTimeRange(e) {
+      if (e && e.length > 0) {
+        this.studentLog.formSearch.startTime = e[0];
+        this.studentLog.formSearch.endTime = e[1];
+      } else {
+        this.studentLog.formSearch.startTime = "";
+        this.studentLog.formSearch.endTime = "";
+      }
+    },
+    loghandleSearchBtn() {
+      this.studentLog.currentPage = 1;
+      this.logsearchForm();
+    },
+    loghandleSizeChange(val) {
+      this.studentLog.pageSize = val;
+      this.studentLog.currentPage = 1;
+      this.logsearchForm();
+    },
+    loghandleCurrentChange(val) {
+      this.studentLog.currentPage = val;
+      this.logsearchForm();
+    },
+    //查询
+    logsearchForm() {
+      this.studentLog.loading = true;
+      var url =
+        REPORTS_API +
+        "/studentOperate/page/" +
+        this.studentLog.currentPage +
+        "/" +
+        this.studentLog.pageSize;
+      this.$httpWithMsg
+        .get(url, { params: this.studentLog.formSearch })
+        .then(response => {
+          this.studentLog.tableData = response.data.list;
+          this.studentLog.total = response.data.total;
+          this.studentLog.loading = false;
+
+          this.$nextTick(function() {
+            this.studentLog.paginationShow = true;
+          });
+        })
+        .finally(() => (this.studentLog.loading = false));
+    },
     resetPasswordByOrgId() {
       this.orgList4RestPassword = [];
       this.resetPasswordByOrgIdForm.orgId = null;