From 1c26bd4ac7453b5f4a29f0e428893b5247a8fde8 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期二, 24 十月 2023 10:18:57 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 CanadaMes-ui/src/views/role/index.vue |  136 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 111 insertions(+), 25 deletions(-)

diff --git a/CanadaMes-ui/src/views/role/index.vue b/CanadaMes-ui/src/views/role/index.vue
index c663906..22d50ae 100644
--- a/CanadaMes-ui/src/views/role/index.vue
+++ b/CanadaMes-ui/src/views/role/index.vue
@@ -39,6 +39,11 @@
   <!-- 淇敼 -->
   <el-tooltip effect="dark" :content="$t('langEdit')" placement="top" :enterable="false">
     <el-button type="primary" icon="el-icon-edit" size="mini" @click="showEditDialog(scope.row)"></el-button>
+ 
+  </el-tooltip>
+  <el-tooltip effect="dark" :content="$t('permission update')" placement="top" :enterable="false">
+    
+    <el-button type="primary"  size="mini" @click="showPermissionDialog(scope.row)">{{$t('permission update')}}</el-button>
   </el-tooltip>
   <!-- 鍒犻櫎 -->
   <el-tooltip effect="dark" :content="$t('langDelete')" placement="top" :enterable="false">
@@ -85,36 +90,58 @@
   </span>
     </el-dialog>
     <!--淇敼瑙掕壊鐨勫璇濇-->
-    <el-dialog
-        :title="$t('langEditRole')"
-        :visible.sync="editDialogVisible"
-        width="50%">
-      <!--鍐呭涓讳綋鍖哄煙-->
-      <el-form :model="editRoleForm" :rules="addRoleRules" ref="addRoleRef" label-width="130px">
-        <el-form-item :label="$t('langRoleName')" prop="name">
-          <el-input v-model="editRoleForm.name"></el-input>
-        </el-form-item>
-        <el-form-item :label="$t('langState')" prop="state">
-          <el-select v-model="editRoleForm.state" placeholder="$t('langPleaseSelect')">
-            <el-option v-for="(item,index) in options"
-                       :key="index"
-                       :value="item.value"
-                       :label="item.label">
-            </el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
+    <el-dialog :title="$t('langEditRole')" :visible.sync="editDialogVisible" width="50%">
+  <!-- 鍐呭涓讳綋鍖哄煙 -->
+  <el-form :model="editRoleForm" :rules="addRoleRules" ref="addRoleRef" label-width="130px">
+    <el-form-item :label="$t('langRoleName')" prop="name">
+      <el-input v-model="editRoleForm.name"></el-input>
+    </el-form-item>
+    <el-form-item :label="$t('langState')" prop="state">
+      <el-select v-model="editRoleForm.state" placeholder="$t('langPleaseSelect')">
+        <el-option v-for="(item, index) in options" :key="index" :value="item.value" :label="item.label"></el-option>
+      </el-select>
+    </el-form-item>
+    
+  </el-form>
+  <span slot="footer" class="dialog-footer">
     <el-button @click="editDialogVisible = false">{{$t('langCancel')}}</el-button>
     <el-button type="primary" @click="editRoleInfo">{{$t('langConfirm')}}</el-button>
   </span>
-    </el-dialog>
+</el-dialog>
+
+
+<el-dialog :title="$t('langEditPermissions')" :visible.sync="permissionDialogVisible">
+  <el-form label-width="130px">
+    <el-form-item :label="$t('langPermissions')" prop="permissionList">
+      <el-checkbox-group v-model="selectedPermissions">
+        <el-checkbox
+          v-for="(permission, index) in permissionList"
+          :key="index"
+          :label="permission.name"
+          :checked="permission.state === 1"
+          @change="updatePermissionState(permission.name, $event)"
+        >{{ permission.name }}</el-checkbox>
+      </el-checkbox-group>
+    </el-form-item>
+  </el-form>
+  <span slot="footer" class="dialog-footer">
+    <el-button @click="cancelEditPermissions">{{$t('langCancel')}}</el-button>
+    <el-button type="primary" @click="savePermissions">{{$t('langConfirm')}}</el-button>
+  </span>
+</el-dialog>
+
+
+
+
   </div>
 </template>
 
 <script>
 import {getById, removeById, saveOrUpdate, selectPage} from "../../api/role";
