wushaodong 4 yıl önce
ebeveyn
işleme
d9a4240977

+ 5 - 5
apps/account/models.py

@@ -10,7 +10,7 @@ from apps.tenant.models import Tenant
 
 class UserManager(BaseUserManager):
     def create_administrator(self, username, password=None, **extra_fields):
-        return self.create_user(User.SUPPER, username, password, **extra_fields)
+        return self.create_user(User.SUPER, username, password, **extra_fields)
 
     def create_tenant_user(self,type, username, password=None, **extra_fields):
         return self.create_user(type, username, password, **extra_fields)
@@ -52,12 +52,12 @@ class UserManager(BaseUserManager):
 
 class User(AbstractBaseUser, PermissionsMixin):
 
-    SUPPER = 1
+    SUPER = 1
     ADMIN = 2
     EMPLOYEE = 3
     REPAIR = 4
     TYPE_CHOICES = (
-        (SUPPER, u'平台管理员'),
+        (SUPER, u'平台管理员'),
         (ADMIN, u'管理者'),
         (EMPLOYEE, u'检修人'),
         (REPAIR, u'报修人'),
@@ -103,12 +103,12 @@ class User(AbstractBaseUser, PermissionsMixin):
         return False
 
     def is_admin(self):
-        if self.type == self.ADMIN or self.type == self.SUPPER:
+        if self.type == self.ADMIN or self.type == self.SUPER:
             return True
         return False
 
     def is_administrator(self):
-        if self.type == self.SUPPER:
+        if self.type == self.SUPER:
             return True
         return False
 

+ 1 - 1
apps/admin/tenant/serializers.py

@@ -25,7 +25,7 @@ class TenantSerializer(serializers.ModelSerializer) :
             return ''
 
     def get_username(self, obj):
-        names = Employee.objects.filter(tenant=obj, user__type=User.SUPPER).values('name')
+        names = Employee.objects.filter(tenant=obj, user__type=User.SUPER).values('name')
         name = []
         for i in names:
             name.append(i.get('name'))

+ 2 - 2
apps/admin/tenant/views.py

@@ -48,9 +48,9 @@ class TenantViewSet(CustomModelViewSet):
                     raise CustomError('当前租户无效,请刷新!')
                 user = User.objects.filter(username=username).first()
                 if user:
-                    user.type = User.SUPPER
+                    user.type = User.SUPER
                     user.save()
-                    Employee.objects.filter(user=user).update(tenant=tenant, type=Employee.SUPPER)
+                    Employee.objects.filter(user=user).update(tenant=tenant, type=Employee.SUPER)
                 else:
                     instance = Employee.create_super_admin(tenant, name, username, password)
                 admin_log(request.user, BizLog.INSERT, u'租户[%s]添加超级账号[%s], id=%d' % (tenant.company_name,username, instance.id))

+ 1 - 1
apps/admin/user/serializers.py

@@ -18,7 +18,7 @@ class UserSerializer(serializers.ModelSerializer):
         fields = '__all__'
 
     def create(self, validated_data):
-        validated_data['type'] = User.SUPPER
+        validated_data['type'] = User.SUPER
         if validated_data['password'].strip() == '':
             raise CustomError(u'密码不能为空!')
         instance = super(UserSerializer, self).create(validated_data)

+ 1 - 1
apps/admin/user/views.py

@@ -29,7 +29,7 @@ class EmployeeViewSet(CustomModelViewSet):
 
 class UserViewSet(CustomModelViewSet):
     permission_classes = [IsAdministratorUser, ]
-    queryset = User.objects.filter(type=User.SUPPER)
+    queryset = User.objects.filter(type=User.SUPER)
     serializer_class = UserSerializer
 
     def filter_queryset(self, queryset):

+ 11 - 3
apps/tenant/employee/models.py

@@ -21,12 +21,12 @@ class Employee(models.Model):
         (DISABLE, u'禁用'),
     )
 
-    SUPPER = 1
+    SUPER = 1
     ADMIN = 2
     EMPLOYEE = 3
     REPAIR = 4
     TYPE_CHOICES = (
-        (SUPPER, u'平台管理员'),
+        (SUPER, u'平台管理员'),
         (ADMIN, u'管理者'),
         (EMPLOYEE, u'检修人'),
         (REPAIR, u'报修人'),
@@ -65,7 +65,7 @@ class Employee(models.Model):
             gender=settings.MALE,
             user=user,
             tenant=tenant,
-            type=Employee.SUPPER,
+            type=Employee.SUPER,
         )
         return instance
 
@@ -89,3 +89,11 @@ class Employee(models.Model):
         with transaction.atomic():
             customer = Employee.objects.create(user=user,type=Employee.REPAIR, tel=user.username, name=user.username)
         return customer
+
+    @staticmethod
+    def checkSuper(tenant, id=None):
+        #  检查超级管理员数量
+        rows = Employee.objects.filter(type=Employee.SUPER, tenant=tenant)
+        if id:
+            rows = rows.exclude(id=id)
+        return rows.count()

+ 4 - 0
apps/tenant/employee/serializers.py

