Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	apps/agent/models.py
hujingpei 4 rokov pred
rodič
commit
88cd2cd6a5

+ 1 - 0
apps/account/models.py

@@ -42,6 +42,7 @@ class User(AbstractBaseUser, PermissionsMixin):
     )
     username = models.CharField(verbose_name=u'用户名', max_length=30, unique=True, db_index=True,
                                 help_text=u'不多于20个字符。只能用字母、数字和字符。')
+    password = models.CharField(u'密码', max_length=128, blank=True)
 
     is_active = models.BooleanField(verbose_name=u'是否可用', default=True, editable=False)
     date_joined = models.DateTimeField(verbose_name=u'注册时间', auto_now_add=True, editable=False)

+ 4 - 6
apps/account/serializers.py

@@ -91,14 +91,12 @@ class EmployeeSerializer(serializers.ModelSerializer):
 
     def update(self, instance, validated_data):
         instance.groups.clear()
-        password = instance.password
+        validated_data['password'] = instance.password
         validated_data['is_superuser'] = instance.is_superuser
         instance = super(EmployeeSerializer, self).update(instance, validated_data)
-        if not 'password' in validated_data or not validated_data['password']:
-            instance.password = instance.password
-        else:
-           instance.set_password(validated_data['password'])
-        instance.save()
+        if 'password' in validated_data:
+            instance.set_password(validated_data['password'])
+            instance.save()
 
         groups = self.context['request'].data.get('groups', None)
         if groups:

+ 2 - 0
apps/agent/models.py

@@ -14,6 +14,8 @@ class Agent(models.Model):
     address = models.CharField(verbose_name=u'地址', max_length=200)
     create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'添加人',related_name='agent_create_user',
                                     editable=False,on_delete=models.PROTECT)
+    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'添加人',related_name='agent_create_user',
+                                    editable=False, on_delete=models.PROTECT)
     create_time = models.DateTimeField(verbose_name=u'添加时间', auto_now_add=True, editable=False)
 
     class Meta:

+ 2 - 2
apps/customer/models.py

@@ -25,11 +25,11 @@ class ReportCustomer(models.Model):
     address = models.CharField(max_length=100, verbose_name=u'地址')
     source = models.ForeignKey(Option, verbose_name=u'来源', related_name='customer_source',
                                on_delete=models.PROTECT)
-    project = models.ManyToManyField(Option, verbose_name=u'项目', related_name='customer_category')
+    project = models.ManyToManyField(Option, verbose_name=u'项目', related_name='customer_category', editable=False, null=True,blank=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)
+                                   on_delete=models.PROTECT, null=True)
     check_time = models.DateTimeField(verbose_name=u'审核时间', null=True)
 
     class Meta:

+ 23 - 7
apps/customer/serializers.py

@@ -1,7 +1,8 @@
 # coding=utf-8
+import json
 from rest_framework import serializers
-
 from apps.option.models import Option
+from utils.exceptions import CustomError
 from apps.option.serializers import OptionSerializer
 from .models import ReportCustomer
 
@@ -9,9 +10,9 @@ class ReportCustomerSerializer(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)
-    project = serializers.SerializerMethodField()
+    project_text = serializers.SerializerMethodField()
 
-    def get_project(self, obj):
+    def get_project_text(self, obj):
         return OptionSerializer(obj.project, many=True).data
 
     class Meta:
@@ -19,11 +20,26 @@ class ReportCustomerSerializer(serializers.ModelSerializer):
         fields = '__all__'
 
     def create(self, validated_data):
-        print(111111111,int(self.initial_data['project']))
-        # validated_data['project'] = self.initial_data['project']
         instance = super(ReportCustomerSerializer, self).create(validated_data)
+        projects = self.initial_data['project']
+        if projects:
+            projects = json.loads(projects)
+        else:
+            raise CustomError(u'请选择项目')
+
+        for project in projects:
+            instance.project.add(project)
         return instance
 
-    # def update(self, instance, validated_data):
-    #     if instance.project == self.initial_data['project']
+    def update(self, instance, validated_data):
+        instance = super(ReportCustomerSerializer, self).update(instance, validated_data)
+        projects = self.initial_data['project']
+        if projects:
+            projects = json.loads(projects)
+        else:
+            raise CustomError(u'请选择项目')
+
+        for project in projects:
+            instance.project.add(project)
+        return instance
 

+ 2 - 27
uis/views/agent/edit.html

@@ -38,16 +38,9 @@
                             </div>
                         </div>
                         <div>
-                            <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">
-                                <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="请输入联系电话"
+                                <input type="text" name="tel" class="layui-input" placeholder="请输入电话"
                                        autocomplete="off" lay-verify="required"/>
                             </div>
                         </div>
@@ -65,19 +58,6 @@
                                        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">保存
@@ -110,11 +90,6 @@
         //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 = '/agent/agent/' + id + '/';
                 var type = 'post';

