ソースを参照

潜客树查询

wushaodong 4 年 前
コミット
fd7433d141

+ 27 - 2
apps/customer/filters.py

@@ -1,7 +1,7 @@
 # coding=utf-8
 import django_filters
-
-from .models import ReportCustomer, NewCustomer, Review
+from django.utils import timezone
+from .models import ReportCustomer, NewCustomer, Review, NewCustomerRemind
 
 
 class ReportCustomerFilter(django_filters.FilterSet):
@@ -16,6 +16,31 @@ class ReportCustomerFilter(django_filters.FilterSet):
 class NewCustomerFilter(django_filters.FilterSet):
     name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
     tel = django_filters.CharFilter(field_name='tel', lookup_expr='icontains')
+    param = django_filters.CharFilter(method='param_filter')
+    count_param = django_filters.CharFilter(method='count_param_filter')
+
+    def param_filter(self, queryset, name,value):
+        param = value.split('_')
+        if param[0] == 'store':
+            queryset = queryset.filter(store_id=param[1])
+        elif param[0] == 'user':
+            customer_ids = NewCustomerRemind.objects.filter(remind_user_id=param[1]).values_list('customer_id',flat=True)
+            queryset = queryset.filter(id__in=customer_ids)
+        elif param[0] == 'agent':
+            queryset = queryset.filter(store__agent_id=param[1])
+        elif param[0] == 'general_agent':
+            queryset = queryset.filter(store__agent__general_agent_id=param[1])
+        return queryset
+
+    def count_param_filter(self, queryset, name,value):
+        today = timezone.now()
+        if value == 'today':
+            customer_ids = NewCustomerRemind.objects.filter(next_time=today).values_list('customer_id', flat=True)
+            queryset = queryset.filter(id__in=customer_ids)
+        elif value == 'overdue':
+            customer_ids = NewCustomerRemind.objects.filter(next_time__lt=today).values_list('customer_id',flat=True)
+            queryset = queryset.filter(id__in=customer_ids)
+        return queryset
 
     class Meta:
         model = NewCustomer

+ 4 - 1
apps/customer/views.py

@@ -318,7 +318,6 @@ class StageCountView(APIView):
         id = request.query_params.get('id') or request.user.id
         data = []
         stage_progress = Option.objects.filter(type=Option.STAGE_PROGRESS, enable=True).order_by('sort').values('id','name')
-        user = request.user
         time_now = timezone.now().strftime('%Y-%m-%d')
         for stage in stage_progress:
             reminds = NewCustomerRemind.objects.filter(customer__stage_progress=stage['id'])
@@ -326,6 +325,10 @@ class StageCountView(APIView):
                 reminds = reminds.filter(customer__store_id=id, is_employee=True)
             elif type == 'user':
                 reminds = reminds.filter(remind_user_id=id)
+            elif type == 'agent':
+                reminds = reminds.filter(customer__store__agent_id=id, is_employee=True)
+            elif type == 'general_agent':
+                reminds = reminds.filter(customer__store__agent__general_agent_id=id, is_employee=True)
 
             # new_customers = NewCustomer.objects.filter(
             #     Q(track_user=user) |

+ 33 - 36
uis/views/customer/index.html

@@ -64,15 +64,17 @@
             color: #fff;
         }
 
-        .treeContent{
+        .treeContent {
             height: 30vh;
             overflow-y: scroll;
             margin-bottom: 10px;
-            border: 1px solid rgba(0,0,0,0.1);
+            border: 1px solid rgba(0, 0, 0, 0.1);
         }
+
         /*隐藏滚动条*/
         .treeContent::-webkit-scrollbar {
-            height: 0 !important;width:0px !important;
+            height: 0 !important;
+            width: 0px !important;
         }
     </style>
 
@@ -232,34 +234,37 @@
         });
 
         var manager_stores = layui.data(layui.setter.tableName)['manager_stores'];
