Browse Source

配置角色管理

wangwei 4 years ago
parent
commit
21cd20ffaa

BIN
server/api/__pycache__/models.cpython-38.pyc


BIN
server/api/__pycache__/urls.cpython-38.pyc


BIN
server/api/__pycache__/views.cpython-38.pyc


+ 23 - 0
server/api/migrations/0017_auto_20210401_1037.py

@@ -0,0 +1,23 @@
+# Generated by Django 3.1.7 on 2021-04-01 10:37
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('api', '0016_auto_20210331_1439'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='user',
+            name='detail',
+            field=models.CharField(max_length=124, null=True),
+        ),
+        migrations.AlterField(
+            model_name='user',
+            name='token',
+            field=models.CharField(default='fakeToken', max_length=500, unique=True),
+        ),
+    ]

+ 18 - 0
server/api/migrations/0018_auto_20210401_1205.py

@@ -0,0 +1,18 @@
+# Generated by Django 3.1.7 on 2021-04-01 12:05
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('api', '0017_auto_20210401_1037'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='user',
+            name='id',
+            field=models.AutoField(primary_key=True, serialize=False),
+        ),
+    ]

+ 18 - 0
server/api/migrations/0019_auto_20210401_1336.py

@@ -0,0 +1,18 @@
+# Generated by Django 3.1.7 on 2021-04-01 13:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('api', '0018_auto_20210401_1205'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='user',
+            name='id',
+            field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
+        ),
+    ]

+ 18 - 0
server/api/migrations/0020_auto_20210401_1342.py

@@ -0,0 +1,18 @@
+# Generated by Django 3.1.7 on 2021-04-01 13:42
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('api', '0019_auto_20210401_1336'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='user',
+            name='token',
+            field=models.CharField(max_length=500, unique=True),
+        ),
+    ]

BIN
server/api/migrations/__pycache__/0017_auto_20210401_1037.cpython-38.pyc


BIN
server/api/migrations/__pycache__/0018_auto_20210401_1205.cpython-38.pyc


BIN
server/api/migrations/__pycache__/0019_auto_20210401_1336.cpython-38.pyc


BIN
server/api/migrations/__pycache__/0020_auto_20210401_1342.cpython-38.pyc


+ 1 - 1
server/api/models.py

@@ -9,7 +9,7 @@ class User(models.Model):
     roleName = models.CharField(max_length=32, null=True)
     value = models.CharField(max_length=32, null=True)
     status = models.BooleanField(default=1)
-    detail = models.CharField(max_length=124)
+    detail = models.CharField(max_length=124, null=True)
     token = models.CharField(max_length=500, unique=True, null=False)
     menus = models.ManyToManyField("Menu", null=True)
 

+ 3 - 1
server/api/urls.py

