Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

wushaodong před 4 roky
rodič
revize
3a2308b79a

+ 8 - 2
apps/agent/serializers.py

@@ -36,15 +36,21 @@ class AgentSerializer(serializers.ModelSerializer):
         return instance
 
 
+class GeneralAgentComboboxSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = GeneralAgent
+        fields = ('id', 'name',)
+
+
 class AgentComboboxSerializer(serializers.ModelSerializer):
     class Meta:
         model = Agent
-        fields = ('id', 'name',)
+        fields = ('id', 'name', 'general_agent_id')
 
 class StoreComboboxSerializer(serializers.ModelSerializer):
     class Meta:
         model = Store
-        fields = ('id', 'name',)
+        fields = ('id', 'name', 'agent_id')
 
 class StoreSerializer(serializers.ModelSerializer):
     create_user_text = serializers.CharField(source='create_user.name', read_only=True)

+ 19 - 14
apps/agent/views.py

@@ -9,15 +9,15 @@ from django.conf import settings
 from utils import response_ok, response_error
 from utils.exceptions import CustomError
 from apps.log.models import BizLog
-from .models import GeneralAgent,Agent,Store
-from .serializers import GeneralAgentSerializer,AgentSerializer,StoreSerializer
-from .filters import GeneralAgentFilter,AgentFilter,StoreFilter
+from .models import GeneralAgent, Agent, Store
+from .serializers import GeneralAgentSerializer, AgentSerializer, StoreSerializer
+from .filters import GeneralAgentFilter, AgentFilter, StoreFilter
 from utils.permission import isLogin, permission_required
-from apps.agent.serializers import AgentComboboxSerializer,StoreComboboxSerializer
+from apps.agent.serializers import AgentComboboxSerializer, StoreComboboxSerializer, GeneralAgentComboboxSerializer
 
 
 class GeneralAgentViewSet(CustomModelViewSet):
-    permission_classes = []
+    permission_classes = [isLogin, ]
     queryset = GeneralAgent.objects.filter()
     serializer_class = GeneralAgentSerializer
 
@@ -42,7 +42,7 @@ class GeneralAgentViewSet(CustomModelViewSet):
 
 
 class AgentViewSet(CustomModelViewSet):
-    permission_classes = []
+    permission_classes = [isLogin, ]
     queryset = Agent.objects.filter()
     serializer_class = AgentSerializer
 
@@ -69,7 +69,7 @@ class AgentViewSet(CustomModelViewSet):
         return response_ok()
 
 class StoreViewSet(CustomModelViewSet):
-    permission_classes = []
+    permission_classes = [isLogin, ]
     queryset = Store.objects.filter()
     serializer_class = StoreSerializer
 
@@ -124,14 +124,19 @@ class AgentDictView(APIView):
     permission_classes = [isLogin, ]
 
     def get(self, request):
-        rows = Agent.objects.filter(Q(create_user=request.user) | Q(id=request.user.agent_id))
-        agents = AgentComboboxSerializer(rows, many=True).data
-        stores = []
-        for row in rows:
-            store = Store.objects.filter(agent=row, enable=True, end_date__gte=timezone.now().date())
-            store_serializer = StoreComboboxSerializer(store, many=True).data
-            stores.extend(store_serializer)
+        general_agent_rows = GeneralAgent.objects.filter(Q(create_user=request.user) | Q(id=request.user.general_agent_id))
+        general_agents = GeneralAgentComboboxSerializer(general_agent_rows, many=True).data
+        for general_agent_row in general_agent_rows:
+            rows = Agent.objects.filter(general_agent=general_agent_row)
+            agents = AgentComboboxSerializer(rows, many=True).data
+            stores = []
+
+            for row in rows:
+                store = Store.objects.filter(agent=row, enable=True, end_date__gte=timezone.now().date())
+                store_serializer = StoreComboboxSerializer(store, many=True).data
+                stores.extend(store_serializer)
         return response_ok({
+            'general_agents': general_agents,
             'agents': agents,
             'stores': stores,
         })

+ 1 - 1
apps/customer/views.py

