院系统计报表查询
diff --git a/leave-school-vue/src/api/department-api.js b/leave-school-vue/src/api/department-api.js
index b8cbc29..3caafbe 100644
--- a/leave-school-vue/src/api/department-api.js
+++ b/leave-school-vue/src/api/department-api.js
@@ -8,9 +8,16 @@
     params
   })
 }
-export function getAllList(params) {
+export function getDeptList(params) {
   return request({
-    url: '/api/system/department/all-list',
+    url: '/api/system/department/dept-list',
+    method: 'get',
+    params
+  })
+}
+export function getSectionList(params) {
+  return request({
+    url: '/api/system/department/section-list',
     method: 'get',
     params
   })
diff --git a/leave-school-vue/src/api/deptreport-api.js b/leave-school-vue/src/api/deptreport-api.js
new file mode 100644
index 0000000..beb7668
--- /dev/null
+++ b/leave-school-vue/src/api/deptreport-api.js
@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+export function getList(params) {
+  return request({
+    url: '/api/statistical/deptreport/list-api',
+    method: 'get',
+    params
+  })
+}
diff --git a/leave-school-vue/src/components/AuditStudentList/index.vue b/leave-school-vue/src/components/AuditStudentList/index.vue
index f3f22d2..27479e3 100644
--- a/leave-school-vue/src/components/AuditStudentList/index.vue
+++ b/leave-school-vue/src/components/AuditStudentList/index.vue
@@ -93,7 +93,7 @@
 <script>
 import { getBjListByZy } from '@/api/class-api'
 import { getAuditList } from '@/api/leavestudent-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/icons/svg/deptreport.svg b/leave-school-vue/src/icons/svg/deptreport.svg
new file mode 100644
index 0000000..6ea0e38
--- /dev/null
+++ b/leave-school-vue/src/icons/svg/deptreport.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1535095956419" class="icon" style="" viewBox="0 0 1026 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2733" xmlns:xlink="http://www.w3.org/1999/xlink" width="200.390625" height="200"><defs><style type="text/css"></style></defs><path d="M171.52 634.88H84.48C38.4 634.88 2.56 670.72 2.56 716.8v202.24c0 46.08 35.84 81.92 81.92 81.92h232.96c46.08 0 81.92-35.84 81.92-81.92V716.8c0-46.08-35.84-81.92-81.92-81.92H171.52z m145.92 56.32c12.8 0 25.6 10.24 25.6 25.6v202.24c0 12.8-10.24 25.6-25.6 25.6H84.48c-12.8 0-25.6-10.24-25.6-25.6V716.8c0-12.8 10.24-25.6 25.6-25.6h232.96z m230.4-320h81.92c46.08 0 81.92-35.84 81.92-81.92V89.6c0-46.08-35.84-81.92-81.92-81.92h-232.96c-46.08 0-81.92 35.84-81.92 81.92v202.24c0 46.08 35.84 81.92 81.92 81.92h94.72l56.32-2.56z m-151.04-56.32c-12.8 0-25.6-10.24-25.6-25.6V89.6c0-12.8 10.24-25.6 25.6-25.6h232.96c12.8 0 25.6 10.24 25.6 25.6v202.24c0 12.8-10.24 25.6-25.6 25.6l-232.96-2.56z m547.84 320h-232.96c-46.08 0-81.92 35.84-81.92 81.92v202.24c0 46.08 35.84 81.92 81.92 81.92h232.96c46.08 0 81.92-35.84 81.92-81.92V716.8c0-46.08-35.84-81.92-81.92-81.92z m23.04 284.16c0 12.8-10.24 25.6-25.6 25.6h-232.96c-12.8 0-25.6-10.24-25.6-25.6V716.8c0-12.8 10.24-25.6 25.6-25.6h232.96c12.8 0 25.6 10.24 25.6 25.6v202.24z m0 0" fill="#bfcbd9" p-id="2734"></path><path d="M855.04 634.88V512c0-15.36-12.8-28.16-28.16-28.16h-281.6v-112.64h-56.32v112.64H197.12c-15.36 0-25.6 12.8-25.6 25.6v122.88H230.4v-92.16h568.32v92.16h56.32z m0 0" fill="#bfcbd9" p-id="2735"></path></svg>
\ No newline at end of file
diff --git a/leave-school-vue/src/mock/department.js b/leave-school-vue/src/mock/department.js
index 0ce4f87..98ef5b3 100644
--- a/leave-school-vue/src/mock/department.js
+++ b/leave-school-vue/src/mock/department.js
@@ -34,9 +34,17 @@
       code: 200
     }
   },
