luohailiang 3 年之前
當前提交
00e2af8b0b
共有 100 個文件被更改,包括 12306 次插入0 次删除
  1. 12 0
      .idea/hdpb.iml
  2. 173 0
      home/detail.html
  3. 二進制
      home/favicon.ico
  4. 116 0
      home/index.html
  5. 77 0
      home/list.html
  6. 33 0
      home/login.html
  7. 二進制
      home/static/images/TopBar.png
  8. 二進制
      home/static/images/icon-add.png
  9. 二進制
      home/static/images/login-bg.png
  10. 二進制
      home/static/images/logo.png
  11. 3 0
      home/static/lib/axios.min.js
  12. 二進制
      home/static/lib/element/fonts/element-icons.ttf
  13. 二進制
      home/static/lib/element/fonts/element-icons.woff
  14. 1 0
      home/static/lib/element/index.css
  15. 1 0
      home/static/lib/element/index.js
  16. 1 0
      home/static/lib/element/indexbac.js
  17. 4 0
      home/static/lib/jquery.min.js
  18. 1 0
      home/static/lib/qs.min.js
  19. 1 0
      home/static/lib/tinymce/icons/default/icons.min.js
  20. 92 0
      home/static/lib/tinymce/jquery.tinymce.min.js
  21. 3 0
      home/static/lib/tinymce/langs/readme.md
  22. 410 0
      home/static/lib/tinymce/langs/zh_CN.js
  23. 504 0
      home/static/lib/tinymce/license.txt
  24. 9 0
      home/static/lib/tinymce/plugins/advlist/plugin.min.js
  25. 9 0
      home/static/lib/tinymce/plugins/anchor/plugin.min.js
  26. 9 0
      home/static/lib/tinymce/plugins/autolink/plugin.min.js
  27. 9 0
      home/static/lib/tinymce/plugins/autoresize/plugin.min.js
  28. 9 0
      home/static/lib/tinymce/plugins/autosave/plugin.min.js
  29. 二進制
      home/static/lib/tinymce/plugins/axupimgs/loading.gif
  30. 75 0
      home/static/lib/tinymce/plugins/axupimgs/plugin.js
  31. 75 0
      home/static/lib/tinymce/plugins/axupimgs/plugin.min.js
  32. 203 0
      home/static/lib/tinymce/plugins/axupimgs/upfiles.html
  33. 9 0
      home/static/lib/tinymce/plugins/bbcode/plugin.min.js
  34. 9 0
      home/static/lib/tinymce/plugins/charmap/plugin.min.js
  35. 9 0
      home/static/lib/tinymce/plugins/code/plugin.min.js
  36. 9 0
      home/static/lib/tinymce/plugins/codesample/plugin.min.js
  37. 9 0
      home/static/lib/tinymce/plugins/colorpicker/plugin.min.js
  38. 9 0
      home/static/lib/tinymce/plugins/contextmenu/plugin.min.js
  39. 9 0
      home/static/lib/tinymce/plugins/directionality/plugin.min.js
  40. 9015 0
      home/static/lib/tinymce/plugins/emoticons/js/emojis.js
  41. 2 0
      home/static/lib/tinymce/plugins/emoticons/js/emojis.min.js
  42. 9 0
      home/static/lib/tinymce/plugins/emoticons/plugin.min.js
  43. 9 0
      home/static/lib/tinymce/plugins/fullpage/plugin.min.js
  44. 9 0
      home/static/lib/tinymce/plugins/fullscreen/plugin.min.js
  45. 9 0
      home/static/lib/tinymce/plugins/help/plugin.min.js
  46. 9 0
      home/static/lib/tinymce/plugins/hr/plugin.min.js
  47. 9 0
      home/static/lib/tinymce/plugins/image/plugin.min.js
  48. 9 0
      home/static/lib/tinymce/plugins/imagetools/plugin.min.js
  49. 9 0
      home/static/lib/tinymce/plugins/importcss/plugin.min.js
  50. 9 0
      home/static/lib/tinymce/plugins/insertdatetime/plugin.min.js
  51. 9 0
      home/static/lib/tinymce/plugins/legacyoutput/plugin.min.js
  52. 9 0
      home/static/lib/tinymce/plugins/link/plugin.min.js
  53. 9 0
      home/static/lib/tinymce/plugins/lists/plugin.min.js
  54. 9 0
      home/static/lib/tinymce/plugins/media/plugin.min.js
  55. 9 0
      home/static/lib/tinymce/plugins/nonbreaking/plugin.min.js
  56. 9 0
      home/static/lib/tinymce/plugins/noneditable/plugin.min.js
  57. 9 0
      home/static/lib/tinymce/plugins/pagebreak/plugin.min.js
  58. 9 0
      home/static/lib/tinymce/plugins/paste/plugin.min.js
  59. 9 0
      home/static/lib/tinymce/plugins/preview/plugin.min.js
  60. 9 0
      home/static/lib/tinymce/plugins/print/plugin.min.js
  61. 9 0
      home/static/lib/tinymce/plugins/quickbars/plugin.min.js
  62. 9 0
      home/static/lib/tinymce/plugins/save/plugin.min.js
  63. 9 0
      home/static/lib/tinymce/plugins/searchreplace/plugin.min.js
  64. 9 0
      home/static/lib/tinymce/plugins/spellchecker/plugin.min.js
  65. 9 0
      home/static/lib/tinymce/plugins/tabfocus/plugin.min.js
  66. 9 0
      home/static/lib/tinymce/plugins/table/plugin.min.js
  67. 9 0
      home/static/lib/tinymce/plugins/template/plugin.min.js
  68. 9 0
      home/static/lib/tinymce/plugins/textcolor/plugin.min.js
  69. 9 0
      home/static/lib/tinymce/plugins/textpattern/plugin.min.js
  70. 9 0
      home/static/lib/tinymce/plugins/toc/plugin.min.js
  71. 9 0
      home/static/lib/tinymce/plugins/visualblocks/plugin.min.js
  72. 9 0
      home/static/lib/tinymce/plugins/visualchars/plugin.min.js
  73. 9 0
      home/static/lib/tinymce/plugins/wordcount/plugin.min.js
  74. 7 0
      home/static/lib/tinymce/skins/content/dark/content.min.css
  75. 7 0
      home/static/lib/tinymce/skins/content/default/content.min.css
  76. 7 0
      home/static/lib/tinymce/skins/content/document/content.min.css
  77. 7 0
      home/static/lib/tinymce/skins/content/writer/content.min.css
  78. 7 0
      home/static/lib/tinymce/skins/ui/oxide-dark/content.inline.min.css
  79. 7 0
      home/static/lib/tinymce/skins/ui/oxide-dark/content.min.css
  80. 7 0
      home/static/lib/tinymce/skins/ui/oxide-dark/content.mobile.min.css
  81. 二進制
      home/static/lib/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
  82. 7 0
      home/static/lib/tinymce/skins/ui/oxide-dark/skin.min.css
  83. 7 0
      home/static/lib/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
  84. 7 0
      home/static/lib/tinymce/skins/ui/oxide/content.inline.min.css
  85. 7 0
      home/static/lib/tinymce/skins/ui/oxide/content.min.css
  86. 7 0
      home/static/lib/tinymce/skins/ui/oxide/content.mobile.min.css
  87. 二進制
      home/static/lib/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff
  88. 7 0
      home/static/lib/tinymce/skins/ui/oxide/skin.min.css
  89. 7 0
      home/static/lib/tinymce/skins/ui/oxide/skin.mobile.min.css
  90. 9 0
      home/static/lib/tinymce/themes/mobile/theme.min.js
  91. 9 0
      home/static/lib/tinymce/themes/silver/theme.min.js
  92. 9 0
      home/static/lib/tinymce/tinymce.min.js
  93. 6 0
      home/static/lib/vue.min.js
  94. 110 0
      home/static/scripts/common.js
  95. 508 0
      home/static/scripts/detail.js
  96. 81 0
      home/static/scripts/home.js
  97. 84 0
      home/static/scripts/list.js
  98. 47 0
      home/static/scripts/login.js
  99. 147 0
      home/static/scripts/request.js
  100. 0 0
      home/static/styles/common.css

+ 12 - 0
.idea/hdpb.iml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/temp" />
+      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/tmp" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 173 - 0
home/detail.html

