Prechádzať zdrojové kódy

Merge branch 'develop5.0-tmd' of http://106.12.23.251:10000/TEAMMODEL/TEAMModelOS into develop5.0-tmd

OnePsycho 4 rokov pred
rodič
commit
dfafbcda75
30 zmenil súbory, kde vykonal 1026 pridanie a 234 odobranie
  1. 54 0
      TEAMModelOS/ClientApp/src/assets/mark/0.svg
  2. 47 0
      TEAMModelOS/ClientApp/src/assets/mark/1.svg
  3. 57 0
      TEAMModelOS/ClientApp/src/assets/mark/2.svg
  4. 51 0
      TEAMModelOS/ClientApp/src/assets/mark/3.svg
  5. 63 0
      TEAMModelOS/ClientApp/src/assets/mark/4.svg
  6. 94 0
      TEAMModelOS/ClientApp/src/assets/mark/5.svg
  7. 77 0
      TEAMModelOS/ClientApp/src/assets/mark/6.svg
  8. 62 0
      TEAMModelOS/ClientApp/src/assets/mark/7.svg
  9. 54 0
      TEAMModelOS/ClientApp/src/assets/mark/8.svg
  10. 2 2
      TEAMModelOS/ClientApp/src/assets/student-web/component_styles/mission-list-card-new.css
  11. 2 2
      TEAMModelOS/ClientApp/src/assets/student-web/component_styles/mission-list-card-new.less
  12. 1 10
      TEAMModelOS/ClientApp/src/assets/student-web/component_styles/paper-test.css
  13. 34 39
      TEAMModelOS/ClientApp/src/assets/student-web/component_styles/vote.css
  14. 29 0
      TEAMModelOS/ClientApp/src/assets/student-web/component_styles/vote.less
  15. 84 83
      TEAMModelOS/ClientApp/src/components/student-web/EventBasicInfo.vue
  16. 1 0
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/LessonTestReport.vue
  17. 14 13
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperView.vue
  18. 33 4
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/Vote.vue
  19. 38 25
      TEAMModelOS/ClientApp/src/components/student-web/EventView/EventList.vue
  20. 81 13
      TEAMModelOS/ClientApp/src/locale/lang/en-US/studentWeb.js
  21. 0 2
      TEAMModelOS/ClientApp/src/locale/lang/zh-CN/studentWeb.js
  22. 22 12
      TEAMModelOS/ClientApp/src/locale/lang/zh-TW/studentWeb.js
  23. 103 17
      TEAMModelOS/ClientApp/src/view/joinclass/JoinClass.vue
  24. 2 2
      TEAMModelOS/ClientApp/src/view/newcourse/MyCourse.less
  25. 11 4
      TEAMModelOS/ClientApp/src/view/newcourse/MyCourse.vue
  26. 3 2
      TEAMModelOS/ClientApp/src/view/student-web/App.vue
  27. 1 1
      TEAMModelOS/ClientApp/src/view/task/mark/ByQu.vue
  28. 1 1
      TEAMModelOS/ClientApp/src/view/task/mark/ByStu.vue
  29. 4 1
      TEAMModelOS/ClientApp/src/view/task/mark/MarkCanvas.vue
  30. 1 1
      TEAMModelOS/Controllers/Syllabus/ShareController.cs

