expressa 2.0.18 → 2.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/.circleci/config.yml +21 -21
  2. package/.eslintrc.json +29 -29
  3. package/LICENSE +21 -21
  4. package/README.md +137 -137
  5. package/auth/index.js +76 -76
  6. package/auth/jwt.js +31 -31
  7. package/controllers/collections.js +260 -260
  8. package/controllers/install.js +105 -105
  9. package/controllers/status.js +43 -43
  10. package/controllers/users.js +52 -52
  11. package/cypress/fixtures/example.json +4 -4
  12. package/cypress/integration/0_install_spec.js +8 -8
  13. package/cypress/integration/custom_collections.js +30 -28
  14. package/cypress/integration/home.js +9 -9
  15. package/cypress/integration/settings.js +34 -34
  16. package/cypress/integration/users.js +61 -61
  17. package/cypress/plugins/index.js +17 -17
  18. package/cypress/support/commands.js +69 -54
  19. package/cypress/support/index.js +20 -20
  20. package/cypress/support/util.js +10 -10
  21. package/cypress.config.js +18 -0
  22. package/cypress.json +4 -4
  23. package/db/cached.js +40 -40
  24. package/db/file.js +112 -112
  25. package/db/memory.js +79 -79
  26. package/db/mongo.js +86 -86
  27. package/db/postgres.js +93 -93
  28. package/doc/authentication.md +38 -38
  29. package/doc/automatic-fields.md +12 -12
  30. package/doc/blogexample.md +16 -16
  31. package/doc/custom-endpoints.md +20 -20
  32. package/doc/database.md +23 -23
  33. package/doc/development.md +33 -33
  34. package/doc/listeners.md +103 -103
  35. package/doc/modules.md +8 -8
  36. package/doc/permissions.md +14 -14
  37. package/doc/relationships.md +65 -65
  38. package/doc/testing.md +47 -47
  39. package/doc/uploading-files.md +53 -53
  40. package/index.js +297 -297
  41. package/listeners.js +65 -65
  42. package/listeners_collection_permissions.js +29 -29
  43. package/listeners_users.js +96 -96
  44. package/listeners_validation.js +43 -43
  45. package/middleware/logging.js +30 -30
  46. package/middleware/permissions.js +41 -41
  47. package/modules/access_keys/access_keys.js +32 -32
  48. package/modules/admin/.babelrc +19 -19
  49. package/modules/admin/.editorconfig +14 -14
  50. package/modules/admin/.eslintignore +5 -5
  51. package/modules/admin/.eslintrc.js +197 -197
  52. package/modules/admin/.postcssrc.js +10 -10
  53. package/modules/admin/.travis.yml +5 -5
  54. package/modules/admin/LICENSE +21 -21
  55. package/modules/admin/README.md +88 -88
  56. package/modules/admin/build/build.js +46 -45
  57. package/modules/admin/build/check-versions.js +64 -64
  58. package/modules/admin/build/utils.js +109 -108
  59. package/modules/admin/build/vue-loader.conf.js +5 -5
  60. package/modules/admin/build/webpack.base.conf.js +112 -112
  61. package/modules/admin/build/webpack.dev.conf.js +95 -95
  62. package/modules/admin/build/webpack.prod.conf.js +112 -112
  63. package/modules/admin/config/dev.env.js +8 -8
  64. package/modules/admin/config/index.js +86 -86
  65. package/modules/admin/config/prod.env.js +5 -5
  66. package/modules/admin/dist/css/197.7a90435e.css +7 -0
  67. package/modules/admin/dist/css/197.7a90435e.css.gz +0 -0
  68. package/modules/admin/dist/css/430.8c9b0482.css +8 -0
  69. package/modules/admin/dist/css/430.8c9b0482.css.gz +0 -0
  70. package/modules/admin/dist/css/451.c6646d20.css +1 -0
  71. package/modules/admin/dist/css/451.c6646d20.css.gz +0 -0
  72. package/modules/admin/dist/css/566.7a90435e.css +7 -0
  73. package/modules/admin/dist/css/566.7a90435e.css.gz +0 -0
  74. package/modules/admin/dist/css/569.f7d5c7d5.css +37 -0
  75. package/modules/admin/dist/css/569.f7d5c7d5.css.gz +0 -0
  76. package/modules/admin/dist/css/572.74d8e965.css +34 -0
  77. package/modules/admin/dist/css/572.74d8e965.css.gz +0 -0
  78. package/modules/admin/dist/css/651.e946bda7.css +6 -0
  79. package/modules/admin/dist/css/651.e946bda7.css.gz +0 -0
  80. package/modules/admin/dist/css/750.4086915d.css +2 -0
  81. package/modules/admin/dist/css/750.4086915d.css.gz +0 -0
  82. package/modules/admin/dist/css/950.1fd9d57c.css +7 -0
  83. package/modules/admin/dist/css/950.1fd9d57c.css.gz +0 -0
  84. package/modules/admin/dist/css/app.eba5f5e2.css +592 -0
  85. package/modules/admin/dist/css/app.eba5f5e2.css.gz +0 -0
  86. package/modules/admin/dist/index.html +1 -1
  87. package/modules/admin/dist/static/fonts/element-icons.313f7da.woff +0 -0
  88. package/modules/admin/dist/static/fonts/element-icons.4520188.ttf +0 -0
  89. package/modules/admin/dist/static/js/197.e511d91e.js +1 -0
  90. package/modules/admin/dist/static/js/197.e511d91e.js.gz +0 -0
  91. package/modules/admin/dist/static/js/430.b3941f30.js +1 -0
  92. package/modules/admin/dist/static/js/430.b3941f30.js.gz +0 -0
  93. package/modules/admin/dist/static/js/451.645974a8.js +1 -0
  94. package/modules/admin/dist/static/js/451.645974a8.js.gz +0 -0
  95. package/modules/admin/dist/static/js/460.962d5bc0.js +1 -0
  96. package/modules/admin/dist/static/js/460.962d5bc0.js.gz +0 -0
  97. package/modules/admin/dist/static/js/550.f27feb23.js +1 -0
  98. package/modules/admin/dist/static/js/550.f27feb23.js.gz +0 -0
  99. package/modules/admin/dist/static/js/556.1e08866a.js +1 -0
  100. package/modules/admin/dist/static/js/556.1e08866a.js.gz +0 -0
  101. package/modules/admin/dist/static/js/569.0fecfbee.js +1 -0
  102. package/modules/admin/dist/static/js/569.0fecfbee.js.gz +0 -0
  103. package/modules/admin/dist/static/js/572.13392e1d.js +1 -0
  104. package/modules/admin/dist/static/js/572.13392e1d.js.gz +0 -0
  105. package/modules/admin/dist/static/js/603.7b34a650.js +1 -0
  106. package/modules/admin/dist/static/js/603.7b34a650.js.gz +0 -0
  107. package/modules/admin/dist/static/js/651.564b24b6.js +1 -0
  108. package/modules/admin/dist/static/js/651.564b24b6.js.gz +0 -0
  109. package/modules/admin/dist/static/js/653.02ec1098.js +1 -0
  110. package/modules/admin/dist/static/js/653.02ec1098.js.gz +0 -0
  111. package/modules/admin/dist/static/js/750.50c950da.js +1 -0
  112. package/modules/admin/dist/static/js/750.50c950da.js.gz +0 -0
  113. package/modules/admin/dist/static/js/950.d4ff0a18.js +1 -0
  114. package/modules/admin/dist/static/js/950.d4ff0a18.js.gz +0 -0
  115. package/modules/admin/dist/static/js/app.ea86ae11.js +2 -0
  116. package/modules/admin/dist/static/js/{chunk-libs.06c38828.js.LICENSE.txt → app.ea86ae11.js.LICENSE.txt} +15 -18
  117. package/modules/admin/dist/static/js/app.ea86ae11.js.LICENSE.txt.gz +0 -0
  118. package/modules/admin/dist/static/js/app.ea86ae11.js.gz +0 -0
  119. package/modules/admin/index.html +16 -16
  120. package/modules/admin/package.json +101 -101
  121. package/modules/admin/src/App.vue +11 -11
  122. package/modules/admin/src/api/login.js +26 -26
  123. package/modules/admin/src/api/table.js +9 -9
  124. package/modules/admin/src/components/Breadcrumb/index.vue +79 -79
  125. package/modules/admin/src/components/Hamburger/index.vue +62 -62
  126. package/modules/admin/src/components/JSONEditor.vue +180 -180
  127. package/modules/admin/src/components/SvgIcon/index.vue +43 -43
  128. package/modules/admin/src/icons/index.js +9 -9
  129. package/modules/admin/src/icons/svgo.yml +22 -22
  130. package/modules/admin/src/main.js +42 -42
  131. package/modules/admin/src/permission.js +49 -49
  132. package/modules/admin/src/router/index.js +200 -200
  133. package/modules/admin/src/store/getters.js +11 -11
  134. package/modules/admin/src/store/index.js +17 -17
  135. package/modules/admin/src/store/modules/app.js +43 -43
  136. package/modules/admin/src/store/modules/user.js +104 -104
  137. package/modules/admin/src/styles/element-ui.scss +29 -29
  138. package/modules/admin/src/styles/index.scss +78 -78
  139. package/modules/admin/src/styles/mixin.scss +27 -27
  140. package/modules/admin/src/styles/sidebar.scss +133 -133
  141. package/modules/admin/src/styles/transition.scss +46 -46
  142. package/modules/admin/src/styles/variables.scss +4 -4
  143. package/modules/admin/src/utils/auth.js +15 -15
  144. package/modules/admin/src/utils/index.js +74 -74
  145. package/modules/admin/src/utils/request.js +48 -48
  146. package/modules/admin/src/utils/validate.js +31 -31
  147. package/modules/admin/src/views/404.vue +235 -235
  148. package/modules/admin/src/views/Dev.vue +33 -33
  149. package/modules/admin/src/views/EditDocument.vue +121 -116
  150. package/modules/admin/src/views/Endpoints.vue +279 -279
  151. package/modules/admin/src/views/Home.vue +84 -84
  152. package/modules/admin/src/views/Install.vue +79 -79
  153. package/modules/admin/src/views/ListDocuments.vue +72 -72
  154. package/modules/admin/src/views/ListDocuments2.vue +467 -462
  155. package/modules/admin/src/views/ManageListeners.vue +67 -67
  156. package/modules/admin/src/views/ManageMiddleware.vue +43 -43
  157. package/modules/admin/src/views/ManagePermissions.vue +75 -75
  158. package/modules/admin/src/views/ViewRequest.vue +77 -77
  159. package/modules/admin/src/views/form/index.vue +91 -91
  160. package/modules/admin/src/views/layout/Layout.vue +69 -69
  161. package/modules/admin/src/views/layout/components/AppMain.vue +41 -41
  162. package/modules/admin/src/views/layout/components/Navbar.vue +97 -97
  163. package/modules/admin/src/views/layout/components/Sidebar/Item.vue +29 -29
  164. package/modules/admin/src/views/layout/components/Sidebar/Link.vue +39 -39
  165. package/modules/admin/src/views/layout/components/Sidebar/SidebarItem.vue +103 -103
  166. package/modules/admin/src/views/layout/components/Sidebar/index.vue +62 -62
  167. package/modules/admin/src/views/layout/components/index.js +3 -3
  168. package/modules/admin/src/views/layout/mixin/ResizeHandler.js +41 -41
  169. package/modules/admin/src/views/login/index.vue +195 -195
  170. package/modules/admin/src/views/tree/index.vue +77 -77
  171. package/modules/collections/collections.js +39 -39
  172. package/modules/core/core.js +197 -197
  173. package/modules/logging/logging.js +88 -88
  174. package/modules/permissions/permissions.js +106 -106
  175. package/package.json +59 -59
  176. package/scripts/expressa +12 -12
  177. package/scripts/run_cypress_tests.sh +36 -6
  178. package/scripts/run_db_tests.sh +8 -8
  179. package/test/0-install.js +96 -96
  180. package/test/collections.js +431 -431
  181. package/test/collections.querying.js +288 -288
  182. package/test/db.js +258 -258
  183. package/test/db.strings.js +73 -73
  184. package/test/db.updating.js +144 -144
  185. package/test/logging.js +29 -29
  186. package/test/test.js +93 -93
  187. package/test/testserver.js +17 -17
  188. package/test/testutils.js +136 -136
  189. package/test/users.js +425 -425
  190. package/util.js +522 -522
  191. package/modules/admin/dist/index.html.gz +0 -0
  192. package/modules/admin/dist/static/css/app.9dd57eea.css +0 -1
  193. package/modules/admin/dist/static/css/app.9dd57eea.css.gz +0 -0
  194. package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css +0 -1
  195. package/modules/admin/dist/static/css/chunk-5061.ce0e4bdb.css.gz +0 -0
  196. package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css +0 -1
  197. package/modules/admin/dist/static/css/chunk-5b97.7f9cb53e.css.gz +0 -0
  198. package/modules/admin/dist/static/css/chunk-621e.b826be8d.css +0 -1
  199. package/modules/admin/dist/static/css/chunk-621e.b826be8d.css.gz +0 -0
  200. package/modules/admin/dist/static/css/chunk-656b.9c828b00.css +0 -1
  201. package/modules/admin/dist/static/css/chunk-656b.9c828b00.css.gz +0 -0
  202. package/modules/admin/dist/static/css/chunk-7291.13514e45.css +0 -0
  203. package/modules/admin/dist/static/css/chunk-7291.13514e45.css.gz +0 -0
  204. package/modules/admin/dist/static/css/chunk-7f29.9c828b00.css +0 -1
  205. package/modules/admin/dist/static/css/chunk-7f29.9c828b00.css.gz +0 -0
  206. package/modules/admin/dist/static/css/chunk-9a95.c647a2ef.css +0 -1
  207. package/modules/admin/dist/static/css/chunk-9a95.c647a2ef.css.gz +0 -0
  208. package/modules/admin/dist/static/css/chunk-b423.5f239333.css +0 -0
  209. package/modules/admin/dist/static/css/chunk-b423.5f239333.css.gz +0 -0
  210. package/modules/admin/dist/static/css/chunk-bd5f.aefa49d7.css +0 -1
  211. package/modules/admin/dist/static/css/chunk-bd5f.aefa49d7.css.gz +0 -0
  212. package/modules/admin/dist/static/css/chunk-e374.025d58bb.css +0 -1
  213. package/modules/admin/dist/static/css/chunk-e374.025d58bb.css.gz +0 -0
  214. package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css +0 -1
  215. package/modules/admin/dist/static/css/chunk-elementUI.3d004d9f.css.gz +0 -0
  216. package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css +0 -1
  217. package/modules/admin/dist/static/css/chunk-f075.3a895a1e.css.gz +0 -0
  218. package/modules/admin/dist/static/css/chunk-libs.327ad89e.css +0 -14
  219. package/modules/admin/dist/static/css/chunk-libs.327ad89e.css.gz +0 -0
  220. package/modules/admin/dist/static/fonts/element-icons.6f0a763.ttf +0 -0
  221. package/modules/admin/dist/static/js/app.e9461593.js +0 -1
  222. package/modules/admin/dist/static/js/app.e9461593.js.gz +0 -0
  223. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js +0 -2
  224. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.LICENSE.txt +0 -13
  225. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.LICENSE.txt.gz +0 -0
  226. package/modules/admin/dist/static/js/chunk-09d8.561880e0.js.gz +0 -0
  227. package/modules/admin/dist/static/js/chunk-5061.83e6ccfa.js +0 -1
  228. package/modules/admin/dist/static/js/chunk-5061.83e6ccfa.js.gz +0 -0
  229. package/modules/admin/dist/static/js/chunk-5b97.ac360086.js +0 -1
  230. package/modules/admin/dist/static/js/chunk-5b97.ac360086.js.gz +0 -0
  231. package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js +0 -1
  232. package/modules/admin/dist/static/js/chunk-5e17.a2b69611.js.gz +0 -0
  233. package/modules/admin/dist/static/js/chunk-621e.ccf42393.js +0 -1
  234. package/modules/admin/dist/static/js/chunk-621e.ccf42393.js.gz +0 -0
  235. package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js +0 -1
  236. package/modules/admin/dist/static/js/chunk-656b.9d5b03c0.js.gz +0 -0
  237. package/modules/admin/dist/static/js/chunk-7291.590524e9.js +0 -1
  238. package/modules/admin/dist/static/js/chunk-7291.590524e9.js.gz +0 -0
  239. package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js +0 -1
  240. package/modules/admin/dist/static/js/chunk-7f29.6ffc142e.js.gz +0 -0
  241. package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js +0 -1
  242. package/modules/admin/dist/static/js/chunk-9a95.bdd76583.js.gz +0 -0
  243. package/modules/admin/dist/static/js/chunk-b423.387c504c.js +0 -1
  244. package/modules/admin/dist/static/js/chunk-b423.387c504c.js.gz +0 -0
  245. package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js +0 -1
  246. package/modules/admin/dist/static/js/chunk-bd5f.e9509f10.js.gz +0 -0
  247. package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js +0 -1
  248. package/modules/admin/dist/static/js/chunk-e374.7c87a0dd.js.gz +0 -0
  249. package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js +0 -1
  250. package/modules/admin/dist/static/js/chunk-e7c3.e5df8ceb.js.gz +0 -0
  251. package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js +0 -1
  252. package/modules/admin/dist/static/js/chunk-elementUI.b0c99c08.js.gz +0 -0
  253. package/modules/admin/dist/static/js/chunk-f075.315ceec1.js +0 -1
  254. package/modules/admin/dist/static/js/chunk-f075.315ceec1.js.gz +0 -0
  255. package/modules/admin/dist/static/js/chunk-libs.06c38828.js +0 -2
  256. package/modules/admin/dist/static/js/chunk-libs.06c38828.js.LICENSE.txt.gz +0 -0
  257. package/modules/admin/dist/static/js/chunk-libs.06c38828.js.gz +0 -0
  258. /package/modules/admin/dist/static/img/{404.a57b6f3.png → 404.4cf6930.png} +0 -0
