diff --git a/leave-school-vue/src/views/statistical/handling/index.vue b/leave-school-vue/src/views/statistical/handling/index.vue
index a3ff438..bcd7d34 100644
--- a/leave-school-vue/src/views/statistical/handling/index.vue
+++ b/leave-school-vue/src/views/statistical/handling/index.vue
@@ -35,7 +35,7 @@
           </el-select>
         </el-col>
         <el-col :span="4">
-          <el-select clearable class="filter-item" v-model="listQuery.zy" placeholder="专业">
+          <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-option>
           </el-select>
@@ -47,7 +47,7 @@
           </el-select>
         </el-col>
         <el-col :span="4">
-          <el-select clearable @change="initZyList" class="filter-item" v-model="listQuery.nj" placeholder="学生类别">
+          <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-option>
           </el-select>
@@ -66,7 +66,7 @@
       </el-table-column>
       <el-table-column label="姓名" align="center">
         <template slot-scope="scope">
-          <a href="#" @click="showTrace(scope.row)">{{scope.row.xm}}</a>
+          <a href="javascript:void(0);" @click="showTrace(scope.row)">{{scope.row.xm}}</a>
         </template>
       </el-table-column>
       <el-table-column label="院系" align="center">
@@ -186,7 +186,7 @@
 </template>
 
 <script>
-import { getAllList as getClassList } from '@/api/class-api'
+import { getBjListByZy } from '@/api/class-api'
 import { getList } from '@/api/handling-api'
 import { getDicList } from '@/api/dictionary-api'
 import { getAllList as getAllDeptList } from '@/api/department-api'
