Răsfoiți Sursa

门店列表树

胡敬培 4 ani în urmă
părinte
comite
e87fda7268
1 a modificat fișierele cu 21 adăugiri și 12 ștergeri
  1. 21 12
      apps/account/views.py

+ 21 - 12
apps/account/views.py

@@ -245,20 +245,25 @@ class StoreTreeView(APIView):
 
     @permission_required('account.manager_store')
     def get(self, request):
+        id = request.GET.get('id')
         store_data = []
 
-        # 查询当前用户的代理商和管理的门店
+        # 查询用户的代理商和管理的门店
+        user = User.objects.filter(id=id).first()
         general_agents = GeneralAgent.objects.filter()
         agents = Agent.objects.filter()
         stores = Store.objects.filter()
-        if not request.user.is_superuser:
-            general_agents = GeneralAgent.objects.filter(id=request.user.general_agent_id)
-            if request.user.agent:
-                agents = Agent.objects.filter(id=request.user.agent_id,
-                                              general_agent_id=request.user.general_agent_id)
-                if request.user.store:
-                    stores = Store.objects.filter(id=request.user.store_id, enable=True)
-
+        manage_user = ManageStoreUser.objects.filter(manage_user_id=user.id)
+        if not user.is_superuser:
+            general_agents = GeneralAgent.objects.filter(id=user.general_agent_id)
+            if user.agent:
+                agents = Agent.objects.filter(id=user.agent_id,
+                                              general_agent_id=user.general_agent_id)
+                if user.store:
+                    if not manage_user:
+                        raise CustomError(u'无门店管理权限!')
+                    stores = Store.objects.filter(id=user.store_id, id__in=user.get_manager_range(),
+                                                  check_user__isnull=False, enable=True)
         general_agents = general_agents.values('id', 'name')
         for general_agent in general_agents:
             general_agent_item = {
@@ -267,7 +272,7 @@ class StoreTreeView(APIView):
                 'field': 'general_agent',
                 'children': [],
             }
-            if not request.user.agent:
+            if not user.agent:
                 agents = Agent.objects.filter(general_agent_id=general_agent['id'])
             agents = agents.values('id', 'name')
             for agent in agents:
@@ -278,15 +283,19 @@ class StoreTreeView(APIView):
                     'children': [],
                 }
                 general_agent_item['children'].append(agent_item)
-                if not request.user.store:
-                    stores = Store.objects.filter(agent_id=agent['id'], enable=True)
+                if not user.store:
+                    stores = Store.objects.filter(agent_id=agent['id'], check_user__isnull=False, enable=True)
                 stores = stores.values('id', 'name')
                 for store in stores:
+                    manage_store = ManageStoreUser.objects.filter(manage_user_id=id, store_id=store['id']).first()
+                    checked = manage_store and True or False
                     store_item = {
                         'title': store['name'],
                         'id': store['id'],
+                        'checked': checked,
                         'field': 'store_{}'.format(store['id']),
                     }
+                    agent_item['checked'] = checked
                     agent_item['children'].append(store_item)
             store_data.append(general_agent_item)