@@ -1,31 +1,31 @@
1
- /**
2
- * Created by jiachenpan on 16/11/18.
3
- */
4
-
5
- export function isvalidUsername(str) {
6
- return true
7
- }
8
-
9
- /* 合法uri*/
10
- export function validateURL(textval) {
11
- const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
12
- return urlregex.test(textval)
13
- }
14
-
15
- /* 小写字母*/
16
- export function validateLowerCase(str) {
17
- const reg = /^[a-z]+$/
18
- return reg.test(str)
19
- }
20
-
21
- /* 大写字母*/
22
- export function validateUpperCase(str) {
23
- const reg = /^[A-Z]+$/
24
- return reg.test(str)
25
- }
26
-
27
- /* 大小写字母*/
28
- export function validatAlphabets(str) {
29
- const reg = /^[A-Za-z]+$/
30
- return reg.test(str)
31
- }
1
+ /**
2
+ * Created by jiachenpan on 16/11/18.
3
+ */
4
+
5
+ export function isvalidUsername(str) {
6
+ return true
7
+ }
8
+
9
+ /* 合法uri*/
10
+ export function validateURL(textval) {
11
+ const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
12
+ return urlregex.test(textval)
13
+ }
14
+
15
+ /* 小写字母*/
16
+ export function validateLowerCase(str) {
17
+ const reg = /^[a-z]+$/
18
+ return reg.test(str)
19
+ }
20
+
21
+ /* 大写字母*/
22
+ export function validateUpperCase(str) {
23
+ const reg = /^[A-Z]+$/
24
+ return reg.test(str)
25
+ }
26
+
27
+ /* 大小写字母*/
28
+ export function validatAlphabets(str) {
29
+ const reg = /^[A-Za-z]+$/
30
+ return reg.test(str)
31
+ }
@@ -1,235 +1,235 @@
1
- <template>
2
- <div class="wscn-http404-container">
3
- <div class="wscn-http404">
4
- <div class="pic-404">
5
- <img class="pic-404__parent" src="@/assets/404_images/404.png" alt="404">
6
- <img class="pic-404__child left" src="@/assets/404_images/404_cloud.png" alt="404">
7
- <img class="pic-404__child mid" src="@/assets/404_images/404_cloud.png" alt="404">
8
- <img class="pic-404__child right" src="@/assets/404_images/404_cloud.png" alt="404">
9
- </div>
10
- <div class="bullshit">
11
- <div class="bullshit__oops">
12
- OOPS!
13
- </div>
14
- <div class="bullshit__info">
15
- 版权所有
16
- <a class="link-type" href="https://wallstreetcn.com" target="_blank">华尔街见闻</a>
17
- </div>
18
- <div class="bullshit__headline">
19
- {{ message }}
20
- </div>
21
- <div class="bullshit__info">
22
- 请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告
23
- </div>
24
- <a href="" class="bullshit__return-home">返回首页</a>
25
- </div>
26
- </div>
27
- </div>
28
- </template>
29
-
30
- <script>
31
-
32
- export default {
33
- name: 'Page404',
34
- computed: {
35
- message() {
36
- return '网管说这个页面你不能进......'
37
- }
38
- }
39
- }
40
- </script>
41
-
42
- <style rel="stylesheet/scss" lang="scss" scoped>
43
- .wscn-http404-container{
44
- transform: translate(-50%,-50%);
45
- position: absolute;
46
- top: 40%;
47
- left: 50%;
48
- }
49
- .wscn-http404 {
50
- position: relative;
51
- width: 1200px;
52
- padding: 0 50px;
53
- overflow: hidden;
54
- .pic-404 {
55
- position: relative;
56
- float: left;
57
- width: 600px;
58
- overflow: hidden;
59
- &__parent {
60
- width: 100%;
61
- }
62
- &__child {
63
- position: absolute;
64
- &.left {
65
- width: 80px;
66
- top: 17px;
67
- left: 220px;
68
- opacity: 0;
69
- animation-name: cloudLeft;
70
- animation-duration: 2s;
71
- animation-timing-function: linear;
72
- animation-fill-mode: forwards;
73
- animation-delay: 1s;
74
- }
75
- &.mid {
76
- width: 46px;
77
- top: 10px;
78
- left: 420px;
79
- opacity: 0;
80
- animation-name: cloudMid;
81
- animation-duration: 2s;
82
- animation-timing-function: linear;
83
- animation-fill-mode: forwards;
84
- animation-delay: 1.2s;
85
- }
86
- &.right {
87
- width: 62px;
88
- top: 100px;
89
- left: 500px;
90
- opacity: 0;
91
- animation-name: cloudRight;
92
- animation-duration: 2s;
93
- animation-timing-function: linear;
94
- animation-fill-mode: forwards;
95
- animation-delay: 1s;
96
- }
97
- @keyframes cloudLeft {
98
- 0% {
99
- top: 17px;
100
- left: 220px;
101
- opacity: 0;
102
- }
103
- 20% {
104
- top: 33px;
105
- left: 188px;
106
- opacity: 1;
107
- }
108
- 80% {
109
- top: 81px;
110
- left: 92px;
111
- opacity: 1;
112
- }
113
- 100% {
114
- top: 97px;
115
- left: 60px;
116
- opacity: 0;
117
- }
118
- }
119
- @keyframes cloudMid {
120
- 0% {
121
- top: 10px;
122
- left: 420px;
123
- opacity: 0;
124
- }
125
- 20% {
126
- top: 40px;
127
- left: 360px;
128
- opacity: 1;
129
- }
130
- 70% {
131
- top: 130px;
132
- left: 180px;
133
- opacity: 1;
134
- }
135
- 100% {
136
- top: 160px;
137
- left: 120px;
138
- opacity: 0;
139
- }
140
- }
141
- @keyframes cloudRight {
142
- 0% {
143
- top: 100px;
144
- left: 500px;
145
- opacity: 0;
146
- }
147
- 20% {
148
- top: 120px;
149
- left: 460px;
150
- opacity: 1;
151
- }
152
- 80% {
153
- top: 180px;
154
- left: 340px;
155
- opacity: 1;
156
- }
157
- 100% {
158
- top: 200px;
159
- left: 300px;
160
- opacity: 0;
161
- }
162
- }
163
- }
164
- }
165
- .bullshit {
166
- position: relative;
167
- float: left;
168
- width: 300px;
169
- padding: 30px 0;
170
- overflow: hidden;
171
- &__oops {
172
- font-size: 32px;
173
- font-weight: bold;
174
- line-height: 40px;
175
- color: #1482f0;
176
- opacity: 0;
177
- margin-bottom: 20px;
178
- animation-name: slideUp;
179
- animation-duration: 0.5s;
180
- animation-fill-mode: forwards;
181
- }
182
- &__headline {
183
- font-size: 20px;
184
- line-height: 24px;
185
- color: #222;
186
- font-weight: bold;
187
- opacity: 0;
188
- margin-bottom: 10px;
189
- animation-name: slideUp;
190
- animation-duration: 0.5s;
191
- animation-delay: 0.1s;
192
- animation-fill-mode: forwards;
193
- }
194
- &__info {
195
- font-size: 13px;
196
- line-height: 21px;
197
- color: grey;
198
- opacity: 0;
199
- margin-bottom: 30px;
200
- animation-name: slideUp;
201
- animation-duration: 0.5s;
202
- animation-delay: 0.2s;
203
- animation-fill-mode: forwards;
204
- }
205
- &__return-home {
206
- display: block;
207
- float: left;
208
- width: 110px;
209
- height: 36px;
210
- background: #1482f0;
211
- border-radius: 100px;
212
- text-align: center;
213
- color: #ffffff;
214
- opacity: 0;
215
- font-size: 14px;
216
- line-height: 36px;
217
- cursor: pointer;
218
- animation-name: slideUp;
219
- animation-duration: 0.5s;
220
- animation-delay: 0.3s;
221
- animation-fill-mode: forwards;
222
- }
223
- @keyframes slideUp {
224
- 0% {
225
- transform: translateY(60px);
226
- opacity: 0;
227
- }
228
- 100% {
229
- transform: translateY(0);
230
- opacity: 1;
231
- }
232
- }
233
- }
234
- }
235
- </style>
1
+ <template>
2
+ <div class="wscn-http404-container">
3
+ <div class="wscn-http404">
4
+ <div class="pic-404">
5
+ <img class="pic-404__parent" src="@/assets/404_images/404.png" alt="404">
6
+ <img class="pic-404__child left" src="@/assets/404_images/404_cloud.png" alt="404">
7
+ <img class="pic-404__child mid" src="@/assets/404_images/404_cloud.png" alt="404">
8
+ <img class="pic-404__child right" src="@/assets/404_images/404_cloud.png" alt="404">
9
+ </div>
10
+ <div class="bullshit">
11
+ <div class="bullshit__oops">
12
+ OOPS!
13
+ </div>
14
+ <div class="bullshit__info">
15
+ 版权所有
16
+ <a class="link-type" href="https://wallstreetcn.com" target="_blank">华尔街见闻</a>
17
+ </div>
18
+ <div class="bullshit__headline">
19
+ {{ message }}
20
+ </div>
21
+ <div class="bullshit__info">
22
+ 请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告
23
+ </div>
24
+ <a href="" class="bullshit__return-home">返回首页</a>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <script>
31
+
32
+ export default {
33
+ name: 'Page404',
34
+ computed: {
35
+ message() {
36
+ return '网管说这个页面你不能进......'
37
+ }
38
+ }
39
+ }
40
+ </script>
41
+
42
+ <style rel="stylesheet/scss" lang="scss" scoped>
43
+ .wscn-http404-container{
44
+ transform: translate(-50%,-50%);
45
+ position: absolute;
46
+ top: 40%;
47
+ left: 50%;
48
+ }
49
+ .wscn-http404 {
50
+ position: relative;
51
+ width: 1200px;
52
+ padding: 0 50px;
53
+ overflow: hidden;
54
+ .pic-404 {
55
+ position: relative;
56
+ float: left;
57
+ width: 600px;
58
+ overflow: hidden;
59
+ &__parent {
60
+ width: 100%;
61
+ }
62
+ &__child {
63
+ position: absolute;
64
+ &.left {
65
+ width: 80px;
66
+ top: 17px;
67
+ left: 220px;
68
+ opacity: 0;
69
+ animation-name: cloudLeft;
70
+ animation-duration: 2s;
71
+ animation-timing-function: linear;
72
+ animation-fill-mode: forwards;
73
+ animation-delay: 1s;
74
+ }
75
+ &.mid {
76
+ width: 46px;
77
+ top: 10px;
78
+ left: 420px;
79
+ opacity: 0;
80
+ animation-name: cloudMid;
81
+ animation-duration: 2s;
82
+ animation-timing-function: linear;
83
+ animation-fill-mode: forwards;
84
+ animation-delay: 1.2s;
85
+ }
86
+ &.right {
87
+ width: 62px;
88
+ top: 100px;
89
+ left: 500px;
90
+ opacity: 0;
91
+ animation-name: cloudRight;
92
+ animation-duration: 2s;
93
+ animation-timing-function: linear;
94
+ animation-fill-mode: forwards;
95
+ animation-delay: 1s;
96
+ }
97
+ @keyframes cloudLeft {
98
+ 0% {
99
+ top: 17px;
100
+ left: 220px;
101
+ opacity: 0;
102
+ }
103
+ 20% {
104
+ top: 33px;
105
+ left: 188px;
106
+ opacity: 1;
107
+ }
108
+ 80% {
109
+ top: 81px;
110
+ left: 92px;
111
+ opacity: 1;
112
+ }
113
+ 100% {
114
+ top: 97px;
115
+ left: 60px;
116
+ opacity: 0;
117
+ }
118
+ }
119
+ @keyframes cloudMid {
120
+ 0% {
121
+ top: 10px;
122
+ left: 420px;
123
+ opacity: 0;
124
+ }
125
+ 20% {
126
+ top: 40px;
127
+ left: 360px;
128
+ opacity: 1;
129
+ }
130
+ 70% {
131
+ top: 130px;
132
+ left: 180px;
133
+ opacity: 1;
134
+ }
135
+ 100% {
136
+ top: 160px;
137
+ left: 120px;
138
+ opacity: 0;
139
+ }
140
+ }
141
+ @keyframes cloudRight {
142
+ 0% {
143
+ top: 100px;
144
+ left: 500px;
145
+ opacity: 0;
146
+ }
147
+ 20% {
148
+ top: 120px;
149
+ left: 460px;
150
+ opacity: 1;
151
+ }
152
+ 80% {
153
+ top: 180px;
154
+ left: 340px;
155
+ opacity: 1;
156
+ }
157
+ 100% {
158
+ top: 200px;
159
+ left: 300px;
160
+ opacity: 0;
161
+ }
162
+ }
163
+ }
164
+ }
165
+ .bullshit {
166
+ position: relative;
167
+ float: left;
168
+ width: 300px;
169
+ padding: 30px 0;
170
+ overflow: hidden;
171
+ &__oops {
172
+ font-size: 32px;
173
+ font-weight: bold;
174
+ line-height: 40px;
175
+ color: #1482f0;
176
+ opacity: 0;
177
+ margin-bottom: 20px;
178
+ animation-name: slideUp;
179
+ animation-duration: 0.5s;
180
+ animation-fill-mode: forwards;
181
+ }
182
+ &__headline {
183
+ font-size: 20px;
184
+ line-height: 24px;
185
+ color: #222;
186
+ font-weight: bold;
187
+ opacity: 0;
188
+ margin-bottom: 10px;
189
+ animation-name: slideUp;
190
+ animation-duration: 0.5s;
191
+ animation-delay: 0.1s;
192
+ animation-fill-mode: forwards;
193
+ }
194
+ &__info {
195
+ font-size: 13px;
196
+ line-height: 21px;
197
+ color: grey;
198
+ opacity: 0;
199
+ margin-bottom: 30px;
200
+ animation-name: slideUp;
201
+ animation-duration: 0.5s;
202
+ animation-delay: 0.2s;
203
+ animation-fill-mode: forwards;
204
+ }
205
+ &__return-home {
206
+ display: block;
207
+ float: left;
208
+ width: 110px;
209
+ height: 36px;
210
+ background: #1482f0;
211
+ border-radius: 100px;
212
+ text-align: center;
213
+ color: #ffffff;
214
+ opacity: 0;
215
+ font-size: 14px;
216
+ line-height: 36px;
217
+ cursor: pointer;
218
+ animation-name: slideUp;
219
+ animation-duration: 0.5s;
220
+ animation-delay: 0.3s;
221
+ animation-fill-mode: forwards;
222
+ }
223
+ @keyframes slideUp {
224
+ 0% {
225
+ transform: translateY(60px);
226
+ opacity: 0;
227
+ }
228
+ 100% {
229
+ transform: translateY(0);
230
+ opacity: 1;
231
+ }
232
+ }
233
+ }
234
+ }
235
+ </style>
@@ -1,33 +1,33 @@
1
- <template>
2
- <div class="app-container">
3
- <h1>Development Tools</h1>
4
- <ul class="list-group">
5
- <li class="list-group-item">
6
- <router-link to="/dev/listeners">
7
- Listeners
8
- </router-link>
9
- </li>
10
- <li class="list-group-item">
11
- <router-link to="/dev/middleware">
12
- Middleware
13
- </router-link>
14
- </li>
15
- <li class="list-group-item">
16
- <router-link to="/dev/requestlogs">
17
- Request Logs
18
- </router-link>
19
- </li>
20
- </ul>
21
- </div>
22
- </template>
23
-
24
- <script>
25
- export default {
26
- name: 'Dev',
27
- data: () => ({
28
- })
29
- }
30
- </script>
31
-
32
- <style scoped>
33
- </style>
1
+ <template>
2
+ <div class="app-container">
3
+ <h1>Development Tools</h1>
4
+ <ul class="list-group">
5
+ <li class="list-group-item">
6
+ <router-link to="/dev/listeners">
7
+ Listeners
8
+ </router-link>
9
+ </li>
10
+ <li class="list-group-item">
11
+ <router-link to="/dev/middleware">
12
+ Middleware
13
+ </router-link>
14
+ </li>
15
+ <li class="list-group-item">
16
+ <router-link to="/dev/requestlogs">
17
+ Request Logs
18
+ </router-link>
19
+ </li>
20
+ </ul>
21
+ </div>
22
+ </template>
23
+
24
+ <script>
25
+ export default {
26
+ name: 'Dev',
27
+ data: () => ({
28
+ })
29
+ }
30
+ </script>
31
+
32
+ <style scoped>
33
+ </style>