部门统计报表查询
diff --git a/leave-school-vue/src/api/sectionreport-api.js b/leave-school-vue/src/api/sectionreport-api.js
new file mode 100644
index 0000000..5e4fb05
--- /dev/null
+++ b/leave-school-vue/src/api/sectionreport-api.js
@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+export function getList(params) {
+  return request({
+    url: '/api/statistical/sectionreport/list-api',
+    method: 'get',
+    params
+  })
+}
diff --git a/leave-school-vue/src/icons/svg/deptreport.svg b/leave-school-vue/src/icons/svg/deptreport.svg
index 6ea0e38..f32988b 100644
--- a/leave-school-vue/src/icons/svg/deptreport.svg
+++ b/leave-school-vue/src/icons/svg/deptreport.svg
@@ -1 +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
+<?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="1535354819184" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1801" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M946.169514 263.275273l-345.628802-223.762647c0 0-50.350863-36.696391-97.544129-36.696391-41.816818 0-81.329444 36.696391-81.329444 36.696391L92.338362 242.878907c0 0-34.648221 32.173348-20.481707 81.500125C79.793316 351.943995 128.949412 360.990083 128.949412 360.990083L165.560463 360.990083l0 305.433453c0 0 4.011001 290.669556 31.405284 319.173264 25.431453 26.455538 74.246187 35.501625 74.246187 35.501625l483.794983 0c0 0 49.070756-4.523044 73.051421-32.68539 22.700558-26.711559 20.481707-322.07484 20.481707-322.07484L848.540045 360.990083l61.018418 0c0 0 36.781732-4.096341 46.937245-31.746646C969.979498 292.717726 946.169514 263.275273 946.169514 263.275273zM306.372198 841.115426c-42.670223 0-64.005334-20.311026-64.005334-61.103759 0-40.707392 21.335111-61.103759 64.005334-61.103759S370.377531 739.304275 370.377531 780.011668C370.377531 820.71906 349.04242 841.115426 306.372198 841.115426zM306.372198 669.751813c-42.670223 0-64.005334-20.311026-64.005334-61.103759 0-40.707392 21.335111-61.103759 64.005334-61.103759s64.005334 20.396366 64.005334 61.103759C370.377531 649.355446 349.04242 669.751813 306.372198 669.751813zM306.372198 498.388199c-42.670223 0-64.005334-20.311026-64.005334-61.103759 0-40.707392 21.335111-61.018418 64.005334-61.018418s64.005334 20.311026 64.005334 61.018418C370.377531 478.077173 349.04242 498.388199 306.372198 498.388199zM559.833319 914.67889c0 26.967581-21.847154 48.985415-48.900075 48.985415L486.525877 963.664305c-26.967581 0-48.900075-21.932494-48.900075-48.985415L437.625802 767.722644c0-27.052921 21.847154-48.900075 48.900075-48.900075l24.407367 0c26.967581 0 48.900075 21.932494 48.900075 48.900075L559.833319 914.67889zM498.814901 669.751813c-42.670223 0-64.005334-20.311026-64.005334-61.103759 0-40.707392 21.335111-61.103759 64.005334-61.103759 42.670223 0 64.005334 20.396366 64.005334 61.103759C562.820235 649.355446 541.485124 669.751813 498.814901 669.751813zM498.814901 498.388199c-42.670223 0-64.005334-20.311026-64.005334-61.103759 0-40.707392 21.335111-61.018418 64.005334-61.018418 42.670223 0 64.005334 20.311026 64.005334 61.018418C562.820235 478.077173 541.485124 498.388199 498.814901 498.388199zM691.257605 841.115426c-42.670223 0-64.005334-20.311026-64.005334-61.103759 0-40.707392 21.335111-61.103759 64.005334-61.103759 42.670223 0 64.005334 20.396366 64.005334 61.103759C755.262939 820.71906 733.927827 841.115426 691.257605 841.115426zM691.257605 669.751813c-42.670223 0-64.005334-20.311026-64.005334-61.103759 0-40.707392 21.335111-61.103759 64.005334-61.103759 42.670223 0 64.005334 20.396366 64.005334 61.103759C755.262939 649.355446 733.927827 669.751813 691.257605 669.751813zM691.257605 498.388199c-42.670223 0-64.005334-20.311026-64.005334-61.103759 0-40.707392 21.335111-61.018418 64.005334-61.018418 42.670223 0 64.005334 20.311026 64.005334 61.018418C755.262939 478.077173 733.927827 498.388199 691.257605 498.388199z" p-id="1802" fill="#bfcbd9"></path></svg>
\ No newline at end of file
diff --git a/leave-school-vue/src/icons/svg/sectionreport.svg b/leave-school-vue/src/icons/svg/sectionreport.svg
new file mode 100644
index 0000000..6ea0e38
--- /dev/null
+++ b/leave-school-vue/src/icons/svg/sectionreport.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/deptreport.js b/leave-school-vue/src/mock/deptreport.js
index 0e08084..9d969d7 100644
--- a/leave-school-vue/src/mock/deptreport.js
+++ b/leave-school-vue/src/mock/deptreport.js
@@ -25,14 +25,5 @@
       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 06d547e..c2ab223 100644
