diff --git a/leave-school-vue/src/api/handling-api.js b/leave-school-vue/src/api/handling-api.js
deleted file mode 100644
index 81f5de2..0000000
--- a/leave-school-vue/src/api/handling-api.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import request from '@/utils/request'
-
-export function getList(params) {
-  return request({
-    url: '/api/statistical/handling/list-api',
-    method: 'get',
-    params
-  })
-}
-export function getItem(params) {
-  return request({
-    url: '/api/statistical/handling/get-item',
-    method: 'get',
-    params
-  })
-}
diff --git a/leave-school-vue/src/api/leavestudent-api.js b/leave-school-vue/src/api/leavestudent-api.js
index 2936d8f..8809120 100644
--- a/leave-school-vue/src/api/leavestudent-api.js
+++ b/leave-school-vue/src/api/leavestudent-api.js
@@ -1,9 +1,17 @@
 import request from '@/utils/request'
 
-export function getAuditList(params) {
+export function getPage(params) {
   return request({
     url: '/api/leaveprocess/leavestudent/auditlist-api',
     method: 'get',
     params
   })
 }
+
+export function saveAudit(data) {
+  return request({
+    url: '/api/leaveprocess/leavestudent/save-audit',
+    method: 'post',
+    data
+  })
+}
diff --git a/leave-school-vue/src/components/AuditStudentList/index.vue b/leave-school-vue/src/components/AuditStudentList/index.vue
index 3db11f7..fd32210 100644
--- a/leave-school-vue/src/components/AuditStudentList/index.vue
+++ b/leave-school-vue/src/components/AuditStudentList/index.vue
@@ -92,7 +92,7 @@
 
 <script>
 import { getBjListByZy } from '@/api/class-api'
-import { getAuditList } from '@/api/leavestudent-api'
+import { getPage } from '@/api/leavestudent-api'
 import { getDeptList as getAllDeptList } from '@/api/department-api'
 import { getZyListByYx } from '@/api/major-api'
 import waves from '@/directive/waves' // 水波纹指令
@@ -176,7 +176,7 @@
       })
     },
     handlePageList() {
-      crudPageList(this, getAuditList)
+      crudPageList(this, getPage)
     },
     handleReset() {
       resetForm(this.listQuery)
diff --git a/leave-school-vue/src/mock/handling.js b/leave-school-vue/src/mock/handling.js
deleted file mode 100644
index 32cd9dd..0000000
--- a/leave-school-vue/src/mock/handling.js
+++ /dev/null
@@ -1,113 +0,0 @@
-import Mock from 'mockjs'
-import { param2Obj } from '@/utils'
-
-const recordList = Mock.mock({
-  'list|26': [{
-    'id': '@increment',
-    'xh': '@word(5)',
-    'xm': '@cword(2, 3)',
-    'yx': '@cword(6, 15)',
-    'zy': '@cword(6, 15)',
-    'bj': '@cword(6, 15)',
-    'xslb': '@cword(3, 5)',
-    'sfzylx|1': ['准予', '不准予'],
-    'shjllist|4': [{
-      'shhj': '@cword(6, 8)',
-      'shzt|1': ['通过', '不通过'],
-      'shyj|3': [{
-        'shzt|1': ['通过', '不通过'],
-        'shsj': '@datetime',
-        'shr': '@cword(2, 3)',
-        'shyj': '@cword(6, 10)'
-      }]
-    }],
-    'blbmlist': [{
-      'bmmc': '后勤处',
-      'shjg|1': ['—', '×', '√']
-    },
-    {
-      'bmmc': '财务处',
-      'shjg|1': ['—', '×', '√']
-    },
-    {
-      'bmmc': '学生处',
-      'shjg|1': ['—', '×', '√']
-    },
-    {
-      'bmmc': '图书馆',
-      'shjg|1': ['—', '×', '√']
-    }]
-  }]
-}).list
-
-export default{
-  getList: config => {
-    const { pcmc, xh, xm, sfzylx, yx, zy, bj, xslb, pageIndex = 1, pageSize = 20 } = param2Obj(config.url)
-    const mockList = recordList.filter(item => {
-      if (pcmc && item.pcmc + '' !== pcmc + '') return false
-      if (xh && item.xh !== xh) return false
-      if (xm && item.xm !== xm) return false
-      if (sfzylx && item.sfzylx !== sfzylx) return false
-      if (yx && item.yx !== yx) return false
-      if (zy && item.zy !== zy) return false
-      if (bj && item.bj !== bj) return false
-      if (xslb && item.xslb !== xslb) return false
-      return true
-    })
-
-    const pageList = mockList.filter((item, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1))
-    return {
-      items: pageList,
-      recordCount: mockList.length,
-      code: 200
-    }
-  },
-  getAllList: config => {
-    return {
-      items: recordList,
-      code: 200
-    }
-  },
-  getItem: config => {
-    const { id } = param2Obj(config.url)
-    const mockList = recordList.filter(item => item.id + '' === id + '')
-    return {
-      data: mockList.length > 0 ? mockList[0] : null,
-      code: 200
-    }
-  },
-  createData: config => {
-    const record = JSON.parse(config.body)
-    if (!record.id) {
-      record.id = '' + parseInt(Math.random() * 100) + 1024 // mock a id
-      recordList.unshift(record)
-    } else {
-      for (let i = 0; i < recordList.length; i++) {
-        if (recordList[i].id + '' === record.id + '') {
-          recordList.splice(i, 1, record)
-          break
-        }
-      }
-    }
-    return {
-      item: record,
-      code: 200
-    }
-  },
-  deleteData: config => {
-    const record = JSON.parse(config.body)
-    let index = -1
-    for (let i = 0; i < recordList.length; i++) {
-      if (recordList[i].id + '' === record.id + '') {
-        index = i
-        break
-      }
-    }
-    if (index > -1) {
-      recordList.splice(index, 1)
-    }
-    return {
-      code: 200
-    }
-  }
-}
diff --git a/leave-school-vue/src/mock/index.js b/leave-school-vue/src/mock/index.js
index f4c79a2..300b502 100644
--- a/leave-school-vue/src/mock/index.js
+++ b/leave-school-vue/src/mock/index.js
@@ -13,7 +13,6 @@
 import instructorApi from './instructor'
 import newspublishApi from './newspublish'
 
-import handlingApi from './handling'
 import leavestudentApi from './leavestudent'
 import nodereportApi from './nodereport'
 import deptreportApi from './deptreport'
@@ -107,12 +106,9 @@
 Mock.mock(/\/api\/news\/newspublish\/delete-newspublish/, 'delete', newspublishApi.deleteData)
 Mock.mock(/\/api\/news\/newspublish\/get-item/, 'get', newspublishApi.getItem)
 
-// 办理情况查询
-Mock.mock(/\/api\/statistical\/handling\/list-api/, 'get', handlingApi.getList)
-Mock.mock(/\/api\/statistical\/handling\/get-item/, 'get', handlingApi.getItem)
-
 // 离校学生审核查询
 Mock.mock(/\/api\/leaveprocess\/leavestudent\/auditlist-api/, 'get', leavestudentApi.getList)
+Mock.mock(/\/api\/leaveprocess\/leavestudent\/save-audit/, 'post', leavestudentApi.saveAudit)
 
 // 环节统计报表查询
 Mock.mock(/\/api\/statistical\/nodereport\/list-api/, 'get', nodereportApi.getList)
diff --git a/leave-school-vue/src/mock/leavestudent.js b/leave-school-vue/src/mock/leavestudent.js
index 17eefb4..919aef4 100644
--- a/leave-school-vue/src/mock/leavestudent.js
+++ b/leave-school-vue/src/mock/leavestudent.js
@@ -18,7 +18,34 @@
     'studentType': '@cword(6, 7)',
     'leaveSchoolType': '@cword(6, 7)',
     'graduateYear': '@cword(6, 7)',
-    'graduateMonth': '@cword(6, 7)'
+    'graduateMonth': '@cword(6, 7)',
+    'allowedLeave|1': ['准予', '不准予'],
+    'auditLogList|4': [{
+      'auditNode|1': ['后勤处', '财务处', '学生处', '图书馆'],
+      'auditResult|1': ['通过', '不通过'],
+      'auditOpinionList|3': [{
+        'auditResult|1': ['通过', '不通过'],
+        'auditTime': '@datetime',
+        'auditor': '@cword(2, 3)',
+        'auditOpinion': '@cword(6, 10)'
+      }]
+    }],
+    'nodelist': [{
+      'auditNode': '后勤处',
+      'auditResult|1': ['—', '×', '√']
+    },
+    {
+      'auditNode': '财务处',
+      'auditResult|1': ['—', '×', '√']
+    },
+    {
+      'auditNode': '学生处',
+      'auditResult|1': ['—', '×', '√']
+    },
+    {
+      'auditNode': '图书馆',
+      'auditResult|1': ['—', '×', '√']
+    }]
   }]
 }).list
 
