wushaodong 4 år sedan
förälder
incheckning
1f64c663c9

+ 12 - 0
apps/tenant/device/resources.py

@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+
+from apps.base import ExcelImporter
+
+class DeviceImporter(ExcelImporter):
+    fields = {
+        u'名称': (True, ExcelImporter.formatUnicode),
+        u'编号': (True, ExcelImporter.formatUnicode),
+        u'设备型号': (True, ExcelImporter.formatUnicode),
+        u'小地点': (True, ExcelImporter.formatUnicode),
+        u'大地点': (True, ExcelImporter.formatUnicode),
+    }

+ 2 - 1
apps/tenant/device/urls.py

@@ -2,9 +2,10 @@
 from django.conf.urls import url,include
 from apps.tenant.device.views import DeviceViewSet
 from rest_framework.routers import SimpleRouter
+from .views import DeviceImportView
 
 urlpatterns = [
-
+    url(r'import/$', DeviceImportView.as_view()),
 ]
 
 # 创建路由器并注册我们的视图。

+ 41 - 2
apps/tenant/device/views.py

@@ -1,12 +1,16 @@
 # coding=utf-8
-from .models import DeviceModel
+from rest_framework.views import APIView
+from django.db import transaction
+import traceback
 from .serializers import DeviceSerializer
 from utils.exceptions import CustomError
 from utils.permission import IsTenantUser
-from .filters import DeviceFilter
+from .filters import DeviceFilter, DeviceModel
 from utils.custom_modelviewset import CustomModelViewSet
 from apps.log.models import BizLog
 from apps.tenant import tenant_log
+from utils import response_ok, response_error
+from .resources import DeviceImporter
 
 # Create your views here.
 class DeviceViewSet(CustomModelViewSet):
@@ -40,3 +44,38 @@ class DeviceViewSet(CustomModelViewSet):
             raise CustomError(u'禁止跨租户操作!')
         tenant_log(self.request.user.employee, BizLog.DELETE, u'删除设备信息[%s],id=%d' % (instance.name, instance.id))
         super(DeviceViewSet, self).perform_destroy(instance)
+
+class DeviceImportView(APIView):
+    permission_classes = [IsTenantUser, ]
+
+    def post(self, request):
+        file = request.FILES.get('excel_file')
+        try:
+            line = 2
+            importer = DeviceImporter()
+            excel_rows = importer.getExcelData(file)
+            with transaction.atomic():
+                for excel_row in excel_rows:
+                    try:
+                        row = importer.validRow(excel_row)
+                        data = {}
+                        data['name'] = row[u'名称']
+                        data['device_no'] = row[u'编号']
+                        data['device_model'] = row[u'设备型号']
+                        data['branch'] = row[u'小地点']
+                        data['address'] = row[u'大地点']
+                        data['create_user'] = request.user
+                        data['tenant'] = request.user.employee.tenant
+                        DeviceModel.objects.create(**data)
+                    except CustomError as e:
+                        raise CustomError(u'第%d行:%s' % (line, e.get_error_msg()))
+                    except Exception as e:
+                        raise CustomError(u'第%d行:%s' % (line, str(e)))
+                    line += 1
+                tenant_log(self.request.user.employee, BizLog.IMPORT, u"导入设备信息[%s]条" % (line-2))
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            traceback.print_exc()
+            return response_error(u'导入失败!')
+        return response_ok()

+ 1 - 5
uis/tenant/device/edit.html

@@ -9,7 +9,6 @@
           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>
         .input {
             border-radius: 2px;
@@ -86,12 +85,9 @@
         , autocomplete: 'autocomplete'
     }).extend({
         index: 'lib/index',
-        formSelects: 'formSelects-v4'
-    }).use(['index', 'form', 'laydate', 'autocomplete',], function () {
+    }).use(['index', 'form', 'autocomplete',], function () {
         var $ = layui.$
             , admin = layui.admin
-            , laydate = layui.laydate
-            , autocomplete = layui.autocomplete
             , form = layui.form;
         var id = layui.view.getParameterByName('id');
         if (id) {