瀏覽代碼

新增按钮权限控制

zhontai 2 年之前
父節點
當前提交
694f11db54

+ 5 - 3
src/views/admin/api/index.vue

@@ -9,7 +9,7 @@
             </el-form-item>
             <el-form-item>
               <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-              <el-button type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
+              <el-button v-auth="'api:admin:api:add'" type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
             </el-form-item>
           </el-form>
         </el-card>
@@ -33,8 +33,10 @@
             </el-table-column>
             <el-table-column label="操作" width="160" fixed="right" header-align="center" align="center">
               <template #default="{ row }">
-                <el-button icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
-                <el-button icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
+                <el-button v-auth="'api:admin:api:update'" icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
+                <el-button v-auth="'api:admin:api:softdelete'" icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)"
+                  >删除</el-button
+                >
               </template>
             </el-table-column>
           </el-table>

+ 1 - 1
src/views/admin/cache/index.vue

@@ -8,7 +8,7 @@
         <el-table-column prop="value" label="键值" />
         <el-table-column label="操作" width="180" fixed="right" header-align="center" align="center">
           <template #default="{ row }">
-            <el-button icon="ele-Brush" size="small" text type="danger" @click="onClear(row)">清除</el-button>
+            <el-button v-auth="'api:admin:cache:clear'" icon="ele-Brush" size="small" text type="danger" @click="onClear(row)">清除</el-button>
           </template>
         </el-table-column>
       </el-table>

+ 5 - 3
src/views/admin/dictionary/dictionary-type.vue

@@ -6,7 +6,7 @@
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-        <el-button type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
+        <el-button v-auth="'api:admin:dictionary:add'" type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
       </el-form-item>
     </el-form>
   </el-card>
@@ -31,8 +31,10 @@
       </el-table-column>
       <el-table-column label="操作" width="140" fixed="right" header-align="center" align="center">
         <template #default="{ row }">
-          <el-button icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
-          <el-button icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
+          <el-button v-auth="'api:admin:dictionary:update'" icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
+          <el-button v-auth="'api:admin:dictionary:softdelete'" icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>

+ 5 - 3
src/views/admin/dictionary/dictionary.vue

@@ -6,7 +6,7 @@
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-        <el-button type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
+        <el-button v-auth="'api:admin:dictionary:add'" type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
       </el-form-item>
     </el-form>
   </el-card>
@@ -24,8 +24,10 @@
       </el-table-column>
       <el-table-column label="操作" width="140" fixed="right" header-align="center" align="center">
         <template #default="{ row }">
-          <el-button icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
-          <el-button icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
+          <el-button v-auth="'api:admin:dictionary:update'" icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
+          <el-button v-auth="'api:admin:dictionary:softdelete'" icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)"
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>

+ 5 - 3
src/views/admin/org/index.vue

@@ -9,7 +9,7 @@
             </el-form-item>
             <el-form-item>
               <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-              <el-button type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
+              <el-button v-auth="'api:admin:org:add'" type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
             </el-form-item>
           </el-form>
         </el-card>
@@ -35,8 +35,10 @@
             </el-table-column>
             <el-table-column label="操作" width="160" fixed="right" header-align="center" align="center">
               <template #default="{ row }">
-                <el-button icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
-                <el-button icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
+                <el-button v-auth="'api:admin:org:update'" icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
+                <el-button v-auth="'api:admin:org:softdelete'" icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)"
+                  >删除</el-button
+                >
               </template>
             </el-table-column>
           </el-table>

+ 24 - 6
src/views/admin/permission/index.vue

@@ -9,15 +9,18 @@
             </el-form-item>
             <el-form-item>
               <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-              <el-dropdown style="margin-left: 12px">
+              <el-dropdown
+                v-auths="['api:admin:permission:addgroup', 'api:admin:permission:addmenu', 'api:admin:permission:adddot']"
+                style="margin-left: 12px"
+              >
                 <el-button type="primary"
                   >新增<el-icon class="el-icon--right"><ele-ArrowDown /></el-icon
                 ></el-button>
                 <template #dropdown>
                   <el-dropdown-menu>