@@ -23,7 +23,9 @@ urlpatterns = [
     path('login/', views.login.as_view(), name='login'),
     path('getUserInfoById/', views.getUserInfoById.as_view(), name='get_user_info'),
     path('getUserList/', views.getUserList.as_view(), name='get_user_list'),
-    path('user/add/', views.add_user.as_view(), name='add_user'),
+    path('addUser/', views.addUser.as_view(), name='add_user'),
+    path('editUser/', views.editUser.as_view(), name='edit_user'),
+    path('deleteUser/', views.deleteUser.as_view(), name='delete_user'),
     path('getMenuListById/', views.getMenuListById.as_view(), name='get_menu'),
     path('getAllMenuList/', views.getAllMenuList.as_view(), name='get_all_menu'),
     path('menu/add/', views.add_menu.as_view(), name='add_menu'),

+ 61 - 9
server/api/views.py

@@ -156,7 +156,6 @@ def getTree(children, menus, childrens):
 
 # 请求---------------------------------------------------------------------
 class login(View):
-
     def post(self, request):
         data = json.loads(request.body)
         user = User.objects.all().filter(username=data.get(
@@ -190,20 +189,73 @@ class getUserList(View):
             return JsonResponse({'code': 1, 'result': {'message': 'no role,create role'}}, json_dumps_params={"ensure_ascii": False})
 
 
-class add_user(View):
+class addUser(View):
     def post(self, request):
-        data = request.POST
+        data = json.loads(request.body)
+        menuIdList = data.pop('menus')
+        menus = Menu.objects.all().filter(id__in=menuIdList)
+        # print(menus)
+        # data.menus = menus
+        print(data)
+        print('--------------data------------')
         if User.objects.all().filter(username=data.get('username')):
-            return JsonResponse({'code': 0, 'error': '该角色名已被创建'})
+            return JsonResponse({'code': 1, 'result': {'error': '该角色名已被占用'}}, json_dumps_params={"ensure_ascii": False})
+        else:
+            data['token'] = data.get('username') + 'token'
+            userObj = User.objects.create(**data)
+            userObj.menus.set(menus)
+
+            return JsonResponse({'code': 0, 'result': {'data': '角色创建成功'}}, json_dumps_params={"ensure_ascii": False})
+
+
+class editUser(View):
+    def post(self, request):
+        data = json.loads(request.body)
+        user = User.objects.all().filter(id=data.get('id')).first()
+        if user:
+            menuIdList = data.pop('menus')
+            menus = Menu.objects.all().filter(id__in=menuIdList)
+            user.username = data.get('username')
+            user.password = data.get('password')
+            user.realName = data.get('realName')
+            user.status = data.get('status')
+            user.detail = data.get('detail')
+            user.menus.set(menus)
+            user.save()
+            return JsonResponse({'code': 0, 'result': {'data': '修改成功'}}, json_dumps_params={"ensure_ascii": False})
         else:
-            User.objects.create(**data)
-            return JsonResponse({'code': 1, 'data': '角色创建成功'})
+            return JsonResponse({'code': 1, 'result': {'data': '查无此人'}}, json_dumps_params={"ensure_ascii": False})
+            # userObj = User.objects.create(**data)
+            # userObj.menus.set(menus)
+
+
+class deleteUser(View):
+    def post(self, request):
+        data = json.loads(request.body)
+        user = User.objects.all().filter(id=data.get('id'))
+        try:
+            if user:
+                user.delete()
+                return JsonResponse({'code': 0, 'result': {'data': '删除成功'}}, json_dumps_params={"ensure_ascii": False})
+            else:
+                return JsonResponse({'code': 1, 'result': {'data': '查无此人'}}, json_dumps_params={"ensure_ascii": False})
+        except Exception as e:
+            print(e)
+            return JsonResponse({'code': 1, 'result': {'data': '服务端错误'}}, json_dumps_params={"ensure_ascii": False})
 
 
 class getMenuListById(View):
-    def get(self, request):
-        querySetObj = Menu.objects.all()
-        menus = format_menus(querySetObj, True)
+    def post(self, request):
+        # 获取参数id
+        userId = json.loads(request.body).get('id')
+        # 当前用户
+        querSetUser = User.objects.all().filter(id=userId)
+        user = format_useinfo(querSetUser)
+        # 获取当前user 的menus(id集合)
+        menuIdList = user.get('menus')
+        # 匹配查询 id__in=[1,2,3]
+        querySetMenu = Menu.objects.all().filter(id__in=menuIdList)
+        menus = format_menus(querySetMenu, True)
         return JsonResponse({'code': 0, 'result': menus})
 
 

+ 2 - 2
src/api/sys/menu.ts

@@ -7,7 +7,7 @@ import {
 } from './model/menuModel';
 
 enum Api {
-  GetMenuListById = '/getMenuListById',
+  GetMenuListById = '/getMenuListById/',
   GETAllMenuList = '/getAllMenuList',
 }
 
@@ -17,7 +17,7 @@ enum Api {
 export function getMenuListById(params: getMenuListByIdParams) {
   return defHttp.request<getMenuListByIdParamsResultModel>({
     url: Api.GetMenuListById,
-    method: 'GET',
+    method: 'POST',
     params,
   });
 }

+ 18 - 2
src/api/sys/model/userModel.ts

@@ -13,7 +13,7 @@ export interface GetUserInfoByUserIdParams {
   userId: string | number;
 }
 
-export interface CreateUserParams {
+export interface AddUserParams {
   username: string;
   password: string;
   // 真实名字
@@ -21,10 +21,26 @@ export interface CreateUserParams {
 
   status?: boolean;
   // 介绍
-  desc?: string;
+  detail?: string;
+  menus?: string[] | number[];
+}
+export interface EditUserParams {
+  id: number;
+  username: string;
+  password: string;
+  // 真实名字
+  realName: string;
+
+  status?: boolean;
+  // 介绍
+  detail?: string;
   menus?: string[] | number[];
 }
 
+export interface DeleteUserParams {
+  id: number;
+}
+
 export interface RoleInfo {
   roleName: string;
   value: string;

+ 27 - 7
src/api/sys/user.ts

@@ -5,15 +5,21 @@ import {
   GetUserInfoByUserIdParams,
   GetUserInfoByUserIdModel,
   GetUserListModel,
+  AddUserParams,
+  EditUserParams,
+  DeleteUserParams,
 } from './model/userModel';
 import { ErrorMessageMode } from '/@/utils/http/axios/types';
 
 enum Api {
+  // post请求结尾不加斜杠 python报错
   Login = '/login/',
-  GetUserInfoById = '/getUserInfoById',
-  GetUserList = '/getUserList',
-  createUser = '/createUser',
-  GetPermCodeByUserId = '/getPermCodeByUserId',
+  GetUserInfoById = '/getUserInfoById/',
+  GetUserList = '/getUserList/',
+  AddUser = '/addUser/',
+  EditUser = '/editUser/',
+  DeleteUser = '/deleteUser/',
+  GetPermCodeByUserId = '/getPermCodeByUserId/',
 }
 
 /**
@@ -62,9 +68,23 @@ export function getUserList() {
   });
 }
 
-export function createUser(params: GetUserInfoByUserIdParams) {
-  return defHttp.request<GetUserInfoByUserIdModel>({
-    url: Api.createUser,
+export function addUser(params: AddUserParams) {
+  return defHttp.request<GetUserListModel>({
+    url: Api.AddUser,
+    method: 'POST',
+    params,
+  });
+}
+export function editUser(params: EditUserParams) {
+  return defHttp.request<GetUserListModel>({
+    url: Api.EditUser,
+    method: 'POST',
+    params,
+  });
+}
+export function deleteUser(params: DeleteUserParams) {
+  return defHttp.request<GetUserListModel>({
+    url: Api.DeleteUser,
     method: 'POST',
     params,
   });

+ 1 - 1
src/components/Dropdown/src/Dropdown.vue

@@ -73,7 +73,7 @@
       return {
         handleClickMenu,
         getMenuList,
-        getAttr: (key: string) => ({ key }),
+        getAttr: (key: string|number) => ({ key }),
       };
     },
   });

+ 0 - 1
src/utils/http/axios/Axios.ts

@@ -216,7 +216,6 @@ export class VAxios {
               ret.menus.map((item) => (item.menuName = t(item.menuName)));
               ret = listToTree(ret.menus);
             }
-            console.log(ret);
             ret !== errorResult ? resolve(ret) : reject(new Error('request error!'));
             return;
           }

+ 2 - 2
src/views/permission/menu/index.vue

@@ -50,8 +50,8 @@
       align: 'left',
     },
     {
-      title: 'key',
-      dataIndex: 'key',
+      title: 'id',
+      dataIndex: 'id',
       width: 70,
     },
     {

+ 8 - 5
src/views/permission/role/add.vue

@@ -152,12 +152,15 @@
 
       function confirm() {
         console.log('确定')
-        const info = getFieldsValue()
-        info.id = role.id
-        const data = {
-          info,
-          MenuChecked: modelData.checkedKeys
+        const data = getFieldsValue()
+        if(role.id) {
+          data.id = role.id
         }
+        // const data = {
+        //   info,
+          data.menus = [...modelData.checkedKeys]
+        // }
+        // console.log(data)
         // console.log(getFieldsValue())  // 表单数据
         // console.log('------ 菜单key ------')
         // console.log(modelData.checkedKeys)

+ 45 - 26
src/views/permission/role/index.vue

@@ -26,7 +26,7 @@
   import { getAllMenuList } from '/@/api/sys/menu';
   import { h } from 'vue';
   import { Tag } from 'ant-design-vue';
-  import { getUserList } from '/@/api/sys/user';
+  import { getUserList, addUser, editUser,deleteUser } from '/@/api/sys/user';
   import {
     BasicTable,
     useTable,
@@ -174,38 +174,57 @@
         openAdd(true, record);
       }
 
-      function handleDelete(record: Recordable) {
+      async function handleDelete(record: Recordable) {
         console.log('点击了删除', record.id);
         console.log(record)
-        const data = getTableAction().getDataSource()
-        console.log(data)
-        getTableAction().setTableData(data.filter(item => item.id !== record.id))
+        await deleteUser({id:record.id}).then(res => {
+          console.log(res)
+          getTableAction().reload()
+        })
+        // const data = getTableAction().getDataSource()
+        // console.log(data)
+        // getTableAction().setTableData(data.filter(item => item.id !== record.id))
       }
 
-      function saveData(data: any) {
-        const datas = getTableAction().getDataSource()
-        const info = reactive({...data.info})
-        console.log(info)
-        if (modelData.title === "添加") {
-          datas.map(item => {
-            if (info.id === 0 || info.id === item.id) {
-              info.id = item.id + 1
-            }
+      async function saveData(data: any) {
+        // const datas = getTableAction().getDataSource()
+        // const info = reactive({...data.info})
+        console.log('------------save---------')
+        console.log(data)
+        if(!data.id) {
+          await addUser(data).then(res => {
+            console.log(res)
+            getTableAction().reload()
           })
-          datas.push(info)
-          getTableAction().setTableData(datas)
-        } else {
-          console.log('编辑')
-          // getTableAction().setTableData(datas.filter(item => item.id !== info.id))
-          let dataArr:object[] = []
-          datas.map(item => {
-            if (item.id === info.id) {
-              item = info
-            }
-            dataArr.push(item)
+          console.log('----------add---')
+        }else {
+          await editUser(data).then(res => {
+            console.log(res)
+            getTableAction().reload()
           })
-          getTableAction().setTableData(dataArr)
+          console.log('----------edit---')
+
         }
+        // if (modelData.title === "添加") {
+        //   datas.map(item => {
+        //     if (info.id === 0 || info.id === item.id) {
+        //       info.id = item.id + 1
+        //     }
+        //   })
+        //   datas.push(info)
+        //   getTableAction().setTableData(datas)
+        // } else {
+        //   console.log('编辑')
+        //   // getTableAction().setTableData(datas.filter(item => item.id !== info.id))
+        //   let dataArr:object[] = []
+        //   datas.map(item => {
+        //     if (item.id === info.id) {
+        //       item = info
+        //     }
+        //     dataArr.push(item)
+        //   })
+        //   getTableAction().setTableData(dataArr)
+        // }
       }
       async function getTreeData() {
         let treeData = await getAllMenuList() as any