From cfcd9a35c74ce88da3647a0be3f1459fe5086ed1 Mon Sep 17 00:00:00 2001
From: lxl <lixuliang_hd@126.com>
Date: 星期三, 19 十月 2022 14:46:59 +0800
Subject: [PATCH] 控制

---
 src/views/maintenance/tokentool.vue                         |    2 
 src/views/AuthorizationManagement/userRoleAuthorization.vue |   85 +-
 src/views/AuthorizationManagement/roleResAuthorization.vue  |  541 +++++++++++++++
 src/views/AuthorizationManagement/roleMenuAuthorization.vue |  576 ++++++++++++++++
 src/components/mapsdk.vue                                   |   21 
 src/views/maintenance/systemMonitoring.vue                  |   15 
 src/router/index.js                                         |   43 +
 src/views/Synthesis/analyse.vue                             |   80 +
 src/views/Synthesis/viewport.vue                            |   32 
 src/views/maintenance/databaseMonitoring.vue                |    8 
 src/api/api.js                                              |   80 ++
 src/assets/lang/zh.js                                       |   36 
 src/views/AuthorizationManagement/menuRoleAuthorization.vue |  446 ++++++++++++
 src/views/maintenance/blackwhiteList.vue                    |   44 
 public/config/config.js                                     |    2 
 src/assets/lang/en.js                                       |    8 
 src/views/userManage/roleManage.vue                         |   77 +
 17 files changed, 1,929 insertions(+), 167 deletions(-)

diff --git a/public/config/config.js b/public/config/config.js
index a2b2f29..1c4b53c 100644
--- a/public/config/config.js
+++ b/public/config/config.js
@@ -1,4 +1,4 @@
-// const BASE_URL = 'http://192.168.20.55:12316';
+//const BASE_URL = 'http://192.168.20.55:12316';
 const BASE_URL = 'http://192.168.20.39:12316';
 var gisUrl = 'http://183.162.245.49:3301';
 var ifreamUrl = 'http://192.168.20.39:12306/';
diff --git a/src/api/api.js b/src/api/api.js
index f482b62..9be3d1a 100644
--- a/src/api/api.js
+++ b/src/api/api.js
@@ -132,6 +132,12 @@
   //璇锋眰鍦板潃
   return request.get('/auth/selectByPageAndCount', { params: params });
 }
+//鏉冮檺绠$悊鍒楄〃鏍规嵁鑿滃崟
+export function select_AuthMenu_ByPageAndCount(params) {
+  //璇锋眰鍦板潃
+  return request.get('/auth/selectByPageForMenu', { params: params });
+}
+
 //鏉冮檺绠$悊娣诲姞
 export function insertAuth(params) {
   return request.post('/auth/insertAuth', params);
@@ -184,7 +190,10 @@
 export function queryMenuTree() {
   return request.get('/menu/selectMenuAll');
 }
-
+//鑿滃崟閫掑綊鏌ヨ鏁版嵁
+export function selectMenuRecursive(params) {
+  return request.get('/menu/selectMenuRecursive', { params: params });
+}
 //鏂板鍗曟潯鑿滃崟
 export function insertMenu(params) {
   return request.post('/menu/insertMenu', params);
@@ -201,8 +210,6 @@
 export function updateMenuTrees(params) {
   return request.post('/menu/updateMenus', params);
 }
-
-
 
 //璇锋眰鐩綍鏍戞暟鎹�
 export function queryDirTree() {
@@ -272,8 +279,6 @@
   return request.get('/user/selectByUid', { params: params });
 }
 
-
-
 //鏍规嵁瑙掕壊鏌ヨ鐢ㄦ埛
 export function roleUserselectByPageForRole(params) {
   //璇锋眰鍦板潃
@@ -303,3 +308,68 @@
 export function update_args(params) {
   return request.post('/args/update', params);
 }
+
+//鑿滃崟鏉冮檺璇锋眰鍒楄〃
+export function select_menuAuth_ByPageAndCount(params) {
+  return request.get('/menuAuth/selectByPageAndCount', { params: params });
+}
+//鑿滃崟鏉冮檺娣诲姞澶氭潯鏁版嵁
+export function menuAuthinserts(params) {
+  return request.post('/menuAuth/inserts', params);
+}
+//鑿滃崟鏉冮檺鍒犻櫎澶氭潯
+export function menuAuthDeletes(params) {
+  return request.get('/menuAuth/deletes', { params: params });
+}
+//瑙掕壊璧勬簮鍒楄〃
+export function roleReselectByPageAndCount(params) {
+  return request.get('/roleRes/selectByPageAndCount', { params: params });
+}
+//瑙掕壊璧勬簮鏂板
+export function roleResInserts(params) {
+  return request.post('/roleRes/inserts', params);
+}
+//瑙掕壊璧勬簮鍒犻櫎
+export function roleResDeletes(params) {
+  return request.get('/roleRes/deletes', { params: params });
+}
+//璧勬簮绠$悊-鏍规嵁瑙掕壊鍒嗛〉鏌ヨ骞惰繑鍥炶褰曟暟
+export function resSelectCountForRole(params) {
+  return request.get('/res/selectByPageForRole', { params: params });
+}
+//瑙掕壊鑿滃崟-鏍规嵁瑙掕壊ID+鑿滃崟ID鍒嗛〉鏌ヨ骞惰繑鍥炶褰曟暟
+export function roleMenuAuthelectByPageForRole(params) {
+  return request.get('/roleMenuAuth/selectByPageForRole', { params: params });
+}
+//瑙掕壊鑿滃崟-鎻掑叆澶氭
+export function roleMenuAuthInserts(params) {
+  return request.post('/roleMenuAuth/inserts', params);
+}
+//瑙掕壊鑿滃崟-鍒犻櫎澶氭潯
+export function roleMenuAuthDeletes(params) {
+  return request.get('/roleMenuAuth/deletes', { params: params });
+}
+//鑿滃崟鏉冮檺-鏍规嵁瑙掕壊ID+鑿滃崟ID鍒嗛〉鏌ヨ骞惰繑鍥炶褰曟暟
+export function menuAuthSelectByPageForRole(params) {
+  return request.get('/menuAuth/selectByPageForRole', { params: params });
+}
+//浠ょ墝绠$悊鍒楄〃鑾峰彇
+export function select_Token_ByPageAndCount(params) {
+  return request.get('/token/selectByPageAndCount', { params: params });
+}
+//浠ょ墝绠$悊鏂板
+export function insertToken(params) {
+  return request.post('/token/insertToken', params);
+}
+//浠ょ墝绠$悊鍒犻櫎
+export function deleteTokens(params) {
+  return request.get(' /token/deleteTokens', { params: params });
+}
+//浠ょ墝绠$悊淇敼
+export function updateToken(params) {
+  return request.post('/token/updateToken', params);
+}
+//榛戠櫧鍚嶅崟鍒楄〃鑾峰彇
+export function blacklistSelectByPageAndCount(params) {
+  return request.get('/blacklist/selectByPageAndCount', { params: params });
+}
diff --git a/src/assets/lang/en.js b/src/assets/lang/en.js
index 6955b9f..0544b09 100644
--- a/src/assets/lang/en.js
+++ b/src/assets/lang/en.js
@@ -105,6 +105,9 @@
     operatManage: 'Operat Manage',
     ResourceLog: 'Resource Log',
     UserRoleAuthorization: 'User Role Authorization',
+    MenuRoleAuthorization: 'Menu Permission Authorization',
+    RoleResAuthorization: 'Role Resource Authorization',
+    RoleMenuAuthorization: 'Role Menu Authorization',
     UserRoleAuthorizationObj: {
       RoleTable: 'Role Table',
       userTable: 'user Table',
@@ -112,6 +115,9 @@
       delete: 'delete',
       serialNumber: 'serial Number',
       name: 'name',
+      PermissionTable: 'Permission table',
+      server: 'Service Address',
+      ResTable: 'Resource table',
     },
     ELM: {
       username: 'username',
@@ -556,6 +562,8 @@
       updateontime: 'Update Time',
       updateonuser: 'Update Personnel',
       insertRole: 'Add role information',
+      updateRole: 'Update role information',
+      isAdmin: 'isAdmin',
     },
     groupManage: 'groupManage',
     GM: {
diff --git a/src/assets/lang/zh.js b/src/assets/lang/zh.js
index a5868cf..0fb6535 100644
--- a/src/assets/lang/zh.js
+++ b/src/assets/lang/zh.js
@@ -106,6 +106,9 @@
     operatManage: '杩愮淮绠$悊',
     ResourceLog: '璧勬簮鏃ュ織',
     UserRoleAuthorization: '鐢ㄦ埛瑙掕壊鎺堟潈',
+    MenuRoleAuthorization: '鑿滃崟鏉冮檺鎺堟潈',
+    RoleResAuthorization: '瑙掕壊璧勬簮鎺堟潈',
+    RoleMenuAuthorization: '瑙掕壊鑿滃崟鎺堟潈',
     UserRoleAuthorizationObj: {
       RoleTable: '瑙掕壊琛�',
       userTable: '鐢ㄦ埛琛�',
@@ -113,6 +116,9 @@
       delete: '鍒犻櫎',
       serialNumber: '缂栧彿',
       name: '鍚嶇О',
+      PermissionTable: '鏉冮檺琛�',
+      server: '鏈嶅姟鍦板潃',
+      ResTable: '璧勬簮琛�',
     },
     ELM: {
       username: '鐢ㄦ埛鍚嶇О',
@@ -401,21 +407,21 @@
       rejection: '鎷掓壒',
       userexport: 'Excel鐢ㄦ埛瀵煎嚭',
       userinput: 'Excel鐢ㄦ埛瀵煎叆',
-      userStatus: "鐢ㄦ埛鐘舵��",
-      uname: "鐢ㄦ埛鍚嶇О",
-      pwd: "瀵嗙爜",
-      sex: "鎬у埆",
-      natives: "绫嶈疮",
+      userStatus: '鐢ㄦ埛鐘舵��',
+      uname: '鐢ㄦ埛鍚�',
+      pwd: '瀵嗙爜',
+      sex: '鎬у埆',
+      natives: '绫嶈疮',
       depName: '鍗曚綅鍚嶇О',
-      idcard: "璇佷欢鍙�",
-      job: "宸ヤ綔",
-      edu: "鏁欒偛",
-      addr: "鍦板潃",
-      email: "鐢靛瓙閭欢",
-      contact: "鑱旂郴鏂瑰紡",
-      status: "鐘舵��",
-      bak: "澶囨敞",
-      depid: "鎵�灞為儴闂�",
+      idcard: '璇佷欢鍙�',
+      job: '宸ヤ綔',
+      edu: '鏁欒偛',
+      addr: '鍦板潃',
+      email: '鐢靛瓙閭欢',
+      contact: '鑱旂郴鏂瑰紡',
+      status: '鐘舵��',
+      bak: '澶囨敞',
+      depid: '鎵�灞為儴闂�',
       chineseName: '涓枃鍚峓鐢ㄦ埛鍚峕',
       affiliatedUnit: '鎵�灞炲崟浣峓鍦ㄨ亴]',
       mobileNumber: '鎵嬫満鍙穂鎺ユ敹鐭俊]',
@@ -558,6 +564,8 @@
       updateontime: '淇敼鏃堕棿',
       updateonuser: '淇敼浜哄憳',
       insertRole: '娣诲姞瑙掕壊淇℃伅',
+      updateRole: '淇敼瑙掕壊淇℃伅',
+      isAdmin: '鏄惁涓虹鐞嗗憳',
     },
     groupManage: '缇ょ粍绠$悊',
     GM: {
diff --git a/src/components/mapsdk.vue b/src/components/mapsdk.vue
index 8ba7bb7..9730a8c 100644
--- a/src/components/mapsdk.vue
+++ b/src/components/mapsdk.vue
@@ -4,7 +4,7 @@
 
 <script>
 export default {
-  name: "",
+  name: '',
   data() {
     return {};
   },
@@ -13,9 +13,9 @@
   },
   methods: {
     init3DMap() {
-      window.sgworld = new SmartEarth.SGWorld("mapdiv", {
-        url: "/SmartEarthSDK/Workers/image/earth.jpg",
-        licenseServer: "http://192.168.20.39/LFServer",
+      window.sgworld = new SmartEarth.SGWorld('mapdiv', {
+        url: '/SmartEarthSDK/Workers/image/earth.jpg',
+        licenseServer: 'http://192.168.20.39/LFServer',
       });
       window.Viewer = sgworld._Viewer;
       sgworld.Navigate.Stop(); //鍙栨秷椋炶鐘舵��
@@ -25,8 +25,19 @@
       });
       //鏄剧ずfps
       sgworld._Viewer.scene.debugShowFramesPerSecond = false;
-      sgworld.navControl("enableCompass", false);
+      //mpt娣诲姞
+      var option = {
+        url: 'http://183.162.245.49:82/SG/Elevation',
+        layerName: 'zhufeng.397336.mpt',
+        requestVertexNormals: true,
+      };
+      sgworld.Creator.sfsterrainprovider('', option, '', true, '');
+      //瀵艰埅鎺т欢
+      document.getElementById('distanceLegendDiv').style.display = 'none';
+      //姣斾緥灏�
+      sgworld.navControl('enableCompass', false);
       //sgworld.navControl("enableDistanceLegend", false);
+      setTimeout(() => {}, 10000);
     },
   },
 };
diff --git a/src/router/index.js b/src/router/index.js
index 8d351de..eeb2a3a 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -37,14 +37,17 @@
 import groupManage from '../views/userManage/groupManage.vue'; // 鐢ㄦ埛绠$悊妯″潡
 import authorityManage from '@/views/userManage/authorityManage.vue'; //鐢ㄦ埛绠$悊-鏉冮檺绠$悊
 import resourceManage from '@/views/userManage/resourceManage.vue'; //鐢ㄦ埛绠$悊-璧勬簮绠$悊
-import userRoleAuthorization from '@/views/AuthorizationManagement/userRoleAuthorization.vue'; //绯荤粺绠$悊-
-const originalPush = VueRouter.prototype.push
+import userRoleAuthorization from '@/views/AuthorizationManagement/userRoleAuthorization.vue'; //绯荤粺绠$悊-鐢ㄦ埛瑙掕壊鎺堟潈
+
+import menuRoleAuthorization from '@/views/AuthorizationManagement/menuRoleAuthorization.vue'; //绯荤粺绠$悊-鑿滃崟鏉冮檺鎺堟潈
+import roleResAuthorization from '@/views/AuthorizationManagement/roleResAuthorization.vue'; //绯荤粺绠$悊-瑙掕壊璧勬簮鎺堟潈
+import roleMenuAuthorization from '@/views/AuthorizationManagement/roleMenuAuthorization.vue'; //绯荤粺绠$悊-瑙掕壊鑿滃崟鎺堟潈
+
+const originalPush = VueRouter.prototype.push;
 
 VueRouter.prototype.push = function push(location) {
-
-  return originalPush.call(this, location).catch(err => err)
-
-}
+  return originalPush.call(this, location).catch((err) => err);
+};
 
 // 缇ょ粍绠$悊
 Vue.use(VueRouter);
@@ -355,7 +358,33 @@
           requireAuth: true, // 鏍囪瘑璇ヨ矾鐢辨槸鍚﹂渶瑕佺櫥褰�
         },
       },
-
+      {
+        path: '/menuRoleAuthorization',
+        component: menuRoleAuthorization,
+        name: 'menuRoleAuthorization',
+        meta: {
+          title: '鑿滃崟鏉冮檺鎺堟潈',
+          requireAuth: true, // 鏍囪瘑璇ヨ矾鐢辨槸鍚﹂渶瑕佺櫥褰�
+        },
+      },
+      {
+        path: '/roleResAuthorization',
+        component: roleResAuthorization,
+        name: 'roleResAuthorization',
+        meta: {
+          title: '鑿滃崟鏉冮檺鎺堟潈',
+          requireAuth: true, // 鏍囪瘑璇ヨ矾鐢辨槸鍚﹂渶瑕佺櫥褰�
+        },
+      },
+      {
+        path: '/roleMenuAuthorization',
+        component: roleMenuAuthorization,
+        name: 'roleMenuAuthorization',
+        meta: {
+          title: '鑿滃崟鏉冮檺鎺堟潈',
+          requireAuth: true, // 鏍囪瘑璇ヨ矾鐢辨槸鍚﹂渶瑕佺櫥褰�
+        },
+      },
     ],
   },
 ];