-  getAllList: config => {
+  getDeptList: config => {
+    const mockList = deptList.filter(item => item.lbm === '院系')
     return {
-      items: deptList,
+      items: mockList,
+      code: 200
+    }
+  },
+  getSectionList: config => {
+    const mockList = deptList.filter(item => item.lbm === '部门')
+    return {
+      items: mockList,
       code: 200
     }
   },
diff --git a/leave-school-vue/src/mock/deptreport.js b/leave-school-vue/src/mock/deptreport.js
new file mode 100644
index 0000000..0e08084
--- /dev/null
+++ b/leave-school-vue/src/mock/deptreport.js
@@ -0,0 +1,38 @@
+import Mock from 'mockjs'
+import { param2Obj } from '@/utils'
+
+const recordList = Mock.mock({
+  'list|4': [{
+    'id': '@increment',
+    'yx|1': ['教育学院', '经管学院', '人文学院'],
+    'yxid|1': [1, 2, 3],
+    'zylx|1-1000': 100,
+    'bzylx|1-1000': 100
+  }]
+}).list
+
+export default{
+  getList: config => {
+    const { pcmc, pageIndex = 1, pageSize = 20 } = param2Obj(config.url)
+    const mockList = recordList.filter(item => {
+      if (pcmc && item.pcmc + '' !== pcmc + '') 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
+    }
+  },
+  getLeaveAuditResult: config => {
+    return {
+      data: {
+        zylx: 100,
+        bzylx: 200
+      },
+      code: 200
+    }
+  }
+}
diff --git a/leave-school-vue/src/mock/index.js b/leave-school-vue/src/mock/index.js
index 5fa59ec..fe83b76 100644
--- a/leave-school-vue/src/mock/index.js
+++ b/leave-school-vue/src/mock/index.js
@@ -13,8 +13,9 @@
 import instructorApi from './instructor'
 import newspublishApi from './newspublish'
 import handlingApi from './handling'
-import nodereportApi from './nodereport'
 import leavestudentApi from './leavestudent'
+import nodereportApi from './nodereport'
+import deptreportApi from './deptreport'
 
 // 登录
 Mock.mock(/\/api\/login\/login/, 'post', loginApi.loginByUsername)
@@ -29,7 +30,8 @@
 
 // 院系部门管理
 Mock.mock(/\/api\/system\/department\/list-api/, 'get', departmentApi.getList)
-Mock.mock(/\/api\/system\/department\/all-list/, 'get', departmentApi.getAllList)
+Mock.mock(/\/api\/system\/department\/dept-list/, 'get', departmentApi.getDeptList)
+Mock.mock(/\/api\/system\/department\/section-list/, 'get', departmentApi.getSectionList)
 Mock.mock(/\/api\/system\/department\/create-department/, 'post', departmentApi.createData)
 Mock.mock(/\/api\/system\/department\/delete-department/, 'delete', departmentApi.deleteData)
 Mock.mock(/\/api\/system\/department\/get-item/, 'get', departmentApi.getItem)
@@ -95,12 +97,15 @@
 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\/statistical\/nodereport\/list-api/, 'get', nodereportApi.getList)
 Mock.mock(/\/api\/statistical\/nodereport\/get-item/, 'get', nodereportApi.getItem)
 Mock.mock(/\/api\/statistical\/nodereport\/leaveresult/, 'get', nodereportApi.getLeaveAuditResult)
 
-// 离校学生审核查询
-Mock.mock(/\/api\/leaveprocess\/leavestudent\/auditlist-api/, 'get', leavestudentApi.getList)
+// 院系统计报表查询
+Mock.mock(/\/api\/statistical\/deptreport\/list-api/, 'get', deptreportApi.getList)
 
 export default Mock
diff --git a/leave-school-vue/src/mock/major.js b/leave-school-vue/src/mock/major.js
index 2999c65..2eacdbc 100644
--- a/leave-school-vue/src/mock/major.js
+++ b/leave-school-vue/src/mock/major.js
@@ -9,7 +9,7 @@
     'sfky|1': ['可用', '不可用'],
     'sfkycode|1': ['1', '0'],
     'ssyx|1': ['教育学院', '经管学院', '人文学院', '数学学院', '计算机学院', '电子学院', '电气学院', '生命科学院'],
-    'ssyxid|1': ['1', '2', '3', '4', '5', '6', '7', '8'],
+    'ssyxid|1': [1, 2, 3, 4, 5, 6, 7, 8],
     'sszygb|1': ['计算机', '哲学']
   }]
 }).list
@@ -21,7 +21,7 @@
       if (zydm && item.zydm !== zydm) return false
       if (zymc && item.zymc !== zymc) return false
       if (sfky && item.sfkycode !== sfky) return false
-      if (ssyx && item.ssyxid !== ssyx) return false
+      if (ssyx && item.ssyxid + '' !== ssyx + '') return false
       return true
     })
 
@@ -34,7 +34,7 @@
   },
   getZyListByYx: config => {
     const { yx } = param2Obj(config.url)
-    const mockList = majorList.filter(item => item.ssyxid === yx)
+    const mockList = majorList.filter(item => item.ssyxid + '' === yx + '')
 
     return {
       items: mockList,
diff --git a/leave-school-vue/src/mock/menulist.js b/leave-school-vue/src/mock/menulist.js
index cc1ded8..659e74f 100644
--- a/leave-school-vue/src/mock/menulist.js
+++ b/leave-school-vue/src/mock/menulist.js
@@ -105,6 +105,19 @@
         code: 'nodereport',
         resource: '/views/statistical/nodereport/index',
         meta: { title: '环节统计报表查询', icon: 'nodereport' }
+      },
+      {
+        path: 'deptreport',
+        code: 'deptreport',
+        resource: '/views/statistical/deptreport/index',
+        meta: { title: '院系统计报表查询', icon: 'deptreport' }
+      },
+      {
+        path: 'deptsectionrep',
+        code: 'deptsectionrep',
+        hidden: true,
+        resource: '/views/statistical/deptsectionrep/index',
+        meta: { title: '院系各部门统计报表', icon: 'deptsectionrep' }
       }
     ]
   }
