瀏覽代碼

报修管理

wushaodong 4 年之前
父節點
當前提交
847c2d0264

+ 6 - 1
apps/account/models.py

@@ -101,11 +101,16 @@ class User(AbstractBaseUser, PermissionsMixin):
     def addCustomer(self):
     def addCustomer(self):
         self.type = self.type | self.EMPLOYEE
         self.type = self.type | self.EMPLOYEE
 
 
-    def is_customer(self):
+    def is_employee(self):
         if self.type == self.EMPLOYEE:
         if self.type == self.EMPLOYEE:
             return True
             return True
         return False
         return False
 
 
+    def is_repair(self):
+        if self.type == self.REPAIR:
+            return True
+        return False
+
     def is_admin(self):
     def is_admin(self):
         if self.type == self.ADMIN or self.type == self.SUPPER:
         if self.type == self.ADMIN or self.type == self.SUPPER:
             return True
             return True

+ 3 - 0
apps/tenant/device/models.py

@@ -19,3 +19,6 @@ class DeviceModel(models.Model):
         db_table = "device"
         db_table = "device"
         verbose_name = u"设备管理"
         verbose_name = u"设备管理"
         ordering = ('-id',)
         ordering = ('-id',)
+
+    def get_full_name(self):
+        return self.branch + ' ' + self.address

+ 6 - 2
apps/tenant/employee/models.py

@@ -11,9 +11,13 @@ from django.db import transaction
 
 
 class Employee(models.Model):
 class Employee(models.Model):
     ENABLE = 1
     ENABLE = 1
-    DISABLE = 2
+    WORKING = 2
+    DAY_OFF = 3
+    DISABLE = 4
     STATUS_CHOICES = (
     STATUS_CHOICES = (
-        (ENABLE, u'在用'),
+        (ENABLE, u'启用'),
+        (WORKING, u'工作中'),
+        (DAY_OFF, u'调休'),
         (DISABLE, u'禁用'),
         (DISABLE, u'禁用'),
     )
     )
 
 

+ 1 - 1
apps/tenant/repair_order/filters.py

@@ -7,7 +7,7 @@ from .models import RepairOrder
 class RepairOrderFilter(django_filters.FilterSet):
 class RepairOrderFilter(django_filters.FilterSet):
     no = django_filters.CharFilter(field_name='no', lookup_expr='icontains')
     no = django_filters.CharFilter(field_name='no', lookup_expr='icontains')
     status = django_filters.CharFilter(method='query_status')
     status = django_filters.CharFilter(method='query_status')
-    building = django_filters.CharFilter(field_name='building')
+    device_name = django_filters.CharFilter(field_name='device__name', lookup_expr='icontains')
 
 
     class Meta:
     class Meta:
         model = RepairOrder
         model = RepairOrder

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

@@ -7,11 +7,11 @@ from apps.log.models import BizLog
 from apps.tenant import tenant_log
 from apps.tenant import tenant_log
 from apps.tenant.models import Tenant
 from apps.tenant.models import Tenant
 from apps.upload.models import Upload
 from apps.upload.models import Upload
-from apps.tenant.building.models import Building
 from utils.exceptions import CustomError
 from utils.exceptions import CustomError
 from apps.tenant.option.models import Option
 from apps.tenant.option.models import Option
 from utils.format import strftime, strfsecond
 from utils.format import strftime, strfsecond
 from apps.account.models import User
 from apps.account.models import User
+from apps.tenant.device.models import DeviceModel
 
 
 
 
 class RepairOrder(models.Model):
 class RepairOrder(models.Model):
@@ -24,7 +24,9 @@ class RepairOrder(models.Model):
 
 
     no = models.CharField(max_length=50, verbose_name='单号', blank=True)
     no = models.CharField(max_length=50, verbose_name='单号', blank=True)
     tenant = models.ForeignKey(Tenant, verbose_name=u'租户', on_delete=models.PROTECT, blank=True)
     tenant = models.ForeignKey(Tenant, verbose_name=u'租户', on_delete=models.PROTECT, blank=True)
