Explorar o código

fix bug nealy done

Gogs %!s(int64=4) %!d(string=hai) anos
pai
achega
ff5990a0fd
Modificáronse 100 ficheiros con 206 adicións e 80 borrados
  1. 4 2
      src/common/models.py
  2. 118 23
      src/manage/controls.py
  3. 2 0
      src/manage/urls_backstage.py
  4. 45 0
      src/manage/views.py
  5. 0 3
      static/APlayer.min.css
  6. 0 1
      static/APlayer.min.css.map
  7. 0 2
      static/APlayer.min.js
  8. 0 1
      static/APlayer.min.js.map
  9. BIN=BIN
      static/bg.jpg
  10. BIN=BIN
      static/bgline.png
  11. 0 41
      static/demo.html
  12. BIN=BIN
      static/fonts/element-icons.535877f5.woff
  13. BIN=BIN
      static/fonts/element-icons.732389de.ttf
  14. BIN=BIN
      static/fonts/fontawesome-webfont.674f50d2.eot
  15. BIN=BIN
      static/fonts/fontawesome-webfont.af7ae505.woff2
  16. BIN=BIN
      static/fonts/fontawesome-webfont.b06871f2.ttf
  17. BIN=BIN
      static/fonts/fontawesome-webfont.fee66e71.woff
  18. BIN=BIN
      static/images/jgjj.png
  19. BIN=BIN
      static/images/kcjs.png
  20. 0 0
      static/images/logo.png
  21. BIN=BIN
      static/images/lxwm.png
  22. BIN=BIN
      static/images/pxjh.png
  23. BIN=BIN
      static/images/zxbm.png
  24. BIN=BIN
      static/images/zxpx.png
  25. BIN=BIN
      static/logo.png
  26. BIN=BIN
      static/survey_bg.jpg
  27. BIN=BIN
      static/tes2.png
  28. BIN=BIN
      static/test.mp3
  29. BIN=BIN
      static/test.png
  30. BIN=BIN
      static/test3.png
  31. BIN=BIN
      static/test4.png
  32. BIN=BIN
      static/upload/1588754976timg (4).jpg
  33. BIN=BIN
      static/upload/1588821309tmp_1b58081293c0fd2f1eb8da966fcdb090.jpg
  34. BIN=BIN
      static/upload/1588821838tmp_56e21ec0e1b6ad9166726142f30b9570.jpg
  35. BIN=BIN
      static/upload/1588821899tmp_b07a29631af01002362bd8e745857a8e.jpg
  36. BIN=BIN
      static/upload/1588821951tmp_41e1ad93ade9b9e91373da8e0746a87b.jpg
  37. BIN=BIN
      static/upload/1588821986tmp_159339d369c6a563c68433dcc29e1667.jpg
  38. BIN=BIN
      static/upload/1588822035tmp_24db41bceaa11fa1ca8cc41ad4d0588d.jpg
  39. BIN=BIN
      static/upload/1588822097tmp_408e032ea6deb80fd117002653b5d1ce.jpg
  40. BIN=BIN
      static/upload/1588822121tmp_6003831d42ca17de6d8709842751b511.jpg
  41. BIN=BIN
      static/upload/1588822196tmp_9988f901605db4ce75e26c7bc55b3789.jpg
  42. BIN=BIN
      static/upload/1588822240tmp_f99197e54ccb6060aefa60fe18d4b63f.jpg
  43. BIN=BIN
      static/upload/1588946415tmp_24a1499d051efeb165144b0de1150d09.jpg
  44. BIN=BIN
      static/upload/1588946507tmp_de414acc6be1332ea44feb59efcae4fa.jpg
  45. BIN=BIN
      static/upload/1588946598tmp_1321ea47f3f66f5f6e887660e0de95dd.jpg
  46. BIN=BIN
      static/upload/1588946724tmp_22bd03b099acd8702c0df2e763991d27.jpg
  47. BIN=BIN
      static/upload/1588946758tmp_f2cdcec651a67cc371eeec7dd1af3e77.jpg
  48. BIN=BIN
      static/upload/1589022535tmp_7b534b18584060c9fe99fa6d358d21da46745d456b3a8cb9.jpg
  49. BIN=BIN
      static/upload/1589022545tmp_74e8880b255ad22542d6318e4a106cbe4fdab949751d0bf3.jpg
  50. BIN=BIN
      static/upload/1589022556tmp_8319eacda80011f2f660059af4710e6e1639c0beca6a2684.jpg
  51. BIN=BIN
      static/upload/1589022564tmp_6d497eda85e5cbe9e368945e2344d410e26b076a8a505acc.jpg
  52. BIN=BIN
      static/upload/1589026588tmp_bba258dd0bbabd1760d676f030e20b09.jpg
  53. BIN=BIN
      static/upload/1589071686tmp_9612e9141c31e7797fac7f1ed73ae69a.jpg
  54. BIN=BIN
      static/upload/1589071963tmp_63f6bd41f3f63971ce35ec0e3dcb3893.jpg
  55. BIN=BIN
      static/upload/testvideo.mp4
  56. BIN=BIN
      templates/.DS_Store
  57. 0 3
      templates/APlayer.min.css
  58. 0 1
      templates/APlayer.min.css.map
  59. 0 2
      templates/APlayer.min.js
  60. 0 1
      templates/APlayer.min.js.map
  61. BIN=BIN
      templates/bg.jpg
  62. BIN=BIN
      templates/bgline.png
  63. 1 0
      templates/css/app.5c3a327e.css
  64. 1 0
      templates/css/chunk-03b9d101.928f4c18.css
  65. 1 0
      templates/css/chunk-03b9d101.cced094a.css
  66. 1 0
      templates/css/chunk-03b9d101.decafa39.css
  67. 1 0
      templates/css/chunk-03b9d101.e1c4d753.css
  68. 1 0
      templates/css/chunk-06335b5a.7b41d4d6.css
  69. 1 0
      templates/css/chunk-0a1452f6.fc770c45.css
  70. 1 0
      templates/css/chunk-0f4c0854.7b41d4d6.css
  71. 1 0
      templates/css/chunk-0f4c0854.c9e714fe.css
  72. 1 0
      templates/css/chunk-180e2264.3ecd70f6.css
  73. 1 0
      templates/css/chunk-19d1d3b8.e5e519ee.css
  74. 1 0
      templates/css/chunk-1a103b85.e1c4d753.css
  75. 1 0
      templates/css/chunk-1b11583b.5b791094.css
  76. 1 0
      templates/css/chunk-1b11583b.92d4c7bf.css
  77. 1 0
      templates/css/chunk-1d495490.1e6c1190.css
  78. 1 0
      templates/css/chunk-1d495490.5b791094.css
  79. 1 0
      templates/css/chunk-1d495490.667d0236.css
  80. 1 0
      templates/css/chunk-1d495490.92d4c7bf.css
  81. 1 0
      templates/css/chunk-1d495490.ac9bb8ce.css
  82. 1 0
      templates/css/chunk-237b81e6.76fa3b3f.css
  83. 1 0
      templates/css/chunk-2fd5d6d8.e1c4d753.css
  84. 1 0
      templates/css/chunk-2fd5d6d8.f0b7a8df.css
  85. 1 0
      templates/css/chunk-33970c2a.92d4c7bf.css
  86. 1 0
      templates/css/chunk-36bc26c5.408a754e.css
  87. 1 0
      templates/css/chunk-3c3b8f3c.1043c743.css
  88. 1 0
      templates/css/chunk-3fc807ba.36820c74.css
  89. 1 0
      templates/css/chunk-427d2515.7b41d4d6.css
  90. 1 0
      templates/css/chunk-45d58480.1043c743.css
  91. 1 0
      templates/css/chunk-4c394853.1e6c1190.css
  92. 1 0
      templates/css/chunk-4c394853.521cc366.css
  93. 1 0
      templates/css/chunk-4c394853.5b791094.css
  94. 1 0
      templates/css/chunk-4c394853.667d0236.css
  95. 1 0
      templates/css/chunk-4c394853.92d4c7bf.css
  96. 1 0
      templates/css/chunk-5478de12.02874c6d.css
  97. 1 0
      templates/css/chunk-5478de12.f5ced3eb.css
  98. 1 0
      templates/css/chunk-599f6235.4234e73d.css
  99. 1 0
      templates/css/chunk-599f6235.5b791094.css
  100. 0 0
      templates/css/chunk-599f6235.92d4c7bf.css

