Procházet zdrojové kódy

调整登录页面

liqk před 4 roky
rodič
revize
5b8630529f
38 změnil soubory, kde provedl 11221 přidání a 1242 odebrání
  1. 539 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/demo.css
  2. 2925 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/demo_index.html
  3. 491 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.css
  4. 1 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.js
  5. 842 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.json
  6. binární
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.ttf
  7. binární
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.woff
  8. binární
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.woff2
  9. 539 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/demo.css
  10. 2902 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/demo_index.html
  11. 487 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.css
  12. 1 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.js
  13. 835 0
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.json
  14. binární
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.ttf
  15. binární
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.woff
  16. binární
      TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.woff2
  17. binární
      TEAMModelOS/ClientApp/src/assets/image/1-1.jpg
  18. binární
      TEAMModelOS/ClientApp/src/assets/login/1-1.jpg
  19. binární
      TEAMModelOS/ClientApp/src/assets/login/1-2.png
  20. binární
      TEAMModelOS/ClientApp/src/assets/login/1-3.png
  21. binární
      TEAMModelOS/ClientApp/src/assets/login/1-4.png
  22. binární
      TEAMModelOS/ClientApp/src/assets/login/1-5.png
  23. binární
      TEAMModelOS/ClientApp/src/assets/login/1-7.png
  24. binární
      TEAMModelOS/ClientApp/src/assets/login/2-1.png
  25. binární
      TEAMModelOS/ClientApp/src/assets/login/2-2.jpg
  26. binární
      TEAMModelOS/ClientApp/src/assets/login/3-1.jpg
  27. binární
      TEAMModelOS/ClientApp/src/assets/login/3-2.png
  28. 1 1
      TEAMModelOS/ClientApp/src/components/public/frontEndMain/Index.less
  29. 146 109
      TEAMModelOS/ClientApp/src/components/public/frontEndMain/Index.vue
  30. 6 1
      TEAMModelOS/ClientApp/src/locale/lang/en-US/home.js
  31. 6 1
      TEAMModelOS/ClientApp/src/locale/lang/zh-CN/home.js
  32. 6 1
      TEAMModelOS/ClientApp/src/locale/lang/zh-TW/home.js
  33. 5 6
      TEAMModelOS/ClientApp/src/view/homepage/HomePage.vue
  34. 128 132
      TEAMModelOS/ClientApp/src/view/login/page/Student.less
  35. 595 402
      TEAMModelOS/ClientApp/src/view/login/page/Student.vue
  36. 118 132
      TEAMModelOS/ClientApp/src/view/login/page/Teacher.less
  37. 426 270
      TEAMModelOS/ClientApp/src/view/login/page/Teacher.vue
  38. 222 187
      TEAMModelOS/ClientApp/src/view/login/test.vue

+ 539 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2925 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/demo_index.html


+ 491 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.css

@@ -0,0 +1,491 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 2000444 */
+  src: url('iconfont.woff2?t=1623413734271') format('woff2'),
+       url('iconfont.woff?t=1623413734271') format('woff'),
+       url('iconfont.ttf?t=1623413734271') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-wechat:before {
+  content: "\e659";
+}
+
+.icon-earth:before {
+  content: "\e643";
+}
+
+.icon-phone-unverify:before {
+  content: "\e603";
+}
+
+.icon-phone-verify:before {
+  content: "\e6b5";
+}
+
+.icon-unverify:before {
+  content: "\e64e";
+}
+
+.icon-verify:before {
+  content: "\e68c";
+}
+
+.icon-formula:before {
+  content: "\e62a";
+}
+
+.icon-lowest:before {
+  content: "\e6aa";
+}
+
+.icon-highest:before {
+  content: "\e6ab";
+}
+
+.icon-avg:before {
+  content: "\e6ae";
+}
+
+.icon-task:before {
+  content: "\e6ac";
+}
+
+.icon-profession:before {
+  content: "\e629";
+}
+
+.icon-general:before {
+  content: "\e6bd";
+}
+
+.icon-quit1:before {
+  content: "\e6f1";
+}
+
+.icon-quit2:before {
+  content: "\e6c2";
+}
+
+.icon-review:before {
+  content: "\e624";
+}
+
+.icon-fresh:before {
+  content: "\e650";
+}
+
+.icon-larger:before {
+  content: "\e625";
+}
+
+.icon-mark:before {
+  content: "\e631";
+}
+
+.icon-cancel-full-screen:before {
+  content: "\e688";
+}
+
+.icon-arrow-mark:before {
+  content: "\e6c4";
+}
+
+.icon-smile:before {
+  content: "\e626";
+}
+
+.icon-rect:before {
+  content: "\e790";
+}
+
+.icon-oval:before {
+  content: "\e627";
+}
+
+.icon-position:before {
+  content: "\e641";
+}
+
+.icon-move1:before {
+  content: "\e727";
+}
+
+.icon-exception:before {
+  content: "\e628";
+}
+
+.icon-smaller:before {
+  content: "\e620";
+}
+
+.icon-full-screen:before {
+  content: "\e655";
+}
+
+.icon-cancel-full:before {
+  content: "\eb98";
+}
+
+.icon-arb:before {
+  content: "\e636";
+}
+
+.icon-scanning-err:before {
+  content: "\e60d";
+}
+
+.icon-scanning:before {
+  content: "\e602";
+}
+
+.icon-left-arrow:before {
+  content: "\e6a5";
+}
+
+.icon-clear:before {
+  content: "\e66f";
+}
+
+.icon-text:before {
+  content: "\e649";
+}
+
+.icon-undo:before {
+  content: "\e6e2";
+}
+
+.icon-save:before {
+  content: "\e605";
+}
+
+.icon-brush:before {
+  content: "\e61e";
+}
+
+.icon-fn:before {
+  content: "\e63a";
+}
+
+.icon-move:before {
+  content: "\e674";
+}
+
+.icon-baocun1:before {
+  content: "\e68f";
+}
+
+.icon-function:before {
+  content: "\eaef";
+}
+
+.icon-share_link:before {
+  content: "\e61a";
+}
+
+.icon-link2:before {
+  content: "\e671";
+}
+
+.icon-jpg:before {
+  content: "\e61d";
+}
+
+.icon-zip:before {
+  content: "\e8b7";
+}
+
+.icon-pdf:before {
+  content: "\e64d";
+}
+
+.icon-ppt:before {
+  content: "\e608";
+}
+
+.icon-mp3:before {
+  content: "\e617";
+}
+
+.icon-video1:before {
+  content: "\e66e";
+}
+
+.icon-V:before {
+  content: "\e6ff";
+}
+
+.icon-word:before {
+  content: "\e601";
+}
+
+.icon-xlsx:before {
+  content: "\e61c";
+}
+
+.icon-convert:before {
+  content: "\e666";
+}
+
+.icon-half-right:before {
+  content: "\e640";
+}
+
+.icon-complete:before {
+  content: "\e99d";
+}
+
+.icon-table:before {
+  content: "\e63f";
+}
+
+.icon-scoring:before {
+  content: "\e62c";
+}
+
+.icon-choose:before {
+  content: "\e63e";
+}
+
+.icon-qr-code:before {
+  content: "\e642";
+}
+
+.icon-shujufenxi:before {
+  content: "\e612";
+}
+
+.icon-school-analysis:before {
+  content: "\e69b";
+}
+
+.icon-school:before {
+  content: "\e6eb";
+}
+
+.icon-audio3:before {
+  content: "\e60f";
+}
+
+.icon-audio2:before {
+  content: "\e6a2";
+}
+
+.icon-audio1:before {
+  content: "\e60c";
+}
+
+.icon-share1:before {
+  content: "\e708";
+}
+
+.icon-share:before {
+  content: "\e62f";
+}
+
+.icon-sp-car:before {
+  content: "\e6b8";
+}
+
+.icon-htex:before {
+  content: "\e621";
+}
+
+.icon-mini-note:before {
+  content: "\e606";
+}
+
+.icon-flop:before {
+  content: "\e610";
+}
+
+.icon-pie:before {
+  content: "\e70e";
+}
+
+.icon-in-class:before {
+  content: "\e67b";
+}
+
+.icon-study:before {
+  content: "\e651";
+}
+
+.icon-whiteboard:before {
+  content: "\e6af";
+}
+
+.icon-upload:before {
+  content: "\e619";
+}
+
+.icon-customer:before {
+  content: "\e62d";
+}
+
+.icon-yuechi:before {
+  content: "\e6d0";
+}
+
+.icon-reset:before {
+  content: "\e611";
+}
+
+.icon-auth-key:before {
+  content: "\eae6";
+}
+
+.icon-video:before {
+  content: "\e635";
+}
+
+.icon-prepare-study:before {
+  content: "\e7ec";
+}
+
+.icon-hi:before {
+  content: "\e7c8";
+}
+
+.icon-arrow-right:before {
+  content: "\e713";
+}
+
+.icon-message:before {
+  content: "\e639";
+}
+
+.icon-class:before {
+  content: "\e632";
+}
+
+.icon-notice:before {
+  content: "\e846";
+}
+
+.icon-home:before {
+  content: "\e623";
+}
+
+.icon-feedback:before {
+  content: "\e615";
+}
+
+.icon-arrow:before {
+  content: "\e62e";
+}
+
+.icon-time:before {
+  content: "\e677";
+}
+
+.icon-vote:before {
+  content: "\e60e";
+}
+
+.icon-activityS:before {
+  content: "\e703";
+}
+
+.icon-hw:before {
+  content: "\e618";
+}
+
+.icon-activityT:before {
+  content: "\e609";
+}
+
+.icon-teacher-mgt:before {
+  content: "\e69d";
+}
+
+.icon-xueqing:before {
+  content: "\e622";
+}
+
+.icon-file:before {
+  content: "\e638";
+}
+
+.icon-class-mgt:before {
+  content: "\e66d";
+}
+
+.icon-learning-self:before {
+  content: "\e61b";
+}
+
+.icon-student-mgt:before {
+  content: "\e673";
+}
+
+.icon-class-self:before {
+  content: "\e675";
+}
+
+.icon-question-bank:before {
+  content: "\e64a";
+}
+
+.icon-k-point:before {
+  content: "\e62b";
+}
+
+.icon-syllabus:before {
+  content: "\e65d";
+}
+
+.icon-course-mgt:before {
+  content: "\e634";
+}
+
+.icon-analysis:before {
+  content: "\e647";
+}
+
+.icon-schedule:before {
+  content: "\e61f";
+}
+
+.icon-test:before {
+  content: "\e60b";
+}
+
+.icon-basic-setting:before {
+  content: "\e60a";
+}
+
+.icon-auth:before {
+  content: "\e63b";
+}
+
+.icon-kecheng:before {
+  content: "\e614";
+}
+
+.icon-textbook:before {
+  content: "\e811";
+}
+
+.icon-questionnaire:before {
+  content: "\e616";
+}
+
+.icon-course-self:before {
+  content: "\e69e";
+}
+
+.icon-smart-campus:before {
+  content: "\e919";
+}
+
+.icon-course:before {
+  content: "\e613";
+}
+

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.js


+ 842 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.json