-    building = models.ForeignKey(Building, verbose_name='楼宇', on_delete=models.PROTECT, blank=True, null=True)
+    device = models.ForeignKey(DeviceModel, verbose_name='设备', on_delete=models.PROTECT, blank=True, null=True)
+    device_name = models.CharField(max_length=100, verbose_name='设备名称')
+    device_address = models.CharField(max_length=200, verbose_name='设备地址')
     fault_des = models.CharField(max_length=200, verbose_name='故障描述')
     fault_des = models.CharField(max_length=200, verbose_name='故障描述')
     repair_type = models.ForeignKey(Option, verbose_name='报修类型', on_delete=models.PROTECT)
     repair_type = models.ForeignKey(Option, verbose_name='报修类型', on_delete=models.PROTECT)
     user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"报修人员", on_delete=models.PROTECT,
     user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"报修人员", on_delete=models.PROTECT,
@@ -65,9 +67,9 @@ class RepairOrder(models.Model):
         no = '%s%d-%s' % ('BX', self.tenant.id, now.strftime('%Y%m%d%H%M%S'))
         no = '%s%d-%s' % ('BX', self.tenant.id, now.strftime('%Y%m%d%H%M%S'))
         return no
         return no
 
 
-    def get_full_building(self):
-        builiding = u'{0}-{1}-{2}'.format(self.building.building,self.building.floor,self.building.location,)
-        return builiding
+    def get_full_name(self):
+        address = u'{0}-{1}'.format(self.device.branch,self.device.address)
+        return address
 
 
     @staticmethod
     @staticmethod
     def get_instance_by_id(id, tenant):
     def get_instance_by_id(id, tenant):

+ 1 - 5
apps/tenant/repair_order/serializers.py

@@ -9,19 +9,15 @@ class RepairOrderSerializer(serializers.ModelSerializer):
     status_text = serializers.CharField(source='get_status_display', read_only=True)
     status_text = serializers.CharField(source='get_status_display', read_only=True)
     user_username = serializers.CharField(source='user.username', read_only=True)
     user_username = serializers.CharField(source='user.username', read_only=True)
     repair_type = serializers.CharField(source='repair_type.name', read_only=True)
     repair_type = serializers.CharField(source='repair_type.name', read_only=True)
-    building_text = serializers.SerializerMethodField()
     images = serializers.SerializerMethodField()
     images = serializers.SerializerMethodField()
 
 
     def get_images(self, obj):
     def get_images(self, obj):
         return UploadSerializer(obj.images, many=True).data
         return UploadSerializer(obj.images, many=True).data
 
 
-    def get_building_text(self, obj):
-        return obj.building.get_full_name()
-
     class Meta:
     class Meta:
         model = RepairOrder
         model = RepairOrder
         fields = (
         fields = (
-            'id', 'status','status_text', 'no', 'fault_des', 'name', 'tel', 'create_time', 'building_text',
+            'id', 'status','status_text', 'no', 'fault_des', 'name', 'tel', 'create_time', 'device_name', 'device_address',
             'repair_type', 'user', 'user_username', 'images')
             'repair_type', 'user', 'user_username', 'images')
 
 
 class RepairOrderFinishSerializer(serializers.ModelSerializer):
 class RepairOrderFinishSerializer(serializers.ModelSerializer):

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

@@ -8,7 +8,7 @@ from utils.custom_modelviewset import CustomModelViewSet
 from utils.exceptions import CustomError
 from utils.exceptions import CustomError
 from utils.permission import IsTenantUser, permission_required
 from utils.permission import IsTenantUser, permission_required
 from .serializers import RepairOrderSerializer
 from .serializers import RepairOrderSerializer
-from .models import RepairOrder, RepairOrderRecord,RepairOrderFinish
+from .models import RepairOrder, RepairOrderRecord, RepairOrderFinish
 from .filters import RepairOrderFilter
 from .filters import RepairOrderFilter
 from apps.tenant import tenant_log
 from apps.tenant import tenant_log
 from apps.log.models import BizLog
 from apps.log.models import BizLog
@@ -24,29 +24,14 @@ class DictView(APIView):
         ret = {
         ret = {
             'status': settings.REPAIR_STATUS_CHOICES,
             'status': settings.REPAIR_STATUS_CHOICES,
         }
         }