-import LanguageMixin from '../../lang/LanguageMixin'
+import {getById2} from "../../api/rolePermission";
+import {saveOrUpdate2} from "../../api/rolePermission";
+
+import LanguageMixin from '../../lang/LanguageMixin';
 export default {
   name: "Role",
   mixins: [LanguageMixin],
@@ -133,13 +160,21 @@
       addDialogVisible: false,
       // 鎺у埗淇敼瑙掕壊瀵硅瘽妗嗙殑鏄剧ず涓庨殣钘�
       editDialogVisible: false,
+     
       // 娣诲姞鐨勮鑹插璞�
       addRoleForm: {
         state: 1
       },
    
       // 淇敼鐨勮鑹插璞�
-      editRoleForm: {},
+      editRoleForm: {
+        
+      },
+     
+      permissionList: [],
+    permissionDialogVisible: false,
+    selectedPermissions: [] ,// 娣诲姞selectedPermissions鏁扮粍鍙橀噺
+
       // 娣诲姞瑙掕壊鐨勯獙璇佽鍒�
       addRoleRules: {
         name: [
@@ -179,7 +214,7 @@
     stateChange(info) {
       saveOrUpdate(info).then(() => {
         const 鏇存柊鐘舵�佹垚鍔� = this.$t('鏇存柊鐘舵�佹垚鍔�');
-        this.$message.success(鏇存柊鐘舵�佹垚鍔�)
+        this.$message.success(鏇存柊鐘舵�佹垚鍔�);
 
       });
     },
@@ -206,9 +241,60 @@
     showEditDialog(role) {
       getById({id: role.id}).then(res => {
         this.editRoleForm = res.data;
-        this.editDialogVisible = true;
+     
+  
+       
+      });
+
+     
+      this.editDialogVisible = true;
+    },
+
+
+    showPermissionDialog(role) {
+      this.selectedPermissions=[];
+      this.permissionList=[];
+    
+      getById2({ roleId: role.id }).then((res) => {
+        this.permissionList = res.data.permissionList;
+      
+
+        this.selectedPermissions = this.permissionList.map(({ name, state }) => ({
+          name,
+          state: state === 1,
+        }));
+        console.log(this.selectedPermissions);
+        this.permissionDialogVisible = true;
       });
     },
+// 鍙栨秷缂栬緫鏉冮檺寮瑰嚭妗�
+cancelEditPermissions() {
+  this.permissionDialogVisible = false;
+},
+// 淇濆瓨鏉冮檺淇敼
+updatePermissionState(name, isChecked) {
+    const permission = this.permissionList.find(p => p.name === name);
+    if (permission) {
+      permission.state = isChecked ? 1 : 0;
+    }
+  },
+
+  
+
+  savePermissions() {
+  const permissions = this.permissionList.map(({ roleId, name, state, permission_id }) => ({
+    roleId,
+    name,
+    state,
+    permission_id
+  }));
+  
+  saveOrUpdate2({ permissions }).then(() => {
+    // 鎴愬姛鏇存柊鏉冮檺鍚庢墽琛岀殑鎿嶄綔
+    const 鏇存柊鐘舵�佹垚鍔� = this.$t('鏇存柊鐘舵�佹垚鍔�');
+        this.$message.success(鏇存柊鐘舵�佹垚鍔�);
+  });
+},
     // 灞曠ず娣诲姞瑙掕壊鐨勫璇濇
     showAddDialog() {
       this.addDialogVisible = true;

--
Gitblit v1.8.0