@@ -0,0 +1,173 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <link rel="icon" href="favicon.ico">
+    <title>活动评比</title>
+    <link rel="stylesheet" href="static/lib/element/index.css">
+    <link rel="stylesheet" href="static/styles/common.css?v=20220314">
+    <link rel="stylesheet" href="static/styles/detail.css?v=20220315">
+</head>
+<body>
+<header class="header" id="activityHeader" v-cloak></header>
+<div class="wrapper" id="activityDetail" v-cloak>
+    <nav class="nav ph25">
+        <a href="index.html" class="fl font-size-18 color-1">活动评比</a>
+        <span class="fl tag mh10"></span>
+        <h4 class="fl font-size-14" v-if="type == '1'">活动公告 - <span class="color-1">公告详情</span></h4>
+        <h4 class="fl font-size-14" v-if="type == '2'">通知公告 - <span class="color-1">公告详情</span></h4>
+        <h4 class="fl font-size-14" v-if="type == '3'">优秀作品 - <span class="color-1">作品详情</span></h4>
+        <h4 class="fl font-size-14" v-if="type == '4'">活动主题 - <span class="color-1">活动详情</span></h4>
+        <h4 class="fl font-size-14" v-if="type == '5'">调查问卷 - <span class="color-1">问卷详情</span></h4>
+        <h4 class="fl font-size-14" v-if="type == '6'">投票 - <span class="color-1">投票详情</span></h4>
+    </nav>
+    <div class="mt20 content">
+        <div class="up" v-if="type == '4'">
+            <div class="d-flex pr10">
+                <div class="flex-1">
+                    <h3 class="font-size-20">{{hdgl.hhg_name}}</h3>
+                    <h4 class="mt5 font-size-14 color-2">
+                        {{hdgl.hhg_level}} |
+                        <span v-for="(item,index) in hdgl.cate_info">{{item.hh_name}}<i v-if="index < hdgl.cate_info.length-1">,</i></span>
+                    </h4>
+                </div>
+                <button type="button" class="button mt10" @click="signTo">报名</button>
+            </div>
+            <div class="mt20 clearfix">
+                <h3 class="fl font-size-16 color-4">开始时间:{{hdgl.hhg_kssj}}</h3>
+                <h3 class="fl ml40 font-size-16 color-4">资料上传截止时间:{{hdgl.hhg_jzsj}}</h3>
+                <h3 class="fl ml40 font-size-16 color-4">结束时间:{{hdgl.hhg_jssj}}</h3>
+            </div>
+            <div class="mt20 info-content">
+                <img v-if="hdgl.hhg_img != ''" :src="hdgl.hhg_img" alt="">
+                <div class="mt10 font-size-16" v-html="hdgl.hhg_content"></div>
+                <h3 v-if="fileList.length > 0" class="mv15 font-size-18">作品列表:</h3>
+                <div v-if="fileList.length > 0">
+                    <div v-for="item in fileList" :class="/.(png|jpg|jpeg|gif)$/g.test(item.link)?'file-img':''">
+                        <img v-if="/.(png|jpg|jpeg|gif)$/g.test(item.link)" :src="item.link" alt="">
+                        <a class="d-in-block" v-else :href="item.link" target="_blank">{{item.title}}</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="pt25 pl40 pr40 pb40 sign-form" v-if="type == '4'">
+            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" v-loading.fullscreen.lock="fullscreenLoading">
+                <el-form-item label="作者单位:" prop="hb_hzdw">
+                    <el-input v-model="ruleForm.hb_hzdw" placeholder="请输入作者单位" style="width: 500px"></el-input>
+                </el-form-item>
+                <el-form-item label="作者姓名:" prop="hb_zzxm">
+                    <el-input v-model="ruleForm.hb_zzxm" placeholder="请输入作者姓名" style="width: 500px"></el-input>
+                </el-form-item>
+                <el-form-item label="联系方式:" prop="hb_lxfs">
+                    <el-input v-model="ruleForm.hb_lxfs" placeholder="请输入联系方式" style="width: 500px"></el-input>
+                </el-form-item>
+                <el-form-item label="活动类型:" prop="hb_hdlx">
+                    <el-cascader style="width: 500px"
+                                 ref="cascader"
+                                 v-model="ruleForm.hb_hdlx"
+                                 :options="typeTree"
+                                 :props="{ multiple: true, checkStrictly: false, emitPath:false }"
+                                 placeholder="请选择活动类型"
+                                 clearable filterable></el-cascader>
+                </el-form-item>
+                <el-form-item label="题目:" prop="hb_title">
+                    <el-input v-model="ruleForm.hb_title" placeholder="请输入论文题目/参赛作品名称" style="width: 500px"></el-input>
+                </el-form-item>
+                <el-form-item label="内容描述:">
+                    <div class="text-content" id="content"></div>
+                </el-form-item>
+                <el-form-item>
+                    <div class="upload-btn-box">
+                        <button type="button">
+                            <span class="d-in-block v-mid icon-add"></span>
+                            <span class="d-in-block v-mid font-size-16">上传文件</span>
+                        </button>
+                        <input type="file" id="addFile" accept="image/*,.doc,.docx,.wps,.wpt,.xls,.xlsx,.ppt,.pptx,.pdf,.txt,.enbx,.mp4,.zip" value="添加文件" multiple @change="addFile">
+                    </div>
+                    <h3 class="font-size-12 color-6">支持文件类型:.jpg(.jpeg)、.png、.gif、.doc(.docx)、.ppt(.pptx)、.xls(.xlsx)、.pps、.wps、.pdf、.txt、.enbx、.mp4、.zip文件格式。</h3>
+                    <ul v-if="uploadInfo.length > 0">
+                        <li v-for="(item,index) in uploadInfo" class="d-in-block mr10">
+                            <span>{{item.title}}</span>
+                            <i class="el-icon-error hand font-size-16" @click="delFile(index)"></i>
+                        </li>
+                    </ul>
+                </el-form-item>
+                <el-row class="text-center submit">
+                    <button type="button" class="button" @click="submitForm('ruleForm')">提交</button>
+                </el-row>
+            </el-form>
+        </div>
+        <div class="pt25 pl40 pr40 font-size-16 pb40" v-if="type=='1'">
+            <h3 class="font-size-20">{{hdgg.hh_name}}</h3>
+            <h4 class="mt15 font-size-14 color-4">{{hdgg.hh_cjr}}&nbsp;&nbsp;|&nbsp;&nbsp;{{hdgg.hh_cjsj}}</h4>
+            <div class="mt20 info-content">
+                <img v-if="hdgg.hh_img != ''" :src="hdgg.hh_img" alt="">
+                <div class="mt10 font-size-16" v-html="hdgg.hh_content"></div>
+            </div>
+
+        </div>
+        <div class="pt25 pl40 pr40 font-size-16 pb40" v-if="type=='2'">
+            <h3 class="font-size-20">{{tzgg.hz_title}}</h3>
+            <h4 class="mt15 font-size-14 colr-4">{{tzgg.hz_cjr}}&nbsp;&nbsp;|&nbsp;&nbsp;{{tzgg.hz_cjsj}}</h4>
+            <div class="mt20 info-content">
+                <div class="mt10 font-size-16" v-html="tzgg.hz_content"></div>
+            </div>
+
+        </div>
+        <div class="pt25 pl40 pr40 font-size-16 pb40" v-if="type=='3'">
+            <h3 class="font-size-20">{{yxzp.hy_title}}</h3>
+            <h4 class="mt15 font-size-14 colr-4">{{yxzp.hy_scr}}&nbsp;&nbsp;|&nbsp;&nbsp;{{yxzp.hy_tjsj}}</h4>
+            <div class="mt20 info-content">
+                <img v-if="yxzp.hy_img != ''" :src="yxzp.hy_img" alt="">
+                <div class="mt10 font-size-16" v-html="yxzp.hy_content"></div>
+                <h3 v-if="fileList.length > 0" class="mv15 font-size-18">作品列表:</h3>
+                <div v-if="fileList.length > 0">
+                    <div v-for="item in fileList" :class="/.(png|jpg|jpeg|gif)$/g.test(item.link)?'file-img':''">
+                        <img v-if="/.(png|jpg|jpeg|gif)$/g.test(item.link)" :src="item.link" alt="">
+                        <a class="d-in-block" v-else :href="item.link" target="_blank">{{item.title}}</a>
+                    </div>
+                </div>
+
+            </div>
+
+        </div>
+
+        <div class="pt25 pl40 pr40 pb40" v-if="type == '5' || type == '6'">
+            <h3 class="font-size-20">{{voteInfo.hw_title}}</h3>
+            <h4 class="mt15 font-size-14 colr-4">{{voteInfo.hw_cjr}}&nbsp;&nbsp;|&nbsp;&nbsp;{{voteInfo.hw_cjsj}}</h4>
+            <div v-if="type == '5'" class="mt20 clearfix">
+                <h3 class="fl font-size-16 color-4">问卷开始时间:{{voteInfo.hw_kssj}}</h3>
+                <h3 class="fl ml40 font-size-16 color-4">问卷结束时间:{{voteInfo.hw_jssj}}</h3>
+            </div>
+            <div v-if="type == '6'" class="mt20 clearfix">
+                <h3 class="fl font-size-16 color-4">投票开始时间:{{voteInfo.hw_kssj}}</h3>
+                <h3 class="fl ml40 font-size-16 color-4">投票结束时间:{{voteInfo.hw_jssj}}</h3>
+            </div>
+            <div class="mt25" v-for="(item,index) in voteList">
+                <div class="font-size-20">{{index+1}}.{{item.label}} <span v-if="item.type == 'radio'">(单选)</span><span v-if="item.type == 'checkbox'">(多选)</span></div>
+                <el-checkbox-group class="mt15" v-model="item.result" v-if="item.type == 'checkbox'">
+                    <el-checkbox v-for="items in item.options" :label="items.label">{{items.label}}</el-checkbox>
+                </el-checkbox-group>
+                <el-radio-group class="mt15" v-if="item.type == 'radio'" v-model="item.result">
+                    <el-radio v-for="items in item.options" :label="items.label">{{items.label}}</el-radio>
+                </el-radio-group>
+            </div>
+            <el-row class="mt25 text-center submit">
+                <button type="button" class="button" @click="submitVote" v-loading.fullscreen.lock="fullscreenLoading">提交</button>
+            </el-row>
+        </div>
+
+    </div>
+</div>
+<script src="static/lib/jquery.min.js"></script>
+<script src="static/lib/vue.min.js"></script>
+<script src="static/lib/element/index.js"></script>
+<script src="static/lib/tinymce/tinymce.min.js"></script>
+<script src="static/lib/axios.min.js"></script>
+<script src="static/lib/qs.min.js"></script>
+<script src="static/scripts/common.js?v=202203241"></script>
+<script src="static/scripts/request.js?v=20220324"></script>
+<script src="static/scripts/detail.js?v=20220518"></script>
+</body>
+</html>