-        # 租户下面的账号,只查询账号所在区域的部门数据
-        if request.user.is_admin() and request.user.employee.department:
-            ret['area'] = [{
-                'id': request.user.employee.department.area.id,
-                'name': request.user.employee.department.area.name,
-            }]
-            ret['department'] = AreaDepartmentSerializer(
-                Department.objects.filter(delete=False, enable=True, area=request.user.employee.department.area),
-                many=True).data
-        else:
-            ret['area'] = AreaSerializer(Area.objects.filter(delete=False, enable=True, tenant=tenant), many=True).data
-            ret['department'] = AreaDepartmentSerializer(
-                Department.objects.filter(delete=False, enable=True, area__tenant=tenant), many=True).data
         return response_ok(ret)
         return response_ok(ret)
 
 
 class GetEmployeeView(APIView):
 class GetEmployeeView(APIView):
     permission_classes = [IsTenantUser, ]
     permission_classes = [IsTenantUser, ]
 
 
     def get(self, request):
     def get(self, request):
-        department_id = request.GET.get('department_id')
         employees = EmployeeSerializer(
         employees = EmployeeSerializer(
-            Employee.objects.filter(status__lt=Employee.LEAVE_OFFICE, type=Employee.EMPLOYEE,
-                                    department_id=department_id), many=True).data
+            Employee.objects.filter(status__lte=Employee.DAY_OFF, type=Employee.EMPLOYEE, ), many=True).data
         data = []
         data = []
         for emp in employees:
         for emp in employees:
             dict = {
             dict = {
@@ -73,13 +58,11 @@ class RepairOrderViewSet(CustomModelViewSet):
     queryset = RepairOrder.objects.filter(delete=False)
     queryset = RepairOrder.objects.filter(delete=False)
     serializer_class = RepairOrderSerializer
     serializer_class = RepairOrderSerializer
 
 
-    @permission_required('repair_order.browse_repair_order')
     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)
         f = RepairOrderFilter(self.request.GET, queryset=queryset)
         f = RepairOrderFilter(self.request.GET, queryset=queryset)
         return f.qs
         return f.qs
 
 
-    @permission_required('repair_order.delete_repair_order')
     def destroy(self, request, *args, **kwargs):
     def destroy(self, request, *args, **kwargs):
         with transaction.atomic():
         with transaction.atomic():
             instance = self.get_object()
             instance = self.get_object()
@@ -93,8 +76,6 @@ class RepairOrderViewSet(CustomModelViewSet):
     def check(self, request, pk):
     def check(self, request, pk):
         # 审核
         # 审核
         try:
         try:
-            if not self.request.user.has_perm('repair_order.check_repair_order'):
-                raise CustomError(u"您没有[报修工单-审核]权限,无法执行该操作,请联系管理员分配权限!")
             with transaction.atomic():
             with transaction.atomic():
                 user = self.request.user
                 user = self.request.user
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
@@ -109,8 +90,6 @@ class RepairOrderViewSet(CustomModelViewSet):
     def dispatch_employee(self, request, pk):
     def dispatch_employee(self, request, pk):
         # 派工
         # 派工
         try:
         try:
-            if not self.request.user.has_perm('repair_order.dispatch_repair_order'):
-                raise CustomError(u"您没有[报修工单-派工]权限,无法执行该操作,请联系管理员分配权限!")
             user_ids = self.request.data.get('user_ids')
             user_ids = self.request.data.get('user_ids')
             if not user_ids:
             if not user_ids:
                 return response_error('请选择维修工人!')
                 return response_error('请选择维修工人!')
@@ -132,8 +111,6 @@ class RepairOrderViewSet(CustomModelViewSet):
     def turn_employee(self, request, pk):
     def turn_employee(self, request, pk):
         # 转单
         # 转单
         try:
         try:
-            if not self.request.user.has_perm('repair_order.dispatch_repair_order'):
-                raise CustomError(u"您没有[报修工单-派工]权限,无法执行该操作,请联系管理员分配权限!")
             user_ids = self.request.data.get('user_ids')
             user_ids = self.request.data.get('user_ids')
             if not user_ids:
             if not user_ids:
                 return response_error('请选择维修工人!')
                 return response_error('请选择维修工人!')

+ 1 - 1
apps/wxapp/repair_order/serializers.py

@@ -62,7 +62,7 @@ class RepairOrderListSerializer(serializers.ModelSerializer):
 class RepairOrderSerializer(serializers.ModelSerializer):
 class RepairOrderSerializer(serializers.ModelSerializer):
     class Meta:
     class Meta:
         model = RepairOrder
         model = RepairOrder
-        fields = ('id', 'fault_des', 'tel', 'name', 'repair_type', 'building')
+        fields = ('id', 'fault_des', 'tel', 'name', 'repair_type','device_name','device_address',)
 
 
     def create(self, validated_data):
     def create(self, validated_data):
         if 'images' in self.initial_data:
         if 'images' in self.initial_data:

+ 16 - 13
apps/wxapp/repair_order/views.py

@@ -7,7 +7,7 @@ from rest_framework.decorators import action
 from utils import response_ok, response_error
 from utils import response_ok, response_error
 from utils.custom_modelviewset import CustomModelViewSet
 from utils.custom_modelviewset import CustomModelViewSet
 from utils.exceptions import CustomError
 from utils.exceptions import CustomError
-from utils.permission import IsTenantUser, permission_required, isLogin
+from utils.permission import IsTenantUser, permission_required, isLogin, IsEmployee
 from apps.tenant.repair_order.models import RepairOrder, RepairOrderRecord, RepairOrderComment, RepairOrderFinish
 from apps.tenant.repair_order.models import RepairOrder, RepairOrderRecord, RepairOrderComment, RepairOrderFinish
 from apps.tenant.repair_order.filters import RepairOrderFilter
 from apps.tenant.repair_order.filters import RepairOrderFilter
 from apps.upload.models import Upload
 from apps.upload.models import Upload
@@ -85,14 +85,15 @@ class DispatchRepairOrderView(generics.ListAPIView):
 
 
 
 
 class RepairOrderViewSet(CustomModelViewSet):
 class RepairOrderViewSet(CustomModelViewSet):
-    permission_classes = [isLogin, ]
+    permission_classes = [IsTenantUser, ]
     queryset = RepairOrder.objects.filter(delete=False)
     queryset = RepairOrder.objects.filter(delete=False)
     serializer_class = RepairOrderSerializer
     serializer_class = RepairOrderSerializer
 
 
     def filter_queryset(self, queryset):
     def filter_queryset(self, queryset):
-        appid = self.request.GET.get('appid')
-        app = WechatApplet.getByAppid(appid)
-        queryset = queryset.filter(tenant=app.tenant, user=self.request.user)
+        queryset = queryset.filter(tenant=self.request.user.employee.tenant, )
+        if self.request.user.is_repair:
+            queryset = queryset.filter(user=self.request.user)
+        # user_ids = self.repair_users.split(',') or [] TODO 维修师傅一对一
         f = RepairOrderFilter(self.request.GET, queryset=queryset)
         f = RepairOrderFilter(self.request.GET, queryset=queryset)
         return f.qs
         return f.qs
 
 
@@ -116,8 +117,8 @@ class RepairOrderViewSet(CustomModelViewSet):
     def check(self, request, pk):
     def check(self, request, pk):
         # 审核
         # 审核
         try:
         try:
-            # if not self.request.user.has_perm('repair_order.check_repair_order'):
-            #     raise CustomError(u"您没有[报修工单-审核]权限,无法执行该操作,请联系管理员分配权限!")
+            if not self.request.user.is_admin():
+                raise CustomError(u"权限不足,禁止操作!")
             with transaction.atomic():
             with transaction.atomic():
                 user = self.request.user
                 user = self.request.user
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
@@ -132,8 +133,8 @@ class RepairOrderViewSet(CustomModelViewSet):
     def hang_up(self, request, pk):
     def hang_up(self, request, pk):
         # 挂起
         # 挂起
         try:
         try:
-            # if not self.request.user.has_perm('repair_order.finish_repair_order'):
-            #     raise CustomError(u"您没有[报修工单-审核]权限,无法执行该操作,请联系管理员分配权限!")
+            if not self.request.user.is_admin():
+                raise CustomError(u"权限不足,禁止操作!")
             reason = request.data.get('reason')
             reason = request.data.get('reason')
             if not reason:
             if not reason:
                 raise CustomError('请填写挂起原因')
                 raise CustomError('请填写挂起原因')
@@ -151,8 +152,8 @@ class RepairOrderViewSet(CustomModelViewSet):
     def cancel_hang_up(self, request, pk):
     def cancel_hang_up(self, request, pk):
         # 取消挂起,继续施工
         # 取消挂起,继续施工
         try:
         try:
-            # if not self.request.user.has_perm('repair_order.finish_repair_order'):
-            #     raise CustomError(u"您没有[报修工单-审核]权限,无法执行该操作,请联系管理员分配权限!")
+            if not self.request.user.is_admin():
+                raise CustomError(u"权限不足,禁止操作!")
             with transaction.atomic():
             with transaction.atomic():
                 user = self.request.user
                 user = self.request.user
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
@@ -234,8 +235,8 @@ class RepairOrderViewSet(CustomModelViewSet):
     def invalid(self, request, pk):
     def invalid(self, request, pk):
         # 作废
         # 作废
         try:
         try:
-            # if not self.request.user.has_perm('repair_order.invalid_repair_order'):
-            #     raise CustomError(u"您没有[报修工单-作废]权限,无法执行该操作,请联系管理员分配权限!")
+            if not self.request.user.is_admin():
+                raise CustomError(u"权限不足,禁止操作!")
             with transaction.atomic():
             with transaction.atomic():
                 user = self.request.user
                 user = self.request.user
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
                 instance = RepairOrder.get_instance_by_id(pk, user.employee.tenant)
@@ -286,6 +287,8 @@ class RepairOrderViewSet(CustomModelViewSet):
     @permission_required('repair_order.delete_repair_order')
     @permission_required('repair_order.delete_repair_order')
     def destroy(self, request, *args, **kwargs):
     def destroy(self, request, *args, **kwargs):
         try:
         try:
+            if not self.request.user.is_admin():
+                raise CustomError(u"权限不足,禁止操作!")
             with transaction.atomic():
             with transaction.atomic():
                 instance = self.get_object()
                 instance = self.get_object()
                 instance.delete = True
                 instance.delete = True

+ 2 - 0
apps/wxapp/serializers.py

@@ -44,6 +44,7 @@ class WechatLoginSerializer(serializers.Serializer):
                 'user_id': user.id,
                 'user_id': user.id,
                 'token': jwt_encode_handler(payload),
                 'token': jwt_encode_handler(payload),
                 'openid': customer_wechat.openid,
                 'openid': customer_wechat.openid,
+                'tenant_id': customer_wechat.customer.tenant and customer_wechat.customer.tenant.id or '',
                 'nick_name': settings.WEAPP['nick_name'],
                 'nick_name': settings.WEAPP['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 '',
@@ -78,6 +79,7 @@ class WechatBindSerializer(serializers.Serializer):
                 'face': customer.face,
                 'face': customer.face,
                 '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',  # 是否禁用报修,
+                'tenant_id': customer.tenant and customer.tenant.id or '',
             }
             }
 
 
         else:
         else:

+ 1 - 2
apps/wxapp/views.py

@@ -140,13 +140,12 @@ class PosterView(generics.ListAPIView):
         return data
         return data
 
 
 class DictView(APIView):
 class DictView(APIView):
-
+    permission_classes = [isLogin, ]
     def get(self, request):
     def get(self, request):
         tenant = request.user.employee.tenant
         tenant = request.user.employee.tenant
         ret = {
         ret = {
             'repair_type': OptionSerializer(Option.objects.filter(delete=False,type=Option.REPAIRS_TYPE, enable=True, tenant=tenant), many=True).data,
             'repair_type': OptionSerializer(Option.objects.filter(delete=False,type=Option.REPAIRS_TYPE, enable=True, tenant=tenant), many=True).data,
             'fault_cause': OptionSerializer(Option.objects.filter(delete=False,type=Option.FAULT_CAUSE, enable=True, tenant=tenant), many=True).data,
             'fault_cause': OptionSerializer(Option.objects.filter(delete=False,type=Option.FAULT_CAUSE, enable=True, tenant=tenant), many=True).data,
-            'area': AreaSerializer(Area.objects.filter(delete=False, enable=True, tenant=tenant), many=True).data,
         }
         }
         return response_ok(ret)
         return response_ok(ret)
 
 

