2213980799@qq.com 1 год назад
Родитель
Сommit
850909b382
2 измененных файлов с 66 добавлено и 25 удалено
  1. 10 0
      src/api/system/role/index.js
  2. 56 25
      src/views/system/role/index.vue

+ 10 - 0
src/api/system/role/index.js

@@ -149,3 +149,13 @@ export async function getlistRole (id) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+/**
+ * 复制角色
+ */
+ export async function copyRole(id) {
+  const res = await request.post('sys/role/copy/'+id);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 56 - 25
src/views/system/role/index.vue

@@ -2,7 +2,7 @@
   <div class="ele-body">
     <el-card shadow="never">
       <!-- 搜索表单 -->
-      <role-search @search="reload"/>
+      <role-search @search="reload" />
       <!-- 数据表格 -->
       <ele-pro-table
         ref="table"
@@ -47,7 +47,7 @@
           </el-switch>
         </template>
         <template v-slot:secretLevel="{ row }">
-          {{  getSecretLevel(row.secretLevel) }}
+          {{ getSecretLevel(row.secretLevel) }}
         </template>
         <!-- 操作列 -->
         <template v-slot:action="{ row }">
@@ -78,13 +78,27 @@
           >
             数据权限
           </el-link>
+          <!-- v-if="$hasPermission('sys:role:update')" -->
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-document-copy"
+            @click="copyRole(row)"
+          >
+            复制
+          </el-link>
           <el-popconfirm
             class="ele-action"
             title="确定要删除此角色吗?"
             @confirm="remove(row)"
           >
             <template v-slot:reference>
-              <el-link type="danger"  v-if="$hasPermission('sys:role:delete')" :underline="false" icon="el-icon-delete">
+              <el-link
+                type="danger"
+                v-if="$hasPermission('sys:role:delete')"
+                :underline="false"
+                icon="el-icon-delete"
+              >
                 删除
               </el-link>
             </template>
@@ -93,12 +107,16 @@
       </ele-pro-table>
     </el-card>
     <!-- 编辑弹窗 -->
-    <role-edit :data="current" :visible.sync="showEdit" @done="reload"/>
+    <role-edit :data="current" :visible.sync="showEdit" @done="reload" />
     <!-- 权限分配弹窗 -->
-    <role-auth :data="current" :visible.sync="showAuth"/>
+    <role-auth :data="current" :visible.sync="showAuth" />
     <!--    数据权限-->
-    <role-data-auth ref="roleDataAuthDialogRef" v-if="roleDataAuthDialogFlag"
-                    :roleDataAuthDialogFlag.sync="roleDataAuthDialogFlag" @reload="reload" />
+    <role-data-auth
+      ref="roleDataAuthDialogRef"
+      v-if="roleDataAuthDialogFlag"
+      :roleDataAuthDialogFlag.sync="roleDataAuthDialogFlag"
+      @reload="reload"
+    />
   </div>
 </template>
 
@@ -106,14 +124,15 @@
 import RoleSearch from './components/role-search.vue';
 import RoleEdit from './components/role-edit.vue';
 import RoleAuth from './components/role-auth.vue';
-import roleDataAuth from "./components/role-data-auth.vue";
+import roleDataAuth from './components/role-data-auth.vue';
 import {
   pageRoles,
   removeRole,
   removeRoles,
-  putRoles
+  putRoles,
+  copyRole
 } from '@/api/system/role';
-import {secretLevelList} from "@/enum/dict";
+import { secretLevelList } from '@/enum/dict';
 
 export default {
   name: 'SystemRole',
@@ -163,7 +182,7 @@ export default {
           label: '密级',
           align: 'center',
           showOverflowTooltip: true,
-          slot:'secretLevel',
+          slot: 'secretLevel',
           minWidth: 110
         },
         {
@@ -190,7 +209,7 @@ export default {
         {
           columnKey: 'action',
           label: '操作',
-          width: 320,
+          width: 380,
           align: 'center',
           resizable: false,
           slot: 'action',
@@ -209,12 +228,11 @@ export default {
       roleDataAuthDialogFlag: false
     };
   },
-  created() {
-  },
+  created() {},
   methods: {
     /* 表格数据源 */
-    datasource({page, limit, where, order}) {
-      return pageRoles({pageNum: page, size: limit, ...where});
+    datasource({ page, limit, where, order }) {
+      return pageRoles({ pageNum: page, size: limit, ...where });
     },
     async changeEnable(row) {
       const res = await putRoles(row);
@@ -229,11 +247,11 @@ export default {
     },
     /* 刷新表格 */
     reload(where) {
-      this.$refs.table.reload({page: 1, where});
+      this.$refs.table.reload({ page: 1, where });
     },
     getSecretLevel(i) {
-      let find = secretLevelList.find(item=>item.value==i)||{}
-      return find.label
+      let find = secretLevelList.find((item) => item.value == i) || {};
+      return find.label;
     },
     /* 显示编辑 */
     openEdit(row) {
@@ -257,15 +275,29 @@ export default {
     },
     /* 显示分配权限 */
     openDataAuth(row) {
-      this.roleDataAuthDialogFlag = true
+      this.roleDataAuthDialogFlag = true;
 
       this.$nextTick(() => {
-        this.$refs.roleDataAuthDialogRef.init({...row})
+        this.$refs.roleDataAuthDialogRef.init({ ...row });
       });
     },
+    //复制
+    async copyRole(row) {
+      const loading = this.$loading({ lock: true });
+      copyRole(row.id)
+        .then((msg) => {
+          loading.close();
+          this.$message.success(msg);
+          this.reload();
+        })
+        .catch((e) => {
+          loading.close();
+          this.$message.error(e.message);
+        });
+    },
     /* 删除 */
     remove(row) {
-      const loading = this.$loading({lock: true});
+      const loading = this.$loading({ lock: true });
       removeRole(row.id)
         .then((msg) => {
           loading.close();
@@ -287,7 +319,7 @@ export default {
         type: 'warning'
       })
         .then(() => {
-          const loading = this.$loading({lock: true});
+          const loading = this.$loading({ lock: true });
           removeRole(
             this.selection.map((d) => d.id),
             true
@@ -302,8 +334,7 @@ export default {
               this.$message.error(e.message);
             });
         })
-        .catch(() => {
-        });
+        .catch(() => {});
     }
   }
 };