lrf402788946 5 лет назад
Родитель
Сommit
e305e27acc
100 измененных файлов с 3772 добавлено и 12195 удалено
  1. 2 0
      .env
  2. 33 0
      .eslintrc.js
  3. 0 12035
      package-lock.json
  4. 10 1
      package.json
  5. 6 0
      public/static/css/bootstrap.min.css
  6. 301 0
      public/static/css/iconfont.css
  7. 97 0
      public/static/css/mubu2017.css
  8. 2233 0
      public/static/css/style.css
  9. 233 0
      public/static/css/style1.css
  10. 248 0
      public/static/home.html
  11. BIN
      public/static/images/06.gif
  12. BIN
      public/static/images/1.jpg
  13. BIN
      public/static/images/batb.png
  14. BIN
      public/static/images/beijing.jpg
  15. BIN
      public/static/images/bg.jpg
  16. BIN
      public/static/images/bg2.png
  17. BIN
      public/static/images/bg_shop (1).png
  18. BIN
      public/static/images/bg_shop.png
  19. BIN
      public/static/images/logo.png
  20. BIN
      public/static/images/logo20.png
  21. BIN
      public/static/images/logostbrain.png
  22. BIN
      public/static/images/main1.png
  23. BIN
      public/static/images/main2.png
  24. BIN
      public/static/images/mubu_1.jpg
  25. BIN
      public/static/images/mubu_1_s.jpg
  26. BIN
      public/static/images/mubu_2.png
  27. BIN
      public/static/images/mubu_2_s.png
  28. BIN
      public/static/images/mubu_3_s.png
  29. BIN
      public/static/images/mubu_left.jpg
  30. BIN
      public/static/images/mubu_left_s.jpg
  31. BIN
      public/static/images/mubu_right.jpg
  32. BIN
      public/static/images/mubu_right_s.jpg
  33. BIN
      public/static/images/mubu_yh_1.png
  34. BIN
      public/static/images/mubu_yh_2.png
  35. BIN
      public/static/images/nyear-wwwa5.png
  36. BIN
      public/static/images/people.png
  37. BIN
      public/static/images/top_3.png
  38. BIN
      public/static/images/top_bg.png
  39. BIN
      public/static/images/zwfwlogo.png
  40. BIN
      public/static/images/测试图片.jpg
  41. 2 0
      public/static/js/jquery-1.8.3.min.js
  42. 11 0
      public/static/js/particles.min.js
  43. 32 0
      public/static/js/tabs.js
  44. 37 0
      public/static/liveIndex.html
  45. 11 22
      src/App.vue
  46. BIN
      src/assets/live/06.gif
  47. BIN
      src/assets/live/1.jpg
  48. BIN
      src/assets/live/beijing.jpg
  49. BIN
      src/assets/live/bg.jpg
  50. BIN
      src/assets/live/changyong1.jpg
  51. BIN
      src/assets/live/changyong2.jpg
  52. BIN
      src/assets/live/changyong3.jpg
  53. BIN
      src/assets/live/changyong4.jpg
  54. BIN
      src/assets/live/changyong5.jpg
  55. BIN
      src/assets/live/changyong6.jpg
  56. BIN
      src/assets/live/d10_fbb1.png
  57. BIN
      src/assets/live/gongzhong1.jpg
  58. BIN
      src/assets/live/gongzhong2.jpg
  59. BIN
      src/assets/live/gongzhong3.jpg
  60. BIN
      src/assets/live/gongzhong4.jpg
  61. BIN
      src/assets/live/gongzhong5.jpg
  62. BIN
      src/assets/live/gongzhong6.jpg
  63. BIN
      src/assets/live/logo.png
  64. BIN
      src/assets/live/logo20.png
  65. BIN
      src/assets/live/main1.png
  66. BIN
      src/assets/live/main2.png
  67. BIN
      src/assets/live/main3.png
  68. BIN
      src/assets/live/mubu_1.jpg
  69. BIN
      src/assets/live/mubu_1_s.jpg
  70. BIN
      src/assets/live/mubu_2.png
  71. BIN
      src/assets/live/mubu_3_s.png
  72. BIN
      src/assets/live/mubu_left.jpg
  73. BIN
      src/assets/live/mubu_left_s.jpg
  74. BIN
      src/assets/live/mubu_right.jpg
  75. BIN
      src/assets/live/mubu_right_s.jpg
  76. BIN
      src/assets/live/mubu_yh_1.png
  77. BIN
      src/assets/live/mubu_yh_2.png
  78. BIN
      src/assets/live/nyear-wwwa5.png
  79. BIN
      src/assets/live/top_3.png
  80. BIN
      src/assets/live/top_bg.png
  81. BIN
      src/assets/live/zhengwu1.jpg
  82. BIN
      src/assets/live/zhengwu2.jpg
  83. BIN
      src/assets/live/zhengwu3.jpg
  84. BIN
      src/assets/live/zhengwu4.jpg
  85. BIN
      src/assets/live/zhengwu5.jpg
  86. BIN
      src/assets/live/zhengwu6.jpg
  87. BIN
      src/assets/live/zhengwu7.jpg
  88. BIN
      src/assets/live/zhengwu8.jpg
  89. BIN
      src/assets/live/测试图片.jpg
  90. 0 130
      src/components/HelloWorld.vue
  91. 50 0
      src/components/pagination.vue
  92. 119 0
      src/components/upload.vue
  93. 82 0
      src/components/wang-editor.vue
  94. 50 0
      src/layout/live/foot.vue
  95. 42 0
      src/layout/live/frame.vue
  96. 100 0
      src/layout/live/head.vue
  97. 15 7
      src/main.js
  98. 19 0
      src/plugins/axios.js
  99. 39 0
      src/plugins/check-res.js
  100. 0 0
      src/plugins/element.js

+ 2 - 0
.env

@@ -0,0 +1,2 @@
+VUE_APP_AXIOS_BASE_URL = ''
+VUE_APP_ROUTER="/platlive"

+ 33 - 0
.eslintrc.js

@@ -0,0 +1,33 @@
+// https://eslint.org/docs/user-guide/configuring
+
+module.exports = {
+  root: true,
+  env: {
+    node: true,
+  },
+  extends: ['plugin:vue/essential', '@vue/prettier'],
+  plugins: ['vue'],
+  rules: {
+    'max-len': [
+      'warn',
+      {
+        code: 250,
+      },
+    ],
+    'no-unused-vars': 'off',
+    'no-console': 'off',
+    'prettier/prettier': [
+      'warn',
+      {
+        singleQuote: true,
+        trailingComma: 'es5',
+        bracketSpacing: true,
+        jsxBracketSameLine: true,
+        printWidth: 160,
+      },
+    ],
+  },
+  parserOptions: {
+    parser: 'babel-eslint',
+  },
+};

Разница между файлами не показана из-за своего большого размера
+ 0 - 12035
package-lock.json


