华清大学特普通奖学金初选报名系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

343 lines
9.7 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  6. <link rel="icon" type="image/png" href="/img/ord/icon-128.png" />
  7. <link href="https://fonts.yecdn.com/css2?family=Noto+Serif+SC:wght@300;700&display=swap" rel="stylesheet">
  8. <link href="https://fonts.yecdn.com/css2?family=Noto+Sans+SC&display=swap" rel="stylesheet">
  9. <meta property="og:title" content="十三月评凡" />
  10. <meta property="og:description" content="其实就是复旦大学特普通奖学金,但是他们辅导员好像不让提学校,搞不懂,搞不懂" />
  11. <link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
  12. <title>十三月评凡 报名页面</title>
  13. <style>
  14. body,
  15. pre {
  16. font-family: 'Noto Sans SC', sans-serif;
  17. }
  18. h1,
  19. h2,
  20. h3,
  21. h4,
  22. h5,
  23. h6,
  24. .sort-by{
  25. font-family: 'Noto Serif SC', serif;
  26. font-weight: 300;
  27. }
  28. .sort-by b {
  29. font-weight: 700;
  30. }
  31. a,
  32. a:hover,
  33. .btn-link,
  34. .btn-link:hover {
  35. color: inherit;
  36. text-decoration: underline;
  37. }
  38. nav .page-link {
  39. color: #000;
  40. }
  41. nav .page-item.active .page-link {
  42. background-color: #000;
  43. border-color: #000;
  44. }
  45. .btn-lg {
  46. font-size: 2em;
  47. font-family: 'Noto Serif SC', serif;
  48. }
  49. .part1 {
  50. max-width: 500px;
  51. float: left;
  52. padding-right: 10px;
  53. position: relative;
  54. }
  55. .input-form {
  56. position: absolute;
  57. top: 0;
  58. overflow-y: auto;
  59. overflow-x: hidden;
  60. background-color: #0006;
  61. height: 100%;
  62. }
  63. .part2 {
  64. min-width: 200px;
  65. overflow: hidden;
  66. padding-left: 25px;
  67. }
  68. .qbox {
  69. border: 2px black solid;
  70. background: white;
  71. padding: 5px;
  72. color: black;
  73. margin: 5px 5px 40px;
  74. }
  75. .new .qbox {
  76. background: transparent;
  77. color: white;
  78. border: none;
  79. }
  80. .new .qbox input,
  81. .new .qbox textarea {
  82. border: none;
  83. border-bottom: 2px solid;
  84. background: transparent;
  85. color: white;
  86. border-radius: 0;
  87. }
  88. .qbox .inner {
  89. margin: 15px 0 20px 15px;
  90. white-space: pre-wrap;
  91. }
  92. .like {
  93. fill: #fff;
  94. }
  95. .liked {
  96. fill: #000;
  97. }
  98. .timeago {
  99. font-size: 0.5em;
  100. margin-right: 10px;
  101. }
  102. .display_name {
  103. margin: 0;
  104. }
  105. .card-body {
  106. padding: 0.75em;
  107. }
  108. .behind {
  109. z-index: 98;
  110. cursor: pointer;
  111. transform: translateY(5px) scale(0.98);
  112. transform-origin: top;
  113. transition-property: transform;
  114. transition-duration: 0.5s;
  115. }
  116. .front {
  117. z-index: 99;
  118. transition-property: transform;
  119. transition-duration: 0.5s;
  120. }
  121. .twin {
  122. overflow: hidden;
  123. }
  124. .new {
  125. position: relative;
  126. margin: 30px 20px 30px 0;
  127. }
  128. .twin-collapse {
  129. max-height: 360px;
  130. }
  131. .show-mask {
  132. display: block;
  133. position: absolute;
  134. top: 20px;
  135. right: 35px;
  136. text-align: center;
  137. padding-top: 330px;
  138. width: 100%;
  139. z-index: 999;
  140. }
  141. .footer {
  142. background: black;
  143. color: white;
  144. text-align: center;
  145. font-size: 80%;
  146. border-top: solid 1px white;
  147. }
  148. .footer p {
  149. margin: 10px 0 0;
  150. float: bottom;
  151. }
  152. </style>
  153. </head>
  154. <body style="background: #fff url('/img/ord_fudan/bg_sm.jpg') repeat fixed center top / 250px">
  155. <div class="container" style="overflow: hidden;min-height: 100vh">
  156. <div style='padding:15px'>
  157. <img src="/img/ord_fudan/logo_sm.png" width="200px" />
  158. </div>
  159. <div class="part1">
  160. <div id="new" class="new twin-collapse twin front">
  161. <img src="/img/ord_fudan/input_bg.jpg" width="100%">
  162. <div class="input-form">
  163. <form action="new" method="post">
  164. <div class="form-group qbox">
  165. <h1 style="margin: -18px -16px 15px">自荐提名</h1>
  166. <textarea class="form-control" name="text" rows="5" maxlength="4000" placeholder="{{text1}}" required="required"></textarea>
  167. <textarea class="form-control" name="privateText" rows="4" maxlength="1000" placeholder="{{text2}}"></textarea>
  168. {% for v in vs %}
  169. <div class="form-group row">
  170. <label for="{{v.name}}" class="col-sm-7 col-form-label">{{v.ques}}</label>
  171. <div class="col-sm-5">
  172. <input type="text" class="form-control" name="{{v.name}}" placeholder="{{v.hint}}" required="required">
  173. </div>
  174. </div>
  175. {% endfor %}
  176. <button type="submit" class="btn btn-link btn-lg">报名</button>
  177. </div>
  178. </form>
  179. </div>
  180. </div>
  181. <a href="##" onclick="showNew()" class="show-mask">
  182. <span>
  183. <svg fill="#fff" viewBox="0 12 24 48" width="24">
  184. <path d="m0 24 l12 18 l12 -18 z"></path>
  185. </svg>
  186. </span>
  187. </a>
  188. <script>
  189. function showNew() {
  190. $('.twin').removeClass('twin-collapse');
  191. $('.show-mask').hide();
  192. }
  193. </script>
  194. </div>
  195. <div class="part2" id="part2">
  196. <div style="display:flex;justify-content:space-between;align-items: flex-end">
  197. <h1>已有报名</h1>
  198. <span style="margin:8px" class="sort-by">
  199. {% if sort_by == 'likeNum' %}
  200. <a href="?sort_by=time#part2">按时间</a> | <b>按赞数</b>
  201. {% else %}
  202. <b>按时间</b> | <a href="?sort_by=likeNum#part2">按赞数</a>
  203. {% endif %}
  204. </span>
  205. </div>
  206. {% for c in pagination.items %}
  207. <div class="qbox">
  208. {% if showPrivate %}
  209. <form action="{{c.id}}/delete" method="post">
  210. <input type="hidden" name="key" value="{{key}}">
  211. <button type="submit" class="close" aria-label="Close">
  212. <span>×</span>
  213. </button>
  214. </form>
  215. {% endif %}
  216. <small>No. {{c.id}}</small>
  217. <pre class="inner">{{c.content}}</pre>
  218. {% if showPrivate %}
  219. <hr />
  220. <pre class="inner">{{c.private}}</pre>
  221. <hr />
  222. {% endif %}
  223. {% if c.url %}
  224. <p class="inner"><a href="{{c.url}}" target="_black">补充材料</a></p>
  225. {% endif %}
  226. <div style="text-align:right;margin: 27px 0 -5px">
  227. <time class="timeago" datetime="{{c.time}}"></time>
  228. <a href="##" class="btn btn-link" id="like-{{c.id}}" onClick="like('{{c.id}}')" style="text-decoration: none;">
  229. <svg viewBox="-20 0 552 512" height="16" class="{{c.liked}}">
  230. <path stroke="#000" stroke-width="30" d="M474.644,74.27C449.391,45.616,414.358,29.836,376,29.836c-53.948,0-88.103,32.22-107.255,59.25
  231. c-4.969,7.014-9.196,14.047-12.745,20.665c-3.549-6.618-7.775-13.651-12.745-20.665c-19.152-27.03-53.307-59.25-107.255-59.25
  232. c-38.358,0-73.391,15.781-98.645,44.435C13.267,101.605,0,138.213,0,177.351c0,42.603,16.633,82.228,52.345,124.7
  233. c31.917,37.96,77.834,77.088,131.005,122.397c19.813,16.884,40.302,34.344,62.115,53.429l0.655,0.574
  234. c2.828,2.476,6.354,3.713,9.88,3.713s7.052-1.238,9.88-3.713l0.655-0.574c21.813-19.085,42.302-36.544,62.118-53.431
  235. c53.168-45.306,99.085-84.434,131.002-122.395C495.367,259.578,512,219.954,512,177.351
  236. C512,138.213,498.733,101.605,474.644,74.27z" />
  237. </svg>
  238. <span>
  239. {{c.likeNum}}
  240. </span>
  241. </a>
  242. </div>
  243. </div>
  244. {% endfor %}
  245. <nav>
  246. <ul class="pagination">
  247. {%- for page in pagination.iter_pages() %}
  248. {% if page %}
  249. {% if page != pagination.page %}
  250. <li class="page-item"><a class="page-link" href="{{ url_for('can_list', page=page, per_page=pagination.per_page, key=key, sort_by=sort_by) }}">{{ page }}</a></li>
  251. {% else %}
  252. <li class="page-item active">
  253. <a class="page-link" href="#">{{ page }}<span class="sr-only">(current)</span></a>
  254. </li>
  255. {% endif %}
  256. {% else %}
  257. <li class="page-item"><span class=ellipsis></span></li>
  258. {% endif %}
  259. {%- endfor %}
  260. </ul>
  261. </nav>
  262. </div>
  263. </div>
  264. <div class="footer">
  265. <p>
  266. 主办:十三月评凡项目组 <a href="mailto:fdpf2020@163.com">fdpf2020@163.com</a><br>
  267. <a href="//closed.social" target="_blank">闭社</a>提供技术支持,本报名系统开源于<a href="//git.closed.social/closed-social/ordinary/src/branch/fudan">碧茶</a>
  268. </p>
  269. <p> 🄯 2020 Copyleft: closed.social</p>
  270. </div>
  271. </body>
  272. <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
  273. <script src="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
  274. <script src="https://cdn.bootcdn.net/ajax/libs/jquery-timeago/1.6.7/jquery.timeago.min.js"></script>
  275. <script src="https://cdn.bootcdn.net/ajax/libs/jquery-timeago/1.6.7/locales/jquery.timeago.zh-CN.js"></script>
  276. <script>
  277. function like(toot) {
  278. if ($(`#like-${toot} svg`).hasClass("liked")) {
  279. alert('赞都赞了,别撤回嘛');
  280. return;
  281. }
  282. $.ajax({
  283. type: 'POST',
  284. url: toot + '/like',
  285. success: (result, status, xhr) => {
  286. console.log(result + ' : ' + status);
  287. $(`#like-${toot} span`).text(result);
  288. $(`#like-${toot} svg`).toggleClass("like liked");
  289. },
  290. error: (xhr, status, error) => {
  291. alert(error + ': ' + xhr.responseText);
  292. }
  293. });
  294. }
  295. $(document).ready(function(){
  296. if(window.innerWidth > 1000)
  297. showNew();
  298. $('.timeago').timeago();
  299. });
  300. </script>
  301. </html>