Procházet zdrojové kódy

feat:完善角色管理

lizhi před 4 měsíci
rodič
revize
4443b5c8cb

+ 1 - 1
protected/components/DB.php

@@ -173,7 +173,7 @@ class DB
         return true;
     }
 
-    public static function deleteById($tableName, $filters, $id)
+    public static function deleteById($tableName, $id)
     {
         $id = intval($id);
         if ($id <= 0) {

+ 19 - 22
protected/controllers/UseradminController.php

@@ -2,15 +2,10 @@
 
 class UseradminController extends Controller
 {	
-	public $layout='//layouts/main';
-	public $FirstMenu = '系统设置';
-	public $SecondMenu = '修改密码';
-	
 	public function filters()
 	{
 		return array(
 			'accessControl', // perform access control for CRUD operations
-			'postOnly + delete', // we only allow deletion via POST request
 		);
 	}
 
@@ -159,6 +154,7 @@ class UseradminController extends Controller
             Helper::error('参数错误');
         }
         DB::deleteById('useradmin', $id);
+        Helper::ok();
     }
 
     public function actionDeleteRole()
@@ -168,8 +164,25 @@ class UseradminController extends Controller
             Helper::error('参数错误');
         }
         DB::deleteById('role', $id);
+        Helper::ok();
     }
-	
+
+    public function actionEditRole()
+    {
+        $id = Helper::getPostInt('id');
+        $name = Helper::getPostString('name');
+        $descr = Helper::getPostString('descr');
+        if (!$name) {
+            Helper::error('角色名称不能为空');
+        }
+        if ($id) {
+            DB::updateById('role', ['name' => $name, 'descr' => $descr], $id);
+        } else {
+            DB::addData('role', ['name' => $name, 'descr' => $descr]);
+        }
+        Helper::ok();
+    }
+    
 	public function actionCheckpwd(){
 		$pass = $_POST['pass'];
 		$new_passwd = trim($_POST['new_passwd']);
@@ -206,20 +219,4 @@ class UseradminController extends Controller
 			$this->response(array('status'=>'success'));
 		}
 	}
-	
-	// protected function response($arr, $dataType = 'json'){
-	// 	switch($dataType) {
-	// 		case 'json':
-	// 			echo json_encode($arr);
-	// 		break;
-	// 	}
-	// 	exit;
-	// }
-	
-	public function actionSetting()
-	{
-		$this->render('setting');
-	}
-
-
 }

+ 21 - 2
web/src/api/roleApi.ts

