院系统计报表查询
diff --git a/leave-school-vue/src/views/statistical/deptreport/index.vue b/leave-school-vue/src/views/statistical/deptreport/index.vue
new file mode 100644
index 0000000..27932a2
--- /dev/null
+++ b/leave-school-vue/src/views/statistical/deptreport/index.vue
@@ -0,0 +1,162 @@
+<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="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>
+    </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.yx}}
+        </template>
+      </el-table-column>
+      <el-table-column label="准予离校" align="center">
+        <template slot-scope="scope">
+          {{scope.row.zylx}}
+        </template>
+      </el-table-column>
+      <el-table-column label="不准予离校" align="center">
+        <template slot-scope="scope">
+          {{scope.row.bzylx}}
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-col :span="24">
+      <el-card>
+        <div id="myChart" :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 } from '@/api/deptreport-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.handlePageList()
+    this.tableheight = window.innerHeight - 320
+  },
+  methods: {
+    drawLine() {
+      const that = this
+      this.$nextTick(function() {
+        const xdata = []
+        const yxiddata = []
+        const zylxdata = []
+        const bzylxdata = []
+        for (const item of this.items) {
+          xdata.push(item.yx)
+          yxiddata.push(item.yxid)
+          zylxdata.push(item.zylx)
+          bzylxdata.push(item.bzylx)
+        }
+        // 基于准备好的dom,初始化echarts实例
+        const myChart = window.echarts.init(document.getElementById('myChart'))
+        // 绘制图表
+        const option = {
+          tooltip: {
+            trigger: 'axis'
+          },
+          toolbox: {
+            feature: {
+              saveAsImage: {}
+            }
+          },
+          xAxis: {
+            type: 'category',
+            data: xdata,
+            yxiddata: yxiddata
+          },
+          yAxis: {
+            type: 'value'
+          },
+          legend: {
+            data: ['准予离校', '不准予离校']
+          },
+          series: [
+            {
+              name: '准予离校',
+              type: 'bar',
+              data: zylxdata
+            },
+            {
+              name: '不准予离校',
+              type: 'bar',
+              data: bzylxdata
+            }]
+        }
+        myChart.setOption(option)
+        myChart.on('click', function(params) {
+          that.listQuery.yx = option.xAxis.yxiddata[params.seriesIndex]
+          // 命名的路由
+          that.$router.push({ name: 'deptsectionrep', params: that.listQuery })
+        })
+      })
+    },
+    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>
+
diff --git a/leave-school-vue/src/views/statistical/deptsectionrep/index.vue b/leave-school-vue/src/views/statistical/deptsectionrep/index.vue
new file mode 100644
index 0000000..97a015e
--- /dev/null
+++ b/leave-school-vue/src/views/statistical/deptsectionrep/index.vue
@@ -0,0 +1,195 @@
+<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 @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.bm" placeholder="部门">
+            <el-option v-for="item in  bmList" :key="item.id" :label="item.dwmc" :value="item.id">
+            </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>
+    </div>
+    <el-col :span="24">
+      <el-card>
+        <div id="myChart" :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 } from '@/api/nodereport-api'
+import { getDeptList, getSectionList } 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,
+      pcmcList: [],
+      yxList: [],
+      zyList: [],
+      bmList: [],
+      queryparam: {}
+    }
+  },
+  created() {
+    this.listQuery = this.$route.params
+    this.initYxList()
+    this.initZyList()
+    this.initBmList()
+    this.handlePageList()
+    this.tableheight = window.innerHeight - 320
+  },
+  methods: {
+    drawLine() {
+      this.$nextTick(function() {
+        const xdata = []
+        const xiddata = []
+        const tgdata = []
+        const btgdata = []
+        const dshdata = []
+        for (const item of this.items) {
+          xdata.push(item.hjmc)
+          xiddata.push(item.hjid)
+          tgdata.push(item.shtg)
+          btgdata.push(item.shbtg)
+          dshdata.push(item.dsh)
+        }
+        // 基于准备好的dom,初始化echarts实例
+        const myChart = window.echarts.init(document.getElementById('myChart'))
+        // 绘制图表
+        const option = {
+          tooltip: {
+            trigger: 'axis'
+          },
+          toolbox: {
+            feature: {
+              saveAsImage: {}
+            }
+          },
+          xAxis: {
+            type: 'category',
+            data: xdata,
+            xiddata: xiddata
+          },
+          yAxis: {
+            type: 'value'
+          },
+          legend: {
+            data: ['通过', '不通过', '待审核']
+          },
+          series: [
+            {
+              name: '通过',
+              type: 'bar',
+              data: tgdata,
+              shzt: 1
+            },
+            {
+              name: '不通过',
+              type: 'bar',
+              data: btgdata,
+              shzt: 2
+            },
+            {
+              name: '待审核',
+              type: 'bar',
+              data: dshdata,
+              shzt: 3
+            }]
+        }
+        myChart.setOption(option)
+        const that = this
+        myChart.on('click', function(params) {
+          const hjid = option.xAxis.xiddata[params.dataIndex]
+          const shzt = option.series[params.seriesIndex].shzt
+          that.showDetail(hjid, shzt)
+        })
+      })
+    },
+    initYxList() {
+      getDeptList().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
+          }
+        }
+      })
+    },
+    initBmList() {
+      getSectionList().then(response => {
+        this.bmList = 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>
+
diff --git a/leave-school-vue/src/views/statistical/handling/index.vue b/leave-school-vue/src/views/statistical/handling/index.vue
index bcd7d34..936f769 100644
--- a/leave-school-vue/src/views/statistical/handling/index.vue
+++ b/leave-school-vue/src/views/statistical/handling/index.vue
@@ -189,7 +189,7 @@
 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'
+import { getDeptList as getAllDeptList } from '@/api/department-api'
 import { getZyListByYx } from '@/api/major-api'
 import waves from '@/directive/waves' // 水波纹指令
 import { resetForm } from '@/utils'
diff --git a/leave-school-vue/src/views/statistical/nodereport/index.vue b/leave-school-vue/src/views/statistical/nodereport/index.vue
index 803b19f..9081c35 100644
--- a/leave-school-vue/src/views/statistical/nodereport/index.vue
+++ b/leave-school-vue/src/views/statistical/nodereport/index.vue
@@ -85,7 +85,7 @@
     </el-col>
     <el-col :span="24">
       <el-card>
-        <div id="myChart4" :style="{width: '100%', height: '300px'}"></div>
+        <div id="zylxChart" :style="{width: '100%', height: '300px'}"></div>
       </el-card>
     </el-col>
     <el-dialog title="详情" :visible.sync="dialogFormVisible" width="80%" top="2vh">
@@ -97,7 +97,7 @@
 <script>
 import { getList, getLeaveAuditResult } from '@/api/nodereport-api'
 import { getDicList } from '@/api/dictionary-api'
-import { getAllList as getAllDeptList } from '@/api/department-api'
+import { getDeptList as getAllDeptList } from '@/api/department-api'
 import { getZyListByYx } from '@/api/major-api'
 import waves from '@/directive/waves' // 水波纹指令
 import { resetForm } from '@/utils'
@@ -151,6 +151,11 @@
               trigger: 'item',
               formatter: '{a} <br/>{b} : {c} ({d}%)'
             },
+            toolbox: {
+              feature: {
+                saveAsImage: {}
+              }
+            },
             legend: {
               orient: 'vertical',
               left: 'left',
@@ -187,7 +192,7 @@
         const zylx = response.data.zylx || 0
         const bzylx = response.data.bzylx || 0
         // 基于准备好的dom,初始化echarts实例
-        const myChart4 = window.echarts.init(document.getElementById('myChart4'))
+        const zylxChart = window.echarts.init(document.getElementById('zylxChart'))
         // 绘制图表
         const option = {
           title: {
@@ -198,6 +203,11 @@
             trigger: 'item',
             formatter: '{a} <br/>{b} : {c} ({d}%)'
           },
+          toolbox: {
+            feature: {
+              saveAsImage: {}
+            }
+          },
           legend: {
             orient: 'vertical',
             left: 'left',
@@ -223,7 +233,7 @@
             }
           ]
         }
-        myChart4.setOption(option)
+        zylxChart.setOption(option)
       })
     },
     initYxList() {