Browse Source

门店列表树

胡敬培 4 năm trước cách đây
mục cha
commit
6de57b0864
1 tập tin đã thay đổi với 39 bổ sung20 xóa
  1. 39 20
      apps/account/views.py

+ 39 - 20
apps/account/views.py

@@ -245,34 +245,53 @@ class StoreTreeView(APIView):
 
     @permission_required('account.manager_store')
     def get(self, request):
-        id = request.GET.get('id')
         store_data = []
 
         # 查询当前用户的代理商和管理的门店
+        general_agents = GeneralAgent.objects.filter()
         agents = Agent.objects.filter()
+        stores = Store.objects.filter()
+        manage_user = ManageStoreUser.objects.filter(manage_user_id=request.user.id)
         if not request.user.is_superuser:
-            agents = agents.filter(id=request.user.agent_id)
-        agents = agents.values('id', 'name')
-        for agent in agents:
-            item = {
-                'title': agent['name'],
-                'id': agent['id'],
-                'field': 'agent',
+            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:
+                    if not manage_user:
+                        raise CustomError(u'无人员查看权限!')
+                    stores = Store.objects.filter(id=request.user.store_id, enable=True)
+
+        general_agents = general_agents.values('id', 'name')
+        for general_agent in general_agents:
+            general_agent_item = {
+                'title': general_agent['name'],
+                'id': general_agent['id'],
+                'field': 'general_agent',
                 'children': [],
             }
-            stores = Store.objects.filter(agent_id=agent['id'],id__in=request.user.get_manager_range(),check_user__isnull=False, enable=True).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']),
+            if not request.user.agent:
+                agents = Agent.objects.filter(general_agent_id=general_agent['id'])
+            agents = agents.values('id', 'name')
+            for agent in agents:
+                agent_item = {
+                    'title': agent['name'],
+                    'id': agent['id'],
+                    'field': 'agent',
+                    'children': [],
                 }
-                item['checked'] = checked
-                item['children'].append(store_item)
-            store_data.append(item)
+                general_agent_item['children'].append(agent_item)
+                if not request.user.store:
+                    stores = Store.objects.filter(agent_id=agent['id'], enable=True)
+                stores = stores.values('id', 'name')
+                for store in stores:
+                    store_item = {
+                        'title': store['name'],
+                        'id': store['id'],
+                        'field': 'store_{}'.format(store['id']),
+                    }
+                    agent_item['children'].append(store_item)
+            store_data.append(general_agent_item)
 
         return response_ok(store_data)