diff --git a/src/views/AuthorizationManagement/menuRoleAuthorization.vue b/src/views/AuthorizationManagement/menuRoleAuthorization.vue
new file mode 100644
index 0000000..ff0ab16
--- /dev/null
+++ b/src/views/AuthorizationManagement/menuRoleAuthorization.vue
@@ -0,0 +1,446 @@
+<template>
+  <div class="menuSettings_box">
+    <div class="menuSettings_tree">
+      <My-bread
+        :list="[
+          `${$t('operatManage.operatManage')}`,
+
+          `${$t('operatManage.MenuRoleAuthorization')}`,
+        ]"
+      ></My-bread>
+
+      <el-divider />
+      <div class="menuTreeBox">
+        <el-tree
+          :data="depList"
+          :props="defaultProps"
+          :show-checkbox="true"
+          :check-on-click-node="true"
+          :check-strictly="true"
+          node-key="id"
+          @check="treeCheck"
+          ref="treeForm"
+        >
+        </el-tree>
+      </div>
+    </div>
+
+    <div class="menuSettings">
+      <!-- <div class="title_box">
+        <h4>璇︾粏淇℃伅</h4>
+      </div> -->
+      <div
+        style="
+          font-size: 14px;
+          color: #606266;
+          line-height: 1;
+          cursor: text;
+          position: relative;
+          top: 5px;
+          margin-left: 10px;
+          display: flex;
+          align-items: center;
+        "
+      >
+        <span>
+          {{
+            $t('operatManage.UserRoleAuthorizationObj.PermissionTable')
+          }}</span
+        >
+        <div class="btn" style="margin-left: auto">
+          <el-button
+            type="primary"
+            icon="el-icon-circle-plus-outline"
+            size="small"
+            :disabled="roleid == null ? true : false"
+            @click="adduser"
+            >{{ $t('operatManage.UserRoleAuthorizationObj.Added') }}</el-button
+          >
+          <el-button
+            type="danger"
+            icon="el-icon-delete"
+            size="small"
+            @click="deletesUser"
+            :disabled="roleid == null ? true : false"
+            >{{ $t('operatManage.UserRoleAuthorizationObj.delete') }}</el-button
+          >
+        </div>
+      </div>
+      <el-divider class="divider" />
+
+      <el-table
+        :data="tableData"
+        stripe
+        style="width: 100%"
+        height="85%"
+        @selection-change="handleSelectionChange"
+        :header-cell-style="{
+          background: 'transparent',
+        }"
+      >
+        <el-table-column type="selection" width="55"> </el-table-column>
+        <el-table-column
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+        />
+        <el-table-column
+          prop="authName"
+          :label="$t('operatManage.UserRoleAuthorizationObj.name')"
+        >
+        </el-table-column>
+      </el-table>
+
+      <div style="margin-top: 20px; text-align: center" class="pagination_box">
+        <el-pagination
+          @size-change="userhandleSizeChange"
+          @current-change="userhandleCurrentChange"
+          :current-page="userlistData.pageIndex"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="userlistData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="usercount"
+        >
+        </el-pagination>
+      </div>
+    </div>
+    <el-dialog
+      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
+      :visible.sync="dialogTableVisible"
+    >
+      <el-table
+        :data="gridData"
+        height="40vh"
+        @selection-change="addhandleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"> </el-table-column>
+        <el-table-column
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+        />
+        <el-table-column
+          prop="name"
+          :label="$t('operatManage.UserRoleAuthorizationObj.name')"
+        >
+        </el-table-column>
+      </el-table>
+      <div style="margin-top: 20px; text-align: center" class="pagination_box">
+        <el-pagination
+          @size-change="addhandleSizeChange"
+          @current-change="addhandleCurrentChange"
+          :current-page="addlistData.pageIndex"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="addlistData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="addcount"
+        >
+        </el-pagination>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogTableVisible = false">{{
+          $t('dataManage.dictionaryManageObj.cancel')
+        }}</el-button>
+        <el-button type="primary" @click="addConfirm">{{
+          $t('dataManage.dictionaryManageObj.confirm')
+        }}</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import MyBread from '../../components/MyBread.vue';
+import {
+  selectMenuRecursive,
+  select_menuAuth_ByPageAndCount,
+  menuAuthDeletes,
+  select_AuthMenu_ByPageAndCount,
+  menuAuthinserts,
+} from '../../api/api';
+export default {
+  //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {
+    MyBread,
+  },
+
+  data() {
+    return {
+      addcount: 0,
+      gridData: [],
+      addlistData: {
+        pageIndex: 1,
+        pageSize: 10,
+      },
+      dialogTableVisible: false,
+      usertableData: [],
+      userlistData: {
+        pageIndex: 1,
+        pageSize: 10,
+      },
+      usercount: 0,
+      tableData: [],
+      //   褰撳墠閫夋嫨鐨勮鐨刬d
+      templateSelection: '',
+      //   褰撳墠閫夋嫨鐨勮鐨勬暟鎹�
+      checkList: [],
+
+      defaultProps: {
+        children: 'children',
+        label: 'cnName',
+      },
+      oriData: [], //鍘熷鏍戞暟鎹�
+      depList: [], //el鏍戞暟鎹�
+      backUpData: {},
+      formLabelWidth: '170px',
+      listData: {
+        pageIndex: 1,
+        pageSize: 10,
+      },
+      count: 0,
+      usermultipleSelection: [],
+      debid: null,
+      roleid: null,
+      addmultipleSelection: [],
+    };
+  },
+  methods: {
+    /**
+     * sws
+     */
+
+    // 閮ㄩ棬璇锋眰
+    async getMenuTree() {
+      //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢�
+      const data = await selectMenuRecursive({ name: '绠¢亾鍩虹澶ф暟鎹钩鍙�' });
+      if (data.code !== 200) {
+        return this.$message.error('璇锋眰鍗曚綅鎶ラ敊');
+      }
+
+      this.depList = this.treeData(data.result);
+    },
+    treeData(source) {
+      let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
+      return cloneData.filter((father) => {
+        // 寰幆鎵�鏈夐」
+        let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
+        branchArr.length > 0 ? (father.children = branchArr) : ''; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
+      });
+    },
+    // 閮ㄩ棬鏍戝崟閫�
+    treeCheck(node, list) {
+      //node 璇ヨ妭鐐规墍瀵瑰簲鐨勫璞°�乴ist 鏍戠洰鍓嶇殑閫変腑鐘舵�佸璞�
+      //閫変腑浜嬩欢鍦ㄩ�変腑鍚庢墽琛岋紝褰搇is涓湁涓や釜閫変腑鏃讹紝浣跨敤setCheckedKeys鏂规硶锛岄�変腑涓�涓妭鐐�
+
+      if (list.checkedNodes.length > 0) {
+        this.listData.menuid = node.id;
+        this.debid = node.id;
+        this.roleid = node.id;
+        this.getRole();
+        if (list.checkedKeys.length == 2) {
+          //鍗曢�夊疄鐜�
+          this.$refs.treeForm.setCheckedKeys([node.id]);
+        }
+      } else {
+        this.debid = null;
+        this.roleid = null;
+        this.tableData = [];
+        this.usertableData = [];
+      }
+    },
+
+    addConfirm() {
+      this.$confirm('纭畾鏄惁鏂板', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+      })
+        .then(async () => {
+          let arr = [];
+          this.addmultipleSelection.forEach((e) => {
+            arr.push({ menuid: this.roleid, authid: e.id });
+          });
+
+          const data = await menuAuthinserts(arr);
+          if (data.code !== 200) {
+            return this.$message.error('鏂板澶辫触');
+          }
+          this.$message({
+            type: 'success',
+            message: '鏂板鎴愬姛!',
+          });
+          this.dialogTableVisible = false;
+          this.getRole();
+        })
+        .catch(() => {});
+    },
+    adduser() {
+      this.dialogTableVisible = true;
+      this.getadduserList();
+    },
+    //鐢ㄦ埛鍒犻櫎
+    async deletesUser() {
+      let arr = [];
+      this.usermultipleSelection.forEach((e) => {
+        arr.push(e.id);
+      });
+      const data = await menuAuthDeletes({ ids: arr.toString() });
+      if (data.code !== 200) {
+        return this.$message.error('鍒犻櫎澶辫触');
+      }
+      this.$message({
+        message: '鍒犻櫎鎴愬姛',
+        type: 'success',
+      });
+      this.getRole();
+    },
+
+    async getadduserList() {
+      this.addlistData.menuid = this.roleid;
+      const data = await select_AuthMenu_ByPageAndCount(this.addlistData);
+      if (data.code !== 200) {
+        return this.$message.error('鏂板鐢ㄦ埛鍒楄〃璇锋眰閿欒');
+      }
+      this.gridData = data.result;
+      this.addcount = data.count;
+    },
+
+    //鐢ㄦ埛琛ㄥ閫�
+    handleSelectionChange(val) {
+      this.usermultipleSelection = val;
+    },
+    //鏂板鐢ㄦ埛琛ㄥ閫�
+    addhandleSelectionChange(val) {
+      this.addmultipleSelection = val;
+    },
+    // 鏂板鐢ㄦ埛琛ㄥ垎椤�
+    addhandleSizeChange(val) {
+      this.addlistData.pageSize = val;
+      this.getadduserList();
+    },
+    // 鏂板鐢ㄦ埛琛ㄥ垎椤�
+    addhandleCurrentChange(val) {
+      this.addlistData.pageIndex = val;
+      this.getadduserList();
+    },
+    // 鐢ㄦ埛琛ㄥ垎椤�
+    userhandleSizeChange(val) {
+      this.userlistData.pageSize = val;
+      this.getRole();
+    },
+    // 鐢ㄦ埛琛ㄥ垎椤�
+    userhandleCurrentChange(val) {
+      this.userlistData.pageIndex = val;
+      this.getRole();
+    },
+
+    // 瑙掕壊琛ㄨ姹�
+    async getRole() {
+      const data = await select_menuAuth_ByPageAndCount(this.listData);
+      if (data.code !== 200) {
+        return this.$message.error('鐢ㄦ埛瑙掕壊璇锋眰閿欒');
+      }
+      this.tableData = data.result;
+      this.usercount = data.count;
+    },
+  },
+  created() {
+    this.getMenuTree();
+  },
+};
+</script>
+<style lang="less" scoped>
+//@import url(); 寮曞叆鍏叡css绫�
+.menuSettings_box {
+  //   background: rgb(240, 242, 245);
+  border-radius: 10px;
+  height: 100%;
+  padding: 10px;
+  box-sizing: border-box;
+  display: flex;
+  .menuSettings_tree {
+    position: relative;
+    width: 30%;
+    height: 100%;
+    background: rgb(240, 242, 245);
+    padding: 20px;
+    border-radius: 10px;
+    box-sizing: border-box;
+    overflow: auto;
+    .saveBtn {
+      position: absolute;
+      left: 250px;
+      top: 23px;
+    }
+    .menuTreeBox {
+      height: 90%;
+      overflow: auto;
+      .el-tree {
+        background: transparent;
+        font-size: 15px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #000000;
+        // /deep/ .el-tree-node__label {
+        //   font-size: 18px;
+        // }
+        /deep/ .el-tree-node {
+          padding-top: 10px;
+          // padding-bottom: 10px;
+        }
+        /deep/ .el-tree-node:focus > .el-tree-node__content {
+          background-color: #b9b9b9;
+        }
+        /deep/ .el-tree-node__content:hover {
+          background-color: rgb(153, 153, 153);
+        }
+        .btnBox {
+          margin-left: 5px;
+          .el-button + .el-button {
+            margin-left: 5px;
+          }
+        }
+      }
+    }
+  }
+  .menuSettings {
+    width: 70%;
+    border-radius: 10px;
+    background: rgb(240, 242, 245);
+    margin-left: 10px;
+    height: 100%;
+    padding: 20px;
+    box-sizing: border-box;
+    .title_box {
+      background: #fff;
+      padding: 10px;
+      margin-bottom: 24px;
+      display: flex;
+      border-radius: 10px;
+      border: 1px solid rgb(202, 201, 204);
+      box-sizing: border-box;
+    }
+  }
+  .table_box {
+    padding: 10px;
+    background: #fff;
+    border-radius: 5px;
+    border: 1px solid rgb(202, 201, 204);
+    overflow: auto;
+    height: 85%;
+  }
+  .divider {
+    margin-top: 8px;
+  }
+}
+.el-table,
+.el-table /deep/ .el-table__expanded-cell {
+  background-color: transparent;
+}
+
+.el-table /deep/ th,
+.el-table /deep/ tr {
+  background-color: transparent;
+}
+</style>
diff --git a/src/views/AuthorizationManagement/roleMenuAuthorization.vue b/src/views/AuthorizationManagement/roleMenuAuthorization.vue
new file mode 100644
index 0000000..ef60fad
--- /dev/null
+++ b/src/views/AuthorizationManagement/roleMenuAuthorization.vue
@@ -0,0 +1,576 @@
+<template>
+  <div class="menuSettings_box">
+    <!-- 瑙掕壊锛屽崟浣� -->
+    <div
+      class="menuSettings_tree"
+      style="margin-left: 10px; width: calc(50% - 172px)"
+    >
+      <My-bread
+        :list="[
+          `${$t('operatManage.operatManage')}`,
+          `${$t('operatManage.RoleMenuAuthorization')}`,
+        ]"
+      ></My-bread>
+
+      <el-divider />
+      <el-form ref="form" :model="selFrom">
+        <el-form-item label="鍗曚綅">
+          <el-select
+            ref="multiSelect"
+            style="width: 300px"
+            v-model="selFrom.name"
+            placeholder="璇烽�夋嫨鍗曚綅鍚嶇О..."
+            @change="chooseCustom"
+          >
+            <el-option
+              :value="selectTree"
+              class="setstyle"
+              style="overflow: auto; height: 200px"
+              disabled
+            >
+              <el-tree
+                :data="depList"
+                :props="defaultProps"
+                :check-on-click-node="true"
+                :check-strictly="true"
+                node-key="id"
+                ref="treeForm"
+                @node-click="addAdminHandleNodeClick"
+              >
+              </el-tree>
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div style="height: 75%">
+        <el-table
+          :data="tableData"
+          style="width: 100%"
+          @row-click="singleElection"
+          highlight-current-row
+          height="85%"
+          :header-cell-style="{
+            background: 'transparent',
+          }"
+        >
+          <el-table-column align="center" width="55">
+            <template slot-scope="scope">
+              <!-- 鍙互鎵嬪姩鐨勪慨鏀筶abel鐨勫�硷紝浠庤�屾帶鍒堕�夋嫨鍝竴椤� -->
+              <el-radio
+                class="radio"
+                v-model="templateSelection"
+                :label="scope.row.id"
+                >&nbsp;</el-radio
+              >
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            type="index"
+            :label="$t('dataManage.styleObj.index')"
+          />
+          <el-table-column
+            prop="name"
+            :label="$t('operatManage.UserRoleAuthorizationObj.name')"
+          >
+          </el-table-column>
+        </el-table>
+      </div>
+      <div style="margin-top: 20px; text-align: center" class="pagination_box">
+        <el-pagination
+          @size-change="dephandleSizeChange"
+          @current-change="dephandleCurrentChange"
+          :current-page="roleDepListData.pageIndex"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="roleDepListData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="roleDepCount"
+        >
+        </el-pagination>
+      </div>
+    </div>
+
+    <!-- 鑿滃崟琛� -->
+    <div
+      class="menuSettings_tree"
+      style="margin-left: 10px; width: calc(50% - 172px)"
+    >
+      <div
+        style="
+          font-size: 14px;
+          color: #606266;
+          line-height: 1;
+          cursor: text;
+          position: relative;
+          top: 5px;
+          margin-left: 10px;
+          display: flex;
+          align-items: center;
+        "
+      >
+        <span>
+          {{
+            $t('operatManage.UserRoleAuthorizationObj.PermissionTable')
+          }}</span
+        >
+      </div>
+      <el-divider />
+      <div class="menuTreeBox">
+        <el-tree
+          :data="menuList"
+          :props="defaultMenuProps"
+          :show-checkbox="true"
+          :check-on-click-node="true"
+          :check-strictly="true"
+          node-key="id"
+          @check="menuTreeCheck"
+          ref="treeForm"
+        >
+        </el-tree>
+      </div>
+    </div>
+
+    <div class="menuSettings">
+      <!-- <div class="title_box">
+        <h4>璇︾粏淇℃伅</h4>
+      </div> -->
+      <div
+        style="
+          font-size: 14px;
+          color: #606266;
+          line-height: 1;
+          cursor: text;
+          position: relative;
+          top: 5px;
+          margin-left: 10px;
+          display: flex;
+          align-items: center;
+        "
+      >
+        <span>
+          {{
+            $t('operatManage.UserRoleAuthorizationObj.PermissionTable')
+          }}</span
+        >
+        <div class="btn" style="margin-left: auto">
+          <el-button
+            type="primary"
+            icon="el-icon-circle-plus-outline"
+            size="small"
+            @click="adduser"
+            :disabled="menuid == null ? true : false"
+            >{{ $t('operatManage.UserRoleAuthorizationObj.Added') }}</el-button
+          >
+          <el-button
+            type="danger"
+            icon="el-icon-delete"
+            size="small"
+            @click="deletesUser"
+            :disabled="menuid == null ? true : false"
+            >{{ $t('operatManage.UserRoleAuthorizationObj.delete') }}</el-button
+          >
+        </div>
+      </div>
+      <el-divider class="divider" />
+
+      <el-table
+        :data="menuTableData"
+        stripe
+        style="width: 100%"
+        height="85%"
+        @selection-change="handleSelectionChange"
+        :header-cell-style="{
+          background: 'transparent',
+        }"
+      >
+        <el-table-column type="selection" width="55"> </el-table-column>
+        <el-table-column
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+        />
+        <el-table-column
+          prop="name"
+          :label="$t('operatManage.UserRoleAuthorizationObj.name')"
+        >
+        </el-table-column>
+      </el-table>
+
+      <div style="margin-top: 20px; text-align: center" class="pagination_box">
+        <el-pagination
+          @size-change="authhandleSizeChange"
+          @current-change="authhandleCurrentChange"
+          :current-page="rolMenuListData.pageIndex"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="rolMenuListData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="roleMenuCount"
+        >
+        </el-pagination>
+      </div>
+    </div>
+    <el-dialog
+      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
+      :visible.sync="dialogTableVisible"
+    >
+      <el-table
+        :data="gridData"
+        height="40vh"
+        @selection-change="addhandleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"> </el-table-column>
+        <el-table-column
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+        />
+        <el-table-column
+          prop="name"
+          :label="$t('operatManage.UserRoleAuthorizationObj.name')"
+        >
+        </el-table-column>
+      </el-table>
+      <div style="margin-top: 20px; text-align: center" class="pagination_box">
+        <el-pagination
+          @size-change="addhandleSizeChange"
+          @current-change="addhandleCurrentChange"
+          :current-page="addlistData.pageIndex"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="addlistData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="addcount"
+        >
+        </el-pagination>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogTableVisible = false">{{
+          $t('dataManage.dictionaryManageObj.cancel')
+        }}</el-button>
+        <el-button type="primary" @click="addConfirm">{{
+          $t('dataManage.dictionaryManageObj.confirm')
+        }}</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import MyBread from '../../components/MyBread.vue';
+import {
+  queryDepTree,
+  select_Role_ByPageAndCount,
+  selectMenuRecursive,
+  roleMenuAuthelectByPageForRole,
+  menuAuthSelectByPageForRole,
+  roleMenuAuthInserts,
+  roleMenuAuthDeletes,
+} from '../../api/api';
+export default {
+  //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {
+    MyBread,
+  },
+
+  data() {
+    return {
+      dialogTableVisible: false,
+      selFrom: { name: '' },
+      selectTree: '',
+      depList: [], //el鏍戞暟鎹�
+      defaultProps: {
+        children: 'children',
+        label: 'name',
+      }, //鏍戠粦瀹氬璞�
+      defaultMenuProps: {
+        children: 'children',
+        label: 'cnName',
+      }, //鑿滃崟琛ㄧ粦瀹氭潈闄�
+      depid: null, //鍗曚綅ID
+      roleDepListData: {
+        pageIndex: 1,
+        pageSize: 10,
+      },
+      rolMenuListData: {
+        pageIndex: 1,
+        pageSize: 10,
+      },
+      addlistData: { pageIndex: 1, pageSize: 10 },
+      addcount: 0,
+      roleDepCount: 0,
+      roleMenuCount: 0,
+      roleDepCheckList: [],
+
+      tableData: [], //瑙掕壊鍒楄〃
+      templateSelection: '',
+      menuList: [],
+      roleid: null,
+      menuid: null,
+      menuTableData: [],
+      gridData: [],
+      addmultipleSelection: [],
+      usermultipleSelection: [],
+    };
+  },
+  methods: {
+    async getDepTree() {
+      //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢�
+      const data = await queryDepTree();
+      if (data.code !== 200) {
+        return this.$message.error('璇锋眰鍗曚綅鎶ラ敊');
+      }
+      this.depList = this.treeData(data.result);
+    },
+    async getMenuTree() {
+      const data = await selectMenuRecursive({ name: '绠¢亾鍩虹澶ф暟鎹钩鍙�' });
+      if (data.code !== 200) {
+        return this.$message.error('璇锋眰鍗曚綅鎶ラ敊');
+      }
+
+      this.menuList = this.treeData(data.result);
+    },
+    treeData(source) {
+      let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
+      return cloneData.filter((father) => {
+        // 寰幆鎵�鏈夐」
+        let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
+        branchArr.length > 0 ? (father.children = branchArr) : ''; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
+      });
+    },
+    //鏍戦�変腑鑺傜偣
+    addAdminHandleNodeClick(e) {
+      this.roleDepCheckList = [];
+      this.templateSelection = '';
+      this.depid = e.id;
+      this.selFrom.name = e.name;
+      this.selectTree = e.name;
+      this.getRoleDep();
+      this.getMenuTree();
+    },
+    menuTreeCheck(node, list) {
+      if (list.checkedNodes.length > 0) {
+        this.rolMenuListData.menuid = node.id;
+        this.menuid = node.id;
+        this.rolMenuListData.roleid = this.roleid;
+        this.getRoleMenu();
+      } else {
+        this.menuid = null;
+      }
+    },
+    async getRoleMenu() {
+      const data = await roleMenuAuthelectByPageForRole(this.rolMenuListData);
+      if (data.code !== 200) {
+        return this.$message.error('瑙掕壊鑿滃崟璇锋眰閿欒');
+      }
+      this.menuTableData = data.result;
+      this.roleMenuCount = data.count;
+    },
+    async getRoleDep() {
+      this.roleDepListData.depid = this.depid;
+      const data = await select_Role_ByPageAndCount(this.roleDepListData);
+      if (data.code !== 200) {
+        return this.$message.error('鐢ㄦ埛瑙掕壊璇锋眰閿欒');
+      }
+      this.tableData = data.result;
+      this.roleDepCount = data.count;
+    },
+    async getadduserList() {
+      this.addlistData.roleid = this.roleid;
+      this.addlistData.menuid = this.menuid;
+      const data = await menuAuthSelectByPageForRole(this.addlistData);
+      if (data.code !== 200) {
+        return this.$message.error('鑿滃崟鏉冮檺鍒楄〃璇锋眰閿欒');
+      }
+      this.gridData = data.result;
+      this.addcount = data.count;
+    },
+    singleElection(row) {
+      this.templateSelection = row.id;
+      this.roleid = row.id;
+      this.roleDepCheckList = this.tableData.filter(
+        (item) => item.id === row.id
+      );
+    },
+    //涓嬫媺妗嗛�変腑鍚庤嚜鍔ㄥ叧闂�
+    chooseCustom() {
+      setTimeout(() => {
+        this.$refs.multiSelect.blur();
+      }, 50);
+    },
+    dephandleSizeChange() {
+      this.roleDepListData.pageSize = val;
+      this.getDepTree();
+    },
+    dephandleCurrentChange() {
+      this.roleDepListData.pageIndex = val;
+      this.getDepTree();
+    },
+    authhandleSizeChange() {
+      this.roleDepListData.pageSize = val;
+      this.getRoleMenu();
+    },
+    authhandleCurrentChange() {
+      this.roleDepListData.pageIndex = val;
+      this.getRoleMenu();
+    },
+    // 鏂板鐢ㄦ埛琛ㄥ垎椤�
+    addhandleSizeChange(val) {
+      this.addlistData.pageSize = val;
+      this.getadduserList();
+    },
+    // 鏂板鐢ㄦ埛琛ㄥ垎椤�
+    addhandleCurrentChange(val) {
+      this.addlistData.pageIndex = val;
+      this.getadduserList();
+    },
+    addhandleSelectionChange(val) {
+      this.addmultipleSelection = val;
+    },
+    handleSelectionChange(val) {
+      this.usermultipleSelection = val;
+    },
+    adduser() {
+      this.dialogTableVisible = true;
+      this.getadduserList();
+    },
+    async deletesUser() {
+      let arr = [];
+      this.usermultipleSelection.forEach((e) => {
+        arr.push(e.id);
+      });
+      const data = await roleMenuAuthDeletes({ ids: arr.toString() });
+      if (data.code !== 200) {
+        return this.$message.error('鍒犻櫎澶辫触');
+      }
+      this.$message({
+        message: '鍒犻櫎鎴愬姛',
+        type: 'success',
+      });
+      this.getRoleMenu();
+    },
+    addConfirm() {
+      this.$confirm('纭畾鏄惁鏂板', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+      })
+        .then(async () => {
+          let arr = [];
+          this.addmultipleSelection.forEach((e) => {
+            arr.push({ menuAuthId: e.id, roleid: this.roleid });
+          });
+          const data = await roleMenuAuthInserts(arr);
+          if (data.code !== 200) {
+            return this.$message.error('鏂板澶辫触');
+          }
+
+          this.$message({
+            type: 'success',
+            message: '鏂板鎴愬姛!',
+          });
+          this.dialogTableVisible = false;
+          this.getRoleMenu();
+        })
+        .catch(() => {});
+    },
+  },
+  created() {
+    this.getDepTree();
+    this.getMenuTree();
+  },
+};
+</script>
+<style lang="less" scoped>
+//@import url(); 寮曞叆鍏叡css绫�
+.menuSettings_box {
+  //   background: rgb(240, 242, 245);
+  border-radius: 10px;
+  height: 100%;
+  padding: 10px;
+  box-sizing: border-box;
+  display: flex;
+  .menuSettings_tree {
+    position: relative;
+    width: 344px;
+    height: 100%;
+    background: rgb(240, 242, 245);
+    padding: 20px;
+    border-radius: 10px;
+    box-sizing: border-box;
+    overflow: auto;
+    .saveBtn {
+      position: absolute;
+      left: 250px;
+      top: 23px;
+    }
+    .menuTreeBox {
+      height: 90%;
+      overflow: auto;
+      .el-tree {
+        background: transparent;
+        font-size: 15px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #000000;
+        // /deep/ .el-tree-node__label {
+        //   font-size: 18px;
+        // }
+        /deep/ .el-tree-node {
+          padding-top: 10px;
+          // padding-bottom: 10px;
+        }
+        /deep/ .el-tree-node:focus > .el-tree-node__content {
+          background-color: #b9b9b9;
+        }
+        /deep/ .el-tree-node__content:hover {
+          background-color: rgb(153, 153, 153);
+        }
+        .btnBox {
+          margin-left: 5px;
+          .el-button + .el-button {
+            margin-left: 5px;
+          }
+        }
+      }
+    }
+  }
+  .menuSettings {
+    width: calc(50% - 172px);
+    border-radius: 10px;
+    background: rgb(240, 242, 245);
+    margin-left: 10px;
+    height: 100%;
+    padding: 20px;
+    box-sizing: border-box;
+    .title_box {
+      background: #fff;
+      padding: 10px;
+      margin-bottom: 24px;
+      display: flex;
+      border-radius: 10px;
+      border: 1px solid rgb(202, 201, 204);
+      box-sizing: border-box;
+    }
+  }
+  .table_box {
+    padding: 10px;
+    background: #fff;
+    border-radius: 5px;
+    border: 1px solid rgb(202, 201, 204);
+    overflow: auto;
+    height: 85%;
+  }
+  .divider {
+    margin-top: 8px;
+  }
+}
+.el-table,
+.el-table /deep/ .el-table__expanded-cell {
+  background-color: transparent;
+}
+
+.el-table /deep/ th,
+.el-table /deep/ tr {
+  background-color: transparent;
+}
+</style>
diff --git a/src/views/AuthorizationManagement/roleResAuthorization.vue b/src/views/AuthorizationManagement/roleResAuthorization.vue
new file mode 100644
index 0000000..619b51f
--- /dev/null
+++ b/src/views/AuthorizationManagement/roleResAuthorization.vue
@@ -0,0 +1,541 @@
+<template>
+  <div class="menuSettings_box">
+    <div class="menuSettings_tree">
+      <My-bread
+        :list="[
+          `${$t('operatManage.operatManage')}`,
+          `${$t('operatManage.RoleResAuthorization')}`,
+        ]"
+      ></My-bread>
+
+      <el-divider />
+      <div class="menuTreeBox">
+        <el-tree
+          :data="depList"
+          :props="defaultProps"
+          :show-checkbox="true"
+          :check-on-click-node="true"
+          :check-strictly="true"
+          node-key="id"
+          @check="treeCheck"
+          ref="treeForm"
+        >
+        </el-tree>
+      </div>
+    </div>
+    <div
+      class="menuSettings_tree"
+      style="margin-left: 10px; width: calc(50% - 172px)"
+    >
+      <div
+        style="
+          font-size: 14px;
+          color: #606266;
+          line-height: 1;
+          cursor: text;
+          position: relative;
+          top: 10px;
+          margin-left: 10px;
+        "
+      >
+        {{ $t('operatManage.UserRoleAuthorizationObj.RoleTable') }}
+      </div>
+      <el-divider />
+      <el-table
+        :data="tableData"
+        style="width: 100%"
+        @row-click="singleElection"
+        highlight-current-row
+        height="85%"
+        :header-cell-style="{
+          background: 'transparent',
+        }"
+      >
+        <el-table-column align="center" width="55">
+          <template slot-scope="scope">
+            <!-- 鍙互鎵嬪姩鐨勪慨鏀筶abel鐨勫�硷紝浠庤�屾帶鍒堕�夋嫨鍝竴椤� -->
+            <el-radio
+              class="radio"
+              v-model="templateSelection"
+              :label="scope.row.id"
+              >&nbsp;</el-radio
+            >
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+        />
+        <el-table-column
+          prop="name"
+          :label="$t('operatManage.UserRoleAuthorizationObj.name')"
+        >
+        </el-table-column>
+      </el-table>
+      <div style="text-align: center; margin-top: 20px">
+        <el-pagination
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="listData.pageIndex"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="userlistData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="count"
+        >
+        </el-pagination>
+      </div>
+    </div>
+    <div class="menuSettings">
+      <!-- <div class="title_box">
+        <h4>璇︾粏淇℃伅</h4>
+      </div> -->
+      <div
+        style="
+          font-size: 14px;
+          color: #606266;
+          line-height: 1;
+          cursor: text;
+          position: relative;
+          top: 5px;
+          margin-left: 10px;
+          display: flex;
+          align-items: center;
+        "
+      >
+        <span>
+          {{ $t('operatManage.UserRoleAuthorizationObj.userTable') }}</span
+        >
+        <div class="btn" style="margin-left: auto">
+          <el-button
+            type="primary"
+            icon="el-icon-circle-plus-outline"
+            size="small"
+            :disabled="roleid == null ? true : false"
+            @click="adduser"
+            >{{ $t('operatManage.UserRoleAuthorizationObj.Added') }}</el-button
+          >
+          <el-button
+            type="danger"
+            icon="el-icon-delete"
+            size="small"
+            @click="deletesUser"
+            :disabled="roleid == null ? true : false"
+            >{{ $t('operatManage.UserRoleAuthorizationObj.delete') }}</el-button
+          >
+        </div>
+      </div>
+      <el-divider class="divider" />
+
+      <el-table
+        :data="usertableData"
+        stripe
+        style="width: 100%"
+        height="85%"
+        @selection-change="handleSelectionChange"
+        :header-cell-style="{
+          background: 'transparent',
+        }"
+      >
+        <el-table-column type="selection" width="55"> </el-table-column>
+        <el-table-column
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+        />
+        <el-table-column
+          prop="resName"
+          :label="$t('operatManage.UserRoleAuthorizationObj.name')"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="server"
+          :label="$t('operatManage.UserRoleAuthorizationObj.server')"
+        >
+        </el-table-column>
+      </el-table>
+
+      <div style="margin-top: 20px; text-align: center" class="pagination_box">
+        <el-pagination
+          @size-change="userhandleSizeChange"
+          @current-change="userhandleCurrentChange"
+          :current-page="userlistData.pageIndex"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="userlistData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="usercount"
+        >
+        </el-pagination>
+      </div>
+    </div>
+    <el-dialog
+      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
+      :visible.sync="dialogTableVisible"
+    >
+      <el-table
+        :data="gridData"
+        height="40vh"
+        @selection-change="addhandleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"> </el-table-column>
+        <el-table-column
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+        />
+        <el-table-column
+          prop="name"
+          :label="$t('operatManage.UserRoleAuthorizationObj.name')"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="server"
+          :label="$t('operatManage.UserRoleAuthorizationObj.server')"
+        >
+        </el-table-column>
+      </el-table>
+      <div style="margin-top: 20px; text-align: center" class="pagination_box">
+        <el-pagination
+          @size-change="addhandleSizeChange"
+          @current-change="addhandleCurrentChange"
+          :current-page="addlistData.pageIndex"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="addlistData.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="addcount"
+        >
+        </el-pagination>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogTableVisible = false">{{
+          $t('dataManage.dictionaryManageObj.cancel')
+        }}</el-button>
+        <el-button type="primary" @click="addConfirm">{{
+          $t('dataManage.dictionaryManageObj.confirm')
+        }}</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import MyBread from '../../components/MyBread.vue';
+import {
+  queryDepTree,
+  select_Role_ByPageAndCount,
+  roleReselectByPageAndCount,
+  roleResDeletes,
+  resSelectCountForRole,
+  roleResInserts,
+} from '../../api/api';
+export default {
+  //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {
+    MyBread,
+  },
+
+  data() {
+    return {
+      addcount: 0,
+      gridData: [],
+      addlistData: {
+        pageIndex: 1,
+        pageSize: 10,
+      },
+      dialogTableVisible: false,
+      usertableData: [],
+      userlistData: {
+        pageIndex: 1,
+        pageSize: 10,
+      },
+      usercount: 0,
+      tableData: [],
+      //   褰撳墠閫夋嫨鐨勮鐨刬d
+      templateSelection: '',
+      //   褰撳墠閫夋嫨鐨勮鐨勬暟鎹�
+      checkList: [],
+
+      defaultProps: {
+        children: 'children',
+        label: 'name',
+      },
+      oriData: [], //鍘熷鏍戞暟鎹�
+      depList: [], //el鏍戞暟鎹�
+      backUpData: {},
+      formLabelWidth: '170px',
+      listData: {
+        pageIndex: 1,
+        pageSize: 10,
+      },
+      count: 0,
+      usermultipleSelection: [],
+      debid: null,
+      roleid: null,
+      addmultipleSelection: [],
+    };
+  },
+  methods: {
+    addConfirm() {
+      this.$confirm('纭畾鏄惁鏂板', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+      })
+        .then(async () => {
+          let arr = [];
+          this.addmultipleSelection.forEach((e) => {
+            arr.push({ resid: e.id, roleid: this.roleid });
+          });
+          const data = await roleResInserts(arr);
+          if (data.code !== 200) {
+            return this.$message.error('鏂板澶辫触');
+          }
+
+          this.$message({
+            type: 'success',
+            message: '鏂板鎴愬姛!',
+          });
+          this.dialogTableVisible = false;
+          this.getuserList();
+        })
+        .catch(() => {});
+    },
+    adduser() {
+      this.dialogTableVisible = true;
+      this.getadduserList();
+    },
+    //鐢ㄦ埛鍒犻櫎
+    async deletesUser() {
+      let arr = [];
+      this.usermultipleSelection.forEach((e) => {
+        arr.push(e.id);
+      });
+      const data = await roleResDeletes({ ids: arr.toString() });
+      if (data.code !== 200) {
+        return this.$message.error('鍒犻櫎澶辫触');
+      }
+      this.$message({
+        message: '鍒犻櫎鎴愬姛',
+        type: 'success',
+      });
+      this.getuserList();
+    },
+    //鐢ㄦ埛琛ㄥ閫�
+    handleSelectionChange(val) {
+      this.usermultipleSelection = val;
+    },
+    //鏂板鐢ㄦ埛琛ㄥ閫�
+    addhandleSelectionChange(val) {
+      this.addmultipleSelection = val;
+    },
+    // 鏂板鐢ㄦ埛琛ㄥ垎椤�
+    addhandleSizeChange(val) {
+      this.addlistData.pageSize = val;
+      this.getadduserList();
+    },
+    // 鏂板鐢ㄦ埛琛ㄥ垎椤�
+    addhandleCurrentChange(val) {
+      this.addlistData.pageIndex = val;
+      this.getadduserList();
+    },
+    // 鐢ㄦ埛琛ㄥ垎椤�
+    userhandleSizeChange(val) {
+      this.userlistData.pageSize = val;
+      this.getuserList();
+    },
+    // 鐢ㄦ埛琛ㄥ垎椤�
+    userhandleCurrentChange(val) {
+      this.userlistData.pageIndex = val;
+      this.getuserList();
+    },
+    // 瑙掕壊琛ㄥ垎椤�
+    handleSizeChange(val) {
+      this.listData.pageSize = val;
+      this.getRole();
+    },
+    // 瑙掕壊琛ㄥ垎椤�
+    handleCurrentChange(val) {
+      this.listData.pageIndex = val;
+      this.getRole();
+    },
+    // 瑙掕壊鍗曢��
+    singleElection(row) {
+      this.templateSelection = row.id;
+      this.checkList = this.tableData.filter((item) => item.id === row.id);
+      this.userlistData.roleid = row.id;
+      this.roleid = row.id;
+      this.getuserList();
+    },
+    // 閮ㄩ棬璇锋眰
+    async getMenuTree() {
+      //鑾峰彇鐩綍鏍戞渶澶D锛屾柊寤鸿妭鐐逛娇鐢�
+      const data = await queryDepTree();
+
+      if (data.code !== 200) {
+        return this.$message.error('璇锋眰鍗曚綅鎶ラ敊');
+      }
+      this.depList = this.treeData(data.result);
+    },
+    treeData(source) {
+      let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
+      return cloneData.filter((father) => {
+        // 寰幆鎵�鏈夐」
+        let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
+        branchArr.length > 0 ? (father.children = branchArr) : ''; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
+      });
+    },
+    // 閮ㄩ棬鏍戝崟閫�
+    treeCheck(node, list) {
+      //node 璇ヨ妭鐐规墍瀵瑰簲鐨勫璞°�乴ist 鏍戠洰鍓嶇殑閫変腑鐘舵�佸璞�
+      //閫変腑浜嬩欢鍦ㄩ�変腑鍚庢墽琛岋紝褰搇is涓湁涓や釜閫変腑鏃讹紝浣跨敤setCheckedKeys鏂规硶锛岄�変腑涓�涓妭鐐�
+
+      if (list.checkedNodes.length > 0) {
+        this.listData.depid = node.id;
+        this.debid = node.id;
+        this.getRole();
+        if (list.checkedKeys.length == 2) {
+          //鍗曢�夊疄鐜�
+          this.$refs.treeForm.setCheckedKeys([node.id]);
+        }
+      } else {
+        this.debid = null;
+        this.roleid = null;
+        this.tableData = [];
+        this.usertableData = [];
+      }
+    },
+    async getadduserList() {
+      this.addlistData.roleid = this.roleid;
+
+      // this.addlistData.debid = this.debid;
+      const data = await resSelectCountForRole(this.addlistData);
+      if (data.code !== 200) {
+        return this.$message.error('鏂板璧勬簮鍒楄〃璇锋眰閿欒');
+      }
+
+      this.gridData = data.result;
+      this.addcount = data.count;
+    },
+    // 鐢ㄦ埛琛ㄨ姹�
+    async getuserList() {
+      const data = await roleReselectByPageAndCount(this.userlistData);
+      if (data.code !== 200) {
+        return this.$message.error('鐢ㄦ埛璧勬簮鍒楄〃璇锋眰閿欒');
+      }
+      this.usertableData = data.result;
+      this.usercount = data.count;
+    },
+    // 瑙掕壊琛ㄨ姹�
+    async getRole() {
+      const data = await select_Role_ByPageAndCount(this.listData);
+      if (data.code !== 200) {
+        return this.$message.error('鐢ㄦ埛瑙掕壊璇锋眰閿欒');
+      }
+      this.tableData = data.result;
+      this.count = data.count;
+      if (data.result == null) {
+        this.usertableData = [];
+        this.usercount = 0;
+      }
+    },
+  },
+  created() {
+    this.getMenuTree();
+  },
+};
+</script>
+<style lang="less" scoped>
+//@import url(); 寮曞叆鍏叡css绫�
+.menuSettings_box {
+  //   background: rgb(240, 242, 245);
+  border-radius: 10px;
+  height: 100%;
+  padding: 10px;
+  box-sizing: border-box;
+  display: flex;
+  .menuSettings_tree {
+    position: relative;
+    width: 344px;
+    height: 100%;
+    background: rgb(240, 242, 245);
+    padding: 20px;
+    border-radius: 10px;
+    box-sizing: border-box;
+    overflow: auto;
+    .saveBtn {
+      position: absolute;
+      left: 250px;
+      top: 23px;
+    }
+    .menuTreeBox {
+      height: 90%;
+      overflow: auto;
+      .el-tree {
+        background: transparent;
+        font-size: 15px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #000000;
+        // /deep/ .el-tree-node__label {
+        //   font-size: 18px;
+        // }
+        /deep/ .el-tree-node {
+          padding-top: 10px;
+          // padding-bottom: 10px;
+        }
+        /deep/ .el-tree-node:focus > .el-tree-node__content {
+          background-color: #b9b9b9;
+        }
+        /deep/ .el-tree-node__content:hover {
+          background-color: rgb(153, 153, 153);
+        }
+        .btnBox {
+          margin-left: 5px;
+          .el-button + .el-button {
+            margin-left: 5px;
+          }
+        }
+      }
+    }
+  }
+  .menuSettings {
+    width: calc(50% - 172px);
+    border-radius: 10px;
+    background: rgb(240, 242, 245);
+    margin-left: 10px;
+    height: 100%;
+    padding: 20px;
+    box-sizing: border-box;
+    .title_box {
+      background: #fff;
+      padding: 10px;
+      margin-bottom: 24px;
+      display: flex;
+      border-radius: 10px;
+      border: 1px solid rgb(202, 201, 204);
+      box-sizing: border-box;
+    }
+  }
+  .table_box {
+    padding: 10px;
+    background: #fff;
+    border-radius: 5px;
+    border: 1px solid rgb(202, 201, 204);
+    overflow: auto;
+    height: 85%;
+  }
+  .divider {
+    margin-top: 8px;
+  }
+}
+.el-table,
+.el-table /deep/ .el-table__expanded-cell {
+  background-color: transparent;
+}
+
+.el-table /deep/ th,
+.el-table /deep/ tr {
+  background-color: transparent;
+}
+</style>
diff --git a/src/views/AuthorizationManagement/userRoleAuthorization.vue b/src/views/AuthorizationManagement/userRoleAuthorization.vue
index 9d9333c..292403f 100644
--- a/src/views/AuthorizationManagement/userRoleAuthorization.vue
+++ b/src/views/AuthorizationManagement/userRoleAuthorization.vue
@@ -38,7 +38,7 @@
           margin-left: 10px;
         "
       >
