diff --git a/leave-school-vue/src/views/news/newview/index.vue b/leave-school-vue/src/views/news/newview/index.vue
index c4d62f1..5945d70 100644
--- a/leave-school-vue/src/views/news/newview/index.vue
+++ b/leave-school-vue/src/views/news/newview/index.vue
@@ -28,7 +28,7 @@
       </el-table-column>
       <el-table-column label="公告标题" align="center">
         <template slot-scope="scope">
-          <a href="#" @click="showDetail(scope.row)">{{scope.row.ggbt}}</a>
+          <a href="javascript:void(0);" @click="showDetail(scope.row)">{{scope.row.ggbt}}</a>
         </template>
       </el-table-column>
       <el-table-column label="接收对象类型" align="center">
@@ -139,8 +139,8 @@
   }
 }
 </script>
-<style>
-.app-container a:visited {
+<style scoped>
+.app-container a {
     color: #00a4f4;
     text-decoration: none;
 }
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>
+
