Explorar o código

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	apps/agent/serializers.py
#	apps/agent/urls.py
#	apps/agent/views.py
#	apps/new_customer/customer/views.py
#	decorate/urls.py
wushaodong %!s(int64=4) %!d(string=hai) anos
pai
achega
9184ed1d5b

+ 10 - 4
apps/agent/serializers.py

@@ -2,14 +2,14 @@
 
 from rest_framework import serializers
 from django.conf import settings
-from apps.upload.models import Upload
 from apps.agent.models import Agent,Store
 
-class UploadSerializer(serializers.ModelSerializer):
+class AgentSerializer(serializers.ModelSerializer):
 
     class Meta:
-        model = Upload
-        fields = ('picture', 'width', 'height', 'type', 'voice_time')
+        model = Agent
+        fields = '__all__'
+
 
 class AgentComboboxSerializer(serializers.ModelSerializer):
     class Meta:
@@ -20,3 +20,9 @@ class StoreComboboxSerializer(serializers.ModelSerializer):
     class Meta:
         model = Store
         fields = ('id', 'name',)
+
+class StoreSerializer(serializers.ModelSerializer):
+
+    class Meta:
+        model = Store
+        fields = '__all__'

+ 2 - 1
apps/agent/urls.py

@@ -7,5 +7,6 @@ urlpatterns = [
 ]
 
 router = SimpleRouter()
-
+router.register(r'agent', AgentViewSet)
+router.register(r'store', StoreViewSet)
 urlpatterns += router.urls

+ 14 - 13
apps/agent/views.py

@@ -1,22 +1,23 @@
 # coding=utf-8
-import traceback
-from django.utils import timezone
+from utils.custom_modelviewset import CustomModelViewSet
 from django.db.models import Q
-from rest_framework.decorators import action
-from django.db import transaction
-from rest_framework.serializers import ValidationError
+from utils import response_ok, response_error
+from .models import Agent,Store
+from .serializers import AgentSerializer,StoreSerializer
 from utils.permission import permission_required, isLogin
 from rest_framework.views import APIView
-from rest_framework_jwt.views import ObtainJSONWebToken, VerifyJSONWebToken, RefreshJSONWebToken
-from utils import response_error, response_ok
-from django.contrib.auth import get_user_model
-
-User = get_user_model()
 from apps.agent.serializers import AgentComboboxSerializer,StoreComboboxSerializer
-from utils.custom_modelviewset import CustomModelViewSet
-from apps.log.models import BizLog
-from apps.agent.models import Agent, Store
 
+class AgentViewSet(CustomModelViewSet):
+    permission_classes = []
+    queryset = Agent.objects.filter()
+    serializer_class = AgentSerializer
+
+
+class StoreViewSet(CustomModelViewSet):
+    permission_classes = []
+    queryset = Store.objects.filter()
+    serializer_class = StoreSerializer
 
 class AgentDictView(APIView):
     permission_classes = [isLogin, ]

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


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


+ 25 - 12
apps/new_customer/customer/models.py → apps/customer/models.py

@@ -1,6 +1,10 @@
 # coding=utf-8
 from django.db import models
 from django.conf import settings
+from django.utils import timezone
+
+from utils.exceptions import CustomError
+from apps.option.models import Option
 
 
 class Customer(models.Model):
@@ -17,14 +21,15 @@ class Customer(models.Model):
     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)
+    village = models.CharField(max_length=100, verbose_name=u'小区')
+    address = models.CharField(max_length=100, verbose_name=u'地址')
+    source = models.ForeignKey(Option, max_length=100, verbose_name=u'来源', related_name='customer_source',
+                               on_delete=models.PROTECT, null=True)
+    project = models.ForeignKey(Option, max_length=100, verbose_name=u'项目', related_name='customer_category',
+                                on_delete=models.PROTECT, 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',
+    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)
 
@@ -37,12 +42,20 @@ class Customer(models.Model):
         permissions = [
             ('view_customer', u'查看'),
             ('add_customer', u'添加'),
+            ('update_customer',u'更新'),
             ('delete_customer', u'删除'),
             ('check_customer', u'审核'),
         ]
 