-        {{ $t("operatManage.UserRoleAuthorizationObj.RoleTable") }}
+        {{ $t('operatManage.UserRoleAuthorizationObj.RoleTable') }}
       </div>
       <el-divider />
       <el-table
@@ -63,10 +63,11 @@
           </template>
         </el-table-column>
         <el-table-column
-          prop="id"
-          :label="$t('operatManage.UserRoleAuthorizationObj.serialNumber')"
-        >
-        </el-table-column>
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+          width="70px"
+        />
         <el-table-column
           prop="name"
           :label="$t('operatManage.UserRoleAuthorizationObj.name')"
@@ -104,7 +105,7 @@
         "
       >
         <span>
-          {{ $t("operatManage.UserRoleAuthorizationObj.userTable") }}</span
+          {{ $t('operatManage.UserRoleAuthorizationObj.userTable') }}</span
         >
         <div class="btn" style="margin-left: auto">
           <el-button
@@ -113,7 +114,7 @@
             size="small"
             :disabled="roleid == null ? true : false"
             @click="adduser"
-            >{{ $t("operatManage.UserRoleAuthorizationObj.Added") }}</el-button
+            >{{ $t('operatManage.UserRoleAuthorizationObj.Added') }}</el-button
           >
           <el-button
             type="danger"