@@ -0,0 +1,842 @@
+{
+  "id": "2000444",
+  "name": "TEAMModelOS",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "1382584",
+      "name": "微信 (1)",
+      "font_class": "wechat",
+      "unicode": "e659",
+      "unicode_decimal": 58969
+    },
+    {
+      "icon_id": "2678587",
+      "name": "地球",
+      "font_class": "earth",
+      "unicode": "e643",
+      "unicode_decimal": 58947
+    },
+    {
+      "icon_id": "21777109",
+      "name": "手机未认证",
+      "font_class": "phone-unverify",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "10055797",
+      "name": "手机认证",
+      "font_class": "phone-verify",
+      "unicode": "e6b5",
+      "unicode_decimal": 59061
+    },
+    {
+      "icon_id": "1167192",
+      "name": "未认证",
+      "font_class": "unverify",
+      "unicode": "e64e",
+      "unicode_decimal": 58958
+    },
+    {
+      "icon_id": "3216607",
+      "name": "已认证",
+      "font_class": "verify",
+      "unicode": "e68c",
+      "unicode_decimal": 59020
+    },
+    {
+      "icon_id": "10352314",
+      "name": "公式",
+      "font_class": "formula",
+      "unicode": "e62a",
+      "unicode_decimal": 58922
+    },
+    {
+      "icon_id": "993785",
+      "name": "最低投标",
+      "font_class": "lowest",
+      "unicode": "e6aa",
+      "unicode_decimal": 59050
+    },
+    {
+      "icon_id": "993787",
+      "name": "最高投标",
+      "font_class": "highest",
+      "unicode": "e6ab",
+      "unicode_decimal": 59051
+    },
+    {
+      "icon_id": "7339863",
+      "name": "平均不平衡",
+      "font_class": "avg",
+      "unicode": "e6ae",
+      "unicode_decimal": 59054
+    },
+    {
+      "icon_id": "5241258",
+      "name": "做任务",
+      "font_class": "task",
+      "unicode": "e6ac",
+      "unicode_decimal": 59052
+    },
+    {
+      "icon_id": "5924477",
+      "name": "专业课程",
+      "font_class": "profession",
+      "unicode": "e629",
+      "unicode_decimal": 58921
+    },
+    {
+      "icon_id": "7470974",
+      "name": "通用",
+      "font_class": "general",
+      "unicode": "e6bd",
+      "unicode_decimal": 59069
+    },
+    {
+      "icon_id": "20402185",
+      "name": "退出",
+      "font_class": "quit1",
+      "unicode": "e6f1",
+      "unicode_decimal": 59121
+    },
+    {
+      "icon_id": "20797205",
+      "name": "左退出",
+      "font_class": "quit2",
+      "unicode": "e6c2",
+      "unicode_decimal": 59074
+    },
+    {
+      "icon_id": "6657857",
+      "name": "重阅客观题",
+      "font_class": "review",
+      "unicode": "e624",
+      "unicode_decimal": 58916
+    },
+    {
+      "icon_id": "7821176",
+      "name": "刷新",
+      "font_class": "fresh",
+      "unicode": "e650",
+      "unicode_decimal": 58960
+    },
+    {
+      "icon_id": "11746730",
+      "name": "放大镜",
+      "font_class": "larger",
+      "unicode": "e625",
+      "unicode_decimal": 58917
+    },
+    {
+      "icon_id": "17772905",
+      "name": "开始批注",
+      "font_class": "mark",
+      "unicode": "e631",
+      "unicode_decimal": 58929
+    },
+    {
+      "icon_id": "19594588",
+      "name": "取消全屏",
+      "font_class": "cancel-full-screen",
+      "unicode": "e688",
+      "unicode_decimal": 59016
+    },
+    {
+      "icon_id": "609204",
+      "name": "箭头",
+      "font_class": "arrow-mark",
+      "unicode": "e6c4",
+      "unicode_decimal": 59076
+    },
+    {
+      "icon_id": "2121741",
+      "name": "笑脸",
+      "font_class": "smile",
+      "unicode": "e626",
+      "unicode_decimal": 58918
+    },
+    {
+      "icon_id": "6266248",
+      "name": "矩形",
+      "font_class": "rect",
+      "unicode": "e790",
+      "unicode_decimal": 59280
+    },
+    {
+      "icon_id": "11468160",
+      "name": "椭圆",
+      "font_class": "oval",
+      "unicode": "e627",
+      "unicode_decimal": 58919
+    },
+    {
+      "icon_id": "13453213",
+      "name": "定位",
+      "font_class": "position",
+      "unicode": "e641",
+      "unicode_decimal": 58945
+    },
+    {
+      "icon_id": "7015472",
+      "name": "移动",
+      "font_class": "move1",
+      "unicode": "e727",
+      "unicode_decimal": 59175
+    },
+    {
+      "icon_id": "2945812",
+      "name": "异常流程",
+      "font_class": "exception",
+      "unicode": "e628",
+      "unicode_decimal": 58920
+    },
+    {
+      "icon_id": "1308035",
+      "name": "043操作_缩小",
+      "font_class": "smaller",
+      "unicode": "e620",
+      "unicode_decimal": 58912
+    },
+    {
+      "icon_id": "2678622",
+      "name": "全屏",
+      "font_class": "full-screen",
+      "unicode": "e655",
+      "unicode_decimal": 58965
+    },
+    {
+      "icon_id": "5387942",
+      "name": "取消全屏_o",
+      "font_class": "cancel-full",
+      "unicode": "eb98",
+      "unicode_decimal": 60312
+    },
+    {
+      "icon_id": "7361888",
+      "name": "多评仲裁",
+      "font_class": "arb",
+      "unicode": "e636",
+      "unicode_decimal": 58934
+    },
+    {
+      "icon_id": "10281808",
+      "name": "扫描有误拷贝",
+      "font_class": "scanning-err",
+      "unicode": "e60d",
+      "unicode_decimal": 58893
+    },
+    {
+      "icon_id": "13638619",
+      "name": "扫描",
+      "font_class": "scanning",
+      "unicode": "e602",
+      "unicode_decimal": 58882
+    },
+    {
+      "icon_id": "392156",
+      "name": "箭头",
+      "font_class": "left-arrow",
+      "unicode": "e6a5",
+      "unicode_decimal": 59045
+    },
+    {
+      "icon_id": "842944",
+      "name": "清屏",
+      "font_class": "clear",
+      "unicode": "e66f",
+      "unicode_decimal": 58991
+    },
+    {
+      "icon_id": "2404491",
+      "name": "文本",
+      "font_class": "text",
+      "unicode": "e649",
+      "unicode_decimal": 58953
+    },
+    {
+      "icon_id": "4890374",
+      "name": "撤销",
+      "font_class": "undo",
+      "unicode": "e6e2",
+      "unicode_decimal": 59106
+    },
+    {
+      "icon_id": "5800406",
+      "name": "保存",
+      "font_class": "save",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
+    {
+      "icon_id": "11177629",
+      "name": "画笔",
+      "font_class": "brush",
+      "unicode": "e61e",
+      "unicode_decimal": 58910
+    },
+    {
+      "icon_id": "11399578",
+      "name": "函数模板",
+      "font_class": "fn",
+      "unicode": "e63a",
+      "unicode_decimal": 58938
+    },
+    {
+      "icon_id": "14421632",
+      "name": "移动",
+      "font_class": "move",
+      "unicode": "e674",
+      "unicode_decimal": 58996
+    },
+    {
+      "icon_id": "16365843",
+      "name": "保存",
+      "font_class": "baocun1",
+      "unicode": "e68f",
+      "unicode_decimal": 59023
+    },
+    {
+      "icon_id": "19665049",
+      "name": "函数",
+      "font_class": "function",
+      "unicode": "eaef",
+      "unicode_decimal": 60143
+    },
+    {
+      "icon_id": "551219",
+      "name": "链接",
+      "font_class": "share_link",
+      "unicode": "e61a",
+      "unicode_decimal": 58906
+    },
+    {
+      "icon_id": "6537196",
+      "name": "链接",
+      "font_class": "link2",
+      "unicode": "e671",
+      "unicode_decimal": 58993
+    },
+    {
+      "icon_id": "19145271",
+      "name": "jpg",
+      "font_class": "jpg",
+      "unicode": "e61d",
+      "unicode_decimal": 58909
+    },
+    {
+      "icon_id": "1344658",
+      "name": "zip",
+      "font_class": "zip",
+      "unicode": "e8b7",
+      "unicode_decimal": 59575
+    },
+    {
+      "icon_id": "1973778",
+      "name": "PDF",
+      "font_class": "pdf",
+      "unicode": "e64d",
+      "unicode_decimal": 58957
+    },
+    {
+      "icon_id": "2295972",
+      "name": "ppt",
+      "font_class": "ppt",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "2295990",
+      "name": "mp3",
+      "font_class": "mp3",
+      "unicode": "e617",
+      "unicode_decimal": 58903
+    },
+    {
+      "icon_id": "7684652",
+      "name": "video",
+      "font_class": "video1",
+      "unicode": "e66e",
+      "unicode_decimal": 58990
+    },
+    {
+      "icon_id": "11755918",
+      "name": "文件",
+      "font_class": "V",
+      "unicode": "e6ff",
+      "unicode_decimal": 59135
+    },
+    {
+      "icon_id": "14559710",
+      "name": "word",
+      "font_class": "word",
+      "unicode": "e601",
+      "unicode_decimal": 58881
+    },
+    {
+      "icon_id": "19145279",
+      "name": "xlsx",
+      "font_class": "xlsx",
+      "unicode": "e61c",
+      "unicode_decimal": 58908
+    },
+    {
+      "icon_id": "2604478",
+      "name": "转换",
+      "font_class": "convert",
+      "unicode": "e666",
+      "unicode_decimal": 58982
+    },
+    {
+      "icon_id": "5831259",
+      "name": "半对",
+      "font_class": "half-right",
+      "unicode": "e640",
+      "unicode_decimal": 58944
+    },
+    {
+      "icon_id": "7674533",
+      "name": "完成",
+      "font_class": "complete",
+      "unicode": "e99d",
+      "unicode_decimal": 59805
+    },
+    {
+      "icon_id": "1305461",
+      "name": "表格",
+      "font_class": "table",
+      "unicode": "e63f",
+      "unicode_decimal": 58943
+    },
+    {
+      "icon_id": "12896521",
+      "name": "试卷管理@3x",
+      "font_class": "scoring",
+      "unicode": "e62c",
+      "unicode_decimal": 58924
+    },
+    {
+      "icon_id": "833194",
+      "name": "选择",
+      "font_class": "choose",
+      "unicode": "e63e",
+      "unicode_decimal": 58942
+    },
+    {
+      "icon_id": "993771",
+      "name": "二维码",
+      "font_class": "qr-code",
+      "unicode": "e642",
+      "unicode_decimal": 58946
+    },
+    {
+      "icon_id": "18205080",
+      "name": "数据分析",
+      "font_class": "shujufenxi",
+      "unicode": "e612",
+      "unicode_decimal": 58898
+    },
+    {
+      "icon_id": "14745833",
+      "name": "库存分析",
+      "font_class": "school-analysis",
+      "unicode": "e69b",
+      "unicode_decimal": 59035
+    },
+    {
+      "icon_id": "12593001",
+      "name": "学校",
+      "font_class": "school",
+      "unicode": "e6eb",
+      "unicode_decimal": 59115
+    },
+    {
+      "icon_id": "16942332",
+      "name": "音频",
+      "font_class": "audio3",
+      "unicode": "e60f",
+      "unicode_decimal": 58895
+    },
+    {
+      "icon_id": "7418684",
+      "name": "音频",
+      "font_class": "audio2",
+      "unicode": "e6a2",
+      "unicode_decimal": 59042
+    },
+    {
+      "icon_id": "8922351",
+      "name": "音频",
+      "font_class": "audio1",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
+    },
+    {
+      "icon_id": "13479234",
+      "name": "分享",
+      "font_class": "share1",
+      "unicode": "e708",
+      "unicode_decimal": 59144
+    },
+    {
+      "icon_id": "3874023",
+      "name": "分享",
+      "font_class": "share",
+      "unicode": "e62f",
+      "unicode_decimal": 58927
+    },
+    {
+      "icon_id": "998483",
+      "name": "购物车",
+      "font_class": "sp-car",
+      "unicode": "e6b8",
+      "unicode_decimal": 59064
+    },
+    {
+      "icon_id": "6367281",
+      "name": "H",
+      "font_class": "htex",
+      "unicode": "e621",
+      "unicode_decimal": 58913
+    },
+    {
+      "icon_id": "6209237",
+      "name": "云信补充资料-01",
+      "font_class": "mini-note",
+      "unicode": "e606",
+      "unicode_decimal": 58886
+    },
+    {
+      "icon_id": "13397100",
+      "name": "翻牌",
+      "font_class": "flop",
+      "unicode": "e610",
+      "unicode_decimal": 58896
+    },
+    {
+      "icon_id": "16381829",
+      "name": "饼图",
+      "font_class": "pie",
+      "unicode": "e70e",
+      "unicode_decimal": 59150
+    },
+    {
+      "icon_id": "10582817",
+      "name": "教师中心",
+      "font_class": "in-class",
+      "unicode": "e67b",
+      "unicode_decimal": 59003
+    },
+    {
+      "icon_id": "16328051",
+      "name": "学生",
+      "font_class": "study",
+      "unicode": "e651",
+      "unicode_decimal": 58961
+    },
+    {
+      "icon_id": "11984328",
+      "name": "会议白板",
+      "font_class": "whiteboard",
+      "unicode": "e6af",
+      "unicode_decimal": 59055
+    },
+    {
+      "icon_id": "1159888",
+      "name": "上传",
+      "font_class": "upload",
+      "unicode": "e619",
+      "unicode_decimal": 58905
+    },
+    {
+      "icon_id": "6562297",
+      "name": "客服",
+      "font_class": "customer",
+      "unicode": "e62d",
+      "unicode_decimal": 58925
+    },
+    {
+      "icon_id": "15685189",
+      "name": "钥匙",
+      "font_class": "yuechi",
+      "unicode": "e6d0",
+      "unicode_decimal": 59088
+    },
+    {
+      "icon_id": "1135934",
+      "name": "重置",
+      "font_class": "reset",
+      "unicode": "e611",
+      "unicode_decimal": 58897
+    },
+    {
+      "icon_id": "5387487",
+      "name": "钥匙",
+      "font_class": "auth-key",
+      "unicode": "eae6",
+      "unicode_decimal": 60134
+    },
+    {
+      "icon_id": "8090323",
+      "name": "视频",
+      "font_class": "video",
+      "unicode": "e635",
+      "unicode_decimal": 58933
+    },
+    {
+      "icon_id": "9743023",
+      "name": "课前预习",
+      "font_class": "prepare-study",
+      "unicode": "e7ec",
+      "unicode_decimal": 59372
+    },
+    {
+      "icon_id": "15093929",
+      "name": "hi",
+      "font_class": "hi",
+      "unicode": "e7c8",
+      "unicode_decimal": 59336
+    },
+    {
+      "icon_id": "7090060",
+      "name": "双箭头 右",
+      "font_class": "arrow-right",
+      "unicode": "e713",
+      "unicode_decimal": 59155
+    },
+    {
+      "icon_id": "1227534",
+      "name": "留言",
+      "font_class": "message",
+      "unicode": "e639",
+      "unicode_decimal": 58937
+    },
+    {
+      "icon_id": "1447802",
+      "name": "班级&课堂",
+      "font_class": "class",
+      "unicode": "e632",
+      "unicode_decimal": 58930
+    },
+    {
+      "icon_id": "8508594",
+      "name": "公告",
+      "font_class": "notice",
+      "unicode": "e846",
+      "unicode_decimal": 59462
+    },
+    {
+      "icon_id": "400020",
+      "name": "主页",
+      "font_class": "home",
+      "unicode": "e623",
+      "unicode_decimal": 58915
+    },
+    {
+      "icon_id": "6865356",
+      "name": "问题",
+      "font_class": "feedback",
+      "unicode": "e615",
+      "unicode_decimal": 58901
+    },
+    {
+      "icon_id": "6842558",
+      "name": "双箭头",
+      "font_class": "arrow",
+      "unicode": "e62e",
+      "unicode_decimal": 58926
+    },
+    {
+      "icon_id": "894313",
+      "name": "周期服务时段",
+      "font_class": "time",
+      "unicode": "e677",
+      "unicode_decimal": 58999
+    },
+    {
+      "icon_id": "1240755",
+      "name": "投票",
+      "font_class": "vote",
+      "unicode": "e60e",
+      "unicode_decimal": 58894
+    },
+    {
+      "icon_id": "1250157",
+      "name": "活动",
+      "font_class": "activityS",
+      "unicode": "e703",
+      "unicode_decimal": 59139
+    },
+    {
+      "icon_id": "1447737",
+      "name": "作业",
+      "font_class": "hw",
+      "unicode": "e618",
+      "unicode_decimal": 58904
+    },
+    {
+      "icon_id": "2237862",
+      "name": "学习活动-01",
+      "font_class": "activityT",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    },
+    {
+      "icon_id": "2729538",
+      "name": "老师管理",
+      "font_class": "teacher-mgt",
+      "unicode": "e69d",
+      "unicode_decimal": 59037
+    },
+    {
+      "icon_id": "3745194",
+      "name": "学情",
+      "font_class": "xueqing",
+      "unicode": "e622",
+      "unicode_decimal": 58914
+    },
+    {
+      "icon_id": "3864527",
+      "name": "文件",
+      "font_class": "file",
+      "unicode": "e638",
+      "unicode_decimal": 58936
+    },
+    {
+      "icon_id": "4300068",
+      "name": "班级管理",
+      "font_class": "class-mgt",
+      "unicode": "e66d",
+      "unicode_decimal": 58989
+    },
+    {
+      "icon_id": "5114096",
+      "name": "学习园地",
+      "font_class": "learning-self",
+      "unicode": "e61b",
+      "unicode_decimal": 58907
+    },
+    {
+      "icon_id": "5925272",
+      "name": "学生管理",
+      "font_class": "student-mgt",
+      "unicode": "e673",
+      "unicode_decimal": 58995
+    },
+    {
+      "icon_id": "6015252",
+      "name": "我的班级",
+      "font_class": "class-self",
+      "unicode": "e675",
+      "unicode_decimal": 58997
+    },
+    {
+      "icon_id": "6286028",
+      "name": "题库",
+      "font_class": "question-bank",
+      "unicode": "e64a",
+      "unicode_decimal": 58954
+    },
+    {
+      "icon_id": "7317358",
+      "name": "知识点标定",
+      "font_class": "k-point",
+      "unicode": "e62b",
+      "unicode_decimal": 58923
+    },
+    {
+      "icon_id": "7765166",
+      "name": "教师_教参教材",
+      "font_class": "syllabus",
+      "unicode": "e65d",
+      "unicode_decimal": 58973
+    },
+    {
+      "icon_id": "9959126",
+      "name": "课程管理-未点击",
+      "font_class": "course-mgt",
+      "unicode": "e634",
+      "unicode_decimal": 58932
+    },
+    {
+      "icon_id": "10506193",
+      "name": "统计分析",
+      "font_class": "analysis",
+      "unicode": "e647",
+      "unicode_decimal": 58951
+    },
+    {
+      "icon_id": "10527633",
+      "name": "排课",
+      "font_class": "schedule",
+      "unicode": "e61f",
+      "unicode_decimal": 58911
+    },
+    {
+      "icon_id": "11957208",
+      "name": "星途学堂-逐题考试/测验",
+      "font_class": "test",
+      "unicode": "e60b",
+      "unicode_decimal": 58891
+    },
+    {
+      "icon_id": "12875282",
+      "name": "基础设置",
+      "font_class": "basic-setting",
+      "unicode": "e60a",
+      "unicode_decimal": 58890
+    },
+    {
+      "icon_id": "14015795",
+      "name": "-_授权管理",
+      "font_class": "auth",
+      "unicode": "e63b",
+      "unicode_decimal": 58939
+    },
+    {
+      "icon_id": "14279573",
+      "name": "课程",
+      "font_class": "kecheng",
+      "unicode": "e614",
+      "unicode_decimal": 58900
+    },
+    {
+      "icon_id": "14433107",
+      "name": "教材",
+      "font_class": "textbook",
+      "unicode": "e811",
+      "unicode_decimal": 59409
+    },
+    {
+      "icon_id": "15449928",
+      "name": "问卷调查",
+      "font_class": "questionnaire",
+      "unicode": "e616",
+      "unicode_decimal": 58902
+    },
+    {
+      "icon_id": "16365893",
+      "name": "我的课程",
+      "font_class": "course-self",
+      "unicode": "e69e",
+      "unicode_decimal": 59038
+    },
+    {
+      "icon_id": "9833326",
+      "name": "智慧校园",
+      "font_class": "smart-campus",
+      "unicode": "e919",
+      "unicode_decimal": 59673
+    },
+    {
+      "icon_id": "1447723",
+      "name": "课程",
+      "font_class": "course",
+      "unicode": "e613",
+      "unicode_decimal": 58899
+    }
+  ]
+}