-                    <el-dropdown-item @click="onAdd(1)">新增分组</el-dropdown-item>
-                    <el-dropdown-item @click="onAdd(2)">新增菜单</el-dropdown-item>
-                    <el-dropdown-item @click="onAdd(3)">新增权限点</el-dropdown-item>
+                    <el-dropdown-item v-if="auth('api:admin:permission:addgroup')" @click="onAdd(1)">新增分组</el-dropdown-item>
+                    <el-dropdown-item v-if="auth('api:admin:permission:addmenu')" @click="onAdd(2)">新增菜单</el-dropdown-item>
+                    <el-dropdown-item v-if="auth('api:admin:permission:adddot')" @click="onAdd(3)">新增权限点</el-dropdown-item>
                   </el-dropdown-menu>
                 </template>
               </el-dropdown>
@@ -64,8 +67,22 @@
             </el-table-column>
             <el-table-column label="操作" width="160" fixed="right" header-align="center" align="center">
               <template #default="{ row }">
-                <el-button icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
-                <el-button icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
+                <el-button
+                  v-if="
+                    (row.type === 1 && auth('api:admin:permission:updategroup')) ||
+                    (row.type === 2 && auth('api:admin:permission:updatemenu')) ||
+                    (row.type === 3 && auth('api:admin:permission:updatedot'))
+                  "
+                  icon="ele-EditPen"
+                  size="small"
+                  text
+                  type="primary"
+                  @click="onEdit(row)"
+                  >编辑</el-button
+                >
+                <el-button v-auth="'api:admin:permission:softdelete'" icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)"
+                  >删除</el-button
+                >
               </template>
             </el-table-column>
           </el-table>
@@ -100,6 +117,7 @@ import { Permission as PermissionPermission } from '/@/api/admin/Permission'
 import { listToTree } from '/@/utils/tree'
 import { cloneDeep } from 'lodash-es'
 import eventBus from '/@/utils/mitt'
+import { auth } from '/@/utils/authFunction'
 
 // 引入组件
 const PermissionGroupForm = defineAsyncComponent(() => import('./components/permission-group-form.vue'))

+ 12 - 7
src/views/admin/role/index.vue

@@ -9,7 +9,7 @@
             </el-form-item>
             <el-form-item>
               <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-              <el-dropdown style="margin-left: 12px">
+              <el-dropdown v-auth="'api:admin:role:add'" style="margin-left: 12px">
                 <el-button type="primary"
                   >新增<el-icon class="el-icon--right"><ele-ArrowDown /></el-icon
                 ></el-button>
@@ -41,18 +41,22 @@
             <el-table-column label="操作" width="100" fixed="right" header-align="center" align="right">
               <template #default="{ row }">
                 <el-button v-if="row.type === 1" icon="ele-Plus" size="small" text type="primary" @click="onAdd(2, row)"></el-button>
-                <my-dropdown-more icon-only>
+                <my-dropdown-more icon-only v-auths="['api:admin:permission:assign', 'api:admin:role:update', 'api:admin:role:delete']">
                   <template #dropdown>
                     <el-dropdown-menu>
-                      <el-dropdown-item v-if="row.type === 2" @click="onSetRoleMenu(row)">菜单权限</el-dropdown-item>
+                      <el-dropdown-item v-if="row.type === 2 && auth('api:admin:permission:assign')" @click="onSetRoleMenu(row)"
+                        >菜单权限</el-dropdown-item
+                      >
                       <el-dropdown-item v-if="row.type === 2" @click="onSetRoleDataScope(row)">数据权限</el-dropdown-item>
-                      <el-dropdown-item @click="onEdit(row)">编辑{{ row.type === 1 ? '分组' : '角色' }}</el-dropdown-item>
-                      <el-dropdown-item @click="onDelete(row)">删除{{ row.type === 1 ? '分组' : '角色' }}</el-dropdown-item>
+                      <el-dropdown-item v-if="auth('api:admin:role:update')" @click="onEdit(row)"
+                        >编辑{{ row.type === 1 ? '分组' : '角色' }}</el-dropdown-item
+                      >
+                      <el-dropdown-item v-if="auth('api:admin:role:delete')" @click="onDelete(row)"
+                        >删除{{ row.type === 1 ? '分组' : '角色' }}</el-dropdown-item
+                      >
                     </el-dropdown-menu>
                   </template>
                 </my-dropdown-more>
-                <!-- <el-button icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
-                <el-button icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button> -->
               </template>
             </el-table-column>
           </el-table>
@@ -105,6 +109,7 @@ import { listToTree } from '/@/utils/tree'
 import { ElTable } from 'element-plus'
 import { cloneDeep } from 'lodash-es'
 import eventBus from '/@/utils/mitt'
+import { auth } from '/@/utils/authFunction'
 
 // 引入组件
 const RoleForm = defineAsyncComponent(() => import('./components/role-form.vue'))

+ 12 - 4
src/views/admin/task/index.vue

@@ -32,12 +32,20 @@
         <el-table-column prop="lastRunTime" label="最后运行时间" :formatter="formatterTime" width="120" />
         <el-table-column label="操作" width="180" fixed="right" header-align="center" align="center">
           <template #default="{ row }">
-            <el-button icon="ele-Tickets" size="small" text type="primary" @click="onShowLogs(row)">日志</el-button>
-            <el-button v-if="row.status === 1 || row.status === 'Paused'" icon="ele-VideoPause" size="small" text type="primary" @click="onPause(row)"
+            <el-button v-auth="" icon="ele-Tickets" size="small" text type="primary" @click="onShowLogs(row)">日志</el-button>
+            <el-button
+              v-if="row.status === 1 || row.status === 'Paused'"
+              v-auth="'api:admin:task:pause'"
+              icon="ele-VideoPause"
+              size="small"
+              text
+              type="primary"
+              @click="onPause(row)"
               >暂停</el-button
             >
             <el-button
               v-if="row.status === 0 || row.status === 'Running'"
+              v-auth="'api:admin:task:resume'"
               icon="ele-CaretRight"
               size="small"
               text
@@ -45,8 +53,8 @@
               @click="onStart(row)"
               >启动</el-button
             >
-            <el-button icon="ele-Promotion" size="small" text type="primary" @click="onRun(row)">执行</el-button>
-            <el-button icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
+            <el-button v-auth="'api:admin:task:run'" icon="ele-Promotion" size="small" text type="primary" @click="onRun(row)">执行</el-button>
+            <el-button v-auth="'api:admin:task:delete'" icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>

+ 6 - 5
src/views/admin/tenant/index.vue

@@ -7,7 +7,7 @@
         </el-form-item>
         <el-form-item>
           <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-          <el-button type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
+          <el-button v-auth="'api:admin:tenant:add'" type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
         </el-form-item>
       </el-form>
     </el-card>
@@ -21,12 +21,12 @@
         <el-table-column prop="email" label="邮箱" min-width="120" show-overflow-tooltip />
         <el-table-column label="操作" width="160" fixed="right" header-align="center" align="center">
           <template #default="{ row }">
-            <el-button icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
+            <el-button v-auth="'api:admin:tenant:update'" icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
             <my-dropdown-more>
               <template #dropdown>
                 <el-dropdown-menu>
-                  <el-dropdown-item @click="onSetTenantMenu(row)">菜单权限</el-dropdown-item>
-                  <el-dropdown-item @click="onDelete(row)">删除租户</el-dropdown-item>
+                  <el-dropdown-item v-if="auth('api:admin:permission:assign')" @click="onSetTenantMenu(row)">菜单权限</el-dropdown-item>
+                  <el-dropdown-item v-if="auth('api:admin:tenant:delete')" @click="onDelete(row)">删除租户</el-dropdown-item>
                 </el-dropdown-menu>
               </template>
             </my-dropdown-more>