+ 54 - 0
TEAMModelOS/ClientApp/src/assets/mark/0.svg

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFB300;}
+	.st1{fill:#4A6DFB;}
+	.st2{fill:#FBEC6D;}
+	.st3{fill:#FA7D15;}
+	.st4{fill:#2746E0;}
+	.st5{fill:#FFDD2E;}
+	.st6{fill:#B1C1FF;}
+	.st7{fill:#7999FF;}
+	.st8{fill:none;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st9{fill:#FFFFFF;}
+	.st10{fill:none;}
+	.st11{fill:#FFB300;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st12{fill:#4A6DFB;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st13{fill:#FBEC6D;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st14{fill:#FA7D15;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st15{fill:#2746E0;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st16{fill:#FFDD2E;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st17{fill:#B1C1FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st18{fill:#7999FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st19{fill:#FFFFFF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+	<g>
+		<polygon class="st0" points="833.28,590.14 635.35,787.28 620.58,801.99 501.47,683.35 714.17,471.5 		"/>
+		<path class="st3" d="M370.34,693.63L88.72,413.14L412.74,90.42l342.03,340.66L491.16,693.63
+			C457.79,726.85,403.7,726.85,370.34,693.63z"/>
+		<path class="st0" d="M921.61,243.59c0,13.16-5.04,26.32-15.12,36.35L695.46,490.15l-60.11-59.87l-65.82-65.55l65.82-65.55
+			l92.32-91.94c49.39-49.19,129.45-49.19,178.83,0C916.57,217.27,921.61,230.44,921.61,243.59z"/>
+		<path class="st3" d="M921.61,243.59c0,13.16-5.04,26.32-15.12,36.35L695.46,490.15l-60.11-59.87v-131.1l92.32-91.94
+			c49.39-49.19,129.45-49.19,178.83,0C916.57,217.27,921.61,230.44,921.61,243.59z"/>
+		<path class="st2" d="M728.53,457.2L491.15,693.63c-33.36,33.23-87.45,33.23-120.81,0c-82.23-81.9-82.23-214.69,0-296.59
+			c41.12-40.96,95-61.43,148.9-61.43c40.5,0,81.03,11.57,116.11,34.72c11.59,7.64,22.58,16.54,32.78,26.71L728.53,457.2z"/>
+		<path class="st5" d="M385.03,275.88l-76.82-76.51c-29.53-29.42-29.53-77.11,0-106.53l0,0c29.53-29.42,77.42-29.42,106.95,0
+			l76.82,76.51c29.53,29.42,29.53,77.11,0,106.53l0,0C462.45,305.29,414.57,305.29,385.03,275.88z"/>
+		<path class="st5" d="M276.5,383.97l-76.82-76.51c-29.53-29.42-29.53-77.11,0-106.53l0,0c29.53-29.42,77.42-29.42,106.95,0
+			l76.82,76.51c29.53,29.42,29.53,77.11,0,106.53l0,0C353.92,413.39,306.04,413.39,276.5,383.97z"/>
+		<path class="st5" d="M167.97,492.07l-76.82-76.51c-29.53-29.42-29.53-77.11,0-106.53l0,0c29.53-29.42,77.42-29.42,106.95,0
+			l76.82,76.51c29.53,29.42,29.53,77.11,0,106.53l0,0C245.39,521.48,197.51,521.48,167.97,492.07z"/>
+		<polygon class="st3" points="833.28,590.14 635.35,787.28 635.35,550.01 714.17,471.5 		"/>
+		<polygon class="st1" points="955,630.5 635.35,948.87 630.98,953.23 482.44,805.27 635.35,652.98 806.45,482.56 		"/>
+		<polygon class="st4" points="955,630.5 635.35,948.87 635.35,652.98 806.45,482.56 		"/>
+		<path class="st5" d="M728.53,457.2l-93.19,92.81V370.33c11.59,7.64,22.58,16.54,32.78,26.71L728.53,457.2z"/>
+		<ellipse class="st3" cx="834.99" cy="617.4" rx="49.43" ry="49.23"/>
+		<ellipse class="st3" cx="741.47" cy="710.54" rx="49.43" ry="49.23"/>
+	</g>
+</g>
+</svg>

+ 47 - 0
TEAMModelOS/ClientApp/src/assets/mark/1.svg

@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFB300;}
+	.st1{fill:#4A6DFB;}
+	.st2{fill:#FBEC6D;}
+	.st3{fill:#FA7D15;}
+	.st4{fill:#2746E0;}
+	.st5{fill:#FFDD2E;}
+	.st6{fill:#B1C1FF;}
+	.st7{fill:#7999FF;}
+	.st8{fill:none;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st9{fill:#FFFFFF;}
+	.st10{fill:none;}
+	.st11{fill:#FFB300;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st12{fill:#4A6DFB;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st13{fill:#FBEC6D;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st14{fill:#FA7D15;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st15{fill:#2746E0;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st16{fill:#FFDD2E;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st17{fill:#B1C1FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st18{fill:#7999FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st19{fill:#FFFFFF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+	<g>
+		<path class="st0" d="M850.73,854.26V955H173.27V854.26c0-65.03,53.02-117.72,118.41-117.72h440.63
+			C797.71,736.54,850.73,789.24,850.73,854.26z"/>
+		<rect x="389.74" y="363.91" class="st1" width="244.52" height="372.63"/>
+		<path class="st6" d="M389.74,628.94h-0.28c-51.87,0-93.93-42.05-93.93-93.93v-77.17c0-51.87,42.05-93.93,93.93-93.93h0.28V628.94z
+			"/>
+		<path class="st7" d="M634.54,628.94h-0.27V363.91h0.27c51.87,0,93.93,42.05,93.93,93.93v77.17
+			C728.46,586.89,686.41,628.94,634.54,628.94z"/>
+		<ellipse class="st0" cx="512" cy="199.6" rx="131.36" ry="130.6"/>
+		<polygon class="st1" points="566.14,777.34 566.14,914.2 459.25,914.2 459.25,860.04 429.8,860.04 429.8,823.44 476.91,777.34 		
+			"/>
+		<path class="st3" d="M850.73,854.26V955H512V736.54h220.32C797.71,736.54,850.73,789.24,850.73,854.26z"/>
+		<rect x="512" y="777.34" class="st4" width="54.14" height="136.86"/>
+		<rect x="512" y="363.91" class="st4" width="122.26" height="372.63"/>
+		<path class="st3" d="M643.36,199.6c0,72.13-58.81,130.6-131.36,130.6V69C584.55,69,643.36,127.47,643.36,199.6z"/>
+	</g>
+</g>
+</svg>

+ 57 - 0
TEAMModelOS/ClientApp/src/assets/mark/2.svg

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFB300;}
+	.st1{fill:#4A6DFB;}
+	.st2{fill:#FBEC6D;}
+	.st3{fill:#FA7D15;}
+	.st4{fill:#2746E0;}
+	.st5{fill:#FFDD2E;}
+	.st6{fill:#B1C1FF;}
+	.st7{fill:#7999FF;}
+	.st8{fill:none;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st9{fill:#FFFFFF;}
+	.st10{fill:none;}
+	.st11{fill:#FFB300;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st12{fill:#4A6DFB;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st13{fill:#FBEC6D;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st14{fill:#FA7D15;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st15{fill:#2746E0;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st16{fill:#FFDD2E;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st17{fill:#B1C1FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st18{fill:#7999FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st19{fill:#FFFFFF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+	<g>
+		<polygon class="st0" points="578.56,845.59 445.44,845.59 474.93,574.8 549.07,574.8 		"/>
+		<polygon class="st3" points="578.56,845.59 510.59,845.59 510.59,574.8 549.07,574.8 		"/>
+		<path class="st3" d="M318.64,482.85h-86.28c-73.58,0-133.45-59.56-133.45-132.77c0-54.14,44.27-98.18,98.68-98.18h121.05
+			c22.05,0,39.92,17.78,39.92,39.72v151.52C358.55,465.07,340.68,482.85,318.64,482.85z M197.58,331.33
+			c-10.39,0-18.84,8.41-18.84,18.74c0,29.41,24.05,53.34,53.61,53.34h46.36v-72.08H197.58z"/>
+		<path class="st3" d="M665.45,443.13V291.62c0-21.94,17.87-39.72,39.92-39.72h121.05c54.41,0,98.68,44.04,98.68,98.18
+			c0,73.21-59.86,132.77-133.45,132.77h-86.28C683.32,482.85,665.45,465.07,665.45,443.13z M745.28,331.33v72.08h46.36
+			c29.56,0,53.61-23.93,53.61-53.34c0-10.33-8.45-18.74-18.84-18.74H745.28z"/>
+		<path class="st2" d="M749.8,224.68v161c0,130.67-106.47,236.6-237.8,236.6h-1.41c-130.68-0.77-236.39-106.4-236.39-236.6v-161
+			H749.8z"/>
+		<path class="st0" d="M827.13,146.85c0,21.49-8.76,40.95-22.91,55.03c-14.16,14.08-33.71,22.8-55.31,22.8H275.1
+			c-43.21,0-78.23-34.84-78.23-77.83c0-21.49,8.76-40.95,22.91-55.05C233.94,77.71,253.5,69,275.1,69h473.8
+			C792.11,69,827.13,103.86,827.13,146.85z"/>
+		<polygon class="st1" points="561.86,393.46 573.64,461.74 512,429.51 510.59,430.24 450.36,461.74 462.14,393.46 412.27,345.1 
+			481.18,335.14 510.59,275.86 512,273.01 542.82,335.14 611.73,345.1 		"/>
+		<polygon class="st4" points="561.86,393.46 573.64,461.74 512,429.51 512,273.01 542.82,335.14 611.73,345.1 		"/>
+		<path class="st3" d="M827.13,146.85c0,21.49-8.76,40.95-22.91,55.03c-14.16,14.08-33.71,22.8-55.31,22.8H510.59V69H748.9
+			C792.11,69,827.13,103.86,827.13,146.85z"/>
+		<path class="st5" d="M749.8,224.68v161c0,130.67-106.47,236.6-237.8,236.6h-1.41v-397.6H749.8z"/>
+		<path class="st2" d="M694.81,955H329.19c0-30.21,12.3-57.57,32.2-77.36c19.91-19.81,47.39-32.05,77.76-32.05h145.71
+			C645.58,845.59,694.81,894.57,694.81,955z"/>
+		<path class="st5" d="M694.81,955H510.59V845.59h74.27C645.58,845.59,694.81,894.57,694.81,955z"/>
+		<polygon class="st4" points="561.86,393.46 573.64,461.74 512,429.51 510.59,430.24 510.59,275.86 512,273.01 542.82,335.14 
+			611.73,345.1 		"/>
+	</g>
+</g>
+</svg>

+ 51 - 0
TEAMModelOS/ClientApp/src/assets/mark/3.svg

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFB300;}
+	.st1{fill:#4A6DFB;}
+	.st2{fill:#FBEC6D;}
+	.st3{fill:#FA7D15;}
+	.st4{fill:#2746E0;}
+	.st5{fill:#FFDD2E;}
+	.st6{fill:#B1C1FF;}
+	.st7{fill:#7999FF;}
+	.st8{fill:none;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st9{fill:#FFFFFF;}
+	.st10{fill:none;}
+	.st11{fill:#FFB300;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st12{fill:#4A6DFB;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st13{fill:#FBEC6D;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st14{fill:#FA7D15;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st15{fill:#2746E0;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st16{fill:#FFDD2E;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st17{fill:#B1C1FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st18{fill:#7999FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st19{fill:#FFFFFF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+	<g>
+		<path class="st0" d="M863.84,430.19v490.27c0,19.08-15.5,34.54-34.62,34.54H194.79c-19.12,0-34.62-15.46-34.62-34.54V430.19
+			H863.84z"/>
+		<path class="st1" d="M357.23,69c-56.53,0-102.34,45.71-102.34,102.1c0,28.2,11.45,53.71,29.97,72.19s44.11,29.91,72.37,29.91
+			h102.34V171.1C459.57,114.71,413.75,69,357.23,69z M388.52,202.32h-31.3c-17.26,0-31.29-14.01-31.29-31.22
+			c0-17.21,14.03-31.22,31.29-31.22c17.25,0,31.3,14.01,31.3,31.22V202.32z"/>
+		<path class="st4" d="M564.43,171.1v102.1h102.34c28.26,0,53.85-11.43,72.37-29.91s29.97-43.99,29.97-72.19
+			c0-56.38-45.81-102.1-102.34-102.1C610.26,69,564.43,114.71,564.43,171.1z M635.48,171.1c0-17.21,14.04-31.22,31.3-31.22
+			c17.26,0,31.29,14.01,31.29,31.22c0,17.21-14.03,31.22-31.29,31.22h-31.3V171.1z"/>
+		<path class="st3" d="M863.84,430.19v490.27c0,19.08-15.5,34.54-34.62,34.54H512V430.19H863.84z"/>
+		<path class="st2" d="M892.6,309.09v121.1H131.4v-121.1c0-19.82,16.12-35.9,35.98-35.9h689.23
+			C876.48,273.19,892.6,289.27,892.6,309.09z"/>
+		<path class="st5" d="M892.6,309.09v121.1H512v-157h344.61C876.48,273.19,892.6,289.27,892.6,309.09z"/>
+		<rect x="459.57" y="273.19" class="st6" width="104.86" height="157"/>
+		<rect x="459.57" y="430.19" class="st1" width="104.86" height="524.81"/>
+		<rect x="160.16" y="581.23" class="st6" width="703.67" height="104.61"/>
+		<rect x="512" y="430.19" class="st4" width="52.43" height="524.81"/>
+		<rect x="512" y="273.19" class="st7" width="52.43" height="157"/>
+		<rect x="512" y="581.23" class="st7" width="351.84" height="104.61"/>
+	</g>
+</g>
+</svg>

+ 63 - 0
TEAMModelOS/ClientApp/src/assets/mark/4.svg

@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFB300;}
+	.st1{fill:#4A6DFB;}
+	.st2{fill:#FBEC6D;}
+	.st3{fill:#FA7D15;}
+	.st4{fill:#2746E0;}
+	.st5{fill:#FFDD2E;}
+	.st6{fill:#B1C1FF;}
+	.st7{fill:#7999FF;}
+	.st8{fill:none;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st9{fill:#FFFFFF;}
+	.st10{fill:none;}
+	.st11{fill:#FFB300;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st12{fill:#4A6DFB;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st13{fill:#FBEC6D;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st14{fill:#FA7D15;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st15{fill:#2746E0;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st16{fill:#FFDD2E;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st17{fill:#B1C1FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st18{fill:#7999FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st19{fill:#FFFFFF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+	<g>
+		<polygon class="st0" points="559.21,330.91 955,723.6 732.07,944.65 336.28,551.95 		"/>
+		<polygon class="st3" points="492.81,396.75 888.59,789.45 798.47,878.8 402.69,486.11 		"/>
+		<polygon class="st6" points="464.22,330.84 69,722.97 292.25,944.33 687.47,552.2 		"/>
+		<polygon class="st7" points="530.72,396.78 135.5,788.91 225.75,878.39 620.97,486.26 		"/>
+		<g>
+			<g>
+				<path class="st2" d="M515.71,419.53c0,0,7.63,154.93-37.63,199.8s-118.63,44.87-163.89,0s-45.26-117.62,0-162.49
+					S515.71,419.53,515.71,419.53z"/>
+				<path class="st5" d="M515.71,419.53c0,0,156.26-7.56,201.52,37.31s45.26,117.62,0,162.49s-118.63,44.87-163.89,0
+					S515.71,419.53,515.71,419.53z"/>
+				<path class="st5" d="M515.71,419.53c0,0-7.63-154.93,37.63-199.8s118.63-44.87,163.89,0s45.26,117.62,0,162.49
+					S515.71,419.53,515.71,419.53z"/>
+				<path class="st2" d="M515.71,419.53c0,0-156.26,7.56-201.52-37.31s-45.26-117.62,0-162.49s118.63-44.87,163.89,0
+					S515.71,419.53,515.71,419.53z"/>
+			</g>
+			<path class="st0" d="M515.71,419.53c0,0-126.54,138.33-203.59,138.33s-139.52-61.93-139.52-138.33S235.06,281.2,312.12,281.2
+				S515.71,419.53,515.71,419.53z"/>
+			<path class="st0" d="M655.22,621.39c0,76.4-62.45,138.33-139.51,138.33h-0.5c-76.85-0.27-139.02-62.11-139.02-138.33
+				c0-73.73,129.97-193.18,139.02-201.4c0.33-0.31,0.5-0.46,0.5-0.46S655.22,544.99,655.22,621.39z"/>
+			<path class="st3" d="M515.71,419.53c0,0,126.54-138.33,203.59-138.33s139.52,61.93,139.52,138.33S796.36,557.86,719.3,557.86
+				S515.71,419.53,515.71,419.53z"/>
+			<path class="st0" d="M655.22,217.69c0,76.4-139.51,201.84-139.51,201.84s-0.17-0.15-0.5-0.46
+				c-9.05-8.22-139.02-127.65-139.02-201.38c0-76.24,62.18-138.06,139.02-138.33h0.5C592.77,79.35,655.22,141.27,655.22,217.69z"/>
+			<path class="st3" d="M655.22,621.39c0,76.4-62.45,138.33-139.51,138.33h-0.5V419.99c0.33-0.31,0.5-0.46,0.5-0.46
+				S655.22,544.99,655.22,621.39z"/>
+			<path class="st3" d="M655.22,217.69c0,76.4-139.51,201.84-139.51,201.84s-0.17-0.15-0.5-0.46V79.35h0.5
+				C592.77,79.35,655.22,141.27,655.22,217.69z"/>
+			<ellipse class="st5" cx="515.22" cy="419.07" rx="107.05" ry="106.13"/>
+			<ellipse class="st1" cx="515.22" cy="419.07" rx="58.15" ry="57.65"/>
+		</g>
+	</g>
+</g>
+</svg>

+ 94 - 0
TEAMModelOS/ClientApp/src/assets/mark/5.svg

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFB300;}
+	.st1{fill:#4A6DFB;}
+	.st2{fill:#FBEC6D;}
+	.st3{fill:#FA7D15;}
+	.st4{fill:#2746E0;}
+	.st5{fill:#FFDD2E;}
+	.st6{fill:#B1C1FF;}
+	.st7{fill:#7999FF;}
+	.st8{fill:none;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st9{fill:#FFFFFF;}
+	.st10{fill:none;}
+	.st11{fill:#FFB300;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st12{fill:#4A6DFB;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st13{fill:#FBEC6D;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st14{fill:#FA7D15;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st15{fill:#2746E0;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st16{fill:#FFDD2E;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st17{fill:#B1C1FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st18{fill:#7999FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st19{fill:#FFFFFF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+	<g>
+		<g>
+			<path class="st1" d="M644.91,389.7c-4.15,4.02-6.04,9.83-5.04,15.52l22.44,127.87c2.51,14.27-12.48,25.17-25.25,18.38
+				L522.6,490.57c-2.54-1.35-5.34-2.03-8.14-2.03c-2.79,0-5.6,0.67-8.15,2.03l-114.47,60.89c-12.77,6.8-27.75-4.11-25.25-18.38
+				l22.44-127.87c1-5.69-0.88-11.5-5.03-15.52l-93.19-90.23c-10.4-10.07-4.67-27.71,9.64-29.74L428.8,251.6
+				c5.71-0.8,10.65-4.4,13.18-9.59l56.87-116.66c3.18-6.51,9.39-9.76,15.61-9.76c6.22,0,12.42,3.26,15.6,9.76l56.87,116.66
+				c2.53,5.19,7.47,8.78,13.18,9.59l128.33,18.13c14.32,2.02,20.04,19.67,9.64,29.74L644.91,389.7z"/>
+			<polygon class="st6" points="603.62,382.43 625.06,507.71 514.46,449.39 512.86,448.56 400.66,507.71 422.1,382.43 
+				331.33,293.68 456.76,275.4 512.86,161.41 514.46,164.65 568.96,275.4 694.39,293.68 			"/>
+			<path class="st4" d="M644.91,389.7c-4.15,4.02-6.04,9.83-5.04,15.52l22.44,127.87c2.51,14.27-12.48,25.17-25.25,18.38
+				L522.6,490.57c-2.54-1.35-5.34-2.03-8.14-2.03V115.58c6.22,0,12.42,3.26,15.6,9.76l56.87,116.66c2.53,5.19,7.47,8.78,13.18,9.59
+				l128.33,18.13c14.32,2.02,20.04,19.67,9.64,29.74L644.91,389.7z"/>
+			<polygon class="st7" points="603.62,382.43 625.06,507.71 514.46,449.39 514.46,164.65 568.96,275.4 694.39,293.68 			"/>
+			<polygon class="st0" points="546.12,355.64 553.84,399.62 514.46,378.68 475.08,399.62 482.8,355.64 450.74,324.59 
+				494.89,318.36 514.46,278.22 534.02,318.36 578.17,324.59 			"/>
+			<polygon class="st3" points="546.12,355.64 553.84,399.62 514.46,378.68 514.46,278.22 534.02,318.36 578.17,324.59 			"/>
+		</g>
+		<g>
+			<path class="st8" d="M512,774.68c-188.27,0-340.9-152.88-340.9-341.48c0-89.41,34.31-170.8,90.45-231.67"/>
+			<path class="st0" d="M256.31,383.43c-20.56,18.43-47.99,24.29-72.91,18.1c-3.41-25.48,5.43-52.16,26-70.6
+				c20.57-18.44,48.01-24.3,72.92-18.09C285.72,338.34,276.87,365,256.31,383.43z"/>
+			<path class="st0" d="M157.51,323.47c14.55,23.49,15.55,51.56,5.13,75.07c-25.64-1.06-50.33-14.42-64.89-37.91
+				c-14.56-23.49-15.55-51.58-5.12-75.07C118.29,286.63,142.96,299.98,157.51,323.47z"/>
+			<path class="st0" d="M252.87,482.35c-15.39,22.94-40.53,35.39-66.21,35.54c-9.58-23.85-7.57-51.89,7.83-74.84
+				c15.4-22.95,40.55-35.4,66.22-35.53C270.27,431.39,268.26,459.41,252.87,482.35z"/>
+			<path class="st0" d="M142.36,448.62c19.88,19.17,27.76,46.13,23.44,71.49c-25.11,5.3-52.33-1.55-72.22-20.72
+				c-19.89-19.18-27.76-46.15-23.43-71.49C95.28,422.61,122.48,429.46,142.36,448.62z"/>
+			<path class="st0" d="M288.47,569.42c-6.59,26.84-25.93,47.18-50,56.16c-17.17-19.11-24.9-46.13-18.31-72.98
+				c6.59-26.85,25.95-47.2,50.01-56.15C287.34,515.57,295.06,542.57,288.47,569.42z"/>
+			<path class="st0" d="M173.12,575.76c25.25,11.16,41.88,33.77,46.53,59.07c-21.77,13.62-49.67,16.55-74.93,5.39
+				c-25.26-11.17-41.9-33.79-46.52-59.08C119.98,567.53,147.88,564.6,173.12,575.76z"/>
+			<path class="st0" d="M360.2,642.76c1.49,27.6-11.1,52.7-31.52,68.3c-21.98-13.27-37.22-36.87-38.71-64.49
+				c-1.49-27.61,11.11-52.72,31.53-68.3C343.48,591.57,358.71,615.16,360.2,642.76z"/>
+			<path class="st0" d="M251.69,682.45c27.4,3.32,49.88,20.1,61.67,42.95c-16.87,19.38-42.72,30.31-70.12,26.99
+				c-27.41-3.32-49.91-20.12-61.67-42.96C198.46,690.06,224.29,679.13,251.69,682.45z"/>
+			<path class="st0" d="M256.11,271.1c-14.36,23.6-38.93,37.16-64.57,38.44c-10.62-23.4-9.86-51.5,4.51-75.11
+				c14.37-23.61,38.95-37.17,64.58-38.44C271.24,219.42,270.47,247.5,256.11,271.1z"/>
+			<path class="st8" d="M512,774.68c188.27,0,340.9-152.88,340.9-341.48c0-89.41-34.31-170.8-90.45-231.67"/>
+			<path class="st3" d="M767.69,383.43c20.56,18.43,47.99,24.29,72.91,18.1c3.41-25.48-5.43-52.16-26-70.6
+				c-20.57-18.44-48.01-24.3-72.92-18.09C738.28,338.34,747.13,365,767.69,383.43z"/>
+			<path class="st3" d="M866.49,323.47c-14.55,23.49-15.55,51.56-5.13,75.07c25.64-1.06,50.33-14.42,64.89-37.91
+				c14.56-23.49,15.55-51.58,5.12-75.07C905.71,286.63,881.04,299.98,866.49,323.47z"/>
+			<path class="st3" d="M771.13,482.35c15.39,22.94,40.53,35.39,66.21,35.54c9.58-23.85,7.57-51.89-7.83-74.84
+				c-15.4-22.95-40.55-35.4-66.22-35.53C753.73,431.39,755.74,459.41,771.13,482.35z"/>
+			<path class="st3" d="M881.64,448.62c-19.88,19.17-27.76,46.13-23.44,71.49c25.11,5.3,52.33-1.55,72.22-20.72
+				c19.89-19.18,27.76-46.15,23.43-71.49C928.72,422.61,901.52,429.46,881.64,448.62z"/>
+			<path class="st3" d="M735.53,569.42c6.59,26.84,25.93,47.18,50,56.16c17.17-19.11,24.9-46.13,18.31-72.98
+				c-6.59-26.85-25.95-47.2-50.01-56.15C736.66,515.57,728.94,542.57,735.53,569.42z"/>
+			<path class="st3" d="M850.88,575.76c-25.25,11.16-41.88,33.77-46.53,59.07c21.77,13.62,49.67,16.55,74.93,5.39
+				c25.26-11.17,41.9-33.79,46.52-59.08C904.02,567.53,876.12,564.6,850.88,575.76z"/>
+			<path class="st3" d="M663.8,642.76c-1.49,27.6,11.1,52.7,31.52,68.3c21.98-13.27,37.22-36.87,38.71-64.49
+				c1.49-27.61-11.11-52.72-31.53-68.3C680.52,591.57,665.29,615.16,663.8,642.76z"/>
+			<path class="st3" d="M772.31,682.45c-27.4,3.32-49.88,20.1-61.67,42.95c16.87,19.38,42.72,30.31,70.12,26.99
+				c27.41-3.32,49.91-20.12,61.67-42.96C825.54,690.06,799.71,679.13,772.31,682.45z"/>
+			<path class="st3" d="M767.89,271.1c14.36,23.6,38.93,37.16,64.57,38.44c10.62-23.4,9.86-51.5-4.51-75.11
+				C813.58,210.82,789,197.26,763.37,196C752.76,219.42,753.53,247.5,767.89,271.1z"/>
+			<ellipse class="st2" cx="510.25" cy="774.67" rx="133.53" ry="133.75"/>
+			<path class="st5" d="M643.78,774.67c0,73.87-59.78,133.75-133.53,133.75V640.91C583.99,640.91,643.78,700.8,643.78,774.67z"/>
+			<path class="st0" d="M570.55,774.67c0,33.36-26.99,60.4-60.3,60.4s-60.31-27.04-60.31-60.4c0-33.36,27-60.4,60.31-60.4
+				S570.55,741.31,570.55,774.67z"/>
+			<path class="st3" d="M570.55,774.67c0,33.36-26.99,60.4-60.3,60.4v-120.8C543.55,714.27,570.55,741.31,570.55,774.67z"/>
+		</g>
+	</g>
+</g>
+</svg>

+ 77 - 0
TEAMModelOS/ClientApp/src/assets/mark/6.svg

@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFB300;}
+	.st1{fill:#4A6DFB;}
+	.st2{fill:#FBEC6D;}
+	.st3{fill:#FA7D15;}
+	.st4{fill:#2746E0;}
+	.st5{fill:#FFDD2E;}
+	.st6{fill:#B1C1FF;}
+	.st7{fill:#7999FF;}
+	.st8{fill:none;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st9{fill:#FFFFFF;}
+	.st10{fill:none;}
+	.st11{fill:#FFB300;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st12{fill:#4A6DFB;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st13{fill:#FBEC6D;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st14{fill:#FA7D15;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st15{fill:#2746E0;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st16{fill:#FFDD2E;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st17{fill:#B1C1FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st18{fill:#7999FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st19{fill:#FFFFFF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+	<g>
+		<path class="st2" d="M690.41,548.08l-46.02,16.25c-14.57,5.15-21.46,21.79-14.79,35.73l20.97,43.81
+			c10.56,22.06-12.42,45.16-34.53,34.72l-44.79-21.14c-13.88-6.54-30.38,0.29-35.56,14.75l-16.61,46.41
+			c-4.35,12.15-15.5,17.86-26.25,17.15c-9.57-0.63-18.82-6.34-22.69-17.15l-16.61-46.41c-5.18-14.46-21.68-21.29-35.56-14.75
+			l-44.79,21.14c-22.11,10.44-45.09-12.66-34.53-34.72l20.97-43.81c6.67-13.94-0.22-30.58-14.79-35.73l-46.02-16.25
+			c-23.11-8.16-23.11-40.84,0-49l46.02-16.25c14.57-5.15,21.46-21.78,14.79-35.72l-20.97-43.82
+			c-10.56-22.05,12.42-45.16,34.53-34.72l44.79,21.14c13.88,6.55,30.38-0.29,35.56-14.74l16.61-46.41
+			c3.87-10.81,13.12-16.53,22.69-17.16c10.75-0.71,21.9,5.02,26.25,17.16l16.61,46.41c5.18,14.45,21.68,21.29,35.56,14.74
+			l44.79-21.14c22.11-10.44,45.09,12.67,34.53,34.72l-20.97,43.82c-6.67,13.94,0.22,30.57,14.79,35.72l46.02,16.25
+			C713.52,507.24,713.52,539.92,690.41,548.08z"/>
+		<path class="st0" d="M587.35,533.07l-0.78,0.75c-9.97,9.6-14.55,23.51-12.24,37.15l0.23,1.36c5.8,34.15-30.04,60.15-60.7,44.04
+			l-1.97-1.04c-5.96-3.13-12.51-4.74-19.05-4.8c-6.74-0.07-13.51,1.49-19.67,4.69l-1.97,1.03c-30.75,15.95-66.46-10.26-60.46-44.38
+			l0.23-1.35c2.4-13.63-2.11-27.56-12.02-37.22l-0.77-0.75c-24.92-24.25-11.1-66.54,23.32-71.4l1.59-0.23
+			c13.61-1.92,25.4-10.41,31.55-22.7l0.93-1.86c7.69-15.37,22.48-23.06,37.28-23.11c14.97-0.05,29.96,7.72,37.66,23.32l0.92,1.86
+			c6.08,12.33,17.83,20.88,31.43,22.88l1.58,0.23C598.81,466.6,612.39,508.96,587.35,533.07z"/>
+		<ellipse class="st4" cx="373.01" cy="899.53" rx="55.86" ry="55.47"/>
+		<ellipse class="st1" cx="347.63" cy="152.97" rx="55.86" ry="55.47"/>
+		<ellipse class="st1" cx="741.21" cy="102.97" rx="34.2" ry="33.97"/>
+		<ellipse class="st6" cx="182.17" cy="670.65" rx="34.2" ry="33.97"/>
+		<ellipse class="st3" cx="841.83" cy="645.65" rx="34.2" ry="33.97"/>
+		<ellipse class="st3" cx="592.27" cy="161.36" rx="34.2" ry="33.97"/>
+		<g>
+			<line class="st8" x1="715.55" y1="304.19" x2="807.62" y2="212.75"/>
+			<line class="st8" x1="181.61" y1="834.42" x2="273.69" y2="742.98"/>
+			<line class="st8" x1="715.55" y1="742.98" x2="807.62" y2="834.42"/>
+			<line class="st8" x1="181.61" y1="212.75" x2="273.69" y2="304.19"/>
+		</g>
+		<path class="st5" d="M690.41,548.08l-46.02,16.25c-14.57,5.15-21.46,21.79-14.79,35.73l20.97,43.81
+			c10.56,22.06-12.42,45.16-34.53,34.72l-44.79-21.14c-13.88-6.54-30.38,0.29-35.56,14.75l-16.61,46.41
+			c-4.35,12.15-15.5,17.86-26.25,17.15V311.4c10.75-0.71,21.9,5.02,26.25,17.16l16.61,46.41c5.18,14.45,21.68,21.29,35.56,14.74
+			l44.79-21.14c22.11-10.44,45.09,12.67,34.53,34.72l-20.97,43.82c-6.67,13.94,0.22,30.57,14.79,35.72l46.02,16.25
+			C713.52,507.24,713.52,539.92,690.41,548.08z"/>
+		<path class="st3" d="M587.35,533.07l-0.78,0.75c-9.97,9.6-14.55,23.51-12.24,37.15l0.23,1.36c5.8,34.15-30.04,60.15-60.7,44.04
+			l-1.97-1.04c-5.96-3.13-12.51-4.74-19.05-4.8V413.25c14.97-0.05,29.96,7.72,37.66,23.32l0.92,1.86
+			c6.08,12.33,17.83,20.88,31.43,22.88l1.58,0.23C598.81,466.6,612.39,508.96,587.35,533.07z"/>
+		<path class="st3" d="M630.72,772.48l7.47,17.13c1.54,3.54,5.21,5.65,9.04,5.22l18.57-2.1c7.63-0.86,12.61,7.78,8.06,13.95
+			l-11.1,15.03c-2.29,3.1-2.29,7.34,0,10.44l11.1,15.03c4.56,6.17-0.43,14.81-8.06,13.95l-18.57-2.1c-3.83-0.43-7.5,1.68-9.04,5.22
+			l-7.47,17.13c-3.07,7.03-13.04,7.03-16.11,0l-7.47-17.13c-1.54-3.54-5.21-5.65-9.04-5.22l-18.57,2.1
+			c-7.63,0.86-12.61-7.78-8.06-13.95l11.1-15.03c2.29-3.1,2.29-7.34,0-10.44l-11.1-15.03c-4.56-6.17,0.43-14.81,8.06-13.95
+			l18.57,2.1c3.83,0.43,7.5-1.68,9.04-5.22l7.47-17.13C617.68,765.45,627.66,765.45,630.72,772.48z"/>
+		<path class="st0" d="M224.43,338.16l7.47,17.13c1.54,3.54,5.21,5.65,9.04,5.22l18.57-2.1c7.63-0.86,12.61,7.78,8.06,13.95
+			l-11.1,15.03c-2.29,3.1-2.29,7.34,0,10.44l11.1,15.03c4.56,6.17-0.43,14.81-8.06,13.95l-18.57-2.1c-3.83-0.43-7.5,1.68-9.04,5.22
+			l-7.47,17.13c-3.07,7.03-13.04,7.03-16.11,0l-7.47-17.13c-1.54-3.54-5.21-5.65-9.04-5.22l-18.57,2.1
+			c-7.63,0.86-12.61-7.78-8.06-13.95l11.1-15.03c2.29-3.1,2.29-7.34,0-10.44l-11.1-15.03c-4.56-6.17,0.43-14.81,8.06-13.95
+			l18.57,2.1c3.83,0.43,7.5-1.68,9.04-5.22l7.47-17.13C211.39,331.13,221.37,331.13,224.43,338.16z"/>
+	</g>
+</g>
+</svg>

+ 62 - 0
TEAMModelOS/ClientApp/src/assets/mark/7.svg

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFB300;}
+	.st1{fill:#4A6DFB;}
+	.st2{fill:#FBEC6D;}
+	.st3{fill:#FA7D15;}
+	.st4{fill:#2746E0;}
+	.st5{fill:#FFDD2E;}
+	.st6{fill:#B1C1FF;}
+	.st7{fill:#7999FF;}
+	.st8{fill:none;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st9{fill:#FFFFFF;}
+	.st10{fill:none;}
+	.st11{fill:#FFB300;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st12{fill:#4A6DFB;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st13{fill:#FBEC6D;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st14{fill:#FA7D15;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st15{fill:#2746E0;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st16{fill:#FFDD2E;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st17{fill:#B1C1FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st18{fill:#7999FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st19{fill:#FFFFFF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+	<g>
+		<polygon class="st0" points="619.2,737.25 404.8,737.25 467.66,430.27 556.34,430.27 		"/>
+		<path class="st1" d="M695.79,797.31v74.05H328.21v-74.05c0-33.17,26.95-60.06,60.22-60.06h247.14
+			C668.84,737.25,695.79,764.14,695.79,797.31z"/>
+		<path class="st0" d="M723.74,895.87V955H300.26v-59.13c0-13.54,11-24.51,24.57-24.51h374.32
+			C712.73,871.36,723.74,882.33,723.74,895.87z"/>
+		<path class="st3" d="M723.74,895.87V955H511.28v-83.64h187.88C712.73,871.36,723.74,882.33,723.74,895.87z"/>
+		<path class="st4" d="M695.79,797.31v74.05H511.28V737.25h124.29C668.84,737.25,695.79,764.14,695.79,797.31z"/>
+		<polygon class="st3" points="619.2,737.25 511.28,737.25 511.28,430.27 556.34,430.27 		"/>
+		<g>
+			<path class="st1" d="M660.62,380.46c-4.73,4.57-6.88,11.17-5.74,17.63l25.56,145.29c2.86,16.21-14.21,28.6-28.76,20.88
+				l-130.4-69.19c-2.9-1.54-6.08-2.31-9.27-2.31c-3.18,0-6.38,0.76-9.28,2.31l-130.41,69.19c-14.55,7.72-31.62-4.67-28.76-20.88
+				l25.56-145.29c1.14-6.46-1.01-13.07-5.73-17.63L257.23,277.94c-11.84-11.44-5.33-31.49,10.99-33.79l146.21-20.6
+				c6.5-0.91,12.13-5,15.01-10.89l64.79-132.56C497.84,72.7,504.92,69,512,69c7.09,0,14.15,3.7,17.78,11.09l64.79,132.56
+				c2.88,5.89,8.51,9.98,15.02,10.89l146.2,20.6c16.31,2.3,22.83,22.35,10.99,33.79L660.62,380.46z"/>
+			<polygon class="st6" points="613.58,372.2 638.01,514.56 512,448.29 510.18,447.35 382.36,514.56 406.78,372.2 303.38,271.36 
+				446.27,250.59 510.18,121.07 512,124.76 574.09,250.59 716.98,271.36 			"/>
+			<path class="st4" d="M660.62,380.46c-4.73,4.57-6.88,11.17-5.74,17.63l25.56,145.29c2.86,16.21-14.21,28.6-28.76,20.88
+				l-130.4-69.19c-2.9-1.54-6.08-2.31-9.27-2.31V69c7.09,0,14.15,3.7,17.78,11.09l64.79,132.56c2.88,5.89,8.51,9.98,15.02,10.89
+				l146.2,20.6c16.31,2.3,22.83,22.35,10.99,33.79L660.62,380.46z"/>
+			<polygon class="st7" points="613.58,372.2 638.01,514.56 512,448.29 512,124.76 574.09,250.59 716.98,271.36 			"/>
+			<polygon class="st0" points="548.07,341.77 556.86,391.74 512,367.94 467.14,391.74 475.93,341.77 439.42,306.49 489.71,299.41 
+				512,253.8 534.29,299.41 584.58,306.49 			"/>
+			<polygon class="st3" points="548.07,341.77 556.86,391.74 512,367.94 512,253.8 534.29,299.41 584.58,306.49 			"/>
+		</g>
+		<path class="st0" d="M601.49,806.45c0,6.32-2.57,12.04-6.73,16.19c-4.16,4.15-9.9,6.72-16.25,6.72H445.49
+			c-12.69,0-22.98-10.26-22.98-22.91c0-6.33,2.57-12.06,6.73-16.2c4.16-4.15,9.9-6.72,16.25-6.72h133.02
+			C591.2,783.53,601.49,793.79,601.49,806.45z"/>
+		<path class="st3" d="M601.49,806.45c0,6.32-2.57,12.04-6.73,16.19c-4.16,4.15-9.9,6.72-16.25,6.72h-68.33v-45.82h68.33
+			C591.2,783.53,601.49,793.79,601.49,806.45z"/>
+	</g>
+</g>
+</svg>

+ 54 - 0
TEAMModelOS/ClientApp/src/assets/mark/8.svg

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFB300;}
+	.st1{fill:#4A6DFB;}
+	.st2{fill:#FBEC6D;}
+	.st3{fill:#FA7D15;}
+	.st4{fill:#2746E0;}
+	.st5{fill:#FFDD2E;}
+	.st6{fill:#B1C1FF;}
+	.st7{fill:#7999FF;}
+	.st8{fill:none;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st9{fill:#FFFFFF;}
+	.st10{fill:none;}
+	.st11{fill:#FFB300;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st12{fill:#4A6DFB;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st13{fill:#FBEC6D;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st14{fill:#FA7D15;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st15{fill:#2746E0;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st16{fill:#FFDD2E;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st17{fill:#B1C1FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st18{fill:#7999FF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+	.st19{fill:#FFFFFF;stroke:#3E3A39;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
+</style>
+<g id="图层_1">
+</g>
+<g id="图层_2">
+	<g>
+		<rect x="222.43" y="180.69" class="st12" width="580.76" height="215.05"/>
+		<rect x="222.43" y="244.75" class="st13" width="580.76" height="86.94"/>
+		<polygon class="st12" points="479.66,743.94 69,332.75 220.87,180.69 631.54,591.87 		"/>
+		<polygon class="st13" points="524.9,698.64 114.24,287.46 175.63,225.98 586.3,637.17 		"/>
+		<rect x="512.81" y="180.69" class="st15" width="290.38" height="215.05"/>
+		<rect x="512.81" y="244.75" class="st16" width="290.38" height="86.94"/>
+		<polygon class="st12" points="544.34,743.94 955,332.75 803.13,180.69 392.46,591.87 		"/>
+		<polygon class="st11" points="499.1,698.64 909.76,287.46 848.37,225.98 437.7,637.17 		"/>
+		<path class="st13" d="M722.02,633.03c0,115.87-93.59,209.84-209.21,210.28c-0.27,0.01-0.54,0.01-0.81,0.01
+			c-115.99,0-210.02-94.14-210.02-210.29c0-116.14,94.03-210.28,210.02-210.28c0.27,0,0.54,0,0.81,0.01
+			C628.43,423.19,722.02,517.16,722.02,633.03z"/>
+		<path class="st11" d="M653.76,633.03c0,78.12-63.02,141.5-140.94,141.95H512c-78.29,0-141.76-63.55-141.76-141.95
+			c0-78.38,63.46-141.94,141.76-141.94h0.81C590.74,491.53,653.76,554.91,653.76,633.03z"/>
+		<polygon class="st12" points="604.43,665.75 540.57,675.04 512.81,731.34 512,732.99 483.43,675.04 419.57,665.75 465.78,620.64 
+			454.87,556.96 512,587.02 512.81,586.6 569.13,556.96 558.22,620.64 		"/>
+		<polygon class="st17" points="558.22,657.36 569.13,721.05 512.81,691.4 512,690.98 454.87,721.05 465.78,657.36 419.57,612.25 
+			483.43,602.96 512,545.01 512.81,546.66 540.57,602.96 604.43,612.25 		"/>
+		<path class="st16" d="M722.02,633.03c0,115.87-93.59,209.84-209.21,210.28V422.76C628.43,423.19,722.02,517.16,722.02,633.03z"/>
+		<path class="st14" d="M653.76,633.03c0,78.12-63.02,141.5-140.94,141.95V491.09C590.74,491.53,653.76,554.91,653.76,633.03z"/>
+		<polygon class="st15" points="604.43,665.75 540.57,675.04 512.81,731.34 512.81,586.6 569.13,556.96 558.22,620.64 		"/>
+		<polygon class="st18" points="558.22,657.36 569.13,721.05 512.81,691.4 512.81,546.66 540.57,602.96 604.43,612.25 		"/>
+	</g>
+</g>
+</svg>

+ 2 - 2
TEAMModelOS/ClientApp/src/assets/student-web/component_styles/mission-list-card-new.css

@@ -9,7 +9,7 @@
   cursor: pointer;
 }
 .list-new-icon {
-  width: 10%;
+  width: 9%;
   margin-right: 20px;
 }
 .list-new-icon .svg-icon {
@@ -17,7 +17,7 @@
   height: 40px;
 }
 .list-new-title {
-  width: 70%;
+  width: 68%;
   font-weight: bolder;
   font-size: 14px;
   line-height: 22px;

+ 2 - 2
TEAMModelOS/ClientApp/src/assets/student-web/component_styles/mission-list-card-new.less

@@ -10,7 +10,7 @@
     }
 
     &-icon{
-        width: 10%;
+        width: 9%;
         margin-right: 20px;
 
         .svg-icon{
@@ -20,7 +20,7 @@
     }
 
     &-title{
-        width: 70%;
+        width: 68%;
         font-weight: bolder;
         font-size: 14px;
         line-height: 22px;

+ 1 - 10
TEAMModelOS/ClientApp/src/assets/student-web/component_styles/paper-test.css

@@ -684,21 +684,12 @@
         /* overflow-y: scroll; */
         /* font-size: 18px; */
     }
-}
-@media screen and (max-width: 767px) {
-    
-}
-@media screen and (max-width: 767px) {
-    
-}
-@media screen and (max-width: 767px) {
-    
 }
 @media screen and (max-width: 680px) {
     .lesson-test-pop .myProgressBar {
         display: none;
     }
 }
-@media screen and (max-width: 767px) {
+@media screen and (max-width: 500px) {
     
 }

+ 34 - 39
TEAMModelOS/ClientApp/src/assets/student-web/component_styles/vote.css

@@ -1,14 +1,40 @@
+/*常用色票*/
+/*回傳的狀態文字,標題段落的方框,分頁*/
+/*標題類型的標記,編序教材附件按鈕*/
+/*各類項目的懸停與選中狀態*/
+.vote .vote-option {
+  margin-top: 15px;
+  margin-bottom: 10px;
+}
+.vote .vote-option .option-group {
+  display: flex;
+  flex-direction: column;
+}
+.vote .vote-option .option-group .option-wrapper {
+  margin-bottom: 15px;
+  display: flex;
+  align-items: center;
+}
+.vote .vote-option .option-group .option-wrapper .ivu-checkbox {
+  margin-right: 5px;
+}
+.vote .option-repeat .ivu-checkbox {
+  display: none;
+}
+.vote .option-repeat .ivu-input-number {
+  width: 50px;
+}
 .vote .checkAnswer {
-    display: inline-flex;
-    min-width:100px;
-    margin-top: 15px;
-    margin-right:20px;
+  display: block;
+  margin-top: 20px;
+  margin-left: 0px;
 }
 .vote .checkAnswer .testBtn {
-  margin: 10px 0px;
+  margin: 20px 0px;
   position: relative;
   z-index: 2;
   font-weight: bolder;
+  padding-left: 20px;
   cursor: pointer;
 }
 .vote .checkAnswer .testBtn input[type="checkbox"] {
@@ -20,10 +46,6 @@
   border: none;
 }
 .vote .checkAnswer .testBtn input[type="checkbox"]:checked ~ .testbg span {
-  color: #5e5a6e;
-  font-weight: bolder;
-}
-.vote .checkAnswer .testBtn input[type="checkbox"]:checked ~ .testbg .vote-info {
   color: #fff;
   font-weight: bolder;
 }
@@ -35,20 +57,9 @@
   top: -31px;
   padding: 10px;
   z-index: 1;
+  display: flex;
   border-radius: 4px;
   border: 1px solid #c5c5c5;
-  display:flex;
-}
-    .vote  .vote-title {
-        width: 100%;
-        /*display: flex;*/
-}
-    .vote .vote-title .title-rect-group{
-        display:flex;
-    }
-.vote .checkAnswer .testbg .vote-info{
-    width:95%;
-    display:flex;
 }
 .vote .slide-fade-enter-active {
   transition: all 0.3s ease;
@@ -61,11 +72,6 @@
   transform: translateY(-5%);
   opacity: 0;
 }
-.vote .question-box {
-    display: flex;
-    margin-top: 10px;
-    font-size: 16px;
-}
 .vote .votefinished-icon {
   font-size: 80px;
   position: relative;
@@ -74,7 +80,7 @@
 }
 .vote .voteResultsItem {
   padding: 10px 20px;
-  /*padding-left: 80px;*/
+  padding-left: 80px;
   z-index: 0 !important;
   position: relative;
 }
@@ -106,19 +112,8 @@
 .vote .vote-chart-card {
   width: 50%;
 }
-.vote .select-voteTime{
-    margin-top:15px;
-}
-.vote .select-voteTime h3{
-   display:inline-flex;
-   width:100%;
-}
-.vote .select-voteBox{
-    float:right;
-    margin-top:-25px;
-}
 @media screen and (max-width: 1200px) {
-    .vote .vote-chart-card {
+  .vote .vote-chart-card {
     width: 70%;
   }
 }

+ 29 - 0
TEAMModelOS/ClientApp/src/assets/student-web/component_styles/vote.less

@@ -1,6 +1,35 @@
 @import 'color.less';
 .vote {
     //投票區按鈕
+    .vote-option{
+        margin-top: 15px;
+        margin-bottom: 10px;
+
+        .option-group{
+            display: flex;
+            flex-direction: column;
+
+            .option-wrapper{
+                margin-bottom: 15px;
+                display: flex;
+                align-items: center;
+                // font-weight: 600;
+
+                .ivu-checkbox{
+                    margin-right: 5px;
+                }
+            }
+        }
+    }
+    .option-repeat{
+        .ivu-checkbox{
+            display: none;
+        }
+        .ivu-input-number{
+            width: 50px;
+        }
+    }
+
     .checkAnswer {
         display: block;
         margin-top: 20px;

+ 84 - 83
TEAMModelOS/ClientApp/src/components/student-web/EventBasicInfo.vue

@@ -1,97 +1,98 @@
 <template>
-  <Row :gutter="30">
-    <i-col :xs="24" :sm="24" :md="24" :lg="getCurrentLang()=='tw'?12:24" class="title-part">
-      <h2 class="event-title">
-        <span class="title-mark" v-show="this.$store.getters.getItemTitle.eventType == 'exam'" >{{$t("studentWeb.home.exam")}}</span>
-        <span class="title-mark" v-show="this.$store.getters.getItemTitle.eventType == 'vote'" >{{$t("studentWeb.home.vote")}}</span>
-        <span class="title-mark" v-show="this.$store.getters.getItemTitle.eventType == 'survey'" >{{$t("studentWeb.home.survey")}}</span>
-        {{ this.$store.getters.getItemTitle.name }}
-      </h2>
-    </i-col>
-    <i-col :xs="24" :sm="24" :md="24" :lg="getCurrentLang()=='tw'?12:24" class="info-part">
-      <ul class="base-info" :class="{'base-infoEn':getCurrentLang()=='en'}">
-        <li
-          v-if="this.$store.getters.getItemTitle.eventType == 'exam' && paper.length !== 0 "
-        >
-          <svg-icon icon-class="subject" class="base-info-icon" />{{ $t('studentWeb.baseInfo.subject')}}
-        <span class="base-info-text">{{paper.length > 1? $t('studentWeb.event.allSubject'):paper[0].subject.name }}</span>
-          <!--<span class="base-info-text" v-if="getCurrentLang()=='en'">{{ transSubjecttoEn(this.$store.getters.getItemTitle.eventSubject) }}</span>-->
-        </li>
-        <!--<li>
-          <svg-icon icon-class="teacher" class="base-info-icon" />投票类型:
-          <span class="base-info-text">{{ this.$store.getters.getItemTitle.times }}</span>
-        </li>-->
-        <li>
-          <svg-icon icon-class="time" class="base-info-icon" />
-          <span>{{ !eventType ?  $t('studentWeb.baseInfo.period') :  $t('studentWeb.baseInfo.postTime') }}</span>
-          <span class="base-info-text" v-if="from != '通知'&&from != 'hiteach'">
-              <span>
-                  {{ !eventType ? dateFormat(this.$store.getters.getItemTitle.startTime) + "~" : ""}}
-              </span>
-              {{ dateFormat(this.$store.getters.getItemTitle.endTime) }}
-          </span>
-          <!--<span
-            class="base-info-text"
-            v-if="from == '通知'||from == 'hiteach'"
-          >{{ this.$store.getters.getItemTitle.endTime + " 14:20" }}54345</span>-->
-        </li>
-        <!--<li v-if=" from == 'hiteach'">
-           <svg-icon icon-class="time" class="base-info-icon" />{{$t('studentWeb.baseInfo.classTime')}}:
-          <span class="base-info-text">{{ this.$store.getters.getItemTitle.endTime }}</span>
-        </li>-->
-        <!--<li v-if="finishedCondition && !eventType && from != '通知'&&from!='hiteach'">
-           <svg-icon icon-class="done" class="base-info-icon" />
-          <span class="base-info-text">{{ $t('studentWeb.baseInfo.Fineshed')}}</span>
-        </li>
-        <li v-if="unfinishedCondition && !eventType && from != '通知'&&from!='hiteach'">
-           <svg-icon icon-class="undone" class="base-info-icon" />
-          <span class="base-info-text">{{ $t('studentWeb.baseInfo.unFinished')}}</span>
-        </li>-->
-      </ul>
-    </i-col>
-  </Row>
+    <Row :gutter="30">
+        <i-col :xs="24" :sm="24" :md="24" :lg="getCurrentLang() == 'tw' ? 12 : 24" class="title-part">
+            <h2 class="event-title">
+                <span class="title-mark" v-show="this.$store.getters.getItemTitle.eventType == 'exam'" >{{$t("studentWeb.home.exam")}}</span>
+                <span class="title-mark" v-show="this.$store.getters.getItemTitle.eventType == 'vote'" >{{$t("studentWeb.home.vote")}}</span>
+                <span class="title-mark" v-show="this.$store.getters.getItemTitle.eventType == 'survey'" >{{$t("studentWeb.home.survey")}}</span>
+                {{ this.$store.getters.getItemTitle.name }}
+            </h2>
+        </i-col>
+        <i-col :xs="24" :sm="24" :md="24" :lg="getCurrentLang() == 'tw' ? 12 : 24" class="info-part">
+            <ul class="base-info" :class="{'base-infoEn': getCurrentLang() == 'en'}">
+                <li
+                  v-if="this.$store.getters.getItemTitle.eventType == 'exam' && paper.length !== 0 "
+                >
+                    <svg-icon icon-class="subject" class="base-info-icon" />{{ $t('studentWeb.baseInfo.subject')}}
+                    <span class="base-info-text">{{paper.length > 1 ? $t('studentWeb.event.allSubject') : paper[0].subject.name }}</span>
+                    <!-- <span class="base-info-text" v-if="getCurrentLang()=='en'">{{ transSubjecttoEn(this.$store.getters.getItemTitle.eventSubject) }}</span> -->
+                </li>
+                <!--<li>
+                    <svg-icon icon-class="teacher" class="base-info-icon" />投票类型:
+                    <span class="base-info-text">{{ this.$store.getters.getItemTitle.times }}</span>
+                </li>-->
+                <li>
+                    <svg-icon icon-class="time" class="base-info-icon" />
+                    <span>{{ !eventType ? $t('studentWeb.baseInfo.period') : $t('studentWeb.baseInfo.postTime') }}</span>
+                    <span class="base-info-text" v-if="from != '通知' && from != 'hiteach'">
+                        <span>
+                            {{ !eventType ? dateFormat(this.$store.getters.getItemTitle.startTime) + "~" : ""}}
+                        </span>
+                        {{ dateFormat(this.$store.getters.getItemTitle.endTime) }}
+                    </span>
+                    <!--<span
+                      class="base-info-text"
+                      v-if="from == '通知'||from == 'hiteach'"
+                    >{{ this.$store.getters.getItemTitle.endTime + " 14:20" }}54345</span>-->
+                </li>
+                <!--<li v-if=" from == 'hiteach'">
+                    <svg-icon icon-class="time" class="base-info-icon" />{{$t('studentWeb.baseInfo.classTime')}}:
+                    <span class="base-info-text">{{ this.$store.getters.getItemTitle.endTime }}</span>
+                </li>-->
+                <!--<li v-if="finishedCondition && !eventType && from != '通知'&&from!='hiteach'">
+                    <svg-icon icon-class="done" class="base-info-icon" />
+                    <span class="base-info-text">{{ $t('studentWeb.baseInfo.Fineshed')}}</span>
+                </li>
+                <li v-if="unfinishedCondition && !eventType && from != '通知'&&from!='hiteach'">
+                    <svg-icon icon-class="undone" class="base-info-icon" />
+                    <span class="base-info-text">{{ $t('studentWeb.baseInfo.unFinished')}}</span>
+                </li>-->
+            </ul>
+        </i-col>
+    </Row>
 </template>
 
 <script>
 export default {
-  name: "EventBasicInfo",
-        props: [
-            "eventType", "from",
-            "paper"
-        ],
+    name: "EventBasicInfo",
+    props: [
+        "eventType",
+        "from",
+        "paper"
+    ],
 
-  computed: {
-    finishedCondition: function () {
-      return (
-        this.$store.getters.getItemTitle.isDone ||
-        this.$store.getters.getFinishedItem.includes(
-          this.$store.getters.getItemTitle.eventID
-        ) == true
-      );
+    computed: {
+        finishedCondition: function () {
+            return (
+                this.$store.getters.getItemTitle.isDone ||
+                this.$store.getters.getFinishedItem.includes(
+                  this.$store.getters.getItemTitle.eventID
+                ) == true
+            );
+        },
+        unfinishedCondition: function () {
+            return (
+                !this.$store.getters.getItemTitle.isDone &&
+                this.$store.getters.getFinishedItem.includes(
+                  this.$store.getters.getItemTitle.eventID
+                ) == false
+            );
+        },
     },
-    unfinishedCondition: function () {
-      return (
-        !this.$store.getters.getItemTitle.isDone &&
-        this.$store.getters.getFinishedItem.includes(
-          this.$store.getters.getItemTitle.eventID
-        ) == false
-      );
+    mounted() {
     },
+    methods: {
+        dateFormat(timestamp) {
+            var date = new Date(timestamp)
+            var Y = date.getFullYear() + '-'
+            var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
+            var D = date.getDate() + ' '
+            return Y + M + D;
         },
-        mounted() {
+        getCurrentLang() {
+            return localStorage.getItem('lang');
         },
-        methods: {
-            dateFormat(timestamp) {
-                var date = new Date(timestamp)
-                var Y = date.getFullYear() + '-'
-                var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
-                var D = date.getDate() + ' '
-                return Y + M + D;
-            },
-    getCurrentLang() {
-      return localStorage.getItem('lang');
     },
-  },
 };
 </script>
 

+ 1 - 0
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/LessonTestReport.vue

@@ -594,6 +594,7 @@
                             if (this.examInfo.stuScore[i] == -1) {
                                 info.noAns++
                             } else if (this.examInfo.stuScore[i] == this.paperData[i].score && this.examInfo.stuScore[i] != -1) {
+                                // 得了满分才算做对
                                 info.right++
                             } else {
                                 info.wrong++

+ 14 - 13
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/PaperView.vue

@@ -168,19 +168,6 @@
                 }
                 this.isLoad = false
             },
-            dateFormat(timestamp) {
-                var date = new Date(timestamp)
-                var Y = date.getFullYear() + '-'
-                var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
-                var D = date.getDate() + ' '
-                return Y + M + D;
-            },
-            hidehint() {
-                this.ishideHint = !this.ishideHint;
-            },
-            opentest: function () {
-                this.$store.commit("ToggleLessonTestPop");
-            },
             opentestWithSubject(item) {
                 if (item !== undefined) {
                     this.getPaper(item)
@@ -232,6 +219,20 @@
                     }
                 }
             },
+            /* =====未调用===== */
+            dateFormat(timestamp) {
+                var date = new Date(timestamp)
+                var Y = date.getFullYear() + '-'
+                var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
+                var D = date.getDate() + ' '
+                return Y + M + D;
+            },
+            hidehint() {
+                this.ishideHint = !this.ishideHint;
+            },
+            opentest: function () {
+                this.$store.commit("ToggleLessonTestPop");
+            },
         },
         computed: {
             listData() {

+ 33 - 4
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventContentTypeTemplate/Vote.vue

@@ -33,14 +33,43 @@
                         <h2 class="title-rect-name">{{ $t("studentWeb.vote.bollotbox") }}</h2>
                         <p v-if="voteInfo.repeat" style="margin-left:15px;margin-top:2px">{{ $t("studentWeb.vote.surplusTickets")}} <span style="font-size:16px">{{voteCount}}</span><span> {{ $t("studentWeb.vote.tickets")}} </span></p>
                     </div>
-                    <Button v-show="isResult" style="float:right;margin-top:-30px" size="small" type="success" @click="showRes">
+                    <Button v-show="isResult"
+                            style="float:right;margin-top:-30px"
+                            size="small" type="success"
+                            @click="showRes"
+                    >
                         <span style="margin-left:5px">{{$t("studentWeb.vote.voteRes")}}</span>
                     </Button>
                 </div>
                 <!-- 投票内容 -->
-                <div class="question-box"><span v-html="voteInfo.description"></span></div>
-                <div>
-                    <div class="checkAnswer" v-for="(item, index) in voteInfo.options" :key="index">
+                <!-- <div class="question-box">
+                    <span v-html="voteInfo.description"></span>
+                </div> -->
+                <div class="vote-option">
+                    <!-- 1票
+                    <RadioGroup v-model="voteChecked" v-if="voteInfo.voteNum == 1" class="option-group">
+                        <Radio :label="item.code" v-for="(item, index) in voteInfo.options" :key="index" class="option-wrapper">
+                            <span v-html="item.value"></span>
+                        </Radio>
+                    </RadioGroup>
+                    多票  不重复
+                    <CheckboxGroup v-model="voteChecked" v-if="voteInfo.voteNum > 1 && !voteInfo.repeat" class="option-group">
+                        <Checkbox :label="item.code" v-for="(item, index) in voteInfo.options" :key="index" class="option-wrapper">
+                            <span v-html="item.value"></span>
+                        </Checkbox>
+                    </CheckboxGroup>
+                    多票  重复
+                    <CheckboxGroup v-model="voteChecked" v-if="voteInfo.voteNum > 1 && voteInfo.repeat" class="option-group option-repeat">
+                        <Checkbox :label="item.code" v-for="(item, index) in voteInfo.options" :key="index" class="option-wrapper">
+                            <InputNumber v-model="item.count"
+                                         :min="0"
+                                         size="small"
+                                         :formatter="value => `${value}` +$t('studentWeb.vote.tickets')"
+                            ></InputNumber>
+                            <span v-html="item.value"></span>
+                        </Checkbox>
+                    </CheckboxGroup> -->
+                    <div class="checkAnswer" v-for="(item, index) in voteInfo.options" :key="index">  
                         <label class="testBtn">
                             <input type="checkbox" :value="item" v-model="voteChecked" @click="getVote(item)" />
                             <div class="testbg">

+ 38 - 25
TEAMModelOS/ClientApp/src/components/student-web/EventView/EventList.vue

@@ -212,13 +212,14 @@
 </template>
 
 <script>
+import { mapGetters, mapState } from 'vuex';
     import PreviewProgressPie from "../EventView/PreviewProgressPie";
     export default {
         name: "EventList",
         mounted() { 
             this.getActivityInfo()
-            this.selectedCondition(this.$store.getters.getItemTitle);
-            if (this.$store.getters.getIsSelectedNow == false) {
+            this.selectedCondition(this.getItemTitle);
+            if (this.getIsSelectedNow == false) {
                 this.predealMockdatafirstItem();
             }
             this.scrollList();
@@ -299,22 +300,37 @@
                 } else this.isListNoItem = false;
             },
         },
+        computed: {
+            ...mapState({
+                studentProfile: state => state.user.studentProfile,
+                schoolCode: state => state.user.schoolCode,
+                userInfo: state => state.userInfo,
+            }),
+            ...mapGetters([
+                "getItemTitle",
+                "getIsSelectedNow",
+                "getisFromInfoPoptoScroll",
+                "getFilterType",
+                "getFinishedItem",
+                "getFinishedItemTime"
+            ])
+        },
         methods: {
             //获取活动信息数据
             getActivityInfo() {
                 this.eventList.length = 0
                 this.isListNoItem = true;
-                if (this.$store.state.user.studentProfile.classinfo.id !== "") {
-                    let classInfo = [this.$store.state.user.studentProfile.classinfo.id]
-                    if (this.$store.state.user.studentProfile.courses.length) {
-                        for (let item of this.$store.state.user.studentProfile.courses) {
+                if (this.studentProfile.classinfo.id !== "") {
+                    let classInfo = [this.studentProfile.classinfo.id]
+                    if (this.studentProfile.courses.length) {
+                        for (let item of this.studentProfile.courses) {
                             classInfo.push(item.id)
                         }
                     }
                     let params = {
-                        userid: this.$store.state.userInfo.sub,
+                        userid: this.userInfo.sub,
                         userType: "schoolid",
-                        school: this.$store.state.user.schoolCode
+                        school: this.schoolCode
                     }
                     this.$api.studentWeb.getActivityInfo(params).then(res => {
                         if (res) {
@@ -441,7 +457,7 @@
                     return true;
                 }
             },
-            //选择所有
+            // 选择所有
             selectAllType() {
                 this.eventTypeCheckers = '';
                 this.predealMockdatafirstItem();
@@ -474,12 +490,12 @@
                 this.$store.commit("SetTrytestCount", [0, 0, 0]);
             },
             scrollListfromInfoPop() {
-                if (this.$store.getters.getisFromInfoPoptoScroll == true) {
+                if (this.getisFromInfoPoptoScroll == true) {
                     //當從通知操作進行捲動時,將篩選條件清空
                     this.selectedEventStatusNow = this.$t('studentWeb.event.allStatus');
                     this.eventTypeCheckers = "";
                     let targetItem = document.getElementById(
-                        `event${this.$store.getters.getItemTitle.eventID}`
+                        `event${this.getItemTitle.eventID}`
                     );
                     let scrollList = document.querySelectorAll(
                         ".event-list .list-block"
@@ -502,8 +518,8 @@
             },
             selectedCondition(item) {
                 if (
-                    this.$store.getters.getIsSelectedNow == true &&
-                    this.$store.getters.getItemTitle.id == item.id
+                    this.getIsSelectedNow == true &&
+                    this.getItemTitle.id == item.id
                 ) {
                     return true;
                 } else return false;
@@ -550,7 +566,7 @@
             },
             sentEvenType(eventype) {
                 this.$store.commit("ChangeFilterType", eventype);
-                if (this.$store.getters.getFilterType == "all") {
+                if (this.getFilterType == "all") {
                     let filterListFinished = [],
                         filterListUnFinished = [];
                     for (let i = 0; i < this.mockdata.length; i++) {
@@ -571,7 +587,7 @@
                     }
                     this.defaultFirstItem = filterListUnFinished[0];
                     if (
-                        this.$store.getters.getIsSelectedNow == false &&
+                        this.getIsSelectedNow == false &&
                         this.defaultFirstItem != ""
                     ) {
                         this.sentSelectedEventTitle(this.defaultFirstItem);
@@ -581,34 +597,31 @@
                 }
             },
             eventypeSelected: function (type) {
-                if (this.$store.getters.getFilterType == type) return true;
+                if (this.getFilterType == type) return true;
                 else return false;
             },
             scrollList() {
             },
             showTheCurrentTab() {
                 if (
-                    (this.finishedListNoItem == false &&
-                        this.$store.getters.getItemTitle.isDone == true) ||
-                    this.$store.getters.getFinishedItem.includes(
-                        this.$store.getters.getItemTitle.eventID
-                    )
+                    (this.finishedListNoItem == false && this.getItemTitle.isDone == true)
+                    || this.getFinishedItem.includes(this.getItemTitle.eventID)
                 )
                     return "tab2";
                 else return "tab1";
             },
             finishedcondition(item) {
-                if (this.$store.getters.getFinishedItem.includes(item.eventID) == true) {
+                if (this.getFinishedItem.includes(item.eventID) == true) {
                     this.havejustfinishedItem = true;
                     return true;
                 } else return false;
             },
             finishedItemtime(item) {
-                if (this.$store.getters.getFinishedItem.includes(item.eventID) == true) {
-                    let timeIndex = this.$store.getters.getFinishedItem.indexOf(
+                if (this.getFinishedItem.includes(item.eventID) == true) {
+                    let timeIndex = this.getFinishedItem.indexOf(
                         item.eventID
                     );
-                    return this.$store.getters.getFinishedItemTime[timeIndex];
+                    return this.getFinishedItemTime[timeIndex];
                 }
             },
         },

+ 81 - 13
TEAMModelOS/ClientApp/src/locale/lang/en-US/studentWeb.js

@@ -19,17 +19,8 @@ export default {
         privateVote: 'Personal vote',
         schoolSurvey: 'School Level Questionnaire',
         privateSurvey: 'Personal Questionnaire',
-        search: 'Please enter the query content...'
-    },
-    event: {
-        allStatus: 'All activity status',
-        unFinished: 'Unfinished',
-        Fineshed: 'Completed',
-        Timeout: 'Timeout',
-        makeupExam: 'Can make up the exam',
-        makeupHw: 'Can make up',
-        selectActivity: 'Please select an activity from the list',
-        allSubject: 'Comprehensive subjects'
+        search: 'Please enter the query content...',
+        notice: '此功能暂未开放!'
     },
     state: [
         {
@@ -45,6 +36,16 @@ export default {
             status: 'Completed'
         }
     ],
+    event: {
+        allStatus: 'All activity status',
+        unFinished: 'Unfinished',
+        Fineshed: 'Completed',
+        Timeout: 'Timeout',
+        makeupExam: 'Can make up the exam',
+        makeupHw: 'Can make up',
+        selectActivity: 'Please select an activity from the list',
+        allSubject: 'Comprehensive subjects'
+    },
     'settingView-title': 'Personal settings',
     'teammodel-account-management': {
         'page-title': 'TeamModel account management',
@@ -159,6 +160,52 @@ export default {
     },
     latestNotification: 'Latest notification',
     postAt: 'Posted on',
+    '______________': '______________',
+    'eventView-title': '活动任务',
+    nextTask: '下个活动',
+    allStatus: '所有活动状态',
+    unFinished: '未完成',
+    Fineshed: '已完成',
+    Timeout: '已逾时',
+    makeupExam: '可补考',
+    makeupHW: '可补交',
+    empty: '目前无资料 ~',
+    baseInfo: {
+        subject: '科目:',
+        teacher: '教师:',
+        period: '活动期限:',
+        postTime: '发布时间:',
+        classTime: '上课时间',
+        unFinished: '未完成',
+        Fineshed: '已完成',
+        Closed: '已结束'
+    },
+    billboard: {
+        description: '描述',
+        referlink: '连结资料',
+        attachment: '附件',
+        reference: '参考资料'
+    },
+    preview: {
+        checkpoint: '活动任务',
+        tutorial: '编序教材',
+        multiQues: '多题闯关模组',
+        previewContent: {
+            tutorial: '教材',
+            Des: '内容',
+            Unit: '单元',
+            quiz: '随堂考'
+        },
+        previous: '上一题',
+        next: '下一题',
+        sentAns: '送出答案',
+        tryAgain: '详读教材,再试一次',
+        nextUnit: '下一单元',
+        goHome: '回到首页',
+        quizRetries: '测验重试次数',
+        crossUnitHint: '上个单元测验尚未完成,请先完成方可进行本单元测验',
+        timeoutHint: '课前预习活动时间已结束,仍可进行教材阅读与练习,如于结束时间前未完成,相关成绩可能受到影响。'
+    },
     vote: {
         bollotbox: 'Voting area',
         submit: 'OK to submit',
@@ -175,7 +222,10 @@ export default {
         warning: 'Voting failed, please check the voting information! ',
         warning2: 'The maximum number of votes has been exceeded! ',
         voteRes: 'Voting results',
-        voteRecord: 'Vote Record'
+        voteRecord: 'Vote Record',
+        voteTime: '投票时间',
+        noData: '暂无投票结果数据',
+        option: '选项',
     },
     homework: {
         homeworkUpload: 'Job upload area',
@@ -234,6 +284,7 @@ export default {
             onlywrong: 'Only practice the wrong answer',
             questions: 'The question',
             submitted: 'Submission of paper',
+            submitted1: "结束练习",
             finish: 'Completed',
             showAns: 'Show answers',
             hideAns: 'Hide the answer',
@@ -254,6 +305,13 @@ export default {
             conAnswer2: ', please complete the question first! ',
             conAnswer: 'Continue to answer',
             okSubmit: 'Confirm to submit the paper',
+            exitWrong: "离开错题练习提示",
+            exitWrongDe: "系统检测您尚未「结束练习」,如您选择「确定」,",
+            exitWrongDes: "则目前作答将不保存,下次需重新练习",
+            endPractice: "结束练习提示",
+            endPracticeDe: "是否继续练习?",
+            endPracticeBtn1: "继续练习",
+            endPracticeBtn2: "结束练习",
             qNo: 'Question number:',
             correction: 'right',
             queNo: 'Title:',
@@ -302,6 +360,7 @@ export default {
             student: 'person',
             keyPointPerformance: 'Knowledge point performance radar chart',
             me: 'personal',
+            participantClass: '全班',
             participantAverage: 'The whole school',
             recognizePerformance: 'Cognitive Level Radar Chart'
         },
@@ -347,7 +406,16 @@ export default {
         solution: 'Solution',
         analysis: 'Analysis',
         correctRate: 'correct answer rate',
-        relatedAQues: 'Related Questions'
+        relatedAQues: 'Related Questions',
+        answer: '作答',
+        inputAnswers: '请输入作答结果',
+        emput: '空'
+    },
+    queNaire: {
+        submitSuccess: '提交成功',
+        overTime: '不在作答时间范围内!',
+        answerErr: '作答数据错误!',
+        fileErr: '问卷获取失败!'
     },
     'informview-title': 'Notification overview',
     view: 'Go to view',

+ 0 - 2
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/studentWeb.js

@@ -226,8 +226,6 @@ export default {
         voteTime: '投票时间',
         noData: '暂无投票结果数据',
         option: '选项',
-
-
     },
     homework: {
         homeworkUpload: '作业上传区',

+ 22 - 12
TEAMModelOS/ClientApp/src/locale/lang/zh-TW/studentWeb.js

@@ -20,17 +20,7 @@ export default {
         schoolSurvey: '校級問卷',
         privateSurvey: '個人問卷',
         search: '請輸入查詢內容...',
-        noitice: '此功能暫未開放!'
-    },
-    event: {
-        allStatus: '所有活動狀態',
-        unFinished: '未完成',
-        Fineshed: '已完成',
-        Timeout: '已逾時',
-        makeupExam: '可補考',
-        makeupHw: '可補交',
-        selectActivity: '請從列表中挑選一個活動',
-        allSubject: '所有學科'
+        notice: '此功能暫未開放!'
     },
     state: [
         {
@@ -46,6 +36,16 @@ export default {
             status: '已完成'
         }
     ],
+    event: {
+        allStatus: '所有活動狀態',
+        unFinished: '未完成',
+        Fineshed: '已完成',
+        Timeout: '已逾時',
+        makeupExam: '可補考',
+        makeupHw: '可補交',
+        selectActivity: '請從列表中挑選一個活動',
+        allSubject: '所有學科'
+    },
     'settingView-title': '個人設定',
     'teammodel-account-management': {
         'page-title': 'TeamModel 帳號管理',
@@ -223,7 +223,9 @@ export default {
         warning2: '已超出最大投票數! ',
         voteRes: '投票結果',
         voteRecord: '投票記錄',
-        voteTime: '投票時間'
+        voteTime: '投票時間',
+        noData: '暫無投票結果數據',
+        option: '選項',
     },
     homework: {
         homeworkUpload: '作業上傳區',
@@ -282,6 +284,7 @@ export default {
             onlywrong: '只練習答錯',
             questions: '的題目',
             submitted: '交卷',
+            submitted1: "結束練習",
             finish: '已完成',
             showAns: '顯示答案',
             hideAns: '隱藏答案',
@@ -302,6 +305,13 @@ export default {
             conAnswer2: ',請先完成題目作答! ',
             conAnswer: '繼續作答',
             okSubmit: '確定交卷',
+            exitWrong: "離開錯題練習提示",
+            exitWrongDe: "系統檢測您尚未「結束練習」,如您選擇「確定」,",
+            exitWrongDes: "則現時作答將不保存,下次需重新練習",
+            endPractice: "結束練習提示",
+            endPracticeDe: "是否繼續練習?",
+            endPracticeBtn1: "繼續練習",
+            endPracticeBtn2: "結束練習",
             qNo: '題號:',
             correction: '正解',
             queNo: '題目:',

+ 103 - 17
TEAMModelOS/ClientApp/src/view/joinclass/JoinClass.vue

@@ -1,37 +1,123 @@
 <template>
-    <div>
-        <div style="text-align:center;" id="test-hahah">
-            <h1 style="text-align:center;margin-top:100px;font-size:22px;">学生扫码加入名单需要学生端APP对接,学生端APP扫码可以直接读取学生账号信息加入到班级。</h1>
-            <!-- <p>{{tId}}</p> -->
-            <p data-html2canvas-ignore>教师姓名:{{tName}}</p>
-            <p>名单:{{cName}}</p>
-            <p>编码:{{cId}}</p>
+    <div class="join-wrap">
+        <div class="join-main-box">
+            <p class="join-title">
+                <span>
+                    加入课程名单
+                </span>
+                <!-- <Divider dashed plain class="join-title">
+                    加入课程名单
+                </Divider> -->
+            </p>
+            <p class="course-name">{{cusName}}</p>
+            <p class="info-item">
+                <span class="info-lable">
+                    教师:
+                </span>
+                <span class="info-value">
+                    {{tName}}
+                </span>
+            </p>
+            <p class="info-item">
+                <span class="info-lable">
+                    名单:
+                </span>
+                <span class="info-value">
+                    {{listName}}
+                </span>
+            </p>
+            <div class="join-btn" @click="joinList()">
+                立即加入
+            </div>
         </div>
     </div>
 </template>
 <script>
-import html2canvas from 'html2canvas';
 export default {
     data() {
         return {
             tId: '',
             tName: '',
-            cId: '',
-            cName: '',
+            listId: '',
+            listName: '',
+            cusName: '',
         }
     },
     methods: {
+        joinList() {
+            this.$Message.warning('暂未对接API')
+        }
     },
     created() {
-        this.tId = this.$route.query.tId
-        this.tName = this.$route.query.tName
-        this.cId = this.$route.query.cId
-        this.cName = this.$route.query.cName
+        this.tId = this.$route.query.tId //教师id
+        this.tName = this.$route.query.tName //教师姓名
+        this.listId = this.$route.query.listId   //名单id
+        this.listName = this.$route.query.listName //名单
+        this.cusName = this.$route.query.cusName  //课程名称
+        if (!this.listId || !this.tId) {
+            this.$Modal.error({
+                title: '信息错误',
+                content: '课程名单获取失败,请重新扫码加入!'
+            })
+        }
     }
 }
 </script>
-<style scoped>
-div p {
-    margin: 10px;
+<style scoped lang="less">
+.join-wrap {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-evenly;
+    align-items: center;
+    width: 100%;
+    height: 100%;
+    background-image: url("../../assets/image/bak_light.jpg");
+}
+.join-btn {
+    width: fit-content;
+    margin: auto;
+    margin-top: 60px;
+    text-align: center;
+    border: 1px solid rgba(25, 190, 107, 0.5);
+    color: rgba(25, 190, 107, 1);
+    padding: 4px 30px;
+    border-radius: 5px;
+    font-size: 16px;
+    letter-spacing: 2px;
+    font-weight: 400;
+    user-select: none;
+    &:hover{
+        background: rgba(25, 190, 107, 0.5);
+        color: white;
+    }
+}
+.course-name {
+    color: white;
+    margin-bottom: 15px;
+    font-size: 30px;
+    font-family: cursive;
+}
+.join-main-box {
+    width: 100%;
+    text-align: center;
+    .info-item {
+        margin-top: 20px;
+        font-size: 15px;
+    }
+    .info-lable {
+        color: #a5a5a5;
+    }
+    .info-value {
+        color: #eeeeee;
+    }
+}
+.join-title {
+    position: absolute;
+    top: 15px;
+    text-align: center;
+    width: 100%;
+    left: 0px;
+    border-bottom: 1px dashed;
+    padding-bottom: 8px;
 }
 </style>

+ 2 - 2
TEAMModelOS/ClientApp/src/view/newcourse/MyCourse.less

@@ -345,7 +345,7 @@
     display: block;
     margin: auto;
     text-align: center;
-    margin-top: 8px;
-    margin-bottom: -14px;
+    margin-top: -14px;
+    margin-bottom: 5px;
     color: black;
 }

+ 11 - 4
TEAMModelOS/ClientApp/src/view/newcourse/MyCourse.vue

@@ -299,7 +299,7 @@
             </div>
             <StudentList v-if="$store.state.userInfo.hasSchool" @getSelectInfo="(selction)=>{createStuList = selction}"></StudentList>
             <p v-else class="no-school-tips">
-                您暂未加入学校无法添加学校学生,只能创建好名单,让学生通过扫码加入名单!
+                您暂未加入学校无法添加学校学生,只能创建自定义名单,学生通过扫码加入名单!
             </p>
         </Modal>
         <Modal v-model="addCusStatus" :title="$t('cusMgt.addCus')" @on-ok="confirmAddCus" class-name="dark-iview-modal dark-iview-form">
@@ -994,9 +994,16 @@ export default {
             this.showQrStatus = true
             let tId = this.$store.state.userInfo.TEAMModelId
             let tName = this.$store.state.userInfo.name
-            let cId = this.teaClassList[this.curClassIndex].stulist
-            let cName = this.teaClassList[this.curClassIndex].listName
-            this.createQRCode(`http://teammodelos-test.chinacloudsites.cn/joinclass?tId=${tId}&cId=${cId}&tName=${tName}&cName=${cName}`)
+            let listId = this.teaClassList[this.curClassIndex].stulist
+            let listName = this.teaClassList[this.curClassIndex].listName
+            let cusName = this.courseListShow[this.curCusIndex].name
+
+            //这里需要根据站点动态拼接域名
+            let addr = this.$store.state.config.srvAdr
+            let host = ''
+            let url = `http://teammodelos-test.chinacloudsites.cn/joinclass?tId=${tId}&listName=${listName}&tName=${tName}&listId=${listId}&cusName=${cusName}`
+            console.log(url)
+            this.createQRCode(url)
         },
         //确认添加自定义名单
         confirmCreateList() {

+ 3 - 2
TEAMModelOS/ClientApp/src/view/student-web/App.vue

@@ -132,7 +132,8 @@
         computed: {
             getRoleName() {
                 return val => {
-                    return val === 'student' ? '学生' : '教师'
+                    // return val === 'student' ? '学生' : '教师'
+                    return val === 'student' ? this.$t("studentWeb.home.student") : this.$t("studentWeb.home.teacher")
                 }
             },
             //判断用户权限
@@ -197,7 +198,7 @@
                 }
             },
             noData() {
-                this.$Message.warning('此功能暂未开放!')
+                this.$Message.warning(this.$t("studentWeb.public.notice"))
             },
             reload() {
                 this.isRouterAlive = false;

+ 1 - 1
TEAMModelOS/ClientApp/src/view/task/mark/ByQu.vue

@@ -326,7 +326,7 @@ export default {
 
         //默认表情包
         for (let i = 0; i < 9; i++) {
-            this.imgs.push(require('@/assets/mark/' + i + '.jpg'))
+            this.imgs.push(require('@/assets/mark/' + i + '.svg'))
         }
     },
     computed: {

+ 1 - 1
TEAMModelOS/ClientApp/src/view/task/mark/ByStu.vue

@@ -484,7 +484,7 @@ export default {
         }
         //默认表情包
         for (let i = 0; i < 9; i++) {
-            this.imgs.push(require('@/assets/mark/' + i + '.jpg'))
+            this.imgs.push(require('@/assets/mark/' + i + '.svg'))
         }
     },
     computed: {

+ 4 - 1
TEAMModelOS/ClientApp/src/view/task/mark/MarkCanvas.vue

@@ -67,7 +67,10 @@ export default {
         },
         drawImg() {
             this.mouseStatus = 'img'
-            this.startImg({ x: 100, y: 100 })
+            console.log(this.stage)
+            let x = this.stage.attrs.width - 100
+            let y = this.stage.attrs.height - 90
+            this.startImg({ x, y })
         },
         startImg(current) {
             let _this = this

+ 1 - 1
TEAMModelOS/Controllers/Syllabus/ShareController.cs

@@ -239,7 +239,7 @@ namespace TEAMModelOS.Controllers
                 List<Share> shares = new List<Share>();
                 if (!request.TryGetProperty("code", out JsonElement code)) { return BadRequest(); }
                 if (!request.TryGetProperty("type", out JsonElement type)) { return BadRequest(); }
-                if (!request.TryGetProperty("id", out JsonElement id)) { return BadRequest(); }
+                request.TryGetProperty("id", out JsonElement id);
                 var client = _azureCosmos.GetCosmosClient();
                 StringBuilder queryText = new StringBuilder("select value(c) from c");
                 if (type.ValueKind.Equals(JsonValueKind.String) && type.GetString() == "coedit")