-
-
-
-
-
+    def check_customer(self, user):
+        # 审核
+        if self.report_status == Customer.REPEAT_REPORT:
+            raise CustomError('当前客户报备状态为重复报备!')
+
+        if self.report_status == Customer.NOT_CHECKED:
+            self.check_user = user
+            self.report_status = Customer.CHECKED
+            self.check_time = timezone.now()
+            self.save()
+        # if self.report_status == Customer.CHECKED:
+        #     # 撞单

+ 1 - 1
apps/new_customer/customer/serializers.py → apps/customer/serializers.py

@@ -10,4 +10,4 @@ class CustomerSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = Customer
-        fields = '__all__'
+        fields = '__all__'

+ 16 - 0
apps/customer/urls.py

@@ -0,0 +1,16 @@
+# coding=utf-8
+from django.conf.urls import url, include
+from rest_framework.routers import SimpleRouter
+
+from .views import CustomerViewSet,SourceDictView,ProjectDictView
+
+
+urlpatterns = [
+    url(r'^source/dict/$', SourceDictView.as_view()),
+    url(r'^project/dict/$', ProjectDictView.as_view()),
+
+]
+
+router = SimpleRouter()
+router.register(r'', CustomerViewSet)
+urlpatterns += router.urls

+ 79 - 0
apps/customer/views.py

@@ -0,0 +1,79 @@
+# coding=utf-8
+from rest_framework.decorators import action
+from rest_framework import permissions
+
+from rest_framework.views import APIView
+
+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 apps.option.models import Option
+from apps.option.serializers import OptionComboboxSerializer
+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=False)
+    # 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('当前客户报备信息有误!')
+    #
+    #         instance.check_user = self.request.user
+    #         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('审核完成!')
+
+class SourceDictView(APIView):
+    permission_classes = []
+
+    def get(self, request):
+        rows = Option.objects.filter(type=Option.CUSTOMER_SOURCE,enable=True)
+        serializer = OptionComboboxSerializer(rows, many=True)
+        return response_ok(serializer.data)
+
+
+class ProjectDictView(APIView):
+    permission_classes = []
+
+    def get(self, request):
+        rows = Option.objects.filter(type=Option.CATEGORY, enable=True)
+        serializer = OptionComboboxSerializer(rows, many=True)
+        return response_ok(serializer.data)

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

@@ -1,13 +0,0 @@
-# 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

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

@@ -1,63 +0,0 @@
-# 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.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('审核完成!')

+ 0 - 13
apps/new_customer/urls.py

@@ -1,13 +0,0 @@
-# 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

+ 7 - 0
apps/option/serializers.py

@@ -40,3 +40,10 @@ class OptionSerializer(serializers.ModelSerializer):
             raise CustomError(u'自定义项[%s]已存在!' % validated_data['name'])
         instance = super(OptionSerializer, self).update(instance, validated_data)
         return instance
+
+
+class OptionComboboxSerializer(serializers.ModelSerializer):
+
+    class Meta:
+        model = Option
+        fields = ('id','name')

+ 1 - 1
decorate/settings.py

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

+ 2 - 1
decorate/urls.py

@@ -25,7 +25,8 @@ 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'^agent', include('apps.agent.urls')),
+    url(r'^customer/', include('apps.customer.urls')),
     url(r'^option/', include('apps.option.urls')),
     url(r'^agent/', include('apps.agent.urls')),
 ]

+ 137 - 0
uis/views/agent/edit.html

