Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

wushaodong před 4 roky
rodič
revize
54c7631d23

+ 8 - 5
apps/tenant/operation_help/models.py

@@ -6,14 +6,13 @@ from apps.tenant.models import Tenant
 from utils.file_operation import UploadFile, DeleteFile
 
 class OperationHelp(models.Model):
-
     title = models.CharField(verbose_name=u'标题', max_length=100)
     content = models.TextField(verbose_name=u'内容')
     create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"创建人", on_delete=models.PROTECT,
                                     editable=False)
     create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
     enable = models.BooleanField(verbose_name=u"在用", default=True)
-    tenant = models.ForeignKey(Tenant, verbose_name=u'企业', editable=False, on_delete=models.PROTECT, null=True)
+    tenant = models.ForeignKey(Tenant, verbose_name=u'企业', editable=False, on_delete=models.PROTECT)
 
 
     class Meta:
@@ -21,18 +20,20 @@ class OperationHelp(models.Model):
         ordering = ['-id', 'tenant']
         verbose_name = u'运维帮助'
 
+
 class OperationHelpImg(models.Model):
+    operation_help = models.ForeignKey(OperationHelp,verbose_name=u'运维帮助', on_delete=models.PROTECT,null=True)
     image = models.CharField(verbose_name=u'图片路径', max_length=250)
     width = models.IntegerField(verbose_name=u"图片宽度")
     height = models.IntegerField(verbose_name=u"图片高度")
-
+    tenant = models.ForeignKey(Tenant, verbose_name=u'企业', editable=False, on_delete=models.PROTECT, null=True)
 
     class Meta:
         db_table = 'operation_help_img'
         ordering = ['-id']
         verbose_name = u'运维帮助图片'
 
-    def _add_img(self, file, user_id):
+    def _add_img(self,file,user_id):
         width = None
         height = None
 
@@ -62,9 +63,11 @@ class OperationHelpImg(models.Model):
         DeleteFile(image)
 
 class OperationHelpRadio(models.Model):
+    operation_help = models.ForeignKey(OperationHelp, verbose_name=u'运维帮助', on_delete=models.PROTECT, null=True)
     radio_path = models.CharField(verbose_name=u'视频路径', max_length=250)
     radio_size = models.FloatField(verbose_name="视频大小",blank=True, default=0)
     radio_time = models.FloatField(verbose_name="视频时长",blank=True, default=0)
+    tenant = models.ForeignKey(Tenant, verbose_name=u'企业', editable=False, on_delete=models.PROTECT, null=True)
 
     class Meta:
         db_table = 'operation_help_radio'
@@ -93,6 +96,6 @@ class OperationHelpRadio(models.Model):
         self.save()
 
     def del_radio(self):
-        radio = self.radio
+        radio = self.radio_path
         # self.delete()
         DeleteFile(radio)

+ 7 - 7
apps/tenant/operation_help/serializer.py

@@ -1,5 +1,5 @@
 from rest_framework import serializers
-from .models import OperationHelp
+from .models import OperationHelp,OperationHelpImg,OperationHelpRadio
 from django.conf import settings
 
 class OperationHelpSerializer(serializers.ModelSerializer):
@@ -17,11 +17,11 @@ class OperationHelpSerializer(serializers.ModelSerializer):
         fields = '__all__'
 
     def create(self, validated_data):
-        validated_data['create_user'] = self.context['request'].user
+        user = self.context['request'].user
+        validated_data['create_user'] = user
         validated_data['tenant'] = self.context['request'].user.employee.tenant
         instance = super(OperationHelpSerializer, self).create(validated_data)
-
-        return instance
-
-
-
+        if 'file' in self.initial_data:
+            OperationHelpImg.objects.filter(tenant=instance.tenant,operation_help__isnull=True,).update(operation_help=instance)
+            OperationHelpRadio.objects.filter(tenant=instance.tenant,operation_help__isnull=True,).update(operation_help=instance)
+        return instance

+ 29 - 7
apps/tenant/operation_help/views.py