+ 10 - 1
package.json

@@ -8,10 +8,19 @@
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
+    "@stomp/stompjs": "^5.4.4",
+    "axios": "^0.19.2",
     "core-js": "^3.6.4",
+    "element-ui": "^2.13.1",
+    "jsonwebtoken": "^8.5.1",
+    "loadsh": "0.0.4",
+    "moment": "^2.24.0",
+    "naf-core": "^0.1.2",
     "vue": "^2.6.11",
+    "vue-meta": "^2.3.3",
     "vue-router": "^3.1.6",
-    "vuex": "^3.1.3"
+    "vuex": "^3.1.3",
+    "wangeditor": "^3.1.1"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "^4.3.0",

Разница между файлами не показана из-за своего большого размера
+ 6 - 0
public/static/css/bootstrap.min.css


Разница между файлами не показана из-за своего большого размера
+ 301 - 0
public/static/css/iconfont.css


+ 97 - 0
public/static/css/mubu2017.css

@@ -0,0 +1,97 @@
+html,body,div,p,span,h1,h2,h3,h4,p,a, em,font,img,strong,dl,dt,dd,ul,li{margin:0; padding:0; font-family:"Microsoft YaHei";}
+html,body{height:100%; font-size:12px;}    
+ul,ol{list-style:none;}
+ul li{list-style-type:none;}
+img{border:0;}    
+em,i{font-style:normal;}
+.f_r,.fr{float:right;}
+.f_l,.fl{float:left;}
+canvas { cursor:crosshair; display:block;}
+.mubu{ background:url(../images/mubu_1_s.jpg) no-repeat top center; min-width:960px;height:99.9%;}
+.mubu_main{ width:960px; margin:0 auto; text-align:center; padding-top:300px; }
+.mubu_main h1{ font-size:50px; color:#f1ea2e; text-shadow:2px 2px 5px #000; line-height:1.5em; height:1.5em; overflow:hidden;}
+.mubu_main h2{ font-size:40px; color:#f1ea2e; text-shadow:2px 2px 5px #000; line-height:1.5em; height:1.5em; overflow:hidden; margin-bottom:30px;}
+.mubu_main p{ font-size:24px; line-height:1.5em; height:1.5em; overflow:hidden; color:#fff; text-shadow:2px 2px 5px #000;}
+.mubu_main p.into{ margin-top:50px; height:120px;}
+.mubu_top{ background:url(../images/mubu_2_s.png) no-repeat top center; position:fixed; top:0; left:0; height:150px; width:100%;}
+.mubu_left{ background:url(../images/mubu_left_s.jpg) no-repeat; width:720px; height:100%; position:fixed; top:0; left:-720px; -webkit-animation:mubu_dh_1 5s linear; animation:mubu_dh_1 8s linear forwards; display:none\9;}
+.mubu_right{ background:url(../images/mubu_right_s.jpg) no-repeat; width:720px; height:100%; position:fixed; top:0; right:-720px; -webkit-animation:mubu_dh_2 5s linear; animation:mubu_dh_2 8s linear forwards; display:none\9;}
+@-webkit-keyframes mubu_dh_1 {
+	0%{left:0;}
+	75% { left:-540px; opacity:100;}
+	100% { left:-720px; opacity:0; display:none;}
+}
+@keyframes mubu_dh_1 {
+	0% { left:0;}
+	75% { left:-540px; opacity:100;}
+	100% { left:-720px; opacity:0; display:none;}
+}
+@-webkit-keyframes mubu_dh_2 {
+    0% { right:0;}
+	75% { right:-540px; opacity:100;}
+	100% { right:-720px; opacity:0; display:none;}
+}
+@keyframes mubu_dh_2 {
+    0% { right:0;}
+	75% { right:-540px; opacity:100;}
+	100% { right:-720px; opacity:0; display:none;}
+}
+.mubu .yanhua2 {width: 100px;height: 100px; display:block; overflow: hidden;background: url(../images/mubu_yh_1.png) no-repeat 0 0; position:absolute; top:300px; left:70%; animation: fireworksfn 5s linear infinite;-webkit-animation: fireworksfn 3s linear infinite;-moz-animation: fireworksfn 3s linear infinite;-ms-animation: fireworksfn 3s linear infinite;-o-animation: fireworksfn 1.5s infinite; display:none\9;}
+.mubu .yanhua3 {width: 100px;height: 100px; display:block; overflow: hidden;background: url(../images/mubu_yh_2.png) no-repeat 0 0; position:absolute; top:250px; left:25%; animation: fireworksfn 4s linear infinite;-webkit-animation: fireworksfn 4s linear infinite;-moz-animation: fireworksfn 4s linear infinite;-ms-animation: fireworksfn 4s linear infinite;-o-animation: fireworksfn 1.5s infinite; display:none\9;}
+.mubu .yanhua4 {width: 70px;height: 70px; display:block; overflow: hidden;background: url(../images/nyear-wwwa5.png) no-repeat -6px -1px; position:absolute; top:250px; left:50%; animation: fireworksfn 3s linear infinite;-webkit-animation: fireworksfn 4s linear infinite;-moz-animation: fireworksfn 5s linear infinite;-ms-animation: fireworksfn 5s linear infinite;-o-animation: fireworksfn 1.5s infinite; display:none\9;}
+@media (min-width:1440px){ 
+.mubu{ background:url(../images/mubu_1.jpg) no-repeat top center; height:99.9%;}
+.mubu_main{ width:1150px; margin:0 auto; text-align:center; padding-top:300px; }
+.mubu_main h1{ font-size:50px; color:#f1ea2e; text-shadow:2px 2px 5px #000; line-height:1.5em; height:1.5em; overflow:hidden;}
+.mubu_main h2{ font-size:40px; color:#f1ea2e; text-shadow:2px 2px 5px #000; line-height:1.5em; height:1.5em; overflow:hidden; margin-bottom:30px;}
+.mubu_main p{ font-size:24px; line-height:1.5em; height:1.5em; overflow:hidden; color:#fff; text-shadow:2px 2px 5px #000;}
+.mubu_main p.into{ margin-top:50px; height:120px;}
+.mubu_top{ background:url(../images/mubu_2.png) no-repeat top center; position:fixed; top:0; left:0; height:200px; width:100%;}
+.mubu_left{ background:url(../images/mubu_left.jpg) no-repeat; width:960px; height:100%; position:fixed; top:0;left:-960px; -webkit-animation:mubu_dh_1 5s ease-in; animation:mubu_dh_1 8s linear forwards; display:none\9;}
+.mubu_right{ background:url(../images/mubu_right.jpg) no-repeat; width:960px; height:100%; position:fixed; top:0; right:-960px; -webkit-animation:mubu_dh_2 5s ease-in; animation:mubu_dh_2 8s linear forwards; display:none\9;}
+@-webkit-keyframes mubu_dh_1 {
+    0% { left:0;}
+	75% { left:-720px; opacity:100;}
+	100% { left:-960px; opacity:0; display:none;}
+}
+@keyframes mubu_dh_1 {
+    0% { left:0;}
+	75% { left:-720px; opacity:100;}
+	100% { left:-960px; opacity:0; display:none;}
+}
+@-webkit-keyframes mubu_dh_2 {
+    0% { right:0;}
+	75% { right:-720px; opacity:100;}
+	100% { right:-960px; opacity:0; display:none;}
+}
+@keyframes mubu_dh_2 {
+    0% { right:0;}
+	75% { right:-720px; opacity:100;}
+	100% { right:-960px; opacity:0; display:none;}
+}
+.mubu .yanhua2 {width: 100px;height: 100px; display:block; overflow: hidden;background: url(../images/mubu_yh_1.png) no-repeat 0 0; position:absolute; top:450px; left:70%; animation: fireworksfn 5s linear infinite;-webkit-animation: fireworksfn 3s linear infinite;-moz-animation: fireworksfn 3s linear infinite;-ms-animation: fireworksfn 3s linear infinite;-o-animation: fireworksfn 1.5s infinite;}
+.mubu .yanhua3 {width: 100px;height: 100px; display:block; overflow: hidden;background: url(../images/mubu_yh_2.png) no-repeat 0 0; position:absolute; top:350px; left:30%; animation: fireworksfn 4s linear infinite;-webkit-animation: fireworksfn 4s linear infinite;-moz-animation: fireworksfn 4s linear infinite;-ms-animation: fireworksfn 4s linear infinite;-o-animation: fireworksfn 1.5s infinite;}
+.mubu .yanhua4 {width: 70px;height: 70px; display:block; overflow: hidden;background: url(../images/nyear-wwwa5.png) no-repeat -6px -1px; position:absolute; top:400px; left:50%; animation: fireworksfn 3s linear infinite;-webkit-animation: fireworksfn 4s linear infinite;-moz-animation: fireworksfn 5s linear infinite;-ms-animation: fireworksfn 5s linear infinite;-o-animation: fireworksfn 1.5s infinite;}
+}
+
+/*ÑÌ»¨*/
+@keyframes fireworksfn{
+	0%{opacity:1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}
+	50%{opacity:1;-webkit-transform:scale(2);-moz-transform:scale(2);-ms-transform:scale(2);-o-transform:scale(2);transform:scale(2)}
+	100%{opacity:0;-webkit-transform:scale(4);-moz-transform:scale(4);-ms-transform:scale(4);-o-transform:scale(4);transform:scale(4)}
+	}
+@-moz-keyframes fireworksfn{
+	0%{opacity:1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}
+	50%{opacity:1;-webkit-transform:scale(2);-moz-transform:scale(2);-ms-transform:scale(2);-o-transform:scale(2);transform:scale(2)}
+	100%{opacity:0;-webkit-transform:scale(4);-moz-transform:scale(4);-ms-transform:scale(4);-o-transform:scale(4);transform:scale(4)}
+	}
+@-webkit-keyframes fireworksfn{
+	0%{opacity:1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}
+	50%{opacity:1;-webkit-transform:scale(2);-moz-transform:scale(2);-ms-transform:scale(2);-o-transform:scale(2);transform:scale(2)}
+	100%{opacity:0;-webkit-transform:scale(4);-moz-transform:scale(4);-ms-transform:scale(4);-o-transform:scale(4);transform:scale(4)}
+	}
+@-o-keyframes fireworksfn{
+	0%{opacity:1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}
+	50%{opacity:1;-webkit-transform:scale(2);-moz-transform:scale(2);-ms-transform:scale(2);-o-transform:scale(2);transform:scale(2)}
+	100%{opacity:0;-webkit-transform:scale(4);-moz-transform:scale(4);-ms-transform:scale(4);-o-transform:scale(4);transform:scale(4)}
+	}

Разница между файлами не показана из-за своего большого размера
+ 2233 - 0
public/static/css/style.css


+ 233 - 0
public/static/css/style1.css

@@ -0,0 +1,233 @@
+:root {
+	font-size: calc(16px + (20 - 16) * (100vw - 320px)/(980 - 320));
+	--rotateTimes: 0;
+}
+
+nav,
+ul,
+li {
+	transform-style: preserve-3d;
+}
+
+nav,
+li {
+	position: absolute;
+	top: 30%;
+	left: 50%;
+}
+
+nav,
+li a {
+	border-radius: 50%;
+}
+
+nav {
+	width: 100em;
+	height: 70em;
+	transform: translate(-50%, -50%) rotateX(75deg);
+	position: relative;
+}
+
+ul,
+li a {
+	width: 100%;
+	height: 100%;
+}
+
+ul {
+	list-style: none;
+}
+
+li {
+	animation: idle 4s ease-in-out infinite;
+	text-align: center;
+	width: 15em;
+	height: 15em;
+	transform: translate(-50%, -50%);
+}
+
+li a {
+	box-shadow: 0 0 0 0.1em #0cf inset, 0 0 1em #0cf inset;
+	color: currentColor;
+	display: inline-block;
+	text-decoration: none;
+	transition: transform 0.4s linear, box-shadow 0.15s linear, margin 0.1s linear, width 0.1s linear, height 0.1s linear;
+}
+
+li a span {
+	transition: color 0.15s linear;
+}
+
+li a:before {
+	background-color: #fff;
+	border-radius: 50%;
+	content: "";
+	display: block;
+	opacity: 0.5;
+	position: absolute;
+	top: 2.75em;
+	left: 3.75em;
+	width: 1em;
+	height: 0.5em;
+	transform: rotate(-45deg);
+}
+
+li a:focus,
+li a.current {
+	box-shadow: 0 0 0 0.1em #ff0 inset, 0 0 1em #ff0 inset;
+	outline: 0;
+}
+
+li a:focus span,
+li a.current span {
+	color: #ff0;
+}
+
+li a:hover {
+	margin: -5% 0 0 -5%;
+	width: 110%;
+	height: 110%;
+	box-shadow: 0 0 0 0.1em #ff0 inset, 0 0 1em #ff0 inset;
+}
+
+li a:hover svg {
+	width: 3em;
+	height: 3em;
+}
+
+@media (prefers-reduced-motion) {
+	li {
+		animation: none;
+	}
+}
+
+svg {
+	display: block;
+	margin: 1.25em auto 1.5em auto;
+	transition: width 0.1s linear, height 0.1s linear;
+	width: 2.5em;
+	height: 2.5em;
+}
+
+/* Position bubbles */
+li:nth-of-type(1) {
+	animation-delay: 0s;
+}
+
+li:nth-of-type(1) a {
+	transform: rotate(calc(0deg + var(--rotateTimes) * 51.4285714286deg)) translateY(9em) rotate(calc(0deg - var(--rotateTimes) * 51.4285714286deg)) rotateX(-75deg);
+}
+
+li:nth-of-type(2) {
+	animation-delay: -0.5s;
+}
+
+li:nth-of-type(2) a {
+	transform: rotate(calc(-51.4285714286deg + var(--rotateTimes) * 51.4285714286deg)) translateY(9em) rotate(calc(51.4285714286deg - var(--rotateTimes) * 51.4285714286deg)) rotateX(-75deg);
+}
+
+li:nth-of-type(3) {
+	animation-delay: -1s;
+}
+
+li:nth-of-type(3) a {
+	transform: rotate(calc(-102.8571428571deg + var(--rotateTimes) * 51.4285714286deg)) translateY(9em) rotate(calc(102.8571428571deg - var(--rotateTimes) * 51.4285714286deg)) rotateX(-75deg);
+}
+
+li:nth-of-type(4) {
+	animation-delay: -1.5s;
+}
+
+li:nth-of-type(4) a {
+	transform: rotate(calc(-154.2857142857deg + var(--rotateTimes) * 51.4285714286deg)) translateY(9em) rotate(calc(154.2857142857deg - var(--rotateTimes) * 51.4285714286deg)) rotateX(-75deg);
+}
+
+li:nth-of-type(5) {
+	animation-delay: -2s;
+}
+
+li:nth-of-type(5) a {
+	transform: rotate(calc(-205.7142857143deg + var(--rotateTimes) * 51.4285714286deg)) translateY(9em) rotate(calc(205.7142857143deg - var(--rotateTimes) * 51.4285714286deg)) rotateX(-75deg);
+}
+
+/* Animations */
+.rise {
+	animation: rise 1s ease-out;
+}
+
+.rise a {
+	animation: fadeOut 1s ease-out;
+}
+
+.rise a.pop {
+	animation: pop 1s linear;
+}
+
+.rise a.pop svg,
+.rise a.pop span {
+	visibility: hidden;
+}
+
+@keyframes rise {
+	from {
+		transform: translateZ(0);
+	}
+
+	15% {
+		transform: translateZ(-1em);
+	}
+
+	to {
+		transform: translateZ(35em);
+	}
+}
+
+@keyframes fadeOut {
+
+	from,
+	15% {
+		opacity: 1;
+	}
+
+	50%,
+	to {
+		opacity: 0;
+	}
+}
+
+@keyframes pop {
+	from {
+		margin: -5% 0 0 -5%;
+		width: 110%;
+		height: 110%;
+		opacity: 1;
+	}
+
+	10%,
+	to {
+		margin: -20% 0 0 -20%;
+		width: 140%;
+		height: 140%;
+		opacity: 0;
+	}
+}
+
+@keyframes idle {
+
+	from,
+	to {
+		transform: translate(-50%, -48%);
+	}
+
+	25% {
+		transform: translate(-52%, -50%);
+	}
+
+	50% {
+		transform: translate(-50%, -52%);
+	}
+
+	75% {
+		transform: translate(-48%, -50%);
+	}
+}

+ 248 - 0
public/static/home.html

@@ -0,0 +1,248 @@
+<html>
+	<head>
+		<title>欢迎来到吉林省计算机中心科技服务平台</title>
+		<meta charset="utf-8" />
+		<meta name="renderer" content="webkit">
+		<meta http-equiv="X-UA-Compatible" content="IE=edge">
+		<meta content="width=device-width, initial-scale=1" name="viewport" />
+		<meta content="" name="description" />
+		<meta content="" name="author" />
+		<link rel="stylesheet" type="text/css" href="css/style.css" />
+		<link rel="stylesheet" type="text/css" href="css/style1.css" />
+		<link rel="stylesheet" type="text/css" href="css/iconfont.css"/>
+	</head>
+	<body style="margin: 0 !important;">
+		<div style="width: 100vw; height: 100vh; background-color:aliceblue; background-image: url(images/bg2.png); background-size: cover">
+			<div class="home">
+				<div class="w_0100">
+					<div class="w_1200">
+						<div class="homeTop">
+							<div class="homeTopInfo">
+								<span>欢迎来到吉林省计算机中心科技服务平台</span>
+								<button type="button">登录</button>
+								<button type="button">注册</button>
+							</div>
+							<div class="homeTopLogo">
+								<img src="images/logo.png">
+								<span>吉林省计算机中心科技服务平台</span>
+							</div>
+						</div>
+						<div class="homeMain">
+							<nav>
+								<ul>
+									<li class="live">
+										<a href="../live/hall/index" target="_blank" data-item="0">
+											<i class="iconfont icon-zhibo"></i>
+											<p>直播大厅</p>
+										</a>
+									</li>
+									<li class="super">
+										<a href="../live/market" target="_blank" data-item="1">
+											<i class="iconfont icon-gouwu-2"></i>
+											<p>科技超市</p>
+										</a>
+									</li>
+									<li class="service">
+										<a href="../live/service" target="_blank" data-item="2">
+											<i class="iconfont icon-fuwu"></i>
+											<p>创新服务</p>
+										</a>
+									</li>
+									<li class="dynamic">
+										<a href="../live/dynamic" target="_blank" data-item="3">
+											<i class="iconfont icon-icon_A"></i>
+											<p>动态监测</p>
+										</a>
+									</li>
+									<li class="technocal">
+										<a href="../live/technical" target="_blank" data-item="4">
+											<i class="iconfont icon-peixun"></i>
+											<p>技术培训</p>
+										</a>
+									</li>
+								</ul>
+							</nav>
+						</div>
+						<div class="homeDown">
+              <p>版权所有:吉林省技术算中心</p>
+              <p>
+                <span>技术支持:长春福瑞科技有限公司</span>
+                &nbsp;&nbsp;&nbsp;&nbsp;
+                <span>邮编:130000</span>
+                &nbsp;&nbsp;&nbsp;&nbsp;
+                <span>传真:239823982</span>
+              </p>
+              <p>
+                <span>地址:吉林省长春市朝阳区前进大街1244号</span>
+                &nbsp;&nbsp;&nbsp;&nbsp;
+                <span>电话:0134-1234567</span>
+                &nbsp;&nbsp;&nbsp;&nbsp;
+                <span>邮箱:123456@163.com</span>
+              </p>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<div id="particles-js" style="position: fixed; height: 100%; width: 100%;top:0px">
+			<canvas class="particles-js-canvas-el"></canvas>
+		</div>
+		<script src="./js/particles.min.js" type="text/javascript" charset="utf-8"></script>
+		<script>
+			/* ---- particles.js config ---- */
+
+			particlesJS("particles-js", {
+				"particles": {
+					"number": {
+						"value": 80,
+						"density": {
+							"enable": true,
+							"value_area": 1200
+						}
+					},
+					"color": {
+						"value": "#ffffff"
+					},
+					"shape": {
+						"type": "circle",
+						"stroke": {
+							"width": 0,
+							"color": "#000000"
+						},
+						"polygon": {
+							"nb_sides": 5
+						},
+						"image": {
+							"src": "img/github.svg",
+							"width": 100,
+							"height": 100
+						}
+					},
+					"opacity": {
+						"value": 0.5,
+						"random": false,
+						"anim": {
+							"enable": false,
+							"speed": 1,
+							"opacity_min": 0.1,
+							"sync": false
+						}
+					},
+					"size": {
+						"value": 3,
+						"random": true,
+						"anim": {
+							"enable": false,
+							"speed": 40,
+							"size_min": 0.1,
+							"sync": false
+						}
+					},
+					"line_linked": {
+						"enable": true,
+						"distance": 150,
+						"color": "#ffffff",
+						"opacity": 0.4,
+						"width": 1
+					},
+					"move": {
+						"enable": true,
+						"speed": 3,
+						"direction": "none",
+						"random": false,
+						"straight": false,
+						"out_mode": "out",
+						"bounce": false,
+						"attract": {
+							"enable": false,
+							"rotateX": 600,
+							"rotateY": 1200
+						}
+					}
+				},
+				"interactivity": {
+					"detect_on": "canvas",
+					"events": {
+						"onhover": {
+							"enable": false,
+							"mode": "grab"
+						},
+						"onclick": {
+							"enable": false,
+							"mode": "push"
+						},
+						"resize": true
+					},
+					"modes": {
+						"grab": {
+							"distance": 140,
+							"line_linked": {
+								"opacity": 1
+							}
+						},
+						"bubble": {
+							"distance": 400,
+							"size": 40,
+							"duration": 2,
+							"opacity": 8,
+							"speed": 3
+						},
+						"repulse": {
+							"distance": 200,
+							"duration": 0.4
+						},
+						"push": {
+							"particles_nb": 4
+						},
+						"remove": {
+							"particles_nb": 2
+						}
+					}
+				},
+				"retina_detect": true
+			});
+		</script>
+		<script>
+			document.addEventListener("DOMContentLoaded", function() {
+				let rise = function(trigEl) {
+					trigEl.blur();
+
+					let ul = document.querySelector("ul");
+
+					ul.classList.add("rise");
+					trigEl.classList.add("pop");
+
+					setTimeout(function() {
+						trigEl.focus();
+
+						ul.classList.remove("rise");
+						trigEl.classList.remove("pop");
+					}, 1000);
+				};
+
+				this.querySelectorAll("li a").forEach(function(el) {
+					let rt = document.querySelector(":root"),
+						di = +el.getAttribute("data-item");
+
+					el.addEventListener("blur", function() {
+						//var getRt = +window.getComputedStyle(el).getPropertyValue('--rotateTimes');
+						//console.log(getRt);
+						//this.classList.add("current");
+					});
+					el.addEventListener("focus", function() {
+						rt.style.setProperty("--rotateTimes", di);
+						//this.classList.remove("current");
+					});
+					el.addEventListener("dblclick", function() {
+						rise(this);
+					});
+					el.addEventListener("keyup", function(e) {
+						if (e.keyCode === 13) {
+							rise(this);
+						}
+					});
+				});
+			});
+		</script>
+	</body>
+</html>

BIN
public/static/images/06.gif


BIN
public/static/images/1.jpg


BIN
public/static/images/batb.png


BIN
public/static/images/beijing.jpg


BIN
public/static/images/bg.jpg


BIN
public/static/images/bg2.png


BIN
public/static/images/bg_shop (1).png


BIN
public/static/images/bg_shop.png


BIN
public/static/images/logo.png


BIN
public/static/images/logo20.png


BIN
public/static/images/logostbrain.png


BIN
public/static/images/main1.png


BIN
public/static/images/main2.png


BIN
public/static/images/mubu_1.jpg


BIN
public/static/images/mubu_1_s.jpg


BIN
public/static/images/mubu_2.png


BIN
public/static/images/mubu_2_s.png


BIN
public/static/images/mubu_3_s.png


BIN
public/static/images/mubu_left.jpg


BIN
public/static/images/mubu_left_s.jpg


BIN
public/static/images/mubu_right.jpg


BIN
public/static/images/mubu_right_s.jpg


BIN
public/static/images/mubu_yh_1.png


BIN
public/static/images/mubu_yh_2.png


BIN
public/static/images/nyear-wwwa5.png


BIN
public/static/images/people.png


BIN
public/static/images/top_3.png


BIN
public/static/images/top_bg.png


BIN
public/static/images/zwfwlogo.png


BIN
public/static/images/测试图片.jpg


Разница между файлами не показана из-за своего большого размера
+ 2 - 0
public/static/js/jquery-1.8.3.min.js


Разница между файлами не показана из-за своего большого размера
+ 11 - 0
public/static/js/particles.min.js


+ 32 - 0
public/static/js/tabs.js

@@ -0,0 +1,32 @@
+window.onload = function() {
+    var oDiv = document.getElementById("tab");
+    var oLi = oDiv.getElementsByTagName("div")[0].getElementsByTagName("li");
+    var aCon = oDiv.getElementsByTagName("div")[1].getElementsByTagName("div");
+    var timer = null;
+    for (var i = 0; i < oLi.length; i++) {
+        oLi[i].index = i;
+        oLi[i].onmouseover = function() {
+            show(this.index);
+        }
+    }
+    function show(a) {
+        index = a;
+        var alpha = 0;
+        for (var j = 0; j < oLi.length; j++) {
+            oLi[j].className = "";
+            aCon[j].className = "";
+            aCon[j].style.opacity = 0;
+            aCon[j].style.filter = "alpha(opacity=0);";
+        }
+        oLi[index].className = "cur";
+        clearInterval(timer);
+        timer = setInterval(function() {
+            alpha += 2;
+            alpha > 100 && (alpha = 100);
+            aCon[index].style.opacity = alpha / 100;
+            aCon[index].style.filter = "alpha(opacity=" + alpha + ")";
+            alpha == 100 && clearInterval(timer);
+        },
+        5)
+    }
+}

+ 37 - 0
public/static/liveIndex.html

@@ -0,0 +1,37 @@
+
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>吉林省计算机中心</title>
+	<link rel="stylesheet" type="text/css" href="css/style.css"/>
+	<link rel="stylesheet" type="text/css" href="css/mubu2017.css"/>
+	<link rel="stylesheet" type="text/css" href="css/iconfont.css"/>
+    <script src="js/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script>
+</head>
+<body>
+    <div class="mubu">
+        <div class="mubu_main liveIndex">
+			<div class="info">
+				<div class="infoTwo">
+					<div class="infoThree">
+						<img src="./images/logo.png" >
+						<p class="title">吉林省计算机中心科技直播大厅</p>
+						<p>指导单位:吉林省计算机中心</p>
+						<p>主办方:吉林省计算机中心</p>
+						<p>支持单位:长春市福瑞科技有限公司</p>
+            <a href="../live/hall" target="_blink">进入活动现场<i class="iconfont icon-bofang"></i></a>
+            <!-- ../live/hall -->
+					</div>
+				</div>
+			</div>
+        </div>
+        <div class="yanhua2"></div>
+        <div class="yanhua3"></div>
+        <div class="yanhua4"></div>
+    </div>
+    <div class="mubu_left"></div>
+    <div class="mubu_right"></div>
+    <div class="mubu_top"></div>
+</body>
+</html>

+ 11 - 22
src/App.vue

@@ -1,32 +1,21 @@
 <template>
   <div id="app">
-    <div id="nav">
-      <router-link to="/">Home</router-link> |
-      <router-link to="/about">About</router-link>
-    </div>
     <router-view />
   </div>
 </template>
 
 <style lang="less">
-#app {
-  font-family: Avenir, Helvetica, Arial, sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  text-align: center;
-  color: #2c3e50;
+html {
+  overflow-x: hidden;
+  overflow-y: auto;
 }
-
-#nav {
-  padding: 30px;
-
-  a {
-    font-weight: bold;
-    color: #2c3e50;
-
-    &.router-link-exact-active {
-      color: #42b983;
-    }
-  }
+body {
+  margin: 0;
+  overflow-x: hidden;
+}
+.textOver {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
 }
 </style>

BIN
src/assets/live/06.gif


BIN
src/assets/live/1.jpg


BIN
src/assets/live/beijing.jpg


BIN
src/assets/live/bg.jpg


BIN
src/assets/live/changyong1.jpg


BIN
src/assets/live/changyong2.jpg


BIN
src/assets/live/changyong3.jpg


BIN
src/assets/live/changyong4.jpg


BIN
src/assets/live/changyong5.jpg


BIN
src/assets/live/changyong6.jpg


BIN
src/assets/live/d10_fbb1.png


BIN
src/assets/live/gongzhong1.jpg


BIN
src/assets/live/gongzhong2.jpg


BIN
src/assets/live/gongzhong3.jpg


BIN
src/assets/live/gongzhong4.jpg


BIN
src/assets/live/gongzhong5.jpg


BIN
src/assets/live/gongzhong6.jpg


BIN
src/assets/live/logo.png


BIN
src/assets/live/logo20.png


BIN
src/assets/live/main1.png


BIN
src/assets/live/main2.png


BIN
src/assets/live/main3.png


BIN
src/assets/live/mubu_1.jpg


BIN
src/assets/live/mubu_1_s.jpg


BIN
src/assets/live/mubu_2.png


BIN
src/assets/live/mubu_3_s.png


BIN
src/assets/live/mubu_left.jpg


BIN
src/assets/live/mubu_left_s.jpg


BIN
src/assets/live/mubu_right.jpg


BIN
src/assets/live/mubu_right_s.jpg


BIN
src/assets/live/mubu_yh_1.png


BIN
src/assets/live/mubu_yh_2.png


BIN
src/assets/live/nyear-wwwa5.png


BIN
src/assets/live/top_3.png


BIN
src/assets/live/top_bg.png


BIN
src/assets/live/zhengwu1.jpg


BIN
src/assets/live/zhengwu2.jpg


BIN
src/assets/live/zhengwu3.jpg


BIN
src/assets/live/zhengwu4.jpg


BIN
src/assets/live/zhengwu5.jpg


BIN
src/assets/live/zhengwu6.jpg


BIN
src/assets/live/zhengwu7.jpg


BIN
src/assets/live/zhengwu8.jpg


BIN
src/assets/live/测试图片.jpg


+ 0 - 130
src/components/HelloWorld.vue

@@ -1,130 +0,0 @@
-<template>
-  <div class="hello">
-    <h1>{{ msg }}</h1>
-    <p>
-      For a guide and recipes on how to configure / customize this project,<br />
-      check out the
-      <a href="https://cli.vuejs.org" target="_blank" rel="noopener"
-        >vue-cli documentation</a
-      >.
-    </p>
-    <h3>Installed CLI Plugins</h3>
-    <ul>
-      <li>
-        <a
-          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel"
-          target="_blank"
-          rel="noopener"
-          >babel</a
-        >
-      </li>
-      <li>
-        <a
-          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router"
-          target="_blank"
-          rel="noopener"
-          >router</a
-        >
-      </li>
-      <li>
-        <a
-          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex"
-          target="_blank"
-          rel="noopener"
-          >vuex</a
-        >
-      </li>
-      <li>
-        <a
-          href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint"
-          target="_blank"
-          rel="noopener"
-          >eslint</a
-        >
-      </li>
-    </ul>
-    <h3>Essential Links</h3>
-    <ul>
-      <li>
-        <a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a>
-      </li>
-      <li>
-        <a href="https://forum.vuejs.org" target="_blank" rel="noopener"
-          >Forum</a
-        >
-      </li>
-      <li>
-        <a href="https://chat.vuejs.org" target="_blank" rel="noopener"
-          >Community Chat</a
-        >
-      </li>
-      <li>
-        <a href="https://twitter.com/vuejs" target="_blank" rel="noopener"
-          >Twitter</a
-        >
-      </li>
-      <li>
-        <a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a>
-      </li>
-    </ul>
-    <h3>Ecosystem</h3>
-    <ul>
-      <li>
-        <a href="https://router.vuejs.org" target="_blank" rel="noopener"
-          >vue-router</a
-        >
-      </li>
-      <li>
-        <a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a>
-      </li>
-      <li>
-        <a
-          href="https://github.com/vuejs/vue-devtools#vue-devtools"
-          target="_blank"
-          rel="noopener"
-          >vue-devtools</a
-        >
-      </li>
-      <li>
-        <a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener"
-          >vue-loader</a
-        >
-      </li>
-      <li>
-        <a
-          href="https://github.com/vuejs/awesome-vue"
-          target="_blank"
-          rel="noopener"
-          >awesome-vue</a
-        >
-      </li>
-    </ul>
-  </div>
-</template>
-
-<script>
-export default {
-  name: "HelloWorld",
-  props: {
-    msg: String
-  }
-};
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped lang="less">
-h3 {
-  margin: 40px 0 0;
-}
-ul {
-  list-style-type: none;
-  padding: 0;
-}
-li {
-  display: inline-block;
-  margin: 0 10px;
-}
-a {
-  color: #42b983;
-}
-</style>

+ 50 - 0
src/components/pagination.vue

@@ -0,0 +1,50 @@
+<template>
+  <div id="pagination">
+    <el-row type="flex" align="middle" justify="end" style="padding-top:1rem">
+      <el-col :span="24" style="text-align:right;">
+        <el-pagination
+          background
+          layout="sizes, total, prev, pager, next"
+          :total="total"
+          :page-size="limit"
+          :current-page.sync="currentPage"
+          @current-change="changePage"
+        >
+        </el-pagination>
+        <!-- 
+          :page-sizes="[5, 10, 15, 20, 50, 100]"
+          @size-change="sizeChange"
+         -->
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import _ from 'lodash';
+export default {
+  name: 'pagination',
+  props: {
+    total: { type: Number, default: 0 },
+  },
+  components: {},
+  data: () => {
+    return {
+      currentPage: 1,
+      limit: _.get(this, `$limit`, undefined) !== undefined ? this.$limit : process.env.VUE_APP_LIMIT * 1,
+    };
+  },
+  created() {},
+  methods: {
+    changePage(page) {
+      this.$emit('query', { skip: (page - 1) * this.limit, limit: this.limit });
+    },
+    sizeChange(limit) {
+      this.limit = limit;
+      this.$emit('query', { skip: 0, limit: this.limit });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 119 - 0
src/components/upload.vue

@@ -0,0 +1,119 @@
+<template>
+  <div id="upload">
+    <el-upload
+      v-if="url"
+      ref="upload"
+      :action="url"
+      :list-type="listType"
+      :file-list="fileList"
+      :limit="limit"
+      :on-exceed="outLimit"
+      :on-preview="handlePictureCardPreview"
+      :before-remove="handleRemove"
+      :on-success="onSuccess"
+      :before-upload="beforeUpload"
+      :show-file-list="showList"
+      :accept="accept"
+    >
+      <el-button size="small" type="primary" v-if="isBtn">点击上传</el-button>
+      <template v-else-if="uploadBtn">
+        <el-button type="danger">选择文件</el-button>
+      </template>
+      <template v-else>
+        <i class="el-icon-plus"></i>
+      </template>
+      <template #tip v-if="tip">
+        {{ tip }}
+      </template>
+    </el-upload>
+    <el-dialog :visible.sync="dialogVisible">
+      <img width="100%" :src="dialogImageUrl" alt="" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import _ from 'lodash';
+export default {
+  name: 'upload',
+  props: {
+    url: { type: null },
+    limit: { type: Number },
+    data: { type: null },
+    type: { type: String },
+    isBtn: { type: Boolean, default: false },
+    uploadBtn: { type: Boolean, default: false },
+    showList: { type: Boolean, default: true },
+    accept: { type: String, default: '' },
+    tip: { type: String, default: undefined },
+    listType: { type: String, default: 'picture-card' },
+  },
+  components: {},
+  data: () => ({
+    dialogVisible: false,
+    dialogImageUrl: '',
+    fileList: [],
+  }),
+  created() {
+    if (this.data) {
+      this.defalutProcess(this.data);
+    }
+  },
+  watch: {
+    data: {
+      handler(val) {
+        this.defalutProcess(val);
+      },
+    },
+  },
+  computed: {},
+  methods: {
+    handlePictureCardPreview(file) {
+      this.dialogImageUrl = file.url;
+      this.dialogVisible = false;
+    },
+    handleRemove(file, fileList) {
+      let index = fileList.findIndex(f => _.isEqual(f, file));
+      this.$emit('delete', index);
+      return false;
+    },
+    outLimit() {
+      this.$message.error(`只允许上传${this.limit}个文件`);
+    },
+    onSuccess(response, file, fileList) {
+      //将文件整理好传回父组件
+      this.$emit('upload', { type: this.type, data: { ...response, name: file.name } });
+    },
+    beforeUpload(file) {
+      const sizeLimit = file.size / 1024 / 1024 < 10;
+      if (sizeLimit) return true;
+      else {
+        this.$message.error('文件超出10M!');
+        return false;
+      }
+    },
+    defalutProcess(val) {
+      if (_.isArray(val)) {
+        let newArr = val.map(item => {
+          let object = {};
+          object.name = item.name;
+          object.url = item.url;
+          return object;
+        });
+        this.$set(this, `fileList`, newArr);
+      } else if (_.isObject(val)) {
+        let object = {};
+        if (_.get(val, `url`)) {
+          object.name = val.name;
+          object.url = val.url;
+          this.$set(this, `fileList`, [object]);
+        }
+      } else if (typeof val === 'string') {
+        this.$set(this, `fileList`, [{ name: '附件', url: val }]);
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 82 - 0
src/components/wang-editor.vue

@@ -0,0 +1,82 @@
+<template>
+  <div ref="editor" style="text-align:left;"></div>
+</template>
+<script>
+import E from 'wangeditor';
+
+const menus = [
+  'head', // 标题
+  'bold', // 粗体
+  'fontSize', // 字号
+  'fontName', // 字体
+  'italic', // 斜体
+  'underline', // 下划线
+  'strikeThrough', // 删除线
+  'foreColor', // 文字颜色
+  'backColor', // 背景颜色
+  'link', // 插入链接
+  'list', // 列表
+  'justify', // 对齐方式
+  'quote', // 引用
+  // 'emoticon', // 表情
+  'table', // 表格
+  // 'video', // 插入视频
+  // 'code', // 插入代码
+  'undo', // 撤销
+  'redo', // 重复
+];
+
+export default {
+  name: 'wang-editor',
+  model: {
+    prop: 'value',
+    event: 'change', // 默认为input时间,此处改为change
+  },
+  props: {
+    value: { type: String, required: false, default: '' },
+  },
+  data() {
+    return {
+      editorContent: this.value,
+    };
+  },
+  mounted() {
+    var editor = new E(this.$refs.editor);
+    editor.customConfig.onchange = html => {
+      this.editorContent = html;
+      this.$emit('change', html);
+    };
+    // 自定义菜单配置
+    editor.customConfig.menus = menus;
+    editor.customConfig.zIndex = 0;
+    editor.customConfig.uploadImgServer = '/files/chat/images/upload';
+    editor.customConfig.uploadImgMaxLength = 1;
+    editor.customConfig.uploadImgHooks = {
+      // 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式,可使用该配置
+      // (但是,服务器端返回的必须是一个 JSON 格式字符串!!!否则会报错)
+      customInsert: function(insertImg, result, editor) {
+        // 图片上传并返回结果,自定义插入图片的事件(而不是编辑器自动插入图片!!!)
+        // insertImg 是插入图片的函数,editor 是编辑器对象,result 是服务器端返回的结果
+
+        // 举例:假如上传图片成功后,服务器端返回的是 {url:'....'} 这种格式,即可这样插入图片:
+        var url = result.uri;
+        insertImg(url);
+
+        // result 必须是一个 JSON 格式字符串!!!否则报错
+      },
+    };
+    editor.create();
+    editor.txt.html(this.value);
+  },
+  methods: {
+    getContent: function() {
+      return this.editorContent;
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+/deep/.w-e-text-container {
+  height: 200px !important;
+}
+</style>

+ 50 - 0
src/layout/live/foot.vue

@@ -0,0 +1,50 @@
+<template>
+  <div id="foot">
+    <div class="w_0100">
+      <div class="superdown">
+        <div class="w_1200">
+          <p>版权所有:吉林省技术算中心</p>
+          <p>
+            <span>技术支持:长春福瑞科技有限公司</span>
+            &nbsp;&nbsp;&nbsp;&nbsp;
+            <span>邮编:130000</span>
+            &nbsp;&nbsp;&nbsp;&nbsp;
+            <span>传真:239823982</span>
+          </p>
+          <p>
+            <span>地址:吉林省长春市朝阳区前进大街1244号</span>
+            &nbsp;&nbsp;&nbsp;&nbsp;
+            <span>电话:0134-1234567</span>
+            &nbsp;&nbsp;&nbsp;&nbsp;
+            <span>邮箱:123456@163.com</span>
+          </p>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'foot',
+  props: {},
+  components: {},
+  data: () => {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 42 - 0
src/layout/live/frame.vue

@@ -0,0 +1,42 @@
+<template>
+  <div id="frame">
+    <div class="pz_banner">
+      <live-head></live-head>
+    </div>
+    <div class="pz_main">
+      <router-view></router-view>
+    </div>
+    <div class="pz_down">
+      <live-foot></live-foot>
+    </div>
+  </div>
+</template>
+
+<script>
+import liveHead from '@/layout/live/head.vue';
+import liveFoot from '@/layout/live/foot.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'frame',
+  props: {},
+  components: { liveHead, liveFoot },
+  data: () => {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+@import '~@/style/style.css';
+</style>

+ 100 - 0
src/layout/live/head.vue

@@ -0,0 +1,100 @@
+<template>
+  <div id="heads">
+    <div class="w_0100">
+      <div class="superbanner">
+        <img :src="top_bg" />
+      </div>
+      <div class="supertop">
+        <div class="w_1200">
+          <p>
+            欢迎来到吉林省计算机中心科技平台
+          </p>
+          <p v-if="user && user.id">
+            {{ user.name }}
+          </p>
+          <p v-else>
+            <button type="button">登录</button>
+            <button type="button">注册</button>
+          </p>
+        </div>
+      </div>
+      <div class="superlogo">
+        <div class="w_1200">
+          <a href="home">
+            <img :src="logo" />
+            <span>
+              吉林省计算机中心科技平台
+            </span>
+          </a>
+        </div>
+      </div>
+      <div class="supermenu">
+        <div class="w_1200">
+          <div class="info">
+            <ul>
+              <!-- <li :class="isTab('index') ? 'active' : ''">
+                <a @click="turnTo('home')" target="">首页</a>
+              </li> -->
+              <li class="">
+                <a @click="turnTo('hall_index')">直播大厅</a>
+              </li>
+              <li :class="isTab('market') ? 'active' : ''">
+                <a @click="turnTo('market')" target="">科技超市</a>
+              </li>
+              <li :class="isTab('service') ? 'active' : ''">
+                <a @click="turnTo('service')" target="">创新服务</a>
+              </li>
+              <li :class="isTab('dynamic') ? 'active' : ''">
+                <a @click="turnTo('dynamic')" target="">动态监测</a>
+              </li>
+              <li :class="isTab('technical') ? 'active' : ''">
+                <a @click="turnTo('technical')" target="">技术培训</a>
+              </li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'heads',
+  props: {},
+  components: {},
+  data: () => {
+    return {
+      top_bg: require('@/assets/live/top_bg.png'),
+      logo: require('@/assets/live/logo.png'),
+    };
+  },
+  created() {},
+  methods: {
+    turnTo(type) {
+      if (type == 'index') {
+        console.log('首页未出');
+      } else if (type == 'hall_index') this.$router.push({ path: '/live/hall/index' });
+      else this.$router.push({ path: `/live/${type}` });
+    },
+    isTab(type) {
+      if (type == 'index') return this.$route.path.includes('/live/index');
+      else return this.$route.path.includes(`/live/${type}`);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+@import '~@/style/style.css';
+</style>

+ 15 - 7
src/main.js

@@ -1,12 +1,20 @@
-import Vue from "vue";
-import App from "./App.vue";
-import router from "./router";
-import store from "./store";
-
+import Vue from 'vue';
+import App from './App.vue';
+import router from './router';
+import store from './store';
+import '@/plugins/element.js';
+import '@/plugins/axios';
+import '@/plugins/check-res';
+import '@/plugins/meta';
+import '@/plugins/filters';
+import '@/plugins/loading';
+import '@/plugins/setting';
+import InitStomp from '@/plugins/stomp';
 Vue.config.productionTip = false;
 
 new Vue({
   router,
   store,
-  render: h => h(App)
-}).$mount("#app");
+  render: h => h(App),
+}).$mount('#app');
+InitStomp();

+ 19 - 0
src/plugins/axios.js

@@ -0,0 +1,19 @@
+import Vue from 'vue';
+import AxiosWrapper from '@/util/axios-wrapper';
+
+const Plugin = {
+  install(vue, options) {
+    // 3. 注入组件
+    vue.mixin({
+      created() {
+        if (this.$store && !this.$store.$axios) {
+          this.$store.$axios = this.$axios;
+        }
+      },
+    });
+    // 4. 添加实例方法
+    vue.prototype.$axios = new AxiosWrapper(options);
+  },
+};
+
+Vue.use(Plugin, { baseUrl: process.env.VUE_APP_AXIOS_BASE_URL });

+ 39 - 0
src/plugins/check-res.js

@@ -0,0 +1,39 @@
+/* eslint-disable no-underscore-dangle */
+/* eslint-disable no-param-reassign */
+/* eslint-disable no-unused-vars */
+/* eslint-disable no-shadow */
+import Vue from 'vue';
+import _ from 'lodash';
+import { Message } from 'element-ui';
+
+const vm = new Vue({});
+const Plugin = {
+  install(Vue, options) {
+    // 4. 添加实例方法
+    Vue.prototype.$checkRes = (res, okText, errText) => {
+      let _okText = okText;
+      let _errText = errText;
+      if (!_.isFunction(okText) && _.isObject(okText) && okText != null) {
+        ({ okText: _okText, errText: _errText } = okText);
+      }
+      const { errcode = 0, errmsg } = res || {};
+      if (errcode === 0) {
+        if (_.isFunction(_okText)) {
+          return _okText();
+        }
+        if (_okText) {
+          Message.success(_okText);
+        }
+        return true;
+      }
+      if (_.isFunction(_errText)) {
+        return _errText();
+      }
+      Message.error(_errText || errmsg);
+      // Message({ message: _errText || errmsg, duration: 60000 });
+      return false;
+    };
+  },
+};
+
+Vue.use(Plugin);

+ 0 - 0
src/plugins/element.js


Некоторые файлы не были показаны из-за большого количества измененных файлов