+ 7 - 12
uis/views/agent/index.html

@@ -119,19 +119,14 @@
 
         table.render({
             elem: '#customer_datagrid'
-            , url: '/agent/'
+            , url: '/agent/agent/'
             , cols: [[
                 {field: 'name', title: '名称', width: 150}
-                , {field: 'relation_user', title: "联系人", width: 100}
-                , {field: 'tel', title: '联系电话', width: 150}
+                , {field: 'tel', title: '电话', width: 150}
                 , {field: 'area', title: '区域', width: 200}
                 , {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}
+                , {field: 'create_user', title: '添加人', width: 100}
+                , {field: 'create_time', title: '添加时间', width: 150}
                 , {width: 150, align: 'center', fixed: 'right', toolbar: '#customer-operate-bar'}
             ]]
             , page: true
@@ -182,7 +177,7 @@
                 layer.confirm('确定要删除吗?', function (index) {
                     layer.close(index);
                     admin.req({
-                        url: '/tenant/customer/' + data.id + '/'
+                        url: '/agent/agent/' + data.id + '/'
                         , type: 'delete'
                         , done: function (res) {
                             table.reload('customer_datagrid', {});
@@ -195,7 +190,7 @@
                     type: 2,
                     title: '修改',
                     shadeClose: false,
-                    area: ['45%', '65%'],
+                    area: ['40%', '50%'],
                     btn: ['保存', '取消'],
                     yes: function (index, dom) {
                         layui.onSubmitChild = function (data) {
@@ -225,7 +220,7 @@
             layer.open({
                 type: 2,
                 title: '添加',
-                area: ['45%', '65%'],
+                area: ['40%', '50%'],
                 btn: ['保存', '取消'],
                 yes: function (index, dom) {
                     layui.onSubmitChild = function (data) {

+ 8 - 7
uis/views/customer/edit.html

@@ -41,7 +41,7 @@
                         <div>
                             <label class="layui-form-label"><font color='red' size="4">*</font>性别:</label>
                             <div class="layui-input-block">
-                                <input type="radio" name="gender" value="2" title="男">
+                                <input type="radio" name="gender" value="2" title="男" checked>
                                 <input type="radio" name="gender" value="1" title="女">
                             </div>
                         </div>
@@ -79,7 +79,7 @@
                         <div>
                             <label class="layui-form-label"><font color='red' size="4">*</font>项目:</label>
                             <div class="layui-input-block">
-                                 <select lay-verify="required" name="project" id="tags" xm-select="tags" xm-select-skin="primary">
+                                 <select lay-verify="required" name="project" xm-select="selectProject" xm-select-skin="primary">
                                      <option value="">请选择</option>
                                  </select>
                             </div>
@@ -150,7 +150,7 @@
                         return {value: item.id, name: item.name, selected: item.selected }
                     });
                 }
-                formSelects.data('tags', 'local', {
+                formSelects.data('selectProject', 'local', {
                     arr: tempData
                 });
                 form.val("component-form-element", editdata);
@@ -161,14 +161,15 @@
 
         form.on('submit(component-form-element)', function (data) {
             if (id) {
-                var url = '/customer/reportcustomer/' + id + '/';
+                var url = '/customer/report_customer/' + id + '/';
                 var type = 'put';
             } else {
-                url = '/customer/reportcustomer/';
+                url = '/customer/report_customer/';
                 type = 'post'
             }
-            if(data.field.source) data.field.source = parseInt(data.field.source);
-            console.log(data.field, "opopopopop")
+            var submitData = data.field;
+            var project = formSelects.value('selectProject', 'val');
+            submitData.project = JSON.stringify(project);
             admin.req({
                 url: url
                 , data: data.field

+ 6 - 2
uis/views/customer/index.html

@@ -121,7 +121,7 @@
 
         table.render({
             elem: '#customer_datagrid'
-            , url: '/customer/reportcustomer/'
+            , url: '/customer/report_customer/'
             , cols: [[
                 {field: 'name', title: '姓名', width: 200}
                 , {field: 'gender_text', title: "性别", width: 70}
@@ -129,7 +129,7 @@
                 , {field: 'village', title: '小区', width: 200}
                 , {field: 'address', title: '地址', width: 200}
                 , {field: 'source', title: '来源', width: 100}
-                , {field: 'project', title: '项目', width: 200}
+                , {field: 'project_text', title: '项目', width: 200}
                 , {field: 'notes', title: '备注', width: 200}
                 , {field: 'report_status_text', title: '报备状态', width: 200}
                 , {field: 'check_user', title: '审核人', width: 100}
@@ -190,6 +190,10 @@
                     });
                 });
             } else if (obj.event === 'customer_edit') {
+                if(data.report_status !== 0){
+                    layer.msg("只有待审核才允许修改");
+                    return
+                }
                 table.editdata = data;
                 layer.open({
                     type: 2,