@@ -121,7 +122,7 @@
             size="small"
             @click="deletesUser"
             :disabled="roleid == null ? true : false"
-            >{{ $t("operatManage.UserRoleAuthorizationObj.delete") }}</el-button
+            >{{ $t('operatManage.UserRoleAuthorizationObj.delete') }}</el-button
           >
         </div>
       </div>
@@ -139,10 +140,10 @@
       >
         <el-table-column type="selection" width="55"> </el-table-column>
         <el-table-column
-          prop="id"
-          :label="$t('operatManage.UserRoleAuthorizationObj.serialNumber')"
-        >
-        </el-table-column>
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+        />
         <el-table-column
           prop="uname"
           :label="$t('operatManage.UserRoleAuthorizationObj.name')"
@@ -174,10 +175,10 @@
       >
         <el-table-column type="selection" width="55"> </el-table-column>
         <el-table-column
-          prop="id"
-          :label="$t('operatManage.UserRoleAuthorizationObj.serialNumber')"
-        >
-        </el-table-column>
+          align="center"
+          type="index"
+          :label="$t('dataManage.styleObj.index')"
+        />
         <el-table-column
           prop="uname"
           :label="$t('operatManage.UserRoleAuthorizationObj.name')"
@@ -197,15 +198,19 @@
         </el-pagination>
       </div>
       <div slot="footer" class="dialog-footer">
