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