--- a/leave-school-vue/src/mock/index.js
+++ b/leave-school-vue/src/mock/index.js
@@ -18,6 +18,7 @@
 import nodereportApi from './nodereport'
 import deptreportApi from './deptreport'
 import majorreportApi from './majorreport'
+import sectionreportApi from './sectionreport'
 
 import leaveschoolnodeApi from './leaveschoolnode'
 
@@ -115,6 +116,9 @@
 // 专业统计报表查询
 Mock.mock(/\/api\/statistical\/majorreport\/list-api/, 'get', majorreportApi.getList)
 
+// 部门统计报表查询
+Mock.mock(/\/api\/statistical\/sectionreport\/list-api/, 'get', sectionreportApi.getList)
+
 // 离校环节管理
 Mock.mock(/\/api\/procedures\/node\/list-api/, 'get', leaveschoolnodeApi.getList)
 Mock.mock(/\/api\/procedures\/node\/create-node/, 'post', leaveschoolnodeApi.createData)
diff --git a/leave-school-vue/src/mock/majorreport.js b/leave-school-vue/src/mock/majorreport.js
index ad2be90..1fc55fd 100644
--- a/leave-school-vue/src/mock/majorreport.js
+++ b/leave-school-vue/src/mock/majorreport.js
@@ -26,14 +26,5 @@
       recordCount: mockList.length,
       code: 200
     }
-  },
-  getLeaveAuditResult: config => {
-    return {
-      data: {
-        zylx: 100,
-        bzylx: 200
-      },
-      code: 200
-    }
   }
 }
diff --git a/leave-school-vue/src/mock/menulist.js b/leave-school-vue/src/mock/menulist.js
index a854108..616ae59 100644
--- a/leave-school-vue/src/mock/menulist.js
+++ b/leave-school-vue/src/mock/menulist.js
@@ -167,6 +167,12 @@
         code: 'majorreport',
         resource: '/views/statistical/majorreport/index',
         meta: { title: '专业统计报表查询', icon: 'majorreport' }
+      },
+      {
+        path: 'sectionreport',
+        code: 'sectionreport',
+        resource: '/views/statistical/sectionreport/index',
+        meta: { title: '部门统计报表查询', icon: 'sectionreport' }
       }
     ]
   }
