From c3204d686fbf8a64dd7fa4dcbb48c0a075df06e0 Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期二, 05 十二月 2023 08:06:19 +0800
Subject: [PATCH] 更新电气管理界面

---
 CanadaMes-ui/src/views/role/index.vue |  226 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 161 insertions(+), 65 deletions(-)

diff --git a/CanadaMes-ui/src/views/role/index.vue b/CanadaMes-ui/src/views/role/index.vue
index 1ccc221..22d50ae 100644
--- a/CanadaMes-ui/src/views/role/index.vue
+++ b/CanadaMes-ui/src/views/role/index.vue
@@ -2,30 +2,30 @@
   <div class="app">
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right">
-      <el-breadcrumb-item :to="{ path: '/home' }">棣栭〉</el-breadcrumb-item>
-      <el-breadcrumb-item>瑙掕壊绠$悊</el-breadcrumb-item>
-      <el-breadcrumb-item>瑙掕壊鍒楄〃</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/home' }">{{$t('langHome')}}</el-breadcrumb-item>
+      <el-breadcrumb-item>{{$t('langRoleManagement')}}</el-breadcrumb-item>
+      <el-breadcrumb-item>{{$t('langRoleList')}}</el-breadcrumb-item>
     </el-breadcrumb>
     <!--鍗$墖瑙嗗浘鍖哄煙-->
     <el-card class="el-card">
       <el-row :gutter="20">
         <!--鎼滅储涓庢坊鍔犲尯鍩�-->
         <el-col :span="6">
-          <el-input placeholder="璇疯緭鍏ヨ鑹插悕绉�" v-model="queryInfo.name" clearable @clear="getRoleList()">
-            <el-button slot="append" icon="el-icon-search" @click="getRoleList()"></el-button>
-          </el-input>
-        </el-col>
+  <el-input :placeholder="$t('langEnterRoleName')" v-model="queryInfo.name" clearable @clear="getRoleList()">
+    <el-button slot="append" icon="el-icon-search" @click="getRoleList()"></el-button>
+  </el-input>
+</el-col>
         <!--娣诲姞鍖哄煙-->
         <el-col :span="4">
-          <el-button type="primary" @click="showAddDialog">娣诲姞瑙掕壊</el-button>
+          <el-button type="primary" @click="showAddDialog">{{$t('langAddRole')}}</el-button>
         </el-col>
       </el-row>
       <!--瑙掕壊鍒楄〃鍖哄煙-->
       <el-table :data="roleList.records" border stripe>
         <el-table-column label="#" type="index"></el-table-column>
-        <el-table-column label="鍚嶇О" prop="name"></el-table-column>
-        <el-table-column label="鍒涘缓鏃堕棿" prop="createTime"></el-table-column>
-        <el-table-column label="鏄惁鏈夋晥">
+  <el-table-column :label="$t('langRoleName')" prop="name"></el-table-column>
+  <el-table-column :label="$t('langCreateTime')" prop="createTime"></el-table-column>
+  <el-table-column :label="$t('langIsValid')">
           <template slot-scope="scope">
             <el-switch :active-value=1
                        :inactive-value=0
@@ -34,19 +34,22 @@
             </el-switch>
           </template>
         </el-table-column>
-        <el-table-column label="鎿嶄綔">
+        <el-table-column :label="$t('langOperation')">
           <template slot-scope="scope">
-            <!--淇敼-->
-            <el-tooltip effect="dark" content="淇敼" 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="鍒犻櫎" placement="top" :enterable="false">
-              <el-button type="danger" icon="el-icon-delete" size="mini"
-                         @click="removeById(scope.row)"></el-button>
-            </el-tooltip>
-          </template>
+  <!-- 淇敼 -->
+  <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">
+    <el-button type="danger" icon="el-icon-delete" size="mini" @click="removeById(scope.row)"></el-button>
+  </el-tooltip>
+</template>
         </el-table-column>
       </el-table>
       <!--鍒嗛〉鍖哄煙-->
@@ -62,17 +65,17 @@
     </el-card>
     <!--娣诲姞瑙掕壊鐨勫璇濇-->
     <el-dialog
-        title="娣诲姞瑙掕壊"
+        :title="$t('langAddRole')"
         :visible.sync="addDialogVisible"
         width="50%"
         @close="addDialogClosed">
       <!--鍐呭涓讳綋鍖哄煙-->
-      <el-form :model="addRoleForm" :rules="addRoleRules" ref="addRoleRef" label-width="70px">
-        <el-form-item label="鍚嶇О" prop="name">
+      <el-form :model="addRoleForm" :rules="addRoleRules" ref="addRoleRef" label-width="130px">
+        <el-form-item :label="$t('langRoleName')" prop="name">
           <el-input v-model="addRoleForm.name"></el-input>
         </el-form-item>
-        <el-form-item label="鐘舵��" prop="state">
-          <el-select v-model="addRoleForm.state" placeholder="璇烽�夋嫨">
+        <el-form-item :label="$t('langState')" prop="state">
+          <el-select v-model="addRoleForm.state" placeholder="$t('langPleaseSelect')">
             <el-option v-for="(item,index) in options"
                        :key="index"
                        :value="item.value"
@@ -82,43 +85,67 @@
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-    <el-button @click="addDialogVisible = false">鍙� 娑�</el-button>
-    <el-button type="primary" @click="addRole">纭� 瀹�</el-button>
+    <el-button @click="addDialogVisible = false">{{$t('langCancel')}}</el-button>
+    <el-button type="primary" @click="addRole">{{$t('langConfirm')}}</el-button>
   </span>
     </el-dialog>
     <!--淇敼瑙掕壊鐨勫璇濇-->
