Explorar o código

工地維修工

wushaodong %!s(int64=4) %!d(string=hai) anos
pai
achega
2d31ea9648

+ 7 - 11
apps/tenant/repair_order/models.py

@@ -52,7 +52,7 @@ class RepairOrder(models.Model):
                              editable=False)
                              editable=False)
     name = models.CharField(max_length=11, verbose_name='报修人员')
     name = models.CharField(max_length=11, verbose_name='报修人员')
     tel = models.CharField(max_length=11, verbose_name='报修电话')
     tel = models.CharField(max_length=11, verbose_name='报修电话')
-    repair_users = models.ManyToManyField(settings.AUTH_USER_MODEL, verbose_name='维修人员', related_name='repair_users')
+    repair_users = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='维修人员', related_name='repair_users',on_delete=models.PROTECT,)
     status = models.PositiveSmallIntegerField(choices=settings.REPAIR_STATUS_CHOICES, verbose_name=u'状态',
     status = models.PositiveSmallIntegerField(choices=settings.REPAIR_STATUS_CHOICES, verbose_name=u'状态',
                                               default=settings.NOT_CHECKED)
                                               default=settings.NOT_CHECKED)
     order_type = models.PositiveSmallIntegerField(choices=ORDER_TYPE, verbose_name=u'工单类型',
     order_type = models.PositiveSmallIntegerField(choices=ORDER_TYPE, verbose_name=u'工单类型',
@@ -102,8 +102,7 @@ class RepairOrder(models.Model):
         if not self.status == settings.DISPATCH:
         if not self.status == settings.DISPATCH:
             raise CustomError('当前报修工单不允许挂起!')
             raise CustomError('当前报修工单不允许挂起!')
 
 
-        user_ids = self.repair_users.all()
-        if user not in user_ids:
+        if user != self.repair_users:
             raise CustomError('非主修人员操作,禁止操作!')
             raise CustomError('非主修人员操作,禁止操作!')
 
 
         self.status = settings.HANG_UP
         self.status = settings.HANG_UP
@@ -116,8 +115,7 @@ class RepairOrder(models.Model):
         if not self.status == settings.HANG_UP:
         if not self.status == settings.HANG_UP:
             raise CustomError('当前报修工单非挂起状态!')
             raise CustomError('当前报修工单非挂起状态!')
 
 
-        user_ids = self.repair_users.all()
-        if user not in user_ids:
+        if user != self.repair_users:
             raise CustomError('非主修人员操作,禁止操作!')
             raise CustomError('非主修人员操作,禁止操作!')
         self.status = settings.DISPATCH
         self.status = settings.DISPATCH
         self.save()
         self.save()
@@ -136,7 +134,7 @@ class RepairOrder(models.Model):
 
 
     def dispatch_repair_order(self, user, dispacth_users):
     def dispatch_repair_order(self, user, dispacth_users):
         self.status = settings.DISPATCH
         self.status = settings.DISPATCH
-        self.repair_users.add(dispacth_users)
+        self.repair_users_id = dispacth_users
         self.save()
         self.save()
         # 记录操作
         # 记录操作
         RepairOrderRecord.objects.create(repair_order=self, status=settings.DISPATCH, user=user,
         RepairOrderRecord.objects.create(repair_order=self, status=settings.DISPATCH, user=user,
@@ -198,10 +196,9 @@ class RepairOrderRecord(models.Model):
         elif self.status == settings.CHECKED:
         elif self.status == settings.CHECKED:
             dict['desc'] = u'审核人:{}'.format(user_name)
             dict['desc'] = u'审核人:{}'.format(user_name)
         elif self.status == settings.DISPATCH:
         elif self.status == settings.DISPATCH:
-            user_ids = self.repair_users.split(',') or []
-            repair_users = User.objects.filter(id__in=user_ids).values('employee__name', 'employee__tel', )
+            repair_users = User.objects.filter(id=self.repair_users).values('employee__name', 'employee__tel', )
             e_name = [u'{0}-{1}'.format(e['employee__name'], e['employee__tel']) for e in repair_users]
             e_name = [u'{0}-{1}'.format(e['employee__name'], e['employee__tel']) for e in repair_users]
-            if str(self.user.id) in user_ids:
+            if str(self.user.id) == self.repair_users:
                 desc = u'维修工【{0}】接单'.format(','.join(e_name))
                 desc = u'维修工【{0}】接单'.format(','.join(e_name))
                 if self.repair_order.order_type == RepairOrder.INSPECTION_ORDER:
                 if self.repair_order.order_type == RepairOrder.INSPECTION_ORDER:
                     desc = u'维修工【{0}】巡检转维修接单'.format(','.join(e_name))
                     desc = u'维修工【{0}】巡检转维修接单'.format(','.join(e_name))
@@ -239,8 +236,7 @@ class RepairOrderRecord(models.Model):
                     }
                     }
                 )
                 )
         elif self.status == settings.TURN_EMPLOYEE:
         elif self.status == settings.TURN_EMPLOYEE:
-            user_ids = self.repair_users.split(',') or []
-            e_name = User.objects.filter(id__in=user_ids).values('employee__name', 'employee__tel', )
+            e_name = User.objects.filter(id=self.repair_users).values('employee__name', 'employee__tel', )
             e_name = [e['employee__name'] + '-' + e['employee__tel'] for e in e_name]
             e_name = [e['employee__name'] + '-' + e['employee__tel'] for e in e_name]
             desc = u'【{0}】转单给维修工【{1}】'.format(user_name, ','.join(e_name))
             desc = u'【{0}】转单给维修工【{1}】'.format(user_name, ','.join(e_name))
             dict['desc'] = desc
             dict['desc'] = desc

+ 2 - 4
apps/tenant/repair_order/views.py

@@ -119,10 +119,8 @@ class RepairOrderViewSet(CustomModelViewSet):
             with transaction.atomic():
             with transaction.atomic():
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
                 if not instance.status == settings.DISPATCH:
                 if not instance.status == settings.DISPATCH:
-                    return response_ok('当前报修工单状态还未派单待派单,不能进行转单!')
-                instance.repair_users.clear()
-                for user_id in user_ids:
-                    instance.repair_users.add(user_id)
+                    return response_ok('当前报修单状态还未派单,不能进行转单!')
+                instance.repair_users_id = user_ids
                 instance.save()
                 instance.save()
                 # 记录操作
                 # 记录操作
                 RepairOrderRecord.objects.create(repair_order=instance, status=settings.TURN_EMPLOYEE, user=user,
                 RepairOrderRecord.objects.create(repair_order=instance, status=settings.TURN_EMPLOYEE, user=user,

+ 2 - 3
apps/wxapp/repair_order/views.py

@@ -91,8 +91,7 @@ class RepairOrderViewSet(CustomModelViewSet):
     def filter_queryset(self, queryset):
     def filter_queryset(self, queryset):
         queryset = queryset.filter(tenant=self.request.user.employee.tenant, )
         queryset = queryset.filter(tenant=self.request.user.employee.tenant, )
         if self.request.user.is_repair:
         if self.request.user.is_repair:
-            queryset = queryset.filter(user=self.request.user)
-        # user_ids = self.repair_users.split(',') or [] TODO 维修师傅一对一
+            queryset = queryset.filter(repair_users=self.request.user)
         f = RepairOrderFilter(self.request.GET, queryset=queryset)
         f = RepairOrderFilter(self.request.GET, queryset=queryset)
         return f.qs
         return f.qs
 
 
@@ -177,7 +176,7 @@ class RepairOrderViewSet(CustomModelViewSet):
                     raise CustomError('当前报修工单状态非待派单状态,不能进行抢单!')
                     raise CustomError('当前报修工单状态非待派单状态,不能进行抢单!')
 
 
                 instance.status = settings.DISPATCH
                 instance.status = settings.DISPATCH
-                instance.repair_users.add(user.id)
+                instance.repair_users = user
                 instance.save()
                 instance.save()
 
 
                 RepairOrderRecord.objects.create(repair_order=instance, status=settings.DISPATCH, user=user,
                 RepairOrderRecord.objects.create(repair_order=instance, status=settings.DISPATCH, user=user,

+ 4 - 1
apps/wxapp/serializers.py

@@ -41,6 +41,7 @@ class WechatLoginSerializer(serializers.Serializer):
             customer_log(customer_wechat.customer, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
             customer_log(customer_wechat.customer, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
             tenant_id = customer_wechat.customer.tenant and customer_wechat.customer.tenant.id or ''
             tenant_id = customer_wechat.customer.tenant and customer_wechat.customer.tenant.id or ''
             company_no = customer_wechat.customer.tenant and customer_wechat.customer.tenant.company_no or ''
             company_no = customer_wechat.customer.tenant and customer_wechat.customer.tenant.company_no or ''
+            nick_name = customer_wechat.customer.tenant and customer_wechat.customer.tenant.company_name or settings.WEAPP['nick_name']
             is_validity = Tenant.check_validity(company_no)
             is_validity = Tenant.check_validity(company_no)
             return {
             return {
                 'bind': 1,
                 'bind': 1,
@@ -49,7 +50,7 @@ class WechatLoginSerializer(serializers.Serializer):
                 'openid': customer_wechat.openid,
                 'openid': customer_wechat.openid,
                 'tenant_id': tenant_id,
                 'tenant_id': tenant_id,
                 'is_validity': is_validity,
                 'is_validity': is_validity,
-                'nick_name': settings.WEAPP['nick_name'],
+                'nick_name': nick_name,
                 'name': customer_wechat.customer.name or '',
                 'name': customer_wechat.customer.name or '',
                 'tel': customer_wechat.customer.tel or '',
                 'tel': customer_wechat.customer.tel or '',
                 'face': customer_wechat.customer.face,
                 'face': customer_wechat.customer.face,
@@ -77,6 +78,7 @@ class WechatBindSerializer(serializers.Serializer):
             customer_log(customer, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
             customer_log(customer, BizLog.INSERT, u'用户微信登录,username=%s' % user.username)
             tenant_id = customer.tenant and customer.tenant.id or ''
             tenant_id = customer.tenant and customer.tenant.id or ''
             company_no = customer.tenant and customer.tenant.company_no or ''
             company_no = customer.tenant and customer.tenant.company_no or ''
+            nick_name = customer.tenant and customer.tenant.company_name or settings.WEAPP['nick_name']
             is_validity = Tenant.check_validity(company_no)
             is_validity = Tenant.check_validity(company_no)
             return {
             return {
                 'token': jwt_encode_handler(payload),
                 'token': jwt_encode_handler(payload),
@@ -84,6 +86,7 @@ class WechatBindSerializer(serializers.Serializer):
                 'name': customer.name or '',
                 'name': customer.name or '',
                 'tel': customer.tel or '',
                 'tel': customer.tel or '',
                 'face': customer.face,
                 'face': customer.face,
+                'nick_name': nick_name,
                 'is_validity': is_validity,
                 'is_validity': is_validity,
                 'user_type': customer.type,  # 用户类别,1为平台管理员,2为管理者,3检修人,4报修人
                 'user_type': customer.type,  # 用户类别,1为平台管理员,2为管理者,3检修人,4报修人
                 'forbid_baoxiu': 'true' and customer.status == Employee.DISABLE or 'false',  # 是否禁用报修,
                 'forbid_baoxiu': 'true' and customer.status == Employee.DISABLE or 'false',  # 是否禁用报修,

+ 7 - 3
uis/tenant/employee/edit.html

@@ -82,9 +82,13 @@
                                 <label class="layui-form-label">说明:</label>
                                 <label class="layui-form-label">说明:</label>
                                 <div class="layui-input-block">
                                 <div class="layui-input-block">
                                     <p>1、平台管理员:本企业内部报修平台的唯一超级管理员,它权限最高,拥有所有功能。</p>
                                     <p>1、平台管理员:本企业内部报修平台的唯一超级管理员,它权限最高,拥有所有功能。</p>
-                                    <p>2、管理者:本企业内部报修平台的管理者,一个平台可以存在多个管理者,主要通过pc端或者报修小程序进行维修单的审核、派单、统计。</p>
-                                    <p>3、检修人:设备维修、检修人员,通过报修小程序,进行报修接单、挂起、完工及检修操作。</p>
-                                    <p>4、报修人:发现设备故障,并进行上报,通过报修小程序进行故障的上报。</p>
+                                    <p>2、管理者:本企业内部报修平台的管理者,一个平台可以存在多个管理者,主要通过pc端或者报修小程序进行维修单的审核、派单、统计。
+                                        有新的报修时,会给此角色发送"待审核报修"微信通知。</p>
+                                    <p>3、检修人:设备维修、检修人员,通过报修小程序,进行报修接单、挂起、完工及检修操作。
+                                        有新的报修派单,会给此角色发送"维修派单"微信通知。</p>
+                                    <p>4、报修人:发现设备故障,并进行上报,通过报修小程序进行故障的上报。
+                                    报修完工后,会给此角色发送“维修完工”微信通知。</p>
+                                    <p>5、以上角色相关人员需要在小程序中订阅消息,才可以收到微信通知</p>
                                 </div>
                                 </div>
                             </div>
                             </div>
                         </div>
                         </div>