@@ -9,6 +9,7 @@ from utils.permission import IsAdministratorUser
 from .serializer import OperationHelpSerializer
 from apps.tenant import tenant_log
 from apps.log.models import BizLog
+from utils.exceptions import CustomError
 from .filters import OperationHelpFilter
 from utils import response_ok, response_error
 from django.db import transaction
@@ -27,28 +28,49 @@ class OperationHelpViewSet(CustomModelViewSet):
         super(OperationHelpViewSet,self).perform_create(serializer)
         instance = serializer.instance
         validated_data = serializer.validated_data
-        tenant_log(self.request.user.employee, BizLog.INSERT, u'添加运维帮助[%s],id=%d' % (instance.name, instance.id),
+        tenant_log(self.request.user.employee, BizLog.INSERT, u'添加运维帮助[%s],id=%d' % (instance.title, instance.id),
                    validated_data)
 
     def perform_update(self, serializer):
         super(OperationHelpViewSet,self).perform_update(serializer)
         instance = serializer.instance
         validated_data = serializer.validated_data
-        tenant_log(self.request.user.employee, BizLog.INSERT, u'修改运维帮助[%s],id=%d' % (instance.name, instance.id),
+        tenant_log(self.request.user.employee, BizLog.INSERT, u'修改运维帮助[%s],id=%d' % (instance.title, instance.id),
                    validated_data)
 
     @action(methods=['post'], detail=False)
     def upload_image(self, request):
         file = self.request.FILES.get('file')
-        img = OperationHelpImg.objects._add_img(file,request.user)
-        if img:
-            return response_ok(img.image)
+        user = self.request.user
+        operation_help_img = OperationHelpImg.objects.create(tenant=user.employee.tenant)
+        operation_help_img._add_img(file, user)
+        image = operation_help_img.image
+        if image:
+            data={
+                "src": image
+            }
+            return response_ok(data)
         return response_error('上传失败,请重新上传!')
 
     @action(methods=['post'], detail=False)
     def upload_radio(self, request):
         file = self.request.FILES.get('file')
-        radio_path = OperationHelpRadio.objects._add_img(file, request.user)
+        user = self.request.user
+        operation_help_radio = OperationHelpRadio.objects.create(tenant=user.employee.tenant)
+        operation_help_radio._add_radio(file, user)
+        radio_path = operation_help_radio.radio_path
         if radio_path:
-            return response_ok(radio_path)
+            data = {
+                "src": radio_path
+            }
+            return response_ok(data)
         return response_error('上传失败,请重新上传!')
+
+    def destroy(self, request, *args, **kwargs):
+        with transaction.atomic():
+            instance = self.get_object()
+            if instance.tenant != request.user.employee.tenant:
+                raise CustomError(u'禁止跨企业操作!')
+            super(OperationHelpViewSet, self).destroy(self, request, *args, **kwargs)
+            tenant_log(self.request.user.employee, BizLog.DELETE, u'删除运维帮助[%s],id=%d' % (instance.title, instance.id))
+        return response_ok()

+ 1 - 0
ly_baoxiu_admin/settings.py

@@ -56,6 +56,7 @@ INSTALLED_APPS = [
     'apps.tenant.inspection_order',
     'apps.wxapp',
     'apps.tenant.notices',
+    'apps.tenant.operation_help',
 
 ]
 

+ 6 - 5
uis/tenant/operation_help/detail.html

@@ -19,11 +19,6 @@
             height: 30%;
             margin-bottom: 20px;
         }
-        /*企业营业执照样式*/
-        .imgStyle{
-            width: 200px;
-            height: auto;
-        }
     </style>
 </head>
 <body>
@@ -74,6 +69,12 @@
         });
         var dom = document.getElementById("content_demo");
         if(data.content && dom){
+            if(data.content.indexOf('video') !== -1){
+               let tempList = data.content.split('video');
+               //修改video标签的样式
+               tempList[0] += 'video style="width: 100%;"';
+               data.content = tempList.join("");
+            }
            dom.innerHTML = data.content;
         }
     });

+ 5 - 8
uis/tenant/operation_help/edit.html