-    <el-dialog
-        title="淇敼瑙掕壊"
-        :visible.sync="editDialogVisible"
-        width="50%">
-      <!--鍐呭涓讳綋鍖哄煙-->
-      <el-form :model="editRoleForm" :rules="addRoleRules" ref="addRoleRef" label-width="70px">
-        <el-form-item label="鍚嶇О" prop="name">
-          <el-input v-model="editRoleForm.name"></el-input>
-        </el-form-item>
-        <el-form-item label="鐘舵��" prop="state">
-          <el-select v-model="editRoleForm.state" placeholder="璇烽�夋嫨">
-            <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">鍙� 娑�</el-button>
-    <el-button type="primary" @click="editRoleInfo">纭� 瀹�</el-button>
+    <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 {getById2} from "../../api/rolePermission";
+import {saveOrUpdate2} from "../../api/rolePermission";
 
+import LanguageMixin from '../../lang/LanguageMixin';
 export default {
   name: "Role",
+  mixins: [LanguageMixin],
+
   data() {
     return {
       queryInfo: {
@@ -133,16 +160,25 @@
       addDialogVisible: false,
       // 鎺у埗淇敼瑙掕壊瀵硅瘽妗嗙殑鏄剧ず涓庨殣钘�
       editDialogVisible: false,
+     
       // 娣诲姞鐨勮鑹插璞�
       addRoleForm: {
         state: 1
       },
+   
       // 淇敼鐨勮鑹插璞�
-      editRoleForm: {},
+      editRoleForm: {
+        
+      },
+     
+      permissionList: [],
+    permissionDialogVisible: false,
+    selectedPermissions: [] ,// 娣诲姞selectedPermissions鏁扮粍鍙橀噺
+
       // 娣诲姞瑙掕壊鐨勯獙璇佽鍒�
       addRoleRules: {
         name: [
-          {required: true, message: '璇疯緭鍏ュ悕绉�', trigger: 'blur'},
+          {required: true, message:  '璇疯緭鍏ュ悕绉�', trigger: 'blur'},
           {min: 2, max: 15, message: '闀垮害鍦� 2 鍒� 15 涓瓧绗�', trigger: 'blur'}
         ],
         state: [
@@ -177,7 +213,8 @@
     },
     stateChange(info) {
       saveOrUpdate(info).then(() => {
-        this.$message.success("鏇存柊鐘舵�佹垚鍔�")
+        const 鏇存柊鐘舵�佹垚鍔� = this.$t('鏇存柊鐘舵�佹垚鍔�');
+        this.$message.success(鏇存柊鐘舵�佹垚鍔�);
 
       });
     },
@@ -195,7 +232,8 @@
           this.getRoleList();
           // 闅愯棌娣诲姞瑙掕壊瀵硅瘽妗�
           this.addDialogVisible = false;
-          this.$message.success("娣诲姞瑙掕壊鎴愬姛");
+          const 娣诲姞瑙掕壊鎴愬姛 = this.$t('娣诲姞瑙掕壊鎴愬姛');
+          this.$message.success(娣诲姞瑙掕壊鎴愬姛);
         });
       })
     },
@@ -203,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;
@@ -220,26 +309,33 @@
           this.getRoleList();
           // 闅愯棌娣诲姞瑙掕壊瀵硅瘽妗�
           this.editDialogVisible = false;
-          this.$message.success("淇敼瑙掕壊鎴愬姛");
+          const 淇敼瑙掕壊鎴愬姛 = this.$t('淇敼瑙掕壊鎴愬姛');
+          this.$message.success(淇敼瑙掕壊鎴愬姛);
         });
       })
     },
     // 鏍规嵁id鍒犻櫎瑙掕壊淇℃伅
     removeById(role) {
       // 寮规璇㈤棶鐢ㄦ埛鏄惁鍒犻櫎瑙掕壊
-      this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹�, 鏄惁缁х画?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
+      const 姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹叉槸鍚︾户缁� = this.$t('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹�, 鏄惁缁х画?');
+      const 鎻愮ず = this.$t('鎻愮ず');
+      const 纭畾 = this.$t('纭畾');
+      const 鍙栨秷 = this.$t('鍙栨秷');
+      this.$confirm(姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹叉槸鍚︾户缁�, 鎻愮ず, {
+        confirmButtonText: 纭畾,
+        cancelButtonText: 鍙栨秷,
         type: 'warning'
       }).then(() => {
         // 鍒犻櫎瑙掕壊
         removeById({id: role.id}).then(() => {
           // 閲嶆柊鑾峰彇瑙掕壊鍒楄〃
           this.getRoleList();
-          this.$message.success("鍒犻櫎瑙掕壊鎴愬姛");
+          const 鍒犻櫎瑙掕壊鎴愬姛 = this.$t('鍒犻櫎瑙掕壊鎴愬姛');
+          this.$message.success(鍒犻櫎瑙掕壊鎴愬姛);
         });
       }).catch(() => {
-        this.$message('宸插彇娑堝垹闄�');
+        const 宸插彇娑堝垹闄� = this.$t('宸插彇娑堝垹闄�');
+        this.$message(宸插彇娑堝垹闄�);
       });
     }
   }
@@ -259,4 +355,4 @@
 .app .el-card {
   width: 99%;
 }
-</style>
+</style>
\ No newline at end of file

--
Gitblit v1.8.0