binární
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.ttf


binární
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.woff


binární
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_eedohivuk5v/iconfont.woff2


+ 539 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 2902 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/demo_index.html


+ 487 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.css

@@ -0,0 +1,487 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 2000444 */
+  src: url('iconfont.woff2?t=1623409158201') format('woff2'),
+       url('iconfont.woff?t=1623409158201') format('woff'),
+       url('iconfont.ttf?t=1623409158201') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-earth:before {
+  content: "\e643";
+}
+
+.icon-phone-unverify:before {
+  content: "\e603";
+}
+
+.icon-phone-verify:before {
+  content: "\e6b5";
+}
+
+.icon-unverify:before {
+  content: "\e64e";
+}
+
+.icon-verify:before {
+  content: "\e68c";
+}
+
+.icon-formula:before {
+  content: "\e62a";
+}
+
+.icon-lowest:before {
+  content: "\e6aa";
+}
+
+.icon-highest:before {
+  content: "\e6ab";
+}
+
+.icon-avg:before {
+  content: "\e6ae";
+}
+
+.icon-task:before {
+  content: "\e6ac";
+}
+
+.icon-profession:before {
+  content: "\e629";
+}
+
+.icon-general:before {
+  content: "\e6bd";
+}
+
+.icon-quit1:before {
+  content: "\e6f1";
+}
+
+.icon-quit2:before {
+  content: "\e6c2";
+}
+
+.icon-review:before {
+  content: "\e624";
+}
+
+.icon-fresh:before {
+  content: "\e650";
+}
+
+.icon-larger:before {
+  content: "\e625";
+}
+
+.icon-mark:before {
+  content: "\e631";
+}
+
+.icon-cancel-full-screen:before {
+  content: "\e688";
+}
+
+.icon-arrow-mark:before {
+  content: "\e6c4";
+}
+
+.icon-smile:before {
+  content: "\e626";
+}
+
+.icon-rect:before {
+  content: "\e790";
+}
+
+.icon-oval:before {
+  content: "\e627";
+}
+
+.icon-position:before {
+  content: "\e641";
+}
+
+.icon-move1:before {
+  content: "\e727";
+}
+
+.icon-exception:before {
+  content: "\e628";
+}
+
+.icon-smaller:before {
+  content: "\e620";
+}
+
+.icon-full-screen:before {
+  content: "\e655";
+}
+
+.icon-cancel-full:before {
+  content: "\eb98";
+}
+
+.icon-arb:before {
+  content: "\e636";
+}
+
+.icon-scanning-err:before {
+  content: "\e60d";
+}
+
+.icon-scanning:before {
+  content: "\e602";
+}
+
+.icon-left-arrow:before {
+  content: "\e6a5";
+}
+
+.icon-clear:before {
+  content: "\e66f";
+}
+
+.icon-text:before {
+  content: "\e649";
+}
+
+.icon-undo:before {
+  content: "\e6e2";
+}
+
+.icon-save:before {
+  content: "\e605";
+}
+
+.icon-brush:before {
+  content: "\e61e";
+}
+
+.icon-fn:before {
+  content: "\e63a";
+}
+
+.icon-move:before {
+  content: "\e674";
+}
+
+.icon-baocun1:before {
+  content: "\e68f";
+}
+
+.icon-function:before {
+  content: "\eaef";
+}
+
+.icon-share_link:before {
+  content: "\e61a";
+}
+
+.icon-link2:before {
+  content: "\e671";
+}
+
+.icon-jpg:before {
+  content: "\e61d";
+}
+
+.icon-zip:before {
+  content: "\e8b7";
+}
+
+.icon-pdf:before {
+  content: "\e64d";
+}
+
+.icon-ppt:before {
+  content: "\e608";
+}
+
+.icon-mp3:before {
+  content: "\e617";
+}
+
+.icon-video1:before {
+  content: "\e66e";
+}
+
+.icon-V:before {
+  content: "\e6ff";
+}
+
+.icon-word:before {
+  content: "\e601";
+}
+
+.icon-xlsx:before {
+  content: "\e61c";
+}
+
+.icon-convert:before {
+  content: "\e666";
+}
+
+.icon-half-right:before {
+  content: "\e640";
+}
+
+.icon-complete:before {
+  content: "\e99d";
+}
+
+.icon-table:before {
+  content: "\e63f";
+}
+
+.icon-scoring:before {
+  content: "\e62c";
+}
+
+.icon-choose:before {
+  content: "\e63e";
+}
+
+.icon-qr-code:before {
+  content: "\e642";
+}
+
+.icon-shujufenxi:before {
+  content: "\e612";
+}
+
+.icon-school-analysis:before {
+  content: "\e69b";
+}
+
+.icon-school:before {
+  content: "\e6eb";
+}
+
+.icon-audio3:before {
+  content: "\e60f";
+}
+
+.icon-audio2:before {
+  content: "\e6a2";
+}
+
+.icon-audio1:before {
+  content: "\e60c";
+}
+
+.icon-share1:before {
+  content: "\e708";
+}
+
+.icon-share:before {
+  content: "\e62f";
+}
+
+.icon-sp-car:before {
+  content: "\e6b8";
+}
+
+.icon-htex:before {
+  content: "\e621";
+}
+
+.icon-mini-note:before {
+  content: "\e606";
+}
+
+.icon-flop:before {
+  content: "\e610";
+}
+
+.icon-pie:before {
+  content: "\e70e";
+}
+
+.icon-in-class:before {
+  content: "\e67b";
+}
+
+.icon-study:before {
+  content: "\e651";
+}
+
+.icon-whiteboard:before {
+  content: "\e6af";
+}
+
+.icon-upload:before {
+  content: "\e619";
+}
+
+.icon-customer:before {
+  content: "\e62d";
+}
+
+.icon-yuechi:before {
+  content: "\e6d0";
+}
+
+.icon-reset:before {
+  content: "\e611";
+}
+
+.icon-auth-key:before {
+  content: "\eae6";
+}
+
+.icon-video:before {
+  content: "\e635";
+}
+
+.icon-prepare-study:before {
+  content: "\e7ec";
+}
+
+.icon-hi:before {
+  content: "\e7c8";
+}
+
+.icon-arrow-right:before {
+  content: "\e713";
+}
+
+.icon-message:before {
+  content: "\e639";
+}
+
+.icon-class:before {
+  content: "\e632";
+}
+
+.icon-notice:before {
+  content: "\e846";
+}
+
+.icon-home:before {
+  content: "\e623";
+}
+
+.icon-feedback:before {
+  content: "\e615";
+}
+
+.icon-arrow:before {
+  content: "\e62e";
+}
+
+.icon-time:before {
+  content: "\e677";
+}
+
+.icon-vote:before {
+  content: "\e60e";
+}
+
+.icon-activityS:before {
+  content: "\e703";
+}
+
+.icon-hw:before {
+  content: "\e618";
+}
+
+.icon-activityT:before {
+  content: "\e609";
+}
+
+.icon-teacher-mgt:before {
+  content: "\e69d";
+}
+
+.icon-xueqing:before {
+  content: "\e622";
+}
+
+.icon-file:before {
+  content: "\e638";
+}
+
+.icon-class-mgt:before {
+  content: "\e66d";
+}
+
+.icon-learning-self:before {
+  content: "\e61b";
+}
+
+.icon-student-mgt:before {
+  content: "\e673";
+}
+
+.icon-class-self:before {
+  content: "\e675";
+}
+
+.icon-question-bank:before {
+  content: "\e64a";
+}
+
+.icon-k-point:before {
+  content: "\e62b";
+}
+
+.icon-syllabus:before {
+  content: "\e65d";
+}
+
+.icon-course-mgt:before {
+  content: "\e634";
+}
+
+.icon-analysis:before {
+  content: "\e647";
+}
+
+.icon-schedule:before {
+  content: "\e61f";
+}
+
+.icon-test:before {
+  content: "\e60b";
+}
+
+.icon-basic-setting:before {
+  content: "\e60a";
+}
+
+.icon-auth:before {
+  content: "\e63b";
+}
+
+.icon-kecheng:before {
+  content: "\e614";
+}
+
+.icon-textbook:before {
+  content: "\e811";
+}
+
+.icon-questionnaire:before {
+  content: "\e616";
+}
+
+.icon-course-self:before {
+  content: "\e69e";
+}
+
+.icon-smart-campus:before {
+  content: "\e919";
+}
+
+.icon-course:before {
+  content: "\e613";
+}
+

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.js


+ 835 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.json