二進制
home/favicon.ico


+ 116 - 0
home/index.html

@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <link rel="icon" href="favicon.ico">
+    <title>活动评比</title>
+    <link rel="stylesheet" href="static/lib/element/index.css">
+    <link rel="stylesheet" href="static/styles/common.css?v=20220314">
+    <link rel="stylesheet" href="static/styles/index.css?v=20220314">
+
+</head>
+<body>
+<header class="header" id="activityHeader" v-cloak></header>
+<div class="wrapper pt25 clearfix" id="activityMain" v-cloak>
+    <div class="fl main-left">
+        <div class="swiper-box">
+            <div class="swiper-img">
+                <img :src="currImgUrl" alt="">
+            </div>
+            <div class="flex-1 ph10">
+                <ul class="swiper-list pt10">
+                    <li class="text-overflow" v-for="item in imgList" @mouseover="switchImg(item)" @click="toDetail(1,item.hh_id)">{{item.hh_name}}</li>
+                </ul>
+            </div>
+
+        </div>
+        <div class="mt35 clearfix">
+            <h3 class="fl font-size-20 text-normal lh30">活动主题</h3>
+            <a href="javascript:;" v-if="hdzt.length > 0" class="fr font-size-14 color-1 lh30" @click="toList(1)">查看更多</a>
+        </div>
+        <ul class="ac-list mt10">
+            <li v-for="item in hdzt" @click="toDetail(4,item.hhg_id)">
+                <div class="ac-img"><img
+                        :src="item.hhg_img" alt=""></div>
+                <div class="mt7 flex-1 ac-content pl20">
+                    <h3 class="font-size-15 text-normal text-overflow">{{item.hhg_name}}</h3>
+                    <h4 class="font-size-13 text-light mt10 line-clamp-2" v-html="item.hhg_content"></h4>
+                    <div class="mt5 clearfix">
+                        <div class="fl mt6">
+                            <span class="d-in-block font-size-12 text-light lh20">{{item.hhg_kssj}} ~ {{item.hhg_jssj}}</span>
+                        </div>
+                        <button type="button" class="fr sign-btn">报名</button>
+                    </div>
+                </div>
+            </li>
+        </ul>
+        <div class="mt35 clearfix">
+            <h3 class="fl font-size-20 text-normal lh30">优秀作品</h3>
+            <a href="javascript:;" v-if="yxzp.length > 0" class="fr font-size-14 color-1 lh30" @click="toList(2)">查看更多</a>
+        </div>
+        <ul class="mt10 works-list">
+            <li v-for="item in yxzp" @click="toDetail(3,item.hy_id)">
+                <div class="img">
+                    <img :src="item.hy_img" alt="">
+                </div>
+                <div class="content">
+                    <h3 class="font-size-16 text-normal text-overflow">{{item.hy_title}}</h3>
+                    <h4 class="mt10 font-size-14 text-light line-clamp-2 lh20 h-40" v-html="item.hy_content"></h4>
+                </div>
+            </li>
+        </ul>
+    </div>
+    <div class="fr main-right">
+        <div class="right-box pt30 pb30 pr5">
+            <h3 class="pl20 font-size-18 text-normal">通知公告</h3>
+            <div class="notice-list mt30">
+                <ul>
+                    <li v-for="item in tzgg" @click="toDetail(2,item.hz_id)">
+                        <h3 class="dot"></h3>
+                        <div class="flex-1 ml10 fmt3">
+                            <h3 class="font-size-14 title hand line-clamp-3">{{item.hz_title}}</h3>
+                            <h4 class="mt5 font-size-11 text-light">{{item.hz_cjsj}}</h4>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+
+        </div>
+        <div class="mt35 right-box pt30 pb30 pr5 pl20">
+            <h3 class="font-size-18 text-normal">调查问卷</h3>
+            <ul class="mt25 survey-list">
+                <li v-for="item in dcwj" @click="toDetail(5,item.hw_id)">
+                    <a href="#" class="d-block text-overflow">{{item.hw_title}}</a>
+                </li>
+            </ul>
+        </div>
+        <div class="mt35 right-box pt30 pb30">
+            <h3 class="font-size-18 text-normal pl20">投票</h3>
+            <ul class="mt10 vote-list">
+                <li v-for="item in tp" @click="toDetail(6,item.hw_id)">
+                    <div class="flex-1">
+                        <h3 class="font-size-14 line-clamp-2">{{item.hw_title}}</h3>
+                        <h4 class="mt3 font-size-12 text-light">{{item.hw_cjsj}}</h4>
+                    </div>
+                    <div class="vote-btn">
+                        <button type="button">参与</button>
+                    </div>
+                </li>
+            </ul>
+            <div class="text-center" v-if="tp.length > 0">
+                <a href="javascript:;" class="d-in-block more-link" @click="toList(3)">查看更多</a>
+            </div>
+        </div>
+    </div>
+</div>
+<script src="static/lib/jquery.min.js"></script>
+<script src="static/lib/vue.min.js"></script>
+<script src="static/lib/element/index.js"></script>
+<script src="static/lib/axios.min.js"></script>
+<script src="static/lib/qs.min.js"></script>
+<script src="static/scripts/common.js?v=202203241111"></script>
+<script src="static/scripts/request.js?v=20220317"></script>
+<script src="static/scripts/home.js?v=20220321"></script>
+</body>
+</html>

+ 77 - 0
home/list.html

@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <link rel="icon" href="favicon.ico">
+    <title>活动评比</title>
+    <link rel="stylesheet" href="static/lib/element/index.css">
+    <link rel="stylesheet" href="static/styles/common.css?v=20220314">
+    <link rel="stylesheet" href="static/styles/list.css?v=20220324">
+</head>
+<body>
+<header class="header" id="activityHeader" v-cloak></header>
+<div class="wrapper pb40" id="activityList" v-cloak>
+    <nav class="nav ph25">
+        <a href="index.html" class="fl font-size-18 color-1">活动评比</a>
+        <span class="fl tag mh10"></span>
+        <h4 class="fl font-size-14" v-if="type == 1">活动列表</h4>
+        <h4 class="fl font-size-14" v-if="type == 2">优秀作品列表</h4>
+        <h4 class="fl font-size-14" v-if="type == 3">投票列表</h4>
+    </nav>
+    <ul class="ac-list mt20" v-if="type == 1">
+        <li v-for="item in hdgl" @click="toDetail(4,item.hhg_id)">
+            <div class="ac-img"><img
+                    :src="item.hhg_img" alt=""></div>
+            <div class="mt7 flex-1 ac-content pl20">
+                <h3 class="font-size-15 text-normal text-overflow">{{item.hhg_name}}</h3>
+                <h4 class="font-size-13 text-light mt10 line-clamp-2 lh20 h-40" v-html="item.hhg_content"></h4>
+                <div class="mt5 clearfix">
+                    <div class="fl mt6">
+                        <span v-for="(items,index) in item.cate_info">{{items.hh_name}}<i v-if="index < item.cate_info.length-1">,</i></span>
+                        |
+                        <span class="d-in-block font-size-12 text-light lh20">{{item.hhg_kssj}} ~ {{item.hhg_jssj}}</span>
+                    </div>
+                    <button type="button" class="fr sign-btn">报名</button>
+                </div>
+            </div>
+        </li>
+    </ul>
+    <ul class="mt20 works-list" v-if="type == 2">
+        <li v-for="item in yxzp" @click="toDetail(3,item.hy_id)">
+            <div class="img">
+                <img :src="item.hy_img" alt="">
+            </div>
+            <div class="content">
+                <h3 class="font-size-16 text-normal text-overflow">{{item.hy_title}}</h3>
+                <h4 class="mt10 font-size-14 text-light line-clamp-2 lh20 h-40" v-html="item.hy_content"></h4>
+            </div>
+        </li>
+    </ul>
+    <ul class="ac-list mt20" v-if="type == 3">
+        <li v-for="item in tp" @click="toDetail(6,item.hw_id)">
+            <div class="mt7 flex-1 ac-content">
+                <h3 class="font-size-15 text-normal text-overflow">{{item.hw_title}}</h3>
+                <div class="mt5 clearfix">
+                    <div class="fl mt6">
+                        <span class="d-in-block font-size-12 text-light lh20">{{item.hw_kssj}} ~ {{item.hw_jssj}}</span>
+                    </div>
+                    <button type="button" class="fr sign-btn">投票</button>
+                </div>
+            </div>
+        </li>
+    </ul>
+    <el-pagination class="mt30 text-center" background layout="prev, pager, next" @current-change="handleCurrentChange"
+                   :current-page="cur_page" :total="total_num"></el-pagination>
+</div>
+<script src="static/lib/jquery.min.js"></script>
+<script src="static/lib/vue.min.js"></script>
+<script src="static/lib/element/index.js"></script>
+<script src="static/lib/tinymce/tinymce.min.js"></script>
+<script src="static/lib/axios.min.js"></script>
+<script src="static/lib/qs.min.js"></script>
+<script src="static/scripts/common.js?v=2022032411111"></script>
+<script src="static/scripts/request.js?v=20220317"></script>
+<script src="static/scripts/list.js?v=20220317"></script>
+</body>
+</html>

+ 33 - 0
home/login.html

@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <link rel="icon" href="favicon.ico">
+    <title>活动评比</title>
+    <link rel="stylesheet" href="static/lib/element/index.css">
+    <link rel="stylesheet" href="static/styles/common.css?v=20220314">
+    <link rel="stylesheet" href="static/styles/login.css?v=20220316">
+</head>
+<body>
+<div class="login" id="login" v-cloak>
+    <div class="login-box" v-loading.fullscreen.lock="fullscreenLoading">
+        <h3 class="font-size-28 color-5">登录</h3>
+        <form action="#" @submit.prevent>
+            <input type="text" class="mt20 login-in ph20" autocomplete="new-password" v-model="loginForm.user" placeholder="请输入用户名">
+            <input type="password" class="mt20 login-in ph20" autocomplete="new-password" v-model="loginForm.pwd" placeholder="请输入密码">
+            <button type="button" class="login-btn" :disabled="loginForm.user == ''||loginForm.pwd == ''" @click="login">登录</button>
+        </form>
+
+    </div>
+</div>
+<script src="static/lib/jquery.min.js"></script>
+<script src="static/lib/vue.min.js"></script>
+<script src="static/lib/element/index.js"></script>
+<script src="static/lib/axios.min.js"></script>
+<script src="static/lib/qs.min.js"></script>
+<script src="static/scripts/common.js?v=2022032411111"></script>
+<script src="static/scripts/request.js?v=20220316"></script>
+<script src="static/scripts/login.js?v=20220316"></script>
+</body>
+</html>

二進制
home/static/images/TopBar.png


二進制
home/static/images/icon-add.png


二進制
home/static/images/login-bg.png


二進制
home/static/images/logo.png


文件差異過大導致無法顯示
+ 3 - 0
home/static/lib/axios.min.js


二進制
home/static/lib/element/fonts/element-icons.ttf


二進制
home/static/lib/element/fonts/element-icons.woff


文件差異過大導致無法顯示
+ 1 - 0
home/static/lib/element/index.css


文件差異過大導致無法顯示
+ 1 - 0
home/static/lib/element/index.js


文件差異過大導致無法顯示
+ 1 - 0
home/static/lib/element/indexbac.js


文件差異過大導致無法顯示
+ 4 - 0
home/static/lib/jquery.min.js


文件差異過大導致無法顯示
+ 1 - 0
home/static/lib/qs.min.js


文件差異過大導致無法顯示
+ 1 - 0
home/static/lib/tinymce/icons/default/icons.min.js


+ 92 - 0
home/static/lib/tinymce/jquery.tinymce.min.js

@@ -0,0 +1,92 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+/**
+ * Jquery integration plugin.
+ *
+ * @class tinymce.core.JqueryIntegration
+ * @private
+ */
+!function(){var f,c,u,p,d,s=[];d="undefined"!=typeof global?global:window,p=d.jQuery;var v=function(){
+// Reference to tinymce needs to be lazily evaluated since tinymce
+// might be loaded through the compressor or other means
+return d.tinymce};p.fn.tinymce=function(o){var e,t,i,l=this,r="";
+// No match then just ignore the call
+if(!l.length)return l;
+// Get editor instance
+if(!o)return v()?v().get(l[0].id):null;l.css("visibility","hidden");// Hide textarea to avoid flicker
+var n=function(){var a=[],c=0;
+// Apply patches to the jQuery object, only once
+u||(m(),u=!0),
+// Create an editor instance for each matched node
+l.each(function(e,t){var n,i=t.id,r=o.oninit;
+// Generate unique id for target element if needed
+i||(t.id=i=v().DOM.uniqueId()),
+// Only init the editor once
+v().get(i)||(
+// Create editor instance and render it
+n=v().createEditor(i,o),a.push(n),n.on("init",function(){var e,t=r;l.css("visibility",""),
+// Run this if the oninit setting is defined
+// this logic will fire the oninit callback ones each
+// matched editor instance is initialized
+r&&++c==a.length&&("string"==typeof t&&(e=-1===t.indexOf(".")?null:v().resolve(t.replace(/\.\w+$/,"")),t=v().resolve(t)),
+// Call the oninit function with the object
+t.apply(e||v(),a))}))}),
+// Render the editor instances in a separate loop since we
+// need to have the full editors array used in the onInit calls
+p.each(a,function(e,t){t.render()})};
+// Load TinyMCE on demand, if we need to
+if(d.tinymce||c||!(e=o.script_url))
+// Delay the init call until tinymce is loaded
+1===c?s.push(n):n();else{c=1,t=e.substring(0,e.lastIndexOf("/")),
+// Check if it's a dev/src version they want to load then
+// make sure that all plugins, themes etc are loaded in source mode as well
+-1!=e.indexOf(".min")&&(r=".min"),
+// Setup tinyMCEPreInit object this will later be used by the TinyMCE
+// core script to locate other resources like CSS files, dialogs etc
+// You can also predefined a tinyMCEPreInit object and then it will use that instead
+d.tinymce=d.tinyMCEPreInit||{base:t,suffix:r},
+// url contains gzip then we assume it's a compressor
+-1!=e.indexOf("gzip")&&(i=o.language||"en",e=e+(/\?/.test(e)?"&":"?")+"js=true&core=true&suffix="+escape(r)+"&themes="+escape(o.theme||"modern")+"&plugins="+escape(o.plugins||"")+"&languages="+(i||""),
+// Check if compressor script is already loaded otherwise setup a basic one
+d.tinyMCE_GZ||(d.tinyMCE_GZ={start:function(){var n=function(e){v().ScriptLoader.markDone(v().baseURI.toAbsolute(e))};
+// Add core languages
+n("langs/"+i+".js"),
+// Add themes with languages
+n("themes/"+o.theme+"/theme"+r+".js"),n("themes/"+o.theme+"/langs/"+i+".js"),
+// Add plugins with languages
+p.each(o.plugins.split(","),function(e,t){t&&(n("plugins/"+t+"/plugin"+r+".js"),n("plugins/"+t+"/langs/"+i+".js"))})},end:function(){}}));var a=document.createElement("script");a.type="text/javascript",a.onload=a.onreadystatechange=function(e){e=e||window.event,2===c||"load"!=e.type&&!/complete|loaded/.test(a.readyState)||(v().dom.Event.domLoaded=1,c=2,
+// Execute callback after mainscript has been loaded and before the initialization occurs
+o.script_loaded&&o.script_loaded(),n(),p.each(s,function(e,t){t()}))},a.src=e,document.body.appendChild(a)}return l},
+// Add :tinymce pseudo selector this will select elements that has been converted into editor instances
+// it's now possible to use things like $('*:tinymce') to get all TinyMCE bound elements.
+p.extend(p.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in d&&(t=v().get(e.id))&&t.editorManager===v())}});
+// This function patches internal jQuery functions so that if
+// you for example remove an div element containing an editor it's
+// automatically destroyed by the TinyMCE API
+var m=function(){
+// Removes any child editor instances by looking for editor wrapper elements
+var r=function(e){
+// If the function is remove
+"remove"===e&&this.each(function(e,t){var n=l(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=v().get(t.id.replace(/_parent$/,""));n&&n.remove()})},o=function(i){var e,t=this;
+// Handle set value
+/*jshint eqnull:true */if(null!=i)r.call(t),
+// Saves the contents before get/set value of textarea/div
+t.each(function(e,t){var n;(n=v().get(t.id))&&n.setContent(i)});else if(0<t.length&&(e=v().get(t[0].id)))return e.getContent()},l=function(e){var t=null;return e&&e.id&&d.tinymce&&(t=v().get(e.id)),t},u=function(e){return!!(e&&e.length&&d.tinymce&&e.is(":tinymce"))},s={};
+// Loads or saves contents from/to textarea if the value
+// argument is defined it will set the TinyMCE internal contents
+// Patch some setter/getter functions these will
+// now be able to set/get the contents of editor instances for
+// example $('#editorid').html('Content'); will update the TinyMCE iframe instance
+p.each(["text","html","val"],function(e,t){var a=s[t]=p.fn[t],c="text"===t;p.fn[t]=function(e){var t=this;if(!u(t))return a.apply(t,arguments);if(e!==f)return o.call(t.filter(":tinymce"),e),a.apply(t.not(":tinymce"),arguments),t;// return original set for chaining
+var i="",r=arguments;return(c?t:t.eq(0)).each(function(e,t){var n=l(t);i+=n?c?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):a.apply(p(t),r)}),i}}),
+// Makes it possible to use $('#id').append("content"); to append contents to the TinyMCE editor iframe
+p.each(["append","prepend"],function(e,t){var n=s[t]=p.fn[t],r="prepend"===t;p.fn[t]=function(i){var e=this;return u(e)?i!==f?("string"==typeof i&&e.filter(":tinymce").each(function(e,t){var n=l(t);n&&n.setContent(r?i+n.getContent():n.getContent()+i)}),n.apply(e.not(":tinymce"),arguments),e):void 0:n.apply(e,arguments)}}),
+// Makes sure that the editor instance gets properly destroyed when the parent element is removed
+p.each(["remove","replaceWith","replaceAll","empty"],function(e,t){var n=s[t]=p.fn[t];p.fn[t]=function(){return r.call(this,t),n.apply(this,arguments)}}),s.attr=p.fn.attr,
+// Makes sure that $('#tinymce_id').attr('value') gets the editors current HTML contents
+p.fn.attr=function(e,t){var n=this,i=arguments;if(!e||"value"!==e||!u(n))return s.attr.apply(n,i);if(t!==f)return o.call(n.filter(":tinymce"),t),s.attr.apply(n.not(":tinymce"),i),n;// return original set for chaining
+var r=n[0],a=l(r);return a?a.getContent({save:!0}):s.attr.apply(p(r),i)}}}();