-        <el-button @click="dialogTableVisible = false">{{ $t("dataManage.dictionaryManageObj.cancel") }}</el-button>
-        <el-button type="primary" @click="addConfirm">{{ $t("dataManage.dictionaryManageObj.confirm") }}</el-button>
+        <el-button @click="dialogTableVisible = false">{{
+          $t('dataManage.dictionaryManageObj.cancel')
+        }}</el-button>
+        <el-button type="primary" @click="addConfirm">{{
+          $t('dataManage.dictionaryManageObj.confirm')
+        }}</el-button>
       </div>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import MyBread from "../../components/MyBread.vue";
+import MyBread from '../../components/MyBread.vue';
 import {
   queryDepTree,
   select_Role_ByPageAndCount,
@@ -213,7 +218,7 @@
   roleUserdeletes,
   userselectByPageForRole,
   roleUserinserts,
-} from "../../api/api";
+} from '../../api/api';
 export default {
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
   components: {
@@ -237,18 +242,18 @@
       usercount: 0,
       tableData: [],
       //   褰撳墠閫夋嫨鐨勮鐨刬d
-      templateSelection: "",
+      templateSelection: '',
       //   褰撳墠閫夋嫨鐨勮鐨勬暟鎹�
       checkList: [],
 
       defaultProps: {
-        children: "children",
-        label: "name",
+        children: 'children',
+        label: 'name',
       },
       oriData: [], //鍘熷鏍戞暟鎹�
       depList: [], //el鏍戞暟鎹�
       backUpData: {},
-      formLabelWidth: "170px",
+      formLabelWidth: '170px',
       listData: {
         pageIndex: 1,
         pageSize: 10,
@@ -262,10 +267,10 @@
   },
   methods: {
     addConfirm() {
-      this.$confirm("纭畾鏄惁鏂板", "鎻愮ず", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning",
+      this.$confirm('纭畾鏄惁鏂板', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
       })
         .then(async () => {
           let arr = [];
@@ -274,12 +279,14 @@
           });
           const data = await roleUserinserts(arr);
           if (data.code !== 200) {
-            return this.$message.error("鏂板澶辫触");
+            return this.$message.error('鏂板澶辫触');
           }
           this.$message({
-            type: "success",
-            message: "鏂板鎴愬姛!",
+            type: 'success',
+            message: '鏂板鎴愬姛!',
           });
+          this.dialogTableVisible = false;
+          this.getuserList();
         })
         .catch(() => {});
     },
@@ -295,11 +302,11 @@
       });
       const data = await roleUserdeletes({ ids: arr.toString() });
       if (data.code !== 200) {
-        return this.$message.error("鍒犻櫎澶辫触");
+        return this.$message.error('鍒犻櫎澶辫触');
       }
       this.$message({
-        message: "鍒犻櫎鎴愬姛",
-        type: "success",
+        message: '鍒犻櫎鎴愬姛',
+        type: 'success',
       });
       this.getuserList();
     },