@@ -148,7 +148,7 @@ class UserDictView(APIView):
 
 
 class NewCustomerViewSet(CustomModelViewSet):
-    permission_classes = []
+    permission_classes = [isLogin, ]
     queryset = NewCustomer.objects.filter()
     serializer_class = NewCustomerSerializer
 

+ 55 - 32
uis/views/employee/edit.html

@@ -78,9 +78,19 @@
                             </div>
                             <div class="layui-col-lg6">
                                 <div class="layui-col-lg6">
-                                    <label class="layui-form-label"><font color='red' size="4">*</font>代理:</label>
+                                    <label class="layui-form-label"><font color='red' size="4">*</font>代理:</label>
                                     <div class="layui-input-block">
-                                        <select id="id_agents" name="agent" lay-verify="required"
+                                        <select id="id_general" name="general_agent" lay-verify="required">
+                                            <option value="">选择总代理</option>
+                                        </select>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-lg6">
+                                <div class="layui-col-lg6">
+                                    <label class="layui-form-label">代理商:</label>
+                                    <div class="layui-input-block">
+                                        <select id="id_agents" name="agent"
                                                 lay-filter="onAgentChange">
                                             <option value="">选择代理商</option>
                                         </select>
@@ -151,40 +161,54 @@
                 form.val("component-form-element", {
                     'password': ''
                 });
-                onAgentChange(editdata.agent)
             }
         }
         form.render(null, 'component-form-element');
-        var stores = []
-        admin.req({
-            url: '/agent/dict/',
-            done: function (res) {
-                var agents = res.data.agents;
-                stores = res.data.stores;
-                var agents_node = $('#id_agents');
-                for (var i in agents) {
-                    var pid = agents[i].id;
-                    var agents_value = agents[i].name;
-                    agents_node.append("<option value='" + pid + "'>" + agents_value + "</option>");
-                }
-                form.render();
-                loadData();
-            }
-        });
+        async function getDict(){
+            return new Promise((resolve, reject)=>{
+                admin.req({
+                    url: '/agent/dict/',
+                    done: function (res) {
+                        var general_agents = res.data.general_agents;
+                        var agents = res.data.agents;
+                        var stores = res.data.stores;
+                        //代理商下拉框更新
+                        // var agents_node = $('#id_agents');
+                        // for (var i in agents) {
+                        //     var pid = agents[i].id;
+                        //     var agents_value = agents[i].name;
+                        //     agents_node.append("<option value='" + pid + "'>" + agents_value + "</option>");
+                        // }
+                        //总代理下拉框更新
+                        var general_node = $('#id_general');
+                        for (var i in general_agents) {
+                            var pid = general_agents[i].id;
+                            var general_agents_value = general_agents[i].name;
+                            general_node.append("<option value='" + pid + "'>" + general_agents_value + "</option>");
+                        }
+                        form.render();
+                        loadData();
+                    }
+                });
+            })
+        }
+        //页面初次加载渲染页面
+        getDict();
+        //选择代理商
         form.on('select(onAgentChange)', function (data) {
-            onAgentChange(data.value)
+
         });
-        var onAgentChange = function (value) {
-            var store_node = $('#id_stores');
-            for (var i in stores) {
-                var pid = stores[i].id;
-                var stores_value = stores[i].name;
-                if (pid == value) {
-                    store_node.append("<option value='" + pid + "'>" + stores_value + "</option>");
-                }
-            }
-            form.render();
-        }
+        // var onAgentChange = function (value) {
+        //     var store_node = $('#id_stores');
+        //     for (var i in stores) {
+        //         var pid = stores[i].id;
+        //         var stores_value = stores[i].name;
+        //         if (pid == value) {
+        //             store_node.append("<option value='" + pid + "'>" + stores_value + "</option>");
+        //         }
+        //     }
+        //     form.render();
+        // }
         formSelects.config('selectGroup', {
             beforeSuccess: function (eid, url, searchVal, result) {
                 if (id) {
@@ -195,7 +219,6 @@
                             item.selected = 'selected';
                     }
                 }
-                loadData()
                 return result;
             }
         });