@@ -254,7 +254,7 @@
       })
     },
     initBjList() {
-      getClassList().then(response => {
+      getBjListByZy({ zy: this.listQuery.zy }).then(response => {
         this.bjList = response.items
       })
     },
@@ -304,7 +304,7 @@
 }
 </script>
 <style scoped>
-.app-container a:visited {
+.app-container a {
     color: #00a4f4;
     text-decoration: none;
 }
diff --git a/leave-school-vue/src/views/statistical/newspublish/index.vue b/leave-school-vue/src/views/statistical/newspublish/index.vue
deleted file mode 100644
index 019db1b..0000000
--- a/leave-school-vue/src/views/statistical/newspublish/index.vue
+++ /dev/null
@@ -1,256 +0,0 @@
-<template>
-  <div class="app-container">
-    <div class="filter-container">
-      <el-row :gutter="20">
-        <el-col :span="5">
-          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="公告标题" v-model="listQuery.ggbt">
-          </el-input>
-        </el-col>
-        <el-col :span="5">
-          <el-date-picker
-            v-model="listQuery.fbqssj"
-            type="date"
-            placeholder="发布起始时间">
-          </el-date-picker>
-        </el-col>
-        <el-col :span="5">
-          <el-date-picker
-            v-model="listQuery.fbjssj"
-            type="date"
-            placeholder="发布结束时间">
-          </el-date-picker>
-        </el-col>
-        <el-col :span="9">
-          <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="5">
-          <el-select class="filter-item" v-model="temp.sfky" placeholder="是否可用">
-            <el-option key="1" label="可用" value="1">
-            </el-option>
-            <el-option key="0" label="不可用" value="0">
-            </el-option>
-          </el-select>
-        </el-col>
-        <el-col :span="5">
-          <el-select clearable class="filter-item" v-model="listQuery.xswz" placeholder="显示位置">
-            <el-option v-for="item in  xswzList" :key="item.id" :label="item.name" :value="item.id">
-            </el-option>
-          </el-select>
-        </el-col>
-        <el-col :span="5">
-          <el-select clearable class="filter-item" v-model="listQuery.jlckzt" placeholder="记录查看状态">
-            <el-option key="1" label="需要" value="1">
-            </el-option>
-            <el-option key="0" label="不需要" value="0">
-            </el-option>
-          </el-select>
-        </el-col>
-        <el-col :span="9">
-        </el-col>
-      </el-row>
-    </div>
-    <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
-      <el-table-column align="center" type="index" label='序号' width="95">
-      </el-table-column>
-      <el-table-column label="公告标题" align="center">
-        <template slot-scope="scope">
-          {{scope.row.ggbt}}
-        </template>
-      </el-table-column>
-      <el-table-column label="公告类型" align="center">
-        <template slot-scope="scope">
-          <span>{{scope.row.gglx}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="接收者类型" align="center">
-        <template slot-scope="scope">
-          {{scope.row.jszlx}}
-        </template>
-      </el-table-column>
-      <el-table-column label="是否可用" align="center">
-        <template slot-scope="scope">
-          {{scope.row.sfky}}
-        </template>
-      </el-table-column>
-      <el-table-column label="发布起始时间" align="center">
-        <template slot-scope="scope">
-          {{scope.row.fbqssj}}
-        </template>
-      </el-table-column>
-      <el-table-column label="发布结束时间" align="center">
-        <template slot-scope="scope">
-          {{scope.row.fbjssj}}
-        </template>
-      </el-table-column>
-      <el-table-column label="显示位置设置" align="center">
-        <template slot-scope="scope">
-          {{scope.row.xswz}}
-        </template>
-      </el-table-column>
-      <el-table-column label="点击数" align="center">
-        <template slot-scope="scope">
-          {{scope.row.djs}}
-        </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="handleCreate(scope.row.id, 'update')">修改</el-button>
-          <el-button type="text" size="small" @click="handleDelete(scope.row.id)">删除</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="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="80%" top="10vh">
-      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='margin-left:50px;'>
-        <el-form-item label="公告标题" prop="ggbt">
-          <el-input v-model="temp.ggbt"></el-input>
-          <input type="hidden" v-model="temp.id" />
-        </el-form-item>
-        <el-form-item label="是否可用" prop="sfky">
-          <el-select class="filter-item" v-model="temp.sfky" placeholder="是否可用">
-            <el-option key="1" label="可用" value="1">
-            </el-option>
-            <el-option key="0" label="不可用" value="0">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="发布开始时间">
-          <el-date-picker
-            v-model="temp.fbqssj"
-            type="date"
-            placeholder="选择日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="发布结束时间">
-          <el-date-picker
-            v-model="temp.fbjssj"
-            type="date"
-            placeholder="选择日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="记录查看状态">
-          <el-select class="filter-item" v-model="temp.jlckzt" placeholder="请选择">
-            <el-option key="1" label="需要" value="1">
-            </el-option>
-            <el-option key="0" label="不需要" value="0">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="显示位置" prop="xswz">
-          <el-select class="filter-item" v-model="temp.xswz" placeholder="请选择">
-            <el-option v-for="item in xswzList" :key="item.id" :label="item.name" :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="接收者类型">
-          <el-radio-group v-model="temp.jszlx">
-            <el-radio v-for="item in jszlxList" :label="item.id" :key="item.id" >{{item.name}}</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item label="公告内容">
-          <div class="editor-container">
-            <UE v-model="temp.ggnr" :config=config ref="ue"></UE>
-          </div>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="dialogFormVisible = false">返回</el-button>
-        <el-button type="primary" @click="createData">提交</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { getList, getItem, createNewspublish, deleteNewspublish } from '@/api/newspublish-api'
-import { getDicList } from '@/api/dictionary-api'
-import waves from '@/directive/waves' // 水波纹指令
-import { resetForm } from '@/utils'
-import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
-import mixindata from '@/utils/crud'
-import UE from '@/components/UEditor'
-
-const initData = { sfky: '1', xswz: '14', jszlx: '16', ggnr: '' }
-export default {
-  name: 'newspublish',
-  components: { UE },
-  directives: {
-    waves
-  },
-  mixins: [mixindata],
-  data() {
-    return {
-      config: {
-        initialFrameWidth: null,
-        initialFrameHeight: 350
-      },
-      xswzList: [],
-      jszlxList: [],
-      rules: {
-        ggbt: [{ required: true, message: '公告标题必填', trigger: 'blur' }],
-        sfky: [{ required: true, message: '是否可用必选', trigger: 'change' }],
-        xswz: [{ required: true, message: '显示位置必选', trigger: 'change' }]
-      }
-    }
-  },
-  created() {
-    this.getXswzList()
-    this.getJszlxList()
-    this.handlePageList()
-    this.height = window.innerHeight - 266
-  },
-  methods: {
-    getXswzList() {
-      getDicList({ type: 'xswz' }).then(response => {
-        this.xswzList = response.items
-      })
-    },
-    getJszlxList() {
-      getDicList({ type: 'jszlx' }).then(response => {
-        this.jszlxList = response.items
-      })
-    },
-    handlePageList() {
-      crudPageList(this, getList)
-    },
-    handleCreate(rowid, dialogStatus) {
-      this.dialogStatus = dialogStatus
-      crudGetItem(this, getItem, rowid, initData)
-    },
-    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()
-    },
-    createData() {
-      crudCreate(this, createNewspublish, this.handlePageList)
-    },
-    handleDelete(rowid) {
-      crudDelete(this, deleteNewspublish, rowid, this.handlePageList)
-    }
-  }
-}
-</script>
diff --git a/leave-school-vue/src/views/statistical/nodereport/index.vue b/leave-school-vue/src/views/statistical/nodereport/index.vue
new file mode 100644
index 0000000..803b19f
--- /dev/null
+++ b/leave-school-vue/src/views/statistical/nodereport/index.vue
@@ -0,0 +1,283 @@
+<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.pcmc" placeholder="批次名称">
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable 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-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.bynf" 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.byyf" placeholder="毕业月份">
+            <el-option v-for="n in  12" :key="n" :label="n" :value="n">
+            </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="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.dwmc" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable 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-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.xb" placeholder="性别">
+            <el-option v-for="item in  xbList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+        </el-col>
+        <el-col :span="12">
+        </el-col>
+      </el-row>
+    </div>
+    <el-table :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column align="center" type="index" label='序号' width="95">
+      </el-table-column>
+      <el-table-column label="环节名称" align="center">
+        <template slot-scope="scope">
+          {{scope.row.hjmc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="待审核" align="center">
+        <template slot-scope="scope">
+          <a href="javascript:void(0);" @click="showDetail(scope.row.hjid, 1)">{{scope.row.dsh}}</a>
+        </template>
+      </el-table-column>
+      <el-table-column label="审核通过" align="center">
+        <template slot-scope="scope">
+          <a href="javascript:void(0);" @click="showDetail(scope.row.hjid, 2)">{{scope.row.shtg}}</a>
+        </template>
+      </el-table-column>
+      <el-table-column label="审核不通过" align="center">
+        <template slot-scope="scope">
+          <a href="javascript:void(0);" @click="showDetail(scope.row.hjid, 3)">{{scope.row.shbtg}}</a>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-col :span="8" v-for="(item, index) in items" :key="index">
+      <el-card>
+        <div :id="'myChart'+index" style="width: 100%; height: 300px"></div>
+      </el-card>
+    </el-col>
+    <el-col :span="24">
+      <el-card>
+        <div id="myChart4" :style="{width: '100%', height: '300px'}"></div>
+      </el-card>
+    </el-col>
+    <el-dialog title="详情" :visible.sync="dialogFormVisible" width="80%" top="2vh">
+      <audit-student-list :tableheight="tableheight" :queryparam="queryparam"></audit-student-list>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getList, getLeaveAuditResult } from '@/api/nodereport-api'
+import { getDicList } from '@/api/dictionary-api'
+import { getAllList as getAllDeptList } from '@/api/department-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'
+import AuditStudentList from '@/components/AuditStudentList'
+
+export default {
+  name: 'class',
+  components: { AuditStudentList },
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      tableheight: 500,
+      year: (new Date()).getFullYear() + 2,
+      pcmcList: [],
+      yxList: [],
+      zyList: [],
+      xbList: [],
+      xslbList: [],
+      jbxx: {},
+      queryparam: {}
+    }
+  },
+  created() {
+    this.initYxList()
+    this.initZyList()
+    this.initXbList()
+    this.initXslbList()
+    this.handlePageList()
+    this.height = window.innerHeight - 266
+    this.tableheight = window.innerHeight - 320
+  },
+  methods: {
+    drawLine() {
+      const _this = this
+      this.$nextTick(function() {
+        for (let i = 0; i < this.items.length; i++) {
+          // 基于准备好的dom，初始化echarts实例
+          const myChart = window.echarts.init(document.getElementById('myChart' + i))
+          // 绘制图表
+          const option = {
+            title: {
+              text: this.items[i].hjmc,
+              x: 'center'
+            },
+            tooltip: {
+              trigger: 'item',
+              formatter: '{a} <br/>{b} : {c} ({d}%)'
+            },
+            legend: {
+              orient: 'vertical',
+              left: 'left',
+              data: ['待审核', '审核通过', '审核不通过']
+            },
+            series: [
+              {
+                name: '审核数量',
+                type: 'pie',
+                radius: '55%',
+                center: ['50%', '60%'],
+                data: [
+                  { value: this.items[i].dsh, name: '待审核', shzt: 1, hjid: this.items[i].hjid },
+                  { value: this.items[i].shtg, name: '审核通过', shzt: 2, hjid: this.items[i].hjid },
+                  { value: this.items[i].shbtg, name: '审核不通过', shzt: 3, hjid: this.items[i].hjid }
+                ],
+                itemStyle: {
+                  emphasis: {
+                    shadowBlur: 10,
+                    shadowOffsetX: 0,
+                    shadowColor: 'rgba(0, 0, 0, 0.5)'
+                  }
+                }
+              }
+            ]
+          }
+          myChart.setOption(option)
+          myChart.on('click', function(params) {
+            _this.showDetail(params.data.hjid, params.data.shzt)
+          })
+        }
+      })
+      getLeaveAuditResult(this.listQuery).then(response => {
+        const zylx = response.data.zylx || 0
+        const bzylx = response.data.bzylx || 0
+        // 基于准备好的dom，初始化echarts实例
+        const myChart4 = window.echarts.init(document.getElementById('myChart4'))
+        // 绘制图表
+        const option = {
+          title: {
+            text: '准予离校结果',
+            x: 'center'
+          },
+          tooltip: {
+            trigger: 'item',
+            formatter: '{a} <br/>{b} : {c} ({d}%)'
+          },
+          legend: {
+            orient: 'vertical',
+            left: 'left',
+            data: ['准予离校', '不准予离校']
+          },
+          series: [
+            {
+              name: '离校准予结果',
+              type: 'pie',
+              radius: '55%',
+              center: ['50%', '60%'],
+              data: [
+                { value: zylx, name: '准予离校' },
+                { value: bzylx, name: '不准予离校' }
+              ],
+              itemStyle: {
+                emphasis: {
+                  shadowBlur: 10,
+                  shadowOffsetX: 0,
+                  shadowColor: 'rgba(0, 0, 0, 0.5)'
+                }
+              }
+            }
+          ]
+        }
+        myChart4.setOption(option)
+      })
+    },
+    initYxList() {
+      getAllDeptList(this.listQuery).then(response => {
+        this.yxList = response.items
+      })
+    },
+    initZyList() {
+      getZyListByYx({ yx: this.listQuery.yx }).then(response => {
+        this.zyList = response.items
+        // TODO 坑，this.listQuery.zy == null 直接赋值，专业下拉框选择出bug，无法选择，原因未知
+        for (const attr in this.listQuery) {
+          if (attr === 'zy') {
+            this.listQuery['zy'] = null
+          }
+        }
+      })
+    },
+    initXslbList() {
+      getDicList({ type: 'xslb' }).then(response => {
+        this.xslbList = response.items
+      })
+    },
+    initXbList() {
+      getDicList({ type: 'xb' }).then(response => {
+        this.xbList = response.items
+      })
+    },
+    handlePageList() {
+      crudPageList(this, getList, this.drawLine)
+    },
+    handleReset() {
+      resetForm(this.listQuery)
+    },
+    handleFilter() {
+      this.listQuery.pageIndex = 1
+      this.handlePageList()
+    },
+    showDetail(hjid, shzt) {
+      this.listQuery['hjid'] = hjid
+      this.listQuery['shzt'] = shzt
+      this.queryparam = Object.assign({}, this.listQuery)
+      this.dialogFormVisible = true
+    }
+  }
+}
+</script>
+<style scoped>
+.app-container a {
+    color: #00a4f4;
+    text-decoration: none;
+}
+.el-card {
+  margin: 5px;
+}
+</style>
+