@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>代理商</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
+    <style>
+        .input {
+            border-radius: 2px;
+            height: 38px;
+            border-width: 1px;
+            border-color: lightgray;
+            border-style: solid;
+            background-color: white;
+            padding-left: 3px;
+        }
+    </style>
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-row layui-col-space15">
+        <div class="layui-card">
+
+            <div class="layui-card-body" pad15>
+                <form class="layui-form" action="" lay-filter="component-form-element">
+                    <div class="layui-row layui-col-space10 layui-form-item">
+                        <div>
+                            <label class="layui-form-label"><font color='red' size="4">*</font>名称:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="name" lay-verify="required" placeholder="请输入姓名"
+                                       autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                        <div>
+                            <label class="layui-form-label"><font color='red' size="4">*</font>联系人:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="relation_user" lay-verify="required" placeholder="请输入联系人"
+                                       autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                        <div>
+                            <label class="layui-form-label"><font color='red' size="4">*</font>联系电话:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="tel" class="layui-input" placeholder="请输入联系电话"
+                                       autocomplete="off" lay-verify="required"/>
+                            </div>
+                        </div>
+                        <div>
+                            <label class="layui-form-label"><font color='red' size="4">*</font>地址:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="address" placeholder="请输入地址"
+                                       autocomplete="off" class="layui-input" lay-verify="required">
+                            </div>
+                        </div>
+                        <div>
+                            <label class="layui-form-label">是否在用:</label>
+                            <div class="layui-input-block">
+                                <input type="checkbox" name="enable" lay-skin="switch" lay-text="是|否" checked=""
+                                       value="1">
+                            </div>
+                        </div>
+                        <div>
+                            <label class="layui-form-label">备注:</label>
+                            <div class="layui-input-block">
+                                <textarea type="text" name="notes" class="layui-textarea" placeholder="请输入备注"/></textarea>
+                            </div>
+                        </div>
+
+                        <button id="id_save" class="layui-btn" lay-submit lay-filter="component-form-element"
+                                style="display: none">保存
+                        </button>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="../../layuiadmin/layui/layui.js"></script>
+<script>
+    layui.link('../../../layuiadmin/style/autocomplete.css');
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+        , autocomplete: 'autocomplete'
+    }).extend({
+        index: 'lib/index',
+    }).use(['index', 'form', 'autocomplete'], function () {
+        var $ = layui.$
+            , admin = layui.admin
+            , form = layui.form
+        var id = layui.view.getParameterByName('id');
+
+
+        if (id) {
+            var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+            form.val("component-form-element", editdata);
+        }
+        //form.render(null, 'component-form-element');
+
+        form.on('submit(component-form-element)', function (data) {
+            if(data.field.enable === "1"){
+                data.field.enable = true
+            }else{
+                data.field.enable = false
+            }
+            if (id) {
+                var url = '/new_customer/customer/' + id + '/';
+                var type = 'post';
+            } else {
+                url = '/new_customer/customer/';
+                type = 'post'
+            }
+
+            admin.req({
+                url: url
+                , data: data.field
+                , type: type
+                , done: function (res) {
+                    parent.layui.onSubmitChild(res.data);
+                }
+            });
+
+            return false;
+        });
+
+        parent.layui.submitChild = function () {
+            $("#id_save").click();
+        };
+    });
+</script>
+</body>
+</html>

+ 246 - 0
uis/views/agent/index.html

