浏览代码

Merge remote-tracking branch 'origin/master'

wushaodong 4 年之前
父节点
当前提交
262aa8e07e

+ 1 - 0
apps/new_customer/customer/__init__.py

@@ -0,0 +1 @@
+# coding=utf-8

+ 12 - 0
apps/new_customer/customer/filters.py

@@ -0,0 +1,12 @@
+# coding=utf-8
+import django_filters
+
+from .models import Customer
+
+class CustomerFilter(django_filters.FilterSet):
+    name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
+    tel = django_filters.CharFilter(field_name='tel', lookup_expr='icontains')
+
+    class Meta:
+        model = Customer
+        fields = '__all__'

+ 48 - 0
apps/new_customer/customer/models.py

@@ -0,0 +1,48 @@
+# coding=utf-8
+from django.db import models
+from django.conf import settings
+
+
+class Customer(models.Model):
+    NOT_CHECKED = 0
+    CHECKED = 1
+    REPEAT_REPORT = 2
+    STATUS_CHOICES = (
+        (NOT_CHECKED, '待审核'),
+        (CHECKED, '已审核'),
+        (REPEAT_REPORT, '重复报备')
+    )
+
+    name = models.CharField(max_length=100, verbose_name=u"姓名")
+    tel = models.CharField(max_length=50, verbose_name=u'电话')
+    gender = models.PositiveSmallIntegerField(choices=settings.GENDER_CHOICES, verbose_name=u'性别',
+                                              default=settings.MALE)
+    village = models.CharField(max_length=100,verbose_name=u'小区')
+    address = models.CharField(max_length=100,verbose_name=u'地址')
+    source = models.CharField(max_length=100,verbose_name=u'来源')
+
+    # project = models.ForeignKey('',max_length=20, verbose_name=u'项目', null=True)
+    notes = models.CharField(max_length=500, verbose_name=u"备注", null=True)
+    report_status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'报备状态',default=NOT_CHECKED)
+    check_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'审核人',related_name='customer_check_user',
+                                   on_delete=models.PROTECT,null=True)
+    check_time = models.DateTimeField(verbose_name=u'审核时间', editable=False, null=True)
+
+
+    class Meta:
+        db_table = 'customer'
+        verbose_name = u'客户报备'
+        ordering = ['-id']
+        default_permissions = ()
+        permissions = [
+            ('view_customer', u'查看'),
+            ('add_customer', u'添加'),
+            ('delete_customer', u'删除'),
+            ('check_customer', u'审核'),
+        ]
+
+
+
+
+
+

+ 13 - 0
apps/new_customer/customer/serializers.py

@@ -0,0 +1,13 @@
+# coding=utf-8
+from rest_framework import serializers
+
+from .models import Customer
+
+class CustomerSerializer(serializers.ModelSerializer):
+    gender_text = serializers.CharField(source='get_gender_display', read_only=True)
+    report_status_text = serializers.CharField(source='get_report_status_display', read_only=True)
+    check_time= serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
+
+    class Meta:
+        model = Customer
+        fields = '__all__'

+ 13 - 0
apps/new_customer/customer/urls.py

@@ -0,0 +1,13 @@
+# coding=utf-8
+from django.conf.urls import url, include
+from rest_framework.routers import SimpleRouter
+
+from .views import CustomerViewSet
+
+urlpatterns = [
+
+]
+
+router = SimpleRouter()
+router.register(r'', CustomerViewSet)
+urlpatterns += router.urls

+ 64 - 0
apps/new_customer/customer/views.py

@@ -0,0 +1,64 @@
+# coding=utf-8
+from rest_framework.decorators import action
+from rest_framework import permissions
+from django.utils import timezone
+
+from utils.custom_modelviewset import CustomModelViewSet
+from utils.permission import IsAdministratorUser,IsTenantUser
+from utils.exceptions import CustomError
+from utils import response_ok, response_error
+from .models import Customer
+from .serializers import CustomerSerializer
+from .filters import CustomerFilter
+
+
+class CustomerViewSet(CustomModelViewSet):
+    permission_classes = []
+    queryset = Customer.objects.filter()
+    serializer_class = CustomerSerializer
+
+    def filter_queryset(self, queryset):
+        f = CustomerFilter(self.request.GET, queryset=queryset)
+        return f.qs
+
+    def perform_create(self, serializer):
+        super(CustomerViewSet, self).perform_create(serializer)
+        instance = serializer.instance
+        validated_data = serializer.validated_data
+
+    def perform_update(self, serializer):
+        super(CustomerViewSet, self).perform_update(serializer)
+        instance = serializer.instance
+        validated_data = serializer.validated_data
+
+    def destroy(self, request, *args, **kwargs):
+        instance = self.get_object()
+        # if instance.tenant != request.user.employee.tenant:
+        #     raise CustomError(u'禁止跨企业操作!')
+        super(CustomerViewSet, self).destroy(self, request, *args, **kwargs)
+        return response_ok()
+
+    @action(methods=['post'], detail=True)
+    def check(self, request, pk):
+        # 审核
+        report_status = request.POST.get('report_status')
+        try:
+            instance = Customer.objects.filter(id=pk).first()
+            if not instance:
+                raise CustomError('当前客户报备有误!')
+            if instance.report_status == Customer.CHECKED:
+                instance.report_status = Customer.REPEAT_REPORT
+                instance.save()
+                return response_ok('当前客户已审核!')
+            if instance.report_status == Customer.REPEAT_REPORT:
+                raise CustomError('当前用户已重复报备!')
+
+            instance.report_status = report_status
+            instance.check_time = timezone.now()
+            instance.save()
+
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+        return response_ok('审核完成!')

+ 13 - 0
apps/new_customer/urls.py

@@ -0,0 +1,13 @@
+# coding=utf-8
+from django.conf.urls import url, include
+from rest_framework.routers import SimpleRouter
+
+
+
+urlpatterns = [
+    url(r'^customer/', include('apps.new_customer.customer.urls')),
+]
+
+# router = SimpleRouter()
+# router.register(r'', )
+# urlpatterns += router.urls

+ 1 - 0
decorate/settings.py

@@ -48,6 +48,7 @@ INSTALLED_APPS = [
     'apps.api',
     'apps.upload',
     'apps.agent',
+    'apps.new_customer',
     'apps.option',
 
 ]

+ 1 - 0
decorate/urls.py

@@ -25,6 +25,7 @@ urlpatterns = [
     url(r'^$', index),
     url(r'^account/', include('apps.account.urls')),
     url(r'^api/', include('apps.api.urls')),
+    url(r'^new_customer/', include('apps.new_customer.urls')),
     url(r'^option/', include('apps.option.urls')),
 ]
 

+ 11 - 5
uis/views/customer/edit.html

@@ -120,8 +120,14 @@
             , form = layui.form
         var id = layui.view.getParameterByName('id');
 
-        formSelects.data('tags', 'server', {
-            url: '/api/subject.json'
+        formSelects.data('tags', 'local', {
+            arr: [
+                {"name": "北京", "value": 1},
+                {"name": "上海", "value": 2},
+                {"name": "广州", "value": 3},
+                {"name": "深圳", "value": 4},
+                {"name": "天津", "value": 5}
+            ]
         });
 
 
@@ -133,10 +139,10 @@
 
         form.on('submit(component-form-element)', function (data) {
             if (id) {
-                var url = '/tenant/device/' + id + '/';
-                var type = 'put';
+                var url = '/new_customer/customer/' + id + '/';
+                var type = 'post';
             } else {
-                url = '/tenant/device/';
+                url = '/new_customer/customer/';
                 type = 'post'
             }
 

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

@@ -124,7 +124,7 @@
 
         table.render({
             elem: '#customer_datagrid'
-            , url: '/api/customer.json'
+            , url: '/new_customer/customer/'
             , cols: [[
                 {field: 'name', title: '姓名', width: 200}
                 , {field: 'sex_text', title: "性别", width: 70}