diff --git a/leave-school-vue/src/mock/nodereport.js b/leave-school-vue/src/mock/nodereport.js
index bb91f1c..bd2d607 100644
--- a/leave-school-vue/src/mock/nodereport.js
+++ b/leave-school-vue/src/mock/nodereport.js
@@ -6,6 +6,7 @@
     'id': '@increment',
     'hjmc|1': ['后勤处', '财务处', '学生处'],
     'hjid': '@word(5)',
+    'yxid|1': [1, 2, 3],
     'dsh|1-1000': 100,
     'shtg|1-1000': 100,
     'shbtg|1-1000': 100
@@ -20,7 +21,7 @@
       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 (yx && item.yxid + '' !== yx + '') return false
       if (zy && item.zy !== zy) return false
       if (bj && item.bj !== bj) return false
       if (xslb && item.xslb !== xslb) return false
diff --git a/leave-school-vue/src/router/index.js b/leave-school-vue/src/router/index.js
index 7f638d2..e49a427 100644
--- a/leave-school-vue/src/router/index.js
+++ b/leave-school-vue/src/router/index.js
@@ -82,6 +82,7 @@
       name: menu.code,
       component: () => import('@/views' + menuresource),
       meta: menu.meta,
+      hidden: menu.hidden,
       children: menu.children ? getChildren(menu.children) : null
     }
     children.push(route)
@@ -100,6 +101,7 @@
         redirect: menu.path + '/' + ((menu.children && menu.children.length > 0) ? menu.children[0].path : null),
         name: menu.code,
         meta: menu.meta,
+        hidden: menu.hidden,
         children: menu.children ? getChildren(menu.children) : null
       }
       menuList.push(route)
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() {
diff --git a/leave-school-vue/src/views/systemmanagement/class/index.vue b/leave-school-vue/src/views/systemmanagement/class/index.vue
index 33619b6..eeb8cf4 100644
--- a/leave-school-vue/src/views/systemmanagement/class/index.vue
+++ b/leave-school-vue/src/views/systemmanagement/class/index.vue
@@ -147,7 +147,7 @@
 <script>
 import { getList, getItem, createClass, deleteClass } from '@/api/class-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/systemmanagement/major/index.vue b/leave-school-vue/src/views/systemmanagement/major/index.vue
index 2738ff7..94cc7d1 100644
--- a/leave-school-vue/src/views/systemmanagement/major/index.vue
+++ b/leave-school-vue/src/views/systemmanagement/major/index.vue
@@ -108,7 +108,7 @@
 <script>
 import { getList, getItem, createMajor, deleteMajor } from '@/api/major-api'
 import { getDicList } from '@/api/dictionary-api'
-import { getAllList as getAllDeptList } from '@/api/department-api'
+import { getDeptList as getAllDeptList } from '@/api/department-api'
 import waves from '@/directive/waves' // 水波纹指令
 import { resetForm } from '@/utils'
 import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
diff --git a/leave-school-vue/src/views/workteam/departmentleader/index.vue b/leave-school-vue/src/views/workteam/departmentleader/index.vue
index c521dce..3200e68 100644
--- a/leave-school-vue/src/views/workteam/departmentleader/index.vue
+++ b/leave-school-vue/src/views/workteam/departmentleader/index.vue
@@ -144,7 +144,7 @@
 <script>
 import { getList, getItem, createDepartmentleader, deleteDepartmentleader } from '@/api/departmentleader-api'
 import { getDicList } from '@/api/dictionary-api'
-import { getAllList as getAllDeptList } from '@/api/department-api'
+import { getDeptList as getAllDeptList } from '@/api/department-api'
 import waves from '@/directive/waves' // 水波纹指令
 import { resetForm } from '@/utils'
 import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
diff --git a/leave-school-vue/src/views/workteam/instructor/index.vue b/leave-school-vue/src/views/workteam/instructor/index.vue
index cad431e..242ce49 100644
--- a/leave-school-vue/src/views/workteam/instructor/index.vue
+++ b/leave-school-vue/src/views/workteam/instructor/index.vue
@@ -133,7 +133,7 @@
 import { getList, getItem, createInstructor, deleteInstructor } from '@/api/instructor-api'
 import { getAllList } from '@/api/class-api'
 import { getDicList } from '@/api/dictionary-api'
-import { getAllList as getAllDeptList } from '@/api/department-api'
+import { getDeptList as getAllDeptList } from '@/api/department-api'
 import waves from '@/directive/waves' // 水波纹指令
 import { resetForm } from '@/utils'
 import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'