+ 4 - 2
src/common/models.py

@@ -507,6 +507,7 @@ class Template(models.Model):
     name = models.CharField(u"模板标题",max_length=255)
     widget = models.TextField(u"组件",blank=True,null=True)
 
+    status = models.SmallIntegerField(u"状态",default=1)
     cid = models.IntegerField(u"创建人id")
     cname = models.CharField(u"创建人",max_length=50)
     ctime = models.DateTimeField(u"创建时间", auto_now_add=True)
@@ -523,7 +524,7 @@ class Notice(models.Model):
     receiver_id = models.TextField(u"接收人")
     viewer_id = models.TextField(u"已查看人",blank=True,null=True)
     content = models.TextField(u"消息内容",blank=True,null=True)
-    fileurl = models.CharField(u"附件地址",max_length=50,blank=True,null=True)
+    fileurl = models.TextField(u"附件地址",max_length=50,blank=True,null=True)
     filename = models.CharField(u"附件名称",max_length=50,blank=True,null=True)
 
     cid = models.IntegerField(u"创建人id")
@@ -546,9 +547,10 @@ class Message(models.Model):
     finish_id = models.TextField(u"已填报人数",blank=True,null=True)
     fileurl = models.CharField(u"附件地址",max_length=50,blank=True,null=True)
     filename = models.CharField(u"附件名称",max_length=50,blank=True,null=True)