@@ -0,0 +1,835 @@
+{
+  "id": "2000444",
+  "name": "TEAMModelOS",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "2678587",
+      "name": "地球",
+      "font_class": "earth",
+      "unicode": "e643",
+      "unicode_decimal": 58947
+    },
+    {
+      "icon_id": "21777109",
+      "name": "手机未认证",
+      "font_class": "phone-unverify",
+      "unicode": "e603",
+      "unicode_decimal": 58883
+    },
+    {
+      "icon_id": "10055797",
+      "name": "手机认证",
+      "font_class": "phone-verify",
+      "unicode": "e6b5",
+      "unicode_decimal": 59061
+    },
+    {
+      "icon_id": "1167192",
+      "name": "未认证",
+      "font_class": "unverify",
+      "unicode": "e64e",
+      "unicode_decimal": 58958
+    },
+    {
+      "icon_id": "3216607",
+      "name": "已认证",
+      "font_class": "verify",
+      "unicode": "e68c",
+      "unicode_decimal": 59020
+    },
+    {
+      "icon_id": "10352314",
+      "name": "公式",
+      "font_class": "formula",
+      "unicode": "e62a",
+      "unicode_decimal": 58922
+    },
+    {
+      "icon_id": "993785",
+      "name": "最低投标",
+      "font_class": "lowest",
+      "unicode": "e6aa",
+      "unicode_decimal": 59050
+    },
+    {
+      "icon_id": "993787",
+      "name": "最高投标",
+      "font_class": "highest",
+      "unicode": "e6ab",
+      "unicode_decimal": 59051
+    },
+    {
+      "icon_id": "7339863",
+      "name": "平均不平衡",
+      "font_class": "avg",
+      "unicode": "e6ae",
+      "unicode_decimal": 59054
+    },
+    {
+      "icon_id": "5241258",
+      "name": "做任务",
+      "font_class": "task",
+      "unicode": "e6ac",
+      "unicode_decimal": 59052
+    },
+    {
+      "icon_id": "5924477",
+      "name": "专业课程",
+      "font_class": "profession",
+      "unicode": "e629",
+      "unicode_decimal": 58921
+    },
+    {
+      "icon_id": "7470974",
+      "name": "通用",
+      "font_class": "general",
+      "unicode": "e6bd",
+      "unicode_decimal": 59069
+    },
+    {
+      "icon_id": "20402185",
+      "name": "退出",
+      "font_class": "quit1",
+      "unicode": "e6f1",
+      "unicode_decimal": 59121
+    },
+    {
+      "icon_id": "20797205",
+      "name": "左退出",
+      "font_class": "quit2",
+      "unicode": "e6c2",
+      "unicode_decimal": 59074
+    },
+    {
+      "icon_id": "6657857",
+      "name": "重阅客观题",
+      "font_class": "review",
+      "unicode": "e624",
+      "unicode_decimal": 58916
+    },
+    {
+      "icon_id": "7821176",
+      "name": "刷新",
+      "font_class": "fresh",
+      "unicode": "e650",
+      "unicode_decimal": 58960
+    },
+    {
+      "icon_id": "11746730",
+      "name": "放大镜",
+      "font_class": "larger",
+      "unicode": "e625",
+      "unicode_decimal": 58917
+    },
+    {
+      "icon_id": "17772905",
+      "name": "开始批注",
+      "font_class": "mark",
+      "unicode": "e631",
+      "unicode_decimal": 58929
+    },
+    {
+      "icon_id": "19594588",
+      "name": "取消全屏",
+      "font_class": "cancel-full-screen",
+      "unicode": "e688",
+      "unicode_decimal": 59016
+    },
+    {
+      "icon_id": "609204",
+      "name": "箭头",
+      "font_class": "arrow-mark",
+      "unicode": "e6c4",
+      "unicode_decimal": 59076
+    },
+    {
+      "icon_id": "2121741",
+      "name": "笑脸",
+      "font_class": "smile",
+      "unicode": "e626",
+      "unicode_decimal": 58918
+    },
+    {
+      "icon_id": "6266248",
+      "name": "矩形",
+      "font_class": "rect",
+      "unicode": "e790",
+      "unicode_decimal": 59280
+    },
+    {
+      "icon_id": "11468160",
+      "name": "椭圆",
+      "font_class": "oval",
+      "unicode": "e627",
+      "unicode_decimal": 58919
+    },
+    {
+      "icon_id": "13453213",
+      "name": "定位",
+      "font_class": "position",
+      "unicode": "e641",
+      "unicode_decimal": 58945
+    },
+    {
+      "icon_id": "7015472",
+      "name": "移动",
+      "font_class": "move1",
+      "unicode": "e727",
+      "unicode_decimal": 59175
+    },
+    {
+      "icon_id": "2945812",
+      "name": "异常流程",
+      "font_class": "exception",
+      "unicode": "e628",
+      "unicode_decimal": 58920
+    },
+    {
+      "icon_id": "1308035",
+      "name": "043操作_缩小",
+      "font_class": "smaller",
+      "unicode": "e620",
+      "unicode_decimal": 58912
+    },
+    {
+      "icon_id": "2678622",
+      "name": "全屏",
+      "font_class": "full-screen",
+      "unicode": "e655",
+      "unicode_decimal": 58965
+    },
+    {
+      "icon_id": "5387942",
+      "name": "取消全屏_o",
+      "font_class": "cancel-full",
+      "unicode": "eb98",
+      "unicode_decimal": 60312
+    },
+    {
+      "icon_id": "7361888",
+      "name": "多评仲裁",
+      "font_class": "arb",
+      "unicode": "e636",
+      "unicode_decimal": 58934
+    },
+    {
+      "icon_id": "10281808",
+      "name": "扫描有误拷贝",
+      "font_class": "scanning-err",
+      "unicode": "e60d",
+      "unicode_decimal": 58893
+    },
+    {
+      "icon_id": "13638619",
+      "name": "扫描",
+      "font_class": "scanning",
+      "unicode": "e602",
+      "unicode_decimal": 58882
+    },
+    {
+      "icon_id": "392156",
+      "name": "箭头",
+      "font_class": "left-arrow",
+      "unicode": "e6a5",
+      "unicode_decimal": 59045
+    },
+    {
+      "icon_id": "842944",
+      "name": "清屏",
+      "font_class": "clear",
+      "unicode": "e66f",
+      "unicode_decimal": 58991
+    },
+    {
+      "icon_id": "2404491",
+      "name": "文本",
+      "font_class": "text",
+      "unicode": "e649",
+      "unicode_decimal": 58953
+    },
+    {
+      "icon_id": "4890374",
+      "name": "撤销",
+      "font_class": "undo",
+      "unicode": "e6e2",
+      "unicode_decimal": 59106
+    },
+    {
+      "icon_id": "5800406",
+      "name": "保存",
+      "font_class": "save",
+      "unicode": "e605",
+      "unicode_decimal": 58885
+    },
+    {
+      "icon_id": "11177629",
+      "name": "画笔",
+      "font_class": "brush",
+      "unicode": "e61e",
+      "unicode_decimal": 58910
+    },
+    {
+      "icon_id": "11399578",
+      "name": "函数模板",
+      "font_class": "fn",
+      "unicode": "e63a",
+      "unicode_decimal": 58938
+    },
+    {
+      "icon_id": "14421632",
+      "name": "移动",
+      "font_class": "move",
+      "unicode": "e674",
+      "unicode_decimal": 58996
+    },
+    {
+      "icon_id": "16365843",
+      "name": "保存",
+      "font_class": "baocun1",
+      "unicode": "e68f",
+      "unicode_decimal": 59023
+    },
+    {
+      "icon_id": "19665049",
+      "name": "函数",
+      "font_class": "function",
+      "unicode": "eaef",
+      "unicode_decimal": 60143
+    },
+    {
+      "icon_id": "551219",
+      "name": "链接",
+      "font_class": "share_link",
+      "unicode": "e61a",
+      "unicode_decimal": 58906
+    },
+    {
+      "icon_id": "6537196",
+      "name": "链接",
+      "font_class": "link2",
+      "unicode": "e671",
+      "unicode_decimal": 58993
+    },
+    {
+      "icon_id": "19145271",
+      "name": "jpg",
+      "font_class": "jpg",
+      "unicode": "e61d",
+      "unicode_decimal": 58909
+    },
+    {
+      "icon_id": "1344658",
+      "name": "zip",
+      "font_class": "zip",
+      "unicode": "e8b7",
+      "unicode_decimal": 59575
+    },
+    {
+      "icon_id": "1973778",
+      "name": "PDF",
+      "font_class": "pdf",
+      "unicode": "e64d",
+      "unicode_decimal": 58957
+    },
+    {
+      "icon_id": "2295972",
+      "name": "ppt",
+      "font_class": "ppt",
+      "unicode": "e608",
+      "unicode_decimal": 58888
+    },
+    {
+      "icon_id": "2295990",
+      "name": "mp3",
+      "font_class": "mp3",
+      "unicode": "e617",
+      "unicode_decimal": 58903
+    },
+    {
+      "icon_id": "7684652",
+      "name": "video",
+      "font_class": "video1",
+      "unicode": "e66e",
+      "unicode_decimal": 58990
+    },
+    {
+      "icon_id": "11755918",
+      "name": "文件",
+      "font_class": "V",
+      "unicode": "e6ff",
+      "unicode_decimal": 59135
+    },
+    {
+      "icon_id": "14559710",
+      "name": "word",
+      "font_class": "word",
+      "unicode": "e601",
+      "unicode_decimal": 58881
+    },
+    {
+      "icon_id": "19145279",
+      "name": "xlsx",
+      "font_class": "xlsx",
+      "unicode": "e61c",
+      "unicode_decimal": 58908
+    },
+    {
+      "icon_id": "2604478",
+      "name": "转换",
+      "font_class": "convert",
+      "unicode": "e666",
+      "unicode_decimal": 58982
+    },
+    {
+      "icon_id": "5831259",
+      "name": "半对",
+      "font_class": "half-right",
+      "unicode": "e640",
+      "unicode_decimal": 58944
+    },
+    {
+      "icon_id": "7674533",
+      "name": "完成",
+      "font_class": "complete",
+      "unicode": "e99d",
+      "unicode_decimal": 59805
+    },
+    {
+      "icon_id": "1305461",
+      "name": "表格",
+      "font_class": "table",
+      "unicode": "e63f",
+      "unicode_decimal": 58943
+    },
+    {
+      "icon_id": "12896521",
+      "name": "试卷管理@3x",
+      "font_class": "scoring",
+      "unicode": "e62c",
+      "unicode_decimal": 58924
+    },
+    {
+      "icon_id": "833194",
+      "name": "选择",
+      "font_class": "choose",
+      "unicode": "e63e",
+      "unicode_decimal": 58942
+    },
+    {
+      "icon_id": "993771",
+      "name": "二维码",
+      "font_class": "qr-code",
+      "unicode": "e642",
+      "unicode_decimal": 58946
+    },
+    {
+      "icon_id": "18205080",
+      "name": "数据分析",
+      "font_class": "shujufenxi",
+      "unicode": "e612",
+      "unicode_decimal": 58898
+    },
+    {
+      "icon_id": "14745833",
+      "name": "库存分析",
+      "font_class": "school-analysis",
+      "unicode": "e69b",
+      "unicode_decimal": 59035
+    },
+    {
+      "icon_id": "12593001",
+      "name": "学校",
+      "font_class": "school",
+      "unicode": "e6eb",
+      "unicode_decimal": 59115
+    },
+    {
+      "icon_id": "16942332",
+      "name": "音频",
+      "font_class": "audio3",
+      "unicode": "e60f",
+      "unicode_decimal": 58895
+    },
+    {
+      "icon_id": "7418684",
+      "name": "音频",
+      "font_class": "audio2",
+      "unicode": "e6a2",
+      "unicode_decimal": 59042
+    },
+    {
+      "icon_id": "8922351",
+      "name": "音频",
+      "font_class": "audio1",
+      "unicode": "e60c",
+      "unicode_decimal": 58892
+    },
+    {
+      "icon_id": "13479234",
+      "name": "分享",
+      "font_class": "share1",
+      "unicode": "e708",
+      "unicode_decimal": 59144
+    },
+    {
+      "icon_id": "3874023",
+      "name": "分享",
+      "font_class": "share",
+      "unicode": "e62f",
+      "unicode_decimal": 58927
+    },
+    {
+      "icon_id": "998483",
+      "name": "购物车",
+      "font_class": "sp-car",
+      "unicode": "e6b8",
+      "unicode_decimal": 59064
+    },
+    {
+      "icon_id": "6367281",
+      "name": "H",
+      "font_class": "htex",
+      "unicode": "e621",
+      "unicode_decimal": 58913
+    },
+    {
+      "icon_id": "6209237",
+      "name": "云信补充资料-01",
+      "font_class": "mini-note",
+      "unicode": "e606",
+      "unicode_decimal": 58886
+    },
+    {
+      "icon_id": "13397100",
+      "name": "翻牌",
+      "font_class": "flop",
+      "unicode": "e610",
+      "unicode_decimal": 58896
+    },
+    {
+      "icon_id": "16381829",
+      "name": "饼图",
+      "font_class": "pie",
+      "unicode": "e70e",
+      "unicode_decimal": 59150
+    },
+    {
+      "icon_id": "10582817",
+      "name": "教师中心",
+      "font_class": "in-class",
+      "unicode": "e67b",
+      "unicode_decimal": 59003
+    },
+    {
+      "icon_id": "16328051",
+      "name": "学生",
+      "font_class": "study",
+      "unicode": "e651",
+      "unicode_decimal": 58961
+    },
+    {
+      "icon_id": "11984328",
+      "name": "会议白板",
+      "font_class": "whiteboard",
+      "unicode": "e6af",
+      "unicode_decimal": 59055
+    },
+    {
+      "icon_id": "1159888",
+      "name": "上传",
+      "font_class": "upload",
+      "unicode": "e619",
+      "unicode_decimal": 58905
+    },
+    {
+      "icon_id": "6562297",
+      "name": "客服",
+      "font_class": "customer",
+      "unicode": "e62d",
+      "unicode_decimal": 58925
+    },
+    {
+      "icon_id": "15685189",
+      "name": "钥匙",
+      "font_class": "yuechi",
+      "unicode": "e6d0",
+      "unicode_decimal": 59088
+    },
+    {
+      "icon_id": "1135934",
+      "name": "重置",
+      "font_class": "reset",
+      "unicode": "e611",
+      "unicode_decimal": 58897
+    },
+    {
+      "icon_id": "5387487",
+      "name": "钥匙",
+      "font_class": "auth-key",
+      "unicode": "eae6",
+      "unicode_decimal": 60134
+    },
+    {
+      "icon_id": "8090323",
+      "name": "视频",
+      "font_class": "video",
+      "unicode": "e635",
+      "unicode_decimal": 58933
+    },
+    {
+      "icon_id": "9743023",
+      "name": "课前预习",
+      "font_class": "prepare-study",
+      "unicode": "e7ec",
+      "unicode_decimal": 59372
+    },
+    {
+      "icon_id": "15093929",
+      "name": "hi",
+      "font_class": "hi",
+      "unicode": "e7c8",
+      "unicode_decimal": 59336
+    },
+    {
+      "icon_id": "7090060",
+      "name": "双箭头 右",
+      "font_class": "arrow-right",
+      "unicode": "e713",
+      "unicode_decimal": 59155
+    },
+    {
+      "icon_id": "1227534",
+      "name": "留言",
+      "font_class": "message",
+      "unicode": "e639",
+      "unicode_decimal": 58937
+    },
+    {
+      "icon_id": "1447802",
+      "name": "班级&课堂",
+      "font_class": "class",
+      "unicode": "e632",
+      "unicode_decimal": 58930
+    },
+    {
+      "icon_id": "8508594",
+      "name": "公告",
+      "font_class": "notice",
+      "unicode": "e846",
+      "unicode_decimal": 59462
+    },
+    {
+      "icon_id": "400020",
+      "name": "主页",
+      "font_class": "home",
+      "unicode": "e623",
+      "unicode_decimal": 58915
+    },
+    {
+      "icon_id": "6865356",
+      "name": "问题",
+      "font_class": "feedback",
+      "unicode": "e615",
+      "unicode_decimal": 58901
+    },
+    {
+      "icon_id": "6842558",
+      "name": "双箭头",
+      "font_class": "arrow",
+      "unicode": "e62e",
+      "unicode_decimal": 58926
+    },
+    {
+      "icon_id": "894313",
+      "name": "周期服务时段",
+      "font_class": "time",
+      "unicode": "e677",
+      "unicode_decimal": 58999
+    },
+    {
+      "icon_id": "1240755",
+      "name": "投票",
+      "font_class": "vote",
+      "unicode": "e60e",
+      "unicode_decimal": 58894
+    },
+    {
+      "icon_id": "1250157",
+      "name": "活动",
+      "font_class": "activityS",
+      "unicode": "e703",
+      "unicode_decimal": 59139
+    },
+    {
+      "icon_id": "1447737",
+      "name": "作业",
+      "font_class": "hw",
+      "unicode": "e618",
+      "unicode_decimal": 58904
+    },
+    {
+      "icon_id": "2237862",
+      "name": "学习活动-01",
+      "font_class": "activityT",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    },
+    {
+      "icon_id": "2729538",
+      "name": "老师管理",
+      "font_class": "teacher-mgt",
+      "unicode": "e69d",
+      "unicode_decimal": 59037
+    },
+    {
+      "icon_id": "3745194",
+      "name": "学情",
+      "font_class": "xueqing",
+      "unicode": "e622",
+      "unicode_decimal": 58914
+    },
+    {
+      "icon_id": "3864527",
+      "name": "文件",
+      "font_class": "file",
+      "unicode": "e638",
+      "unicode_decimal": 58936
+    },
+    {
+      "icon_id": "4300068",
+      "name": "班级管理",
+      "font_class": "class-mgt",
+      "unicode": "e66d",
+      "unicode_decimal": 58989
+    },
+    {
+      "icon_id": "5114096",
+      "name": "学习园地",
+      "font_class": "learning-self",
+      "unicode": "e61b",
+      "unicode_decimal": 58907
+    },
+    {
+      "icon_id": "5925272",
+      "name": "学生管理",
+      "font_class": "student-mgt",
+      "unicode": "e673",
+      "unicode_decimal": 58995
+    },
+    {
+      "icon_id": "6015252",
+      "name": "我的班级",
+      "font_class": "class-self",
+      "unicode": "e675",
+      "unicode_decimal": 58997
+    },
+    {
+      "icon_id": "6286028",
+      "name": "题库",
+      "font_class": "question-bank",
+      "unicode": "e64a",
+      "unicode_decimal": 58954
+    },
+    {
+      "icon_id": "7317358",
+      "name": "知识点标定",
+      "font_class": "k-point",
+      "unicode": "e62b",
+      "unicode_decimal": 58923
+    },
+    {
+      "icon_id": "7765166",
+      "name": "教师_教参教材",
+      "font_class": "syllabus",
+      "unicode": "e65d",
+      "unicode_decimal": 58973
+    },
+    {
+      "icon_id": "9959126",
+      "name": "课程管理-未点击",
+      "font_class": "course-mgt",
+      "unicode": "e634",
+      "unicode_decimal": 58932
+    },
+    {
+      "icon_id": "10506193",
+      "name": "统计分析",
+      "font_class": "analysis",
+      "unicode": "e647",
+      "unicode_decimal": 58951
+    },
+    {
+      "icon_id": "10527633",
+      "name": "排课",
+      "font_class": "schedule",
+      "unicode": "e61f",
+      "unicode_decimal": 58911
+    },
+    {
+      "icon_id": "11957208",
+      "name": "星途学堂-逐题考试/测验",
+      "font_class": "test",
+      "unicode": "e60b",
+      "unicode_decimal": 58891
+    },
+    {
+      "icon_id": "12875282",
+      "name": "基础设置",
+      "font_class": "basic-setting",
+      "unicode": "e60a",
+      "unicode_decimal": 58890
+    },
+    {
+      "icon_id": "14015795",
+      "name": "-_授权管理",
+      "font_class": "auth",
+      "unicode": "e63b",
+      "unicode_decimal": 58939
+    },
+    {
+      "icon_id": "14279573",
+      "name": "课程",
+      "font_class": "kecheng",
+      "unicode": "e614",
+      "unicode_decimal": 58900
+    },
+    {
+      "icon_id": "14433107",
+      "name": "教材",
+      "font_class": "textbook",
+      "unicode": "e811",
+      "unicode_decimal": 59409
+    },
+    {
+      "icon_id": "15449928",
+      "name": "问卷调查",
+      "font_class": "questionnaire",
+      "unicode": "e616",
+      "unicode_decimal": 58902
+    },
+    {
+      "icon_id": "16365893",
+      "name": "我的课程",
+      "font_class": "course-self",
+      "unicode": "e69e",
+      "unicode_decimal": 59038
+    },
+    {
+      "icon_id": "9833326",
+      "name": "智慧校园",
+      "font_class": "smart-campus",
+      "unicode": "e919",
+      "unicode_decimal": 59673
+    },
+    {
+      "icon_id": "1447723",
+      "name": "课程",
+      "font_class": "course",
+      "unicode": "e613",
+      "unicode_decimal": 58899
+    }
+  ]
+}