diff --git a/leave-school-vue/src/mock/sectionreport.js b/leave-school-vue/src/mock/sectionreport.js
new file mode 100644
index 0000000..f1430ad
--- /dev/null
+++ b/leave-school-vue/src/mock/sectionreport.js
@@ -0,0 +1,29 @@
+import Mock from 'mockjs'
+import { param2Obj } from '@/utils'
+
+const recordList = Mock.mock({
+  'list|4': [{
+    'id': '@increment',
+    'bm|1': ['后勤处', '财务处', '学生处', '图书馆'],
+    'bmid|1': [1, 2, 3, 4],
+    'shtg|1-1000': 100,
+    'shbtg|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
+    }
+  }
+}
diff --git a/leave-school-vue/src/views/statistical/deptreport/index.vue b/leave-school-vue/src/views/statistical/deptreport/index.vue
index f69e393..fbf4423 100644
--- a/leave-school-vue/src/views/statistical/deptreport/index.vue
+++ b/leave-school-vue/src/views/statistical/deptreport/index.vue
@@ -60,7 +60,6 @@
   data() {
     return {
       tableheight: 500,
-      year: (new Date()).getFullYear() + 2,
       pcmcList: [],
       queryparam: {}
     }
diff --git a/leave-school-vue/src/views/statistical/majorreport/index.vue b/leave-school-vue/src/views/statistical/majorreport/index.vue
index 460e312..13472f8 100644
--- a/leave-school-vue/src/views/statistical/majorreport/index.vue
+++ b/leave-school-vue/src/views/statistical/majorreport/index.vue
@@ -67,7 +67,6 @@
   data() {
     return {
       tableheight: 500,
-      year: (new Date()).getFullYear() + 2,
       pcmcList: [],
       yxList: [],
       queryparam: {}
diff --git a/leave-school-vue/src/views/statistical/sectionreport/index.vue b/leave-school-vue/src/views/statistical/sectionreport/index.vue
new file mode 100644
index 0000000..3045ac2
--- /dev/null
+++ b/leave-school-vue/src/views/statistical/sectionreport/index.vue
@@ -0,0 +1,157 @@
+<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.bm}}
+        </template>
+      </el-table-column>
+      <el-table-column label="审核通过" align="center">
+        <template slot-scope="scope">
+          {{scope.row.shtg}}
+        </template>
+      </el-table-column>
+      <el-table-column label="审核不通过" align="center">
+        <template slot-scope="scope">
+          {{scope.row.shbtg}}
+        </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/sectionreport-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: [],
+      queryparam: {}
+    }
+  },
+  created() {
+    this.handlePageList()
+    this.tableheight = window.innerHeight - 320
+  },
+  methods: {
+    drawLine() {
+      const that = this
+      this.$nextTick(function() {
+        const xdata = []
+        const bmiddata = []
+        const shtgdata = []
+        const shbtgdata = []
+        for (const item of this.items) {
+          xdata.push(item.bm)
+          bmiddata.push(item.bmid)
+          shtgdata.push(item.shtg)
+          shbtgdata.push(item.shbtg)
+        }
+        // 基于准备好的dom,初始化echarts实例
+        const myChart = window.echarts.init(document.getElementById('myChart'))
+        // 绘制图表
+        const option = {
+          tooltip: {
+            trigger: 'axis'
+          },
+          toolbox: {
+            feature: {
+              saveAsImage: {}
+            }
+          },
+          xAxis: {
+            type: 'category',
+            data: xdata,
+            bmiddata: bmiddata
+          },
+          yAxis: {
+            type: 'value'
+          },
+          legend: {
+            data: ['准予离校', '不准予离校']
+          },
+          series: [
+            {
+              name: '准予离校',
+              type: 'bar',
+              data: shtgdata
+            },
+            {
+              name: '不准予离校',
+              type: 'bar',
+              data: shbtgdata
+            }]
+        }
+        myChart.setOption(option)
+        myChart.on('click', function(params) {
+          that.listQuery.bm = option.xAxis.bmiddata[params.seriesIndex]
+          // 命名的路由
+          // params不能直接传递that.listQuery,否则跳转页面的级联下拉框有bug,无法选择,可传递复制对象
+          that.$router.push({ name: 'deptsectionrep', params: Object.assign({}, 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>
+