+ 3 - 0
home/static/lib/tinymce/langs/readme.md

@@ -0,0 +1,3 @@
+This is where language files should be placed.
+
+Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/

+ 410 - 0
home/static/lib/tinymce/langs/zh_CN.js

@@ -0,0 +1,410 @@
+tinymce.addI18n('zh_CN',{
+"Redo": "恢复",
+"Undo": "撤销",
+"Cut": "剪切",
+"Copy": "复制",
+"Paste": "粘贴",
+"Select all": "全选",
+"New document": "新建文档",
+"Ok": "确定",
+"Cancel": "取消",
+"Visual aids": "网格线",
+"Bold": "粗体",
+"Italic": "斜体",
+"Underline": "下划线",
+"Strikethrough": "删除线",
+"Superscript": "上标",
+"Subscript": "下标",
+"Clear formatting": "清除格式",
+"Align left": "左对齐",
+"Align center": "居中",
+"Align right": "右对齐",
+"Justify": "两端对齐",
+"Bullet list": "符号列表",
+"Numbered list": "数字列表",
+"Decrease indent": "减少缩进",
+"Increase indent": "增加缩进",
+"Close": "关闭",
+"Formats": "格式",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "当前浏览器不支持访问剪贴板,请使用快捷键Ctrl+X/C/V复制粘贴",
+"Headers": "标题",
+"Header 1": "标题1",
+"Header 2": "标题2",
+"Header 3": "标题3",
+"Header 4": "标题4",
+"Header 5": "标题5",
+"Header 6": "标题6",
+"Headings": "标题",
+"Heading 1": "标题1",
+"Heading 2": "标题2",
+"Heading 3": "标题3",
+"Heading 4": "标题4",
+"Heading 5": "标题5",
+"Heading 6": "标题6",
+"Preformatted": "预格式化",
+"Div": "Div区块",
+"Pre": "预格式文本",
+"Code": "代码",
+"Paragraph": "段落",
+"Blockquote": "引用",
+"Inline": "文本",
+"Blocks": "区块",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "当前为纯文本粘贴模式,再次点击可以回到普通粘贴模式。",
+"Fonts": "字体",
+"Font Sizes": "字号",
+"Class": "Class",
+"Browse for an image": "浏览图像",
+"OR": "或",
+"Drop an image here": "拖放一张图片文件至此",
+"Upload": "上传",
+"Block": "块",
+"Align": "对齐",
+"Default": "默认",
+"Circle": "空心圆",
+"Disc": "实心圆",
+"Square": "方块",
+"Lower Alpha": "小写英文字母",
+"Lower Greek": "小写希腊字母",
+"Lower Roman": "小写罗马字母",
+"Upper Alpha": "大写英文字母",
+"Upper Roman": "大写罗马字母",
+"Anchor...": "锚点...",
+"Name": "名称",
+"Id": "id",
+"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "id应该以字母开头,后跟字母、数字、横线、点、冒号或下划线。",
+"You have unsaved changes are you sure you want to navigate away?": "你对文档的修改尚未保存,确定离开吗?",
+"Restore last draft": "恢复上次的草稿",
+"Special characters...": "特殊字符...",
+"Source code": "HTML源码",
+"Insert\/Edit code sample": "插入/编辑代码示例",
+"Language": "语言",
+"Code sample...": "代码示例...",
+"Color Picker": "选取颜色",
+"R": "R",
+"G": "G",
+"B": "B",
+"Left to right": "从左到右",
+"Right to left": "从右到左",
+"Emoticons...": "表情符号...",
+"Metadata and Document Properties": "元数据和文档属性",
+"Title": "标题",
+"Keywords": "关键词",
+"Description": "描述",
+"Robots": "机器人",
+"Author": "作者",
+"Encoding": "编码",
+"Fullscreen": "全屏",
+"Action": "操作",
+"Shortcut": "快捷键",
+"Help": "帮助",
+"Address": "地址",
+"Focus to menubar": "移动焦点到菜单栏",
+"Focus to toolbar": "移动焦点到工具栏",
+"Focus to element path": "移动焦点到元素路径",
+"Focus to contextual toolbar": "移动焦点到上下文菜单",
+"Insert link (if link plugin activated)": "插入链接 (如果链接插件已激活)",
+"Save (if save plugin activated)": "保存(如果保存插件已激活)",
+"Find (if searchreplace plugin activated)": "查找(如果查找替换插件已激活)",
+"Plugins installed ({0}):": "已安装插件 ({0}):",
+"Premium plugins:": "优秀插件:",
+"Learn more...": "了解更多...",
+"You are using {0}": "你正在使用 {0}",
+"Plugins": "插件",
+"Handy Shortcuts": "快捷键",
+"Horizontal line": "水平分割线",
+"Insert\/edit image": "插入/编辑图片",
+"Image description": "图片描述",
+"Source": "地址",
+"Dimensions": "大小",
+"Constrain proportions": "保持宽高比",
+"General": "常规",
+"Advanced": "高级",
+"Style": "样式",
+"Vertical space": "垂直边距",
+"Horizontal space": "水平边距",
+"Border": "边框",
+"Insert image": "插入图片",
+"Image...": "图片...",
+"Image list": "图片列表",
+"Rotate counterclockwise": "逆时针旋转",
+"Rotate clockwise": "顺时针旋转",
+"Flip vertically": "垂直翻转",
+"Flip horizontally": "水平翻转",
+"Edit image": "编辑图片",
+"Image options": "图片选项",
+"Zoom in": "放大",
+"Zoom out": "缩小",
+"Crop": "裁剪",
+"Resize": "调整大小",
+"Orientation": "方向",
+"Brightness": "亮度",
+"Sharpen": "锐化",
+"Contrast": "对比度",
+"Color levels": "色阶",
+"Gamma": "伽马值",
+"Invert": "反转",
+"Apply": "应用",
+"Back": "后退",
+"Insert date\/time": "插入日期/时间",
+"Date\/time": "日期/时间",
+"Insert\/Edit Link": "插入/编辑链接",
+"Insert\/edit link": "插入/编辑链接",
+"Text to display": "显示文字",
+"Url": "地址",
+"Open link in...": "链接打开方式...",
+"Current window": "当前窗口打开",
+"None": "在当前窗口/框架打开",
+"New window": "在新窗口打开",
+"Remove link": "删除链接",
+"Anchors": "锚点",
+"Link...": "链接...",
+"Paste or type a link": "粘贴或输入链接",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "你所填写的URL地址为邮件地址,需要加上mailto:前缀吗?",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "你所填写的URL地址属于外部链接,需要加上http://:前缀吗?",
+"Link list": "链接列表",
+"Insert video": "插入视频",
+"Insert\/edit video": "插入/编辑视频",
+"Insert\/edit media": "插入/编辑媒体",
+"Alternative source": "替代资源",
+"Alternative image URL": "资源备用地址",
+"Media poster (Image URL)": "封面(图片地址)",
+"Paste your embed code below:": "将内嵌代码粘贴在下面:",
+"Embed": "内嵌",
+"Media...": "多媒体...",
+"Nonbreaking space": "不间断空格",
+"Page break": "分页符",
+"Paste as text": "粘贴为文本",
+"Preview": "预览",
+"Print...": "打印...",
+"Save": "保存",
+"Find": "查找",
+"Replace with": "替换为",
+"Replace": "替换",
+"Replace all": "替换全部",
+"Previous": "上一个",
+"Next": "下一个",
+"Find and replace...": "查找并替换...",
+"Could not find the specified string.": "未找到搜索内容。",
+"Match case": "区分大小写",
+"Find whole words only": "全单词匹配",
+"Spell check": "拼写检查",
+"Ignore": "忽略",
+"Ignore all": "忽略全部",
+"Finish": "完成",
+"Add to Dictionary": "添加到字典",
+"Insert table": "插入表格",
+"Table properties": "表格属性",
+"Delete table": "删除表格",
+"Cell": "单元格",
+"Row": "行",
+"Column": "列",
+"Cell properties": "单元格属性",
+"Merge cells": "合并单元格",
+"Split cell": "拆分单元格",
+"Insert row before": "在上方插入",
+"Insert row after": "在下方插入",
+"Delete row": "删除行",
+"Row properties": "行属性",
+"Cut row": "剪切行",
+"Copy row": "复制行",
+"Paste row before": "粘贴到上方",
+"Paste row after": "粘贴到下方",
+"Insert column before": "在左侧插入",
+"Insert column after": "在右侧插入",
+"Delete column": "删除列",
+"Cols": "列",
+"Rows": "行",
+"Width": "宽",
+"Height": "高",
+"Cell spacing": "单元格外间距",
+"Cell padding": "单元格内边距",
+"Show caption": "显示标题",
+"Left": "左对齐",
+"Center": "居中",
+"Right": "右对齐",
+"Cell type": "单元格类型",
+"Scope": "范围",
+"Alignment": "对齐方式",
+"H Align": "水平对齐",
+"V Align": "垂直对齐",
+"Top": "顶部对齐",
+"Middle": "垂直居中",
+"Bottom": "底部对齐",
+"Header cell": "表头单元格",
+"Row group": "行组",
+"Column group": "列组",
+"Row type": "行类型",
+"Header": "表头",
+"Body": "表体",
+"Footer": "表尾",
+"Border color": "边框颜色",
+"Insert template...": "插入模板...",
+"Templates": "模板",
+"Template": "模板",
+"Text color": "文字颜色",
+"Background color": "背景色",
+"Custom...": "自定义...",
+"Custom color": "自定义颜色",
+"No color": "无",
+"Remove color": "删除颜色",
+"Table of Contents": "目录",
+"Show blocks": "显示区块边框",
+"Show invisible characters": "显示不可见字符",
+"Word count": "字数统计",
+"Words: {0}": "字数:{0}",
+"{0} words": "{0} 个字",
+"File": "文件",
+"Edit": "编辑",
+"Insert": "插入",
+"View": "查看",
+"Format": "格式",
+"Table": "表格",
+"Tools": "工具",
+"Powered by {0}": "Powered by {0}",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "在编辑区按ALT+F9打开菜单,按ALT+F10打开工具栏,按ALT+0查看帮助",
+"Image title": "图片标题",
+"Border width": "边框宽度",
+"Border style": "边框样式",
+"Error": "错误",
+"Warn": "警告",
+"Valid": "有效",
+"To open the popup, press Shift+Enter": "此快捷为软回车(插入<br>)",
+"Rich Text Area. Press ALT-0 for help.": "编辑区. 按Alt+0键打开帮助",
+"System Font": "默认字体",
+"Failed to upload image: {0}": "图片上传失败: {0}",
+"Failed to load plugin: {0} from url {1}": "插件加载失败: {0} - {1}",
+"Failed to load plugin url: {0}": "插件加载失败: {0}",
+"Failed to initialize plugin: {0}": "插件初始化失败: {0}",
+"example": "示例",
+"Search": "查找",
+"All": "全部",
+"Currency": "货币",
+"Text": "文本",
+"Quotations": "引用",
+"Mathematical": "数学运算符",
+"Extended Latin": "拉丁语扩充",
+"Symbols": "符号",
+"Arrows": "箭头",
+"User Defined": "自定义",
+"dollar sign": "美元",
+"currency sign": "货币",
+"euro-currency sign": "欧元",
+"colon sign": "冒号",
+"cruzeiro sign": "克鲁赛罗币",
+"french franc sign": "法郎",
+"lira sign": "里拉",
+"mill sign": "密尔",
+"naira sign": "奈拉",
+"peseta sign": "比塞塔",
+"rupee sign": "卢比",
+"won sign": "韩元",
+"new sheqel sign": "新谢克尔",
+"dong sign": "越南盾",
+"kip sign": "老挝基普",
+"tugrik sign": "图格里克",
+"drachma sign": "德拉克马",
+"german penny symbol": "德国便士",
+"peso sign": "比索",
+"guarani sign": "瓜拉尼",
+"austral sign": "澳元",
+"hryvnia sign": "格里夫尼亚",
+"cedi sign": "塞地",
+"livre tournois sign": "里弗弗尔",
+"spesmilo sign": "一千spesoj的货币符号,该货币未使用",
+"tenge sign": "坚戈",
+"indian rupee sign": "印度卢比",
+"turkish lira sign": "土耳其里拉",
+"nordic mark sign": "北欧马克",
+"manat sign": "马纳特",
+"ruble sign": "卢布",
+"yen character": "日元",
+"yuan character": "人民币元",
+"yuan character, in hong kong and taiwan": "元的繁体字",
+"yen\/yuan character variant one": "元(大写)",
+"Loading emoticons...": "正在加载表情文字...",
+"Could not load emoticons": "不能加载表情文字",
+"People": "人类",
+"Animals and Nature": "动物和自然",
+"Food and Drink": "食物和饮品",
+"Activity": "活动",
+"Travel and Places": "旅游和地点",
+"Objects": "物件",
+"Flags": "旗帜",
+"Characters": "字数",
+"Characters (no spaces)": "字数(不含空格)",
+"Error: Form submit field collision.": "错误: 表单提交字段冲突.",
+"Error: No form element found.": "错误: 未找到可用的form.",
+"Update": "更新",
+"Color swatch": "颜色样本",
+"Turquoise": "青绿",
+"Green": "绿色",
+"Blue": "蓝色",
+"Purple": "紫色",
+"Navy Blue": "海军蓝",
+"Dark Turquoise": "深蓝绿色",
+"Dark Green": "暗绿",
+"Medium Blue": "中蓝",
+"Medium Purple": "中紫",
+"Midnight Blue": "深蓝",
+"Yellow": "黄色",
+"Orange": "橙色",
+"Red": "红色",
+"Light Gray": "浅灰",
+"Gray": "灰色",
+"Dark Yellow": "暗黄",
+"Dark Orange": "暗橙",
+"Dark Red": "暗红",
+"Medium Gray": "中灰",
+"Dark Gray": "深灰",
+"Black": "黑色",
+"White": "白色",
+"Switch to or from fullscreen mode": "切换全屏模式",
+"Open help dialog": "打开帮助对话框",
+"history": "历史",
+"styles": "样式",
+"formatting": "格式化",
+"alignment": "对齐",
+"indentation": "缩进",
+"permanent pen": "记号笔",
+"comments": "注释",
+"Anchor": "锚点",
+"Special character": "特殊字符",
+"Code sample": "代码示例",
+"Color": "颜色",
+"Emoticons": "表情",
+"Document properties": "文档属性",
+"Image": "图片",
+"Insert link": "插入链接",
+"Target": "目标",
+"Link": "链接",
+"Poster": "封面",
+"Media": "音视频",
+"Print": "打印",
+"Prev": "上一个",
+"Find and replace": "查找并替换",
+"Whole words": "全字匹配",
+"Spellcheck": "拼写检查",
+"Caption": "标题",
+"Insert template": "插入模板",
+//以下为补充汉化内容 by 莫若卿
+"Code view": "代码区域",
+"Select...": "选择...",
+"Format Painter": "格式刷",
+"No templates defined.": "无内置模板",
+"Special character...": "特殊字符...",
+"Open link": "打开链接",
+"None": "无",
+"Count": "统计",
+"Document": "整个文档",
+"Selection": "选取部分",
+"Words": "字词数",
+"{0} characters": "{0} 个字符",
+"Alternative source URL": "替代资源地址",
+"Alternative description": "替代说明文字",
+"Accessibility": "可访问性",
+"Image is decorative": "仅用于装饰",
+//帮助窗口内的文字
+"Version": "版本",
+"Keyboard Navigation": "键盘导航",
+"Open popup menu for split buttons": "该组合键的作用是软回车(插入br)",
+});