@@ -0,0 +1,246 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>代理商</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport"
+          content="width=customer-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+    <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
+    <style type="text/css">
+        .seach_items {
+            float: right;
+            margin-left: 10px;
+        }
+    </style>
+    <style type="text/css">
+        .LAY-btns .layui-nav {
+            padding-left: 0;
+            padding-right: 10px;
+            top: -4px;
+            margin: 0 10px;
+            border: 0;
+            background-color: #009688;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-item {
+            line-height: 40px;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-child {
+            top: 34px;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-bar {
+            display: none;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-child dd.layui-this a {
+            color: #333;
+            background-color: #fff;
+        }
+
+        .LAY-btns .layui-nav .layui-nav-child dd.layui-this a:hover {
+            background-color: #f2f2f2;
+            color: #000;
+        }
+    </style>
+
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body" pad15>
+            <div class="layui-row layui-col-space15">
+                <div class="layui-col-md12">
+                    <div class="LAY-btns" style="margin-bottom: 10px;">
+                        <div style="float: left">
+                            <button class="layui-btn" id="customer_add"><i
+                                    class="layui-icon layui-icon-add-circle"></i>添加
+                            </button>
+                            <button class="layui-nav">
+                                <div class="layui-nav-item">
+                                    <a href="javascript:;" style="color:#fff;">导入</a>
+                                    <dl class="layui-nav-child"> <!-- 二级菜单 -->
+                                        <dd><a href="#" id="btn_import">执行导入</a></dd>
+                                        <dd><a href="#" id="btn_download">下载模板</a></dd>
+                                    </dl>
+                                </div>
+                            </button>
+                            <button class="layui-btn" id="btn_export"><i
+                                    class="layui-icon layui-icon-download-circle"></i>导出
+                            </button>
+                        </div>
+                        <form class="layui-form" lay-filter="query-form-element1">
+                            <div class="seach_items">
+                                <button class="layui-btn" lay-submit lay-filter="query-form-element1"><i
+                                        class="layui-icon layui-icon-search"></i>查询
+                                </button>
+                            </div>
+                            <div class="seach_items">
+                                <input type="text" name="name" autocomplete="off" class="layui-input"
+                                       placeholder="名称"/>
+                            </div>
+                        </form>
+                        <div style="clear: both;"></div>
+                    </div>
+                    <table class="layui-hide" id="customer_datagrid" lay-filter="customer-operate"></table>
+
+                    <script type="text/html" id="customer-operate-bar">
+                        <div class="layui-btn-group">
+                            <a class="layui-btn layui-btn-xs" lay-event="customer_edit"
+                            >修改</a>
+                        </div>
+                        <div class="layui-btn-group">
+                            <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="customer_del"
+                            >删除</a>
+                        </div>
+                    </script>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="../../layuiadmin/layui/layui.js?t=1"></script>
+<script>
+    layui.config({
+        base: '../../../layuiadmin/' //静态资源所在路径
+    }).extend({
+        index: 'lib/index' //主入口模块
+    }).use(['index', 'table', 'form', 'upload'], function () {
+        var $ = layui.$;
+        var table = layui.table
+            , form = layui.form
+            , upload = layui.upload
+            , admin = layui.admin;
+
+        table.render({
+            elem: '#customer_datagrid'
+            , url: '/api/agent.json'
+            , cols: [[
+                {field: 'name', title: '名称', width: 150}
+                , {field: 'relation_user', title: "联系人", width: 100}
+                , {field: 'tel', title: '联系电话', width: 150}
+                , {field: 'address', title: '地址', width: 200}
+                , {field: 'bank', title: '开户行', width: 100}
+                , {field: 'account', title: '信用代码', width: 200}
+                , {field: 'enable_text', title: '是否在用', width: 100}
+                , {field: 'notes', title: '备注', width: 200}
+                , {field: 'create_user', title: '创建人', width: 100}
+                , {field: 'create_time', title: '创建时间', width: 150}
+                , {width: 150, align: 'center', fixed: 'right', toolbar: '#customer-operate-bar'}
+            ]]
+            , page: true
+            , height: 'full-108'
+        });
+        $('#btn_download').on('click', function () {
+            layui.view.download("/static/xls/设备信息导入模板.xlsx");
+        });
+        // 导出数据
+        $('#btn_export').on('click', function () {
+            $.get({
+                url: '',
+                dataType: 'json',
+                data: _params,
+                success: function (res) {
+                    if (res.code === 1) {
+                        layer.msg(res.msg);
+                        return;
+                    }
+                    table.exportFile('datagrid', res.data, )
+                }
+            })
+        });
+        upload.render({
+            elem: '#btn_import'
+            , url: '/tenant/customer/import/'
+            , accept: 'file'
+            , acceptMime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+            , exts: 'xlsx'
+            , field: 'excel_file'
+            , done: function (res) {
+                if (res.code == 0) {
+                    table.reload('customer_datagrid', {});
+                } else {
+                    layer.msg(res.msg);
+                }
+            }
+            , error: function () {
+                layer.msg('导入失败');
+            }
+        });
+
+
+        //监听工具条
+        table.on('tool(customer-operate)', function (obj) {
+            var data = obj.data;
+            if (obj.event === 'customer_del') {
+                layer.confirm('确定要删除吗?', function (index) {
+                    layer.close(index);
+                    admin.req({
+                        url: '/tenant/customer/' + data.id + '/'
+                        , type: 'delete'
+                        , done: function (res) {
+                            table.reload('customer_datagrid', {});
+                        }
+                    });
+                });
+            } else if (obj.event === 'customer_edit') {
+                table.editdata = data;
+                layer.open({
+                    type: 2,
+                    title: '修改',
+                    shadeClose: false,
+                    area: ['50%', '60%'],
+                    btn: ['保存', '取消'],
+                    yes: function (index, dom) {
+                        layui.onSubmitChild = function (data) {
+                            layer.close(index);
+                            table.reload('customer_datagrid', {});
+                        };
+                        layui.submitChild();
+                    },
+                    btn2: function (index, layero) {
+                        layer.close(index);//关闭当前按钮
+                    },
+                    content: 'edit.html?id=' + data.id
+                });
+            }
+        });
+
+        form.on('submit(query-form-element1)', function (data) {
+            table.reload('customer_datagrid', {
+                where: data.field
+                , page: {curr: 1}
+            });
+            layer.closeAll();
+            return false
+        });
+
+        $('#customer_add').on('click', function () {
+            layer.open({
+                type: 2,
+                title: '添加',
+                area: ['50%', '60%'],
+                btn: ['保存', '取消'],
+                yes: function (index, dom) {
+                    layui.onSubmitChild = function (data) {
+                        layer.close(index);
+                        table.reload('customer_datagrid', {});
+                    };
+                    layui.submitChild();
+                },
+                btn2: function (index, layero) {
+                    layer.close(index);//关闭当前按钮
+                },
+                content: 'edit.html'
+            });
+        });
+    });
+
+</script>
+</body>
+</html>

+ 34 - 15
uis/views/customer/edit.html

@@ -41,8 +41,8 @@
                         <div>
                             <label class="layui-form-label"><font color='red' size="4">*</font>性别:</label>
                             <div class="layui-input-block">
-                                <input type="radio" name="sex" value="1" title="男">
-                                <input type="radio" name="sex" value="2" title="女">
+                                <input type="radio" name="gender" value="2" title="男">
+                                <input type="radio" name="gender" value="1" title="女">
                             </div>
                         </div>
                         <div>
@@ -55,7 +55,7 @@
                         <div>
                             <label class="layui-form-label"><font color='red' size="4">*</font>小区:</label>
                             <div class="layui-input-block">
-                                <input type="text" name="area" placeholder="请输入小区"
+                                <input type="text" name="village" placeholder="请输入小区"
                                        autocomplete="off" class="layui-input" lay-verify="required">
                             </div>
                         </div>
@@ -65,25 +65,21 @@
                                 <input type="text" name="address" placeholder="请输入地址"
                                        autocomplete="off" class="layui-input" lay-verify="required">
                             </div>
-                            <div class="layui-word-aux">详细位置;如:科研楼301、2号楼201</div>
                         </div>
 
                         <div>
-                            <label class="layui-form-label"><font color='red' size="4">*</font>来源:</label>
+                            <label class="layui-form-label">来源:</label>
                             <div class="layui-input-block">
-                                <select name="origin">
+                                <select name="source" id="id_source">
                                     <option value="">请选择来源</option>
-                                    <option value="1">自然进店</option>
-                                    <option value="2">电话邀约</option>
-                                    <option value="3">来电咨询</option>
                                 </select>
                             </div>
                         </div>
 
                         <div>
-                            <label class="layui-form-label"><font color='red' size="4">*</font>项目:</label>
+                            <label class="layui-form-label">项目:</label>
                             <div class="layui-input-block">
-                                 <select name="tags" id="tags" lay-verify="required" xm-select="tags" xm-select-skin="primary">
+                                 <select name="project" id="tags" xm-select="tags" xm-select-skin="primary">
                                      <option value="">请选择</option>
                                  </select>
                             </div>
@@ -130,19 +126,42 @@
             ]
         });
 