-    template_qrcode = models.CharField(u"问卷二维码",max_length=50,blank=True,null=True)
+    template_qrcode = models.TextField(u"问卷二维码",max_length=255,blank=True,null=True)
     type = models.IntegerField(u"消息类型",default=0)
 
+    status = models.SmallIntegerField(u"状态",default=1)
     cid = models.IntegerField(u"创建人id")
     cname = models.CharField(u"创建人",max_length=50)
     ctime = models.DateTimeField(u"创建时间", auto_now_add=True)

+ 118 - 23
src/manage/controls.py

@@ -71,7 +71,7 @@ def add_model(cls,**kwargs):
         for i,lst in enumerate(split_list_by_n(survey_name,10)):
             name = "".join(lst)
             if name:
-                addText(img,survey_bg,name,survey_img_file,(260,235+(i+1)*60),58)
+                addText(img,survey_bg,name,survey_img_file,(200,235+(i+1)*80),72)
         #
         url = os.path.join(settings.HOST,"survey/answer.html?id={}&type={}".format(obj.id,obj.type))
         print url,99999
@@ -93,20 +93,54 @@ def update_model(cls,**kwargs):
     model = getattr(cm,model_name)
     id = kwargs.pop("id")
     rst = model.objects.filter(id=id).update(**kwargs)
+    if model_name == "Message":
+        obj = model.objects.filter(id=id).first()
+        root = settings.STATIC_ROOT
+        survey_bg = os.path.join(root,"survey_bg.jpg")
+        survey_img_file = os.path.join(root,"upload/survey_bg_{}.jpg".format(obj.id))
+        img = Image.open(survey_bg)
+        survey_name = obj.name
+        for i,lst in enumerate(split_list_by_n(survey_name,10)):
+            name = "".join(lst)
+            if name:
+                addText(img,survey_bg,name,survey_img_file,(200,235+(i+1)*80),72)
+        #
+        url = os.path.join(settings.HOST,"survey/answer.html?id={}&type={}".format(obj.id,obj.type))
+        print url,99999
+        tmp_qrcode = "/tmp/survey_qrcode_{}.png".format(obj.id)
+        gen_general_qrcode_img(url,tmp_qrcode)
+        rawimg = Image.open(survey_img_file)
+        im = Image.open(tmp_qrcode)
+        rawimg.paste(im,(330,840))
+        rawimg.save(survey_img_file)
+        template_qrcode = os.path.join(settings.HOST,"upload/survey_bg_{}.jpg?t={}".format(obj.id,str(time.time())))
+        print template_qrcode,99999999999999999999
+        obj.template_qrcode = template_qrcode
+        obj.save()
     return rst
 
+
+def update_status(cls,**kwargs):
+    """
+    """
+    model_name = re.search(r'.*\.(\w+)View',str(cls.__class__)).groups()[0]
+    model_name = model_name.replace("Status","")
+    model = getattr(cm,model_name)
+    id = kwargs.pop("id")
+    status = 1-model.objects.filter(id=id).first().status
+    rst = model.objects.filter(id=id).update(status=status)
+    return status
+
 def delete_model(cls,**kwargs):
     """
     """
     model_name = re.search(r'.*\.(\w+)View',str(cls.__class__)).groups()[0]
     model = getattr(cm,model_name)
     ids = str(kwargs.get("id")).split(",")