@@ -1,6 +1,7 @@
 import request from '@/utils/http'
 
 export class roleService {
+
   // 角色列表
   static roleList(params?: Api.Common.PaginatingSearchParams) {
     return request.post<Api.Role.RoleListResponse>({
@@ -9,6 +10,7 @@ export class roleService {
       showErrorMessage: false // 不显示错误消息
     })
   }
+
   // 角色下拉列表
   static roleSelectList() {
     return request.post<Api.Common.SelectInfo[]>({
@@ -16,13 +18,30 @@ export class roleService {
       // showErrorMessage: false // 不显示错误消息
     })
   }
+
   // 角色权限设置
   static saveRoleAuth(id:number, leaf_ids: number[], half_Leaf_ids: number[]) {
     const params = {id, leaf_ids, half_Leaf_ids}
-    return request.post<Api.Http.BaseResponse>({
+    return request.post<any>({
       url: 'useradmin/saveRoleAuth',
       params,
-      showErrorMessage: false // 不显示错误消息
+      // showErrorMessage: false // 不显示错误消息
+    })
+  }
+
+  // 编辑角色
+  static editRole(params: Form.RoleInfo) {
+    return request.post<any>({
+      url: 'useradmin/editRole',
+      params
+    })
+  }
+
+  //删除角色
+  static deleteRole(params: Api.Common.DeleteParams) {
+    return request.post<any>({
+      url: 'useradmin/deleteRole',
+      params
     })
   }
 }

+ 6 - 0
web/src/typings/form.d.ts

@@ -6,4 +6,10 @@
 declare namespace Form {
   // 弹窗类型
   type DialogType = 'add' | 'edit'
+
+  interface RoleInfo {
+    id?: number
+    name: string
+    descr: string
+  }
 }

+ 34 - 39
web/src/views/system/role/index.vue

@@ -4,7 +4,7 @@
       <ElRow :gutter="12">
         <ElCol :xs="24" :sm="12" :lg="6">
           <ElFormItem>
-            <ElInput placeholder="请输入角色名称" v-model="form.roleName"></ElInput>
+            <ElInput placeholder="请输入角色名称" v-model="form.name"></ElInput>
           </ElFormItem>
         </ElCol>
         <ElCol :xs="24" :sm="12" :lg="6">
@@ -55,18 +55,12 @@
       width="30%"
       align-center
     >
-      <ElForm ref="formRef" :model="form" :rules="rules" label-width="120px">
-        <ElFormItem label="角色名称" prop="roleName">
-          <ElInput v-model="form.roleName" />
+      <ElForm ref="formRef" :model="form" :rules="rules" label-width="80px">
+        <ElFormItem label="角色名称" prop="name">
+          <ElInput v-model="form.name" />
         </ElFormItem>
-        <ElFormItem label="角色编码" prop="roleCode">
-          <ElInput v-model="form.roleCode" />
-        </ElFormItem>
-        <ElFormItem label="描述" prop="roleStatus">
-          <ElInput v-model="form.des" type="textarea" :rows="3" />
-        </ElFormItem>
-        <ElFormItem label="启用">
-          <ElSwitch v-model="form.enable" />
+        <ElFormItem label="描述" prop="descr">
+          <ElInput v-model="form.descr" type="textarea" :rows="3" />
         </ElFormItem>
       </ElForm>
       <template #footer>
@@ -199,15 +193,16 @@
       { required: true, message: '请输入角色名称', trigger: 'blur' },
       { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
     ],
-    des: [{ required: true, message: '请输入角色描述', trigger: 'blur' }]
+    des: [
+        { message: '请输入角色描述', trigger: 'blur' },
+        { max: 255, message: '长度最大255个字符', trigger: 'blur' }
+    ]
   })
 
-  const form = reactive<Role>({
-    roleName: '',
-    roleCode: '',
-    des: '',
-    date: '',
-    enable: true
+  const form = reactive<Form.RoleInfo>({
+    id: 0,
+    name: '',
+    descr: '',
   })
 
   const roleList = ref<Api.Role.RoleInfo[]>([])
@@ -228,17 +223,13 @@
     dialogType.value = type
 
     if (type === 'edit' && row) {
-      form.roleName = row.roleName
-      form.roleCode = row.roleCode
-      form.des = row.des
-      form.date = row.date
-      form.enable = row.enable
+      form.name = row.name
+      form.id = row.id
+      form.descr = row.descr
     } else {
-      form.roleName = ''
-      form.roleCode = ''
-      form.des = ''
-      form.date = ''
-      form.enable = true
+      form.name = ''
+      form.id = 0
+      form.descr = ''
     }
   }
 
@@ -248,7 +239,7 @@
     } else if (item.key === 'edit') {
       showDialog('edit', row)
     } else if (item.key === 'delete') {
-      deleteRole()
+      deleteRole(row.id)
     }
   }
 
@@ -272,13 +263,16 @@
     label: (data: any) => formatMenuTitle(data.meta?.title) || ''
   }
 
-  const deleteRole = () => {
+  const deleteRole = (id: number) => {
     ElMessageBox.confirm('确定删除该角色吗?', '删除确认', {
       confirmButtonText: '确定',
       cancelButtonText: '取消',
       type: 'error'
     }).then(() => {
-      ElMessage.success('删除成功')
+        roleService.deleteRole({id})
+        setTimeout(() => {
+          getTableData()
+        }, 1000)
     })
   }
 
@@ -287,22 +281,23 @@
 
     await formEl.validate((valid) => {
       if (valid) {
-        const message = dialogType.value === 'add' ? '新增成功' : '修改成功'
-        ElMessage.success(message)
+        roleService.editRole(form)
         dialogVisible.value = false
         formEl.resetFields()
+        setTimeout(() => {
+          getTableData()
+        }, 1000)
       }
     })
   }
 
   const savePermission = async () => {
     let tree = treeRef.value;
-    const { code, msg } = await roleService.saveRoleAuth(nowRoleInfo.id, tree.getCheckedKeys(), tree.getHalfCheckedKeys())
-    if (code === 200) {
-      ElMessage.success('保存成功')
-    }
+    await roleService.saveRoleAuth(nowRoleInfo.id, tree.getCheckedKeys(), tree.getHalfCheckedKeys())
     permissionDialog.value = false
-    getTableData()
+    setTimeout(() => {
+      getTableData()
+    }, 1000)
   }
 
   const toggleExpandAll = () => {