浏览代码

代理商管理分类

wushaodong 3 年之前
父节点
当前提交
9bfab96b6d
共有 4 个文件被更改,包括 120 次插入5 次删除
  1. 3 0
      apps/account/models.py
  2. 28 1
      apps/account/serializers.py
  3. 3 2
      apps/order/views.py
  4. 86 2
      uis/views/employee/edit.html

+ 3 - 0
apps/account/models.py

@@ -64,6 +64,9 @@ class User(AbstractBaseUser, PermissionsMixin):
     position = models.CharField(max_length=15, verbose_name=u"岗位", null=True)
     create_user = models.ForeignKey('self', verbose_name='创建者', null=True, on_delete=models.PROTECT)
 
+    category = models.CharField(max_length=200, verbose_name='管理分类', null=True,)
+    school = models.CharField(max_length=200, verbose_name='管理学校', null=True,)
+
     objects = UserManager()
 
     USERNAME_FIELD = 'username'

+ 28 - 1
apps/account/serializers.py

@@ -12,7 +12,7 @@ from utils import get_remote_addr
 from utils.booleancharfield import BooleanCharField
 from utils.exceptions import CustomError
 from apps.account.models import CustomerWechat
-from apps.option.models import Config
+from apps.option.models import School, CommodityLevel
 User = get_user_model()
 jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
 jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
@@ -57,6 +57,33 @@ class EmployeeSerializer(serializers.ModelSerializer):
     type_text = serializers.CharField(source='get_type_display', read_only=True)
     date_joined_f = serializers.DateTimeField(source='date_joined', format=settings.SHORT_DATETIME_FORMAT,
                                               read_only=True)
+    category_text = serializers.SerializerMethodField()
+    school_text = serializers.SerializerMethodField()
+    category_ids = serializers.SerializerMethodField()
+
+    def get_category_ids(self, obj):
+        return obj.category.split(',')
+
+    def get_school_text(self, obj):
+        name = ''
+        if obj.school:
+            rows = School.objects.filter(id__in=obj.school.split(','))
+            for row in rows:
+                name += row.name + ','
+        return name
+
+    def get_category_text(self, obj):
+        name = ''
+        if obj.category:
+            rows = CommodityLevel.objects.filter(id__in=obj.category.split(','))
+            for row in rows:
+                name1 = row.name
+                if row.category:
+                    name1 = '{}-{}'.format(row.category.name, name1)
+                    if row.category.category:
+                        name1 = '{}-{}'.format(row.category.category.name, name1)
+                name += name1 + ','
+        return name
 
     class Meta:
         model = User

+ 3 - 2
apps/order/views.py

@@ -57,8 +57,9 @@ class OrderViewSet(CustomModelViewSet):
         queryset = queryset.filter()
         if self.request.user.type == User.CUSTOMER:
             queryset = queryset.filter(create_user=self.request.user)
-        else:
-            queryset = queryset.filter(student__school_id__in=self.request.user.get_manager_school())
+        elif self.request.user.type == User.AGENT:
+            # 代理商,筛选代理的类别和学校
+            queryset = queryset.filter(Q(commodity__cogetory__in=self.request.user.cogetory) | Q(student__school=self.request.user.school))
 
         f = OrderFilter(self.request.GET, queryset=queryset)
         return f.qs

+ 86 - 2
uis/views/employee/edit.html

@@ -9,6 +9,7 @@
           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">
+    <link rel="stylesheet" type="text/css" href="../../layuiadmin/style/formSelects-v4.css"/>
     <style>
         #group_selecter dl {
             max-height: 200px;
@@ -81,7 +82,18 @@
                                     </select>
                                 </div>
                             </div>
-
+                            <div>
+                                <label class="layui-form-label"><font color='red' size="4">*</font>管理学校:</label>
+                                <div class="layui-input-block">
+                                    <select name="school" xm-select="schoolGroup"></select>
+                                </div>
+                            </div>
+                            <div>
+                                <label class="layui-form-label"><font color='red' size="4">*</font>管理分类:</label>
+                                <div class="layui-input-block">
+                                    <select name="category" xm-select="categoryGroup"></select>
+                                </div>
+                            </div>
                             <div class="layui-col-lg6">
                                 <label class="layui-form-label">是否在用:</label>
                                 <div class="layui-input-block">
@@ -109,9 +121,11 @@
         base: '../../../layuiadmin/' //静态资源所在路径
     }).extend({
         index: 'lib/index',
-    }).use(['index', 'form', 'utils',], function () {
+        formSelects: 'formSelects-v4',
+    }).use(['index', 'form', 'formSelects',], function () {
         var $ = layui.$
             , admin = layui.admin
+            , formSelects = layui.formSelects
             , form = layui.form;
 
         var id = layui.view.getParameterByName('id');
@@ -123,6 +137,76 @@
         }
         form.render(null, 'component-form-element');
 
+        formSelects.config('categoryGroup', {
+            beforeSuccess: function (eid, url, searchVal, result) {
+                if (id) {
+                    var category = parent.layui.table.editdata.category_ids ?? [];
+                    for (var n in result.data) {
+                        var item = result.data[n];
+                        for (var c1 in category) {
+                            if (category[c1] == item.value.toString()) {
+                                item.selected = 'selected';
+                            }
+                        }
+                        var children1 = item.children
+                        for (var c in children1) {
+                            for (var c2 in category) {
+                                if (category[c2] == children1[c].value.toString()) {
+                                    children1[c].selected = 'selected';
+                                }
+                            }
+                            var children2 = children1[c].children
+                            for (var i in children2) {
+                                for (var c3 in category) {
+                                    if (category[c3] == children2[i].value.toString()) {
+                                        children2[i].selected = 'selected';
+                                    }
+                                }
+                            }
+
+                        }
+
+                    }
+                }
+                return result;
+            },
+        });
+        formSelects.data('categoryGroup', 'server', {
+            url: '/option/get_category_tree/'
+        });
+
+        formSelects.config('schoolGroup', {
+            beforeSuccess: function (eid, url, searchVal, result) {
+                if (id) {
+                    var school = parent.layui.table.editdata.school ?? [];
+                    for (var n in result.data) {
+                        var item = result.data[n];
+                        if (school.indexOf(item.value) > -1) {
+                            item.selected = 'selected';
+
+                            var children1 = item.children
+                            for (var c in children1) {
+                                if (school.indexOf(children1[c].value) > -1) {
+                                    children1[c].selected = 'selected';
+
+                                    var children2 = children1[c].children
+                                    for (var i in children2) {
+                                        if (school.indexOf(children2[i].value) > -1) {
+                                            children2[i].selected = 'selected';
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                return result;
+            },
+        });
+        formSelects.data('schoolGroup', 'server', {
+            url: '/option/get_school/'
+        });
+
         form.on('submit(component-form-element)', function (data) {
             if (id) {
                 var url = '/account/employee/' + id + '/';