@@ -355,7 +362,7 @@
       const data = await queryDepTree();
 
       if (data.code !== 200) {
-        return this.$message.error("璇锋眰鍗曚綅鎶ラ敊");
+        return this.$message.error('璇锋眰鍗曚綅鎶ラ敊');
       }
       this.depList = this.treeData(data.result);
     },
@@ -364,7 +371,7 @@
       return cloneData.filter((father) => {
         // 寰幆鎵�鏈夐」
         let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁
-        branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        branchArr.length > 0 ? (father.children = branchArr) : ''; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
         return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
       });
     },
@@ -394,7 +401,7 @@
       this.addlistData.debid = this.debid;
       const data = await userselectByPageForRole(this.addlistData);
       if (data.code !== 200) {
-        return this.$message.error("鏂板鐢ㄦ埛鍒楄〃璇锋眰閿欒");
+        return this.$message.error('鏂板鐢ㄦ埛鍒楄〃璇锋眰閿欒');
       }
       this.gridData = data.result;
       this.addcount = data.count;
@@ -403,7 +410,7 @@
     async getuserList() {
       const data = await roleUserselectByPageForRole(this.userlistData);
       if (data.code !== 200) {
-        return this.$message.error("鐢ㄦ埛鍒楄〃璇锋眰閿欒");
+        return this.$message.error('鐢ㄦ埛鍒楄〃璇锋眰閿欒');
       }
       this.usertableData = data.result;
       this.usercount = data.count;
@@ -412,7 +419,7 @@
     async getRole() {
       const data = await select_Role_ByPageAndCount(this.listData);
       if (data.code !== 200) {
-        return this.$message.error("鐢ㄦ埛瑙掕壊璇锋眰閿欒");
+        return this.$message.error('鐢ㄦ埛瑙掕壊璇锋眰閿欒');
       }
       this.tableData = data.result;
       this.count = data.count;
diff --git a/src/views/Synthesis/analyse.vue b/src/views/Synthesis/analyse.vue
index afba6fa..e676895 100644
--- a/src/views/Synthesis/analyse.vue
+++ b/src/views/Synthesis/analyse.vue
@@ -19,53 +19,69 @@
 export default {
   data() {
     return {
+      isoline: null,
+      isolineFlag: false,
       itemsOne: [
         {
-          id: "1",
-          name: "synthesis.contouranalysis",
-          class: "d1",
+          id: '1',
+          name: 'synthesis.contouranalysis',
+          class: 'd1',
         },
         {
-          id: "2",
-          name: "synthesis.slopeanalysis",
-          class: "d2",
+          id: '2',
+          name: 'synthesis.slopeanalysis',
+          class: 'd2',
         },
         {
-          id: "3",
-          name: "synthesis.pathanalysis",
-          class: "d3",
+          id: '3',
+          name: 'synthesis.pathanalysis',
+          class: 'd3',
         },
         {
-          id: "4",
-          name: "synthesis.cuttinganalysis",
-          class: "d4",
+          id: '4',
+          name: 'synthesis.cuttinganalysis',
+          class: 'd4',
         },
         {
-          id: "5",
-          name: "synthesis.floodanalysis",
-          class: "d5",
+          id: '5',
+          name: 'synthesis.floodanalysis',
+          class: 'd5',
         },
         {
-          id: "6",
-          name: "synthesis.earthworkcalculation",
-          class: "d6",
+          id: '6',
+          name: 'synthesis.earthworkcalculation',
+          class: 'd6',
         },
         {
-          id: "7",
-          name: "synthesis.crosssectionanalysis",
-          class: "d7",
+          id: '7',
+          name: 'synthesis.crosssectionanalysis',
+          class: 'd7',
         },
         {
-          id: "8",
-          name: "synthesis.imagecontrast",
-          class: "d8",
+          id: '8',
+          name: 'synthesis.imagecontrast',
+          class: 'd8',
         },
       ],
     };
   },
+  mounted() {
+    if (this.isoline == null) {
+      this.isoline = new SmartEarth.ElevationTool(sgworld);
+    }
+  },
   methods: {
     changeAnalsy(res) {
       switch (res.id) {
+        case '1':
+          this.isolineFlag = !this.isolineFlag;
+          this.isoline.tf = this.isolineFlag;
+          this.isoline.render();
+          break;
+        case '2':
+          elevationTool.type = 'slope';
+          elevationTool.render();
+          break;
       }
     },
   },
@@ -92,33 +108,33 @@
   margin: 0px;
 }
 .d1 {
-  background: url("../../assets/img/synthesis/妞渾 8 鎷疯礉 8.png") no-repeat
+  background: url('../../assets/img/synthesis/妞渾 8 鎷疯礉 8.png') no-repeat
     center;
 }
 .d2 {
-  background: url("../../assets/img/synthesis/鍦嗚鐭╁舰 12 鎷疯礉 5.png") no-repeat
+  background: url('../../assets/img/synthesis/鍦嗚鐭╁舰 12 鎷疯礉 5.png') no-repeat
     center;
 }
 .d3 {
-  background: url("../../assets/img/synthesis/鍦嗚鐭╁舰 10 鍓湰 3.png") no-repeat
+  background: url('../../assets/img/synthesis/鍦嗚鐭╁舰 10 鍓湰 3.png') no-repeat
     center;
 }
 .d4 {
-  background: url("../../assets/img/synthesis/鍥惧眰 74 鎷疯礉 3.png") no-repeat
+  background: url('../../assets/img/synthesis/鍥惧眰 74 鎷疯礉 3.png') no-repeat
     center;
 }
 .d5 {
-  background: url("../../assets/img/synthesis/鍥惧眰 20.png") no-repeat center;
+  background: url('../../assets/img/synthesis/鍥惧眰 20.png') no-repeat center;
 }
 .d6 {
-  background: url("../../assets/img/synthesis/鍥惧眰 14 鎷疯礉 3.png") no-repeat
+  background: url('../../assets/img/synthesis/鍥惧眰 14 鎷疯礉 3.png') no-repeat
     center;
 }
 .d7 {
-  background: url("../../assets/img/synthesis/鍥惧眰 18.png") no-repeat center;
+  background: url('../../assets/img/synthesis/鍥惧眰 18.png') no-repeat center;
 }
 .d8 {
-  background: url("../../assets/img/synthesis/鍦嗚鐭╁舰 12 鎷疯礉 6.png") no-repeat
+  background: url('../../assets/img/synthesis/鍦嗚鐭╁舰 12 鎷疯礉 6.png') no-repeat
     center;
 }
 .backimge4 {
diff --git a/src/views/Synthesis/viewport.vue b/src/views/Synthesis/viewport.vue
index 7c64c78..5fd0ad1 100644
--- a/src/views/Synthesis/viewport.vue
+++ b/src/views/Synthesis/viewport.vue
@@ -20,6 +20,7 @@
   data() {
     return {
       isRuler: false,
+      isNaviget: false,
       itemsOne: [
         {
           id: '1',
@@ -68,13 +69,13 @@
     changeview(res) {
       switch (res.id) {
         case '1':
-          this.$bus.$emit('changemap', "鍒嗗睆");
+          this.$bus.$emit('changemap', '鍒嗗睆');
           break;
         case '2':
-          this.$bus.$emit('changemap', "浜岀淮");
+          this.$bus.$emit('changemap', '浜岀淮');
           break;
         case '3':
-          this.$bus.$emit('changemap', "涓夌淮");
+          this.$bus.$emit('changemap', '涓夌淮');
           break;
         case '4':
           window.sgworld.Navigate.jumpTo({
@@ -91,6 +92,15 @@
         case '7':
           this.isRuler = !this.isRuler;
           window.sgworld.navControl('enableCompass', this.isRuler);
+          break;
+        case '8':
+          this.isNaviget = !this.isNaviget;
+          if (this.isNaviget == false) {
+            document.getElementById('distanceLegendDiv').style.display = 'none';
+          } else if (this.isNaviget == true) {
+            document.getElementById('distanceLegendDiv').style.display =
+              'block';
+          }
           break;
       }
       // this.$bus.$emit("changetool", res_val);
@@ -119,35 +129,35 @@
   margin: 0px;
 }
 .b1 {
-  background: url("../../assets/img/synthesis/鍦嗚鐭╁舰 12 鎷疯礉 3.png") no-repeat
+  background: url('../../assets/img/synthesis/鍦嗚鐭╁舰 12 鎷疯礉 3.png') no-repeat
     center;
 }
 .b2 {
-  background: url("../../assets/img/synthesis/鍥惧眰 10 鎷疯礉.png") no-repeat
+  background: url('../../assets/img/synthesis/鍥惧眰 10 鎷疯礉.png') no-repeat
     center;
 }
 .b3 {
-  background: url("../../assets/img/synthesis/鍥惧眰 11 鎷疯礉.png") no-repeat
+  background: url('../../assets/img/synthesis/鍥惧眰 11 鎷疯礉.png') no-repeat
     center;
 }
 .b4 {
-  background: url("../../assets/img/synthesis/鍥惧眰 12 鎷疯礉 2.png") no-repeat
+  background: url('../../assets/img/synthesis/鍥惧眰 12 鎷疯礉 2.png') no-repeat
     center;
 }
 .b5 {
-  background: url("../../assets/img/synthesis/鍦嗚鐭╁舰 5 鎷疯礉 2.png") no-repeat
+  background: url('../../assets/img/synthesis/鍦嗚鐭╁舰 5 鎷疯礉 2.png') no-repeat
     center;
 }
 .b6 {
-  background: url("../../assets/img/synthesis/鍦嗚鐭╁舰 5 鎷疯礉 3.png") no-repeat
+  background: url('../../assets/img/synthesis/鍦嗚鐭╁舰 5 鎷疯礉 3.png') no-repeat
     center;
 }
 .b7 {
-  background: url("../../assets/img/synthesis/鐭╁舰 9.png") no-repeat center;
+  background: url('../../assets/img/synthesis/鐭╁舰 9.png') no-repeat center;
 }
 
 .b8 {
-  background: url("../../assets/img/synthesis/妞渾 4.png") no-repeat center;
+  background: url('../../assets/img/synthesis/妞渾 4.png') no-repeat center;
 }
 .backimge2 {
   width: 30px;
diff --git a/src/views/maintenance/blackwhiteList.vue b/src/views/maintenance/blackwhiteList.vue
index 8a7fc7d..5d0c029 100644
--- a/src/views/maintenance/blackwhiteList.vue
+++ b/src/views/maintenance/blackwhiteList.vue
@@ -61,20 +61,20 @@
             </el-form-item>
             <el-form-item>
               <el-button @click="onSubmit">{{
-                $t("operatManage.BWL.change")
+                $t('operatManage.BWL.change')
               }}</el-button>
             </el-form-item>
             <el-form-item>
               <el-button @click="onSubmit"
                 ><i class="el-icon-search"></i> &nbsp;{{
-                  $t("operatManage.BWL.search")
+                  $t('operatManage.BWL.search')
                 }}</el-button
               >
             </el-form-item>
             <el-form-item>
               <el-button @click="onSubmit"
                 ><i class="el-icon-delete"></i> &nbsp;{{
-                  $t("operatManage.BWL.reset")
+                  $t('operatManage.BWL.reset')
                 }}</el-button
               >
             </el-form-item>
@@ -161,14 +161,14 @@
             <el-form-item>
               <el-button @click="onSubmit"
                 ><i class="el-icon-search"></i> &nbsp;{{
-                  $t("operatManage.BWL.search")
+                  $t('operatManage.BWL.search')
                 }}</el-button
               >
             </el-form-item>
             <el-form-item>
               <el-button @click="onSubmit"
                 ><i class="el-icon-delete"></i> &nbsp;{{
-                  $t("operatManage.BWL.reset")
+                  $t('operatManage.BWL.reset')
                 }}</el-button
               >
             </el-form-item>
@@ -229,10 +229,10 @@
     </el-tabs>
   </div>
 </template>
-  
-  <script>
-import MyBread from "../../components/MyBread.vue";
-import { blacklistSelectByPageAndCount } from "../../api/api";
+
+<script>
+import MyBread from '../../components/MyBread.vue';
+import { blacklistSelectByPageAndCount } from '../../api/api';
 export default {
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
   components: {
@@ -241,14 +241,14 @@
 
   data() {
     return {
-      activeName: "first",
+      activeName: 'first',
       currentPage: 1,
       form: {
-        blackListIP: "",
-        IPState: "",
-        interceptionCycle: "",
-        unit: "",
-        interceptionNumber: "",
+        blackListIP: '',
+        IPState: '',
+        interceptionCycle: '',
+        unit: '',
+        interceptionNumber: '',
       },
       BTableData: [],
       WTableData: [],
@@ -269,7 +269,7 @@
   methods: {
     //鏍煎紡鍖栨椂闂�
     add0(m) {
-      return m < 10 ? "0" + m : m;
+      return m < 10 ? '0' + m : m;
     },
     //鏍煎紡鍖栨椂闂�
     format(shijianchuo) {
@@ -282,7 +282,7 @@
       var mm = time.getMinutes();
       var s = time.getSeconds();
       return (
-        y + "-" + this.add0(m) + "-" + this.add0(d)
+        y + '-' + this.add0(m) + '-' + this.add0(d)
         // " " +
         // this.add0(h) +
         // ":" +
@@ -319,7 +319,7 @@
       this.getList();
     },
     onSubmit() {
-      console.log("submit!");
+      console.log('submit!');
     },
     resetForm(formName) {
       this.$refs[formName].resetFields();
@@ -328,16 +328,15 @@
       const data = await blacklistSelectByPageAndCount(this.WListData);
 
       if (data.code != 200) {
-        return this.$message.error("鍒楄〃璋冪敤澶辫触");
+        return this.$message.error('鍒楄〃璋冪敤澶辫触');
       }
       this.WTableData = data.result;
       this.Wcount = data.count;
     },
     async BGetList() {
       const data = await blacklistSelectByPageAndCount(this.BListData);
-      console.log(data);
       if (data.code != 200) {
-        return this.$message.error("鍒楄〃璋冪敤澶辫触");
+        return this.$message.error('鍒楄〃璋冪敤澶辫触');
       }
       this.BTableData = data.result;
       this.Bcount = data.count;
@@ -349,7 +348,7 @@
   },
 };
 </script>
-  <style lang="less" scoped>
+<style lang="less" scoped>
 //@import url(); 寮曞叆鍏叡css绫�
 .logLog_box {
   background: rgb(240, 242, 245);
@@ -384,4 +383,3 @@
   }
 }
 </style>
-  
\ No newline at end of file
diff --git a/src/views/maintenance/databaseMonitoring.vue b/src/views/maintenance/databaseMonitoring.vue
index 83ceaea..99db309 100644
--- a/src/views/maintenance/databaseMonitoring.vue
+++ b/src/views/maintenance/databaseMonitoring.vue
@@ -13,8 +13,8 @@
 </template>
 
 <script>
-import MyBread from "../../components/MyBread.vue";
-import { getToken } from "../../utils/auth.js";
+import MyBread from '../../components/MyBread.vue';
+import { getToken } from '../../utils/auth.js';
 export default {
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
   components: {
@@ -23,14 +23,14 @@
   data() {
     //杩欓噷瀛樻斁鏁版嵁
     return {
-      sql_Url: "",
+      sql_Url: '',
     };
   },
   //鏂规硶闆嗗悎
   methods: {
     handleSelectionChange() {},
     getUrl() {
-      if (this.$store.state.iframeMsg.indexOf("Token=") != -1) {
+      if (this.$store.state.iframeMsg.indexOf('token=') != -1) {
         this.sql_Url = this.$store.state.iframeMsg + getToken();
       } else {
         this.sql_Url = this.$store.state.iframeMsg;
diff --git a/src/views/maintenance/systemMonitoring.vue b/src/views/maintenance/systemMonitoring.vue
index 6a41b81..7310a0a 100644
--- a/src/views/maintenance/systemMonitoring.vue
+++ b/src/views/maintenance/systemMonitoring.vue
@@ -210,7 +210,7 @@
       }
       this.echartData.push(parseFloat(res.cpuInfo.cpuSysUsage));
       this.lineChart1();
-      console.log(this.memInfo.usage);
+
       this.lineChart2(this.memInfo.usage);
     },
     SetTableData2(res) {
@@ -268,7 +268,7 @@
             fontSize: 15,
             fontFamily: 'Microsoft Yahei',
             fontWeight: 'normal',
-            color: '#00FFFF',
+            color: 'black',
             rich: {
               a: {
                 fontSize: 15,
@@ -290,9 +290,10 @@
                 left: '10',
                 top: '50',
                 style: {
-                  fill: '#00FFFF',
+                  fill: 'black',
                   text: '浣跨敤鐜�',
-                  font: '14px Microsoft YaHei',
+                  font: '20px Microsoft YaHei',
+                  fontWeight: '900',
                 },
               },
             ],
@@ -315,15 +316,15 @@
                 colorStops: [
                   {
                     offset: 1,
-                    color: 'rgba(68, 145, 253, 0)',
+                    color: 'rgba(126,147,211, 0)',
                   },
                   {
                     offset: 0.5,
-                    color: 'rgba(68, 145, 253, .25)',
+                    color: 'rgba(126,147,211, .25)',
                   },
                   {
                     offset: 0,
-                    color: 'rgba(68, 145, 253, 1)',
+                    color: 'rgba(126,147,211, 1)',
                   },
                 ],
                 globalCoord: false,
diff --git a/src/views/maintenance/tokentool.vue b/src/views/maintenance/tokentool.vue
index df6fea4..1e2d131 100644
--- a/src/views/maintenance/tokentool.vue
+++ b/src/views/maintenance/tokentool.vue
@@ -490,8 +490,8 @@
       if (this.ruleForm.value != null) {
         this.listData.type = parseInt(this.ruleForm.value);
       }
-      debugger;
       const data = await select_Token_ByPageAndCount(this.listData);
+      console.log('Token鑾峰彇', data);
       if (data.code != 200) {
         this.$message.error('鍒楄〃璋冪敤澶辫触');
       }
diff --git a/src/views/userManage/roleManage.vue b/src/views/userManage/roleManage.vue
index 7da337d..98cd33a 100644
--- a/src/views/userManage/roleManage.vue
+++ b/src/views/userManage/roleManage.vue
@@ -83,6 +83,17 @@
           prop="depName"
           :label="$t('userManage.RM.ownedSystem')"
         />
+
+        <el-table-column
+          align="center"
+          prop="isAdmin"
+          :label="$t('userManage.RM.isAdmin')"
+        >
+          <template slot-scope="scope">
+            <span v-if="scope.row.isAdmin == 1">鏄� </span>
+            <span v-else-if="scope.row.isAdmin == 0">鍚�</span>
+          </template>
+        </el-table-column>
         <el-table-column
           align="center"
           prop="descr"
@@ -128,9 +139,12 @@
               size="small"
               >{{ $t('common.update') }}</el-button
             >
-            <el-button  @click="showDetail(scope.$index, scope.row)" type="primary" size="small">{{
-              $t('common.see')
-            }}</el-button>
+            <el-button
+              @click="showDetail(scope.$index, scope.row)"
+              type="primary"
+              size="small"
+              >{{ $t('common.see') }}</el-button
+            >
           </template>
         </el-table-column>
       </el-table>
@@ -184,6 +198,13 @@
           <el-input v-model="insertform.descr" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item
+          :label="$t('userManage.RM.isAdmin')"
+          :label-width="formLabelWidth"
+        >
+          <el-radio v-model="insertform.isAdmin" label="1">鏄�</el-radio>
+          <el-radio v-model="insertform.isAdmin" label="0">鍚�</el-radio>
+        </el-form-item>
+        <el-form-item
           :label="$t('userManage.RM.remarks')"
           :label-width="formLabelWidth"
         >
@@ -198,7 +219,7 @@
       </div>
     </el-dialog>
     <el-dialog
-      :title="$t('userManage.RM.insertRole')"
+      :title="$t('userManage.RM.updateRole')"
       top="15vh"
       width="80vh"
       style="overflow: hidden"
@@ -225,6 +246,13 @@
           <el-button style="margin-left: 20px" @click="showDepTree(3)">{{
             $t('common.choose')
           }}</el-button>
+        </el-form-item>
+        <el-form-item
+          :label="$t('userManage.RM.isAdmin')"
+          :label-width="formLabelWidth"
+        >
+          <el-radio v-model="updateform.isAdmin" label="1">鏄�</el-radio>
+          <el-radio v-model="updateform.isAdmin" label="0">鍚�</el-radio>
         </el-form-item>
         <el-form-item
           :label="$t('userManage.RM.describe')"
@@ -260,25 +288,30 @@
       </div>
     </div>
 
-     <div class="infoBox" v-show="showinfoBox">
+    <div class="infoBox" v-show="showinfoBox">
       <el-card>
         <div slot="header" class="clearfix">
           <span>{{ $t('dataManage.styleObj.deInformation') }}</span>
-          <div style="float: right; cursor: pointer" @click="closeDetial"   >
+          <div style="float: right; cursor: pointer" @click="closeDetial">
             <i class="el-icon-close"></i>
           </div>
         </div>
-               <div class="contentBox">
+        <div class="contentBox">
           <p>
             <label> {{ $t('userManage.RM.roleName') }}:</label>
             <label class="boxlabel">{{ itemdetail.name }}</label>
           </p>
           <el-divider></el-divider>
+
           <p>
-           <p>
             <label> {{ $t('userManage.RM.ownedSystem') }}:</label>
             <label class="boxlabel">{{ itemdetail.depName }}</label>
           </p>
+          <el-divider></el-divider>
+
+          <p>
+            <label> {{ $t('userManage.RM.isAdmin') }}:</label>
+            <label class="boxlabel">{{ itemdetail.admin }}</label>
           </p>
           <el-divider></el-divider>
           <p>
@@ -286,7 +319,7 @@
             <label class="boxlabel">{{ itemdetail.descr }}</label>
           </p>
           <el-divider></el-divider>
-           <p>
+          <p>
             <label> {{ $t('userManage.RM.creationuser') }}:</label>
             <label class="boxlabel">{{ itemdetail.createUser }}</label>
           </p>
@@ -302,16 +335,16 @@
           </p>
           <el-divider></el-divider>
 
-             <p>
+          <p>
             <label> {{ $t('userManage.RM.updateontime') }}:</label>
             <label class="boxlabel">{{ itemdetail.updateTime }}</label>
           </p>
-           <el-divider></el-divider>
-             <p>
+          <el-divider></el-divider>
+          <p>
             <label> {{ $t('userManage.RM.remarks') }}:</label>
             <label class="boxlabel">{{ itemdetail.bak }}</label>
           </p>
-           <el-divider></el-divider>
+          <el-divider></el-divider>
         </div>
       </el-card>
     </div>
@@ -365,16 +398,21 @@
     };
   },
   methods: {
-        closeDetial() {
+    closeDetial() {
       this.showinfoBox = false;
       this.itemdetail = {};
     },
-      showDetail(index, row) {
+    showDetail(index, row) {
       this.showinfoBox = true;
       this.itemdetail = row;
-      this.itemdetail.createTime = this.formomentTime(this.itemdetail.createTime);
-      this.itemdetail.updateTime = this.formomentTime(this.itemdetail.updateTime);
-
+      this.itemdetail.createTime = this.formomentTime(
+        this.itemdetail.createTime
+      );
+      this.itemdetail.updateTime = this.formomentTime(
+        this.itemdetail.updateTime
+      );
+      this.itemdetail.admin =
+        parseInt(this.itemdetail.isAdmin) === 0 ? '鍚�' : '鏄�';
     },
     handleSelectionChange(val) {
       this.multipleSelection = val;
@@ -431,6 +469,7 @@
       if (data.code != 200) {
         this.$message.error('鍒楄〃璋冪敤澶辫触');
       }
+      console.log(data);
       this.tableData = data.result;
       this.count = data.count;
     },
@@ -489,6 +528,7 @@
         });
         return;
       }
+      console.log(this.updateform);
       const data = await updateRole(this.updateform);
       if (data.code == 200) {
         this.UpdateFormdialog = false;
@@ -536,6 +576,7 @@
     },
     async handleEdit(index, row) {
       this.updateform = row;
+      this.updateform.isAdmin = row.isAdmin.toString();
       const data = await selectDep({ id: row.depid });
       this.updateform.depValue = data.result.name;
       this.UpdateFormdialog = true;

--
Gitblit v1.9.3