@@ -21,6 +21,8 @@ class EmployeeSerializer(serializers.ModelSerializer):
         fields = '__all__'
 
     def create(self, validated_data):
+        if Employee.checkSuper(self.context['request'].user.employee.tenant):
+            raise CustomError(u'已存在一个平台管理员,禁止操作!')
         username = self.initial_data['tel']
         # 判断用户是否已经注册登陆过
         password = None
@@ -44,6 +46,8 @@ class EmployeeSerializer(serializers.ModelSerializer):
     def update(self, instance, validated_data):
         if instance.tenant != self.context['request'].user.employee.tenant:
             raise CustomError(u'禁止跨租户操作!')
+        if Employee.checkSuper(instance.tenant, instance.id):
+            raise CustomError(u'已存在一个平台管理员,禁止操作!')
         username = self.initial_data['tel']
         if username and self.initial_data['password'].strip() != '':
             if instance.user:

+ 1 - 7
apps/tenant/option/models.py

@@ -5,16 +5,10 @@ from django.conf import settings
 
 class Option(models.Model):
     REPAIRS_TYPE =1
-    JOB_TYPE = 2
-    EQUIPMENT_TYPE = 3
-    FAULT_CAUSE = 4
-    EQUIPMENT_SUPPLIER = 5
+    FAULT_CAUSE = 2
     TYPE_CHOICES = (
         (REPAIRS_TYPE, u'报修类型'),
-        (JOB_TYPE, u'职位分类'),
-        (EQUIPMENT_TYPE, u'设备分类'),
         (FAULT_CAUSE, u'故障原因'),
-        (EQUIPMENT_SUPPLIER, u'设备供应商')
     )
 
     tenant = models.ForeignKey(Tenant, verbose_name=u'租户', on_delete=models.PROTECT, editable=False)

+ 10 - 2
uis/tenant/employee/edit.html

@@ -78,7 +78,15 @@
                                            placeholder="请输入职位" autocomplete="off" class="layui-input">
                                 </div>
                             </div>
-
+                            <div class="layui-col-lg6">
+                                <label class="layui-form-label">说明:</label>
+                                <div class="layui-input-block">
+                                    <p>1、平台管理员:本企业内部报修平台的唯一超级管理员,它权限最高,拥有所有功能。</p>
+                                    <p>2、管理者:本企业内部报修平台的管理者,一个平台可以存在多个管理者,主要通过pc端或者报修小程序进行维修单的审核、派单、统计。</p>
+                                    <p>3、检修人:设备维修、检修人员,通过报修小程序,进行报修接单、挂起、完工及检修操作。</p>
+                                    <p>4、报修人:发现设备故障,并进行上报,通过报修小程序进行故障的上报。</p>
+                                </div>
+                            </div>
                         </div>
                         <button class="layui-btn" id="id_user_save" lay-submit lay-filter="component-form-element"
                                 style="display: none">保存
@@ -98,7 +106,7 @@
         base: '../../../layuiadmin/' //静态资源所在路径
     }).extend({
         index: 'lib/index',
-    }).use(['index', 'form', 'utils', ], function () {
+    }).use(['index', 'form', 'utils',], function () {
         var $ = layui.$
             , admin = layui.admin
             , form = layui.form;

+ 7 - 0
uis/tenant/option/edit.html

@@ -57,6 +57,13 @@
                                            class="layui-input">
                                 </div>
                             </div>
+                            <div class="layui-col-lg6">
+                                <label class="layui-form-label">说明:</label>
+                                <div class="layui-input-block">
+                                    <p>1、报修类型:桌椅、门窗、电脑等</p>
+                                    <p>2、故障原因:人为损坏、自然老化等</p>
+                                </div>
+                            </div>
                         </div>
                         <button class="layui-btn" id="id_option_save" lay-submit lay-filter="component-form-element"
                                 style="display: none">保存

+ 3 - 6
uis/tenant/option/index.html

@@ -71,11 +71,8 @@
                                 <div class="seach_items">
                                     <select name="type" style="width: 40px;">
                                         <option value="">请选择分类</option>
-                                        <option value="0">报修类型</option>
-                                        <option value="1">职位分类</option>
+                                        <option value="1">报修类型</option>
                                         <option value="2">故障原因</option>
-                                        <option value="3">设备分类</option>
-                                        <option value="4">设备供货商</option>
                                     </select>
                                 </div>
                                 <div class="seach_items">
@@ -150,7 +147,7 @@
                     type: 2,
                     title: '修改',
                     shadeClose: false,
-                    area: ['700px', '400px'],
+                    area: ['700px', '500px'],
                     btn: ['保存', '取消'],
                     yes: function (index, dom) {
                         layui.onSubmitChild = function (data) {
@@ -184,7 +181,7 @@
                 type: 2,
                 title: '添加',
                 shadeClose: false,
-                area: ['700px', '400px'],
+                area: ['700px', '500px'],
                 btn: ['保存', '取消'],
                 yes: function (index, dom) {
                     layui.onSubmitChild = function (data) {