+ 504 - 0
home/static/lib/tinymce/license.txt

@@ -0,0 +1,504 @@
+      GNU LESSER GENERAL PUBLIC LICENSE
+           Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+      GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+          NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+

文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/advlist/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/anchor/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/autolink/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/autoresize/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/autosave/plugin.min.js


二進制
home/static/lib/tinymce/plugins/axupimgs/loading.gif


文件差異過大導致無法顯示
+ 75 - 0
home/static/lib/tinymce/plugins/axupimgs/plugin.js


文件差異過大導致無法顯示
+ 75 - 0
home/static/lib/tinymce/plugins/axupimgs/plugin.min.js


文件差異過大導致無法顯示
+ 203 - 0
home/static/lib/tinymce/plugins/axupimgs/upfiles.html


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/bbcode/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/charmap/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/code/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/codesample/plugin.min.js


+ 9 - 0
home/static/lib/tinymce/plugins/colorpicker/plugin.min.js

@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.4.2 (2020-08-17)
+ */
+!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("colorpicker",function(){o.console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);

+ 9 - 0
home/static/lib/tinymce/plugins/contextmenu/plugin.min.js

@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.4.2 (2020-08-17)
+ */
+!function(n){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager");!function e(){o.add("contextmenu",function(){n.console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);

文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/directionality/plugin.min.js


文件差異過大導致無法顯示
+ 9015 - 0
home/static/lib/tinymce/plugins/emoticons/js/emojis.js


文件差異過大導致無法顯示
+ 2 - 0
home/static/lib/tinymce/plugins/emoticons/js/emojis.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/emoticons/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/fullpage/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/fullscreen/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/help/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/hr/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/image/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/imagetools/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/importcss/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/insertdatetime/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/legacyoutput/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/link/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/lists/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/media/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/nonbreaking/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/noneditable/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/pagebreak/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/paste/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/preview/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/print/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/quickbars/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/save/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/searchreplace/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/spellchecker/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/tabfocus/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/table/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/template/plugin.min.js


+ 9 - 0
home/static/lib/tinymce/plugins/textcolor/plugin.min.js

@@ -0,0 +1,9 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.4.2 (2020-08-17)
+ */
+!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("textcolor",function(){o.console.warn("Text color plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);

文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/textpattern/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/toc/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/visualblocks/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/visualchars/plugin.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/plugins/wordcount/plugin.min.js


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/content/dark/content.min.css


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/content/default/content.min.css


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/content/document/content.min.css


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/content/writer/content.min.css


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide-dark/content.inline.min.css


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide-dark/content.min.css


+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide-dark/content.mobile.min.css

@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

二進制
home/static/lib/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide-dark/skin.min.css


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide-dark/skin.mobile.min.css


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide/content.inline.min.css


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide/content.min.css


+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide/content.mobile.min.css

@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

二進制
home/static/lib/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide/skin.min.css


文件差異過大導致無法顯示
+ 7 - 0
home/static/lib/tinymce/skins/ui/oxide/skin.mobile.min.css


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/themes/mobile/theme.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/themes/silver/theme.min.js


文件差異過大導致無法顯示
+ 9 - 0
home/static/lib/tinymce/tinymce.min.js


文件差異過大導致無法顯示
+ 6 - 0
home/static/lib/vue.min.js


+ 110 - 0
home/static/scripts/common.js

@@ -0,0 +1,110 @@
+$(function () {
+    activityHeader();
+});
+function activityHeader() {
+    let text = `<div class="wrapper clearfix">
+        <a href="../home/index.html" class="fl logo">活动评比</a>
+        <a href="../home/login.html" class="fr mt20 button login" v-if="!userInfo.token">登录</a>
+     
+        <el-dropdown v-else class="fr mt25" size="medium" @command="handleCommand">
+            <div class="el-dropdown-link hand">
+                <span class="font-size-15 text-white">{{userInfo.user_realname}}</span>
+                <i class="el-icon-arrow-down el-icon--right d-in-block v-mid"></i>
+            </div>
+            <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="manage">
+                    后台管理
+                </el-dropdown-item>
+                <el-dropdown-item command="loginOut">
+                    退出登录
+                </el-dropdown-item>
+            </el-dropdown-menu>
+        </el-dropdown>
+        <h3 v-if="userInfo.token" class="shot fr mr10">
+           <img :src="userInfo.user_avatar.big" alt="">
+        </h3>
+    </div>`;
+    $('#activityHeader').html(text);
+    new Vue({
+        el: '#activityHeader',
+        data() {
+            return {
+                userInfo:{
+                    user_realname: '',
+                    user_avatar: {
+                        big: ''
+                    }
+                }
+            }
+        },
+        methods: {
+            handleCommand(command) {
+                switch (command) {
+                    case 'loginOut':
+                        if(localStorage.getItem('userInfo')) {
+                            localStorage.removeItem('userInfo')
+                            window.location.href = '../home/login.html';
+                        }
+                        break;
+                    case 'manage':
+                        if(localStorage.getItem('userInfo')) {
+                            window.open('../manage/','_blank');
+                        }
+                        break;
+                }
+            }
+        },
+        mounted() {
+           if(localStorage.getItem('userInfo')) {
+               this.userInfo = JSON.parse(localStorage.getItem('userInfo'));
+           }
+        }
+    })
+}
+
+//服务平台配置文件
+var configText = []
+configText['beta'] = {
+    vision: "beta", //正式版:release,测试版:beta
+    prefix: "https://kzkt.dev.bozedu.net",
+    login: 'http://10.234.7.185:8090',
+    yzy: 'https://yzy.dev.bozedu.net',
+    uc: 'https://uc.dev.bozedu.net',
+    stat: 'https://stat.dev.bozedu.net',
+    oss: 'http://10.234.7.185:8090',
+    qqyxt: 'https://qqyxt.dev.bozedu.net',
+    socket: 'wss://socket.dev.bozedu.net',
+    params: {
+        site: 'qqyxt',
+        api: 'json',
+        token: '',
+        client: 'web',
+        safekey: ''
+    },
+    lessonPreparation_live: '',
+    networkResearch_live: '',
+}
+
+configText['release'] = {
+    vision: "release", //正式版:release,测试版:beta
+    prefix: "https://kzkt.bozedu.net",
+    login: 'http://10.234.7.185:8090',
+    yzy: 'https://yzy.bozedu.net',
+    uc: 'https://uc.bozedu.net',
+    stat: 'https://stat.bozedu.net',
+    oss: 'http://10.234.7.185:8090',
+    qqyxt: 'https://qqyxt.bozedu.net',
+    socket: 'wss://socket.bozedu.net',
+    params: {
+        site: 'qqyxt',
+        api: 'json',
+        token: '',
+        client: 'web',
+        safekey: ''
+    },
+    lessonPreparation_live: '',
+    networkResearch_live: '',
+}
+var mode = 'release'; // var mode='beta'
+
+window.globalData = configText[mode];

文件差異過大導致無法顯示
+ 508 - 0
home/static/scripts/detail.js


+ 81 - 0
home/static/scripts/home.js

@@ -0,0 +1,81 @@
+new Vue({
+    el: '#activityMain',
+    data() {
+        return {
+            userInfo: {
+                token:''
+            },
+            currImgUrl: 'https://oss.bozedu.net/data/upload/month_202111/202111091052559678_BXuc.png',
+            imgList: [],
+            hdzt: [],
+            yxzp: [],
+            tzgg: [],
+            dcwj: [],
+            tp: []
+        }
+    },
+    methods: {
+        switchImg(item) {
+            this.currImgUrl = item.hh_img;
+            if (!this.currImgUrl.includes('http')) {
+                this.currImgUrl = globalData.login + '/' + this.currImgUrl;
+            }
+        },
+        getInfoList() {
+            let data = {
+                token: this.userInfo.token
+            }
+            axios_get(link.index, data).then(res => {
+                if (res.data.code == 1) {
+                    console.log(res.data.data, 89)
+                    this.imgList = res.data.data.hdgg.slice(0, 5);
+                    this.currImgUrl = this.imgList[0].hh_img;
+                    if (this.currImgUrl && !this.currImgUrl.includes('http')) {
+                        this.currImgUrl = globalData.login + '/' + this.currImgUrl;
+                    }
+                    this.hdzt = res.data.data.hdgl.slice(0, 3);
+                    this.yxzp = res.data.data.yxzp.slice(0, 4);
+                    for (let i in this.hdzt) {
+                        if (this.hdzt[i].hhg_img && !this.hdzt[i].hhg_img.includes('http')) {
+                            this.hdzt[i].hhg_img = globalData.login + '/' + this.hdzt[i].hhg_img;
+                        }
+                    }
+                    for (let j in this.yxzp) {
+                        if (this.yxzp[j].hy_img && !this.yxzp[j].hy_img.includes('http')) {
+                            this.yxzp[j].hy_img = globalData.login + '/' + this.yxzp[j].hy_img;
+                        }
+                    }
+                    this.tzgg = res.data.data.tzgg;
+                    this.dcwj = res.data.data.wjtp1;
+                    this.tp = res.data.data.wjtp2.slice(0, 7);
+                    for (let v in this.tp) {
+                        if (this.tp[v].hw_img && !this.tp[v].hw_img.includes('http')) {
+                            this.tp[v].hw_img = globalData.login + '/' + this.tp[v].hw_img;
+                        }
+                    }
+                }
+            })
+        },
+        toList(type) {
+            window.location.href = '../home/list.html?type=' + type;
+        },
+        toDetail(type, id) {
+            window.location.href = '../home/detail.html?type=' + type + '&id=' + id;
+        },
+        fetchData(event) {
+            //vue中获取滚动条到底部的距离
+            let scrollBottom = event.target.scrollHeight - event.target.scrollTop - event.target.clientHeight
+            //以下三个条件不执行数据加载:1.数据正在加载的状态,2.已经到底了,3.滚动条距离底部的距离小于100px
+            if (scrollBottom == 0) {
+                console.log(1111)
+            }
+        },
+    },
+    mounted() {
+        this.getInfoList();
+        if (localStorage.getItem('userInfo')) {
+            this.userInfo = JSON.parse(localStorage.getItem('userInfo'));
+
+        }
+    }
+});

+ 84 - 0
home/static/scripts/list.js

@@ -0,0 +1,84 @@
+new Vue({
+    el: '#activityList',
+    data() {
+        return {
+            userInfo: {},
+            type: '',
+            hdgl: [],
+            yxzp:[],
+            tp:[],
+            cur_page: 1,
+            total_num: 0,
+        }
+    },
+    methods: {
+        getList() {
+            let data = {
+                token: this.userInfo.token,
+                page: this.cur_page,
+                limit: 10
+            }
+            if (this.type == '1') {
+                data.hhg_fbz = '1';
+                axios_get(link.ac_list, data).then((res) => {
+                    if (res.data.code == 1) {
+                        this.hdgl = res.data.data.page_data;
+                        for (let i in this.hdgl) {
+                            if (!this.hdgl[i].hhg_img.includes('http')) {
+                                this.hdgl[i].hhg_img = globalData.login + '/' + this.hdgl[i].hhg_img;
+                            }
+                        }
+                        this.cur_page = res.data.data.page_now;
+                        this.total_num = Number(res.data.data.total_rows);
+                    }
+                });
+            } else if (this.type == '2') {
+                axios_get(link.works_list, data).then((res) => {
+                    if (res.data.code == 1) {
+                        this.yxzp = res.data.data.page_data;
+                        for (let i in this.yxzp) {
+                            if (!this.yxzp[i].hy_img.includes('http')) {
+                                this.yxzp[i].hy_img = globalData.login + '/' + this.yxzp[i].hy_img;
+                            }
+                        }
+                        this.cur_page = res.data.data.page_now;
+                        this.total_num = Number(res.data.data.total_rows);
+                    }
+                });
+            } else if(this.type == '3') {
+                data.hw_cate = '1';
+                data.hw_zt = '1';
+                axios_get(link.vote_list, data).then((res) => {
+                    if (res.data.code == 1) {
+                        this.tp = res.data.data.page_data;
+                        for(let v in this.tp) {
+                            if(!this.tp[v].hw_img.includes('http')) {
+                                this.tp[v].hw_img = globalData.login + '/' + this.tp[v].hw_img;
+                            }
+                        }
+                        this.cur_page = res.data.data.page_now;
+                        this.total_num = Number(res.data.data.total_rows);
+                    }
+                });
+            }
+        },
+        handleCurrentChange(val) {
+            this.cur_page = val;
+            this.getList();
+        },
+        toDetail(type,id) {
+            window.location.href = '../home/detail.html?type='+type + '&id=' + id;
+        },
+    },
+    mounted() {
+        if (localStorage.getItem('userInfo')) {
+            this.userInfo = JSON.parse(localStorage.getItem('userInfo'));
+            if (location.search.includes('type')) {
+                this.type = location.search.substring(6)
+                this.getList();
+            }
+        } else {
+            window.location.href = '../home/login.html';
+        }
+    }
+})

+ 47 - 0
home/static/scripts/login.js

@@ -0,0 +1,47 @@
+new Vue({
+    el:'#login',
+    data() {
+        return {
+            loginForm:{
+                user:'',
+                pwd:''
+            },
+            fullscreenLoading: false
+        }
+    },
+    methods:{
+       login() {
+           let data = {
+               user_name: this.loginForm.user,
+               user_password: this.loginForm.pwd
+           }
+           this.fullscreenLoading = true;
+           axios_post(link.login, data).then((res) => {
+               if(res.data.code == 1) {
+                   this.fullscreenLoading = false;
+                   this.$message({
+                       message: '登录成功!',
+                       type: 'success',
+                       showClose: true,
+                       duration: '1000',
+                       onClose:() => {
+                           localStorage.setItem('userInfo',JSON.stringify(res.data.data));
+                           window.location.href = '../home/index.html';
+                       }
+                   });
+               } else {
+                   this.fullscreenLoading = false;
+                   this.$message({
+                       message: res.data.msg,
+                       type: 'error',
+                       showClose: true,
+                       duration: '1000'
+                   });
+               }
+           });
+       }
+    },
+    mounted() {
+
+    }
+})

+ 147 - 0
home/static/scripts/request.js

@@ -0,0 +1,147 @@
+const service = axios.create()
+const qs = Qs;
+// 配置响应时间
+service.defaults.timeout = 40000;
+/* 配置请求头 */
+service.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
+
+//添加request拦截器
+service.interceptors.request.use(config => {
+    // 默认参数设置:所有接口都必须传的值(比如:token)从localstorage中拿
+    // const token = window.localStorage.getItem('token');
+    // if (token != null) {//这里要和后台商量好
+    //   config.headers.accessToken = token;
+    // config.headers['accessToken'] = Token;
+    // }
+    // 目前还没有本地,所以先写死
+    // config.data = qs.stringify({
+    //   site: 'qqyxt',
+    //   api: 'json',
+    //   safekey: 'key',
+    //   client: "web",
+    //   token: token
+    // })
+    //判断请求的类型:如果是post请求就把默认参数拼到data里面;如果是get请求就拼到params里面
+    if (config.method === "post") {
+        config.data = qs.stringify({
+          site: 'qqyxt',
+          api: 'json',
+          safekey: 'key',
+          client: "web",
+          ...config.data,
+          // _t: Date.parse(new Date())//时间戳,用于IE
+        })
+    } else if (config.method === 'get') {
+        config.params = {
+          site: 'qqyxt',
+          api: 'json',
+          safekey: 'key',
+          client: "web",
+          ...config.params,
+          // _t: Date.parse(new Date())//时间戳,用于IE
+        }
+
+    }
+    // config.data = qs.stringify(config.data);
+    return config;
+}, error => {
+    Promise.reject(error);
+})
+
+//添加response拦截器
+service.interceptors.response.use((res) => {
+        if (res.data.status === '200') {
+            return Promise.resolve(res)
+        }
+        return res
+    }, (error) => {
+        if (error.toString().indexOf('401') > 0) {
+
+        } else if (error.toString().indexOf('400') > 0) {
+            this.$message.error('请求相关参数错误');
+        } else if (error.toString().indexOf('408') > 0) {
+            this.$message.error('请求超时');
+        } else if (error.toString().indexOf('404') > 0) {
+            this.$message.error('请检查网络情况');
+        } else if (error.toString().indexOf('500') > 0) {
+            this.$message.error('服务器宕机了');
+        }
+        return Promise.reject(error)
+    })
+    // 公共GET请求
+let axios_get = (url, params = {}) => {
+        params.t = new Date().getTime(); //get方法加一个时间参数,解决ie下可能缓存问题.
+        // params = qs.stringify(params)
+        return new Promise((resolve, reject) => {
+            service.get(url, { params: params })
+                .then(response => {
+                    resolve(response)
+                }, err => {
+                    reject(err)
+                }).catch((error) => {
+                    this.$message.error('服务器宕机了!');
+                    reject(error)
+                })
+        })
+    }
+    // 公共POST请求
+let axios_post = (url, data) => {
+    return new Promise((resolve, reject) => {
+        service.post(url, data)
+            .then(response => {
+                resolve(response)
+            }, err => {
+                reject(err)
+            })
+            .catch((error) => {
+                this.$message.error('服务器宕机了!');
+                reject(error)
+            })
+    })
+}
+
+//封装put方法 (resfulAPI常用)
+let axios_put = (url, data = {}) => {
+    return service({
+        url: url,
+        method: 'put',
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+        data: JSON.stringify(data)
+    })
+}
+
+//删除方法(resfulAPI常用)
+let axios_deletes = (url) => {
+    return service({
+        url: url,
+        method: 'delete',
+        headers: {}
+    })
+}
+
+//patch方法(resfulAPI常用)
+function axios_patch(url) {
+    return service({
+        url: url,
+        method: 'patch',
+        headers: {}
+    })
+}
+const link = {
+    login: globalData.login + '/user/main/login', // 登录
+    index: globalData.login + '/index/home/portal', // 首页
+    ac_list: globalData.login + '/hdpb/hdgl/index', // 活动列表
+    works_list: globalData.login + '/hdpb/yxzp/index', // 优秀作品列表
+    vote_list: globalData.login + '/hdpb/wjtp/index', // 投票列表
+    hdgg_detail: globalData.login + '/hdpb/hdgg/detail', // 活动公告详情
+    tzgg_detail: globalData.login + '/hdpb/tzgg/detail', // 通知公告详情
+    works_detail: globalData.login + '/hdpb/yxzp/detail', // 作品详情
+    ac_detail: globalData.login + '/hdpb/hdgl/detail', // 活动详情
+    type_tree: globalData.login + '/hdpb/hdlx/list_tree', // 活动类型
+    ac_sign_add: globalData.login + '/hdpb/bmjl/add', // 活动报名
+    ac_sign_edit: globalData.login + '/hdpb/bmjl/edit', // 活动报名编辑
+    vote_detail: globalData.login + '/hdpb/wjtp/detail', // 问卷投票详情
+    vote_add: globalData.login + '/hdpb/wjtp_log/add', // 问卷投票添加
+}

+ 0 - 0
home/static/styles/common.css


部分文件因文件數量過多而無法顯示