-
         if (id) {
             var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+            editdata['gender'] = editdata['gender'].toString();
             form.val("component-form-element", editdata);
         }
+
+        admin.req({
+            url: '/customer/source/dict/',
+            done: function (res) {
+                var data = res.data;
+                var source_node = $('#id_source');
+                for (var i in data) {
+                    var pid = data[i].id;
+                    var name = data[i].name;
+                    source_node.append("<option value='" + pid + "'>" + name + "</option>");
+                }
+                form.render(); //更新form
+            }
+        });
+
+        admin.req({
+            url: '/customer/project/dict/',
+            done: function (res) {
+                var data = res.data;
+                console.log(res, "opppppppp")
+            }
+        });
+
         //form.render(null, 'component-form-element');
 
         form.on('submit(component-form-element)', function (data) {
             if (id) {
-                var url = '/new_customer/customer/' + id + '/';
-                var type = 'post';
+                var url = '/customer/' + id + '/';
+                var type = 'put';
             } else {
-                url = '/new_customer/customer/';
+                url = '/customer/';
                 type = 'post'
             }
 

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

@@ -61,15 +61,15 @@
                             <button class="layui-btn" id="customer_add"><i
                                     class="layui-icon layui-icon-add-circle"></i>添加
                             </button>
-                            <button class="layui-nav">
+                            <!--<button class="layui-nav">
                                 <div class="layui-nav-item">
                                     <a href="javascript:;" style="color:#fff;">导入</a>
-                                    <dl class="layui-nav-child"> <!-- 二级菜单 -->
+                                    <dl class="layui-nav-child">
                                         <dd><a href="#" id="btn_import">执行导入</a></dd>
                                         <dd><a href="#" id="btn_download">下载模板</a></dd>
                                     </dl>
                                 </div>
-                            </button>
+                            </button>-->
                         </div>
                         <form class="layui-form" lay-filter="query-form-element1">
                             <div class="seach_items">
@@ -124,17 +124,17 @@
 
         table.render({
             elem: '#customer_datagrid'
-            , url: '/new_customer/customer/'
+            , url: '/customer/'
             , cols: [[
                 {field: 'name', title: '姓名', width: 200}
-                , {field: 'sex_text', title: "性别", width: 70}
+                , {field: 'gender_text', title: "性别", width: 70}
                 , {field: 'tel', title: '电话', width: 150}
-                , {field: 'area', title: '小区', width: 200}
+                , {field: 'village', title: '小区', width: 200}
                 , {field: 'address', title: '地址', width: 200}
-                , {field: 'origin_text', title: '来源', width: 100}
-                , {field: 'subject', title: '项目', width: 200}
+                , {field: 'source', title: '来源', width: 100}
+                , {field: 'project', title: '项目', width: 200}
                 , {field: 'notes', title: '备注', width: 200}
-                , {field: 'status_text', title: '报备状态', width: 200}
+                , {field: 'report_status_text', title: '报备状态', width: 200}
                 , {field: 'check_user', title: '审核人', width: 100}
                 , {field: 'check_time', title: '审核时间', width: 150}
                 , {width: 150, align: 'center', fixed: 'right', toolbar: '#customer-operate-bar'}
@@ -170,7 +170,7 @@
                 layer.confirm('确定要删除吗?', function (index) {
                     layer.close(index);
                     admin.req({
-                        url: '/tenant/customer/' + data.id + '/'
+                        url: '/customer/' + data.id + '/'
                         , type: 'delete'
                         , done: function (res) {
                             table.reload('customer_datagrid', {});
@@ -183,7 +183,7 @@
                     type: 2,
                     title: '修改',
                     shadeClose: false,
-                    area: ['600px', '600px'],
+                    area: ['50%', '80%'],
                     btn: ['保存', '取消'],
                     yes: function (index, dom) {
                         layui.onSubmitChild = function (data) {
@@ -213,7 +213,7 @@
             layer.open({
                 type: 2,
                 title: '添加',
-                area: ['600px', '600px'],
+                area: ['50%', '80%'],
                 btn: ['保存', '取消'],
                 yes: function (index, dom) {
                     layui.onSubmitChild = function (data) {

+ 5 - 0
uis/views/index.html

@@ -77,6 +77,11 @@
                                 <a lay-href="permissions/index.html">权限管理</a>
                             </dd>
                         </dl>
+                        <dl class="layui-nav-child">
+                            <dd data-name="nav" data-permission="option.browse_option">
+                                <a lay-href="agent/index.html">代理商</a>
+                            </dd>
+                        </dl>
                         <dl class="layui-nav-child">
                             <dd data-name="nav" data-permission="option.browse_option">
                                 <a lay-href="option/index.html">自定义项</a>