@@ -56,9 +83,26 @@
     'label': '其他'
   }]
 )
+const auditResultList = Mock.mock(
+  [{
+    'value': 'TO_BE_AUDITED',
+    'label': '待审核'
+  },
+  {
+    'value': 'APPROVED',
+    'label': '审核通过'
+  },
+  {
+    'value': 'NOT_PASSED',
+    'label': '审核不通过'
+  }]
+)
 export default{
   getList: config => {
-    const { studentNumber, name, department, major, clazz, leaveSchoolBatch, studentType, leaveSchoolType, graduateYear, graduateMonth, pageIndex = 1, pageSize = 20 } = param2Obj(config.url)
+    const { studentNumber, name, department, major, clazz,
+      leaveSchoolBatch, studentType, leaveSchoolType, graduateYear, graduateMonth,
+      auditNode, allowedLeave, auditResult,
+      pageIndex = 1, pageSize = 20 } = param2Obj(config.url)
     const mockList = clsList.filter(item => {
       if (studentNumber && item.studentNumber && item.studentNumber !== studentNumber) return false
       if (name && item.name && item.name !== name) return false
@@ -70,6 +114,9 @@
       if (leaveSchoolType && item.leaveSchoolType && item.leaveSchoolType !== leaveSchoolType) return false
       if (graduateYear && item.graduateYear && item.graduateYear !== graduateYear) return false
       if (graduateMonth && item.graduateMonth && item.graduateMonth !== graduateMonth) return false
+      if (auditNode && item.auditNode && item.auditNode !== auditNode) return false
+      if (allowedLeave && item.allowedLeave && item.allowedLeave !== allowedLeave) return false
+      if (auditResult && item.auditResult && item.auditResult !== auditResult) return false
       return true
     })
 
@@ -79,9 +126,16 @@
       leaveSchoolTypeList: leaveSchoolTypeList,
       studentTypeList: studentTypeList,
       leaveSchoolBatchList: leaveSchoolBatchList,
+      auditResultList: auditResultList,
       items: pageList,
       recordCount: mockList.length,
       code: 200
     }
+  },
+  saveAudit: config => {
+    return {
+      code: 200
+    }
   }
 }
+
diff --git a/leave-school-vue/src/views/procedures/batchAudit/index.vue b/leave-school-vue/src/views/procedures/batchAudit/index.vue
new file mode 100644
index 0000000..0871186
--- /dev/null
+++ b/leave-school-vue/src/views/procedures/batchAudit/index.vue
@@ -0,0 +1,508 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-row :gutter="20">
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.leaveSchoolBatch" placeholder="批次名称">
+            <el-option v-for="item in  pagedata.leaveSchoolBatchList" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.auditNode" placeholder="审核环节">
+            <el-option v-for="item in  auditNodeList" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.studentType" placeholder="学生类别">
+            <el-option v-for="item in pagedata.studentTypeList" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="学号" v-model="listQuery.studentNumber">
+          </el-input>
+        </el-col>
+        <el-col :span="4">
+          <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">查询</el-button>
+          <el-button class="filter-item" style="margin-left: 10px;" @click="handleReset" type="primary" icon="el-icon-edit">重置</el-button>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="姓名" v-model="listQuery.name">
+          </el-input>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable @change="initMajorList" class="filter-item" v-model="listQuery.department" placeholder="院系">
+            <el-option v-for="item in  pagedata.departmentList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable @change="initBjList" class="filter-item" v-model="listQuery.major" placeholder="专业">
+            <el-option v-for="item in  majorList" :key="item.id" :label="item.zymc" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.clazz" placeholder="班级">
+            <el-option v-for="item in  clazzList" :key="item.id" :label="item.bjmc" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="showBatchAudit">批量审核</el-button>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.allowedLeave" placeholder="是否准予离校">
+            <el-option label="准予" value="1"></el-option>
+            <el-option label="不准予" value="0"></el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.auditResult" placeholder="审核环节状态">
+            <el-option v-for="item in pagedata.auditResultList" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.graduateYear" placeholder="毕业年份">
+            <el-option v-for="n in  10" :key="year-n" :label="year-n" :value="year-n">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.graduateMonth" placeholder="毕业月份">
+            <el-option v-for="n in  12" :key="n" :label="n" :value="n">
+            </el-option>
+          </el-select>
+        </el-col>
+      </el-row>
+    </div>
+    <el-table :height="height" :data="items" v-loading="listLoading" @selection-change="handleSelectionChange" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column type="selection" align="center"></el-table-column>
+      <el-table-column fixed align="center" label='序号' width="95">
+        <template slot-scope="scope">
+          {{scope.row.rownum}}
+        </template>
+      </el-table-column>
+      <el-table-column label="学号" align="center">
+        <template slot-scope="scope">
+          {{scope.row.studentNumber}}
+        </template>
+      </el-table-column>
+      <el-table-column label="姓名" align="center">
+        <template slot-scope="scope">
+          {{scope.row.name}}
+        </template>
+      </el-table-column>
+      <el-table-column label="院系" align="center">
+        <template slot-scope="scope">
+          {{scope.row.department}}
+        </template>
+      </el-table-column>
+      <el-table-column label="专业" align="center">
+        <template slot-scope="scope">
+          {{scope.row.major}}
+        </template>
+      </el-table-column>
+      <el-table-column label="班级" align="center">
+        <template slot-scope="scope">
+          {{scope.row.clazz}}
+        </template>
+      </el-table-column>
+      <el-table-column label="学生类别" align="center">
+        <template slot-scope="scope">
+          {{scope.row.studentType}}
+        </template>
+      </el-table-column>
+      <el-table-column v-for="auditNode in colList" :label="auditNode" :key="auditNode" :prop="auditNode" align="center">
+      </el-table-column>
+      <el-table-column label="是否准予离校" align="center">
+        <template slot-scope="scope">
+          {{scope.row.allowedLeave}}
+        </template>
+      </el-table-column>
+      <el-table-column
+        fixed="right"
+        header-align="center"
+        align="center"
+        width="150"
+        label="操作">
+        <template slot-scope="scope">
+          <el-button type="text" size="small" @click="showSingleAudit(scope.row, false)">审核</el-button>
+          <el-button type="text" size="small" @click="showTrace(scope.row, false)">办理轨迹</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <div class="pagination-container">
+      <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listQuery.pageIndex" 
+      :page-sizes="[10,20,30, 50]" :page-size="listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="recordCount">
+      </el-pagination>
+    </div>
+    <el-dialog title="审核意见" :visible.sync="dialogFormVisible" width="80%" top="10vh">
+      <div class="J_conWarp g-lr-mg">
+          <div id="dcMain">
+          <div id="index" class="mainBox" style=" height: auto;">
+            <table width="100%" border="0" cellspacing="0" cellpadding="0" class="indexBoxTwo">
+              <tbody>
+                <tr>
+                  <td width="85%" valign="top" class="pr">
+                    <div class="indexBox">
+                      <div class="boxTitle">基本信息</div>
+                      <ul>
+                        <table width="100%" border="0" cellspacing="0" cellpadding="7" class="tableBasic">
+                          <tbody>
+                            <tr>
+                              <td width="120">学号：</td>
+                              <td><b>{{ stuInfo.studentNumber }}</b></td>
+                              <td width="100">姓名：</td>
+                              <td><b>{{ stuInfo.name }}</b></td>
+                            </tr>
+                            <tr>
+                              <td>院系：</td>
+                              <td><b>{{ stuInfo.department }}</b></td>
+                              <td>专业：</td>
+                              <td><b>{{ stuInfo.major }}</b></td>
+                            </tr>
+                            <tr>
+                              <td>班级：</td>
+                              <td><b>{{ stuInfo.clazz }}</b></td>
+                              <td>学生类别：</td>
+                              <td><b>{{ stuInfo.studentType }}</b></td>
+                            </tr>
+                          </tbody>
+                        </table>
+                      </ul>
+                    </div>
+                  </td>
+                  <td valign="top" class="pl">
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+            
+            <div class="indexBox">
+              <div class="boxTitle">审核记录</div>
+              <ul>
+                <table width="100%" border="0" cellspacing="0" cellpadding="7" class="tableBasic">
+                  <tbody>
+                    <tr>
+                      <th width="35%">审核环节</th>
+                      <th>审核意见</th>
+                    </tr>
+                    <tr v-for="auditLog in auditLogList" :key="auditLog.auditTime">
+                      <td align="center">
+                        {{auditLog.auditNode}} 
+                        [<font color="green" v-if="auditLog.auditResult == '通过'">{{auditLog.auditResult}}</font>
+                        <font color="red" v-else>{{auditLog.auditResult}}</font>]
+                      </td>
+                      <td align="left">
+                        <template v-for="opinion in auditLog.auditOpinionList">
+                          [<font color="green" v-if="opinion.auditResult == '通过'">{{opinion.auditResult}}</font>
+                          <font color="red" v-else>{{opinion.auditResult}}</font>&nbsp;{{opinion.auditTime}}]
+                          【{{auditLog.auditNode}}】
+                          审核意见:{{opinion.auditOpinion}}
+                          <br>
+                        </template>
+                      </td>
+                    </tr>                    
+                  </tbody>
+                </table>
+              </ul>
+            </div>
+            
+          </div>
+        </div>
+      </div>
+      <div slot="footer" class="dialog-footer" style="text-align:center">
+        <el-button @click="dialogFormVisible = false">关闭</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog title="审核" :visible.sync="auditFormVisible" width="80%" top="10vh">
+      <div class="J_conWarp g-lr-mg">
+          <div id="dcMain">
+          <div id="index" class="mainBox" style=" height: auto;">
+            <table v-show="stuInfoVisible" width="100%" border="0" cellspacing="0" cellpadding="0" class="indexBoxTwo">
+              <tbody>
+                <tr>
+                  <td width="65%" valign="top" class="pr">
+                    <div class="indexBox">
+                      <div class="boxTitle">基本信息</div>
+                      <ul>
+                        <table width="100%" border="0" cellspacing="0" cellpadding="7" class="tableBasic">
+                          <tbody>
+                            <tr>
+                              <td width="120">学号：</td>
+                              <td><b>{{ stuInfo.studentNumber }}</b></td>
+                              <td width="100">姓名：</td>
+                              <td><b>{{ stuInfo.name }}</b></td>
+                            </tr>
+                            <tr>
+                              <td>院系：</td>
+                              <td><b>{{ stuInfo.department }}</b></td>
+                              <td>专业：</td>
+                              <td><b>{{ stuInfo.major }}</b></td>
+                            </tr>
+                            <tr>
+                              <td>班级：</td>
+                              <td><b>{{ stuInfo.clazz }}</b></td>
+                              <td>学生类别：</td>
+                              <td><b>{{ stuInfo.studentType }}</b></td>
+                            </tr>
+                          </tbody>
+                        </table>
+                      </ul>
+                    </div>
+                  </td>
+                  <td valign="top" class="pl">
+                    <div class="indexBox">
+                      <div class="boxTitle">审核记录</div>
+                      <ul>
+                        <table width="100%" border="0" cellspacing="0" cellpadding="7" class="tableBasic">
+                          <tbody>
+                            <tr>
+                              <th width="15%">结果</th>
+                              <th width="55%">审核意见</th>
+                              <th width="35%">操作时间</th>
+                            </tr>
+                            <tr v-for="item in currentNodeLogList">
+                              <td align="center">
+                                <font color="green" v-if="item.auditResult == '通过'">{{item.auditResult}}</font>
+                                <font color="red" v-else>{{item.auditResult}}</font>
+                              </td>
+                              <td align="center">
+                                {{item.auditOpinion}}
+                              </td>
+                              <td align="center">
+                                {{item.auditTime}}
+                              </td>
+                            </tr>
+                          </tbody>
+                        </table>
+                      </ul>
+                    </div>
+                  </td>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+            <div class="indexBox">
+              <ul>
+                <table width="100%" border="0" cellspacing="0" cellpadding="7" class="tableBasic">
+                  <tbody>
+                    <tr>
+                      <td align="center"><b>审核意见:</b></td>
+                      <td>
+                        <textarea cols="80" rows="5" v-model="auditMsg.auditOpinion" class="textArea"></textarea></td>
+                    </tr>
+                  </tbody>
+                </table>
+              </ul>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div slot="footer" class="dialog-footer" style="text-align:center">
+        <el-button type="primary" @click="auditPass()">审核通过</el-button>
+        <el-button type="primary" @click="auditReject()">审核不通过</el-button>
+        <el-button @click="auditFormVisible = false">关闭</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getBjListByZy } from '@/api/class-api'
+import { getPage, saveAudit } from '@/api/leavestudent-api'
+import { getZyListByYx } from '@/api/major-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+export default {
+  name: 'class',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      auditNodeList: [{
+        'value': '1',
+        'label': '后勤处'
+      },
+      {
+        'value': '2',
+        'label': '财务处'
+      },
+      {
+        'value': '3',
+        'label': '学生处'
+      },
+      {
+        'value': '4',
+        'label': '图书馆'
+      }],
+      auditMsg: {},
+      stuInfoVisible: true,
+      auditFormVisible: false,
+      year: (new Date()).getFullYear() + 2,
+      majorList: [],
+      clazzList: [],
+      colList: [],
+      stuInfo: {},
+      auditLogList: [],
+      currentNodeLogList: [],
+      multipleSelection: []
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    // this.handlePageList()
+    this.listLoading = false
+    this.height = window.innerHeight - 316
+  },
+  methods: {
+    handleSelectionChange(val) {
+      this.multipleSelection = val
+    },
+    initMajorList() {
+      getZyListByYx({ yx: this.listQuery.department }).then(response => {
+        this.majorList = response.items
+        // TODO 坑，this.listQuery.zy == null 直接赋值，专业下拉框选择出bug，无法选择，原因未知
+        for (const attr in this.listQuery) {
+          if (attr === 'zy') {
+            this.listQuery['zy'] = null
+          }
+        }
+      })
+    },
+    initBjList(cleanable = true) {
+      getBjListByZy({ zy: this.listQuery.major }).then(response => {
+        this.clazzList = response.items
+        if (cleanable) {
+          // TODO 坑，this.listQuery.bj == null 直接赋值，专业下拉框选择出bug，无法选择，原因未知
+          for (const attr in this.listQuery) {
+            if (attr === 'clazz') {
+              this.listQuery['clazz'] = null
+            }
+          }
+        }
+      })
+    },
+    parseItems() {
+      // 重新组织列表，动态生成列
+      for (let i = 0; i < this.items.length; i++) {
+        const item = this.items[i]
+        if (i === 0) {
+          for (const node of item.nodelist) {
+            if (this.colList.indexOf(node.auditNode) === -1) {
+              this.colList.push(node.auditNode)
+            }
+          }
+        }
+        for (const node of item.nodelist) {
+          item[node.auditNode] = node.auditResult
+        }
+      }
+    },
+    handlePageList() {
+      crudPageList(this, getPage, this.parseItems)
+    },
+    handleReset() {
+      resetForm(this.listQuery)
+    },
+    handleFilter() {
+      this.listQuery.pageIndex = 1
+      this.handlePageList()
+    },
+    handleSizeChange(val) {
+      this.listQuery.pageSize = val
+      this.handlePageList()
+    },
+    handleCurrentChange(val) {
+      this.listQuery.pageIndex = val
+      this.handlePageList()
+    },
+    showTrace(item) {
+      this.stuInfo = item
+      this.auditLogList = item.auditLogList
+      this.dialogFormVisible = true
+    },
+    showSingleAudit(item, isBatch) {
+      this.stuInfo = item
+      this.auditMsg = {
+        'leaveSchoolBatch': this.listQuery.leaveSchoolBatch,
+        'leaveSchoolProcess': this.listQuery.auditNode,
+        'leaveSchoolStrudent': item.id
+      }
+      const that = this
+      for (const auditLog of item.auditLogList) {
+        if (auditLog.auditNode === this.auditNodeList.find(obj => obj.value + '' === that.listQuery.auditNode + '')['label']) {
+          this.currentNodeLogList = auditLog.auditOpinionList
+          break
+        }
+      }
+      this.auditFormVisible = true
+      this.stuInfoVisible = true
+    },
+    showBatchAudit() {
+      let ids = ''
+      if (this.multipleSelection.length) {
+        for (const row of this.multipleSelection) {
+          ids += row.id + ','
+        }
+      }
+      if (!ids) {
+        this.$notify({
+          title: '通知',
+          message: '请先选择待审核学生！',
+          type: 'info',
+          duration: 2000
+        })
+        return
+      }
+      this.auditMsg = {
+        'leaveSchoolBatch': this.listQuery.leaveSchoolBatch,
+        'leaveSchoolProcess': this.listQuery.auditNode,
+        'leaveSchoolStrudent': ids
+      }
+      this.auditFormVisible = true
+      this.stuInfoVisible = false
+    },
+    savePageAudit(page) {
+      saveAudit(page.auditMsg).then(response => {
+        page.auditFormVisible = false
+        page.$notify({
+          title: '成功',
+          message: '审核成功',
+          type: 'success',
+          duration: 2000
+        })
+      })
+    },
+    auditPass() {
+      this.auditMsg['auditResult'] = 'APPROVED'
+      this.savePageAudit(this)
+    },
+    auditReject() {
+      this.auditMsg['auditResult'] = 'NOT_PASSED'
+      this.savePageAudit(this)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/procedures/leavestudent/index.vue b/leave-school-vue/src/views/procedures/leavestudent/index.vue
index 6d0117e..4bf80c1 100644
--- a/leave-school-vue/src/views/procedures/leavestudent/index.vue
+++ b/leave-school-vue/src/views/procedures/leavestudent/index.vue
@@ -22,13 +22,6 @@
             </el-option>
           </el-select>
         </el-col>
-        <el-col :span="8">
-          <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">查询</el-button>
-          <el-button class="filter-item" style="margin-left: 10px;" @click="handleCreate(null, 'create')" type="primary" icon="el-icon-edit">添加</el-button>
-          <el-button class="filter-item" style="margin-left: 10px;" @click="handleReset" type="primary" icon="el-icon-edit">重置</el-button>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20">
         <el-col :span="4">
           <el-select clearable class="filter-item" v-model="listQuery.leaveSchoolType" placeholder="离校类型">
             <el-option v-for="item in  pagedata.leaveSchoolTypeList" :key="item.value" :label="item.label" :value="item.value">
@@ -36,13 +29,19 @@
           </el-select>
         </el-col>
         <el-col :span="4">
+          <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">查询</el-button>
+          <el-button class="filter-item" style="margin-left: 10px;" @click="handleReset" type="primary" icon="el-icon-edit">重置</el-button>
+        </el-col>
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="4">
           <el-select clearable @change="initMajorList" class="filter-item" v-model="listQuery.department" placeholder="院系">
             <el-option v-for="item in  pagedata.departmentList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
         </el-col>
         <el-col :span="4">
-          <el-select clearable class="filter-item" v-model="listQuery.major" placeholder="专业">
+          <el-select clearable @change="initBjList" class="filter-item" v-model="listQuery.major" placeholder="专业">
             <el-option v-for="item in  majorList" :key="item.id" :label="item.zymc" :value="item.id">
             </el-option>
           </el-select>
@@ -53,8 +52,6 @@
             </el-option>
           </el-select>
         </el-col>
-      </el-row>
-      <el-row :gutter="20">
         <el-col :span="4">
           <el-select clearable class="filter-item" v-model="listQuery.graduateYear" placeholder="毕业年份">
             <el-option v-for="n in  10" :key="year-n" :label="year-n" :value="year-n">
@@ -136,7 +133,7 @@
 
 <script>
 import { getBjListByZy } from '@/api/class-api'
-import { getAuditList } from '@/api/leavestudent-api'
+import { getPage } from '@/api/leavestudent-api'
 import { getZyListByYx } from '@/api/major-api'
 import waves from '@/directive/waves' // 水波纹指令
 import { resetForm } from '@/utils'
@@ -167,7 +164,7 @@
   },
   created() {
     this.handlePageList()
-    this.height = window.innerHeight - 316
+    this.height = window.innerHeight - 266
   },
   methods: {
     initMajorList() {
@@ -195,7 +192,7 @@
       })
     },
     handlePageList() {
-      crudPageList(this, getAuditList)
+      crudPageList(this, getPage)
     },
     handleReset() {
       resetForm(this.listQuery)
diff --git a/leave-school-vue/src/views/statistical/handling/index.vue b/leave-school-vue/src/views/statistical/handling/index.vue
index 3e5fbfa..510b42c 100644
--- a/leave-school-vue/src/views/statistical/handling/index.vue
+++ b/leave-school-vue/src/views/statistical/handling/index.vue
@@ -3,57 +3,55 @@
     <div class="filter-container">
       <el-row :gutter="20">
         <el-col :span="4">
-          <el-select clearable @change="initZyList" class="filter-item" v-model="listQuery.pcmc" placeholder="批次名称">
-          </el-select>
-        </el-col>
-        <el-col :span="4">
-          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="学号" v-model="listQuery.xh">
-          </el-input>
-        </el-col>
-        <el-col :span="4">
-          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="姓名" v-model="listQuery.xm">
-          </el-input>
-        </el-col>
-        <el-col :span="4">
-          <el-select clearable @change="initZyList" class="filter-item" v-model="listQuery.sfzylx" placeholder="是否准予离校">
-            <el-option key="1" label="准予" value="1">
-            </el-option>
-            <el-option key="0" label="不准予" value="0">
+          <el-select clearable class="filter-item" v-model="listQuery.leaveSchoolBatch" placeholder="批次名称">
+            <el-option v-for="item in  pagedata.leaveSchoolBatchList" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
         </el-col>
-        <el-col :span="8">
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="学号" v-model="listQuery.studentNumber">
+          </el-input>
+        </el-col>
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="姓名" v-model="listQuery.name">
+          </el-input>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.allowedLeave" placeholder="是否准予离校">
+            <el-option label="准予" value="1"></el-option>
+            <el-option label="不准予" value="0"></el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
           <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleFilter">查询</el-button>
           <el-button class="filter-item" style="margin-left: 10px;" @click="handleReset" type="primary" icon="el-icon-edit">重置</el-button>
         </el-col>
       </el-row>
       <el-row :gutter="20">
         <el-col :span="4">
-          <el-select clearable @change="initZyList" class="filter-item" v-model="listQuery.yx" placeholder="院系">
-            <el-option v-for="item in  yxList" :key="item.id" :label="item.name" :value="item.id">
+          <el-select clearable @change="initMajorList" class="filter-item" v-model="listQuery.department" placeholder="院系">
+            <el-option v-for="item in  pagedata.departmentList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
         </el-col>
         <el-col :span="4">
-          <el-select clearable @change="initBjList" class="filter-item" v-model="listQuery.zy" placeholder="专业">
-            <el-option v-for="item in  zyList" :key="item.id" :label="item.zymc" :value="item.id">
+          <el-select clearable @change="initBjList" class="filter-item" v-model="listQuery.major" placeholder="专业">
+            <el-option v-for="item in  majorList" :key="item.id" :label="item.zymc" :value="item.id">
             </el-option>
           </el-select>
         </el-col>
         <el-col :span="4">
-          <el-select clearable class="filter-item" v-model="listQuery.bj" placeholder="班级">
-            <el-option v-for="item in  bjList" :key="item.id" :label="item.bjmc" :value="item.id">
+          <el-select clearable class="filter-item" v-model="listQuery.clazz" placeholder="班级">
+            <el-option v-for="item in  clazzList" :key="item.id" :label="item.bjmc" :value="item.id">
             </el-option>
           </el-select>
         </el-col>
         <el-col :span="4">
-          <el-select clearable @change="initZyList" class="filter-item" v-model="listQuery.xslb" placeholder="学生类别">
-            <el-option v-for="item in  xslbList" :key="item.id" :label="item.name" :value="item.id">
+          <el-select clearable class="filter-item" v-model="listQuery.studentType" placeholder="学生类别">
+            <el-option v-for="item in pagedata.studentTypeList" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
         </el-col>
-        <el-col :span="12">
-        </el-col>
       </el-row>
     </div>
     <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
@@ -61,40 +59,40 @@
       </el-table-column>
       <el-table-column label="学号" align="center">
         <template slot-scope="scope">
-          {{scope.row.xh}}
+          {{scope.row.studentNumber}}
         </template>
       </el-table-column>
       <el-table-column label="姓名" align="center">
         <template slot-scope="scope">
-          <a href="javascript:void(0);" @click="showTrace(scope.row)">{{scope.row.xm}}</a>
+          <a href="javascript:void(0);" @click="showTrace(scope.row)">{{scope.row.name}}</a>
         </template>
       </el-table-column>
       <el-table-column label="院系" align="center">
         <template slot-scope="scope">
-          {{scope.row.yx}}
+          {{scope.row.department}}
         </template>
       </el-table-column>
       <el-table-column label="专业" align="center">
         <template slot-scope="scope">
-          {{scope.row.zy}}
+          {{scope.row.major}}
         </template>
       </el-table-column>
       <el-table-column label="班级" align="center">
         <template slot-scope="scope">
-          {{scope.row.bj}}
+          {{scope.row.clazz}}
         </template>
       </el-table-column>
       <el-table-column label="学生类别" align="center">
         <template slot-scope="scope">
-          {{scope.row.xslb}}
+          {{scope.row.studentType}}
         </template>
       </el-table-column>
-      <el-table-column v-for="blbm in colList" :label="blbm" :key="blbm" :prop="blbm" align="center">
+      <el-table-column v-for="auditNode in colList" :label="auditNode" :key="auditNode" :prop="auditNode" align="center">
       </el-table-column>
       <el-table-column label="是否准予离校" align="center">
         <template slot-scope="scope">
-          <font color="green" v-if="scope.row.sfzylx == '准予'">{{scope.row.sfzylx}}</font>
-          <font color="red" v-else>{{scope.row.sfzylx}}</font>
+          <font color="green" v-if="scope.row.allowedLeave == '准予'">{{scope.row.allowedLeave}}</font>
+          <font color="red" v-else>{{scope.row.allowedLeave}}</font>
         </template>
       </el-table-column>
     </el-table>
@@ -118,21 +116,21 @@
                           <tbody>
                             <tr>
                               <td width="120">学号：</td>
-                              <td><b>{{ jbxx.xh }}</b></td>
+                              <td><b>{{ stuInfo.studentNumber }}</b></td>
                               <td width="100">姓名：</td>
-                              <td><b>{{ jbxx.xm }}</b></td>
+                              <td><b>{{ stuInfo.name }}</b></td>
                             </tr>
                             <tr>
                               <td>院系：</td>
-                              <td><b>{{ jbxx.yx }}</b></td>
+                              <td><b>{{ stuInfo.department }}</b></td>
                               <td>专业：</td>
-                              <td><b>{{ jbxx.zy }}</b></td>
+                              <td><b>{{ stuInfo.major }}</b></td>
                             </tr>
                             <tr>
                               <td>班级：</td>
-                              <td><b>{{ jbxx.bj }}</b></td>
+                              <td><b>{{ stuInfo.clazz }}</b></td>
                               <td>学生类别：</td>
-                              <td><b>{{ jbxx.xslb }}</b></td>
+                              <td><b>{{ stuInfo.studentType }}</b></td>
                             </tr>
                           </tbody>
                         </table>
@@ -154,18 +152,18 @@
                       <th width="35%">审核环节</th>
                       <th>审核意见</th>
                     </tr>
-                    <tr v-for="shjl in shjllist" :key="shjl.shhj">
+                    <tr v-for="auditLog in auditLogList" :key="auditLog.auditTime">
                       <td align="center">
-                        {{shjl.shhj}} 
-                        [<font color="green" v-if="shjl.shzt == '通过'">{{shjl.shzt}}</font>
-                        <font color="red" v-else>{{shjl.shzt}}</font>]
+                        {{auditLog.auditNode}} 
+                        [<font color="green" v-if="auditLog.auditResult == '通过'">{{auditLog.auditResult}}</font>
+                        <font color="red" v-else>{{auditLog.auditResult}}</font>]
                       </td>
                       <td align="left">
-                        <template v-for="sj in shjl.shyj">
-                          [<font color="green" v-if="sj.shzt == '通过'">{{sj.shzt}}</font>
-                          <font color="red" v-else>{{sj.shzt}}</font>&nbsp;{{sj.shsj}}]
-                          【{{shjl.shhj}}】
-                          审核意见:{{sj.shyj}}
+                        <template v-for="opinion in auditLog.auditOpinionList">
+                          [<font color="green" v-if="opinion.auditResult == '通过'">{{opinion.auditResult}}</font>
+                          <font color="red" v-else>{{opinion.auditResult}}</font>&nbsp;{{opinion.auditTime}}]
+                          【{{auditLog.auditNode}}】
+                          审核意见:{{opinion.auditOpinion}}
                           <br>
                         </template>
                       </td>
@@ -187,9 +185,7 @@
 
 <script>
 import { getBjListByZy } from '@/api/class-api'
-import { getList } from '@/api/handling-api'
-import { getDicList } from '@/api/dictionary-api'
-import { getDeptList as getAllDeptList } from '@/api/department-api'
+import { getPage } from '@/api/leavestudent-api'
 import { getZyListByYx } from '@/api/major-api'
 import waves from '@/directive/waves' // 水波纹指令
 import { resetForm } from '@/utils'
@@ -204,14 +200,11 @@
   mixins: [mixindata],
   data() {
     return {
-      pcmcList: [],
-      yxList: [],
-      zyList: [],
-      bjList: [],
+      majorList: [],
+      clazzList: [],
       colList: [],
-      xslbList: [],
-      jbxx: {},
-      shjllist: []
+      stuInfo: {},
+      auditLogList: []
     }
   },
   filters: {
@@ -224,22 +217,13 @@
     }
   },
   created() {
-    this.initYxList()
-    this.initZyList()
-    this.initBjList()
-    this.initXslbList()
     this.handlePageList()
     this.height = window.innerHeight - 266
   },
   methods: {
-    initYxList() {
-      getAllDeptList(this.listQuery).then(response => {
-        this.yxList = response.items
-      })
-    },
-    initZyList() {
-      getZyListByYx({ yx: this.listQuery.yx }).then(response => {
-        this.zyList = response.items
+    initMajorList() {
+      getZyListByYx({ yx: this.listQuery.department }).then(response => {
+        this.majorList = response.items
         // TODO 坑，this.listQuery.zy == null 直接赋值，专业下拉框选择出bug，无法选择，原因未知
         for (const attr in this.listQuery) {
           if (attr === 'zy') {
@@ -248,32 +232,35 @@
         }
       })
     },
-    initXslbList() {
-      getDicList({ dicType: 'xslb' }).then(response => {
-        this.xslbList = response.items
-      })
-    },
-    initBjList() {
-      getBjListByZy({ zy: this.listQuery.zy }).then(response => {
-        this.bjList = response.items
+    initBjList(cleanable = true) {
+      getBjListByZy({ zy: this.listQuery.major }).then(response => {
+        this.clazzList = response.items
+        if (cleanable) {
+          // TODO 坑，this.listQuery.bj == null 直接赋值，专业下拉框选择出bug，无法选择，原因未知
+          for (const attr in this.listQuery) {
+            if (attr === 'clazz') {
+              this.listQuery['clazz'] = null
+            }
+          }
+        }
       })
     },
     handlePageList() {
-      crudPageList(this, getList, this.parseItems)
+      crudPageList(this, getPage, this.parseItems)
     },
     parseItems() {
       // 重新组织列表，动态生成列
       for (let i = 0; i < this.items.length; i++) {
         const item = this.items[i]
         if (i === 0) {
-          for (const blbm of item.blbmlist) {
-            if (this.colList.indexOf(blbm.bmmc) === -1) {
-              this.colList.push(blbm.bmmc)
+          for (const node of item.nodelist) {
+            if (this.colList.indexOf(node.auditNode) === -1) {
+              this.colList.push(node.auditNode)
             }
           }
         }
-        for (const blbm of item.blbmlist) {
-          item[blbm.bmmc] = blbm.shjg
+        for (const node of item.nodelist) {
+          item[node.auditNode] = node.auditResult
         }
       }
     },
@@ -296,8 +283,8 @@
       this.dialogFormVisible = true
     },
     showTrace(item) {
-      this.jbxx = item
-      this.shjllist = item.shjllist
+      this.stuInfo = item
+      this.auditLogList = item.auditLogList
       this.dialogFormVisible = true
     }
   }