-    if model_name in ["Template","Message"]:
-        rst = model.objects.filter(id__in=ids).delete()
-        if model_name == "Template":
-            cm.Message.objects.filter(template_id__in=ids).delete()
-    else:
-        rst = model.objects.filter(id__in=ids).update(status=0)
+
+    rst = model.objects.filter(id__in=ids).delete()
+    if model_name == "Template":
+        cm.Message.objects.filter(template_id__in=ids).delete()
     return ids
 
 def delete_model_actual(cls,**kwargs):
@@ -124,14 +158,31 @@ def get_detail_info(cls,**kwargs):
     model_name = re.search(r'.*\.(\w+)View',str(cls.__class__)).groups()[0]
     model = getattr(cm,model_name)
     id = kwargs.get("id")
+    cid = kwargs.get("cid")
     rst = list(model.objects.filter(id=id).values())
     rst = rst[0] if rst else {}
     if model_name == "Message":
         if rst.get("template_id"):
             tpl = cm.Template.objects.filter(id=rst.get("template_id")).values()
             tpl = tpl[0] if tpl else {}
-            rst["widget"] = json.loads(tpl["widget"]) if tpl else []
+            widget = json.loads(tpl["widget"]) if tpl else []
+            #已填报则获取填报结果
+            if cm.MessageSurveyResult.objects.filter(message_id=id).exists():
+                rst["edit"] = 1
+            if cid:
+                csrobj = cm.MessageSurveyResult.objects.filter(message_id=id,cid=cid).first()
+                if csrobj:
+                    result = json.loads(csrobj.result) if csrobj.result else {}
+                    if result:
+                        print widget,9999
+                        for w in widget:
+                            w["result"] = result.get(w["label"])
+                            w[w["label"]] = result.get(w["label"])
+
+            rst["widget"] = widget
+
     if model_name == "Notice":
+        rst["fileurl"] = json.loads(rst["fileurl"]) if rst["fileurl"] else []
         viewer_ids = json.loads(rst["viewer_id"]) if rst["viewer_id"] else []
         new_viewer_ids = filter(lambda x:x["id"]!=kwargs.get("cid"),viewer_ids)
         new_viewer_ids.append({"id":kwargs.get("cid"),"time":ccf.get_now_str()})
@@ -155,6 +206,17 @@ def get_list_info(cls,**kwargs):
     if model_name == "SysUserInfo":
         if kwargs.get("journal_id"):
             qset = qset.filter(journal_id=kwargs.get("journal_id"))
+    #数据权限处理
+    if model_name in ["Notice","Message"]:
+        cid = kwargs.get("cid")
+        print cid,4444444444444444
+        user = cm.SysUserInfo.objects.filter(id=cid).first()
+        print user.role_id
+        if user.role_id == 2: 
+            if model_name == "Notice":
+                qset = qset.filter(receiver_id__icontains=",{}]".format(cid))
+            if model_name == "Message" and int(kwargs.get("type",0)) == 0:
+                qset = qset.filter(receiver_id__icontains=",{}]".format(cid))
 
     data = list(qset.values())
     if model_name == "SysUserInfo":
@@ -168,9 +230,6 @@ def get_list_info(cls,**kwargs):
         for d in data:
             if d["receiver_id"]:
                 receiver_ids = [x[-1] for x in json.loads(d["receiver_id"])]
-                receiver_names = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values_list("realname",flat=True))
-                receiver_names = ",".join(receiver_names)
-                d["receiver_names"] = receiver_names
                 d["receiver_ids"] = list(set(receiver_ids))
 
                 message_id = d["id"]
@@ -183,11 +242,12 @@ def get_list_info(cls,**kwargs):
                 d["finish_ids"] = finish_ids
     if model_name in ["Notice"]:
         for d in data:
+            d["fileurl"] = json.loads(d["fileurl"]) if d["fileurl"] else []
             if d["receiver_id"]:
                 receiver_ids = [x[-1] for x in json.loads(d["receiver_id"])]
-                receiver_names = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values_list("realname",flat=True))
-                receiver_names = ",".join(receiver_names)
-                d["receiver_names"] = receiver_names
+                #receiver_names = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values_list("realname",flat=True))
+                #receiver_names = ",".join(receiver_names)
+                #d["receiver_names"] = receiver_names
                 d["receiver_ids"] = list(set(receiver_ids))
 
                 message_id = d["id"]