+ 1 - 58
uis/tenant/repairManage/dispatch.html

@@ -20,24 +20,7 @@
                 <div class="layui-card-body">
                 <div class="layui-card-body">
                     <form class="layui-form" action="" lay-filter="component-form-element">
                     <form class="layui-form" action="" lay-filter="component-form-element">
                         <div class="layui-row layui-col-space10 layui-form-item">
                         <div class="layui-row layui-col-space10 layui-form-item">
-                            <div class="layui-col-lg6">
-                                <label class="layui-form-label"><font color='red' size="4">*</font>区域:</label>
-                                <div class="layui-input-block">
-                                    <select id="id_area" lay-verify="required" name="area" lay-filter="areaChange"
-                                            style="width: 40px;">
-                                        <option value="">选择区域</option>
-                                    </select>
-                                </div>
-                            </div>
-                            <div class="layui-col-lg6">
-                                <label class="layui-form-label"><font color='red' size="4">*</font>部门:</label>
-                                <div class="layui-input-block">
-                                    <select id="id_department" lay-verify="required" name="department"
-                                            lay-filter="deptChange" style="width: 40px;">
-                                        <option value="">选择部门</option>
-                                    </select>
-                                </div>
-                            </div>
+
                             <div class="layui-col-lg6">
                             <div class="layui-col-lg6">
                                 <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">
                                 <div class="layui-input-block">