@@ -77,14 +77,14 @@
                 , '|', 'fullScreen'
             ],
              uploadImage: {
-                url: '/tenant/poster/',
+                url: '/tenant/operation_help/upload_image/',
                 accept: 'image',
                 acceptMime: 'image/*',
                 exts: 'jpg|png|gif|bmp|jpeg',
                 size: '10240'
              },
              uploadVideo: {
-                 url: '/upload/uploadVideo/',
+                 url: '/tenant/operation_help/upload_radio/',
                  accept: 'video',
                  acceptMime: 'video/*',
                  exts: 'mp4|flv|avi|rm|rmvb',
@@ -101,9 +101,8 @@
               layedit.setContent(editIndex, editdata.content, false);
             }
         }
-        var form_data = {},
-            url = id ? '/tenant/poster/' + id + '/update_poster/' : '/tenant/poster/',
-            method = id ? 'post' : 'put'
+            var url = id ? '/tenant/operation_help/' + id + "/" : '/tenant/operation_help/',
+            method = id ? 'put' : 'post'
 
         form.on('submit(component-form-element)', function (data) {
             //layer.msg(JSON.stringify(data.field));
@@ -112,11 +111,9 @@
             if(!data.field.enable){
                 data.field.enable = 0
             }
-            // 调用接口新增或者修改运维宝典数据
-            form_data = data.field
             admin.req({
                 url: url
-                , data: {data:JSON.stringify(form_data)}
+                , data: data.field
                 , type: method
                 , done: function (res) {
                     if (res.code != 0) {

+ 17 - 3
uis/tenant/operation_help/index.html

@@ -85,6 +85,9 @@
                         <div class="layui-btn-group">
                             <a class="layui-btn layui-btn-xs" lay-event="edit">修改</a>
                         </div>
+                        <div class="layui-btn-group">
+                            <a class="layui-btn layui-btn-xs" lay-event="delete">删除</a>
+                        </div>
                     </script>
                 </div>
             </div>
@@ -106,12 +109,11 @@
 
         table.render({
             elem: '#datagrid'
-            , url: '/tenant/poster/'
+            , url: '/tenant/operation_help/'
             , cols: [[
                 {field: 'title', title: '标题', width: 150}
-                ,{field: 'content', title: '内容', width: 280}
                 ,{field: 'create_time', title: '创建时间', width: 200}
-                , {title: "操作", width: 150, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
+                , {title: "操作", width: 180, align: 'left', fixed: 'right', toolbar: '#datagrid-operate-bar'}
             ]]
             , page: true
             , height: 'full-108'
@@ -155,6 +157,18 @@
                     },
                     content: 'edit.html?id=' + data.id
                 });
+            }else if(obj.event === 'delete'){
+                layer.confirm('确定要删除吗?', function (index) {
+                    layer.close(index);
+                    layui.admin.req({
+                        notice: true
+                        , url: '/tenant/operation_help/' + data.id + '/'
+                        , type: 'delete'
+                        , done: function (res) {
+                            table.reload('datagrid', {});
+                        }
+                    });
+                });
             }
         });
 

binární
uis/up/operation_help_img/15517558888_20210419155852833879.png


binární
uis/up/operation_help_img/15517558888_20210419160730330472.jpg


binární
uis/up/operation_help_img/15517558888_20210419160820682683.png


binární
uis/up/operation_help_img/15517558888_20210419161131714864.jpg


binární
uis/up/operation_help_img/15517558888_20210419161339089783.png


binární
uis/up/operation_help_img/15517558888_20210419161353236826.png


binární
uis/up/operation_help_img/15517558888_20210419164648087694.png


binární
uis/up/operation_help_img/15517558888_20210419172237203453.jpg


binární
uis/up/operation_help_radio/15238921537_20210419163328661107.mp4


binární
uis/up/operation_help_radio/15517558888_20210419163358924954.mp4


binární
uis/up/operation_help_radio/15517558888_20210419163539649306.mp4


binární
uis/up/operation_help_radio/15517558888_20210419172259136362.mp4