Browse Source

修复菜单管理编辑后数据编辑窗口数据渲染没有变化

wangwei 4 years ago
parent
commit
b7dbf4827b

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


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


+ 1 - 1
server/api/serializers.py

@@ -26,5 +26,5 @@ class MenuSerializer(serializers.ModelSerializer):
     class Meta:
         model = Menu
         # fields = []
-        # fields = "__all__"
+        fields = "__all__"
         # exclude = []

+ 40 - 33
server/api/views.py

@@ -188,13 +188,17 @@ class addUser(APIView):
         #     return JsonResponse({'code': 0, 'result': {'data': '角色创建成功'}}, json_dumps_params={"ensure_ascii": False})
 
 
-class editUser(View):
+class editUser(APIView):
+    serialize_class = UserSerializer
+
     def post(self, request):
         data = json.loads(request.body)
+        userSer = UserSerializer(data=data)
         user = User.objects.all().filter(id=data.get('id')).first()
-        if User.objects.all().filter(username=data.get('username')) and user.username != data.get('username'):
-            return JsonResponse({'code': 1, 'type': 'error', 'message': '该角色名已被占用'}, json_dumps_params={"ensure_ascii": False})
-        if user:
+
+        if not userSer.is_valid() and user.username != data.get('username'):
+            return JsonResponse({'code': 1, 'type': 'error', 'message': '字段校验未通过', 'result': userSer.errors}, json_dumps_params={"ensure_ascii": False})
+        else:
             menuIdList = data.pop('menus')
             menus = Menu.objects.all().filter(id__in=menuIdList)
             user.username = data.get('username')
@@ -205,10 +209,6 @@ class editUser(View):
             user.menus.set(menus)
             user.save()
             return JsonResponse({'code': 0, 'type': 'error', 'message': '修改成功', 'result': {'data': '修改成功'}}, json_dumps_params={"ensure_ascii": False})
-        else:
-            return JsonResponse({'code': 1, 'type': 'error', 'message': '查无此人'}, json_dumps_params={"ensure_ascii": False})
-            # userObj = User.objects.create(**data)
-            # userObj.menus.set(menus)
 
 
 class deleteUser(View):
@@ -249,38 +249,45 @@ class getAllMenuList(View):
         return JsonResponse({'code': 0, 'result': {'format': True, 'menus': menus}}, json_dumps_params={"ensure_ascii": False})
 
 
-class addMenu(View):
+class addMenu(APIView):
+    serialize_class = MenuSerializer
+
     def post(self, request):
         data = json.loads(request.body)
         data['title'] = data.pop('menuName')
-        if data.get('parent'):
-            parentId = data.pop('parent')
-            parent = Menu.objects.all().filter(id=parentId).first()
-            data['parent'] = parent
-        menuObj = Menu.objects.create(**data)
-        # if parent:
-        #     menuObj.parent.set(parent)
-        return JsonResponse({'code': 0, 'result': {'data': '菜单添加成功'}}, json_dumps_params={"ensure_ascii": False})
+        menuSer = MenuSerializer(data=data)
+        if menuSer.is_valid():
+            if data.get('parent'):
+                parentId = data.pop('parent')
+                parent = Menu.objects.all().filter(id=parentId).first()
+                data['parent'] = parent
+            menuObj = Menu.objects.create(**data)
+            return JsonResponse({'code': 0, 'result': {'data': '菜单添加成功'}}, json_dumps_params={"ensure_ascii": False})
+        else:
+            return JsonResponse({'code': 1, 'type': 'error', 'message': '字段校验未通过', "result": menuSer.errors}, json_dumps_params={"ensure_ascii": False})
+
 
+class editMenu(APIView):
+    serialize_class = MenuSerializer
 
-class editMenu(View):
     def post(self, request):
         data = json.loads(request.body)
-        menu = Menu.objects.all().filter(id=data.get('id')).first()
-        menu.icon = data.get('icon')
-        menu.title = data.get('menuName')
-        menu.path = data.get('path')
-        menu.reditect = data.get('reditect')
-        menu.component = data.get('component')
-        menu.status = data.get('status')
-        menu.detail = data.get('detail')
-        menu.parent = Menu.objects.all().filter(id=data.get('parent')).first()
-        # if data.get('parent'):
-        #     parentId = data.pop('parent')
-        #     menu.parent.add(parent)
-        # print(menu)
-        menu.save()
-        return JsonResponse({'code': 0, 'result': {'data': '菜单修改成功'}}, json_dumps_params={"ensure_ascii": False})
+        data['title'] = data.pop('menuName')
+        menuSer = MenuSerializer(data=data)
+        if menuSer.is_valid():
+            menu = Menu.objects.all().filter(id=data.get('id')).first()
+            menu.icon = data.get('icon')
+            menu.title = data.get('title')
+            menu.path = data.get('path')
+            menu.reditect = data.get('reditect')
+            menu.component = data.get('component')
+            menu.status = data.get('status')
+            menu.detail = data.get('detail')
+            menu.parent = Menu.objects.all().filter(id=data.get('parent')).first()
+            menu.save()
+            return JsonResponse({'code': 0, 'result': {'data': '菜单修改成功'}}, json_dumps_params={"ensure_ascii": False})
+        else:
+            return JsonResponse({'code': 1, 'type': 'error', 'message': '字段校验未通过', "result": menuSer.errors}, json_dumps_params={"ensure_ascii": False})
 
 
 class deleteMenu(View):

+ 18 - 13
src/views/permission/menu/index.vue

@@ -149,23 +149,28 @@
           treeData: getTableAction().getDataSource(),
         });
       }
+      let selectData = null
+      function updataSelectData(data,id) {
+          data.map(item => {
+            if (item.id === id) {
+              selectData = item
+            }else {
+              if(item.children) {
+                updataSelectData(item.children,id)
+              }
+          }
+        })
+      }
 
-      function handleEdit(record: EditRecordRow) {
+      async function handleEdit(record: EditRecordRow) {
         currentEditKeyRef.value = record.id;  // record.key
+
         const data = getTableAction().getDataSource()
-        data.map(item => {
-          if (item.id === record.id) {
-            record = item
-          }
-        })
-        console.log(record)
+        await updataSelectData(data,record.id)
+        record = selectData as any
         openAddModel(true, {
-          // id: record.id,
-          // name: record.name,
-          // password: record.password,
-          // detail: record.detail,
           ...record,
-          treeData: getTableAction().getDataSource(),
+          treeData: data,
           isUpdate: true,
         });
       }
@@ -226,7 +231,7 @@
         getSelectRowKeyList,
         addRegister,
         saveData,
-        getAllMenuList
+        getAllMenuList,
       };
     },
   });