binární
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.ttf


binární
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.woff


binární
TEAMModelOS/ClientApp/src/assets/iconfont/font_2000444_id1acl09mzi/iconfont.woff2


binární
TEAMModelOS/ClientApp/src/assets/image/1-1.jpg


binární
TEAMModelOS/ClientApp/src/assets/login/1-1.jpg


binární
TEAMModelOS/ClientApp/src/assets/login/1-2.png


binární
TEAMModelOS/ClientApp/src/assets/login/1-3.png


binární
TEAMModelOS/ClientApp/src/assets/login/1-4.png


binární
TEAMModelOS/ClientApp/src/assets/login/1-5.png


binární
TEAMModelOS/ClientApp/src/assets/login/1-7.png


binární
TEAMModelOS/ClientApp/src/assets/login/2-1.png


binární
TEAMModelOS/ClientApp/src/assets/login/2-2.jpg


binární
TEAMModelOS/ClientApp/src/assets/login/3-1.jpg


binární
TEAMModelOS/ClientApp/src/assets/login/3-2.png


+ 1 - 1
TEAMModelOS/ClientApp/src/components/public/frontEndMain/Index.less

@@ -1,7 +1,7 @@
 .login{
     width: 100%;
     height: 100%;
-    background-image: url('../../../assets/image/lgoin_bg.jpg');
+    // background-image: url('../../../assets/login/1-1.jpg');
     background-repeat: no-repeat;
     background-attachment: fixed;
     background-position: center;

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 146 - 109
TEAMModelOS/ClientApp/src/components/public/frontEndMain/Index.vue


+ 6 - 1
TEAMModelOS/ClientApp/src/locale/lang/en-US/home.js

@@ -30,5 +30,10 @@ export default{
     verifySchool:'加入学校',
     toSchool:'加入学校>>>',
     schoolSuccess:'您已加入学校!',
-    hasJoin:'已加入'
+    hasJoin:'已加入',
+    myCourse:'我的課表',
+    tmwCus:'明日課程',
+    course:'課程:',
+    className:'班級:',
+    tmwNoCus:'明天沒有課程安排'
 }

+ 6 - 1
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/home.js

@@ -30,5 +30,10 @@ export default{
     verifySchool:'暂未加入学校',
     toSchool:'加入学校>>>',
     schoolSuccess:'您已加入学校!',
-    hasJoin:'已加入'
+    hasJoin:'已加入',
+    myCourse:'我的课表',
+    tmwCus:'明日课程',
+    course:'课程:',
+    className:'班级:',
+    tmwNoCus:'明天没有课程安排'
 }

+ 6 - 1
TEAMModelOS/ClientApp/src/locale/lang/zh-TW/home.js

@@ -30,5 +30,10 @@ export default {
     verifySchool:'加入學校',
     toSchool:'加入學校>>>',
     schoolSuccess:'您已加入學校! ',
-    hasJoin:'已加入'
+    hasJoin:'已加入',
+    myCourse:'我的課表',
+    tmwCus:'明日課程',
+    course:'課程:',
+    className:'班級:',
+    tmwNoCus:'明天沒有課程安排'
 }

+ 5 - 6
TEAMModelOS/ClientApp/src/view/homepage/HomePage.vue

@@ -69,14 +69,13 @@
         </div> -->
         <div class="cus-table-area box-item">
             <p class="list-title">
-                <!-- {{$t('home.previewStudy')}} -->
-                我的课表
+                {{$t('home.myCourse')}}
             </p>
             <div class="card-content-box" style="padding:10px">
                 <vuescroll>
                     <MinTable @tmwCus="getTmwCus"></MinTable>
                     <p class="today-text-label">
-                        明日课程
+                        {{$t('home.tmwCus')}}
                     </p>
                     <div class="today-cus-item" v-for="(item,index) in tmwCus" :key="index">
                         <Icon type="md-time" class="label-icon" />
@@ -89,13 +88,13 @@
                             </p>
                             <p>
                                 <span class="cus-name">
-                                    课程:
+                                    {{$t('home.course')}}
                                     <span style="color:white">
                                         {{item.course}}
                                     </span>
                                 </span>
                                 <span class="cus-class">
-                                    班级:
+                                    {{$t('home.className')}}
                                     <span style="color:white">
                                         {{item.class}}
                                     </span>
@@ -103,7 +102,7 @@
                             </p>
                         </div>
                     </div>
-                    <EmptyData v-show="!tmwCus.length" textContent="明日没有课程哦"></EmptyData>
+                    <EmptyData v-show="!tmwCus.length" :textContent="$t('home.tmwNoCus')"></EmptyData>
                 </vuescroll>
             </div>
         </div>

+ 128 - 132
TEAMModelOS/ClientApp/src/view/login/page/Student.less

@@ -1,8 +1,6 @@
 .loginDiv{
-    height: 520px;
     display: flex;
     align-items: center;
-    flex-direction: column;
     justify-content: space-around;
     .iconFrame:before{
         border-radius: 50%;
@@ -31,141 +29,139 @@
         .loginBox{
             width: 300px;
             height: 310px;
-            .title{
-                display: flex;
-                align-items: center;
-                // align-content: center !important;
-                margin-bottom: 5px;
-                .logo{
-                    margin-right: 5px;
-                    height: 15px;
-                }
-                .text{
-                    margin-right: 15px;
-                    color: #ffffff;
-                    font-size: 16px;
-                }
-                .tooltip{
-                    height: 15px;
-                }
+            
+        }
+    }
+}
+.errlable{
+    text-align: right;
+    color: #f22613;
+    font-size: 12px;
+    margin-top: 3px;
+    height: 12px;
+}
+.title{
+    display: flex;
+    align-items: center;
+    // align-content: center !important;
+    margin-bottom: 5px;
+    .logo{
+        margin-right: 5px;
+        height: 15px;
+    }
+    .text{
+        margin-right: 15px;
+        color: #ffffff;
+        font-size: 16px;
+    }
+    .tooltip{
+        height: 15px;
+    }
+}
+.subTitle{
+    font-size: 14px;
+    color: #d1d1d3;
+    margin-bottom: 10px;
+}
+.loginForm{
+    margin-bottom: 10px;
+}
+.extra{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-bottom: 30px;
+    .qrlogin{
+        display: flex;
+        align-items: center;
+        .logo{
+            margin-right: 5px;
+            height: 15px;
+        }
+        a{
+            font-size: 12px;
+            color: #668fbc;
+            text-decoration: underline;
+        }
+    }
+    .link{
+        a{
+            font-size: 12px;
+            color: #668fbc;
+            text-decoration: underline;
+        }
+    }
+}
+.communyLoging{
+    .description{
+        text-align: center;
+        font-size: 12px;
+        color: #d1d1d3;
+        margin-bottom: 20px;
+        letter-spacing: 1.5px;
+    }
+    .links{
+        display: flex;
+        align-items: center;
+        justify-content: space-around;
+        .icon{
+            display: flex;
+            align-items: center;
+            flex-direction: column;
+            cursor: pointer;
+            img{
+                width: 35px;
             }
-            .subTitle{
-                font-size: 14px;
+            span{
+                font-size: 12px;
                 color: #d1d1d3;
-                margin-bottom: 25px;
-            }
-            .loginForm{
-                margin-bottom: 10px;
-                .formItem{
-                    margin: 0;
-                }
-                .errlable{
-                    text-align: right;
-                    color: #f22613;
-                    font-size: 12px;
-                    margin-top: 3px;
-                    height: 12px;
-                }
-            }
-            .extra{
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                margin-bottom: 30px;
-                .qrlogin{
-                    display: flex;
-                    align-items: center;
-                    .logo{
-                        margin-right: 5px;
-                        height: 15px;
-                    }
-                    a{
-                        font-size: 12px;
-                        color: #668fbc;
-                        text-decoration: underline;
-                    }
-                }
-                .link{
-                    a{
-                        font-size: 12px;
-                        color: #668fbc;
-                        text-decoration: underline;
-                    }
-                }
             }
-            .communyLoging{
-                .description{
-                    text-align: center;
-                    font-size: 12px;
-                    color: #d1d1d3;
-                    margin-bottom: 20px;
-                    letter-spacing: 1.5px;
-                }
-                .links{
-                    display: flex;
-                    align-items: center;
-                    justify-content: space-around;
-                    .icon{
-                        display: flex;
-                        align-items: center;
-                        flex-direction: column;
-                        cursor: pointer;
-                        img{
-                            width: 35px;
-                        }
-                        span{
-                            font-size: 12px;
-                            color: #d1d1d3;
-                        }
-                    }
-                }
+        }
+    }
+}
+.qrloginMode{
+    .qrcodeBox{
+        width:240px;
+        height:240px;
+        margin:auto;
+        margin-bottom: 10px;
+        position: relative;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        .qrcode{
+            padding:20px;
+            background-color:white;
+        }
+        .expired{
+            position: absolute;
+            background-color: #ffffffde;
+            width: 200px;
+            height: 200px;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            .ivu-icon{
+                cursor: pointer;
             }
-            .qrloginMode{
-                .qrcodeBox{
-                    width:240px;
-                    height:240px;
-                    margin:auto;
-                    margin-bottom: 10px;
-                    position: relative;
-                    display: flex;
-                    justify-content: center;
-                    align-items: center;
-                    .qrcode{
-                        padding:20px;
-                        background-color:white;
-                    }
-                    .expired{
-                        position: absolute;
-                        background-color: #ffffffde;
-                        width: 200px;
-                        height: 200px;
-                        display: flex;
-                        justify-content: center;
-                        align-items: center;
-                        .ivu-icon{
-                            cursor: pointer;
-                        }
-                    }
-                }            
-                .links{
-                    display: flex;
-                    align-items: center;
-                    justify-content: space-between;
-                    .icon-a{
-                        display: flex;
-                        align-items: center;
-                        img{
-                            margin-right: 3px;
-                            width: 15px;
-                            height: 15px;
-                        }
-                    }
-                    a{
-                        font-size: 12px;
-                        color: #668fbc;
-                    }
-                }
+        }
+    }            
+    .links{
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        .icon-a{
+            display: flex;
+            align-items: center;
+            img{
+                margin-right: 3px;
+                width: 15px;
+                height: 15px;
             }
         }
+        a{
+            font-size: 12px;
+            color: white;
+        }
     }
 }

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 595 - 402
TEAMModelOS/ClientApp/src/view/login/page/Student.vue


+ 118 - 132
TEAMModelOS/ClientApp/src/view/login/page/Teacher.less

@@ -1,8 +1,7 @@
 .loginDiv{
-    height: 520px;
     display: flex;
     align-items: center;
-    flex-direction: column;
+    // flex-direction: column;
     justify-content: space-around;
     .iconFrame:before{
         border-radius: 50%;
@@ -26,141 +25,128 @@
         .loginBox{
             width: 300px;
             height: 310px;
-            .title{
-                display: flex;
-                align-items: center;
-                // align-content: center !important;
-                margin-bottom: 5px;
-                .logo{
-                    margin-right: 5px;
-                    height: 15px;
-                }
-                .text{
-                    margin-right: 15px;
-                    color: #ffffff;
-                    font-size: 16px;
-                }
-                .tooltip{
-                    height: 15px;
-                }
+            
+        }
+    }
+}
+.teacher-login-img{
+    width: 180px;
+}
+.title{
+    display: flex;
+    align-items: center;
+    // align-content: center !important;
+    margin-bottom: 5px;
+    .logo{
+        margin-right: 5px;
+        height: 15px;
+    }
+    .text{
+        margin-right: 15px;
+        color: #ffffff;
+        font-size: 16px;
+    }
+    .tooltip{
+        height: 15px;
+    }
+}
+.subTitle{
+    font-size: 14px;
+    color: #d1d1d3;
+    margin-bottom: 10px;
+}
+
+.extra{
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-bottom: 30px;
+    .qrlogin{
+        display: flex;
+        align-items: center;
+        .logo{
+            margin-right: 5px;
+            height: 15px;
+        }
+        a{
+            font-size: 12px;
+            color: #668fbc;
+            text-decoration: underline;
+        }
+    }
+    .link{
+        a{
+            font-size: 12px;
+            color: #668fbc;
+            text-decoration: underline;
+        }
+    }
+}
+.communyLoging{
+    .description{
+        text-align: center;
+        font-size: 12px;
+        color: #d1d1d3;
+        margin-bottom: 20px;
+        letter-spacing: 1.5px;
+    }
+    .links{
+        display: flex;
+        align-items: center;
+        justify-content: space-around;
+        .icon{
+            display: flex;
+            align-items: center;
+            flex-direction: column;
+            cursor: pointer;
+            img{
+                width: 35px;
             }
-            .subTitle{
-                font-size: 14px;
+            span{
+                font-size: 12px;
                 color: #d1d1d3;
-                margin-bottom: 25px;
-            }
-            .loginForm{
-                margin-bottom: 10px;
-                .formItem{
-                    margin: 0;
-                }
-                .errlable{
-                    text-align: right;
-                    color: #f22613;
-                    font-size: 12px;
-                    margin-top: 3px;
-                    height: 12px;
-                }
-            }
-            .extra{
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-                margin-bottom: 30px;
-                .qrlogin{
-                    display: flex;
-                    align-items: center;
-                    .logo{
-                        margin-right: 5px;
-                        height: 15px;
-                    }
-                    a{
-                        font-size: 12px;
-                        color: #668fbc;
-                        text-decoration: underline;
-                    }
-                }
-                .link{
-                    a{
-                        font-size: 12px;
-                        color: #668fbc;
-                        text-decoration: underline;
-                    }
-                }
             }
-            .communyLoging{
-                .description{
-                    text-align: center;
-                    font-size: 12px;
-                    color: #d1d1d3;
-                    margin-bottom: 20px;
-                    letter-spacing: 1.5px;
-                }
-                .links{
-                    display: flex;
-                    align-items: center;
-                    justify-content: space-around;
-                    .icon{
-                        display: flex;
-                        align-items: center;
-                        flex-direction: column;
-                        cursor: pointer;
-                        img{
-                            width: 35px;
-                        }
-                        span{
-                            font-size: 12px;
-                            color: #d1d1d3;
-                        }
-                    }
-                }
+        }
+    }
+}
+.qrloginMode{
+    .qrcodeBox{
+        width:240px;
+        height:240px;
+        margin-bottom: 10px;
+        .qrcode{
+            padding:20px;
+            background-color:white;
+        }
+        .expired{
+            position: absolute;
+            background-color: #ffffffde;
+            width: 200px;
+            height: 200px;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            .ivu-icon{
+                cursor: pointer;
             }
-            .qrloginMode{
-                .qrcodeBox{
-                    width:240px;
-                    height:240px;
-                    margin:auto;
-                    margin-bottom: 10px;
-                    position: relative;
-                    display: flex;
-                    justify-content: center;
-                    align-items: center;
-                    .qrcode{
-                        padding:20px;
-                        background-color:white;
-                    }
-                    .expired{
-                        position: absolute;
-                        background-color: #ffffffde;
-                        width: 200px;
-                        height: 200px;
-                        display: flex;
-                        justify-content: center;
-                        align-items: center;
-                        .ivu-icon{
-                            cursor: pointer;
-                        }
-                    }
-                }            
-                .links{
-                    display: flex;
-                    align-items: center;
-                    justify-content: space-between;
-                    .icon-a{
-                        display: flex;
-                        align-items: center;
-                        img{
-                            margin-right: 3px;
-                            width: 15px;
-                            height: 15px;
-                        }
-                    }
-                    a{
-                        font-size: 12px;
-                        color: #668fbc;
-                    }
-                }
+        }
+    }            
+    .links{
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        .icon-a{
+            display: flex;
+            align-items: center;
+            img{
+                margin-right: 3px;
+                width: 15px;
+                height: 15px;
             }
         }
+        a{
+            font-size: 12px;
+            color: white;
+        }
     }
 }

+ 426 - 270
TEAMModelOS/ClientApp/src/view/login/page/Teacher.vue

@@ -1,77 +1,233 @@
 <style lang="less" scoped>
-  @import './Teacher.less';
+@import "./Teacher.less";
+.loginDiv {
+    background: rgba(75, 112, 136, 0.5);
+    border-radius: 20px;
+    overflow: hidden;
+    margin-top: -100px;
+}
+.left-box {
+    padding: 0px 55px;
+    height: 400px;
+    display: flex;
+    align-items: center;
+    box-shadow: 2px 0px 15px 0px rgba(75, 113, 136, 0.9);
+}
+.right-box {
+    padding: 40px 150px;
+    width: 600px;
+    height: 400px;
+    box-shadow: -2px 0px 15px 0px rgba(75, 113, 136, 0.9);
+}
+.teacher-login-title {
+    color: white;
+    font-size: 42px;
+    text-align: center;
+}
+.teacher-login-decr {
+    color: white;
+    font-size: 18px;
+    text-align: center;
+    font-weight: 200;
+}
+.loginForm {
+    margin: auto;
+    margin-top: 30px;
+    width: 300px;
+}
+.formItem {
+    margin-bottom: 8px;
+}
+.form-bottom {
+    color: white;
+    font-size: 12px;
+}
+.form-bottom-link {
+    float: right;
+    margin-left: 10px;
+}
+.qrcode-login {
+    cursor: pointer;
+}
+.other-login-box {
+    display: flex;
+    margin-top: 25px;
+}
+.other-login-item {
+    width: 50%;
+    color: white;
+    text-align: center;
+    cursor: pointer;
+}
+.other-login-icon {
+    font-size: 50px;
+    display: block;
+}
 </style>
 
 <style lang="less">
-.loginBox{
-  .loginForm{
-    .formItem{
-        input, select{
-            border-radius: 0;
-            font-size: 12px;
+.login-input-box .ivu-input {
+    border-radius: 25px;
+    line-height: 35px;
+    height: 35px;
+    padding: 0px 15px;
+}
+.login-input-box .ivu-input-prefix i,
+.login-input-box .ivu-input-suffix i {
+    line-height: 35px;
+}
+.loginBox {
+    .loginForm {
+        .formItem {
+            input,
+            select {
+                border-radius: 0;
+                font-size: 12px;
+            }
+            .ivu-select-selection {
+                border-radius: 0;
+            }
         }
-        .ivu-select-selection{
-          border-radius: 0;
+        .schoolAutoComplete {
+            height: 170px;
+            .schoolsBox {
+                border-bottom: 1px solid #e9e9e9;
+                padding: 5px 5px 5px 15px;
+                .area {
+                    font-size: 12px;
+                    padding: 5px;
+                }
+            }
         }
-    }
-    .schoolAutoComplete{
-      height: 170px;
-      .schoolsBox{
-        border-bottom: 1px solid #e9e9e9;
-        padding: 5px 5px 5px 15px;
-        .area{
-          font-size: 12px;
-          padding: 5px;
+        .ivu-select-dropdown {
+            border-radius: 0;
         }
-      }
-    }
-    .ivu-select-dropdown{
-      border-radius: 0;
     }
-  }
 }
-.identityModal{
-  .ivu-modal{
-    .ivu-modal-content{
-      background-color: #2a292e;
-      padding: 12px;
-      border: 1px solid #ccc;
-      .ivu-modal-header, .ivu-modal-footer{
-        border: 0;
-      }
-      .ivu-modal-footer{
-        padding: 0;
-      }
-      .ivu-modal-header{
-        padding: 5px 16px;
-        p{
-          color: whitesmoke;
-        }
-      }
-      .identity-body{
-        display: flex;
-        justify-content: space-around;
-        align-items: center;
-        .ivu-btn{
-          background-color: #1cc0f2;
-          color: white;
-          font-weight: bold;
-          border: 0;
-          padding: 0 22px;
+.identityModal {
+    .ivu-modal {
+        .ivu-modal-content {
+            background-color: #2a292e;
+            padding: 12px;
+            border: 1px solid #ccc;
+            .ivu-modal-header,
+            .ivu-modal-footer {
+                border: 0;
+            }
+            .ivu-modal-footer {
+                padding: 0;
+            }
+            .ivu-modal-header {
+                padding: 5px 16px;
+                p {
+                    color: whitesmoke;
+                }
+            }
+            .identity-body {
+                display: flex;
+                justify-content: space-around;
+                align-items: center;
+                .ivu-btn {
+                    background-color: #1cc0f2;
+                    color: white;
+                    font-weight: bold;
+                    border: 0;
+                    padding: 0 22px;
+                }
+            }
         }
-      }
-    }        
-  }
+    }
 }
-.demo-spin-col .ivu-spin-main{
-	background-color: transparent;
-	padding: 0;
+.demo-spin-col .ivu-spin-main {
+    background-color: transparent;
+    padding: 0;
 }
 </style>
 
 <template>
-  <div class="loginDiv">
-    <div class="schoolName">
+    <div class="loginDiv">
+        <div class="left-box">
+            <!-- 这张图片需要裁剪顶部 -->
+            <img src="@/assets/login/3-2.png" class="teacher-login-img" style="margin-top:-30px">
+        </div>
+        <div class="right-box" v-show="!qrloginFlag">
+            <p class="teacher-login-title">醍摩豆账号登录</p>
+            <p class="teacher-login-decr">系统管理者、教师、学生与家长登录</p>
+            <Form class="loginForm" ref="loginForm" :model="loginForm" :rules="loginRule" :show-message="false" @keydown.enter.native="loginSubmit('loginForm')">
+                <FormItem class="formItem" prop="id">
+                    <Input element-id="tmdID" class="login-input-box" v-model="loginForm.id" :placeholder="$t('login.placeholder.id')" />
+                </FormItem>
+                <FormItem class="formItem" prop="pass">
+                    <Input element-id="tmdpw" class="login-input-box" type="password" v-model="loginForm.pass" :placeholder="$t('login.placeholder.psw')">
+                    <Icon size="24" v-show="!loading && loginFormEnter" @click="loginSubmit('loginForm')" type="md-arrow-forward" slot="suffix" class="iconFrame" />
+                    <div v-show="loading" class="demo-spin-col" slot="suffix">
+                        <Spin>
+                            <Icon type="ios-loading" size="18" class="demo-spin-icon-load"></Icon>
+                        </Spin>
+                    </div>
+                    </Input>
+                </FormItem>
+                <div class="errlable">{{ loginErrText }}</div>
+            </Form>
+            <p class="form-bottom">
+                <span class="qrcode-login" @click="chgLoginType()">
+                    <Icon size="14" custom="iconfont icon-qr-code" style="vertical-align: text-bottom;" />
+                    {{ $t('login.link.QRLogin') }}
+                </span>
+                <router-link to="/regist" class="form-bottom-link">
+                    {{$t('login.link.regist')}}
+                </router-link>
+                <router-link to="/forgotpw" href="" class="form-bottom-link">
+                    {{$t('login.link.forgetPsw')}}
+                </router-link>
+            </p>
+            <div class="other-login-box">
+                <div class="other-login-item" @click="oauthLogin('facebook')">
+                    <Icon type="logo-facebook" class="other-login-icon" />
+                    <p class="other-login-text">Facebook</p>
+                </div>
+                <div class="other-login-item" v-if="!(srvAdr == 'Global')" @click="oauthLogin('wechat')">
+                    <Icon custom="iconfont icon-wechat" class="other-login-icon" />
+                    <p class="other-login-text">或使用第三方平台登录</p>
+                </div>
+            </div>
+        </div>
+        <div class="right-box" v-show="qrloginFlag">
+            <div style="width:fit-content;margin: auto;">
+                <div class="title">
+                    <div class="logo">
+                        <img width="15" height="15" src="@/assets/icon/tmd_account.svg">
+                    </div>
+                    <h4 class="text">
+                        {{ qrloginFlag ? $t('login.title.QRLogin'): $t('login.title.IDLogin') }}
+                    </h4>
+                    <Tooltip class="tooltip" placement="right-end" :transfer="true" max-width="200">
+                        <img src="@/assets/icon/icon_info.svg" width="15" height="15">
+                        <div slot="content">
+                            <p style="font-size: 12px;">{{ $t('login.tooltip.text1') }}</p>
+                        </div>
+                    </Tooltip>
+                </div>
+                <h4 class="subTitle">
+                    {{ qrloginFlag ? $t('login.subTitle.QRLogin') : $t('login.subTitle.IDLogin')}}
+                </h4>
+                <div class="qrloginMode">
+                    <div class="qrcodeBox">
+                        <div id="qrcode" :class="{'qrcode': joinQRcode != undefined}" ref="qrcode"></div>
+                        <div class="expired" v-if="joinQRcode != undefined && !sseSurvive">
+                            <Icon size="40" type="md-refresh-circle" @click="SEELink()" />
+                        </div>
+                    </div>
+                    <div class="links">
+                        <div class="icon-a">
+                            <a @click="chgLoginType()">{{ $t('login.link.IDLogin') }}</a>
+                        </div>
+                        <router-link to="/regist">{{ $t('login.link.regist') }}</router-link>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <!-- <div class="schoolName">
       <div style="width: 100px;height: 100px;background-color: #69b0d0;border-radius: 4px;cursor: pointer;">
         <img style="    display: block;
           width: 100%;
@@ -164,8 +320,8 @@
           </div>
         </div>
       </div>
+    </div> -->
     </div>
-  </div>
 </template>
 <script>
 import { EventSourcePolyfill } from 'event-source-polyfill';
@@ -174,228 +330,228 @@ import { User } from '@/service/User'
 import { mapState, mapGetters } from 'vuex'
 
 export default {
-  data() {
-    const validateID = (rule, value, callback) => {
-      if (value === '') {
-          callback(new Error());
-          this.loginErrText = this.$t('error.required')
-      } else if (value.search(/^\+/) == 0) {
-          callback(new Error());
-          this.loginErrText = this.$t('error.format.default')
-      } else {
-        if(value.indexOf('@') >=0){ //是否為Email
-          var emailRule = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]+$/;
-          if(value.search(emailRule)!= -1){
-              callback();
-              this.loginErrText = ''
-          } else {
-              callback(new Error());
-              this.loginErrText = this.$t('error.format.email')
-          }
-        } else {
-          callback();
-          this.loginErrText = ''
-        }
-      }
-    };
-    const validatePW = (rule, value, callback) => {
-      if (value === '') {
-          callback(new Error());
-          this.loginErrText = this.$t('error.required')
-      }
-      else {
-          callback();
-          this.loginErrText = ''
-      }
-    };
-    return {
-      qrloginFlag: false,
-      loginForm: {
-          id: '',
-          pass: '',
-      },
-      loginRule: {
-          id: [
-              { validator: validateID, trigger: 'blur' },
-          ],
-          pass: [
-              { validator: validatePW, trigger: 'blur' },
-          ]
-      },
-      loginErrText: '',
-      schoolErrText: '',
-      userOauth: {        // 社群帳號
-          code: '',
-          state: ''
-      },
-      loading: false,
-      sseSurvive: false,
-      joinQRcode: undefined,
-      defaultSchool: {
-        name: '',
-        code: ''
-      },
-      identityFlag: false
-    }
-  },
-  computed: {
-    ...mapState({
-      config: state => state.config
-    }),
-    ...mapGetters({
-        srvAdr: 'config/getSrvAdr'
-    }),
-    loginFormEnter: function(){
-      let flag = false
-      if(this.loginForm.id && this.loginForm.pass) flag = true
-      return flag
-    }
-  },
-  created() {
-    // 此頁面為老師頁面
-    localStorage.setItem('identity', 'teacher')
-
-    // 取得學校設定簡碼
-    this.setDefSchool()
-  },
-  methods: {
-    chgLoginType: function(){ // 變更登入類型
-      this.qrloginFlag = !this.qrloginFlag
-      if(this.qrloginFlag && !this.sseSurvive) {
-        // SSE 連線
-        this.SEELink()
-      }
-    },
-    loginSubmit: function(name){  // 登入
-      this.$refs[name].validate( async(valid) => {        
-        if (valid) {
-          this.loading = true // 登入中動畫
-          let result; // 輸出暫存
-          let isFail = false // 失敗flag
-            // 詢問帳號是否有效
-            await this.$api.login.verification({id: this.loginForm.id, pass: this.loginForm.pass}).then(res => {
-              result = res
-            }).catch(err=>{
-              isFail = true
-            })
-            console.log('res***',result)
-            if(isFail){
-              this.loginErrText = this.$t('login.apiError.text1')
-              this.loading = false
+    data() {
+        const validateID = (rule, value, callback) => {
+            if (value === '') {
+                callback(new Error());
+                this.loginErrText = this.$t('error.required')
+            } else if (value.search(/^\+/) == 0) {
+                callback(new Error());
+                this.loginErrText = this.$t('error.format.default')
             } else {
-              this.loginProcess(result, this.defaultSchool.code)
+                if (value.indexOf('@') >= 0) { //是否為Email
+                    var emailRule = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]+$/;
+                    if (value.search(emailRule) != -1) {
+                        callback();
+                        this.loginErrText = ''
+                    } else {
+                        callback(new Error());
+                        this.loginErrText = this.$t('error.format.email')
+                    }
+                } else {
+                    callback();
+                    this.loginErrText = ''
+                }
             }
+        };
+        const validatePW = (rule, value, callback) => {
+            if (value === '') {
+                callback(new Error());
+                this.loginErrText = this.$t('error.required')
+            }
+            else {
+                callback();
+                this.loginErrText = ''
+            }
+        };
+        return {
+            qrloginFlag: false,
+            loginForm: {
+                id: '',
+                pass: '',
+            },
+            loginRule: {
+                id: [
+                    { validator: validateID, trigger: 'blur' },
+                ],
+                pass: [
+                    { validator: validatePW, trigger: 'blur' },
+                ]
+            },
+            loginErrText: '',
+            schoolErrText: '',
+            userOauth: {        // 社群帳號
+                code: '',
+                state: ''
+            },
+            loading: false,
+            sseSurvive: false,
+            joinQRcode: undefined,
+            defaultSchool: {
+                name: '',
+                code: ''
+            },
+            identityFlag: false
         }
-      })
     },
-    oauthLogin: function(provider){ // 第三方登入
-      let redirect_uri = window.location.origin + '/login';
-      this.$api.BuildOauthUrl(provider, redirect_uri).then(res=>{
-          window.location.href = res
-      })
+    computed: {
+        ...mapState({
+            config: state => state.config
+        }),
+        ...mapGetters({
+            srvAdr: 'config/getSrvAdr'
+        }),
+        loginFormEnter: function () {
+            let flag = false
+            if (this.loginForm.id && this.loginForm.pass) flag = true
+            return flag
+        }
     },
-    SEELink: function() { // 開啟SSE連結
-      if(!this.sseSurvive){
-        let url = this.config[this.srvAdr].coreAPIUrl
+    created() {
+        // 此頁面為老師頁面
+        localStorage.setItem('identity', 'teacher')
 
-        let es = new EventSourcePolyfill(url+'/service/sse',{headers: {'X-Auth-Name': 'IES5'}});
-        let _this = this;
+        // 取得學校設定簡碼
+        this.setDefSchool()
+    },
+    methods: {
+        chgLoginType: function () { // 變更登入類型
+            this.qrloginFlag = !this.qrloginFlag
+            if (this.qrloginFlag && !this.sseSurvive) {
+                // SSE 連線
+                this.SEELink()
+            }
+        },
+        loginSubmit: function (name) {  // 登入
+            this.$refs[name].validate(async (valid) => {
+                if (valid) {
+                    this.loading = true // 登入中動畫
+                    let result; // 輸出暫存
+                    let isFail = false // 失敗flag
+                    // 詢問帳號是否有效
+                    await this.$api.login.verification({ id: this.loginForm.id, pass: this.loginForm.pass }).then(res => {
+                        result = res
+                    }).catch(err => {
+                        isFail = true
+                    })
+                    console.log('res***', result)
+                    if (isFail) {
+                        this.loginErrText = this.$t('login.apiError.text1')
+                        this.loading = false
+                    } else {
+                        this.loginProcess(result, this.defaultSchool.code)
+                    }
+                }
+            })
+        },
+        oauthLogin: function (provider) { // 第三方登入
+            let redirect_uri = window.location.origin + '/login';
+            this.$api.BuildOauthUrl(provider, redirect_uri).then(res => {
+                window.location.href = res
+            })
+        },
+        SEELink: function () { // 開啟SSE連結
+            if (!this.sseSurvive) {
+                let url = this.config[this.srvAdr].coreAPIUrl
 
-        var closeSSE = function(){
-          if(_this.sseSurvive) {
-            es.close();
-            _this.sseSurvive = false
-          }
-        }
+                let es = new EventSourcePolyfill(url + '/service/sse', { headers: { 'X-Auth-Name': 'IES5' } });
+                let _this = this;
 
-        es.addEventListener('open', function (e) {
-          _this.sseSurvive = true
-        }, false);
+                var closeSSE = function () {
+                    if (_this.sseSurvive) {
+                        es.close();
+                        _this.sseSurvive = false
+                    }
+                }
 
-        //取得登入網址
-        es.addEventListener('message', function (e) {
-          if (e.data) {
-            let data = JSON.parse(e.data)
-            
-            if(data.sid) {
-              let qrcodeURL = url + '/qrcode/login?sid=' + encodeURIComponent(data.sid, "utf-8") + '&info=' + encodeURIComponent(_this.$t('login.sse.text1'),"utf-8")
-              _this.crtQrcode(qrcodeURL)
-            } else if(data.code){
-              closeSSE()
-              _this.SSOLogin(data.code)
-            }
+                es.addEventListener('open', function (e) {
+                    _this.sseSurvive = true
+                }, false);
 
-          }
-        }, false);
+                //取得登入網址
+                es.addEventListener('message', function (e) {
+                    if (e.data) {
+                        let data = JSON.parse(e.data)
 
-        // 錯誤
-        es.addEventListener('error', function (e) {
-          closeSSE()
-        }, false);
+                        if (data.sid) {
+                            let qrcodeURL = url + '/qrcode/login?sid=' + encodeURIComponent(data.sid, "utf-8") + '&info=' + encodeURIComponent(_this.$t('login.sse.text1'), "utf-8")
+                            _this.crtQrcode(qrcodeURL)
+                        } else if (data.code) {
+                            closeSSE()
+                            _this.SSOLogin(data.code)
+                        }
 
-        // 設定五分鐘後關閉連接
-        setTimeout(() => {
-          closeSSE()
-        }, 300000);
-      }
-    },
-    crtQrcode: function(url) { // 開啟QRCODE
-      this.$nextTick(() => {
-        if(this.joinQRcode == undefined){
-          let qrcode = new QRCode('qrcode', {
-            width: 200, // 设置宽度,单位像素
-            height: 200, // 设置高度,单位像素
-            text: url, // 设置二维码内容或跳转地址
-          })
-          this.joinQRcode = qrcode
-        } else {
-          this.joinQRcode.clear()
-          this.joinQRcode.makeCode(url)
-        }
-      })
-    },
-    loginProcess: async function(item, schoolCode){ // 登入用function
-      let result;
+                    }
+                }, false);
 
-      await this.$api.login.loginIES(item, schoolCode).then( res => {
-        result = res
-      })
-      console.log('////',result)
-      //設定權限並登入
-      User.login(result).then(res => {
-        if(res) {
-          this.saveUserCodes({
-            TEAMModelId: result.id,
-            name:result.name,
-            schoolCode: result.defaultschool
-          })
-          this.$router.push({ path: '/home' })
-        }
-      })
-    },
-    saveUserCodes: function (res) {
-		  this.$store.commit('setUserInfo',res)
-	  },
-    setDefSchool: function(){
-      let defschool = sessionStorage.defaultSchool
-      if(defschool){
-        defschool = JSON.parse(decodeURIComponent(defschool), "utf-8")
-        this.defaultSchool.code = defSchool.code
-        this.defaultSchool.name = defSchool.name
-      }      
-    },
-    SSOLogin: function(code){ // 快速登入
-      this.$Spin.show(); //開啟加載畫面
-      this.$api.SSOLogin(code).then( async res=>{
-        this.$Spin.hide(); // 關閉加載畫面
-          if(!res.error){
-            // 登入大雲開始
-            this.loginProcess(res, this.defaultSchool.code)
-          } else {
-            this.$Message.warning(this.$t('login.sse.error.text1'));
-          }
-      })
-    },
-  }
+                // 錯誤
+                es.addEventListener('error', function (e) {
+                    closeSSE()
+                }, false);
+
+                // 設定五分鐘後關閉連接
+                setTimeout(() => {
+                    closeSSE()
+                }, 300000);
+            }
+        },
+        crtQrcode: function (url) { // 開啟QRCODE
+            this.$nextTick(() => {
+                if (this.joinQRcode == undefined) {
+                    let qrcode = new QRCode('qrcode', {
+                        width: 200, // 设置宽度,单位像素
+                        height: 200, // 设置高度,单位像素
+                        text: url, // 设置二维码内容或跳转地址
+                    })
+                    this.joinQRcode = qrcode
+                } else {
+                    this.joinQRcode.clear()
+                    this.joinQRcode.makeCode(url)
+                }
+            })
+        },
+        loginProcess: async function (item, schoolCode) { // 登入用function
+            let result;
+
+            await this.$api.login.loginIES(item, schoolCode).then(res => {
+                result = res
+            })
+            console.log('////', result)
+            //設定權限並登入
+            User.login(result).then(res => {
+                if (res) {
+                    this.saveUserCodes({
+                        TEAMModelId: result.id,
+                        name: result.name,
+                        schoolCode: result.defaultschool
+                    })
+                    this.$router.push({ path: '/home' })
+                }
+            })
+        },
+        saveUserCodes: function (res) {
+            this.$store.commit('setUserInfo', res)
+        },
+        setDefSchool: function () {
+            let defschool = sessionStorage.defaultSchool
+            if (defschool) {
+                defschool = JSON.parse(decodeURIComponent(defschool), "utf-8")
+                this.defaultSchool.code = defSchool.code
+                this.defaultSchool.name = defSchool.name
+            }
+        },
+        SSOLogin: function (code) { // 快速登入
+            this.$Spin.show(); //開啟加載畫面
+            this.$api.SSOLogin(code).then(async res => {
+                this.$Spin.hide(); // 關閉加載畫面
+                if (!res.error) {
+                    // 登入大雲開始
+                    this.loginProcess(res, this.defaultSchool.code)
+                } else {
+                    this.$Message.warning(this.$t('login.sse.error.text1'));
+                }
+            })
+        },
+    }
 }
 </script>

+ 222 - 187
TEAMModelOS/ClientApp/src/view/login/test.vue

@@ -1,222 +1,257 @@
 <style lang="less" scoped>
-  @import './Index.less';
+@import "./Index.less";
 </style>
 
 <style lang="less">
-.loginBox{
-  .loginForm{
-    .formItem{
-        input, select{
-            border-radius: 0;
-            font-size: 12px;
+.loginBox {
+    .loginForm {
+        .formItem {
+            input,
+            select {
+                border-radius: 0;
+                font-size: 12px;
+            }
+            .ivu-select-selection {
+                border-radius: 0;
+            }
         }
-        .ivu-select-selection{
-          border-radius: 0;
+        .schoolAutoComplete {
+            height: 170px;
+            .schoolsBox {
+                border-bottom: 1px solid #e9e9e9;
+                padding: 5px 5px 5px 15px;
+                .area {
+                    font-size: 12px;
+                    padding: 5px;
+                }
+            }
         }
-    }
-    .schoolAutoComplete{
-      height: 170px;
-      .schoolsBox{
-        border-bottom: 1px solid #e9e9e9;
-        padding: 5px 5px 5px 15px;
-        .area{
-          font-size: 12px;
-          padding: 5px;
+        .ivu-select-dropdown {
+            border-radius: 0;
         }
-      }
-    }
-    .ivu-select-dropdown{
-      border-radius: 0;
     }
-  }
 }
-.identityModal{
-  .ivu-modal{
-    .ivu-modal-content{
-      background-color: #2a292e;
-      padding: 12px;
-      border: 1px solid #ccc;
-      .ivu-modal-header, .ivu-modal-footer{
-        border: 0;
-      }
-      .ivu-modal-footer{
-        padding: 0;
-      }
-      .ivu-modal-header{
-        padding: 5px 16px;
-        p{
-          color: whitesmoke;
+.identityModal {
+    .ivu-modal {
+        .ivu-modal-content {
+            background-color: #2a292e;
+            padding: 12px;
+            border: 1px solid #ccc;
+            .ivu-modal-header,
+            .ivu-modal-footer {
+                border: 0;
+            }
+            .ivu-modal-footer {
+                padding: 0;
+            }
+            .ivu-modal-header {
+                padding: 5px 16px;
+                p {
+                    color: whitesmoke;
+                }
+            }
+            .identity-body {
+                display: flex;
+                justify-content: space-around;
+                align-items: center;
+                .ivu-btn {
+                    background-color: #1cc0f2;
+                    color: white;
+                    font-weight: bold;
+                    border: 0;
+                    padding: 0 22px;
+                }
+            }
         }
-      }
-      .identity-body{
-        display: flex;
-        justify-content: space-around;
-        align-items: center;
-        .ivu-btn{
-          background-color: #1cc0f2;
-          color: white;
-          font-weight: bold;
-          border: 0;
-          padding: 0 22px;
-        }
-      }
-    }        
-  }
+    }
 }
-.demo-spin-col .ivu-spin-main{
-	background-color: transparent;
-	padding: 0;
+.demo-spin-col .ivu-spin-main {
+    background-color: transparent;
+    padding: 0;
 }
-</style>
-
-<template>
-  <div style="display: flex;
+.login-main-wrap {
+    display: flex;
     justify-content: space-evenly;
     width: 100%;
     height: 600px;
     flex-direction: row;
-    align-items: center;">
-      <div style="width: 45%;
-        max-width: 600px;
-        height: 100%;padding: 12px;display: flex;
+    align-items: center;
+}
+.login-img-wrap {
+    width: 45%;
+    max-width: 600px;
+    height: 100%;
+    padding: 12px;
+    display: flex;
     justify-content: center;
-    align-items: center;">
-        <div style="font-size:45px;
-            color: rgb(255, 255, 255);
-            font-weight: bolder;
-            letter-spacing: 2px;
-            word-break: break-all;
-            line-height: 1;
-            margin-bottom: 21px;">
-          Welcome to new IES5
+    align-items: center;
+}
+
+.login-main-img {
+    width: 100%;
+    height: auto;
+}
+.login-enter-wrap {
+    width: 45%;
+    max-width: 600px;
+    height: 100%;
+    display: flex;
+    flex-direction: row;
+    flex-wrap: nowrap;
+    justify-content: space-evenly;
+    align-items: center;
+    margin-top: -50px;
+}
+.enter-box {
+    width: 150px;
+    // height: 200px;
+    // background-color: #69b0d0;
+    border-radius: 4px;
+    cursor: pointer;
+}
+.enter-type-btn {
+    width: 136px;
+    margin-left: 5px;
+    background-image: url("./../../assets/login/1-7.png");
+    background-repeat: no-repeat;
+    background-size: cover;
+    height: 42px;
+    margin-top: 30px;
+    font-size: 26px;
+    line-height: 42px;
+    color: white;
+    text-align: center;
+}
+</style>
+
+<template>
+    <div class="login-main-wrap">
+        <div class="login-img-wrap">
+            <img src="@/assets/login/1-3.png" class="login-main-img">
         </div>
-        <!-- <p style="color: #9e9e9e;font-size: 14px; margin-bottom: 15px;" v-text="'calc() 是一個 CSS function 作用於屬性設定是數值的時候可以進行加減乘除的運算,例如: <length> 長度、<frequency> 頻率、<angle> 角度、<time> 時間、<number> 數字或者是 <integer> 整數這幾個屬性值都可以使用 calc()。'"></p> -->
-        <!-- <img style="max-width: 400px;" src="https://dozen168.com/wp-content/uploads/2019/06/%E6%B7%A1%E6%B0%B4%E6%99%AF%E9%BB%9E%E6%B7%A1%E6%B0%B4%E9%A2%A8%E6%99%AF%E6%B7%A1%E6%B0%B4%E4%BB%8B%E7%B4%B9%E6%B7%A1%E6%B0%B4%E6%97%85%E9%81%8A%E6%B7%A1%E6%B0%B4%E5%B0%8F%E5%90%83%E6%B7%A1%E6%B0%B4%E7%BE%8E%E9%A3%9F%E6%B7%A1%E6%B0%B4%E6%97%85%E9%81%8A%E6%9B%9C%E8%BC%97%E6%B7%A1%E6%B0%B4%E4%BB%8B%E7%B4%B9%E6%9B%9C%E8%BC%97%E6%B7%A1%E6%B0%B4%E6%99%AF%E9%BB%9E%E4%BB%8B%E7%B4%B9-1168x737.jpg"/> -->
-      </div>
-      <div style="width: 45%;
-              max-width: 600px;
-              height: 100%;
-              display: flex;
-              flex-direction: row;
-              flex-wrap: nowrap;
-              justify-content: space-evenly;
-              align-items: center;">
-            <div style="width: 200px;height: 200px;background-color: #69b0d0;border-radius: 4px;cursor: pointer;" @click="loginTo('teacher')">
-              <img style="display: block;width: 100%;" src="@/assets/icon/teacherIcon.png">
+        <div class="login-enter-wrap">
+            <div class="enter-box" @click="loginTo('teacher')">
+                <img style="display: block;width: 100%;" src="@/assets/login/1-5.png">
+                <p class="enter-type-btn">
+                    教师端
+                </p>
             </div>
-            <div style="width: 200px;;height: 200px;background-color: #94ca87;border-radius: 4px;cursor: pointer;" @click="loginTo('student')">
-              <img style="display: block;width: 100%;" src="@/assets/icon/studentIcon.png">
+            <div class="enter-box" @click="loginTo('student')">
+                <img style="display: block;width: 100%;" src="@/assets/login/1-4.png">
+                <p class="enter-type-btn">
+                    学生端
+                </p>
             </div>
-      </div>
-    <!-- 提示視窗 -->
-    <Modal v-model="identityFlag" width="360" :mask-closable="false" :closable="false" class-name="identityModal">
-        <p slot="header">{{ $t('login.modal.title') }}</p>
-        <div class="identity-body">
-            <Button size="large" @click="goWhere('teacher')">{{ $t('login.modal.btn1') }}</Button>
-            <Button size="large" @click="goWhere('student')">{{ $t('login.modal.btn2') }}</Button>
         </div>
-        <div slot="footer"></div>
-    </Modal>
-  </div>
+        <!-- 提示視窗 -->
+        <Modal v-model="identityFlag" width="360" :mask-closable="false" :closable="false" class-name="identityModal">
+            <p slot="header">{{ $t('login.modal.title') }}</p>
+            <div class="identity-body">
+                <Button size="large" @click="goWhere('teacher')">{{ $t('login.modal.btn1') }}</Button>
+                <Button size="large" @click="goWhere('student')">{{ $t('login.modal.btn2') }}</Button>
+            </div>
+            <div slot="footer"></div>
+        </Modal>
+    </div>
 </template>
 <script>
 import { User } from '@/service/User'
 
 export default {
-  data() {
-    return {
-      defaultSchool: {
-        name: '',
-        code: ''
-      },
-      userOauth:{
-        code: '',
-        state: ''
-      },
-      identityFlag: false
-    }
-  },
-  created() {
-    // 取得學校設定簡碼
-    this.setDefSchool()
+    data() {
+        return {
+            defaultSchool: {
+                name: '',
+                code: ''
+            },
+            userOauth: {
+                code: '',
+                state: ''
+            },
+            identityFlag: false
+        }
+    },
+    created() {
+        // 取得學校設定簡碼
+        this.setDefSchool()
 
-    //TEAMModelID 社群登入資訊
-    this.userOauth.code = this.$route.query.code == undefined ? '' : this.$route.query.code;
-    this.userOauth.state = this.$route.query.state == undefined ? '' : this.$route.query.state;
+        //TEAMModelID 社群登入資訊
+        this.userOauth.code = this.$route.query.code == undefined ? '' : this.$route.query.code;
+        this.userOauth.state = this.$route.query.state == undefined ? '' : this.$route.query.state;
 
-    // 社群帳號登入
-    if(this.userOauth.code != '' & this.userOauth.state !='' ) {
-      this.putUserCode()
-    } else if(this.userOauth.code != ''){ // 大雲快速登入
-      this.SSOLogin(this.userOauth.code)
-    }
-  },
-  methods: {
-    putUserCode: function(){ //如果第三方登入會啟動的function
-      this.$Spin.show(); //開啟加載畫面
-      let redirect_uri = window.location.origin + '/login'
-      this.$api.OauthLogin(this.userOauth.state, this.userOauth.code, redirect_uri).then(res=>{
-        this.$Spin.hide(); //關閉加載畫面
-        this.loginProcess(res, this.defaultSchool.code)
-      })  
+        // 社群帳號登入
+        if (this.userOauth.code != '' & this.userOauth.state != '') {
+            this.putUserCode()
+        } else if (this.userOauth.code != '') { // 大雲快速登入
+            this.SSOLogin(this.userOauth.code)
+        }
     },
-    SSOLogin: function(code){ // 快速登入
-      this.$Spin.show(); //開啟加載畫面
-      this.$api.SSOLogin(code).then( async res=>{
-        this.$Spin.hide(); // 關閉加載畫面
-          if(!res.error){
-            // 登入大雲開始
-            this.loginProcess(res, this.defaultSchool.code)
-          } else {
-            this.$Message.warning(this.$t('login.sse.error.text1'));
-          }
+    methods: {
+        putUserCode: function () { //如果第三方登入會啟動的function
+            this.$Spin.show(); //開啟加載畫面
+            let redirect_uri = window.location.origin + '/login'
+            this.$api.OauthLogin(this.userOauth.state, this.userOauth.code, redirect_uri).then(res => {
+                this.$Spin.hide(); //關閉加載畫面
+                this.loginProcess(res, this.defaultSchool.code)
+            })
+        },
+        SSOLogin: function (code) { // 快速登入
+            this.$Spin.show(); //開啟加載畫面
+            this.$api.SSOLogin(code).then(async res => {
+                this.$Spin.hide(); // 關閉加載畫面
+                if (!res.error) {
+                    // 登入大雲開始
+                    this.loginProcess(res, this.defaultSchool.code)
+                } else {
+                    this.$Message.warning(this.$t('login.sse.error.text1'));
+                }
 
-          this.$router.push({ name: 'login' })
-      })
-    },
-    loginProcess: async function(item, schoolCode){ // 登入用function
-      let result;
+                this.$router.push({ name: 'login' })
+            })
+        },
+        loginProcess: async function (item, schoolCode) { // 登入用function
+            let result;
 
-      await this.$api.login.loginIES(item, schoolCode).then( res => {
-        result = res
-      })
-      console.log('////',result)
-      //設定權限並登入
-      let identity = localStorage.getItem('identity')
-      User.login(result).then(res => {
-        if(res && identity) {
-          this.saveUserCodes({
-            TEAMModelId: result.id,
-            name:result.name,
-            schoolCode: result.defaultschool
-          })
-          let path = identity == 'student' ? '/studentWeb' : '/home'
-          this.$router.push({ path: path })
-        } else {
-          this.identityFlag = true;
+            await this.$api.login.loginIES(item, schoolCode).then(res => {
+                result = res
+            })
+            console.log('////', result)
+            //設定權限並登入
+            let identity = localStorage.getItem('identity')
+            User.login(result).then(res => {
+                if (res && identity) {
+                    this.saveUserCodes({
+                        TEAMModelId: result.id,
+                        name: result.name,
+                        schoolCode: result.defaultschool
+                    })
+                    let path = identity == 'student' ? '/studentWeb' : '/home'
+                    this.$router.push({ path: path })
+                } else {
+                    this.identityFlag = true;
+                }
+            })
+        },
+        saveUserCodes: function (res) {
+            this.$store.commit('setUserInfo', res)
+        },
+        setDefSchool: function () {
+            let defschool = sessionStorage.defaultSchool
+            if (defschool) {
+                defschool = JSON.parse(decodeURIComponent(defschool), "utf-8")
+                this.defaultSchool.code = defSchool.code
+                this.defaultSchool.name = defSchool.name
+            }
+        },
+        goWhere: function (identity) {
+            localStorage.setItem('identity', identity)
+            let path = identity == 'student' ? '/studentWeb' : '/home'
+            this.$router.push({ path: path })
+        },
+        loginTo: function (identity) {
+            let pathname = identity == 'student' ? 'loginStudent' : 'loginTeacher'
+            this.$router.push({ name: pathname })
         }
-      })
-    },
-    saveUserCodes: function (res) {
-  		this.$store.commit('setUserInfo',res)
-	  },
-    setDefSchool: function(){
-      let defschool = sessionStorage.defaultSchool
-      if(defschool){
-        defschool = JSON.parse(decodeURIComponent(defschool), "utf-8")
-        this.defaultSchool.code = defSchool.code
-        this.defaultSchool.name = defSchool.name
-      }      
-    },
-    goWhere: function(identity){
-      localStorage.setItem('identity', identity)
-      let path = identity == 'student' ? '/studentWeb' : '/home'
-      this.$router.push({ path: path })
-    },
-    loginTo: function(identity) {
-      let pathname = identity == 'student' ? 'loginStudent' : 'loginTeacher'
-      this.$router.push({ name: pathname })
     }
-  }
 }
 </script>