diff --git a/src/api/base/user.js b/src/api/base/user.js
index 7fa185a..a4c4eed 100644
--- a/src/api/base/user.js
+++ b/src/api/base/user.js
@@ -18,9 +18,9 @@ export function getVerifyCode() {
 /** 登录接口 */
 export function login(data) {
   return request({
-    url: `${routes.auth}/api/user/admin/login`,
+    url: `/user/login`,
     method: 'post',
-    params: data
+    data
   })
 }
 
@@ -43,10 +43,11 @@ export function changeSelfInfo(data) {
 }
 
 /** 登录后获取登录用户信息 */
-export function getUserInfo() {
+export function getUserInfo(data) {
   return request({
-    url: `${routes.auth}/api/user/admin/info`,
-    method: 'post'
+    url: `/user/getCurrentUser`,
+    method: 'get',
+    params: data
   })
 }
 /** 获取权限菜单 */
diff --git a/src/api/system/user.js b/src/api/system/user.js
new file mode 100644
index 0000000..2eeeef4
--- /dev/null
+++ b/src/api/system/user.js
@@ -0,0 +1,85 @@
+import request from '@/utils/request'
+import routes from '../gateway-routes'
+
+/** 查看用户信息列表 */
+export function getUserList(params) {
+  return request({
+    url: `/user/list`,
+    method: 'get',
+    params
+  })
+}
+
+/** 创建账号*/
+export function saveUserInfo(data) {
+  return request({
+    url: `/user/saveUserInfo`,
+    method: 'post',
+    data
+  })
+}
+/** 修改账号*/
+export function updateUserInfo(data) {
+  return request({
+    url: `/user/update`,
+    method: 'post',
+    data
+  })
+}
+/** 删除账号*/
+export function deleteUserInfo(data) {
+  return request({
+    url: `/user/delete`,
+    method: 'delete',
+    params: data
+  })
+}
+/** 修改用户状态*/
+export function updateUserStatus(data) {
+  return request({
+    url: `/user/updateUserStatus`,
+    method: 'post',
+    data
+  })
+}
+/** 查看角色列表 */
+export function getRoleList(params) {
+  return request({
+    url: `/role/list`,
+    method: 'get',
+    params
+  })
+}
+
+/** 创建角色*/
+export function saveRole(data) {
+  return request({
+    url: `/role/save`,
+    method: 'post',
+    data
+  })
+}
+/** 修改角色*/
+export function updateRole(data) {
+  return request({
+    url: `/role/update`,
+    method: 'post',
+    data
+  })
+}
+/** 删除角色*/
+export function deleteRole(data) {
+  return request({
+    url: `/role/delete`,
+    method: 'delete',
+    params: data
+  })
+}
+/** 查看菜单列表 */
+export function getMenuList(params) {
+  return request({
+    url: `/menu/listMenu`,
+    method: 'get',
+    params
+  })
+}
diff --git a/src/config/net.config.js b/src/config/net.config.js
index 023ad03..f8258a8 100644
--- a/src/config/net.config.js
+++ b/src/config/net.config.js
@@ -5,7 +5,7 @@ const network = {
   // 默认的接口地址 如果是开发环境和生产环境走vab-mock-server,当然你也可以选择自己配置成需要的接口地址
   baseURL:
     process.env.NODE_ENV === 'development'
-      ? 'http://192.168.10.27:8097/fu-hsi-server'
+      ? 'http://192.168.10.25:8097/fu-hsi-server'
       : '/fuHsiApi',
   // 配后端数据的接收方式application/json;charset=UTF-8或者application/x-www-form-urlencoded;charset=UTF-8
   contentType: 'application/json;charset=UTF-8',
diff --git a/src/config/permission.js b/src/config/permission.js
index a56c3fb..16bb64d 100644
--- a/src/config/permission.js
+++ b/src/config/permission.js
@@ -48,6 +48,7 @@ router.beforeResolve(async(to, from, next) => {
           let accessRoutes = []
           if (authentication === 'intelligence') {
             accessRoutes = await store.dispatch('routes/setRoutes', permissions)
+           
           } else if (authentication === 'all') {
             accessRoutes = await store.dispatch('routes/setAllRoutes')
           }
diff --git a/src/config/setting.config.js b/src/config/setting.config.js
index da06601..56b6cc5 100644
--- a/src/config/setting.config.js
+++ b/src/config/setting.config.js
@@ -46,7 +46,7 @@ const setting = {
   // 加载时显示文字
   loadingText: '正在加载中...',
   // token名称
-  tokenName: 'Auth-Token',
+  tokenName: 'token',
   // token在localStorage、sessionStorage存储的key的名称
   tokenTableName: 'MyToken',
   // token存储位置localStorage sessionStorage
@@ -58,7 +58,7 @@ const setting = {
   // 是否显示在页面高亮错误
   errorLog: ['development', 'production'],
   // 是否开启登录拦截
-  loginInterception: false,
+  loginInterception: true,
   // 是否开启登录RSA加密
   loginRSA: false,
   // intelligence和all两种方式,前者后端权限只控制permissions不控制view文件的import(前后端配合,减轻后端工作量),all方式完全交给后端前端只负责加载
diff --git a/src/data/appInit.js b/src/data/appInit.js
index 72048ac..69933d4 100644
--- a/src/data/appInit.js
+++ b/src/data/appInit.js
@@ -12,7 +12,7 @@ import { queryDictionary } from '@/api/system'
 export default {
   init(options) {
     router.beforeEach(async(to, from, next) => {
-      if (options.enable && (from.path === '/login' || sessionStorage.getItem('gender') === null)) {
+      if (options.enable && (from.path === '/login')) {
         // 保存字典
         queryDictionary({ list: [] }).then(res => {
           for (const dataKey in res.data) {
diff --git a/src/layouts/components/Avatar/index.vue b/src/layouts/components/Avatar/index.vue
index e67c962..4176801 100644
--- a/src/layouts/components/Avatar/index.vue
+++ b/src/layouts/components/Avatar/index.vue
@@ -8,11 +8,11 @@
       <span class="avatar-dropdown">
         <img
           class="user-avatar"
-          :src="avatar || manIcon"
+          :src="imgUrl || manIcon"
           alt=""
         >
         <div class="user-name">
-          {{ name }}
+          {{ username }}
           <i class="el-icon-arrow-down el-icon--right" />
         </div>
       </span>
@@ -82,7 +82,9 @@
 import { mapGetters } from 'vuex'
 import { changePassword } from '@/api/base/user'
 import Man from '@/assets/avatar/man.png'
-
+import { baseURL } from '@/config'
+import { commonDownloadFile } from '@/api/config/uploadApi'
+import { queryDictionary } from '@/api/system'
 export default {
   name: 'CsAvatar',
   filters: {
@@ -141,11 +143,26 @@ export default {
   computed: {
     ...mapGetters({
       avatar: 'user/avatar',
-      name: 'user/name'
-    })
+      username: 'user/username'
+    }),
+    imgUrl() {
+      if (this.avatar) {
+        return `${baseURL}${commonDownloadFile}${this.avatar}`
+      } else {
+        return ''
+      }
+    }
   },
   mounted() {
-    // console.log(this.avatar, 666)
+    queryDictionary({ list: [] }).then(res => {
+      for (const dataKey in res.data) {
+        const dic = res.data[dataKey]
+            dic?.forEach(item => {
+              sessionStorage.setItem(dataKey, JSON.stringify(item.child))
+            })
+      }
+      // console.log('res-data', res.data,)
+    })
   },
   methods: {
     handleCommand(command) {
diff --git a/src/router/index.js b/src/router/index.js
index 7f839dd..32556de 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -144,7 +144,7 @@ export const asyncRoutes = [
   {
     path: '/prompt',
     name: 'Prompt',
-    permission: 'p_prompt',
+    permission: 'p_promptProject',
     component: Layout,
     meta: { title: '提示工程' },
     children: [
diff --git a/src/store/modules/routes.js b/src/store/modules/routes.js
index 430e264..49160aa 100644
--- a/src/store/modules/routes.js
+++ b/src/store/modules/routes.js
@@ -33,6 +33,7 @@ const actions = {
       [...asyncRoutes],
       permissions
     )
+    console.log(finallyAsyncRoutes, permissions, '2222222222222')
     commit('setRoutes', finallyAsyncRoutes)
     return finallyAsyncRoutes
   },
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index f31494b..e4c2072 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -7,7 +7,6 @@ import {
 } from '@/utils/accessToken'
 // import { resetRouter } from '@/router'
 import { title, tokenName } from '@/config'
-import md5 from 'js-md5'
 import { resetRouter } from '@/router'
 const state = () => ({
   accessToken: getAccessToken(),
@@ -71,12 +70,13 @@ const actions = {
   },
 
   async login({ commit }, userInfo) {
-    const { account, password } = userInfo
+    const { userAccount, password } = userInfo
     const { data } = await login({
-      account,
-      password: md5(password)
+      userAccount,
+      password: password
     })
-    const accessToken = data
+    const { userName } = data
+    const accessToken = data.token
     if (accessToken) {
       commit('setAccessToken', accessToken)
       const hour = new Date().getHours()
@@ -90,7 +90,7 @@ const actions = {
               : hour < 18
                 ? '下午好'
                 : '晚上好'
-      Vue.prototype.$baseNotify(`欢迎登录${title}`, `${thisTime}!`)
+      Vue.prototype.$baseNotify(`欢迎登录${userName}`, `${thisTime}!`)
     } else {
       Vue.prototype.$baseMessage(
         `登录接口异常,未正确返回${tokenName}...`,
@@ -106,23 +106,14 @@ const actions = {
       return false
     }
     console.log(data, 'userData')
-    const { autoid, cardId, roleId, userName, unitId, gender, name, phone, endTime } = data
+
+    const { permission, userName, headPicId } = data
 
     if (userName) {
-      commit('setUserId', autoid)
-      commit('setCardId', cardId)
-      commit('setUnitId', unitId)
       commit('setUsername', userName)
-      commit('setName', name)
-      commit('setPhone', phone)
-      commit('setEndTime', endTime)
-      commit('setPermissions', [Number(roleId)])
-      if (gender && gender === '2') {
-        commit('setAvatar', require('@/assets/avatar/woman.png'))
-      } else {
-        commit('setAvatar', require('@/assets/avatar/man.png'))
-      }
-      return [Number(roleId)]
+      commit('setAvatar', headPicId)
+      commit('setPermissions', permission.length > 0 ? permission : ['p_home'])
+      return permission
     } else {
       Vue.prototype.$baseMessage('用户信息接口异常', 'error')
       return false
diff --git a/src/utils/handleRoutes.js b/src/utils/handleRoutes.js
index 0a041d2..50351d8 100644
--- a/src/utils/handleRoutes.js
+++ b/src/utils/handleRoutes.js
@@ -60,8 +60,8 @@ export function convertPermission(asyncRoutes, that) {
  * @returns {boolean|*}
  */
 function hasPermission(permissions, route) {
-  if (route.meta && route.meta.permissions) {
-    return permissions.some((role) => route.permissions.includes(role))
+  if (route && route.permission) {
+    return permissions.some((role) => route.permission.includes(role))
   } else {
     return true
   }
diff --git a/src/utils/request.js b/src/utils/request.js
index f6521e9..ba350ce 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -18,7 +18,6 @@ import router from '@/router'
 import { isArray } from '@/utils/validate'
 // import { Encrypt, Decrypt } from '@/utils/decrypt'
 // import whiteList from '@/utils/whiteList'
-
 let loadingInstance
 const handleCode = (code, msg) => {
   switch (code) {
@@ -46,7 +45,8 @@ const instance = axios.create({
   timeout: requestTimeout,
   headers: {
     'Content-Type': contentType,
-    'X-Frame-Options': 'SAMEORIGIN'
+    'X-Frame-Options': 'SAMEORIGIN',
+    'X-Requested-With': 'XMLHttpRequest'
   }
 })
 instance.interceptors.request.use(
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 3d7be20..acd169d 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -11,10 +11,10 @@
         <span>Welcome to login</span>
       </div>
       <el-form ref="form" :model="loginForm" :rules="rules">
-        <el-form-item prop="username">
+        <el-form-item prop="userAccount">
           <div class="flex-row login-item">
             <img src="~@/assets/login/dianhua@2x(1).png">
-            <el-input v-model="loginForm['username']" autofocus placeholder="请输入用户名" />
+            <el-input v-model="loginForm['userAccount']" autofocus placeholder="请输入用户名" />
           </div>
         </el-form-item>
         <el-form-item prop="password">
@@ -63,7 +63,7 @@ export default {
       title,
       loginForm: {},
       rules: {
-        username: [{ required: true, message: '用户名不能为空!' }],
+        userAccount: [{ required: true, message: '用户名不能为空!' }],
         password: [{ required: true, message: '密码不能为空!' }]
       },
       checked: false,
@@ -95,20 +95,9 @@ export default {
         if (valid) {
           this.loading = true
           this.$store
-            .dispatch('user/login', this.form)
+            .dispatch('user/login', this.loginForm)
             .then(() => {
-              if (this.checked === true) {
-                // 传入账号名,密码,和保存天数3个参数
-                this.setCookie(this.form.account, this.form.password, 7)
-              } else {
-                // 清空Cookie
-                this.clearCookie()
-              }
-              const routerPath =
-                this.redirect === '/404' || this.redirect === '/401'
-                  ? '/'
-                  : this.redirect
-              this.$router.push(routerPath).catch(() => {})
+              this.$router.push('/index')
               this.loading = false
             })
             .catch(() => {
diff --git a/src/views/system/accountManagement/components/AccountManagement.vue b/src/views/system/accountManagement/components/AccountManagement.vue
index 2436b75..cb937b7 100644
--- a/src/views/system/accountManagement/components/AccountManagement.vue
+++ b/src/views/system/accountManagement/components/AccountManagement.vue
@@ -13,20 +13,37 @@
       <el-button type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd">新增</el-button>
       <vxe-grid v-bind="gridOptions" style="margin-top: 20px">
         <template #operate="{row}">
-          <el-button type="text" @click="handleDetails(row)">详情</el-button>
+          <!-- <el-button type="text" @click="handleDetails(row)">详情</el-button> -->
           <el-button type="text" @click="handleEdit(row)">编辑</el-button>
           <el-button type="text" style="color: red" @click="handleDel(row)">删除</el-button>
         </template>
+        <template #status="{row}">
+          <el-switch
+            v-model="row.status"
+            :active-value="0"
+            :inactive-value="1"
+            @change="((val)=>{changeStatus(row, val)})"
+          />
+        </template>
       </vxe-grid>
+      <div style="text-align: center">
+        <cs-page
+          :page.sync="queryForm.page"
+          :limit.sync="queryForm.size"
+          :total="queryForm.total"
+          @pagination="fetchData"
+        />
+      </div>
     </div>
     <!--编辑用户-->
-    <edit-account ref="edit" />
+    <edit-account ref="edit" @reloadData="fetchData" />
   </div>
 </template>
 
 <script>
 import mixin from '@/views/mixin'
 import EditAccount from '@/views/system/accountManagement/components/EditAccount.vue'
+import { getUserList, deleteUserInfo, updateUserStatus } from '@/api/system/user.js'
 export default {
   name: 'AccountManagement',
   components: { EditAccount },
@@ -35,43 +52,39 @@ export default {
     return {
       searchData: [
         { label: '用户名', model: 'userName', type: 'input' },
-        { label: '角色', model: 'role', type: 'input' },
-        { label: '所在部门', model: 'department', type: 'input' }
+        { label: '角色', model: 'roleName', type: 'input' }
       ],
       gridOptions: {
         ...mixin.data().gridOptions,
         columns: [
-          { title: '序号', type: 'seq' },
-          { title: '用户名', field: 'indexId' },
-          { title: '角色', field: 'indexName' },
-          { title: '所在部门', field: 'indexType' },
-          { title: '手机号', field: 'indexScore' },
-          { title: '状态', field: 'necessaryEvidence' },
-          { title: '注册时间', field: 'latestTime', sortable: true },
+          { title: '序号', type: 'seq', width: 80 },
+          { title: '用户名', field: 'userName' },
+          { title: '角色', field: 'roleName' },
+          { title: '手机号', field: 'phoneNum' },
+          { title: '状态', slots: { default: 'status' }, field: 'status' },
+          { title: '注册时间', field: 'registerTime', sortable: true },
           { title: '操作', slots: { default: 'operate' }, fixed: 'right', width: '150px' }
         ],
         data: [
-          { indexId: 255, indexName: '是否有受害人对行为人的辨认笔录', indexType: '共性指标', indexScore: 4, necessaryEvidence: 2, latestTime: '2023-12-09 10:30', indexExplain: '组织的对特定场所、物品、个人等进行的辨别和确认活动的记录', indexAbbreviation: '共性]受害人辨认笔录', necessaryEvidenceContent: '辨认笔录,辨认人照片', caseType: '工程合同诈骗案', indexRules: [
-            { label: '证据判断', value: 1 },
-            { label: '笔录判断', value: 1 },
-            { label: '外部数据', value: 0 }
-          ] },
-          { indexId: 255, indexName: '是否有行为人到案方式、:违法犯罪证明、前科情况说明前科情况说明......', indexType: '共性指标', indexScore: 4, necessaryEvidence: 2, latestTime: '2023-12-09 10:30', indexExplain: '组织的对特定场所、物品、个人等进行的辨别和确认活动的记录', indexAbbreviation: '共性]受害人辨认笔录', necessaryEvidenceContent: '辨认笔录,辨认人照片', caseType: '工程合同诈骗案', indexRules: [
-            { label: '证据判断', value: 1 },
-            { label: '笔录判断', value: 1 },
-            { label: '外部数据', value: 0 }
-          ] }
+
         ]
       }
     }
   },
   mounted() {
-    this.tableHeight(390)
+    this.tableHeight(400)
   },
   methods: {
     // 获取数据
     fetchData() {
-
+      getUserList({
+        userName: this.searchFormData.userName,
+        pageNumber: this.queryForm.page,
+        pageSize: this.queryForm.size
+      }).then(res => {
+        this.gridOptions.data = res.data.records
+        this.queryForm.total = res.data.total
+      })
     },
     // 新增
     handleAdd() {
@@ -85,14 +98,31 @@ export default {
     handleEdit(row) {
       this.$refs.edit.show(row, true)
     },
+    // 改版状态
+    changeStatus(row, val) {
+      updateUserStatus({
+        id: row.id,
+        status: val
+      }).then(res => {
+        if (res.code === 200) {
+          this.$baseMessage.success('修改成功!')
+          this.fetchData()
+        }
+      })
+    },
     // 删除
     handleDel(row) {
       this.$baseConfirm('确定要删除吗?', null, async() => {
-
+        const { code, msg } = await deleteUserInfo({ id: row.id })
+        code === 200 ? this.$baseMessage.success(msg || '删除成功!') : this.$baseMessage.error(msg || '删除失败!')
+        this.fetchData()
       })
     },
     // 搜索
     onSearch(data, callback) {
+      this.searchFormData = Object.assign({}, data)
+      this.queryForm.page = 1
+      this.fetchData()
       if (callback) callback(true)
     }
   }
diff --git a/src/views/system/accountManagement/components/AuthorityManagement.vue b/src/views/system/accountManagement/components/AuthorityManagement.vue
index 3b99c04..d92559b 100644
--- a/src/views/system/accountManagement/components/AuthorityManagement.vue
+++ b/src/views/system/accountManagement/components/AuthorityManagement.vue
@@ -13,14 +13,22 @@
       <el-button type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd">新增</el-button>
       <vxe-grid v-bind="gridOptions" style="margin-top: 20px">
         <template #operate="{row}">
-          <el-button type="text" @click="handleDetails(row)">详情</el-button>
+          <!-- <el-button type="text" @click="handleDetails(row)">详情</el-button> -->
           <el-button type="text" @click="handleEdit(row)">编辑</el-button>
           <el-button type="text" style="color: red" @click="handleDel(row)">删除</el-button>
         </template>
       </vxe-grid>
+      <div style="text-align: center">
+        <cs-page
+          :page.sync="queryForm.page"
+          :limit.sync="queryForm.size"
+          :total="queryForm.total"
+          @pagination="fetchData"
+        />
+      </div>
     </div>
     <!--角色编辑-->
-    <edit-authority ref="edit" />
+    <edit-authority ref="edit" @reloadData="fetchData" />
   </div>
 </template>
 
@@ -28,7 +36,7 @@
 
 import mixin from '@/views/mixin'
 import EditAuthority from '@/views/system/accountManagement/components/EditAuthority.vue'
-
+import { getRoleList, deleteRole } from '@/api/system/user.js'
 export default {
   name: 'AuthorityManagement',
   components: { EditAuthority },
@@ -36,31 +44,38 @@ export default {
   data() {
     return {
       searchData: [
-        { label: '角色', model: 'role', type: 'input' }
+        { label: '角色', model: 'roleName', type: 'input' }
       ],
       gridOptions: {
         ...mixin.data().gridOptions,
         columns: [
           { title: '序号', type: 'seq', width: 80 },
           { title: '角色', field: 'roleName' },
-          { title: '关联用户数', field: 'correlationUser' },
+          { title: '关联用户数', field: 'userCount' },
           { title: '说明', field: 'remark' },
-          { title: '注册时间', field: 'registerTime', sortable: true },
+          { title: '注册时间', field: 'updateTime', sortable: true },
           { title: '操作', slots: { default: 'operate' }, fixed: 'right', width: '150px' }
         ],
         data: [
-          { roleName: 'xxx', correlationUser: 10, remark: '测试', registerTime: '2023-12-12' }
+
         ]
       }
     }
   },
   mounted() {
-    this.tableHeight(390)
+    this.tableHeight(400)
   },
   methods: {
     // 获取数据
     fetchData() {
-
+      getRoleList({
+        roleName: this.searchFormData.roleName,
+        pageNumber: this.queryForm.page,
+        pageSize: this.queryForm.size
+      }).then(res => {
+        this.gridOptions.data = res.data.records
+        this.queryForm.total = res.data.total
+      })
     },
     // 新增
     handleAdd() {
@@ -77,11 +92,16 @@ export default {
     // 删除
     handleDel(row) {
       this.$baseConfirm('确定要删除吗?', null, async() => {
-
+        const { code, msg } = await deleteRole({ id: row.id })
+        code === 200 ? this.$baseMessage.success(msg || '删除成功!') : this.$baseMessage.error(msg || '删除失败!')
+        this.fetchData()
       })
     },
     // 搜索
     onSearch(data, callback) {
+      this.searchFormData = Object.assign({}, data)
+      this.queryForm.page = 1
+      this.fetchData()
       if (callback) callback(true)
     }
   }
diff --git a/src/views/system/accountManagement/components/EditAccount.vue b/src/views/system/accountManagement/components/EditAccount.vue
index 16c3885..70dfe86 100644
--- a/src/views/system/accountManagement/components/EditAccount.vue
+++ b/src/views/system/accountManagement/components/EditAccount.vue
@@ -14,36 +14,37 @@
   >
     <template slot="content">
       <el-form ref="form" :model="userForm" :rules="rules" label-width="80px">
-        <el-form-item label="头像" prop="avatar">
+        <el-form-item label="头像" prop="headPicId">
           <el-upload
             class="avatar-uploader"
             :action="uploadCofig.action"
             :show-file-list="false"
+            :on-success="handleAvatarSuccess"
+            :before-upload="beforeAvatarUpload"
             :disabled="isView"
           >
-            <img v-if="userForm['avatar']" :src="userForm['avatar']" class="avatar">
-            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+            <img v-if="userForm['headPicId']" :src="downLoadUrl" class="avatar">
+            <i v-else class="el-icon-plus avatar-uploader-icon" />
           </el-upload>
         </el-form-item>
         <el-form-item label="用户名" prop="userName">
           <el-input v-model="userForm['userName']" :disabled="isView" placeholder="请输入用户名" />
         </el-form-item>
-        <el-form-item label="密码" prop="password">
-          <el-input v-model="userForm['password']" :disabled="isView" placeholder="请输入密码" />
+        <el-form-item label="账号" prop="account">
+          <el-input v-model="userForm['account']" :disabled="isView || isEdit" placeholder="请输入账号名称" />
         </el-form-item>
-        <el-form-item label="手机号" prop="mobile">
-          <el-input v-model="userForm['mobile']" :disabled="isView" placeholder="请输入手机号" />
+        <el-form-item v-if="!isEdit" label="密码" prop="password">
+          <el-input v-model="userForm['password']" :disabled="isView" placeholder="请输入密码" />
         </el-form-item>
-        <el-form-item label="角色" prop="role">
-          <el-select v-model="userForm['role']" :disabled="isView" placeholder="请选择角色" multiple>
-            <el-option v-for="item in roleOptions" :key="item.value" :label="item.label" :value="item.value" />
-          </el-select>
+        <el-form-item label="手机号" prop="phoneNum">
+          <el-input v-model="userForm['phoneNum']" :disabled="isView" placeholder="请输入手机号" />
         </el-form-item>
-        <el-form-item label="所属部门" prop="department">
-          <el-select v-model="userForm['department']" :disabled="isView" placeholder="请选择所属部门" multiple>
-            <el-option v-for="item in departmentOptions" :key="item.value" :label="item.label" :value="item.value" />
+        <el-form-item label="角色" prop="roleId">
+          <el-select v-model="userForm['roleId']" :disabled="isView" placeholder="请选择角色">
+            <el-option v-for="item in roleOptions" :key="item.id" :label="item.roleName" :value="item.id" />
           </el-select>
         </el-form-item>
+
       </el-form>
     </template>
   </cs-drawer>
@@ -51,6 +52,9 @@
 
 <script>
 import { validPhone } from '@/utils/validate'
+import { baseURL } from '@/config'
+import { commonDownloadFile } from '@/api/config/uploadApi'
+import { getRoleList, saveUserInfo, updateUserInfo } from '@/api/system/user'
 export default {
   name: 'EditAccount',
   data() {
@@ -64,19 +68,28 @@ export default {
       // 所属部门数据
       departmentOptions: [],
       // 用户表单
-      userForm: {},
+      userForm: {
+        headPicId: '',
+        account: '',
+        userName: '',
+        password: '',
+        phoneNum: '',
+        roleId: '',
+        status:0
+      },
       // 规则校验
       rules: {
-        avatar: [{ required: true, message: '头像不能为空!', trigger: 'blur' }],
+        headPicId: [{ required: true, message: '头像不能为空!', trigger: 'blur' }],
         userName: [{ required: true, message: '用户名不能为空!', trigger: 'blur' }],
         password: [{ required: true, message: '密码不能为空!', trigger: 'blur' }],
-        mobile: [{ required: false, validate: validPhone, trigger: 'blur' }],
-        role: [{ required: true, message: '角色不能为空!', trigger: 'blur' }],
-        department: [{ required: true, message: '所属部门不能为空!', trigger: 'blur' }]
+        phoneNum: [{ required: false, validate: validPhone, trigger: 'blur' }],
+        account: [{ required: true, message: '账户不能为空!', trigger: 'blur' }],
+        roleId: [{ required: true, message: '角色不能为空!', trigger: 'blur' }]
       },
       // 上传文件配置
       uploadCofig: {
-        action: ''
+        action: `${baseURL}/minio/uploadFile`,
+        accept: '.jpg,.png'
       },
       // 是否编辑
       isEdit: false,
@@ -84,24 +97,78 @@ export default {
       isView: false
     }
   },
+  computed: {
+    downLoadUrl() {
+      if (this.userForm.headPicId) {
+        return `${baseURL}${commonDownloadFile}${this.userForm.headPicId}`
+      } else {
+        return ''
+      }
+    }
+  },
   methods: {
     // 显示弹窗
     show(data, isEdit) {
+      this.queryRole()
       this.isEdit = isEdit
       this.isView = !!data && !isEdit
       this.drawerOption.title = this.isEdit ? '编辑用户' : (this.isView ? '查看用户' : '新增用户')
       this.userForm = !isEdit && !this.isView ? {} : data
       this.drawerOption.show = true
     },
+    // 查询角色
+    queryRole() {
+      getRoleList({
+        pageNumber: 1,
+        pageSize: 999999
+      }).then(res => {
+        this.roleOptions = res.data.records
+      })
+    },
     // 重置
     handleReset() {
       this.$refs.form.resetFields()
       this.$refs.form.clearValidate()
     },
+    handleAvatarSuccess(res, file) {
+      this.$set(this.userForm, 'headPicId', res.data)
+    },
+    beforeAvatarUpload(file) {
+      const isLt5M = file.size / 1024 / 1024 < 5
+      const filename = file.name
+      const postfix = filename.substring(filename.lastIndexOf('.'))
+      if (!['.jpg', '.png'].includes(postfix)) {
+        this.$message.error('上传头像图片只能是 JPG,PNG 格式!')
+        return false
+      }
+      if (!isLt5M) {
+        this.$message.error('上传头像图片大小不能超过 5MB!')
+        return false
+      }
+      return true
+    },
     // 确定
     handleSubmit() {
       this.$refs.form.validate(valid => {
-        if (valid) { }
+        if (valid) {
+          if (this.isEdit) {
+            updateUserInfo(this.userForm).then(res => {
+              if (res.code === 200) {
+                this.drawerOption.show = false
+                this.$baseMessage.success('编辑成功!')
+                this.$emit('reloadData')
+              }
+            })
+          } else {
+            saveUserInfo(this.userForm).then(res => {
+              if (res.code === 200) {
+                this.drawerOption.show = false
+                this.$baseMessage.success('新增成功!')
+                this.$emit('reloadData')
+              }
+            })
+          }
+        }
       })
     }
   }
diff --git a/src/views/system/accountManagement/components/EditAuthority.vue b/src/views/system/accountManagement/components/EditAuthority.vue
index a454efc..49244ba 100644
--- a/src/views/system/accountManagement/components/EditAuthority.vue
+++ b/src/views/system/accountManagement/components/EditAuthority.vue
@@ -17,15 +17,19 @@
         <el-form-item label="角色" prop="roleName">
           <el-input v-model="roleForm['roleName']" :disabled="isView" placeholder="请输入角色" />
         </el-form-item>
-        <el-form-item label="说明" prop="explain">
-          <el-input v-model="roleForm['explain']" :disabled="isView" placeholder="请输入说明" />
+        <el-form-item label="说明" prop="remark">
+          <el-input v-model="roleForm['remark']" :disabled="isView" placeholder="请输入说明" />
         </el-form-item>
-        <el-form-item label="功能权限" prop="auth">
+        <el-form-item label="功能权限" prop="menuIdList">
           <el-tree
+            ref="treeRef"
             :data="menuList"
             default-expand-all
             show-checkbox
+            :default-checked-keys="roleForm.menuIdList"
+            node-key="id"
             class="menu-list"
+            @check-change="changeSelect"
           />
         </el-form-item>
       </el-form>
@@ -35,6 +39,7 @@
 
 <script>
 // import { mapGetters } from 'vuex'
+import { getMenuList, saveRole, updateRole } from '@/api/system/user'
 export default {
   name: 'EditAuthority',
   data() {
@@ -44,7 +49,11 @@ export default {
         title: '新增角色'
       },
       // 角色表单
-      roleForm: {},
+      roleForm: {
+        menuIdList: [],
+        roleName: '',
+        remark: ''
+      },
       // 规则校验
       rules: {
         roleName: [{ required: true, message: '角色不能为空!', trigger: 'blur' }],
@@ -56,57 +65,21 @@ export default {
       // 是否是查看
       isView: false,
       menuList: [
-        { label: '首页', id: '0' },
-        { label: '案件信息', id: '1', children: [
-          { label: '案件列表', id: '1-0' },
-          { label: '案件详情', id: '1-1' }
-        ] },
-        { label: '规则引擎', id: '2', children: [
-          { label: '指标规则', id: '2-0' },
-          { label: '模型规则', id: '2-1' },
-          { label: '原子指标', id: '2-1' }
-        ] },
-        { label: '系统管理', id: '3', children: [
-          { label: '账号管理', id: '3-0', children: [] },
-          { label: '配置管理', id: '3-1', children: [] }
-        ] },
-        { label: '提示工程', id: '3', children: [
-          { label: '提示词模版', id: '3-0', children: [] },
-          { label: '提示词调试', id: '3-1', children: [] }
-        ] }
       ]
     }
   },
-  // computed: {
-  //   ...mapGetters({
-  //     routes: 'routes/routes'
-  //   }),
-  //   // 处理后的菜单列表
-  //   menuList() {
-  //     const menu = []
-  //     this.routes.map(item => {
-  //       if (!item.hidden && item.children) {
-  //         if (item.children.length === 1) {
-  //           menu.push({ label: item.meta['title'] })
-  //         } else {
-  //           const children = []
-  //           item.children.map(subItem => {
-  //             children.push({ label: subItem.meta['title'] })
-  //           })
-  //           menu.push({ label: item.meta['title'], children: children })
-  //         }
-  //       }
-  //     })
-  //     return menu
-  //   }
-  // },
+  mounted() {
+    this.queryMeun()
+  },
   methods: {
     // 显示弹窗
     show(data, isEdit) {
       this.isEdit = isEdit
       this.isView = !!data && !isEdit
       this.drawerOption.title = this.isEdit ? '编辑角色' : (this.isView ? '查看角色' : '新增角色')
-      this.roleForm = !isEdit && !this.isView ? {} : data
+      this.roleForm = !isEdit && !this.isView ? { menuIdList: [],
+        roleName: '',
+        remark: '' } : JSON.parse(JSON.stringify(data))
       this.drawerOption.show = true
     },
     // 重置
@@ -117,8 +90,37 @@ export default {
     // 确定
     handleSubmit() {
       this.$refs.form.validate(valid => {
-        if (valid) { }
+        if (valid) {
+          if (this.isEdit) {
+            updateRole(this.roleForm).then(res => {
+              if (res.code === 200) {
+                this.drawerOption.show = false
+                this.$baseMessage.success('编辑成功!')
+                this.$emit('reloadData')
+              }
+            })
+          } else {
+            saveRole(this.roleForm).then(res => {
+              if (res.code === 200) {
+                this.drawerOption.show = false
+                this.$baseMessage.success('新增成功!')
+                this.$emit('reloadData')
+              }
+            })
+          }
+        }
       })
+    },
+    queryMeun() {
+      getMenuList().then(res => {
+        if (res.code === 200) {
+          this.menuList = res.data
+        }
+      })
+    },
+    changeSelect() {
+      const list = this.$refs['treeRef'].getCheckedKeys()
+      this.$set(this.roleForm, 'menuIdList', list)
     }
   }
 }