diff --git a/leave-school-vue/src/api/dictionary-api.js b/leave-school-vue/src/api/dictionary-api.js
index 586820c..3eedd15 100644
--- a/leave-school-vue/src/api/dictionary-api.js
+++ b/leave-school-vue/src/api/dictionary-api.js
@@ -7,3 +7,58 @@
     params
   })
 }
+export function getPage(params) {
+  return request({
+    url: '/api/system/dictionary/gettypelist',
+    method: 'get',
+    params
+  })
+}
+
+export function getType(params) {
+  return request({
+    url: '/api/system/dictionary/get-type',
+    method: 'get',
+    params
+  })
+}
+
+export function createType(data) {
+  return request({
+    url: '/api/system/dictionary/create-type',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteType(data) {
+  return request({
+    url: '/api/system/dictionary/delete-type',
+    method: 'delete',
+    data
+  })
+}
+
+export function getDic(params) {
+  return request({
+    url: '/api/system/dictionary/get-dic',
+    method: 'get',
+    params
+  })
+}
+
+export function createDic(data) {
+  return request({
+    url: '/api/system/dictionary/create-dic',
+    method: 'post',
+    data
+  })
+}
+
+export function deleteDic(data) {
+  return request({
+    url: '/api/system/dictionary/delete-dic',
+    method: 'delete',
+    data
+  })
+}
diff --git a/leave-school-vue/src/icons/svg/datadictionary.svg b/leave-school-vue/src/icons/svg/datadictionary.svg
new file mode 100644
index 0000000..b96c625
--- /dev/null
+++ b/leave-school-vue/src/icons/svg/datadictionary.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1535441810962" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10998" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M544.00064 759.04h7.168v65.088l-0.896-65.088H832.00064V65.088H635.96864c-9.984 0-30.656 6.912-38.336 12.8l-6.912 4.544-10.176 5.76-7.232 3.584c-8.96 3.712-18.88 6.4-29.312 8.128v659.2z m-64 0V100.352a212.032 212.032 0 0 1-29.568-6.272L443.52064 92.16l-17.6-9.856-4.672-2.816c-10.496-7.104-32.128-14.336-41.728-14.336H192.00064V759.04h288zM70.59264 179.456v686.08c0 18.176 14.08 31.872 31.552 31.872H394.24064c17.152 0 43.328 8.192 57.856 18.304l33.536 23.296a44.16 44.16 0 0 0 50.56-1.984l23.04-19.328c12.928-10.88 38.208-20.288 55.68-20.288h306.944a31.68 31.68 0 0 0 31.552-31.936V179.456h6.528c35.392 0 64.064 28.16 64.064 64.64v660.48c0 35.712-28.928 64.64-64.064 64.64h-312.512c-35.392 0-84.352 20.352-108.864 45.056l18.176-18.304a70.656 70.656 0 0 1-93.888 4.096l12.096 10.048c-27.2-22.592-78.464-40.96-112.96-40.96H63.74464A63.68 63.68 0 0 1 0.00064 904.64V244.096c0-35.648 28.48-64.64 64-64.64h6.592zM170.88064 824.128A43.136 43.136 0 0 1 128.00064 780.992V43.136C128.00064 19.328 147.32864 0 170.81664 0h208.64c23.68 0 57.472 11.84 77.248 25.216l11.264 6.336c22.592 6.528 59.456 8.96 81.28 0l10.112-5.76C578.04864 11.52 612.16064 0 635.96864 0h217.28c23.616 0 42.752 19.584 42.752 43.136v737.856a42.88 42.88 0 0 1-42.752 43.136H170.88064z" p-id="10999" fill="#bfcbd9"></path></svg>
\ No newline at end of file
diff --git a/leave-school-vue/src/mock/departmentleader.js b/leave-school-vue/src/mock/departmentleader.js
index e9fe93e..6f55f60 100644
--- a/leave-school-vue/src/mock/departmentleader.js
+++ b/leave-school-vue/src/mock/departmentleader.js
@@ -6,7 +6,7 @@
     'gh': '@increment',
     'xm': '@cword(2, 3)',
     'yx': '@cword(6, 15)',
-    'xb|1': ['男', '女'],
+    'sex|1': ['男', '女'],
     'zzmm|1': ['党员', '共青团员', '群众'],
     'lxdh': '@word',
     'sfzr|1': ['是', '否']
@@ -15,13 +15,13 @@
 
 export default{
   getList: config => {
-    const { gh, xm, yx, zzmm, xb, pageIndex = 1, pageSize = 20 } = param2Obj(config.url)
+    const { gh, xm, yx, zzmm, sex, pageIndex = 1, pageSize = 20 } = param2Obj(config.url)
     const mockList = departmentleaderList.filter(item => {
       if (gh && item.gh + '' !== gh + '') return false
       if (xm && item.xm !== xm) return false
       if (yx && item.yx !== yx) return false
       if (zzmm && item.zzmm !== zzmm) return false
-      if (xb && item.xb !== xb) return false
+      if (sex && item.sex !== sex) return false
       return true
     })
 
diff --git a/leave-school-vue/src/mock/dictionary.js b/leave-school-vue/src/mock/dictionary.js
index da85881..10aa7c3 100644
--- a/leave-school-vue/src/mock/dictionary.js
+++ b/leave-school-vue/src/mock/dictionary.js
@@ -1,7 +1,17 @@
 // import Mock from 'mockjs'
 import { param2Obj } from '@/utils'
 
-const deptList = [{
+const typeList = [{
+  'id': '1',
+  'code': 'sex',
+  'name': '性别'
+},
+{
+  'id': '2',
+  'code': 'zzmm',
+  'name': '政治面貌'
+}]
+const dicList = [{
   'id': '1',
   'type': 'lbm',
   'name': '院系'
@@ -44,21 +54,25 @@
 {
   'id': '9',
   'type': 'zzmm',
+  'code': 'dy',
   'name': '党员'
 },
 {
   'id': '10',
   'type': 'zzmm',
+  'code': 'qz',
   'name': '群众'
 },
 {
   'id': '11',
-  'type': 'xb',
+  'type': 'sex',
+  'code': 'male',
   'name': '男'
 },
 {
   'id': '12',
-  'type': 'xb',
+  'type': 'sex',
+  'code': 'female',
   'name': '女'
 },
 {
@@ -143,9 +157,23 @@
 }]
 
 export default{
+  getPage: config => {
+    const { name, pageIndex = 1, pageSize = 20 } = param2Obj(config.url)
+    const mockList = typeList.filter(item => {
+      if (name && item.name !== name && item.code !== name) return false
+      return true
+    })
+
+    const pageList = mockList.filter((item, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1))
+    return {
+      items: pageList,
+      recordCount: mockList.length,
+      code: 200
+    }
+  },
   getDicList: config => {
     const { type } = param2Obj(config.url)
-    const mockList = deptList.filter(item => {
+    const mockList = dicList.filter(item => {
       if (type && item.type !== type) return false
       return true
     })
@@ -154,5 +182,89 @@
       items: mockList,
       code: 200
     }
+  },
+  getType: config => {
+    const { id } = param2Obj(config.url)
+    const mockList = typeList.filter(item => item.id + '' === id + '')
+    return {
+      data: mockList.length > 0 ? mockList[0] : null,
+      code: 200
+    }
+  },
+  createType: config => {
+    const type = JSON.parse(config.body)
+    if (!type.id) {
+      type.id = '' + parseInt(Math.random() * 100) + 1024 // mock a id
+      typeList.unshift(type)
+    } else {
+      for (let i = 0; i < typeList.length; i++) {
+        if (typeList[i].id + '' === type.id + '') {
+          typeList.splice(i, 1, type)
+          break
+        }
+      }
+    }
+    return {
+      item: type,
+      code: 200
+    }
+  },
+  deleteType: config => {
+    const type = JSON.parse(config.body)
+    let index = -1
+    for (let i = 0; i < typeList.length; i++) {
+      if (typeList[i].id + '' === type.id + '') {
+        index = i
+        break
+      }
+    }
+    if (index > -1) {
+      typeList.splice(index, 1)
+    }
+    return {
+      code: 200
+    }
+  },
+  getDic: config => {
+    const { id } = param2Obj(config.url)
+    const mockList = dicList.filter(item => item.id + '' === id + '')
+    return {
+      data: mockList.length > 0 ? mockList[0] : null,
+      code: 200
+    }
+  },
+  createDic: config => {
+    const dic = JSON.parse(config.body)
+    if (!dic.id) {
+      dic.id = '' + parseInt(Math.random() * 100) + 1024 // mock a id
+      dicList.unshift(dic)
+    } else {
+      for (let i = 0; i < dicList.length; i++) {
+        if (dicList[i].id + '' === dic.id + '') {
+          dicList.splice(i, 1, dic)
+          break
+        }
+      }
+    }
+    return {
+      item: dic,
+      code: 200
+    }
+  },
+  deleteDic: config => {
+    const dic = JSON.parse(config.body)
+    let index = -1
+    for (let i = 0; i < dicList.length; i++) {
+      if (dicList[i].id + '' === dic.id + '') {
+        index = i
+        break
+      }
+    }
+    if (index > -1) {
+      dicList.splice(index, 1)
+    }
+    return {
+      code: 200
+    }
   }
 }
diff --git a/leave-school-vue/src/mock/index.js b/leave-school-vue/src/mock/index.js
index 34a75e5..49bf902 100644
--- a/leave-school-vue/src/mock/index.js
+++ b/leave-school-vue/src/mock/index.js
@@ -29,7 +29,14 @@
 Mock.mock(/\/api\/login\/logout-api/, 'post', loginApi.logout)
 
 // 数据字典
+Mock.mock(/\/api\/system\/dictionary\/gettypelist/, 'get', dicApi.getPage)
 Mock.mock(/\/api\/system\/dictionary\/getdiclist/, 'get', dicApi.getDicList)
+Mock.mock(/\/api\/system\/dictionary\/create-type/, 'post', dicApi.createType)
+Mock.mock(/\/api\/system\/dictionary\/delete-type/, 'delete', dicApi.deleteType)
+Mock.mock(/\/api\/system\/dictionary\/get-type/, 'get', dicApi.getType)
+Mock.mock(/\/api\/system\/dictionary\/create-dic/, 'post', dicApi.createDic)
+Mock.mock(/\/api\/system\/dictionary\/delete-dic/, 'delete', dicApi.deleteDic)
+Mock.mock(/\/api\/system\/dictionary\/get-dic/, 'get', dicApi.getDic)
 
 // 菜单列表
 Mock.mock(/\/api\/system\/menu\/list/, 'get', menulistApi.getMenuList)
diff --git a/leave-school-vue/src/mock/leavestudent.js b/leave-school-vue/src/mock/leavestudent.js
index 8681db0..906337e 100644
--- a/leave-school-vue/src/mock/leavestudent.js
+++ b/leave-school-vue/src/mock/leavestudent.js
@@ -19,7 +19,7 @@
 
 export default{
   getList: config => {
-    const { xh, xm, pcmc, xslb, bynf, byyf, yx, zy, xb, shhj, shzt, pageIndex = 1, pageSize = 20 } = param2Obj(config.url)
+    const { xh, xm, pcmc, xslb, bynf, byyf, yx, zy, sex, shhj, shzt, pageIndex = 1, pageSize = 20 } = param2Obj(config.url)
     const mockList = clsList.filter(item => {
       if (pcmc && item.pcmc && item.pcmc + '' !== pcmc + '') return false
       if (xslb && item.xslb && item.xslb !== xslb) return false
@@ -27,7 +27,7 @@
       if (byyf && item.byyf && item.byyf !== byyf) return false
       if (yx && item.yxid && item.yxid !== yx) return false
       if (zy && item.zy && item.zy !== zy) return false
-      if (xb && item.xb && item.xb !== xb) return false
+      if (sex && item.sex && item.sex !== sex) return false
       if (shhj && item.shhj && item.shhj !== shhj) return false
       if (shzt && item.shztcode && item.shztcode !== shzt) return false
       if (xh && item.xh && item.xh !== xh) return false
diff --git a/leave-school-vue/src/mock/menulist.js b/leave-school-vue/src/mock/menulist.js
index 55292e5..63c1ca7 100644
--- a/leave-school-vue/src/mock/menulist.js
+++ b/leave-school-vue/src/mock/menulist.js
@@ -21,6 +21,12 @@
     meta: { title: '数据字典管理', icon: 'dictionary' },
     children: [
       {
+        path: 'datadictionary',
+        code: 'datadictionary',
+        resource: '/views/systemmanagement/datadictionary/index',
+        meta: { title: '数据字典管理', icon: 'datadictionary' }
+      },
+      {
         path: 'department',
         code: 'Department',
         resource: '/views/systemmanagement/department/index',
diff --git a/leave-school-vue/src/mock/user.js b/leave-school-vue/src/mock/user.js
index 431f833..2901ddc 100644
--- a/leave-school-vue/src/mock/user.js
+++ b/leave-school-vue/src/mock/user.js
@@ -8,7 +8,7 @@
     'ghxh': '@id',
     'xm': '000@id',
     'zhlb|1': ['教职工', '学生', '其他'],
-    'xb|1': ['男', '女'],
+    'sex|1': ['男', '女'],
     'zt|1': ['启用', '停用'],
     'yx': '@cword(3, 5)',
     'xybm': '@word(6, 10)',
@@ -34,7 +34,7 @@
   }]
 )
 
-const xbList = Mock.mock(
+const sexList = Mock.mock(
   [{
     'value': 'male',
     'label': '男'
@@ -65,7 +65,7 @@
 
     const pageList = mockList.filter((item, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1))
     return {
-      xbList: xbList,
+      sexList: sexList,
       ztList: ztList,
       zhlbList: zhlbList,
       items: pageList,
diff --git a/leave-school-vue/src/utils/crud.js b/leave-school-vue/src/utils/crud.js
index 16b9300..06e7bc0 100644
--- a/leave-school-vue/src/utils/crud.js
+++ b/leave-school-vue/src/utils/crud.js
@@ -38,7 +38,7 @@
     }
   })
 }
-export function crudGetItem(page, _get, rowid, initData) {
+export function crudGetItem(page, _get, rowid, initData, _callback) {
   if (rowid) {
     _get({ id: rowid }).then(response => {
       if (!response.data) {
@@ -52,6 +52,9 @@
       page.$nextTick(() => {
         page.$refs['dataForm'].clearValidate()
       })
+      if (typeof _callback === 'function') {
+        _callback()
+      }
     })
   } else {
     page.temp = Object.assign({}, initData)
@@ -59,6 +62,9 @@
     page.$nextTick(() => {
       page.$refs['dataForm'].clearValidate()
     })
+    if (typeof _callback === 'function') {
+      _callback()
+    }
   }
 }
 export function crudCreate(page, _create, _callback) {
diff --git a/leave-school-vue/src/views/statistical/nodereport/index.vue b/leave-school-vue/src/views/statistical/nodereport/index.vue
index 9081c35..0385631 100644
--- a/leave-school-vue/src/views/statistical/nodereport/index.vue
+++ b/leave-school-vue/src/views/statistical/nodereport/index.vue
@@ -43,8 +43,8 @@
           </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-select clearable class="filter-item" v-model="listQuery.sex" placeholder="性别">
+            <el-option v-for="item in  sexList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
         </el-col>
@@ -119,7 +119,7 @@
       pcmcList: [],
       yxList: [],
       zyList: [],
-      xbList: [],
+      sexList: [],
       xslbList: [],
       jbxx: {},
       queryparam: {}
@@ -128,7 +128,7 @@
   created() {
     this.initYxList()
     this.initZyList()
-    this.initXbList()
+    this.initsexList()
     this.initXslbList()
     this.handlePageList()
     this.height = window.innerHeight - 266
@@ -257,9 +257,9 @@
         this.xslbList = response.items
       })
     },
-    initXbList() {
-      getDicList({ type: 'xb' }).then(response => {
-        this.xbList = response.items
+    initsexList() {
+      getDicList({ type: 'sex' }).then(response => {
+        this.sexList = response.items
       })
     },
     handlePageList() {
diff --git a/leave-school-vue/src/views/systemmanagement/datadictionary/index.vue b/leave-school-vue/src/views/systemmanagement/datadictionary/index.vue
new file mode 100644
index 0000000..75d7930
--- /dev/null
+++ b/leave-school-vue/src/views/systemmanagement/datadictionary/index.vue
@@ -0,0 +1,224 @@
+<template>
+  <div class="app-container">
+    <el-col :span="12">
+      <el-card>
+        <div class="filter-container">
+          <el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="类型名称/编码" v-model="listQuery.name">
+          </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>
+        </div>
+        <el-table :height="height" :data="items" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+          <el-table-column label="类型编码" align="center">
+            <template slot-scope="scope">
+              {{scope.row.code}}
+            </template>
+          </el-table-column>
+          <el-table-column label="类型名称" align="center">
+            <template slot-scope="scope">
+              <span>{{scope.row.name}}</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="handleView(scope.row.code)">查看</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="code">
+              <el-input v-model="temp.code"></el-input>
+              <input type="hidden" v-model="temp.id" />
+            </el-form-item>
+            <el-form-item label="类型名称" prop="name">
+              <el-input v-model="temp.name"></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>
+      </el-card>
+    </el-col>
+    <el-col :span="12">
+      <el-card>
+        <div class="filter-container">
+          <el-button class="filter-item" style="margin-left: 10px;" @click="handleCreateDic(null, 'create')" type="primary" icon="el-icon-edit">添加</el-button>
+        </div>
+        <el-table :height="itemHeight" :data="dicList" v-loading="listLoading" element-loading-text="Loading" border fit highlight-current-row>
+          <el-table-column label="字典编码" align="center">
+            <template slot-scope="scope">
+              {{scope.row.code}}
+            </template>
+          </el-table-column>
+          <el-table-column label="字典名称" align="center">
+            <template slot-scope="scope">
+              <span>{{scope.row.name}}</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="handleCreateDic(scope.row.id, 'update')">修改</el-button>
+              <el-button type="text" size="small" @click="handleDeleteDic(scope.row.id)">删除</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        
+        <el-dialog :title="textMap[dialogStatus]" :visible.sync="dicDialogFormVisible">
+          <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="code">
+              <el-input v-model="temp.code"></el-input>
+              <input type="hidden" v-model="temp.id" />
+            </el-form-item>
+            <el-form-item label="字典名称" prop="name">
+              <el-input v-model="temp.name"></el-input>
+            </el-form-item>
+          </el-form>
+          <div slot="footer" class="dialog-footer">
+            <el-button @click="dicDialogFormVisible = false">返回</el-button>
+            <el-button type="primary" @click="createDataDic">提交</el-button>
+          </div>
+        </el-dialog>
+      </el-card>
+    </el-col>
+  </div>
+</template>
+
+<script>
+import { getPage, getType, getDicList, createType, deleteType, getDic, createDic, deleteDic } from '@/api/dictionary-api'
+import waves from '@/directive/waves' // 水波纹指令
+import { MessageBox } from 'element-ui'
+import { resetForm } from '@/utils'
+import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
+import mixindata from '@/utils/crud'
+
+const initData = { sex: 'male', zt: 'on' }
+export default {
+  name: 'type',
+  directives: {
+    waves
+  },
+  mixins: [mixindata],
+  data() {
+    return {
+      dicDialogFormVisible: false,
+      dicDialogVisible: false,
+      dicList: [],
+      itemHeight: 500,
+      rules: {
+        ghxh: [{ required: true, message: '账号(工号/学号)必填', trigger: 'blur' }],
+        mm: [{ required: true, message: '密码必填', trigger: 'blur' }],
+        zhlb: [{ required: true, message: '账户类别必填', trigger: 'change' }],
+        xm: [{ required: true, message: '姓名必填', trigger: 'change' }]
+      }
+    }
+  },
+  filters: {
+    statusFilter(status) {
+      const statusMap = {
+        '1': 'success',
+        '0': 'danger'
+      }
+      return statusMap[status]
+    }
+  },
+  created() {
+    this.handlePageList()
+    this.height = window.innerHeight - 256
+    this.itemHeight = window.innerHeight - 223
+  },
+  methods: {
+    handlePageList() {
+      crudPageList(this, getPage)
+    },
+    handleCreate(rowid, dialogStatus) {
+      this.dialogStatus = dialogStatus
+      crudGetItem(this, getType, 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, createType, this.handlePageList)
+    },
+    handleDelete(rowid) {
+      crudDelete(this, deleteType, rowid, this.handlePageList)
+    },
+    handleView(type) {
+      this.temp.type = type
+      getDicList({ type: type }).then(response => {
+        if (!response.items) {
+          MessageBox.alert('数据不存在，请确认是否已删除。', '消息', {
+            confirmButtonText: '确定'
+          })
+          return
+        }
+        this.dicDialogVisible = true
+        this.dicList = response.items
+      })
+    },
+    handleCreateDic(rowid, dialogStatus) {
+      if (!this.temp.type) {
+        MessageBox.alert('请先选择字典类型！', '消息', {
+          confirmButtonText: '确定'
+        })
+        return
+      }
+      this.dialogStatus = dialogStatus
+      const that = this
+      crudGetItem(this, getDic, rowid, { type: this.temp.type }, function() {
+        that.dicDialogFormVisible = true
+        that.dialogFormVisible = false
+      })
+    },
+    createDataDic() {
+      const that = this
+      crudCreate(this, createDic, function() {
+        that.handleView(that.temp.type)
+        that.dicDialogFormVisible = false
+      })
+    },
+    handleDeleteDic(rowid) {
+      const that = this
+      crudDelete(this, deleteDic, rowid, function() {
+        that.handleView(that.temp.type)
+      })
+    }
+  }
+}
+</script>
+<style scoped>
+.el-card {
+  margin: 5px;
+}
+</style>
diff --git a/leave-school-vue/src/views/systemmanagement/user/index.vue b/leave-school-vue/src/views/systemmanagement/user/index.vue
index c069707..453bb0e 100644
--- a/leave-school-vue/src/views/systemmanagement/user/index.vue
+++ b/leave-school-vue/src/views/systemmanagement/user/index.vue
@@ -34,7 +34,7 @@
       </el-table-column>
       <el-table-column label="性别" align="center">
         <template slot-scope="scope">
-          {{scope.row.xb}}
+          {{scope.row.sex}}
         </template>
       </el-table-column>
       <el-table-column label="状态" align="center">
@@ -97,7 +97,7 @@
           <input type="hidden" v-model="temp.id" />
         </el-form-item>
         <el-form-item label="密码" prop="mm">
-          <el-input type="password" v-model="temp.mm"></el-input>
+          <el-input type="password" v-model="temp.mm"></el-input>密码为6-20位数字或字母
         </el-form-item>
         <el-form-item label="账户类别" prop="zhlb">
           <el-select clearable class="filter-item" v-model="temp.zhlb" placeholder="账户类别">
@@ -106,8 +106,8 @@
           </el-select>
         </el-form-item>
         <el-form-item label="性别">
-          <el-radio-group v-model="temp.xb">
-            <el-radio v-for="item in pagedata.xbList" :label="item.value" :key="item.value" >{{item.label}}</el-radio>
+          <el-radio-group v-model="temp.sex">
+            <el-radio v-for="item in pagedata.sexList" :label="item.value" :key="item.value" >{{item.label}}</el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="状态">
@@ -164,7 +164,7 @@
 import { crudPageList, crudGetItem, crudCreate, crudDelete } from '@/utils/crud'
 import mixindata from '@/utils/crud'
 
-const initData = { xb: 'male', zt: 'on' }
+const initData = { sex: 'male', zt: 'on' }
 export default {
   name: 'user',
   directives: {
diff --git a/leave-school-vue/src/views/workteam/departmentleader/index.vue b/leave-school-vue/src/views/workteam/departmentleader/index.vue
index 3200e68..e04552b 100644
--- a/leave-school-vue/src/views/workteam/departmentleader/index.vue
+++ b/leave-school-vue/src/views/workteam/departmentleader/index.vue
@@ -30,8 +30,8 @@
           </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-select clearable class="filter-item" v-model="listQuery.sex" placeholder="性别">
+            <el-option v-for="item in  sexList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
         </el-col>
@@ -59,7 +59,7 @@
       </el-table-column>
       <el-table-column label="性别" align="center">
         <template slot-scope="scope">
-          {{scope.row.xb}}
+          {{scope.row.sex}}
         </template>
       </el-table-column>
       <el-table-column label="政治面貌" align="center">
@@ -104,8 +104,8 @@
           <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-select class="filter-item" v-model="temp.sex" placeholder="请选择">
+            <el-option v-for="item in  sexList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
         </el-form-item>
@@ -161,7 +161,7 @@
     return {
       yxList: [],
       zzmmList: [],
-      xbList: [],
+      sexList: [],
       rules: {
         gh: [{ required: true, message: '工号必填', trigger: 'blur' }],
         xm: [{ required: true, message: '姓名必填', trigger: 'blur' }],
@@ -181,7 +181,7 @@
   created() {
     this.getYxList()
     this.getZzmmList()
-    this.getXbList()
+    this.getsexList()
     this.handlePageList()
     this.height = window.innerHeight - 266
   },
@@ -196,9 +196,9 @@
         this.zzmmList = response.items
       })
     },
-    getXbList() {
-      getDicList({ type: 'xb' }).then(response => {
-        this.xbList = response.items
+    getsexList() {
+      getDicList({ type: 'sex' }).then(response => {
+        this.sexList = response.items
       })
     },
     handlePageList() {