@@ -58,10 +58,11 @@ import { ref, reactive, onMounted, getCurrentInstance, onUnmounted, defineAsyncC
 import { TenantListOutput, PageInputTenantGetPageDto } from '/@/api/admin/data-contracts'
 import { Tenant as TenantApi } from '/@/api/admin/Tenant'
 import eventBus from '/@/utils/mitt'
+import { auth } from '/@/utils/authFunction'
 
 // 引入组件
 const TenantForm = defineAsyncComponent(() => import('./components/tenant-form.vue'))
-const MyDropdownMore = defineAsyncComponent(() => import('./components/tenant-form.vue'))
+const MyDropdownMore = defineAsyncComponent(() => import('/@/components/my-dropdown-more/index.vue'))
 const SetTenantMenu = defineAsyncComponent(() => import('./components/set-tenant-menu.vue'))
 
 const { proxy } = getCurrentInstance() as any

+ 9 - 6
src/views/admin/user/index.vue

@@ -14,7 +14,7 @@
             </el-form-item>
             <el-form-item>
               <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-              <el-button type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
+              <el-button v-auth="'api:admin:user:add'" type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
             </el-form-item>
           </el-form>
         </el-card>
@@ -33,13 +33,15 @@
             </el-table-column>
             <el-table-column label="操作" width="160" fixed="right" header-align="center" align="center">
               <template #default="{ row }">
-                <el-button icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
-                <my-dropdown-more>
+                <el-button v-auth="'api:admin:user:update'" icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
+                <my-dropdown-more v-auths="['api:admin:user:set-manager', 'api:admin:user:reset-password', 'api:admin:user:delete']">
                   <template #dropdown>
                     <el-dropdown-menu>
-                      <el-dropdown-item @click="onSetManager(row)">{{ row.isManager ? '取消' : '设置' }}主管</el-dropdown-item>
-                      <el-dropdown-item @click="onResetPwd(row)">重置密码</el-dropdown-item>
-                      <el-dropdown-item @click="onDelete(row)">删除用户</el-dropdown-item>
+                      <el-dropdown-item v-if="auth('api:admin:user:set-manager')" @click="onSetManager(row)"
+                        >{{ row.isManager ? '取消' : '设置' }}主管</el-dropdown-item
+                      >
+                      <el-dropdown-item v-if="auth('api:admin:user:reset-password')" @click="onResetPwd(row)">重置密码</el-dropdown-item>
+                      <el-dropdown-item v-if="auth('api:admin:user:delete')" @click="onDelete(row)">删除用户</el-dropdown-item>
                     </el-dropdown-menu>
                   </template>
                 </my-dropdown-more>
@@ -72,6 +74,7 @@ import { ref, reactive, onMounted, getCurrentInstance, onUnmounted, defineAsyncC
 import { UserGetPageOutput, PageInputUserGetPageDto, OrgListOutput, UserSetManagerInput, UserResetPasswordInput } from '/@/api/admin/data-contracts'
 import { User as UserApi } from '/@/api/admin/User'
 import eventBus from '/@/utils/mitt'
+import { auth } from '/@/utils/authFunction'
 
 // 引入组件
 const UserForm = defineAsyncComponent(() => import('./components/user-form.vue'))

+ 5 - 3
src/views/admin/view/index.vue

@@ -9,7 +9,7 @@
             </el-form-item>
             <el-form-item>
               <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-              <el-button type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
+              <el-button v-auth="'api:admin:view:add'" type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
             </el-form-item>
           </el-form>
         </el-card>
@@ -36,8 +36,10 @@
             </el-table-column>
             <el-table-column label="操作" width="160" fixed="right" header-align="center" align="center">
               <template #default="{ row }">
-                <el-button icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
-                <el-button icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
+                <el-button v-auth="'api:admin:view:update'" icon="ele-EditPen" size="small" text type="primary" @click="onEdit(row)">编辑</el-button>
+                <el-button v-auth="'api:admin:view:softdelete'" icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)"
+                  >删除</el-button
+                >
               </template>
             </el-table-column>
           </el-table>