@@ -73,40 +56,7 @@
         var departments = []
         var departments = []
         // 调用接口获取dict
         // 调用接口获取dict
         admin.req({
         admin.req({
-            url: '/tenant/repair_order/dict/',
-            done: function (res) {
-                departments = res.data.department;
-                var area = res.data.area;
-                var area_node = $('#id_area');
-                for (var i in area) {
-                    var pid = area[i].id;
-                    var area_value = area[i].name;
-                    area_node.append("<option value='" + pid + "'>" + area_value + "</option>");
-                }
-                form.render();
-            }
-        });
-        var areaChange = function (value) {
-            var department_option = '<option value="">选择部门</option>';
-            for (var i = 0; i < departments.length; i++) {
-                if (departments[i].area === parseInt(value)) {
-                    department_option += "<option value=" + departments[i].id + ">" + departments[i].name + "</option>";
-                }
-            }
-            $("#id_department").append(department_option);
-            form.render();
-        };
-
-        form.on('select(areaChange)', function (data) {
-            $("#id_department").html('');
-            if (!data.value) return;
-            areaChange(data.value)
-        });
-
-        var deptChange = function (value) {
-            admin.req({
                 url: '/tenant/repair_order/get_employee/',
                 url: '/tenant/repair_order/get_employee/',
-                data: {department_id: value},
                 type: 'get',
                 type: 'get',
                 done: function (res) {
                 done: function (res) {
                     var users = res.data;
                     var users = res.data;
@@ -119,13 +69,6 @@
                     form.render();
                     form.render();
                 }
                 }
             });
             });
-        };
-
-        form.on('select(deptChange)', function (data) {
-            $("#id_user").html('');
-            if (!data.value) return;
-            deptChange(data.value)
-        });
 
 
 
 
         form.on('submit(component-form-element)', function (data) {
         form.on('submit(component-form-element)', function (data) {

+ 2 - 1
uis/tenant/repairManage/index.html

@@ -130,7 +130,8 @@
             , type: 'get'
             , type: 'get'
             , cols: [[
             , cols: [[
                 {field: 'no', title: '报修单号', width: 180}
                 {field: 'no', title: '报修单号', width: 180}
-                , {field: 'building_text', title: '地点', width: 250}
+                , {field: 'device_name', title: '设备名称', width: 200}
+                , {field: 'device_address', title: '地点', width: 200}
                 , {field: 'fault_des', title: '问题描述', MinWidth: 200}
                 , {field: 'fault_des', title: '问题描述', MinWidth: 200}
                 , {field: 'repair_type', title: '报修类型', width: 100}
                 , {field: 'repair_type', title: '报修类型', width: 100}
                 , {field: 'name', title: '报修人', width: 100}
                 , {field: 'name', title: '报修人', width: 100}

+ 6 - 0
utils/permission.py

@@ -17,6 +17,12 @@ class IsTenantUser(permissions.BasePermission):
             return False
             return False
         return request.user.is_admin()
         return request.user.is_admin()
 
 
+class IsEmployee(permissions.BasePermission):
+    def has_permission(self, request, view):
+        if not request.user or not request.user.is_authenticated:
+            return False
+        return request.user.is_employee()
+
 class IsAdministratorUser(permissions.BasePermission):
 class IsAdministratorUser(permissions.BasePermission):
     def has_permission(self, request, view):
     def has_permission(self, request, view):
         if not request.user or not request.user.is_authenticated:
         if not request.user or not request.user.is_authenticated: