diff --git a/leave-school-vue/src/mock/dictionary.js b/leave-school-vue/src/mock/dictionary.js
index fbfb169..0f8166b 100644
--- a/leave-school-vue/src/mock/dictionary.js
+++ b/leave-school-vue/src/mock/dictionary.js
@@ -90,6 +90,16 @@
   'id': '18',
   'type': 'jszlx',
   'name': '所有教职工'
+},
+{
+  'id': '19',
+  'type': 'xslb',
+  'name': '本专科生'
+},
+{
+  'id': '20',
+  'type': 'xslb',
+  'name': '研究生'
 }]
 
 export default{
diff --git a/leave-school-vue/src/mock/handling.js b/leave-school-vue/src/mock/handling.js
new file mode 100644
index 0000000..32cd9dd
--- /dev/null
+++ b/leave-school-vue/src/mock/handling.js
@@ -0,0 +1,113 @@
+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 1e9f075..981622e 100644
--- a/leave-school-vue/src/mock/index.js
+++ b/leave-school-vue/src/mock/index.js
@@ -12,6 +12,7 @@
 import departmentleaderApi from './departmentleader'
 import instructorApi from './instructor'
 import newspublishApi from './newspublish'
+import handlinghApi from './handling'
 
 // 登录
 Mock.mock(/\/api\/login\/login/, 'post', loginApi.loginByUsername)
@@ -87,4 +88,8 @@
 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', handlinghApi.getList)
+Mock.mock(/\/api\/statistical\/handling\/get-item/, 'get', handlinghApi.getItem)
+
 export default Mock
diff --git a/leave-school-vue/src/mock/menulist.js b/leave-school-vue/src/mock/menulist.js
index 7453cd9..343a71e 100644
--- a/leave-school-vue/src/mock/menulist.js
+++ b/leave-school-vue/src/mock/menulist.js
@@ -88,6 +88,25 @@
         meta: { title: '新闻公告查看', icon: 'newview' }
       }
     ]
+  },
+  {
+    path: '/statistical',
+    code: 'statistical',
+    meta: { title: '离校统计查询', icon: 'news' },
+    children: [
+      {
+        path: 'handling',
+        code: 'HandlingSituation',
+        resource: '/views/statistical/handling/index',
+        meta: { title: '办理情况查询', icon: 'handling' }
+      },
+      {
+        path: 'nodereport',
+        code: 'nodereport',
+        resource: '/views/news/newview/index',
+        meta: { title: '环节统计报表查询', icon: 'newview' }
+      }
+    ]
   }
 ]
 