-        if(parseInt(manager_stores) !== 0){
+        if (parseInt(manager_stores) !== 0) {
             admin.req({
                 url: '/account/employee_tree2/'
                 , done: function (res) {
                     tree.render({
-                       elem: '#id_tree'  //绑定元素
-                      ,onlyIconControl: true
-                      ,data: res.data
-                      //点击菜单时触发
-                      ,click: function(obj) {
-                         //节点高亮
-                        var nodes = document.getElementsByClassName("layui-tree-txt");
-                        for(var i=0;i<nodes.length;i++){
-                            if(nodes[i].innerHTML === obj.data.title){
-                                nodes[i].style.color = "#009688";
-                                nodes[i].style.fontWeight= "bold";
-                            }else{
-                                nodes[i].style.color= "#555";
-                                nodes[i].style.fontWeight= "normal";
+                        elem: '#id_tree'  //绑定元素
+                        , onlyIconControl: true
+                        , data: res.data
+                        //点击菜单时触发
+                        , click: function (obj) {
+                            //节点高亮
+                            var nodes = document.getElementsByClassName("layui-tree-txt");
+                            for (var i = 0; i < nodes.length; i++) {
+                                if (nodes[i].innerHTML === obj.data.title) {
+                                    nodes[i].style.color = "#009688";
+                                    nodes[i].style.fontWeight = "bold";
+                                } else {
+                                    nodes[i].style.color = "#555";
+                                    nodes[i].style.fontWeight = "normal";
+                                }
                             }
+                            store_id = obj.data.id;
+                            field = obj.data.field;
+                            table.reload('customer_log', {
+                                where: {type:field,id:store_id}
+                            });
                         }
-                        store_id = obj.data.id;
-                        field = obj.data.field;
-                      }
                     });
                 }
             });
-        }else{
+        } else {
             $('#id_tree').hide()
         }
 
@@ -334,7 +339,7 @@
             } else if (obj.event === 'add_review') {
                 //添加跟踪报告
                 createFollowReport(data.id, data.stage_progress_sort)
-            }else if(obj.event === 'internal_trace'){
+            } else if (obj.event === 'internal_trace') {
                 layer.open({
                     type: 2,
                     title: '内部跟踪',
@@ -361,29 +366,21 @@
         });
 
         // 点击表格触发
-        table.on('tool(customer-operate-log)', function(obj){
+        table.on('tool(customer-operate-log)', function (obj) {
             var data = obj.data;
             let tool_event = obj.event;
-            let params = {};
+            let params = {count_param:tool_event};
             params['stage_progress'] = data.stage_id;
-            let url = '/customer/new_customer/'
-            if(field && store_id){
-                url = `/customer/new_customer/?type=${field}&id=${store_id}`
+            if (field && store_id) {
+                params['param'] = field + '_' + store_id;
             }
-            if(tool_event === 'today'){
-                params['today'] = 'today';
-            }else if(tool_event === 'overdue'){
-                params['overdue'] = 'overdue';
-            };
             table.reload('customer_datagrid', {
-                url
-                , where: params
+                where: params
                 , page: {curr: 1}
             });
         });
 
 
-
         var _params = {};
         form.on('submit(query-form-element)', function (data) {
             _params = data.field;

+ 1 - 1
uis/views/report_check/index.html

@@ -113,7 +113,7 @@
                 , {field: 'tel', title: '电话', width: 120}
                 , {field: 'project_text', title: '项目', width: 200}
                 , {field: 'create_time_f', title: '报备时间', width: 160}
-                , {field: 'create_user_text', title: '报备人', width: 120}
+                , {field: 'create_user_text', title: '报备人', width: 150}
                 , {field: 'hit_customer', title: '撞单客户', width: 100}
                 , {field: 'hit_project', title: '撞单项目', width: 100}
                 , {field: 'hit_track_user', title: '撞单跟踪人', width: 100}

+ 1 - 1
uis/views/report_customer/index.html

@@ -124,7 +124,7 @@
                 , {field: 'project_text', title: '项目', width: 200}
                 , {field: 'notes', title: '备注', width: 200}
                 , {field: 'report_status_text', title: '报备状态', width: 100}
-                , {field: 'create_user_text', title: '报备人', width: 100}
+                , {field: 'create_user_text', title: '报备人', width: 150}
                 , {field: 'create_time_f', title: '报备时间', width: 150}
                 , {field: 'check_user_text', title: '审核人', width: 100}
                 , {field: 'check_time_f', title: '审核时间', width: 160}