@@ -199,6 +259,13 @@ def get_list_info(cls,**kwargs):
                 message_id = d["id"]
                 finish_ids = list(cm.MessageSurveyResult.objects.filter(message_id=message_id).values_list("cid",flat=True))
                 d["finish_ids"] = finish_ids
+    if model_name == "Template":
+        for d in data:
+            message_ids = list(cm.Message.objects.filter(template_id=d["id"]).values_list("id",flat=True))
+            if cm.MessageSurveyResult.objects.filter(message_id__in=message_ids).exists():
+                d["edit"] = 0 
+            else:
+                d["edit"] = 1
 
     page = int(kwargs.get("page",0))
     page_size = int(kwargs.get("page_size",20))
@@ -945,6 +1012,16 @@ def add_conference(**kwargs):
     return True
 
 
+def remove_empty(data):
+    if isinstance(data,type([])):
+        for i,item in enumerate(data):
+            if not item.get("children",[]):
+                print len(data),111111111
+                del data[i]
+            else:
+                return remove_empty(data[i]["children"])
+
+
 def get_message_receiver_list(request):
     """
     """
@@ -971,6 +1048,7 @@ def get_message_receiver_list(request):
                 jn["children"] = sysusers
             org["children"] = journals
         brc["children"] = orgs
+    #remove_empty(branchs)
     return branchs
 
 
@@ -1000,7 +1078,7 @@ def save_survey_result_out(**kwargs):
     message_id = kwargs.get("message_id")
     cid = kwargs.get("cid")
     message = cm.Message.objects.filter(id=message_id).first()
-    obj,flag = cm.MessageSurveyResult.objects.get_or_create(
+    obj = cm.MessageSurveyResult.objects.create(
         message_id=message_id, 
         cid=cid
     )
@@ -1059,7 +1137,6 @@ def get_survey_analyse_list_out(**kwargs):
     template = cm.Template.objects.filter(id=template_id).first()
     widgets = json.loads(template.widget) if template.widget else []
     headers = [x["label"] for x in widgets]
-    print headers,9999999999999
     msrset = cm.MessageSurveyResult.objects.filter(message_id=message_id)
     if kwargs.get("name"):
         msrset = msrset.filter(result__icontains=kwargs.get("name"))
@@ -1154,7 +1231,7 @@ def download_survey_result(request):
         receivers = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values())
         for rc in receivers:
             rc["journal_name"] = cm.Journal.objects.filter(id=rc["journal_id"]).first().name
-            if cm.MessageSurveyResult.objects.filter(cid=rc["id"]).exists():
+            if cm.MessageSurveyResult.objects.filter(message_id=message_id,cid=rc["id"]).exists():
                 msgobj = cm.MessageSurveyResult.objects.filter(cid=rc["id"]).first()
                 rc["post_status"] = u"已填报"
                 rc["post_time"] = msgobj.ctime
@@ -1163,7 +1240,17 @@ def download_survey_result(request):
                 rc["post_status"] = u"未填报"
                 rc["post_time"] = ""
                 rc["post_result"] = {}
-            data.append([rc["realname"],rc["journal_name"],rc["post_status"],ccf.datetime_to_str(rc["ctime"])])
+            if _type == "finish" and rc["post_status"] == u"未填报":
+                continue
+            if _type == "unfinish" and rc["post_status"] == u"已填报":
+                continue
+
+            data.append([
+                rc["realname"],
+                rc["journal_name"],
+                rc["post_status"],
+                ccf.datetime_to_str(rc["post_time"]) if rc["post_time"] else ""
+                ])
 
         exceltool = ExcelTool("/tmp/demo.xls")
         xlsdata = exceltool.save_data(u"学员报名数据表",header,data)
@@ -1313,8 +1400,11 @@ def get_notice_analyse(**kwargs):
     viewer_list = json.loads(viewer_id) if viewer_id else []
     viewer_ids = [x["id"] for x in viewer_list] if viewer_id else []
     viewer_ids = [int(x) for x in viewer_ids] 
-
-    receivers = list(cm.SysUserInfo.objects.filter(id__in=receiver_ids).values())
+    
+    suserset = cm.SysUserInfo.objects.filter(id__in=receiver_ids)
+    if kwargs.get("name"):
+        suserset = suserset.filter(realname__icontains=kwargs.get("name"))
+    receivers = list(suserset.values())
     for rc in receivers:
         rc["journal_name"] = cm.Journal.objects.filter(id=rc["journal_id"]).first().name
         if rc["id"] in viewer_ids:
@@ -1370,13 +1460,18 @@ def download_notice_analyse(request):
     
     data = receivers
     if _type == "finish":
-        data = filter(lambda x:x["post_status"]==1,data)
+        data = filter(lambda x:x["post_status"]==u"已查阅",data)
     if _type == "unfinish":
-        data = filter(lambda x:x["post_status"]==0,data)
+        data = filter(lambda x:x["post_status"]==u"未查阅",data)
     xls_data = []
     header = [u"姓名",u"所属期刊",u"状态",u"查阅时间"]
     for rc in data:
-        xls_data.append([rc["realname"],rc["journal_name"],rc["post_status"],rc["ctime"]])
+        xls_data.append([
+                rc["realname"],
+                rc["journal_name"],
+                rc["post_status"],
+                rc["post_time"]
+            ])
 
     exceltool = ExcelTool("/tmp/demo.xls")
     xlsdata = exceltool.save_data(u"学员报名数据表",header,xls_data)

+ 2 - 0
src/manage/urls_backstage.py

@@ -15,11 +15,13 @@ urlpatterns = [
     url(r'^uploadfile$', views.UploadFileView.as_view()),
     url(r'^getdefault$', views.GetDefaultView.as_view()),
     url(r'^message/template$', views.TemplateView.as_view()),
+    url(r'^message/template/status$', views.TemplateStatusView.as_view()),
     url(r'^message/template/list$', views.TemplateListView.as_view()),
     url(r'^message/template/all$', views.TemplateAllListView.as_view()),
     url(r'^role$', views.RoleView.as_view()),
     url(r'^role/list$', views.RoleListView.as_view()),
     url(r'^message$', views.MessageView.as_view()),
+    url(r'^message/status$', views.MessageStatusView.as_view()),
     url(r'^message/out$', views.MessageOutView.as_view()),
     url(r'^message/list$', views.MessageListView.as_view()),
     url(r'^message/receiver/list$', views.MessageReceiverListView.as_view()),

+ 45 - 0
src/manage/views.py

@@ -1524,6 +1524,47 @@ class TemplateView(cv.AdminView):
             return cv.to_fail(e)
 
 
+class TemplateStatusView(cv.AdminView):
+    def put(self,request):
+        """#修改模板(平台管理后台)
+        @id:"1"
+        @name:"模板名称"
+        @widget:"模板字段/组件"
+        """
+        qdata = request.json
+        need_params = ["id"]
+        mse = ccf.check_params(*need_params,**qdata)
+        if mse:
+            raise ce.TipException(mse)
+        try:
+            vals = ccf.get_need_params(*need_params,**qdata)
+            rst = ctl.update_status(self,**vals)
+            return cv.to_suc(rst)
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)
+
+class MessageStatusView(cv.AdminView):
+    def put(self,request):
+        """#修改模板(平台管理后台)
+        @id:"1"
+        @name:"模板名称"
+        @widget:"模板字段/组件"
+        """
+        qdata = request.json
+        need_params = ["id"]
+        mse = ccf.check_params(*need_params,**qdata)
+        if mse:
+            raise ce.TipException(mse)
+        try:
+            vals = ccf.get_need_params(*need_params,**qdata)
+            rst = ctl.update_status(self,**vals)
+            return cv.to_suc(rst)
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)
+
+
 class TemplateListView(cv.AdminView):
     def get(self, request):
         """#获取模板列表(管理后台)
@@ -1671,6 +1712,7 @@ class MessageView(cv.AdminView):
             if mse:
                 raise ce.TipException(mse)
             vals = ccf.get_need_params(*need_params,**qdata)
+            vals["cid"] = request.user.id
             rst = ctl.get_detail_info(self,**vals)
             return cv.to_suc(rst)
         except Exception as e:
@@ -1750,6 +1792,7 @@ class MessageListView(cv.AdminView):
         """
         try:
             qdata = request.json
+            qdata["cid"] = request.user.id
             total,rst = ctl.get_list_info(self,**qdata)
             return cv.to_suc({"total":total,"list":rst})
         except Exception as e:
@@ -2203,6 +2246,7 @@ class NoticeListView(cv.AdminView):
         """
         try:
             qdata = request.json
+            qdata["cid"] = request.user.id
             total,rst = ctl.get_list_info(self,**qdata)
             return cv.to_suc({"total":total,"list":rst})
         except Exception as e:
@@ -2222,6 +2266,7 @@ class MessageNoticeAnalyseView(cv.BaseView):
             if mse:
                 raise ce.TipException(mse)
             need_params.append("type")
+            need_params.append("name")
             vals = ccf.get_need_params(*need_params,**qdata)
             total,rst = ctl.get_notice_analyse(**vals)
             return cv.to_suc({"total":total,"list":rst})

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 3
static/APlayer.min.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 1
static/APlayer.min.css.map


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 2
static/APlayer.min.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 1
static/APlayer.min.js.map


BIN=BIN
static/bg.jpg


BIN=BIN
static/bgline.png


+ 0 - 41
static/demo.html

@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-	<title></title>
-	<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
-</head>
-<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
-<link rel="stylesheet" href="APlayer.min.css">
-<script src="APlayer.min.js"></script>
-<style type="text/css">
-	.container{
-		width: 100%;
-		height: 968px;
-		background: url("bg.jpg") no-repeat;
-		background-size: cover;
-	}
-	#aplayer{
-		position: absolute;
-		top:10vh;
-		width: 90%;
-		margin: auto;
-	}
-</style>
-<body style="margin: 0px;background: #C13C71;">
-
-	<div class="container">
-		<div id="aplayer"></div>
-	</div>
-</body>
-<script type="text/javascript">
-	const ap = new APlayer({
-	    container: document.getElementById('aplayer'),
-	    audio: [{
-	        name: 'name',
-	        artist: 'artist',
-	        url: 'test.mp3',
-	        cover: 'bg.jpg'
-	    }]
-	});
-</script>
-</html>

BIN=BIN
static/fonts/element-icons.535877f5.woff


BIN=BIN
static/fonts/element-icons.732389de.ttf


BIN=BIN
static/fonts/fontawesome-webfont.674f50d2.eot


BIN=BIN
static/fonts/fontawesome-webfont.af7ae505.woff2


BIN=BIN
static/fonts/fontawesome-webfont.b06871f2.ttf


BIN=BIN
static/fonts/fontawesome-webfont.fee66e71.woff


BIN=BIN
static/images/jgjj.png


BIN=BIN
static/images/kcjs.png


+ 0 - 0
static/images/logo.png


BIN=BIN
static/images/lxwm.png


BIN=BIN
static/images/pxjh.png


BIN=BIN
static/images/zxbm.png


BIN=BIN
static/images/zxpx.png


BIN=BIN
static/logo.png


BIN=BIN
static/survey_bg.jpg


BIN=BIN
static/tes2.png


BIN=BIN
static/test.mp3


BIN=BIN
static/test.png


BIN=BIN
static/test3.png


BIN=BIN
static/test4.png


BIN=BIN
static/upload/1588754976timg (4).jpg


BIN=BIN
static/upload/1588821309tmp_1b58081293c0fd2f1eb8da966fcdb090.jpg


BIN=BIN
static/upload/1588821838tmp_56e21ec0e1b6ad9166726142f30b9570.jpg


BIN=BIN
static/upload/1588821899tmp_b07a29631af01002362bd8e745857a8e.jpg


BIN=BIN
static/upload/1588821951tmp_41e1ad93ade9b9e91373da8e0746a87b.jpg


BIN=BIN
static/upload/1588821986tmp_159339d369c6a563c68433dcc29e1667.jpg


BIN=BIN
static/upload/1588822035tmp_24db41bceaa11fa1ca8cc41ad4d0588d.jpg


BIN=BIN
static/upload/1588822097tmp_408e032ea6deb80fd117002653b5d1ce.jpg


BIN=BIN
static/upload/1588822121tmp_6003831d42ca17de6d8709842751b511.jpg


BIN=BIN
static/upload/1588822196tmp_9988f901605db4ce75e26c7bc55b3789.jpg


BIN=BIN
static/upload/1588822240tmp_f99197e54ccb6060aefa60fe18d4b63f.jpg


BIN=BIN
static/upload/1588946415tmp_24a1499d051efeb165144b0de1150d09.jpg


BIN=BIN
static/upload/1588946507tmp_de414acc6be1332ea44feb59efcae4fa.jpg


BIN=BIN
static/upload/1588946598tmp_1321ea47f3f66f5f6e887660e0de95dd.jpg


BIN=BIN
static/upload/1588946724tmp_22bd03b099acd8702c0df2e763991d27.jpg


BIN=BIN
static/upload/1588946758tmp_f2cdcec651a67cc371eeec7dd1af3e77.jpg


BIN=BIN
static/upload/1589022535tmp_7b534b18584060c9fe99fa6d358d21da46745d456b3a8cb9.jpg


BIN=BIN
static/upload/1589022545tmp_74e8880b255ad22542d6318e4a106cbe4fdab949751d0bf3.jpg


BIN=BIN
static/upload/1589022556tmp_8319eacda80011f2f660059af4710e6e1639c0beca6a2684.jpg


BIN=BIN
static/upload/1589022564tmp_6d497eda85e5cbe9e368945e2344d410e26b076a8a505acc.jpg


BIN=BIN
static/upload/1589026588tmp_bba258dd0bbabd1760d676f030e20b09.jpg


BIN=BIN
static/upload/1589071686tmp_9612e9141c31e7797fac7f1ed73ae69a.jpg


BIN=BIN
static/upload/1589071963tmp_63f6bd41f3f63971ce35ec0e3dcb3893.jpg


BIN=BIN
static/upload/testvideo.mp4


BIN=BIN
templates/.DS_Store


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 3
templates/APlayer.min.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 1
templates/APlayer.min.css.map


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 2
templates/APlayer.min.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 1
templates/APlayer.min.js.map


BIN=BIN
templates/bg.jpg


BIN=BIN
templates/bgline.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/app.5c3a327e.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-03b9d101.928f4c18.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-03b9d101.cced094a.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-03b9d101.decafa39.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-03b9d101.e1c4d753.css


+ 1 - 0
templates/css/chunk-06335b5a.7b41d4d6.css

@@ -0,0 +1 @@
+.el-pagination button,.el-pagination li{border:1px solid #cacaca!important;background-color:#fff!important}.el-pagination .active{border:none!important;background:#3895fe!important}.preview .el-form-item{margin-bottom:15px}.preview label,.preview p{line-height:25px!important}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-0a1452f6.fc770c45.css


+ 1 - 0
templates/css/chunk-0f4c0854.7b41d4d6.css

@@ -0,0 +1 @@
+.el-pagination button,.el-pagination li{border:1px solid #cacaca!important;background-color:#fff!important}.el-pagination .active{border:none!important;background:#3895fe!important}.preview .el-form-item{margin-bottom:15px}.preview label,.preview p{line-height:25px!important}

+ 1 - 0
templates/css/chunk-0f4c0854.c9e714fe.css

@@ -0,0 +1 @@
+.el-pagination button,.el-pagination li{border:1px solid #cacaca!important;background-color:#fff!important}.el-pagination .active{border:none!important;background:#3895fe!important}.preview .el-form-item{margin-bottom:15px}.preview label,.preview p{line-height:25px!important}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-180e2264.3ecd70f6.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-19d1d3b8.e5e519ee.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-1a103b85.e1c4d753.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-1b11583b.5b791094.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-1b11583b.92d4c7bf.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-1d495490.1e6c1190.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-1d495490.5b791094.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-1d495490.667d0236.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-1d495490.92d4c7bf.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-1d495490.ac9bb8ce.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-237b81e6.76fa3b3f.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-2fd5d6d8.e1c4d753.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-2fd5d6d8.f0b7a8df.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-33970c2a.92d4c7bf.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-36bc26c5.408a754e.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-3c3b8f3c.1043c743.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-3fc807ba.36820c74.css


+ 1 - 0
templates/css/chunk-427d2515.7b41d4d6.css

@@ -0,0 +1 @@
+.el-pagination button,.el-pagination li{border:1px solid #cacaca!important;background-color:#fff!important}.el-pagination .active{border:none!important;background:#3895fe!important}.preview .el-form-item{margin-bottom:15px}.preview label,.preview p{line-height:25px!important}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-45d58480.1043c743.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-4c394853.1e6c1190.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-4c394853.521cc366.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-4c394853.5b791094.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-4c394853.667d0236.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-4c394853.92d4c7bf.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-5478de12.02874c6d.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-5478de12.f5ced3eb.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-599f6235.4234e73d.css


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
templates/css/chunk-599f6235.5b791094.css


+ 0 - 0
templates/css/chunk-599f6235.92d4c7bf.css


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio