From e547dfb950a19b2d54e2f06aadff7e2be15d6ced Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期三, 09 八月 2023 17:17:23 +0800
Subject: [PATCH] 1.角色新增、修改、删除功能

---
 src/utils/request.js                      |    3 
 src/permission.js                         |    4 
 src/store/modules/user.js                 |   37 +++------
 src/api/basicSettings.js                  |   16 ++++
 src/api/user.js                           |    9 ++
 src/views/basicSettings/roleList.vue      |   56 +++++++------
 src/views/login/index.vue                 |   19 +++-
 src/layout/components/Navbar.vue          |   54 +++++++++++-
 src/views/systemSetting/encodingRules.vue |   18 +--
 9 files changed, 136 insertions(+), 80 deletions(-)

diff --git a/src/api/basicSettings.js b/src/api/basicSettings.js
index b9da38f..a022539 100644
--- a/src/api/basicSettings.js
+++ b/src/api/basicSettings.js
@@ -8,6 +8,22 @@
     params: data
   })
 }
+// 瑙掕壊鏂板銆佺紪杈戜繚瀛�
+export function RoleAddUpdateSava(data) {
+  return request({
+    url: 'BasicSetting/RoleAddUpdateSava',
+    method: 'post',
+    params: data
+  })
+}
+// 瑙掕壊鍒犻櫎
+export function RoleDeleteSava(data) {
+  return request({
+    url: 'BasicSetting/RoleDeleteSava',
+    method: 'post',
+    params: data
+  })
+}
 
 // 瑙掕壊鏉冮檺瑙掕壊缂栫爜銆佹搷浣滅缂栫爜鏌ヨ鑿滃崟鍙婃寜閽�
 export function RolePermissionSearchRoleMenu(data) {
diff --git a/src/api/user.js b/src/api/user.js
index 661d814..f2d8863 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -22,7 +22,6 @@
 //     params: { token }
 //   })
 // }
-
 export function logout(data) {
   return request({
     url: '/Login/LoginOut',
@@ -30,6 +29,14 @@
     params: data
   })
 }
+
+export function UserTorgData(data) {
+  return request({
+    url: '/Login/UserTorgData',
+    method: 'get',
+    params: data
+  })
+}
 export function UpdateUserPassword(data) {
   return request({
     url: '/Login/UpdateUserPassword',
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 3bfde97..c625215 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -71,8 +71,36 @@
             </el-badge>
           </el-tooltip>
 
-          <div style=" font-size: 18px;font-family: 'Microsoft YaHei';color:#AAAAAA;padding:0 8px;cursor: pointer">
-            {{ stu_torgname }}
+          <div style=" font-size: 18px;font-family: 'Microsoft YaHei';color:#AAAAAA;cursor: pointer">
+            <!--            {{ stu_torgname }}-->
+
+            <el-dropdown class="avatar-container" trigger="hover">
+              <div class="avatar-wrapper">
+                <div style="display: flex;align-items: center;margin-top: -5px">
+
+                  <!--                  <i class="el-icon-user" style="font-weight: bolder;font-size: 18px;margin-right: 5px;color:#A7A7A7" />-->
+                  <div style=" font-size: 18px;font-family: 'Microsoft YaHei';color:#AAAAAA">{{ stu_torgname }}</div>
+                </div>
+
+              </div>
+              <el-dropdown-menu
+                v-if="stu_torgname.toString().length>0"
+                slot="dropdown"
+                class="user-dropdown"
+                style="text-align: center"
+              >
+                <el-dropdown-item
+                  v-for="(item,index) in $stu_torg"
+                  :key="item.torg_code"
+                  :divided="index!==0"
+                  @click.native="changeTrog(item)"
+                >
+                  <span style="display:block;">{{ item.torg_name }}</span>
+                </el-dropdown-item>
+
+              </el-dropdown-menu>
+            </el-dropdown>
+
           </div>
           <!--        <el-tooltip content="Global Size" effect="dark" placement="bottom">-->
           <!--          <size-select id="size-select" class="right-menu-item hover-effect" />-->
@@ -164,7 +192,7 @@
 import MenuItemEx from './Sidebar/MenuItemEx'
 import Breadcrumb from '@/components/Breadcrumb'
 import Hamburger from '@/components/Hamburger'
-import { getCookie } from '@/utils/auth'
+import { getCookie, setCookie } from '@/utils/auth'
 import { UpdateUserPassword } from '@/api/user'
 import Search from '@/components/HeaderSearch'
 import Screenfull from '@/components/Screenfull'
@@ -236,14 +264,20 @@
   ],
   created() {
     // this.$signalr.start()
-    this.usercode = getCookie('navTabId')
-    this.username = getCookie('username')
-    this.stu_torgname = getCookie('stu_torgname')
+
+    this.usercode = localStorage.getItem('usercode')
+    this.username = localStorage.getItem('username')
+    Vue.prototype.$stu_torg = JSON.parse(localStorage.getItem('torg'))
+
+    if (Vue.prototype.$stu_torg.length > 0) {
+      this.stu_torgname = Vue.prototype.$stu_torg[0].torg_name
+      setCookie('torg_code', Vue.prototype.$stu_torg.find(i => i.torg_name === this.stu_torgname).torg_code)
+    }
   },
   mounted() {
     // this.getHubConnectionBuilder()
 
-    Vue.prototype.$ButtonData = JSON.parse(sessionStorage.getItem('ButtonData'))
+    Vue.prototype.$ButtonData = JSON.parse(localStorage.getItem('ButtonData'))
   },
   computed: {
     ...mapGetters([
@@ -275,6 +309,12 @@
     }
   },
   methods: {
+    changeTrog(val) {
+      if (val.torg_name !== this.stu_torgname) {
+        this.stu_torgname = val.torg_name
+        setCookie('torg_code', val.torg_code)
+      }
+    },
     // 寤虹珛hub杩炴帴
     async getHubConnectionBuilder() {
       const url = 'http://121.196.36.24:8019/chatHub'
diff --git a/src/permission.js b/src/permission.js
index f6c649f..b6ef584 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -38,9 +38,7 @@
 
           // jwt瑙e瘑鑾峰彇鐢ㄦ埛缂栫爜
           const jwt = decode(localStorage.getItem('token'))
-          setCookie('usercode', jwt.usercode)
-          setCookie('stu_torgname', jwt.stu_torgname)
-          setCookie('username', jwt.username)
+          localStorage.setItem('usercode', jwt.usercode)
 
           // 鎷夊彇鑿滃崟淇℃伅琛�
           const menu = await store.dispatch('user/getMenu')
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index db81c80..e8bb9cf 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,6 +1,7 @@
-import { login, logout, getInfo, LoginMenu, LoginMenuCloud } from '@/api/user'
+import { login, logout, getInfo, LoginMenu, LoginMenuCloud, UserTorgData } from '@/api/user'
 import { getToken, setToken, removeToken, setCookie, removeCookie, getCookie } from '@/utils/auth'
 import { resetRouter } from '@/router'
+import { ButtonData } from '@/api/basicSettings'
 
 const getDefaultState = () => {
   return {
@@ -41,28 +42,7 @@
 
         localStorage.setItem('token', res.data)
 
-        // login({ UserName: '001', PassWord: 123, HOrgName: 1 }).then(response => {
-        //   const { data: res } = response
-        //   if (res.code === '200') {
-        // setCookie('username', res.data.username)
-        // setCookie('admin', res.data.usercode)
-        // setCookie('navTabId', res.data.usercode)
-        // setCookie('usertype', res.data.usertype)
-        // setCookie('userid', res.data.userid)
-        // setCookie('rediskey', res.data.rediskey)
-        // setCookie('guid', res.data.guid)
-        // setCookie('stu_torgcode', res.data.stu_torgcode)
-        // setCookie('stu_torgname', res.data.stu_torgname)
-        // setCookie('description', res.data.description)
-        // }
-        // console.log(res.code === '302', 8989)
-        // if (res.code === '302') {
         setCookie('code', res.code)
-        // }
-        // commit('SET_TOKEN', data.token)
-        // setToken(res)
-        // commit('SET_TOKEN', res)
-        // setToken(res)
         resolve()
       }).catch(error => {
         reject(error)
@@ -90,12 +70,21 @@
       })
     })
   },
+
   // get user menu
   getMenu({ commit, state }) {
     return new Promise((resolve, reject) => {
-      console.log('杩涙潵浜�11111')
-      LoginMenu({ usertype: 'PC', usercode: getCookie('usercode') }).then(res => {
+      console.log('鑿滃崟鎺ュ彛杩涙潵浜�11111')
+      LoginMenu({ usertype: 'PC', usercode: localStorage.getItem('usercode') }).then(res => {
         if (res.code === '200') {
+          UserTorgData({ usercode: localStorage.getItem('usercode') }).then(res1 => {
+            localStorage.setItem('username', res1.data.user)
+            localStorage.setItem('torg', JSON.stringify(res1.data.torg))
+          })
+          ButtonData().then(res2 => {
+            localStorage.setItem('ButtonData', JSON.stringify(res2.data))
+          })
+
           commit('SET_NAME', res.message)
           commit('SET_MENU', res.data)
           resolve(res.data)
diff --git a/src/utils/request.js b/src/utils/request.js
index 3061c33..265a3ba 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -60,7 +60,8 @@
         //   type: 'error',
         //   duration: 5 * 1000
         // })
-        removeCookie('usercode')
+        localStorage.removeItem('usercode')
+        localStorage.removeItem('torg')
         localStorage.removeItem('token')
         sessionStorage.removeItem('tabViews')
         // setTimeout(() => {
diff --git a/src/views/basicSettings/roleList.vue b/src/views/basicSettings/roleList.vue
index 1af65de..ed294ec 100644
--- a/src/views/basicSettings/roleList.vue
+++ b/src/views/basicSettings/roleList.vue
@@ -42,7 +42,7 @@
               <input
                 v-if="data.isEdit"
                 :ref="data.code"
-                v-model="node.label"
+                v-model="data.name"
                 type="text"
                 @click.stop
                 @blur="roleSave(data)"
@@ -222,7 +222,7 @@
 <script>
 import waves from '@/directive/waves'
 import {
-  DataPermissions,
+  DataPermissions, RoleAddUpdateSava, RoleDeleteSava,
   RolePermissionSava,
   RolePermissionSearchRole,
   RolePermissionSearchRoleMenu,
@@ -345,16 +345,6 @@
                 it.buttoncodelist.includes(j.buttoncode)
               )
 
-              // let temp = this.allButtonData.filter(j => j.menucode === it.menucode).length > 0 ? this.allButtonData.filter(j => j.menucode === it.menucode)[0].buttoncode : []
-              // temp = temp.length > 0 ? temp.split(',') : []
-
-              // it.buttonChecked = [] // 鏁版嵁鍥炴樉
-              // it.buttoncodelist.forEach(j => {
-              //   if (temp.includes(j.buttoncode)) {
-              //     it.buttonChecked.push(j.buttonname)
-              //   }
-              // })
-
               it.buttoncodelist = it.buttoncodelist.map(j => j.buttonname)
             }
 
@@ -364,8 +354,6 @@
                 it.datacodelist.includes(j.datacode)
               ).map(j => j.dataname)
             }
-            // const datacode = this.allButtonData.filter(j => j.menucode === it.menucode).length > 0 ? this.allButtonData.filter(j => j.menucode === it.menucode)[0].datacode : ''
-            // it.dataChecked = datacode ? this.dataKeyValue.find(j => j.datacode === datacode).dataname : '' // 鏁版嵁鍥炴樉
           })
 
           item.expanded = true
@@ -588,7 +576,7 @@
     },
     // 瑙掕壊鍚嶇О鏂板
     rolePlusClick() {
-      this.treeLeft[0].roles.push({ code: 1234, name: '', isEdit: true })
+      this.treeLeft[0].roles.push({ code: '', name: '', isEdit: true })
     },
     // 瑙掕壊鍚嶇О淇敼
     roleEditClick(self, node, data) {
@@ -601,16 +589,33 @@
     // 瑙掕壊鍚嶇О鍒犻櫎
     roleDeleteClick(self, node, data) {
       // console.log(self, node, data)
-      // this.treeLeft[0].roles.forEach((item, index) => {
-      //   if (item.code === data.code) {
-      //     this.treeLeft[0].roles.splice(index, 1) // 鏆傛椂鍏堝啓鎴愬墠绔垹闄わ紝鍚庢湡璋冪敤鎺ュ彛鍒犻櫎
-      //   }
-      // })
+      const D = {
+        rolecode: data.code,
+        rolename: data.name,
+        type: this.activeName
+      }
+      RoleDeleteSava(D).then(res => {
+        if (res.code === '200') {
+          this.$notify.success('瑙掕壊鍒犻櫎鎴愬姛锛�')
+        }
+        this.getRolePermissionSearchRole()
+      })
     },
     // 瑙掕壊鍚嶇О淇濆瓨   閲囩敤闃叉姈褰㈠紡
-    roleSave: throttle(function(data) {
-      data.isEdit = false
-      console.log('鎵ц浜嗭紒')
+    roleSave: throttle(function(val) {
+      val.isEdit = false
+      const data = {
+        rolecode: val.code,
+        rolename: val.name,
+        type: val.code === '' ? 'Add' : 'Update'
+      }
+      console.log(data, '鎵ц浜嗭紒')
+      RoleAddUpdateSava(data).then(res => {
+        if (res.code === '200') {
+          this.$notify.success(val.code === '' ? '瑙掕壊鏂板鎴愬姛锛�' : '瑙掕壊淇敼鎴愬姛锛�')
+        }
+      })
+      this.getRolePermissionSearchRole()
     }, 1000, true),
 
     // 椤甸潰鍕鹃�夊ソ淇濆瓨浜嬩欢
@@ -640,16 +645,13 @@
         }
       })
 
-      // console.log(arr, 'arr')
       const rolecode = this.$refs.treeLeftRef.getCurrentKey()
       const res = await RolePermissionSava(JSON.stringify(arr), rolecode, this.activeName)
       if (res.code === '200') {
         const rolename = this.treeLeft[0].roles.find(i => i.code === rolecode).name
         this.$notify.success(rolename + '鐨勮鑹叉潈闄愭彁浜ゆ垚鍔燂紒')
         await this.getRolePermissionSearchRoleMenuButton(rolecode)
-        // await this.getRolePermissionSearchRoleMenu(rolecode)
       }
-      // this.$forceUpdate()
     },
     // 鑾峰彇椤甸潰楂樺害
     getHeight() {
@@ -687,7 +689,7 @@
   width: 55px;
 }
 
-.el-icon-plus:hover,.el-icon-edit:hover,.el-icon-delete:hover{
+.el-icon-plus:hover, .el-icon-edit:hover, .el-icon-delete:hover {
   color: #000 !important;
 }
 </style>
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 7be91cc..4cb4a4b 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -143,7 +143,7 @@
 <script>
 import { validUsername } from '@/utils/validate'
 import { getCookie, removeCookie, setCookie } from '@/utils/auth'
-import { ForcedOffline } from '@/api/user'
+import { ForcedOffline, UserTorgData } from '@/api/user'
 import { ButtonData } from '@/api/basicSettings'
 import Vue from 'vue'
 
@@ -219,14 +219,18 @@
         if (valid) {
           this.loading = true
           this.$store.dispatch('user/login', this.loginForm).then(() => {
-            // console.log(getCookie('code') === '302', 9999)
             if (getCookie('code') === '302') {
               this.dialogVisible = true
             } else {
               this.$router.push({ path: this.redirect || '/' })
-              ButtonData().then(res => {
-                sessionStorage.setItem('ButtonData', JSON.stringify(res.data))
-              })
+              // ButtonData().then(res => {
+              //   localStorage.setItem('ButtonData', JSON.stringify(res.data))
+              // })
+              // UserTorgData({ usercode: getCookie('usercode') }).then(res => {
+              //   setCookie('username', res.data.user)
+              //   // sessionStorage.setItem('username', res.data.user)
+              //   sessionStorage.setItem('torg', JSON.stringify(res.data.torg))
+              // })
             }
             this.loading = false
           }).catch(() => {
@@ -445,7 +449,8 @@
     -webkit-text-fill-color: #000 !important;
   }
 }
-::v-deep .el-dialog__title{
+
+::v-deep .el-dialog__title {
   color: red;
 }
 
@@ -462,6 +467,7 @@
   display: flex;
   justify-content: end;
 }
+
 ::v-deep .dialogVisible .el-button--primary {
   background-color: #42b983 !important;
   height: 30px;
@@ -471,6 +477,7 @@
   border: none;
   padding: 0 20px;
 }
+
 ::v-deep .dialogVisible .el-button--default {
   height: 30px;
   display: flex;
diff --git a/src/views/systemSetting/encodingRules.vue b/src/views/systemSetting/encodingRules.vue
index 9c49280..3fe663a 100644
--- a/src/views/systemSetting/encodingRules.vue
+++ b/src/views/systemSetting/encodingRules.vue
@@ -86,11 +86,7 @@
             prop="filingdate"
             label="缂栫爜鏍煎紡"
             sortable="custom"
-          >
-            <template slot-scope="{row}">
-              <div>{{ dateType.find(i => i.code === row.filingdate).name }}</div>
-            </template>
-          </el-table-column>
+          />
           <el-table-column
             prop="incbit"
             label="鑷浣嶆暟"
@@ -254,9 +250,9 @@
       },
       encodingPre: '', // 缂栫爜棰勮
       dateType: [
-        { name: '骞存湀鏃�', code: 'YMD' },
-        { name: '骞存湀', code: 'YM' },
-        { name: '骞�', code: 'Y' }
+        { name: '骞存湀鏃�', code: '骞存湀鏃�' },
+        { name: '骞存湀', code: '骞存湀' },
+        { name: '骞�', code: '骞�' }
       ],
       menuOptionsAll: [],
       menuOptions: [],
@@ -288,11 +284,11 @@
       handler(newValue, oldValue) {
         const date = new Date()
         let newDate = ''
-        if (newValue.filingdate === 'YMD') {
+        if (newValue.filingdate === '骞存湀鏃�') {
           newDate = date.getFullYear().toString().substring(2, 4) + '' + (date.getMonth() + 1 + '').padStart(2, '0') + '' + (date.getDate() + '').padStart(2, '0')
-        } else if (newValue.filingdate === 'YM') {
+        } else if (newValue.filingdate === '骞存湀') {
           newDate = date.getFullYear().toString().substring(2, 4) + '' + (date.getMonth() + 1 + '').padStart(2, '0')
-        } else if (newValue.filingdate === 'Y') {
+        } else if (newValue.filingdate === '骞�') {
           newDate = date.getFullYear().toString().substring(2, 4) + ''
         }
         this.encodingPre = newValue.prefix + '' + newDate + '' + (1 + '').padStart(newValue.incbit, '0')

--
Gitblit v1.9.3