Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master'

wushaodong 4 жил өмнө
parent
commit
a00a9e3b7f

+ 10 - 2
apps/account/views.py

@@ -11,6 +11,7 @@ from django.contrib.auth.models import Group, Permission
 from rest_framework_jwt.views import ObtainJSONWebToken, VerifyJSONWebToken, RefreshJSONWebToken
 from utils import response_error, response_ok
 from django.contrib.auth import get_user_model
+from django.utils import timezone
 
 User = get_user_model()
 from apps.account.serializers import JWTSerializer, EmployeeSerializer, GroupDictSerializer, GroupSerializer
@@ -32,12 +33,17 @@ class LoginView(ObtainJSONWebToken):
             ser.request = request
             # TODO 判断门店是否在用、在有效期内
             if ser.is_valid(raise_exception=True):
+                user = User.objects.filter(id=ser.validated_data['user_id']).first()
+                store = Store.objects.filter(id=user.store_id).first()
+                if store.enable == False or (store.end_date.strftime('%Y-%m-%d')) < (timezone.now().strftime('%Y-%m-%d')):
+                    raise CustomError(u'当前帐号不可用,请联系管理员!')
                 return response_ok(ser.validated_data)
         except ValidationError as e:
             return response_error(e.detail['error'][0])
 
 
 class RefreshTokenView(RefreshJSONWebToken):
+
     def post(self, request, *args, **kwargs):
         try:
             ser = self.serializer_class(data=request.data)
@@ -46,7 +52,9 @@ class RefreshTokenView(RefreshJSONWebToken):
         except ValidationError as e:
             return response_error(u'登录状态失效,请重新登录')
 
+
 class ChangePassword(APIView):
+
     def post(self, request, *args, **kwargs):
         id = request.GET.get('id')
         data = json.loads(request.body)
@@ -129,7 +137,7 @@ class EmployeeViewSet(CustomModelViewSet):
     @action(methods=['post'], detail=True)
     def branch(self, request, pk):
         check_permission(request, 'account.manager_store')
-        data = json.loads(request.POST.get('sotres'))
+        data = json.loads(request.POST.get('stores'))
         try:
             with transaction.atomic():
                 instance = self.get_object()
@@ -273,7 +281,7 @@ class EmployeeTreeView(APIView):
         exist_agents = []
         manage_storess = request.user.get_manager_range()
         for store_id in manage_storess:
-            store = Store.objects.filter(id=store_id, enable=True).values('name','agent_id')
+            store = Store.objects.filter(id=store_id, check_user__isnull=False, enable=True).values('name','agent_id')
             if not store:
                 continue
             store_item = {

+ 2 - 1
apps/agent/views.py

@@ -6,6 +6,7 @@ from rest_framework.decorators import action
 from rest_framework.views import APIView
 from django.conf import settings
 from django.db import transaction
+
 from utils import response_ok, response_error
 from utils.exceptions import CustomError
 from apps.log.models import BizLog
@@ -143,7 +144,7 @@ class AgentDictView(APIView):
             stores = []
 
             for row in rows:
-                store = Store.objects.filter(agent=row, enable=True,check_user__isnull=False, end_date__gte=timezone.now().date())
+                store = Store.objects.filter(agent=row, enable=True, check_user__isnull=False, end_date__gte=timezone.now().date())
                 if request.user.store:
                     store = store.filter(id=request.user.store.id)
                 store_serializer = StoreComboboxSerializer(store, many=True).data

+ 34 - 31
apps/customer/views.py

@@ -99,6 +99,7 @@ class ReportCustomerViewSet(CustomModelViewSet):
                 # 根据分配人所在店面,创建内部跟踪提醒
                 remind_users = request.user.get_remind_users()
                 # TODO 把next_time用当前日期加上5天
+                next_time = (timezone.now() + datetime.timedelta(days=5)).strftime('%Y-%m-%d')
                 for remind_user in remind_users:
                     NewCustomerRemind.objects.create(customer=customer, next_time=next_time, remind_user_id=remind_user,
                                                      is_employee=False)
@@ -314,19 +315,20 @@ class NewCustomerViewSet(CustomModelViewSet):
         is_copy = request.POST.get('is_copy') == '1'
 
         try:
-            instance = NewCustomer.objects.filter(id=pk).first()
+            with transaction.atomic():
+                instance = NewCustomer.objects.filter(id=pk).first()
 
-            data = {
-                'customer': instance.id,
-                'store': instance.store.id,
-                'create_user': request.user.id,
-                'description': description,
-                'is_copy': is_copy,
-            }
-            serializer = ReviewSerializer(data=data)
-            if serializer.is_valid(raise_exception=True):
-                serializer.save()
-            NewCustomerRemind.objects.filter(customer=instance, remind_user=request.user).update(next_time=next_time)
+                data = {
+                    'customer': instance.id,
+                    'store': instance.store.id,
+                    'create_user': request.user.id,
+                    'description': description,
+                    'is_copy': is_copy,
+                }
+                serializer = ReviewSerializer(data=data)
+                if serializer.is_valid(raise_exception=True):
+                    serializer.save()
+                NewCustomerRemind.objects.filter(customer=instance, remind_user=request.user).update(next_time=next_time)
 
         except ValidationError as e:
             traceback.print_exc()
@@ -408,25 +410,26 @@ class ReviewViewSet(CustomModelViewSet):
         check_comment = request.POST.get('check_comment')
         next_time = request.POST.get('next_time')
         try:
-            instance = Review.objects.filter(id=pk).first()
-            if int(check_status) == Review.KEEPUP:
-                instance.check_user = request.user
-                instance.check_status = check_status
-                instance.check_comment = check_comment
-                instance.check_time = timezone.now()
-                instance.save()
-            if int(check_status) == Review.ABANDON:
-                instance.check_user = request.user
-                instance.check_status = check_status
-                instance.check_comment = check_comment
-                instance.check_time = timezone.now()
-                instance.save()
-                instance.customer.status = NewCustomer.ABANDONED
-                # 如果客户已下单,把工单状态改成放弃
-                Order.objects.filter(customer=instance.customer).update(status=Order.ABANDONED)
-            instance.customer.next_time = next_time
-            instance.customer.save()
-            NewCustomerRemind.objects.filter(customer=instance.customer, remind_user=instance.customer.track_user).update(next_time=next_time)
+            with transaction.atomic():
+                instance = Review.objects.filter(id=pk).first()
+                if int(check_status) == Review.KEEPUP:
+                    instance.check_user = request.user
+                    instance.check_status = check_status
+                    instance.check_comment = check_comment
+                    instance.check_time = timezone.now()
+                    instance.save()
+                if int(check_status) == Review.ABANDON:
+                    instance.check_user = request.user
+                    instance.check_status = check_status
+                    instance.check_comment = check_comment
+                    instance.check_time = timezone.now()
+                    instance.save()
+                    instance.customer.status = NewCustomer.ABANDONED
+                    # 如果客户已下单,把工单状态改成放弃
+                    Order.objects.filter(customer=instance.customer).update(status=Order.ABANDONED)
+                instance.customer.next_time = next_time
+                instance.customer.save()
+                NewCustomerRemind.objects.filter(customer=instance.customer, remind_user=instance.customer.track_user).update(next_time=next_time)
         except CustomError as e:
             return response_error(e.get_error_msg())
         except Exception as e:

+ 1 - 2
uis/views/option/edit.html

@@ -58,8 +58,7 @@
                             <div class="layui-col-lg6 layui-hide" id="id_end_stage">
                                 <label class="layui-form-label" style="width: 13.5%">是否最终阶段:</label>
                                 <div class="layui-input-block">
-                                    <input type="checkbox" name="end_stage" lay-skin="switch" lay-text="是|否" checked=""
-                                           value="1">
+                                    <input type="checkbox" name="end_stage" lay-skin="switch" lay-text="是|否">
                                 </div>
                             </div>
                             <div class="layui-col-lg6">

+ 6 - 0
uis/views/order/detail.html

@@ -58,6 +58,12 @@
               <td style="background: #f8f8f8; width: 70px">客户电话:</td>
               <td>{{ d.tel || "" }}</td>
             </tr>
+            <tr>
+              <td style="background: #f8f8f8; width: 70px">项目:</td>
+              <td>{{ d.project_text || "" }}</td>
+              <td style="background: #f8f8f8; width: 70px">小区:</td>
+              <td>{{ d.village || "" }}</td>
+            </tr>
             <tr>
               <td style="background: #f8f8f8; width: 70px">客户地址:</td>
               <td>{{ d.address || "" }}</td>