diff --git a/leave-school-vue/src/views/404.vue b/leave-school-vue/src/views/404.vue
new file mode 100644
index 0000000..733e038
--- /dev/null
+++ b/leave-school-vue/src/views/404.vue
@@ -0,0 +1,236 @@
+<template>
+  <div class="wscn-http404-container">
+    <div class="wscn-http404">
+      <div class="pic-404">
+        <img class="pic-404__parent" :src="img_404" alt="404">
+        <img class="pic-404__child left" :src="img_404_cloud" alt="404">
+        <img class="pic-404__child mid" :src="img_404_cloud" alt="404">
+        <img class="pic-404__child right" :src="img_404_cloud" alt="404">
+      </div>
+      <div class="bullshit">
+        <div class="bullshit__oops">OOPS!</div>
+        <div class="bullshit__info">
+          <a class='link-type' href='' target='_blank'></a>
+        </div>
+        <div class="bullshit__headline">{{ message }}</div>
+        <div class="bullshit__info">请检查您输入的网址是否正确，请点击以下按钮返回主页或者发送错误报告</div>
+        <a href="" class="bullshit__return-home">返回首页</a>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import img_404 from '@/assets/404_images/404.png'
+import img_404_cloud from '@/assets/404_images/404_cloud.png'
+
+export default {
+  name: 'page404',
+  data() {
+    return {
+      img_404,
+      img_404_cloud
+    }
+  },
+  computed: {
+    message() {
+      return '页面找不到了......'
+    }
+  }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+.wscn-http404-container{
+  transform: translate(-50%,-50%);
+  position: absolute;
+  top: 40%;
+  left: 50%;
+}
+.wscn-http404 {
+  position: relative;
+  width: 1200px;
+  padding: 0 50px;
+  overflow: hidden;
+  .pic-404 {
+    position: relative;
+    float: left;
+    width: 600px;
+    overflow: hidden;
+    &__parent {
+      width: 100%;
+    }
+    &__child {
+      position: absolute;
+      &.left {
+        width: 80px;
+        top: 17px;
+        left: 220px;
+        opacity: 0;
+        animation-name: cloudLeft;
+        animation-duration: 2s;
+        animation-timing-function: linear;
+        animation-fill-mode: forwards;
+        animation-delay: 1s;
+      }
+      &.mid {
+        width: 46px;
+        top: 10px;
+        left: 420px;
+        opacity: 0;
+        animation-name: cloudMid;
+        animation-duration: 2s;
+        animation-timing-function: linear;
+        animation-fill-mode: forwards;
+        animation-delay: 1.2s;
+      }
+      &.right {
+        width: 62px;
+        top: 100px;
+        left: 500px;
+        opacity: 0;
+        animation-name: cloudRight;
+        animation-duration: 2s;
+        animation-timing-function: linear;
+        animation-fill-mode: forwards;
+        animation-delay: 1s;
+      }
+      @keyframes cloudLeft {
+        0% {
+          top: 17px;
+          left: 220px;
+          opacity: 0;
+        }
+        20% {
+          top: 33px;
+          left: 188px;
+          opacity: 1;
+        }
+        80% {
+          top: 81px;
+          left: 92px;
+          opacity: 1;
+        }
+        100% {
+          top: 97px;
+          left: 60px;
+          opacity: 0;
+        }
+      }
+      @keyframes cloudMid {
+        0% {
+          top: 10px;
+          left: 420px;
+          opacity: 0;
+        }
+        20% {
+          top: 40px;
+          left: 360px;
+          opacity: 1;
+        }
+        70% {
+          top: 130px;
+          left: 180px;
+          opacity: 1;
+        }
+        100% {
+          top: 160px;
+          left: 120px;
+          opacity: 0;
+        }
+      }
+      @keyframes cloudRight {
+        0% {
+          top: 100px;
+          left: 500px;
+          opacity: 0;
+        }
+        20% {
+          top: 120px;
+          left: 460px;
+          opacity: 1;
+        }
+        80% {
+          top: 180px;
+          left: 340px;
+          opacity: 1;
+        }
+        100% {
+          top: 200px;
+          left: 300px;
+          opacity: 0;
+        }
+      }
+    }
+  }
+  .bullshit {
+    position: relative;
+    float: left;
+    width: 300px;
+    padding: 30px 0;
+    overflow: hidden;
+    &__oops {
+      font-size: 32px;
+      font-weight: bold;
+      line-height: 40px;
+      color: #1482f0;
+      opacity: 0;
+      margin-bottom: 20px;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-fill-mode: forwards;
+    }
+    &__headline {
+      font-size: 20px;
+      line-height: 24px;
+      color: #222;
+      font-weight: bold;
+      opacity: 0;
+      margin-bottom: 10px;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-delay: 0.1s;
+      animation-fill-mode: forwards;
+    }
+    &__info {
+      font-size: 13px;
+      line-height: 21px;
+      color: grey;
+      opacity: 0;
+      margin-bottom: 30px;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-delay: 0.2s;
+      animation-fill-mode: forwards;
+    }
+    &__return-home {
+      display: block;
+      float: left;
+      width: 110px;
+      height: 36px;
+      background: #1482f0;
+      border-radius: 100px;
+      text-align: center;
+      color: #ffffff;
+      opacity: 0;
+      font-size: 14px;
+      line-height: 36px;
+      cursor: pointer;
+      animation-name: slideUp;
+      animation-duration: 0.5s;
+      animation-delay: 0.3s;
+      animation-fill-mode: forwards;
+    }
+    @keyframes slideUp {
+      0% {
+        transform: translateY(60px);
+        opacity: 0;
+      }
+      100% {
+        transform: translateY(0);
+        opacity: 1;
+      }
+    }
+  }
+}
+</style>
diff --git a/leave-school-vue/src/views/dashboard/index.vue b/leave-school-vue/src/views/dashboard/index.vue
new file mode 100644
index 0000000..4b4625c
--- /dev/null
+++ b/leave-school-vue/src/views/dashboard/index.vue
@@ -0,0 +1,32 @@
+<template>
+  <div class="dashboard-container">
+    <div class="dashboard-text">name:{{name}}</div>
+    <div class="dashboard-text">roles:<span v-for='role in roles' :key='role'>{{role}}</span></div>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+
+export default {
+  name: 'dashboard',
+  computed: {
+    ...mapGetters([
+      'name',
+      'roles'
+    ])
+  }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+.dashboard {
+  &-container {
+    margin: 30px;
+  }
+  &-text {
+    font-size: 30px;
+    line-height: 46px;
+  }
+}
+</style>
diff --git a/leave-school-vue/src/views/layout/Layout.vue b/leave-school-vue/src/views/layout/Layout.vue
new file mode 100644
index 0000000..df7af87
--- /dev/null
+++ b/leave-school-vue/src/views/layout/Layout.vue
@@ -0,0 +1,74 @@
+<template>
+  <div class="app-wrapper" :class="classObj">
+    <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"></div>
+    <sidebar class="sidebar-container"></sidebar>
+    <div class="main-container">
+      <navbar></navbar>
+      <tags-view v-if='showtags'></tags-view>
+      <app-main></app-main>
+    </div>
+  </div>
+</template>
+
+<script>
+import { Navbar, Sidebar, AppMain, TagsView } from './components'
+import ResizeMixin from './mixin/ResizeHandler'
+
+export default {
+  name: 'layout',
+  components: {
+    Navbar,
+    Sidebar,
+    AppMain,
+    TagsView
+  },
+  mixins: [ResizeMixin],
+  computed: {
+    showtags() {
+      return process.env.SHOW_TAGS
+    },
+    sidebar() {
+      return this.$store.state.app.sidebar
+    },
+    device() {
+      return this.$store.state.app.device
+    },
+    classObj() {
+      return {
+        hideSidebar: !this.sidebar.opened,
+        openSidebar: this.sidebar.opened,
+        withoutAnimation: this.sidebar.withoutAnimation,
+        mobile: this.device === 'mobile'
+      }
+    }
+  },
+  methods: {
+    handleClickOutside() {
+      this.$store.dispatch('CloseSideBar', { withoutAnimation: false })
+    }
+  }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+  @import "src/styles/mixin.scss";
+  .app-wrapper {
+    @include clearfix;
+    position: relative;
+    height: 100%;
+    width: 100%;
+    &.mobile.openSidebar{
+      position: fixed;
+      top: 0;
+    }
+  }
+  .drawer-bg {
+    background: #000;
+    opacity: 0.3;
+    width: 100%;
+    top: 0;
+    height: 100%;
+    position: absolute;
+    z-index: 999;
+  }
+</style>
diff --git a/leave-school-vue/src/views/layout/components/AppMain.vue b/leave-school-vue/src/views/layout/components/AppMain.vue
new file mode 100644
index 0000000..64ecff8
--- /dev/null
+++ b/leave-school-vue/src/views/layout/components/AppMain.vue
@@ -0,0 +1,33 @@
+<template>
+  <section class="app-main">
+    <transition name="fade" mode="out-in">
+      <!-- <router-view :key="key"></router-view> -->
+      <keep-alive :include="cachedViews">
+        <router-view :key="key"></router-view>
+      </keep-alive>
+    </transition>
+  </section>
+</template>
+
+<script>
+export default {
+  name: 'AppMain',
+  computed: {
+    cachedViews() {
+      return this.$store.state.tagsView.cachedViews
+    },
+    key() {
+      return this.$route.fullPath
+    }
+  }
+}
+</script>
+
+<style scoped>
+.app-main {
+  /*50 = navbar  */
+  min-height: calc(100vh - 84px);
+  position: relative;
+  overflow: hidden;
+}
+</style>
diff --git a/leave-school-vue/src/views/layout/components/Navbar.vue b/leave-school-vue/src/views/layout/components/Navbar.vue
new file mode 100644
index 0000000..c901e8f
--- /dev/null
+++ b/leave-school-vue/src/views/layout/components/Navbar.vue
@@ -0,0 +1,95 @@
+<template>
+  <el-menu class="navbar" mode="horizontal">
+    <hamburger class="hamburger-container" :toggleClick="toggleSideBar" :isActive="sidebar.opened"></hamburger>
+    <breadcrumb></breadcrumb>
+    <el-dropdown class="avatar-container" trigger="click">
+      <div class="avatar-wrapper">
+        <img class="user-avatar" :src="avatar">
+        <i class="el-icon-caret-bottom"></i>
+      </div>
+      <el-dropdown-menu class="user-dropdown" slot="dropdown">
+        <router-link class="inlineBlock" to="/">
+          <el-dropdown-item>
+            首页
+          </el-dropdown-item>
+        </router-link>
+        <el-dropdown-item divided>
+          <span @click="logout" style="display:block;">注销</span>
+        </el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown>
+  </el-menu>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import Breadcrumb from '@/components/Breadcrumb'
+import Hamburger from '@/components/Hamburger'
+
+export default {
+  components: {
+    Breadcrumb,
+    Hamburger
+  },
+  computed: {
+    ...mapGetters([
+      'sidebar',
+      'avatar'
+    ])
+  },
+  methods: {
+    toggleSideBar() {
+      this.$store.dispatch('ToggleSideBar')
+    },
+    logout() {
+      var pro = this.$store.dispatch('LogOut')
+      pro.then(() => {
+        location.reload() // 为了重新实例化vue-router对象 避免bug
+      })
+    }
+  }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+.navbar {
+  height: 50px;
+  line-height: 50px;
+  border-radius: 0px !important;
+  .hamburger-container {
+    line-height: 58px;
+    height: 50px;
+    float: left;
+    padding: 0 10px;
+  }
+  .screenfull {
+    position: absolute;
+    right: 90px;
+    top: 16px;
+    color: red;
+  }
+  .avatar-container {
+    height: 50px;
+    display: inline-block;
+    position: absolute;
+    right: 35px;
+    .avatar-wrapper {
+      cursor: pointer;
+      margin-top: 5px;
+      position: relative;
+      .user-avatar {
+        width: 40px;
+        height: 40px;
+        border-radius: 10px;
+      }
+      .el-icon-caret-bottom {
+        position: absolute;
+        right: -20px;
+        top: 25px;
+        font-size: 12px;
+      }
+    }
+  }
+}
+</style>
+
diff --git a/leave-school-vue/src/views/layout/components/Sidebar/SidebarItem.vue b/leave-school-vue/src/views/layout/components/Sidebar/SidebarItem.vue
new file mode 100644
index 0000000..78edb91
--- /dev/null
+++ b/leave-school-vue/src/views/layout/components/Sidebar/SidebarItem.vue
@@ -0,0 +1,78 @@
+<template>
+  <div v-if="!item.hidden&&item.children" class="menu-wrapper">
+
+      <router-link v-if="hasOneShowingChild(item.children) && !onlyOneChild.children&&!item.alwaysShow" :to="resolvePath(onlyOneChild.path)">
+        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
+          <svg-icon v-if="onlyOneChild.meta&&onlyOneChild.meta.icon" :icon-class="onlyOneChild.meta.icon"></svg-icon>
+          <span v-if="onlyOneChild.meta&&onlyOneChild.meta.title" slot="title">{{onlyOneChild.meta.title}}</span>
+        </el-menu-item>
+      </router-link>
+
+      <el-submenu v-else :index="item.name||item.path">
+        <template slot="title">
+          <svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"></svg-icon>
+          <span v-if="item.meta&&item.meta.title" slot="title">{{item.meta.title}}</span>
+        </template>
+
+        <template v-for="child in item.children" v-if="!child.hidden">
+          <sidebar-item :is-nest="true" class="nest-menu" v-if="child.children&&child.children.length>0" :item="child" :key="child.path" :base-path="resolvePath(child.path)"></sidebar-item>
+
+          <router-link v-else :to="resolvePath(child.path)" :key="child.name">
+            <el-menu-item :index="resolvePath(child.path)">
+              <svg-icon v-if="child.meta&&child.meta.icon" :icon-class="child.meta.icon"></svg-icon>
+              <span v-if="child.meta&&child.meta.title" slot="title">{{child.meta.title}}</span>
+            </el-menu-item>
+          </router-link>
+        </template>
+      </el-submenu>
+
+  </div>
+</template>
+
+<script>
+import path from 'path'
+
+export default {
+  name: 'SidebarItem',
+  props: {
+    // route配置json
+    item: {
+      type: Object,
+      required: true
+    },
+    isNest: {
+      type: Boolean,
+      default: false
+    },
+    basePath: {
+      type: String,
+      default: ''
+    }
+  },
+  data() {
+    return {
+      onlyOneChild: null
+    }
+  },
+  methods: {
+    hasOneShowingChild(children) {
+      const showingChildren = children.filter(item => {
+        if (item.hidden) {
+          return false
+        } else {
+          // temp set(will be used if only has one showing child )
+          this.onlyOneChild = item
+          return true
+        }
+      })
+      if (showingChildren.length === 1) {
+        return true
+      }
+      return false
+    },
+    resolvePath(...paths) {
+      return path.resolve(this.basePath, ...paths)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/layout/components/Sidebar/index.vue b/leave-school-vue/src/views/layout/components/Sidebar/index.vue
new file mode 100644
index 0000000..a84207e
--- /dev/null
+++ b/leave-school-vue/src/views/layout/components/Sidebar/index.vue
@@ -0,0 +1,35 @@
+<template>
+  <el-scrollbar wrapClass="scrollbar-wrapper">
+    <el-menu
+      mode="vertical"
+      :show-timeout="200"
+      :default-active="$route.path"
+      :collapse="isCollapse"
+      background-color="#304156"
+      text-color="#bfcbd9"
+      active-text-color="#409EFF"
+    >
+      <sidebar-item v-for="route in routes" :key="route.name" :item="route" :base-path="route.path"></sidebar-item>
+    </el-menu>
+  </el-scrollbar>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import SidebarItem from './SidebarItem'
+
+export default {
+  components: { SidebarItem },
+  computed: {
+    ...mapGetters([
+      'sidebar'
+    ]),
+    routes() {
+      return this.$router.options.routes
+    },
+    isCollapse() {
+      return !this.sidebar.opened
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/layout/components/TagsView.vue b/leave-school-vue/src/views/layout/components/TagsView.vue
new file mode 100644
index 0000000..121c2b2
--- /dev/null
+++ b/leave-school-vue/src/views/layout/components/TagsView.vue
@@ -0,0 +1,205 @@
+<template>
+  <div class="tags-view-container">
+    <scroll-pane class='tags-view-wrapper' ref='scrollPane'>
+      <router-link ref='tag' class="tags-view-item" :class="isActive(tag)?'active':''" v-for="tag in Array.from(visitedViews)"
+        :to="tag" :key="tag.path" @contextmenu.prevent.native="openMenu(tag,$event)">
+        {{tag.title}}
+        <span class='el-icon-close' @click.prevent.stop='closeSelectedTag(tag)'></span>
+      </router-link>
+    </scroll-pane>
+    <ul class='contextmenu' v-show="visible" :style="{left:left+'px',top:top+'px'}">
+      <li @click="closeSelectedTag(selectedTag)">关闭当前</li>
+      <li @click="closeOthersTags">关闭其它</li>
+      <li @click="closeAllTags">关闭所有</li>
+    </ul>
+  </div>
+</template>
+
+<script>
+import ScrollPane from '@/components/ScrollPane'
+// import { generateTitle } from '@/utils/i18n'
+
+export default {
+  components: { ScrollPane },
+  data() {
+    return {
+      visible: false,
+      top: 0,
+      left: 0,
+      selectedTag: {}
+    }
+  },
+  computed: {
+    visitedViews() {
+      return this.$store.state.tagsView.visitedViews
+    }
+  },
+  watch: {
+    $route() {
+      this.addViewTags()
+      this.moveToCurrentTag()
+    },
+    visible(value) {
+      if (value) {
+        document.body.addEventListener('click', this.closeMenu)
+      } else {
+        document.body.removeEventListener('click', this.closeMenu)
+      }
+    }
+  },
+  mounted() {
+    this.addViewTags()
+  },
+  methods: {
+    // generateTitle, // generateTitle by vue-i18n
+    generateRoute() {
+      if (this.$route.name) {
+        return this.$route
+      }
+      return false
+    },
+    isActive(route) {
+      return route.path === this.$route.path
+    },
+    addViewTags() {
+      const route = this.generateRoute()
+      if (!route) {
+        return false
+      }
+      this.$store.dispatch('addVisitedViews', route)
+    },
+    moveToCurrentTag() {
+      const tags = this.$refs.tag
+      this.$nextTick(() => {
+        for (const tag of tags) {
+          if (tag.to.path === this.$route.path) {
+            this.$refs.scrollPane.moveToTarget(tag.$el)
+            break
+          }
+        }
+      })
+    },
+    closeSelectedTag(view) {
+      this.$store.dispatch('delVisitedViews', view).then((views) => {
+        if (this.isActive(view)) {
+          const latestView = views.slice(-1)[0]
+          if (latestView) {
+            this.$router.push(latestView)
+          } else {
+            this.$router.push('/')
+          }
+        }
+      })
+    },
+    closeOthersTags() {
+      this.$router.push(this.selectedTag)
+      this.$store.dispatch('delOthersViews', this.selectedTag).then(() => {
+        this.moveToCurrentTag()
+      })
+    },
+    closeAllTags() {
+      this.$store.dispatch('delAllViews')
+      this.$router.push('/')
+    },
+    openMenu(tag, e) {
+      this.visible = true
+      this.selectedTag = tag
+      const offsetLeft = this.$el.getBoundingClientRect().left // container margin left
+      this.left = e.clientX - offsetLeft + 15 // 15: margin right
+      this.top = e.clientY
+    },
+    closeMenu() {
+      this.visible = false
+    }
+  }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+.tags-view-container {
+  .tags-view-wrapper {
+    background: #fff;
+    height: 34px;
+    border-bottom: 1px solid #d8dce5;
+    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
+    .tags-view-item {
+      display: inline-block;
+      position: relative;
+      height: 26px;
+      line-height: 26px;
+      border: 1px solid #d8dce5;
+      color: #495060;
+      background: #fff;
+      padding: 0 8px;
+      font-size: 12px;
+      margin-left: 5px;
+      margin-top: 4px;
+      &:first-of-type {
+        margin-left: 15px;
+      }
+      &.active {
+        background-color: #42b983;
+        color: #fff;
+        border-color: #42b983;
+        &::before {
+          content: '';
+          background: #fff;
+          display: inline-block;
+          width: 8px;
+          height: 8px;
+          border-radius: 50%;
+          position: relative;
+          margin-right: 2px;
+        }
+      }
+    }
+  }
+  .contextmenu {
+    margin: 0;
+    background: #fff;
+    z-index: 100;
+    position: absolute;
+    list-style-type: none;
+    padding: 5px 0;
+    border-radius: 4px;
+    font-size: 12px;
+    font-weight: 400;
+    color: #333;
+    box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
+    li {
+      margin: 0;
+      padding: 7px 16px;
+      cursor: pointer;
+      &:hover {
+        background: #eee;
+      }
+    }
+  }
+}
+</style>
+
+<style rel="stylesheet/scss" lang="scss">
+//reset element css of el-icon-close
+.tags-view-wrapper {
+  .tags-view-item {
+    .el-icon-close {
+      width: 16px;
+      height: 16px;
+      vertical-align: 2px;
+      border-radius: 50%;
+      text-align: center;
+      transition: all .3s cubic-bezier(.645, .045, .355, 1);
+      transform-origin: 100% 50%;
+      &:before {
+        transform: scale(.6);
+        display: inline-block;
+        vertical-align: -3px;
+      }
+      &:hover {
+        background-color: #b4bccc;
+        color: #fff;
+      }
+    }
+  }
+}
+</style>
diff --git a/leave-school-vue/src/views/layout/components/index.js b/leave-school-vue/src/views/layout/components/index.js
new file mode 100644
index 0000000..7cddb7c
--- /dev/null
+++ b/leave-school-vue/src/views/layout/components/index.js
@@ -0,0 +1,4 @@
+export { default as Navbar } from './Navbar'
+export { default as Sidebar } from './Sidebar'
+export { default as TagsView } from './TagsView'
+export { default as AppMain } from './AppMain'
diff --git a/leave-school-vue/src/views/layout/mixin/ResizeHandler.js b/leave-school-vue/src/views/layout/mixin/ResizeHandler.js
new file mode 100644
index 0000000..b22c8bb
--- /dev/null
+++ b/leave-school-vue/src/views/layout/mixin/ResizeHandler.js
@@ -0,0 +1,41 @@
+import store from '@/store'
+
+const { body } = document
+const WIDTH = 1024
+const RATIO = 3
+
+export default {
+  watch: {
+    $route(route) {
+      if (this.device === 'mobile' && this.sidebar.opened) {
+        store.dispatch('CloseSideBar', { withoutAnimation: false })
+      }
+    }
+  },
+  beforeMount() {
+    window.addEventListener('resize', this.resizeHandler)
+  },
+  mounted() {
+    const isMobile = this.isMobile()
+    if (isMobile) {
+      store.dispatch('ToggleDevice', 'mobile')
+      store.dispatch('CloseSideBar', { withoutAnimation: true })
+    }
+  },
+  methods: {
+    isMobile() {
+      const rect = body.getBoundingClientRect()
+      return rect.width - RATIO < WIDTH
+    },
+    resizeHandler() {
+      if (!document.hidden) {
+        const isMobile = this.isMobile()
+        store.dispatch('ToggleDevice', isMobile ? 'mobile' : 'desktop')
+
+        if (isMobile) {
+          store.dispatch('CloseSideBar', { withoutAnimation: true })
+        }
+      }
+    }
+  }
+}
diff --git a/leave-school-vue/src/views/login/index.vue b/leave-school-vue/src/views/login/index.vue
new file mode 100644
index 0000000..fd4a9c1
--- /dev/null
+++ b/leave-school-vue/src/views/login/index.vue
@@ -0,0 +1,168 @@
+<template>
+  <div class="login-container">
+    <el-form class="login-form" autoComplete="on" :model="loginForm" :rules="loginRules" ref="loginForm" label-position="left">
+      <h3 class="title">离校管理系统</h3>
+      <el-form-item prop="username">
+        <span class="svg-container svg-container_login">
+          <svg-icon icon-class="user" />
+        </span>
+        <el-input name="username" type="text" v-model="loginForm.username" autoComplete="on" placeholder="username" />
+      </el-form-item>
+      <el-form-item prop="password">
+        <span class="svg-container">
+          <svg-icon icon-class="password"></svg-icon>
+        </span>
+        <el-input name="password" :type="pwdType" @keyup.enter.native="handleLogin" v-model="loginForm.password" autoComplete="on"
+          placeholder="password"></el-input>
+          <span class="show-pwd" @click="showPwd"><svg-icon icon-class="eye" /></span>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" style="width:100%;" :loading="loading" @click.native.prevent="handleLogin">
+          登录
+        </el-button>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { isvalidUsername } from '@/utils/validate'
+
+export default {
+  name: 'login',
+  data() {
+    const validateUsername = (rule, value, callback) => {
+      if (!isvalidUsername(value)) {
+        callback(new Error('请输入正确的用户名'))
+      } else {
+        callback()
+      }
+    }
+    const validatePass = (rule, value, callback) => {
+      if (value.length < 5) {
+        callback(new Error('密码不能小于5位'))
+      } else {
+        callback()
+      }
+    }
+    return {
+      loginForm: {
+        username: 'admin',
+        password: 'admin'
+      },
+      loginRules: {
+        username: [{ required: true, trigger: 'blur', validator: validateUsername }],
+        password: [{ required: true, trigger: 'blur', validator: validatePass }]
+      },
+      loading: false,
+      pwdType: 'password'
+    }
+  },
+  methods: {
+    showPwd() {
+      if (this.pwdType === 'password') {
+        this.pwdType = ''
+      } else {
+        this.pwdType = 'password'
+      }
+    },
+    handleLogin() {
+      this.$refs.loginForm.validate(valid => {
+        if (valid) {
+          this.loading = true
+          this.$store.dispatch('Login', this.loginForm).then(() => {
+            this.loading = false
+            this.$router.push({ path: '/' })
+          }).catch(() => {
+            this.loading = false
+          })
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss">
+$bg:#2d3a4b;
+$light_gray:#eee;
+
+/* reset element-ui css */
+.login-container {
+  .el-input {
+    display: inline-block;
+    height: 47px;
+    width: 85%;
+    input {
+      background: transparent;
+      border: 0px;
+      -webkit-appearance: none;
+      border-radius: 0px;
+      padding: 12px 5px 12px 15px;
+      color: $light_gray;
+      height: 47px;
+      &:-webkit-autofill {
+        -webkit-box-shadow: 0 0 0px 1000px $bg inset !important;
+        -webkit-text-fill-color: #fff !important;
+      }
+    }
+  }
+  .el-form-item {
+    border: 1px solid rgba(255, 255, 255, 0.1);
+    background: rgba(0, 0, 0, 0.1);
+    border-radius: 5px;
+    color: #454545;
+  }
+}
+
+</style>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+$bg:#2d3a4b;
+$dark_gray:#889aa4;
+$light_gray:#eee;
+.login-container {
+  position: fixed;
+  height: 100%;
+  width: 100%;
+  background-color: $bg;
+  .login-form {
+    position: absolute;
+    left: 0;
+    right: 0;
+    width: 520px;
+    padding: 35px 35px 15px 35px;
+    margin: 120px auto;
+  }
+  .svg-container {
+    padding: 6px 5px 6px 15px;
+    color: $dark_gray;
+    vertical-align: middle;
+    width: 30px;
+    display: inline-block;
+    &_login {
+      font-size: 20px;
+    }
+  }
+  .title {
+    font-size: 26px;
+    font-weight: 400;
+    color: $light_gray;
+    margin: 0px auto 40px auto;
+    text-align: center;
+    font-weight: bold;
+  }
+  .show-pwd {
+    position: absolute;
+    right: 10px;
+    top: 7px;
+    font-size: 16px;
+    color: $dark_gray;
+    cursor: pointer;
+    user-select: none;
+  }
+}
+</style>
diff --git a/leave-school-vue/src/views/news/newspublish/index.vue b/leave-school-vue/src/views/news/newspublish/index.vue
new file mode 100644
index 0000000..a83a8fd
--- /dev/null
+++ b/leave-school-vue/src/views/news/newspublish/index.vue
@@ -0,0 +1,257 @@
+<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() {
+      this.temp.ggnr = this.$refs.ue.getUEContent()
+      crudCreate(this, createNewspublish, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteNewspublish, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/news/newview/index.vue b/leave-school-vue/src/views/news/newview/index.vue
new file mode 100644
index 0000000..09a9ab3
--- /dev/null
+++ b/leave-school-vue/src/views/news/newview/index.vue
@@ -0,0 +1,107 @@
+<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.gglx" placeholder="类型名称">
+            <el-option v-for="item in  gglxList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="公告标题" v-model="listQuery.ggbt">
+          </el-input>
+        </el-col>
+        <el-col :span="12">
+          <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 :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.gglx}}
+        </template>
+      </el-table-column>
+      <el-table-column label="公告标题" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.ggbt}}</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.fbr}}
+        </template>
+      </el-table-column>
+      <el-table-column label="发布日期" align="center">
+        <template slot-scope="scope">
+          {{scope.row.fbrq}}
+        </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>
+  </div>
+</template>
+
+<script>
+import { getList } from '@/api/newspublish-api'
+import { getDicList } from '@/api/dictionary-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+export default {
+  name: 'newview',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      gglxList: []
+    }
+  },
+  created() {
+    this.getGglxList()
+    this.handlePageList()
+    this.height = window.innerHeight - 216
+  },
+  methods: {
+    getGglxList() {
+      getDicList({ type: 'gglx' }).then(response => {
+        this.gglxList = response.items
+      })
+    },
+    handlePageList() {
+      crudPageList(this, getList)
+    },
+    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()
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/systemmanagement/auditscope/index.vue b/leave-school-vue/src/views/systemmanagement/auditscope/index.vue
new file mode 100644
index 0000000..7a37094
--- /dev/null
+++ b/leave-school-vue/src/views/systemmanagement/auditscope/index.vue
@@ -0,0 +1,129 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="范围名称" v-model="listQuery.fwkzmc">
+      </el-input>
+      <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>
+    </div>
+    <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column align="center" label='范围控制代码' width="195">
+        <template slot-scope="scope">
+          {{scope.row.id}}
+        </template>
+      </el-table-column>
+      <el-table-column label="范围控制名称" align="center">
+        <template slot-scope="scope">
+          {{scope.row.fwkzmc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="范围控制实现类" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.fwkzsxl}}</span>
+        </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">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='width: 400px; margin-left:50px;'>
+        <el-form-item label="范围控制名称" prop="fwkzmc">
+          <el-input v-model="temp.fwkzmc"></el-input>
+          <input type="hidden" v-model="temp.id" />
+        </el-form-item>
+        <el-form-item label="范围控制实现类" prop="fwkzsxl">
+          <el-input v-model="temp.fwkzsxl"></el-input>
+        </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, createAuditScope, deleteAuditScope } from '@/api/auditscope-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = { sfky: '1' }
+export default {
+  name: 'auditscope',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      ssyxList: [],
+      sszygbList: [],
+      rules: {
+        fwkzmc: [{ required: true, message: '范围控制名称必填', trigger: 'blur' }],
+        fwkzsxl: [{ required: true, message: '范围控制实现类必填', trigger: 'blur' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.handlePageList()
+    this.height = window.innerHeight - 216
+  },
+  methods: {
+    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, createAuditScope, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteAuditScope, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/systemmanagement/autoaudittype/index.vue b/leave-school-vue/src/views/systemmanagement/autoaudittype/index.vue
new file mode 100644
index 0000000..9bcaa4e
--- /dev/null
+++ b/leave-school-vue/src/views/systemmanagement/autoaudittype/index.vue
@@ -0,0 +1,129 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="自动审核类型名称" v-model="listQuery.zdshlxmc">
+      </el-input>
+      <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>
+    </div>
+    <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column align="center" label='自动审核类型代码' width="195">
+        <template slot-scope="scope">
+          {{scope.row.id}}
+        </template>
+      </el-table-column>
+      <el-table-column label="自动审核类型名称" align="center">
+        <template slot-scope="scope">
+          {{scope.row.zdshlxmc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="自动审核类型实现类" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.zdshlxsxl}}</span>
+        </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">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='width: 400px; margin-left:50px;'>
+        <el-form-item label="自动审核类型名称" prop="zdshlxmc">
+          <el-input v-model="temp.zdshlxmc"></el-input>
+          <input type="hidden" v-model="temp.id" />
+        </el-form-item>
+        <el-form-item label="自动审核类型实现类" prop="zdshlxsxl">
+          <el-input v-model="temp.zdshlxsxl"></el-input>
+        </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, createAutoAuditType, deleteAutoAuditType } from '@/api/autoaudittype-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = { sfky: '1' }
+export default {
+  name: 'autoaudittype',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      ssyxList: [],
+      sszygbList: [],
+      rules: {
+        zdshlxmc: [{ required: true, message: '自动审核类型名称必填', trigger: 'blur' }],
+        zdshlxsxl: [{ required: true, message: '自动审核类型实现类必填', trigger: 'blur' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.handlePageList()
+    this.height = window.innerHeight - 216
+  },
+  methods: {
+    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, createAutoAuditType, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteAutoAuditType, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/systemmanagement/class/index.vue b/leave-school-vue/src/views/systemmanagement/class/index.vue
new file mode 100644
index 0000000..33619b6
--- /dev/null
+++ b/leave-school-vue/src/views/systemmanagement/class/index.vue
@@ -0,0 +1,258 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <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-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="班级名称" v-model="listQuery.bjmc">
+          </el-input>
+        </el-col>
+        <el-col :span="12">
+          <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="4">
+          <el-select clearable @change="initZyList" class="filter-item" v-model="listQuery.nj" placeholder="年级">
+            <el-option v-for="item in  njList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="班级代码" v-model="listQuery.bjdm">
+          </el-input>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.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="12">
+        </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 fixed align="center" label='序号' width="95">
+        <template slot-scope="scope">
+          {{scope.row.id}}
+        </template>
+      </el-table-column>
+      <el-table-column label="年级" align="center">
+        <template slot-scope="scope">
+          {{scope.row.njmc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="院系" align="center">
+        <template slot-scope="scope">
+          {{scope.row.yxmc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="专业" align="center">
+        <template slot-scope="scope">
+          {{scope.row.zymc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="班级代码" align="center">
+        <template slot-scope="scope">
+          {{scope.row.bjdm}}
+        </template>
+      </el-table-column>
+      <el-table-column label="班级名称" align="center">
+        <template slot-scope="scope">
+          {{scope.row.bjmc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否可用" align="center">
+        <template slot-scope="scope">
+          {{scope.row.sfkymc}}
+        </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">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='width: 400px; margin-left:50px;'>
+        <el-form-item label="班级代码" prop="bjdm">
+          <el-input v-model="temp.bjdm"></el-input>
+        </el-form-item>
+        <el-form-item label="班级名称" prop="bjmc">
+          <el-input v-model="temp.bjmc"></el-input>
+        </el-form-item>
+        <el-form-item label="院系" prop="yx">
+          <el-select class="filter-item" @change="initFormZyList" v-model="temp.yx" placeholder="--请选择--">
+            <el-option v-for="item in  yxList" :key="item.id" :label="item.dwmc" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="专业" prop="zy">
+          <el-select class="filter-item" v-model="temp.zy" placeholder="--请选择--">
+            <el-option v-for="item in  formZyList" :key="item.id" :label="item.zymc" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="年级" prop="nj">
+          <el-select class="filter-item" v-model="temp.nj" placeholder="--请选择--">
+            <el-option v-for="item in  njList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否可用">
+          <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>
+      <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, createClass, deleteClass } from '@/api/class-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, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = { sfky: '1' }
+export default {
+  name: 'class',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      yxList: [],
+      zyList: [],
+      formZyList: [],
+      njList: [],
+      rules: {
+        bjdm: [{ required: true, message: '班级代码必填', trigger: 'blur' }],
+        bjmc: [{ required: true, message: '班级名称必填', trigger: 'blur' }],
+        yx: [{ required: true, message: '院系必选', trigger: 'change' }],
+        zy: [{ required: true, message: '专业必选', trigger: 'change' }],
+        nj: [{ required: true, message: '年级必选', trigger: 'change' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.initYxList()
+    this.initZyList()
+    this.initNjList()
+    this.handlePageList()
+    this.height = window.innerHeight - 266
+  },
+  methods: {
+    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
+          }
+        }
+      })
+    },
+    initFormZyList() {
+      getZyListByYx({ yx: this.temp.yx }).then(response => {
+        this.formZyList = response.items
+        // TODO 坑，this.listQuery.zy == null 直接赋值，专业下拉框选择出bug，无法选择，原因未知
+        for (const attr in this.temp) {
+          if (attr === 'zy') {
+            this.temp['zy'] = null
+          }
+        }
+      })
+    },
+    initNjList() {
+      getDicList({ type: 'nj' }).then(response => {
+        this.njList = 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, createClass, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteClass, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/systemmanagement/department/index.vue b/leave-school-vue/src/views/systemmanagement/department/index.vue
new file mode 100644
index 0000000..d1c71bc
--- /dev/null
+++ b/leave-school-vue/src/views/systemmanagement/department/index.vue
@@ -0,0 +1,197 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="单位代码" v-model="listQuery.dwdm">
+      </el-input>
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="单位名称" v-model="listQuery.dwmc">
+      </el-input>
+      <el-select clearable class="filter-item" v-model="listQuery.sfqy" placeholder="是否启用">
+        <el-option key="1" label="启用" value="1">
+        </el-option>
+        <el-option key="0" label="未启用" value="0">
+        </el-option>
+      </el-select>
+      <el-select clearable class="filter-item" v-model="listQuery.lbm" placeholder="类别码">
+        <el-option v-for="item in  lbmList" :key="item.id" :label="item.name" :value="item.id">
+        </el-option>
+      </el-select>
+      <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>
+    </div>
+    <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column fixed align="center" label='序号' width="95">
+        <template slot-scope="scope">
+          {{scope.row.id}}
+        </template>
+      </el-table-column>
+      <el-table-column fixed label="单位代码">
+        <template slot-scope="scope">
+          {{scope.row.dwdm}}
+        </template>
+      </el-table-column>
+      <el-table-column label="单位名称" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.dwmc}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="单位简称" align="center">
+        <template slot-scope="scope">
+          {{scope.row.dwjc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="单位英文名称" align="center">
+        <template slot-scope="scope">
+          {{scope.row.dwywmc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否启用" align="center">
+        <template slot-scope="scope">
+          {{scope.row.sfqy}}
+        </template>
+      </el-table-column>
+      <el-table-column class-name="status-col" label="类别码" width="110" align="center">
+        <template slot-scope="scope">
+          <el-tag :type="scope.row.lbm | statusFilter">{{scope.row.lbm}}</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" prop="created_at" label="创建时间" width="200">
+        <template slot-scope="scope">
+          <i class="el-icon-time"></i>
+          {{scope.row.cjsj}}
+        </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">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='width: 400px; margin-left:50px;'>
+        <el-form-item label="单位代码" prop="dwdm">
+          <el-input v-model="temp.dwdm"></el-input>
+          <input type="hidden" v-model="temp.id" />
+        </el-form-item>
+        <el-form-item label="单位名称" prop="dwmc">
+          <el-input v-model="temp.dwmc"></el-input>
+        </el-form-item>
+        <el-form-item label="单位简称" prop="dwjc">
+          <el-input v-model="temp.dwjc"></el-input>
+        </el-form-item>
+        <el-form-item label="单位英文名称" prop="dwywmc">
+          <el-input v-model="temp.dwywmc"></el-input>
+        </el-form-item>
+        <el-form-item label="排序" prop="px">
+          <el-input v-model="temp.px"></el-input>
+        </el-form-item>
+        <el-form-item label="类别码">
+          <el-select class="filter-item" v-model="temp.lbm" placeholder="请选择">
+            <el-option v-for="item in  lbmList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否启用">
+          <el-select class="filter-item" v-model="temp.sfqy" 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>
+      <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, createDepartment, deleteDepartment } from '@/api/department-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'
+
+const initData = { sfqy: '1' }
+export default {
+  name: 'department',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      lbmList: [],
+      rules: {
+        dwdm: [{ required: true, message: '单位代码必填', trigger: 'blur' }],
+        dwmc: [{ required: true, message: '单位名称必填', trigger: 'blur' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.getLbmList()
+    this.handlePageList()
+    this.height = window.innerHeight - 216
+  },
+  methods: {
+    getLbmList() {
+      getDicList({ type: 'lbm' }).then(response => {
+        this.lbmList = 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, createDepartment, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteDepartment, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/systemmanagement/major/index.vue b/leave-school-vue/src/views/systemmanagement/major/index.vue
new file mode 100644
index 0000000..2738ff7
--- /dev/null
+++ b/leave-school-vue/src/views/systemmanagement/major/index.vue
@@ -0,0 +1,190 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="专业代码" v-model="listQuery.zydm">
+      </el-input>
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="专业名称" v-model="listQuery.zymc">
+      </el-input>
+      <el-select clearable class="filter-item" v-model="listQuery.sfky" placeholder="是否可用">
+        <el-option key="1" label="可用" value="1">
+        </el-option>
+        <el-option key="0" label="不可用" value="0">
+        </el-option>
+      </el-select>
+      <el-select clearable class="filter-item" v-model="listQuery.ssyx" placeholder="所属院系">
+        <el-option v-for="item in  ssyxList" :key="item.id" :label="item.dwmc" :value="item.id">
+        </el-option>
+      </el-select>
+      <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>
+    </div>
+    <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column align="center" label='序号' width="95">
+        <template slot-scope="scope">
+          {{scope.row.id}}
+        </template>
+      </el-table-column>
+      <el-table-column label="专业代码" align="center">
+        <template slot-scope="scope">
+          {{scope.row.zydm}}
+        </template>
+      </el-table-column>
+      <el-table-column label="专业名称" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.zymc}}</span>
+        </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.ssyx}}
+        </template>
+      </el-table-column>
+      <el-table-column label="所属专业（国标）" align="center">
+        <template slot-scope="scope">
+          {{scope.row.sszygb}}
+        </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">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='width: 400px; margin-left:50px;'>
+        <el-form-item label="专业代码" prop="zydm">
+          <el-input v-model="temp.zydm"></el-input>
+          <input type="hidden" v-model="temp.id" />
+        </el-form-item>
+        <el-form-item label="专业名称" prop="zymc">
+          <el-input v-model="temp.zymc"></el-input>
+        </el-form-item>
+        <el-form-item label="所在院系">
+          <el-select class="filter-item" v-model="temp.ssyx" placeholder="请选择">
+            <el-option v-for="item in  ssyxList" :key="item.id" :label="item.dwmc" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否可用">
+          <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-select class="filter-item" v-model="temp.sszygb" placeholder="--请选择专业(国标)--">
+            <el-option v-for="item in  sszygbList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </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, createMajor, deleteMajor } from '@/api/major-api'
+import { getDicList } from '@/api/dictionary-api'
+import { getAllList as getAllDeptList } from '@/api/department-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = { sfky: '1' }
+export default {
+  name: 'major',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      ssyxList: [],
+      sszygbList: [],
+      rules: {
+        zydm: [{ required: true, message: '专业代码必填', trigger: 'blur' }],
+        zymc: [{ required: true, message: '专业名称必填', trigger: 'blur' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.getSsyxList()
+    this.getSszygbList()
+    this.handlePageList()
+    this.height = window.innerHeight - 216
+  },
+  methods: {
+    getSszygbList() {
+      getDicList({ type: 'gjzybz' }).then(response => {
+        this.sszygbList = response.items
+      })
+    },
+    getSsyxList() {
+      getAllDeptList(this.listQuery).then(response => {
+        this.ssyxList = 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, createMajor, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteMajor, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/systemmanagement/rostersyncinterface/index.vue b/leave-school-vue/src/views/systemmanagement/rostersyncinterface/index.vue
new file mode 100644
index 0000000..886a122
--- /dev/null
+++ b/leave-school-vue/src/views/systemmanagement/rostersyncinterface/index.vue
@@ -0,0 +1,146 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="代码" v-model="listQuery.dm">
+      </el-input>
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="名称" v-model="listQuery.mc">
+      </el-input>
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="条件" v-model="listQuery.tj">
+      </el-input>
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="排序" v-model="listQuery.px">
+      </el-input>
+      <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>
+    </div>
+    <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column align="center" label='代码' width="195">
+        <template slot-scope="scope">
+          {{scope.row.dm}}
+        </template>
+      </el-table-column>
+      <el-table-column label="名称" align="center">
+        <template slot-scope="scope">
+          {{scope.row.mc}}
+        </template>
+      </el-table-column>
+      <el-table-column label="条件" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.tj}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="排序" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.px}}</span>
+        </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">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='width: 400px; margin-left:50px;'>
+        <el-form-item label="代码" prop="dm">
+          <el-input v-model="temp.dm"></el-input>
+          <input type="hidden" v-model="temp.id" />
+        </el-form-item>
+        <el-form-item label="名称" prop="mc">
+          <el-input v-model="temp.mc"></el-input>
+        </el-form-item>
+        <el-form-item label="条件" prop="tj">
+          <el-input type="textarea" :rows="2" v-model="temp.tj"></el-input>
+        </el-form-item>
+        <el-form-item label="排序" prop="px">
+          <el-input v-model="temp.px"></el-input>
+        </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, createRosterSyncInterface, deleteRosterSyncInterface } from '@/api/rostersyncinterface-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = { sfky: '1' }
+export default {
+  name: 'rostersyncinterface',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      ssyxList: [],
+      sszygbList: [],
+      rules: {
+        zdshlxmc: [{ required: true, message: '自动审核类型名称必填', trigger: 'blur' }],
+        zdshlxsxl: [{ required: true, message: '自动审核类型实现类必填', trigger: 'blur' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.handlePageList()
+    this.height = window.innerHeight - 216
+  },
+  methods: {
+    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, createRosterSyncInterface, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteRosterSyncInterface, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/systemmanagement/schoolyear/index.vue b/leave-school-vue/src/views/systemmanagement/schoolyear/index.vue
new file mode 100644
index 0000000..53c7014
--- /dev/null
+++ b/leave-school-vue/src/views/systemmanagement/schoolyear/index.vue
@@ -0,0 +1,130 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="学年代码" v-model="listQuery.xndm">
+      </el-input>
+      <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="学年名称" v-model="listQuery.xnmc">
+      </el-input>
+      <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>
+    </div>
+    <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column align="center" label='序号' width="95">
+        <template slot-scope="scope">
+          {{scope.row.id}}
+        </template>
+      </el-table-column>
+      <el-table-column label="学年代码" align="center">
+        <template slot-scope="scope">
+          {{scope.row.xndm}}
+        </template>
+      </el-table-column>
+      <el-table-column label="学年名称" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.xnmc}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        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">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='width: 400px; margin-left:50px;'>
+        <el-form-item label="学年代码1" prop="xndm">
+          <el-input v-if="dialogStatus === 'update'" disabled v-model="temp.xndm"></el-input>
+          <el-input v-else v-model="temp.xndm"></el-input>
+          <input type="hidden" v-model="temp.id" />
+        </el-form-item>
+        <el-form-item label="学年名称" prop="xnmc">
+          <el-input v-model="temp.xnmc"></el-input>
+        </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, createSchoolyear, deleteSchoolyear } from '@/api/schoolyear-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = {}
+export default {
+  name: 'schoolyear',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      rules: {
+        xndm: [{ required: true, message: '学年代码必填', trigger: 'blur' }],
+        xnmc: [{ required: true, message: '学年名称必填', trigger: 'blur' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.handlePageList()
+    this.height = window.innerHeight - 216
+  },
+  methods: {
+    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, createSchoolyear, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteSchoolyear, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
\ No newline at end of file
diff --git a/leave-school-vue/src/views/workteam/departmentleader/index.vue b/leave-school-vue/src/views/workteam/departmentleader/index.vue
new file mode 100644
index 0000000..c521dce
--- /dev/null
+++ b/leave-school-vue/src/views/workteam/departmentleader/index.vue
@@ -0,0 +1,234 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-row :gutter="20">
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="工号" v-model="listQuery.gh">
+          </el-input>
+        </el-col>
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="姓名" v-model="listQuery.xm">
+          </el-input>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable 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="12">
+          <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="4">
+          <el-select clearable class="filter-item" v-model="listQuery.zzmm" placeholder="政治面貌">
+            <el-option v-for="item in  zzmmList" :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.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 :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+      <el-table-column align="center" label='工号'>
+        <template slot-scope="scope">
+          {{scope.row.gh}}
+        </template>
+      </el-table-column>
+      <el-table-column label="姓名" align="center">
+        <template slot-scope="scope">
+          {{scope.row.xm}}
+        </template>
+      </el-table-column>
+      <el-table-column label="院系" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.yx}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="性别" align="center">
+        <template slot-scope="scope">
+          {{scope.row.xb}}
+        </template>
+      </el-table-column>
+      <el-table-column label="政治面貌" align="center">
+        <template slot-scope="scope">
+          {{scope.row.zzmm}}
+        </template>
+      </el-table-column>
+      <el-table-column label="联系电话" align="center">
+        <template slot-scope="scope">
+          {{scope.row.lxdh}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否在任" align="center">
+        <template slot-scope="scope">
+          {{scope.row.sfzr}}
+        </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">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='width: 400px; margin-left:50px;'>
+        <el-form-item label="工号" prop="gh">
+          <el-input v-model="temp.gh"></el-input>
+          <input type="hidden" v-model="temp.id" />
+        </el-form-item>
+        <el-form-item label="姓名" prop="xm">
+          <el-input v-model="temp.xm"></el-input>
+        </el-form-item>
+        <el-form-item label="性别">
+          <el-select class="filter-item" v-model="temp.xb" placeholder="请选择">
+            <el-option v-for="item in  xbList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="政治面貌">
+          <el-select class="filter-item" v-model="temp.zzmm" placeholder="请选择">
+            <el-option v-for="item in  zzmmList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="联系电话" prop="lxdh">
+          <el-input v-model="temp.lxdh"></el-input>
+        </el-form-item>
+        <el-form-item label="是否在任">
+          <el-select class="filter-item" v-model="temp.sfzr" 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="yx">
+          <el-select class="filter-item" v-model="temp.yx" placeholder="--请选择院系--">
+            <el-option v-for="item in  yxList" :key="item.id" :label="item.dwmc" :value="item.id">
+            </el-option>
+          </el-select>
+        </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, createDepartmentleader, deleteDepartmentleader } from '@/api/departmentleader-api'
+import { getDicList } from '@/api/dictionary-api'
+import { getAllList as getAllDeptList } from '@/api/department-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = { sfky: '1' }
+export default {
+  name: 'departmentleader',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      yxList: [],
+      zzmmList: [],
+      xbList: [],
+      rules: {
+        gh: [{ required: true, message: '工号必填', trigger: 'blur' }],
+        xm: [{ required: true, message: '姓名必填', trigger: 'blur' }],
+        yx: [{ required: true, message: '院系必填', trigger: 'change' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.getYxList()
+    this.getZzmmList()
+    this.getXbList()
+    this.handlePageList()
+    this.height = window.innerHeight - 266
+  },
+  methods: {
+    getYxList() {
+      getAllDeptList(this.listQuery).then(response => {
+        this.yxList = response.items
+      })
+    },
+    getZzmmList() {
+      getDicList({ type: 'zzmm' }).then(response => {
+        this.zzmmList = response.items
+      })
+    },
+    getXbList() {
+      getDicList({ type: 'xb' }).then(response => {
+        this.xbList = 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, createDepartmentleader, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteDepartmentleader, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
diff --git a/leave-school-vue/src/views/workteam/instructor/index.vue b/leave-school-vue/src/views/workteam/instructor/index.vue
new file mode 100644
index 0000000..cad431e
--- /dev/null
+++ b/leave-school-vue/src/views/workteam/instructor/index.vue
@@ -0,0 +1,223 @@
+<template>
+  <div class="app-container">
+    <div class="filter-container">
+      <el-row :gutter="20">
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="工号" v-model="listQuery.gh">
+          </el-input>
+        </el-col>
+        <el-col :span="4">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="姓名" v-model="listQuery.xm">
+          </el-input>
+        </el-col>
+        <el-col :span="4">
+          <el-select clearable class="filter-item" v-model="listQuery.yx" placeholder="院系">
+            <el-option v-for="item in  szyxList" :key="item.id" :label="item.dwmc" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="12">
+          <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="4">
+          <el-select clearable class="filter-item" v-model="listQuery.zzmm" placeholder="政治面貌">
+            <el-option v-for="item in  zzmmList" :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.sfzr" 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="4">
+        </el-col>
+        <el-col :span="12">
+        </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" label='工号'>
+        <template slot-scope="scope">
+          {{scope.row.gh}}
+        </template>
+      </el-table-column>
+      <el-table-column label="姓名" align="center">
+        <template slot-scope="scope">
+          {{scope.row.xm}}
+        </template>
+      </el-table-column>
+      <el-table-column label="所带班级" align="center">
+        <template slot-scope="scope">
+          <span>{{scope.row.sdbj}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="班级总人数" align="center">
+        <template slot-scope="scope">
+          {{scope.row.bjzrs}}
+        </template>
+      </el-table-column>
+      <el-table-column label="所在院系" align="center">
+        <template slot-scope="scope">
+          {{scope.row.szyx}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否在任" align="center">
+        <template slot-scope="scope">
+          {{scope.row.sfzr}}
+        </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">
+      <el-form :rules="rules" ref="dataForm" :model="temp" label-position="left" label-width="150px" style='width: 400px; margin-left:50px;'>
+        <el-form-item label="工号" prop="gh">
+          <el-input v-model="temp.gh"></el-input>
+          <input type="hidden" v-model="temp.id" />
+        </el-form-item>
+        <el-form-item label="姓名" prop="xm">
+          <el-input v-model="temp.xm"></el-input>
+        </el-form-item>
+        <el-form-item label="所带班级" prop="sdbj">
+          <el-select class="filter-item" v-model="temp.sdbj" placeholder="请选择">
+            <el-option v-for="item in  sdbjList" :key="item.id" :label="item.bjmc" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="是否在任">
+          <el-select class="filter-item" v-model="temp.sfzr" 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-select class="filter-item" v-model="temp.szyx" placeholder="--请选择院系--">
+            <el-option v-for="item in  szyxList" :key="item.id" :label="item.dwmc" :value="item.id">
+            </el-option>
+          </el-select>
+        </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, 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 waves from '@/directive/waves' // 水波纹指令
+import { resetForm } from '@/utils'
+import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = { sfky: '1' }
+export default {
+  name: 'instructor',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      szyxList: [],
+      sdbjList: [],
+      zzmmList: [],
+      rules: {
+        gh: [{ required: true, message: '工号必填', trigger: 'blur' }],
+        xm: [{ required: true, message: '姓名必填', trigger: 'blur' }],
+        sdbj: [{ required: true, message: '所带班级必填', trigger: 'change' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.getSzyxList()
+    this.getSdbjList()
+    this.getZzmmList()
+    this.handlePageList()
+    this.height = window.innerHeight - 266
+  },
+  methods: {
+    getSzyxList() {
+      getAllDeptList(this.listQuery).then(response => {
+        this.szyxList = response.items
+      })
+    },
+    getSdbjList() {
+      getAllList(this.listQuery).then(response => {
+        this.sdbjList = response.items
+      })
+    },
+    getZzmmList() {
+      getDicList({ type: 'zzmm' }).then(response => {
+        this.zzmmList = 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, createInstructor, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteInstructor, rowid, this.handlePageList)
+    }
+  }
+}
+</script>
