shaogen1995 3 years ago
parent
commit
c28b9eea65
35 changed files with 77979 additions and 2961 deletions
  1. 2 2
      web/public/static/css/css/main.css
  2. 108 160
      web/public/static/css/main.css
  3. 1 1
      web/public/static/css/oldVer/main0.css
  4. 1123 0
      web/public/static/data/xinjiang01.json
  5. 202 0
      web/public/static/data/xinjiang02.json
  6. 741 0
      web/public/static/data/xinjiang03.json
  7. 687 0
      web/public/static/data/xinjiang04.json
  8. 1069 0
      web/public/static/data/xinjiang05.json
  9. 631 0
      web/public/static/data/xinjiangout.json
  10. BIN
      web/public/static/images/auto-suspend.png
  11. BIN
      web/public/static/images/auto.png
  12. BIN
      web/public/static/images/icon.lzma
  13. BIN
      web/public/static/images/icons/hnrd.jpg
  14. BIN
      web/public/static/images/pc_step1.png
  15. BIN
      web/public/static/images/phone_step1.png
  16. 11381 0
      web/public/static/js/CAD/bundle.js
  17. 129 0
      web/public/static/js/CAD/loadCAD.js
  18. 51 41
      web/public/static/js/Hot.js
  19. 2481 0
      web/public/static/js/lib/wangEditor.min.js.bak
  20. 17 17
      web/public/static/js/loadCAD.js
  21. 58372 0
      web/public/static/js/main_2020_show copy.js
  22. 294 172
      web/public/static/js/main_2020_show.js
  23. 19 151
      web/public/static/js/manage.js
  24. 4 4
      web/public/static/js/myShow.js
  25. 550 0
      web/public/static/js/overlay.js
  26. 0 7
      web/public/static/js/shiyou.js
  27. 2 0
      web/public/static/js/webuploader.html5only.min.js
  28. 1 1
      web/src/App.vue
  29. BIN
      web/src/assets/img/flower.png
  30. BIN
      web/src/assets/img/flower_active.png
  31. BIN
      web/src/assets/img/like.png
  32. BIN
      web/src/assets/img/like_active.png
  33. 0 80
      web/src/components/iframe/index.vue
  34. 1 44
      web/src/pages/Home.vue
  35. 113 2281
      web/src/views/gui/menu.vue

+ 2 - 2
web/public/static/css/css/main.css

@@ -2448,11 +2448,11 @@ hr {
 body, html {
     height: 100%;
     width: 100%;
-    overflow: hidden;
+    /* overflow: hidden; */
     line-height: normal;
     color: rgba(255, 255, 255, .9);
     -webkit-font-smoothing: subpixel-antialiased;
-    background: #373737;
+    /* background: #373737; */
     /*background: -moz-radial-gradient(at 50% bottom,ellipse cover,rgba(71,77,83,1) 0,rgba(35,38,40,1) 53%,rgba(17,18,19,1) 100%);
     background: -webkit-gradient(radial,at 50% bottom,0,center center,100%,color-stop(0,rgba(71,77,83,1)),color-stop(53%,rgba(35,38,40,1)),color-stop(100%,rgba(17,18,19,1)));
     background: -webkit-radial-gradient(at 50% bottom,ellipse cover,rgba(71,77,83,1) 0,rgba(35,38,40,1) 53%,rgba(17,18,19,1) 100%);

+ 108 - 160
web/public/static/css/main.css

@@ -1,40 +1,3 @@
-/*!
- * Bootstrap v3.2.0 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-/*!
- * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=448f359db98ad28574a4)
- * Config saved to config.json and https://gist.github.com/448f359db98ad28574a4
- */
-
-/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
-
-* {
-    -webkit-user-select: none;
-    -user-select: none;
-}
-
-@font-face {
-    font-family: 'FontAwesome';
-    src: url(font/fontawesome-webfont.eot);
-    src: url(font/fontawesome-webfont.eot?#iefix&v=4.5.0) format("embedded-opentype"), url(font/fontawesome-webfont.woff2) format("woff2"), url(font/awesome-webfont.woff) format("woff"), url(font/fontawesome-webfont.ttf) format("truetype"), url(font/fontawesome-webfont.svg#fontawesomeregular) format("svg");
-    font-weight: normal;
-    font-style: normal;
-}
-
-hr, img, legend {
-    border: 0
-}
-
-legend, td, th {
-    padding: 0
-}
-
-body, figure {
-    margin: 0
-}
 
 .affix, .frame .slidee li .overlay {
     -webkit-transform: translate3d(0, 0, 0)
@@ -244,7 +207,8 @@ html {
 
 body {
     font-size: 14px;
-    color: #333
+    color: #333;
+    overflow: hidden;
 }
 
 button, input, select, textarea {
@@ -288,7 +252,6 @@ a:focus {
 hr {
     margin-top: 20px;
     margin-bottom: 20px;
-    border-top: 1px solid #eee
 }
 
 .sr-only {
@@ -2445,32 +2408,12 @@ hr {
     -webkit-font-smoothing: antialiased!important
 }
 
-body, html {
-    height: 100%;
-    width: 100%;
-    overflow: hidden;
-    line-height: normal;
-    color: rgba(255, 255, 255, .9);
-    -webkit-font-smoothing: subpixel-antialiased;
-    background: #373737;
-    /*background: -moz-radial-gradient(at 50% bottom,ellipse cover,rgba(71,77,83,1) 0,rgba(35,38,40,1) 53%,rgba(17,18,19,1) 100%);
-    background: -webkit-gradient(radial,at 50% bottom,0,center center,100%,color-stop(0,rgba(71,77,83,1)),color-stop(53%,rgba(35,38,40,1)),color-stop(100%,rgba(17,18,19,1)));
-    background: -webkit-radial-gradient(at 50% bottom,ellipse cover,rgba(71,77,83,1) 0,rgba(35,38,40,1) 53%,rgba(17,18,19,1) 100%);
-    background: -o-radial-gradient(at 50% bottom,ellipse cover,rgba(71,77,83,1) 0,rgba(35,38,40,1) 53%,rgba(17,18,19,1) 100%);
-    background: -ms-radial-gradient(at 50% bottom,ellipse cover,rgba(71,77,83,1) 0,rgba(35,38,40,1) 53%,rgba(17,18,19,1) 100%);
-    background: radial-gradient(ellipse at 50% bottom,rgba(71,77,83,1) 0,rgba(35,38,40,1) 53%,rgba(17,18,19,1) 100%);*/
-    /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#474d53', endColorstr='#111213', GradientType=1 )*/
-}
-
 #player {
     left: 0;
     bottom: 0;
     width: 100%;
     height: 100%;
     position: absolute;
-    background-image:url('../images/bg.jpg');
-    background-size:auto 100%;
-    background-position:center;
 }
 
 #player canvas {
@@ -2706,7 +2649,7 @@ body, html {
 
 #gui-thumb {
     height: 100%;
-    background-size: auto 100%;
+    background-size: 100% auto ;
     background-position: 50% 50%;
     background-repeat: no-repeat;
     z-index: 0;
@@ -3343,7 +3286,7 @@ a.hasHover:hover, a:active {
 }
 
 .darkGlass {
-    background-color: rgba(0, 0, 0, .45)
+    background-color: rgba(0, 0, 0, .5);
 }
 
 .ui-icon {
@@ -3389,7 +3332,7 @@ a.hasHover:hover, a:active {
 
 .pinTop.left {
     left: 50%;
-    z-index: 3;
+    z-index: 99;
     display: flex;
     flex-direction: column;
     align-items: center;
@@ -3448,39 +3391,61 @@ a.hasHover:hover, a:active {
     right: 0;
     text-shadow: 0 0 1px rgba(0, 0, 0, .6);
     z-index: 50;
-    bottom: 30px;
+    bottom: 20px;
 }
 
 .pinBottom.left {
     z-index: 50;
-    border-radius: 10px;
     left: 0px;
-    bottom: 30px;
+    bottom: 10px;
 }
 
+
+
 .pinBottom.left .icon {
     float: left
 }
 
 .viewContainer {
     float: left;
-    position: relative
+    position: relative;
+    background: rgba(0, 0, 0, 0.6);
+    border-radius: 25px;
+    margin:0 20px;
 }
 
-.viewContainer>div {
+.viewContainer>div,.viewContainer>li {
     float: left
 }
 
 #gui-modes-map>div[rel] {
     float: left;
-    width: 50px;
+    width: 60px;
+    height: 48px;
     display: flex;
     justify-content: center;
     align-items: center;
     cursor: pointer;
 }
 
+
+#play, #pause {
+    position: relative;
+    width: 60px;
+    height: 48px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    cursor: pointer;
+}
+
+#play img, #pause img{
+    vertical-align: top;
+}
+
+
 #gui-modes-map>div[rel]:hover, .pinBottom.right .rightViewContainer>div:hover, #play:hover {
+    /* background: rgba(0, 0, 0, 0.25); */
 }
 
 /*#gui-modes-map > div:hidden{ border-top-right-radius: 10px; border-bottom-right-radius:10px; }*/
@@ -3617,6 +3582,10 @@ a.hasHover:hover, a:active {
     cursor: pointer
 }
 
+#gui-fullscreen, #gui-fullscreen-exit, .socialButton {
+    float: left
+}
+
 .pinBottom.right .icon {
     cursor: pointer;
     font-size: 0;
@@ -3624,7 +3593,7 @@ a.hasHover:hover, a:active {
 
 .shareContainer {
     width: 100%;
-    height: 27px;
+    height: 27px
 }
 
 .shareContainer a, .shareContainer a i.icon {
@@ -3680,7 +3649,7 @@ a.hasHover:hover, a:active {
     content: '\e600'
 }
 
-.viewContainer>div {
+.viewContainer>div,.viewContainer>li {
     float: left
 }
 
@@ -3867,14 +3836,6 @@ a.hasHover:hover, a:active {
     position: absolute
 }
 
-#play, #pause {
-    position: relative;
-    width: 50px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    cursor: pointer;
-}
 
 .tourSpinner {
     border-radius: 45px;
@@ -3907,6 +3868,10 @@ a.hasHover:hover, a:active {
     text-align: center
 }
 
+#gui-modes-map div img {
+    width: 26px;
+    height: 26px;
+}
 
 #pullTab i {
     line-height: 40px;
@@ -3923,6 +3888,7 @@ a.hasHover:hover, a:active {
 }
 
 #gui-parent #pullTab.opened, #gui-parent #gui-modes-map>div.active {
+    /* background: rgba(0, 0, 0, 0.3); */
 }
 
 #pullTab.opened .icon-dpad-up:before {
@@ -3960,8 +3926,14 @@ a.hasHover:hover, a:active {
     pointer-events: all;
     z-index: 50
 }
-
-#drawer.open {
+#scrollFrame{
+    opacity: 0;
+    transition: all .3s;
+}
+.open #scrollFrame{
+    opacity: 1;
+}
+#drawer.open #scrollFrame{
     height: 130px
 }
 
@@ -3974,35 +3946,35 @@ a.hasHover:hover, a:active {
 }
 
 #drawer.open.noScroll {
-    height: 137px
+    height: 107px
 }
 
 #drawer-container.drawerOpen #drawer.open.noScroll, #drawer.open.noScroll.playing {
-    height: 143px
+    height: 113px
 }
 
 #gui .pinBottom.open {
-    bottom: 170px
+    bottom: 140px
 }
 
 #gui .pinBottom.open.noScroll {
-    bottom: 147px
+    bottom: 127px
 }
 
 #gui .pinBottom.open.playing {
-    bottom: 180px
+    bottom: 150px
 }
 
 #gui .pinBottom-container.drawerOpen .pinBottom.open.noScroll.playing {
-    bottom: 157px;
+    bottom: 127px;
 }
 
 #gui .pinBottom.open.noScroll.playing {
-    bottom: 165px;
+    bottom: 170px;
 }
 
 #gui #drawer.playing, #gui .pinBottom.playing {
-    bottom: 20px
+    bottom: 40px
 }
 
 #thumb-container .thumbImg {
@@ -4020,7 +3992,10 @@ a.hasHover:hover, a:active {
 .frame-container {
     float: left;
     width: calc(100% - 58px);
-    height: 100%
+    height: 100%;
+    border-top-left-radius: 8px;
+    border-top-right-radius: 8px;
+
 }
 
 .fullWidth .frame-container {
@@ -4029,10 +4004,9 @@ a.hasHover:hover, a:active {
 
 .frame {
     width: calc(100% - 20px);
+    height: 97px;
     margin: 9px 10px;
-    float: left;
-    display: flex;
-    justify-content: center;
+    float: left
 }
 
 .frame.noScroll {
@@ -4054,14 +4028,21 @@ a.hasHover:hover, a:active {
 }
 
 .frame .slidee li .overlay {
-    height: 30px;
-    line-height: 30px;
-    padding: 0;
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    padding: 6px;
     color: #fff;
+    background-color: rgba(0, 0, 0, .7);
     overflow: hidden;
     white-space: nowrap;
+    font-weight: 100;
     text-align: center;
     z-index: 100;
+    -moz-transform: translate3d(0, 0, 0);
+    -ms-transform: translate3d(0, 0, 0);
+    -o-transform: translate3d(0, 0, 0);
     transform: translate3d(0, 0, 0)
 }
 
@@ -4108,11 +4089,7 @@ a.hasHover:hover, a:active {
 
 .frame .slidee li.thumbImg.active>img, .frame .slidee li.thumbImg.hasHover.active>img:hover {
     opacity: 1;
-    border: 2px solid #EE3E41;
-}
-
-.frame .slidee li.thumbImg.active>.overlay, .frame .slidee li.thumbImg.hasHover.active>.overlay:hover {
-    color: #fff;
+    border-color: #00b4ed
 }
 
 .scrollbar {
@@ -4127,7 +4104,7 @@ a.hasHover:hover, a:active {
 .scrollbar .handle {
     width: 100px;
     height: 100%;
-    background: #00F3FF;
+    background: rgba(255, 255, 255, .75);
     border-radius: 5px
 }
 
@@ -4147,7 +4124,7 @@ a.hasHover:hover, a:active {
     height: 20px;
     width: 100%;
     position: absolute;
-    bottom: -20px;
+    bottom: -24px;
     left: 0;
     transition-property: bottom;
     transition-duration: .5s;
@@ -4191,7 +4168,7 @@ a.hasHover:hover, a:active {
 }
 
 #progressBar .step.active::before, #progressBar .step.recent::before {
-    background-color: #00b4ed
+    background-color: #CCCCCC
 }
 
 #progressBar .step.upcoming::before {
@@ -4326,31 +4303,34 @@ a.hasHover:hover, a:active {
 }
 
 @media only screen and (max-width: 487px), (max-height:487px) {
-    .frame{
-        height: 107px;
-        display: block;
-    }
-    #thumb-container .thumbImg img{
-        height: 77px;
-        display: block;
+    #thumb-container .thumbImg img, .frame {
+        height: 77px
     }
     .frame .slidee li, .frame .slidee li .overlay {
-        width: 106px
+        width: 103px
     }
+    #drawer-container{
+        left: unset;
+    }
+    .fullWidth .frame-container{
+        width: 100%;
+    }
+
+   
     #drawer-container.drawerOpen #drawer.open.noScroll {
-        height: 124px
+        height: 94px
     }
     #drawer.open.noScroll, #drawer.open.noScroll.playing {
-        height: 118px
+        height: 88px
     }
     .pinBottom-container.drawerOpen.duringTour {
         bottom: 6px
     }
     #gui .pinBottom.open.noScroll {
-        bottom: 123px
+        bottom: 93px
     }
     .pinBottom.open.noScroll.playing {
-        bottom: 138px
+        bottom: 108px
     }
 }
 
@@ -6414,8 +6394,7 @@ a.hasHover.tag-link:hover {
     line-height: 19px;
     border-radius: 10px;
     -webkit-transtion: all .4s ease-in-out;
-    transition: all .4s ease-in-out;
-    background: rgba(0, 0, 0, 0.5);
+    transition: all .4s ease-in-out
 }
 
 #meta-info.share-link {
@@ -6904,7 +6883,7 @@ a.hasHover.tag-link:hover {
     right: 16px;
     cursor: pointer;
     text-shadow: rgb(0, 0, 0) 0px 0px 5px;
-    box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 5px, rgba(0, 0, 0, 0.5) 0px 0px 5px inset;
+    box-shadow: rgba(0, 0, 0, 0.7) 0px 0px 5px, rgba(0, 0, 0, 0.7) 0px 0px 5px inset;
 }
 
 #myCompany.JLogo {
@@ -6955,9 +6934,6 @@ a.hasHover.tag-link:hover {
         top: 60px;
         right: 5px;
     }
-    #gui-name{
-        font-size: 14px;
-    }
 }
 
 @media only screen and (max-width: 700px) {
@@ -6974,7 +6950,6 @@ a.hasHover.tag-link:hover {
 
 @media only screen and (max-width: 680px) {
     .pinTop.left {
-        top: 5px;
         left: 50%;
         transform: translateX(-50%);
         align-items: center;
@@ -6991,29 +6966,22 @@ a.hasHover.tag-link:hover {
     .pinBottom.right .ui-icon {
         margin-right: 5px;
     }
-    /* #volume{
-        z-index: 9999;
-        position: absolute;
-        left: 10px;
-        bottom: 5px;
-    } */
     .pinBottom.right, .pinBottom.left {
         bottom: 5px;
     }
     .pinBottom.left {
-        left: 5px;
+        right: 10px;
+        left: unset;
     }
     .viewContainer, #gui-modes-map {
         display: flex;
         flex-direction: column;
     }
     #play, #pause {
-        width: 50px;
-        padding-bottom: 10px;
+        width: 64px;
     }
     #gui-modes-map>div[rel] {
-        width: 50px;
-        padding-bottom: 10px;
+        width: 64px;
     }
     .progressbar {
         width: 70%;
@@ -7038,20 +7006,13 @@ a.hasHover.tag-link:hover {
 
 @media screen and (orientation: landscape) {
 	.viewContainer, #gui-modes-map {
-        display: block !important;
-    }
-    .viewContainer{
-        padding: 10px 20px 10px 0;
         display: flex !important;
-        align-items: center;
-        background-color: rgba(0, 0, 0, .5);
-        border-radius: 0 20px 20px 0;
     }
 }
 
 @media only screen and (max-width: 370px) {
     #gui-name {
-        font-size: 12px;
+        font-size: 16px;
     }
     #meta-info-wrapper {
         width: 100vw;
@@ -7063,7 +7024,7 @@ a.hasHover.tag-link:hover {
 
 @media only screen and (max-width: 330px) {
     #gui-name {
-        font-size: 12px;
+        font-size: 14px;
     }
 }
 
@@ -7071,14 +7032,13 @@ a.hasHover.tag-link:hover {
 
 
 
-#hot, #menudiv{ 
+#hot{ 
 	padding: 0;
 	position: absolute;
 	width: 100%;
 	height: 100%;
     pointer-events:none; 
-	z-index: 9101; 
-    left:0;top:0;
+	z-index: 101; 
 }
 #hot>div{
     position: absolute;
@@ -7096,18 +7056,6 @@ a.hasHover.tag-link:hover {
 }    
 
 
-#menudiv{
-    
-}
-
-#menudiv>div>div{  
-    width:1000px; 
-    height:1000px;
-    position: absolute;
-    color:#000;
-    font-size:50px;
-    
-}
-#menudiv>div>div{
-    pointer-events:none;
-}  
+#model-title{
+    display: none!important;
+}

+ 1 - 1
web/public/static/css/oldVer/main0.css

@@ -52,7 +52,7 @@ iframe{
 	opacity:0.1; 
 }
 #closepop {
-	background: url(https://super.4dage.com/images/close1.png) no-repeat;
+	background: url(../../images/close1.png) no-repeat;
 	width: 60px;
 	height: 60px;
 	cursor: pointer;

File diff suppressed because it is too large
+ 1123 - 0
web/public/static/data/xinjiang01.json


+ 202 - 0
web/public/static/data/xinjiang02.json

@@ -0,0 +1,202 @@
+{
+	"vertex-z":[
+		{"id":0,"z":0.653}
+,		{"id":1,"z":6.371}
+	]
+,	"vertex-xy":[
+		{"id":0,"x":136.524,"y":-72.848}
+,		{"id":1,"x":30.403,"y":-72.848}
+,		{"id":2,"x":30.403,"y":58.462}
+,		{"id":3,"x":136.524,"y":58.462}
+,		{"id":4,"x":136.524,"y":58.462}
+,		{"id":5,"x":30.403,"y":58.462}
+,		{"id":6,"x":30.403,"y":-72.848}
+,		{"id":7,"x":136.524,"y":-72.848}
+,		{"id":8,"x":67.108,"y":-52.564}
+,		{"id":9,"x":60.872,"y":-52.564}
+,		{"id":10,"x":60.872,"y":-30.736}
+,		{"id":11,"x":67.108,"y":-30.736}
+,		{"id":12,"x":54.018,"y":-52.564}
+,		{"id":13,"x":47.782,"y":-52.564}
+,		{"id":14,"x":47.782,"y":-30.736}
+,		{"id":15,"x":54.018,"y":-30.736}
+,		{"id":16,"x":106.018,"y":-52.564}
+,		{"id":17,"x":99.782,"y":-52.564}
+,		{"id":18,"x":99.782,"y":-30.736}
+,		{"id":19,"x":106.018,"y":-30.736}
+,		{"id":20,"x":119.318,"y":-52.564}
+,		{"id":21,"x":113.082,"y":-52.564}
+,		{"id":22,"x":113.082,"y":-30.736}
+,		{"id":23,"x":119.318,"y":-30.736}
+,		{"id":24,"x":98.566,"y":-63.488}
+,		{"id":25,"x":98.566,"y":-57.252}
+,		{"id":26,"x":120.394,"y":-57.252}
+,		{"id":27,"x":120.394,"y":-63.488}
+,		{"id":28,"x":43.786,"y":-4.947}
+,		{"id":29,"x":43.786,"y":1.787}
+,		{"id":30,"x":65.614,"y":1.787}
+,		{"id":31,"x":65.614,"y":-4.947}
+,		{"id":32,"x":43.786,"y":10.143}
+,		{"id":33,"x":43.786,"y":16.877}
+,		{"id":34,"x":65.614,"y":16.877}
+,		{"id":35,"x":65.614,"y":10.143}
+,		{"id":36,"x":49.579,"y":43.741}
+,		{"id":37,"x":49.579,"y":48.059}
+,		{"id":38,"x":67.301,"y":48.059}
+,		{"id":39,"x":67.301,"y":43.741}
+,		{"id":40,"x":31.651,"y":19.299}
+,		{"id":41,"x":36.549,"y":19.299}
+,		{"id":42,"x":36.549,"y":-12.099}
+,		{"id":43,"x":31.651,"y":-12.099}
+,		{"id":44,"x":40.148,"y":-18.837}
+,		{"id":45,"x":40.712,"y":-18.837}
+,		{"id":46,"x":40.712,"y":-68.363}
+,		{"id":47,"x":40.148,"y":-68.363}
+,		{"id":48,"x":39.528,"y":-18.682}
+,		{"id":49,"x":39.528,"y":-18.118}
+,		{"id":50,"x":127.472,"y":-18.118}
+,		{"id":51,"x":127.472,"y":-18.682}
+,		{"id":52,"x":126.498,"y":-18.837}
+,		{"id":53,"x":127.062,"y":-18.837}
+,		{"id":54,"x":127.062,"y":-68.363}
+,		{"id":55,"x":126.498,"y":-68.363}
+,		{"id":56,"x":39.528,"y":-66.882}
+,		{"id":57,"x":39.528,"y":-66.318}
+,		{"id":58,"x":127.472,"y":-66.318}
+,		{"id":59,"x":127.472,"y":-66.882}
+	]
+,	"segment":[
+		{"id":0,"a":0,"b":1}
+,		{"id":1,"a":2,"b":3}
+,		{"id":2,"a":3,"b":0}
+,		{"id":3,"a":4,"b":5}
+,		{"id":4,"a":5,"b":6}
+,		{"id":5,"a":6,"b":7}
+,		{"id":6,"a":7,"b":4}
+,		{"id":7,"a":7,"b":6}
+,		{"id":8,"a":1,"b":0}
+,		{"id":9,"a":4,"b":7}
+,		{"id":10,"a":0,"b":3}
+,		{"id":11,"a":5,"b":4}
+,		{"id":12,"a":3,"b":2}
+,		{"id":13,"a":6,"b":5}
+,		{"id":14,"a":8,"b":9}
+,		{"id":15,"a":10,"b":9}
+,		{"id":16,"a":11,"b":10}
+,		{"id":17,"a":9,"b":8}
+,		{"id":18,"a":8,"b":11}
+,		{"id":19,"a":10,"b":11}
+,		{"id":20,"a":11,"b":8}
+,		{"id":21,"a":9,"b":10}
+,		{"id":22,"a":12,"b":13}
+,		{"id":23,"a":14,"b":13}
+,		{"id":24,"a":15,"b":14}
+,		{"id":25,"a":13,"b":12}
+,		{"id":26,"a":12,"b":15}
+,		{"id":27,"a":14,"b":15}
+,		{"id":28,"a":15,"b":12}
+,		{"id":29,"a":13,"b":14}
+,		{"id":30,"a":16,"b":17}
+,		{"id":31,"a":18,"b":17}
+,		{"id":32,"a":19,"b":18}
+,		{"id":33,"a":17,"b":16}
+,		{"id":34,"a":16,"b":19}
+,		{"id":35,"a":18,"b":19}
+,		{"id":36,"a":19,"b":16}
+,		{"id":37,"a":17,"b":18}
+,		{"id":38,"a":20,"b":21}
+,		{"id":39,"a":22,"b":21}
+,		{"id":40,"a":23,"b":22}
+,		{"id":41,"a":21,"b":20}
+,		{"id":42,"a":20,"b":23}
+,		{"id":43,"a":22,"b":23}
+,		{"id":44,"a":23,"b":20}
+,		{"id":45,"a":21,"b":22}
+,		{"id":46,"a":24,"b":25}
+,		{"id":47,"a":26,"b":25}
+,		{"id":48,"a":27,"b":26}
+,		{"id":49,"a":25,"b":24}
+,		{"id":50,"a":24,"b":27}
+,		{"id":51,"a":26,"b":27}
+,		{"id":52,"a":27,"b":24}
+,		{"id":53,"a":25,"b":26}
+,		{"id":54,"a":28,"b":29}
+,		{"id":55,"a":30,"b":29}
+,		{"id":56,"a":31,"b":30}
+,		{"id":57,"a":29,"b":28}
+,		{"id":58,"a":28,"b":31}
+,		{"id":59,"a":30,"b":31}
+,		{"id":60,"a":31,"b":28}
+,		{"id":61,"a":29,"b":30}
+,		{"id":62,"a":32,"b":33}
+,		{"id":63,"a":34,"b":33}
+,		{"id":64,"a":35,"b":34}
+,		{"id":65,"a":33,"b":32}
+,		{"id":66,"a":32,"b":35}
+,		{"id":67,"a":34,"b":35}
+,		{"id":68,"a":35,"b":32}
+,		{"id":69,"a":33,"b":34}
+,		{"id":70,"a":36,"b":37}
+,		{"id":71,"a":38,"b":37}
+,		{"id":72,"a":39,"b":38}
+,		{"id":73,"a":37,"b":36}
+,		{"id":74,"a":36,"b":39}
+,		{"id":75,"a":38,"b":39}
+,		{"id":76,"a":39,"b":36}
+,		{"id":77,"a":37,"b":38}
+,		{"id":78,"a":40,"b":41}
+,		{"id":79,"a":42,"b":41}
+,		{"id":80,"a":43,"b":42}
+,		{"id":81,"a":41,"b":40}
+,		{"id":82,"a":40,"b":43}
+,		{"id":83,"a":42,"b":43}
+,		{"id":84,"a":43,"b":40}
+,		{"id":85,"a":41,"b":42}
+,		{"id":86,"a":44,"b":45}
+,		{"id":87,"a":46,"b":45}
+,		{"id":88,"a":47,"b":46}
+,		{"id":89,"a":45,"b":44}
+,		{"id":90,"a":44,"b":47}
+,		{"id":91,"a":46,"b":47}
+,		{"id":92,"a":47,"b":44}
+,		{"id":93,"a":45,"b":46}
+,		{"id":94,"a":48,"b":49}
+,		{"id":95,"a":50,"b":49}
+,		{"id":96,"a":51,"b":50}
+,		{"id":97,"a":49,"b":48}
+,		{"id":98,"a":48,"b":51}
+,		{"id":99,"a":50,"b":51}
+,		{"id":100,"a":51,"b":48}
+,		{"id":101,"a":49,"b":50}
+,		{"id":102,"a":52,"b":53}
+,		{"id":103,"a":54,"b":53}
+,		{"id":104,"a":55,"b":54}
+,		{"id":105,"a":53,"b":52}
+,		{"id":106,"a":52,"b":55}
+,		{"id":107,"a":54,"b":55}
+,		{"id":108,"a":55,"b":52}
+,		{"id":109,"a":53,"b":54}
+,		{"id":110,"a":56,"b":57}
+,		{"id":111,"a":58,"b":57}
+,		{"id":112,"a":59,"b":58}
+,		{"id":113,"a":57,"b":56}
+,		{"id":114,"a":56,"b":59}
+,		{"id":115,"a":58,"b":59}
+,		{"id":116,"a":59,"b":56}
+,		{"id":117,"a":57,"b":58}
+	]
+,	"triangle":null
+,	"block":[
+		{
+			"id":1
+,			"wall":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117]
+,			"floor":null
+,			"ground":[]
+,			"aera":0
+,			"area":0
+,			"top":1
+,			"bottom":0
+		}
+	]
+,	"hole":[]
+}

File diff suppressed because it is too large
+ 741 - 0
web/public/static/data/xinjiang03.json


File diff suppressed because it is too large
+ 687 - 0
web/public/static/data/xinjiang04.json


File diff suppressed because it is too large
+ 1069 - 0
web/public/static/data/xinjiang05.json


File diff suppressed because it is too large
+ 631 - 0
web/public/static/data/xinjiangout.json


BIN
web/public/static/images/auto-suspend.png


BIN
web/public/static/images/auto.png


BIN
web/public/static/images/icon.lzma


BIN
web/public/static/images/icons/hnrd.jpg


BIN
web/public/static/images/pc_step1.png


BIN
web/public/static/images/phone_step1.png


File diff suppressed because it is too large
+ 11381 - 0
web/public/static/js/CAD/bundle.js


+ 129 - 0
web/public/static/js/CAD/loadCAD.js

@@ -0,0 +1,129 @@
+window.grendCAD = (function grendCAD() {
+  let initFloor
+  // let initDOM
+  let point, dire
+
+  window.cad = {
+    setSign: function(p, d) {
+      point = p
+      dire = d
+    }
+  }
+
+  function loadDOM($parent,id) {
+    // if (initDOM) return initDOM;
+    let $layer = document.createElement('div')
+    let $cad = document.createElement('div')
+
+    $layer.className = id
+    $cad.id = id
+    $cad.setAttribute('class',window.number)
+
+    $layer.appendChild($cad)
+
+
+    let style = document.createElement('style')
+    style.innerHTML = `
+      .${id} {
+        position: fixed;
+        right: -310px;
+        top: 80px;
+        width: 260px;
+        height: 200px;
+        z-index: 99;
+        transition: all 0.3s ease;
+      }
+
+      .${id} > div {
+        width: 100%;
+        height: 100%;
+      }
+
+      @media only screen and (max-width: 600px) { 
+        .${id} {
+            position: absolute;
+            left: -310px;
+            top: 65px;
+            width: 100px;
+            height: 100px;
+            background: rgba(0, 0, 0, .3);
+            border-radius: 5px;
+        }
+      }
+    `
+
+    $parent.appendChild(style)
+    $parent.appendChild($layer)
+    
+    return $layer
+  }
+
+
+  function setStyle(signColor, borderColor, borderWidth) {
+    cad.setDefaultPointStyle({
+      fillColor: "rgba(0,0,0,0)",
+      storkeColor: "rgba(0,0,0,0)"
+    });
+
+    console.log(borderWidth)
+    cad.setDefaultLineStyle({
+      width: borderWidth,
+      color: borderColor
+    });
+
+    console.log('执行===============');
+
+    cad.setDefaultSignStyle({
+      color: signColor,
+      r: 6,
+    })
+  }
+
+
+  return function(floor, $parent, signColor, borderColor, borderWidth, id) {
+    // if (initFloor) {
+    //   console.log('cache')
+    //   return setStyle(signColor, borderColor, borderWidth)
+    // }
+    console.log('load')
+    initFloor = floor
+
+      let $layer = loadDOM($parent,id)
+
+      $layer.style.visibility = 'hidden'
+      window.cad = structureCAD({
+        data: {
+            block: [],
+            column: [],
+            door: [],
+            hole: [],
+            segment: [],
+            "vertex-xy": [],
+            "vertex-z": [],
+        }, 
+        layer: $layer.querySelector('#'+id),
+        edit: false
+      });
+      
+      setStyle(signColor, borderColor, borderWidth)
+      cad.hideDire()
+      cad.hideGauge()
+  
+      console.log('loadData')
+      cad.loadData(initFloor);
+
+      if (point && dire) {
+        window.cad.setSign(point, dire)
+      }
+      $layer.style.visibility = 'visible'
+
+  }
+})();
+
+$.ajax({
+  url: `static/data/${window.number}.json`, 
+  method: 'GET',
+  success(res) {
+    grendCAD(res, document.documentElement, '#D32424', '#ffffff', '1px','cad')
+  }
+})

+ 51 - 41
web/public/static/js/Hot.js

@@ -1,3 +1,4 @@
+ 
 //合并热点和展览 
 g_currentHot = null
 
@@ -27,8 +28,8 @@ window.initHot = function(model){
         opacity: 0.8,
         side:THREE.DoubleSide
     })
-    
     var autoSizeInfo = {minSize : 120,  maxSize : 600,   nearBound : 1 , farBound :  15}
+
     var hotGroup = new THREE.Object3D;  hotGroup.name = "hotGroup"
     model.add(hotGroup);   model.hotGroup = hotGroup
     
@@ -40,7 +41,7 @@ window.initHot = function(model){
           , o = "en" == manage.number("lang") ? "&lang=" + manage.number("lang") : "";
         -1 == r.indexOf("?") ? src = link + "?time=" + randomTime().getTime() + "&id=" + window.number + o : src = link + "&time=" + randomTime().getTime() + "&id=" + window.number + o 
             
-         return src.replace('https://www.4dmodel.com/SuperTwo/hot_online1/', 'https://culture.4dage.com/JHSuperTow/')    
+        return src 
     }
     var removeSrcPostMark = function(url){//去除texture.load时自动加上的'?'
         var index = url.indexOf('?')
@@ -129,6 +130,7 @@ window.initHot = function(model){
              
             
             this.sid = info.sid;
+            info.styleImg = info.styleImg.map(item=>manage.dealURL(item))
             this.preDeal(info, source)// source:来源
             
             this.info = info
@@ -383,6 +385,7 @@ window.initHot = function(model){
                     this.styleImg = /* this.styleImg || */ [];
                     if(this.info.styleImg){
                         this.styleImg = this.info.styleImg.map((src)=>{  
+                            src = src.indexOf('4dagePoint')>-1?('static/'+src):src
                             return {src:/* manage.dealURL( */src } //如果要dealURL,在predeal里
                         }) 
                     }
@@ -410,7 +413,9 @@ window.initHot = function(model){
             
             styleImg = styleImg || this.styleImg
             var tex1, tex2
+            
             if(styleImg.length){
+                console.log(styleImg,'styleImg');
                 tex1 = Texture.load(styleImg[0].src);
                 tex2 = Texture.load(styleImg[1]&&styleImg[1].src || styleImg[0].src); 
                 
@@ -929,22 +934,22 @@ window.initHot = function(model){
                 this.quaternion.copy(player.camera.quaternion)
             }
             
-
             this.updateScale()
         }
                     
-            updateScale(e, t) {//自适应调节大小 
-                if(!DATA.autoAdjustHotScale || this.texType != 'shine' )return
-                //let renderSize = player.sceneRenderer.renderer.domElement 
-                let renderSize = player.sceneRenderer.renderer.getSize()
-                
-                var scale = convertTool.getScaleForConstantSize($.extend(autoSizeInfo,{
-                    camera:player.camera,  resolution:{x:renderSize.width, y:renderSize.height},
-                    position: this.position.clone() ,
-                }))
-                this.plane.scale.set(scale,scale,scale)
-                
-            }     
+        updateScale(e, t) {//自适应调节大小 
+            if(!DATA.autoAdjustHotScale || this.texType != 'shine' )return
+            //let renderSize = player.sceneRenderer.renderer.domElement 
+            let renderSize = player.sceneRenderer.renderer.getSize()
+            
+            var scale = convertTool.getScaleForConstantSize($.extend(autoSizeInfo,{
+                camera:player.camera,  resolution:{x:renderSize.width, y:renderSize.height},
+                position: this.position.clone() ,
+            }))
+            this.plane.scale.set(scale,scale,scale)
+            
+        }                
+
 
         switchPlay(state){//手动播放暂停 
             this.pausedByUser = !state
@@ -1056,7 +1061,8 @@ window.initHot = function(model){
                 },
                 
                 (pano)=>{ // add
-                    return this.info.visiblePanos.includes(pano.id)
+                    // 周恩光改 解决visiblePanos为undefined时的bug
+                    return this.info.visiblePanos && this.info.visiblePanos.includes(pano.id)
                 }    
             )
             n.push(
@@ -1080,7 +1086,7 @@ window.initHot = function(model){
                 
                 
             var s = t.model.panos.sortByScore(i, n);
-            console.log(s)
+             
             return s && 0 < s.length && s[0].pano
         }
          
@@ -1093,7 +1099,10 @@ window.initHot = function(model){
             var needExamine = options.examine || (!settings.dontExamHot && this.info.actionType.examine)  
             if(!openHot && !needExamine)return;
             
-            
+            if(this.info.actionType['linkother']){
+                window.player.director.emit('linkother',this.info)
+                return;
+            }
             if(openHot && this.info.linkType!="common" && this.info.iframe && this.info.iframe[0]){
                 var src = getLink(this.info.iframe[0]);
                 
@@ -1107,18 +1116,19 @@ window.initHot = function(model){
                     div.style.position = 'fixed';
                     div.style.width = div.style.height = "100%";
                     div.style.left = div.style.top = '0';
-                    div.style["z-index"] = "999"
-                    
+                    div.style["z-index"] = "9999"
+                    div.style["background-color"] = "rgba(0, 0, 0, 0.5)"; 
+
                     var exit = document.createElement("div");
-                    exit.style["background-image"] = "url(images/vrOffImg.png)";
+                    exit.style["background-image"] = "url(static/images/vrOffImg.png)";
                     exit.style.position = 'absolute';
                     exit.style.width = exit.style.height = "50px";
-                    exit.style.left = '17px';   exit.style.top = "20px"
+                    exit.style.right = '17px';   exit.style.top = "20px"
                     exit.style.cursor = "pointer";
                     exit.style["background-repeat"] = "no-repeat";
                     exit.style["background-size"] = "25%"; 
                     exit.style["background-position"] = "center center"; 
-                    exit.style["background-color"] = "rgba(0, 0, 0, 0.2)"; 
+                    exit.style["background-color"] = "rgba(0, 0, 0, 0.5)"; 
                     exit.style["border-radius"] = "50%";
                     exit.style["z-index"] = "3"
                     exit.onclick = ()=>{
@@ -1345,10 +1355,10 @@ window.initHot = function(model){
         requestDownload(type,callback) { 
             var plane = this.plane;
              
-            
             if(type == 'photo'){
                 if(this.photoHasRequestLoad || this.texType != 'photo')return;
                 //console.log('overlay beginDownload : ' + this.sid)
+                
                  
                 /* this.material_.map =  */Texture.load(this.info.texSrc, (tex)=>{ 
                     callback && callback()
@@ -1363,7 +1373,7 @@ window.initHot = function(model){
                         if(e.info.texSrc == this.info.texSrc && e.info.texType == type  ){ 
                             e.material_.color.set("#FFFFFF") 
                             e.material_.opacity = 1;
-                            console.log('overlay loaded: ' + e.sid + " - " + this.info.texSrc.split('/').pop());
+                            //console.log('overlay loaded: ' + e.sid + " - " + this.info.texSrc.split('/').pop());
                         
                         
                              
@@ -1621,24 +1631,24 @@ window.initHot = function(model){
     
     
     
-    // Hot.createHotList = function() {
-    //     var docFragment = document.createDocumentFragment();
-    //     var hots = hotGroup.children.filter(hot=>hot.info.actionType.openHot);
-    //     hots = hots.sort((a,b)=>{return a.order - b.order});
-    //     hots.forEach((hot)=>{
-    //         var li = document.createElement('li');
-    //         var span = document.createElement('span');
-    //         span.innerHTML = hot.info.title || '热点';
-    //         // console.log(span.innerHTML);
-    //         li.hot = hot;   // 列表每一项对应一个热点
-    //         li.appendChild(span);
-    //         docFragment.appendChild(li);
+    Hot.createHotList = function() {
+        var docFragment = document.createDocumentFragment();
+        var hots = hotGroup.children.filter(hot=>hot.info.actionType.openHot);
+        hots = hots.sort((a,b)=>{return a.order - b.order});
+        hots.forEach((hot)=>{
+            var li = document.createElement('li');
+            var span = document.createElement('span');
+            span.innerHTML = hot.info.title || '热点';
+            // console.log(span.innerHTML);
+            li.hot = hot;   // 列表每一项对应一个热点
+            li.appendChild(span);
+            docFragment.appendChild(li);
              
-    //     })  
-    //     var ul = document.querySelector('#hotListContent ul');
-    //     ul && ul.appendChild(docFragment);
+        })  
+        var ul = document.querySelector('#hotListContent ul');
+        ul && ul.appendChild(docFragment);
          
-    // }
+    }
             
 
 }

File diff suppressed because it is too large
+ 2481 - 0
web/public/static/js/lib/wangEditor.min.js.bak


+ 17 - 17
web/public/static/js/loadCAD.js

@@ -132,20 +132,20 @@ window.grendCAD = (function grendCAD() {
 })();
 
 
-$.ajax({
-  url: g_Prefix + "data/" + window.number + "/someData.json" + "?" + Date.now(),
-  method: 'GET',
-  success(data) {
-    if (!data.showCad) return
-
-
-    
-    $.ajax({
-      url: '//super.4dage.com/data/'+ window.number +'/floor.json', 
-      method: 'GET',
-      success(res) {
-        grendCAD(res, document.querySelector('body'), data.cadSignColor, data.cadBorderColor, data.cadBorderWidth)
-      }
-    })
-  }
-})
+  $.ajax({
+    url: g_Prefix + "data/" + window.number + "/someData.json" + "?" + Date.now(),
+    method: 'GET',
+    success(data) {
+      if (!data.showCad) return
+  
+  
+      
+      $.ajax({
+        url: '//super.4dage.com/data/'+ window.number +'/floor.json', 
+        method: 'GET',
+        success(res) {
+          grendCAD(res, document.querySelector('body'), data.cadSignColor, data.cadBorderColor, data.cadBorderWidth)
+        }
+      })
+    }
+  })

File diff suppressed because it is too large
+ 58372 - 0
web/public/static/js/main_2020_show copy.js


File diff suppressed because it is too large
+ 294 - 172
web/public/static/js/main_2020_show.js


+ 19 - 151
web/public/static/js/manage.js

@@ -1,10 +1,10 @@
   
 var g_ProjectName=window.location.pathname.substring(window.location.pathname.indexOf("/")+1,window.location.pathname.lastIndexOf("/"));
 var g_Prefix="https://super.4dage.com/";
-// var g_Prefix=window.location.href.substring(0,window.location.href.indexOf("/index.html")+1);
-var s = window.location.href.split('/');
-    s.pop();
-//var g_Prefix = s.join('/');
+
+// var g_Prefix=window.location.origin+'/';
+window.isLocal = true
+
 var g_index=null;
 var g_modeldata=null;
 
@@ -21,8 +21,7 @@ var g_HotMeshSize = {
 var g_HotStatus=null;
 var g_newHot = [];//存储新加热点
 var g_HotImage= {
-	"point":"https://super.4dage.com/images/4dagePoint2.png",
-	"point2":"https://super.4dage.com/images/4dagePoint.png"
+	
 };	
 var g_saveHot=false;
 
@@ -30,7 +29,7 @@ var g_TextColor=0x7777ff;
 var g_Text=null;
 var g_TextPlaneMesh=[];
 var g_TextIconMesh=[];
-var g_TextIcon="./images/text.png";
+var g_TextIcon="./static/images/text.png";
 var g_SelectTextIndex=null;
 var g_TextShow=null;
 var g_audioPlay=false;
@@ -83,7 +82,8 @@ var settings = {
     tourRotTime:2,  //默认停留2秒
     //dontExamHot:true  
     transparentBg: false,
-    bgImg:  null 
+    bgImg:  null,
+    localPrefix:'/'
 }
 if(window.number == '725'||window.number == '724'){
     settings.mobileNavHigh = true
@@ -335,6 +335,11 @@ var convertTool = {
     
 }
 
+ 
+
+
+
+
 
 
 
@@ -351,7 +356,6 @@ var Manage = function(){
     this.weixinURL = "https://res.wx.qq.com/open/js/jweixin-1.2.0.js",
     this.time = "?"+new Date().getTime();
     this.loadAudio();
-    this.loadWeixin();
 }
 //动态加载js文件
 Manage.prototype.LoadJs = function(_files, succes){
@@ -447,133 +451,6 @@ Manage.prototype.number = function(variable) {
    	return(false);
 };
 
-Manage.prototype.loadWeixin = function() {
-    var that = this;
-    this.LoadJs(that.weixinURL+that.time,function(){ });
-
-}
-
-
- 
-
-
-Manage.prototype.weixinShare = function() {
-    console.log("weixinShare")
-    $.ajax({    
-        url:'https://www.4dage.com/wechat/jssdk/', 
-        type: "post",
-        data : {
-            'url' : location.href.split('#')[0]
-        }, 
-        dataType:"jsonp",     
-        jsonpCallback:"success_jsonp",         
-        success:function(data,textStatus){
-            console.log("weixinShare success")
-            console.log(data.appId)
-            
-            wx.config({
-                // debug : true,
-                appId : data.appId,
-                timestamp : data.timestamp,
-                nonceStr : data.nonceStr,
-                signature : data.signature,
-                jsApiList : [ 'checkJsApi', 'onMenuShareTimeline',
-                        'onMenuShareAppMessage', 'onMenuShareQQ',
-                        'onMenuShareWeibo', 'hideMenuItems',
-                        'showMenuItems', 'hideAllNonBaseMenuItem',
-                        'showAllNonBaseMenuItem', 'translateVoice',
-                        'startRecord', 'stopRecord', 'onRecordEnd',
-                        'playVoice', 'pauseVoice', 'stopVoice',
-                        'uploadVoice', 'downloadVoice', 'chooseImage',
-                        'previewImage', 'uploadImage', 'downloadImage',
-                        'getNetworkType', 'openLocation', 'getLocation',
-                        'hideOptionMenu', 'showOptionMenu', 'closeWindow',
-                        'scanQRCode', 'chooseWXPay',
-                        'openProductSpecificView', 'addCard', 'chooseCard',
-                        'openCard' ]
-            });
-        },    
-        error:function(XMLHttpRequest,textStatus,errorThrown){    
-            console.log("jsonp.error:"+textStatus);    
-        }    
-    }); 
-    
-    var success_jsonp = function(json){
-        console.log(json);
-    };
-
-
-    wx.ready(function(){ 
-        // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行〿
-        //对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中〿
-        //分享到朋友圈 
-        console.log(g_weixinObj)
-        wx.onMenuShareTimeline({ 
-            title: g_weixinObj.title, // 分享标题 
-            link: g_weixinObj.lineLink, // 分享链接 
-            imgUrl: g_weixinObj.imgUrl, // 分享图标 
-            desc: g_weixinObj.desc
-        }); 
-
-        //获取“分享给朋友”按钮点击状态及自定义分享内容接叿
-        wx.onMenuShareAppMessage({ 
-            title: g_weixinObj.title, // 分享标题 
-            desc: g_weixinObj.desc,  // 分享描述 
-            link: g_weixinObj.lineLink, // 分享链接 
-            imgUrl: g_weixinObj.imgUrl, // 分享图标 
-            type: '', // 分享类型,music、video或link,不填默认为link 
-            dataUrl: '' // 如果type是music或video,则要提供数据链接,默认为空 
-        });
-        
-        wx.onMenuShareWeibo({
-            title: g_weixinObj.title, // 分享标题
-            desc: g_weixinObj.desc, // 分享描述
-            link: g_weixinObj.lineLink, // 分享链接
-            imgUrl: g_weixinObj.imgUrl, // 分享图标
-            success: function () { 
-                // 用户确认分享后执行的回调函数
-            },
-            cancel: function () { 
-                // 用户取消分享后执行的回调函数
-            }
-        });
-
-        wx.onMenuShareQZone({
-            title: g_weixinObj.title, // 分享标题
-            desc: g_weixinObj.desc, // 分享描述
-            link: g_weixinObj.lineLink, // 分享链接
-            imgUrl: g_weixinObj.imgUrl, // 分享图标
-            success: function () { 
-                // 用户确认分享后执行的回调函数
-            },
-            cancel: function () { 
-                // 用户取消分享后执行的回调函数
-            }
-        });
-
-        wx.onMenuShareQQ({
-            title: g_weixinObj.title, // 分享标题
-            desc:  g_weixinObj.desc, // 分享描述
-            link: g_weixinObj.lineLink, // 分享链接
-            imgUrl: g_weixinObj.imgUrl, // 分享图标
-            success: function () { 
-                // 用户确认分享后执行的回调函数
-            },
-            cancel: function () { 
-                // 用户取消分享后执行的回调函数
-            }
-        });
-
-        wx.error(function(res){ 
-        // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名〿
-
-        });
-    });
-
-    
-}
-
-
 
 Manage.prototype.dealURL = function(src, type){
     //music: "///super.4dage.com/data/LYW/edit/20200928_151633415.mp3"
@@ -588,7 +465,7 @@ Manage.prototype.dealURL = function(src, type){
             return src.replace(wholeOldPrefix, settings.localPrefix)
         }
         
-        console.error("没有找到合适的本地链接") 
+        // console.error("没有找到合适的本地链接") 
         return src
     }else{
         //add https://
@@ -990,6 +867,7 @@ var SoundManager = {//暂不支持同时播放
                 object.audio.currentTime = currentTime
             }
             if(object.audio){
+                object.audio.muted = window.ISMUTED
                 object.audio.load();	// iOS 9   还需要额外的 load 一下, 否则直接 play 无效 *///https://www.cnblogs.com/interdrp/p/4211883.html   部分资料
                 object.audio.play();
                 object.callback && object.callback(true)
@@ -1077,19 +955,17 @@ var SoundManager = {//暂不支持同时播放
             if(this.currentAudio && this.currentAudio.audio){
                 this.currentAudio.audio.play() 
                 Log(`${this.currentAudio.name} 自动播放成功`) //即使设置src在这之后好像也能成功播放
-            }else{
-                
-            }
+            }else{}
             document.removeEventListener("touchstart",play);
             document.removeEventListener("click",play);
-            $('#player')[0].removeEventListener("touchstart", play);
+            $('#player')[0] && $('#player')[0].removeEventListener("touchstart", play);
         }.bind(this);
         
         
         document.addEventListener("WeixinJSBridgeReady", play, false);
         document.addEventListener("touchstart", play);//ios需要加个事件才能播放 不能自动播放;如果还有浏览器不行,换成别的交互事件
         document.addEventListener("click", play);
-        $('#player')[0].addEventListener("touchstart", play); 
+        $('#player')[0] && $('#player')[0].addEventListener("touchstart", play); 
             
          
     }
@@ -1124,13 +1000,7 @@ Manage.prototype.loadAudio = function() { //相关:g_tourAudio \  g_playAudio
             return this.bgmShouldPlay
         },
         callback:(state)=>{//play或pause时随之触发的函数(即使还没开始播放)
-            if(state){
-                $("#volume a img").attr("src", "./images/Volume btn_off.png")
-                $("#volume").attr("title", "关闭声音");
-            }else{
-                $("#volume a img").attr("src", "./images/Volume btn_on.png")
-                $("#volume").attr("title", "打开声音");
-            }
+        
         }
     })  
     SoundManager.createAudio({
@@ -1178,10 +1048,8 @@ Manage.prototype.switchBgmState = function(state){//按钮的状态完全代表
     
     
     if(state){
-        
         SoundManager.play('bgm')
     }else{
-        
         SoundManager.pause('bgm')
     }
     

+ 4 - 4
web/public/static/js/myShow.js

@@ -20,8 +20,8 @@ var g_HotMeshSize = {
 var g_HotStatus=null;
 var g_newHot = [];//存储新加热点
 var g_HotImage= {
-	"point":"https://super.4dage.com/images/4dagePoint2.png",
-	"point2":"https://super.4dage.com/images/4dagePoint.png"
+	"point":"https://super.4dage.com/static/images/4dagePoint2.png",
+	"point2":"https://super.4dage.com/static/images/4dagePoint.png"
 };	
 var g_saveHot=false;
 
@@ -29,7 +29,7 @@ var g_TextColor=0x7777ff;
 var g_Text=null;
 var g_TextPlaneMesh=[];
 var g_TextIconMesh=[];
-var g_TextIcon="./images/text.png";
+var g_TextIcon="./static/images/text.png";
 var g_SelectTextIndex=null;
 var g_TextShow=null;
 var g_audioPlay=false;
@@ -55,7 +55,7 @@ var g_snapShotHeight = 140;
 var g_weixinObj = {
   "title": document.querySelector("head title").innerHTML,
   "lineLink" : window.location.href,
-  "imgUrl" : "https://www.4dmodel.com/SuperPanoramic/images/weixintitle.jpg",
+  "imgUrl" : "https://www.4dmodel.com/SuperPanoramic/static/images/weixintitle.jpg",
   "desc" : "四维时代提供技术支持",
 }
 

+ 550 - 0
web/public/static/js/overlay.js

@@ -0,0 +1,550 @@
+var MathLight = {};
+MathLight.RADIANS_PER_DEGREE = Math.PI / 180;
+MathLight.DEGREES_PER_RADIAN = 180 / Math.PI;
+
+ 
+ 
+
+var initOverlay = function(THREE) {
+    var _planeGeometry = new THREE.PlaneGeometry(settings.overlay.width,settings.overlay.height,1,1)
+    var _boxGeometry = new THREE.BoxBufferGeometry(settings.overlay.width,settings.overlay.height,settings.overlay.depth)
+    //ie的mesh 加了polygonOffset也是会重叠。所以去掉前面的face:  (但是突然ie又播放不了videoTexture)
+    var newIndex = [..._boxGeometry.index.array]
+    newIndex.splice(4 * 6, 6)
+    _boxGeometry.setIndex(new THREE.BufferAttribute(new Uint16Array(newIndex),1))
+
+    var _boxMat = new THREE.MeshBasicMaterial({
+        //MeshStandardMaterial
+        color: "#eeeeee",
+        transparent: !0,
+        opacity: 0.8
+    })
+
+    var overlayGroup = new THREE.Object3D;
+    player.model.add(overlayGroup);
+    overlayGroup.name = "overlayGroup"
+    player.overlayGroup = overlayGroup;
+
+    var Overlay = function(info) {
+        THREE.Object3D.call(this);
+        this.sid = info.sid;
+        if (info.media)
+            this.preDeal(info)
+        this.build(info);
+        this.name = "overlay_" + this.sid;
+    }
+    Overlay.prototype = Object.create(THREE.Object3D.prototype);
+
+    Overlay.prototype.build = function(info) {
+
+        var plane = new THREE.Mesh(_planeGeometry,new THREE.MeshBasicMaterial({
+            //MeshStandardMaterial
+            color: "#00c8af",
+            opacity: 0.4,
+            transparent: !0,
+            polygonOffset: true,
+            //是否开启多边形偏移		//ie不开启时blank也不会闪烁
+            polygonOffsetFactor: -0.9,
+            //多边形偏移因子
+            polygonOffsetUnits: -4.0,
+            //多边形偏移单位  
+        }))
+        plane.renderOrder = 3
+        this.add(plane);
+        this.plane = plane;
+        if (info.hasBox) {
+            this.addBox(true)
+        }
+        overlayGroup.add(this);
+
+        if (info.media) {
+            if (info.media.includes('video')) { 
+                //var id = "video"+ this.sid    id="${ id }"
+                var video = $(`<video  controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>`)[0]
+                 
+                video.setAttribute("crossOrigin", 'Anonymous')
+                //要在src设置好前解决跨域
+                $(video).on('contextmenu', function() {
+                    return false;
+                });
+                //禁止右键点击出
+
+                video.src = manage.dealURL(info.file);
+                info.media = video;
+                info.type = "video"
+
+                /* video.addEventListener('loadeddata', ()=>{
+                    console.log(this.sid + " loaded!!!")
+                }) */
+                
+                video.oncanplaythrough = function() {
+                    plane.material.map.needsUpdate = !0
+                   
+                    video.play()
+                        
+                     
+                }
+                
+                
+                video.volume = 0
+                video.muted = true
+                plane.material.opacity = 1;
+            } else if (info.media.includes('photo')) {
+                /* var img = new Image();
+                 
+                img.src = manage.dealURL(info.file) //"https://4dkk.4dage.com/images/images"+Config.projectNum+"/overlay"+this.sid+".jpg?m="+new Date().getTime()
+                info.media = img
+                 */
+
+                info.type = "photo"
+                plane.material.opacity = 0.1;
+                
+                /* this.animateInfo = {
+                        cellXcount : 4,
+                        cellYcount : 2,
+                        loop : true,
+                        duration : 1000 
+                    }
+                */
+
+        
+            }
+            
+            plane.material.color = new THREE.Color(1,1,1)
+        }
+        if (info.width == void 0)
+            info.width = settings.overlay.width;
+        if (info.height == void 0)
+            info.height = settings.overlay.height;
+        this.setFromInfo(info)
+        this.fileSrc = info.file
+
+    }
+
+
+
+
+
+    Overlay.prototype.setFromInfo = function(info) {
+        //1 恢复到编辑之前 2 初始加载 
+        var plane = this.plane; 
+        var transformAtPanos = {}
+        for(var i in info.transformAtPanos){
+            transformAtPanos[i] = {
+                width : info.transformAtPanos[i].width,
+                height : info.transformAtPanos[i].height,
+                pos : info.transformAtPanos[i].pos.clone(),
+                qua : info.transformAtPanos[i].qua.clone(),
+            }      
+        } 
+        
+        this.transformAtPanos = transformAtPanos
+        //在每个漫游点独立设置的position。  
+        //var curPanoTransform = player.currentPano && this.transformAtPanos[player.currentPano.id] || {}
+        var curPanoTransform = this.transformAtPanos[ getTransformSid()] || {}
+         
+        
+        info.depth && this.scale.setZ(info.depth / settings.overlay.depth)
+
+        this.posCustom = info.pos ? info.pos.clone() : this.position.clone();
+        //没有单独设置position的漫游点使用的position
+        this.position.copy(curPanoTransform.pos || this.posCustom)
+
+        this.quaCustom = info.qua ? info.qua.clone() : this.quaternion.clone()
+        this.quaternion.copy(curPanoTransform.qua || this.quaCustom);
+
+        this.widthCustom = info.width
+        this.heightCustom = info.height
+        this.width = curPanoTransform.width || this.widthCustom
+        this.height = curPanoTransform.height || this.heightCustom
+        var a = this.getScaleBySize(this.width, this.height)
+        this.scale.setX(a.x)
+        this.scale.setY(a.y)
+
+        if (info.type) {
+            if (!plane.material.map) {
+                if (info.type == "video") {
+                    plane.material.map = new THREE.VideoTexture(info.media);
+                    this.hasRequestLoad = true
+
+                    plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+                    plane.material.map.minFilter = THREE.LinearFilter;
+                    plane.material.map.magFilter = THREE.LinearFilter;
+                    plane.material.map.generateMipmaps = true;
+
+                } else {
+                    this._loadDones = []
+                    /* plane.material.map = Texture.load(info.file,()=>{
+                        if(this._loadDones){
+                            this._loadDones.forEach(e=>e())
+                            this._loadDones = null
+                        }
+                    })  */
+                }
+                /* plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+                plane.material.map.minFilter = THREE.LinearFilter;
+                plane.material.map.magFilter = THREE.LinearFilter;
+                plane.material.map.generateMipmaps = true;  */
+            } else{
+                plane.material.map.image = info.media;
+                plane.material.map.needsUpdate = true
+            }
+                
+            this.file = info.file;
+        }
+        this.overlayType = info.type;
+
+        if (!!this.hasBox != !!info.hasBox) {
+            this.addBox(!this.hasBox);
+        }
+
+        this.updateMatrixWorld()
+        this.getVisiblePanos()
+        
+        
+        {//gif
+            if(this.animation){
+                GifTexDeal.remove(this.animation)
+            }
+            this.animateInfo = CloneObject(info.animateInfo) 
+            if(this.animateInfo && plane.material.map){
+                this.animation = GifTexDeal.addAnimation(plane.material.map, this, this.animateInfo, this.sid )
+                this.visible && this.inSight() && GifTexDeal.start(this.animation)
+            }    
+        }
+        
+        
+        
+    }
+
+
+
+   
+
+
+
+
+    Overlay.prototype.addBox = function(state) {
+        if (state == !!this.hasBox) {
+            return;
+        }
+        if (state) {
+            var box = new THREE.Mesh(_boxGeometry,_boxMat)
+            box.position.set(0, 0, settings.overlay.depth / 2);
+            box.renderOrder = 3
+            this.plane.position.set(0, 0, settings.overlay.depth);
+            this.add(box);
+            this.box = box;
+
+        } else {
+            this.plane.position.set(0, 0, 0);
+            this.remove(this.box);
+            this.box = null;
+        }
+        this.hasBox = state
+    }
+
+    Overlay.prototype.getSizeByScale = function() {
+        return {
+            width: settings.overlay.width * this.scale.x,
+            height: settings.overlay.height * this.scale.y
+        }
+    }
+    Overlay.prototype.getScaleBySize = function(width, height) {
+        return {
+            x: width / settings.overlay.width,
+            y: height / settings.overlay.height,
+        }
+    }
+
+    Overlay.prototype.preDeal = function(info) {
+        info.pos = new THREE.Vector3().fromArray(info.pos)
+        info.qua = new THREE.Quaternion().fromArray(info.qua)
+        info.width = parseFloat(info.width)
+        info.height = parseFloat(info.height)
+        info.depth = parseFloat(info.depth)
+        info.hasBox = parseInt(info.hasBox)
+        info.pos.x = parseFloat(info.pos.x)
+        info.pos.y = parseFloat(info.pos.y)
+        info.pos.z = parseFloat(info.pos.z)
+        info.qua.x = parseFloat(info.qua.x)
+        info.qua.y = parseFloat(info.qua.y)
+        info.qua.z = parseFloat(info.qua.z)
+        info.qua.w = parseFloat(info.qua.w)
+
+        if (!info.transformAtPanos)
+            info.transformAtPanos = {}
+
+        for (let i in info.transformAtPanos) {
+            info.transformAtPanos[i].pos = new THREE.Vector3().fromArray(info.transformAtPanos[i].pos)
+            info.transformAtPanos[i].qua = new THREE.Quaternion().fromArray(info.transformAtPanos[i].qua)
+
+        }
+
+    }
+
+    Overlay.prototype.getVisiblePanos = function() {//在不同点还不一样
+        var depth = this.scale.z * settings.overlay.depth;
+        var getPos = function(position, quaternion, width, height){//每个overlay位置对应5个坐标,plane中心和四个角的位置
+            
+            var cornerPoint = [
+                new THREE.Vector3(0, 0, depth),
+                new THREE.Vector3(-width/2, height/2, depth),
+                new THREE.Vector3(width/2, height/2, depth),
+                new THREE.Vector3(width/2, -height/2, depth),
+                new THREE.Vector3(-width/2, -height/2, depth),
+            ]; 
+            
+            return cornerPoint.map(e=>{
+                return e.clone().applyQuaternion(quaternion).add(position)
+            }) 
+            
+        }
+        
+        var customPositions = getPos(this.posCustom, this.quaCustom, this.widthCustom, this.heightCustom)
+        var posAtPanos = {}
+        
+        for(let panoId in this.transformAtPanos){
+            if(panoId == 'outSide')continue;
+            posAtPanos[panoId] = getPos(this.transformAtPanos[panoId].pos, this.transformAtPanos[panoId].qua, this.transformAtPanos[panoId].width, this.transformAtPanos[panoId].height)
+            
+        }  
+        
+        
+        this.visiblePanos = common.getVisiblePano(customPositions, {
+            model: null , posAtPanos
+        });
+    }
+    
+    
+    
+    Overlay.prototype.updateVisible = function(panos, visibility) {
+        
+        if(settings.isEdit && EditOverlay.editPlane == this){
+            return true
+        }
+        
+        this.visible = visibility != void 0 ? visibility : !!panos.find(pano=>this.visiblePanos.includes(pano))
+        
+        if (this.overlayType == 'video'){
+            //this.switchPlay(this.visible,  this.visible ? null : 'stop' );//可见时不操作;不可见时停止
+            this.update()
+        }
+        
+        
+            
+        
+        /* if(this.animateInfo){ //在player.update里更新
+            if(this.visible){
+                GifTexDeal.start(this.animation)
+            }else{
+                GifTexDeal.stop(this.animation)
+            }
+        } */ 
+    }
+    
+    
+    Overlay.updateVisibles = function(panos) {
+        if (panos === true) {
+            player.overlayGroup.children.forEach(e=>e.updateVisible(null,true))
+        } else {
+            player.overlayGroup.children.forEach(e=>e.updateVisible(panos))
+        }
+    }
+
+
+    Overlay.prototype.switchPlay = function(state){//手动播放暂停 
+        this.pausedByUser = !state
+        
+        this.videoControl(state)
+       
+        
+    }
+    
+
+
+    Overlay.prototype.videoControl = function(state){
+        if(this.overlayType != "video")return
+        var video = this.plane.material.map.image
+        if(!state || state == 'stop'){
+            video.paused || video.pause()
+            if(state == 'stop'){
+                video.currentTime = 0;
+               
+            }
+             
+            //console.log("pause")
+        }else if(state){ 
+            video.paused && video.play()
+             
+            //console.log("play")
+        }
+    }     
+    
+    
+    
+    Overlay.prototype.inSight = function(){
+        if(player.mode == 'panorama'){
+            var position = this.plane.getWorldPosition()
+            var pos2d = math.getPos2d(position, player.camera, $("#player")[0])
+            if(pos2d.trueSide && pos2d.inSight){
+                return true
+            }else{ 
+                var cornerPoint = [
+                    new THREE.Vector3(-settings.overlay.width/2, settings.overlay.height/2, 0),
+                    new THREE.Vector3(settings.overlay.width/2, settings.overlay.height/2, 0),
+                    new THREE.Vector3(settings.overlay.width/2, -settings.overlay.height/2, 0),
+                    new THREE.Vector3(-settings.overlay.width/2, -settings.overlay.height/2, 0),
+                ];            
+                for(var i=0;i<4;i++){//只要有一点可见就算看见
+                    cornerPoint[i].applyMatrix4(this.plane.matrixWorld);
+                    var pos2d = math.getPos2d(cornerPoint[i], player.camera, $("#player")[0])
+                    if(pos2d.trueSide && pos2d.inSight){
+                        return true
+                    }
+                }
+            }
+        }else{//飞出要判断模型阻挡,有点耗时就算了
+            return true
+        }
+    }
+    
+    Overlay.prototype.update = function(){//实时监测播放
+        if(this.overlayType == "video"){
+            if(this.visible && !this.pausedByUser && this.inSight()){
+                this.videoControl(true) 
+            }else{
+                this.videoControl(false) 
+            }
+        }else if(this.animateInfo){ 
+            if(this.visible && this.inSight()){
+                GifTexDeal.start(this.animation)
+            }else{
+                GifTexDeal.stop(this.animation)
+            } 
+        }
+    }
+    
+    Overlay.prototype.addToLoadQueue = function() {
+        if (this.overlayType == 'photo') {
+            Overlay.loadQueue.includes(this) || Overlay.loadQueue.push(this)
+
+        }
+    }
+    
+    
+    Overlay.prototype.requestDownload = function() {
+        if (this.hasRequestLoad || this.overlayType != 'photo')
+            return
+
+        console.log('overlay beginDownload : ' + this.sid)
+        var plane = this.plane;
+
+        plane.material.map = Texture.load(this.file, ()=>{
+            
+            if (this._loadDones) {
+                this._loadDones.forEach(e=>e())
+                this._loadDones = null
+            }
+            setTimeout(Overlay.loadNext, 50)
+            plane.material.opacity = 1;
+            console.log('overlay loaded: ' + this.sid)
+            
+            if(this.animateInfo){
+                this.animation = GifTexDeal.addAnimation(plane.material.map, this, this.animateInfo, this.sid )
+                this.visible && this.inSight() && GifTexDeal.start(this.animation)
+            }
+            
+            plane.material.needsUpdate = true
+        })
+        plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+        plane.material.map.minFilter = THREE.LinearFilter;
+        plane.material.map.magFilter = THREE.LinearFilter;
+        plane.material.map.generateMipmaps = true;
+
+        this.hasRequestLoad = true
+    }
+
+    Overlay.loadQueue = []; //等待下载的overlay,目前只针对photo
+    Overlay.maxLoadingCount = 3; //同时正在load图片的数量
+    Overlay.loadNext = ()=>{//继续requestDownload  loadQueue中前排的item
+
+        var loadings = player.overlayGroup.children.filter(e=>e.hasRequestLoad && e._loadDones)//开始下载了但是没加载好的
+        
+        Overlay.loadQueue.slice(0, Overlay.maxLoadingCount - loadings.length).forEach(e=>e.requestDownload())
+        Overlay.loadQueue.splice(0, Overlay.maxLoadingCount - loadings.length)
+    }
+
+    Overlay.getNeedLoad = function() {//计算获取loadQueue,每次都重新计算,覆盖旧的
+        if (!player || !player.domElement || !player.mode)
+            return;
+
+        if (player.mode != 'panorama') {
+            if (!Overlay.loadWhenOutside)
+                return; 
+
+            if (Overlay.loadQueue.length == 0) {
+                Overlay.loadQueue = player.overlayGroup.children.filter(e=>!e.hasRequestLoad).slice(0, 5);
+            }
+
+            return;
+        }
+        Overlay.loadWhenOutside = true
+        var overlays = player.overlayGroup.children.filter(e=>!e.hasRequestLoad && e.visiblePanos.includes(player.currentPano))
+        //var maxAngle = THREE.Math.degToRad( cameraLight.getHFOVFromVFOV(70, player.domElement.clientWidth, app.player.domElement.clientHeight) / 2);
+        var cameraDir = player.getDirection()
+
+        /* var maxCount = 5; 
+        if(overlays.length>maxCount){
+            for(var i=0;i<overlays.length;i++){ 
+                //角度为可见范围 
+                var v1 = cameraDir.clone().setY(0);
+                var v2 = overlays[i].plane.getWorldPosition().sub(player.position).setY(0)
+                if(v1.angleTo(v2) <= maxAngle){
+                    Overlay.loadQueue.push(overlays[i])
+                    if(Overlay.loadQueue.length>=10) break;
+                }  
+            } 
+            if(Overlay.loadQueue.length<Overlay.maxLoadingCount){
+                Overlay.loadQueue.push()
+            }
+        }else{ */
+        Overlay.loadQueue = overlays
+        //} 
+
+        var request = [(overlay)=>{
+            return true
+        }
+        ];
+        var rank = [(overlay)=>{
+            var dis = overlay.plane.getWorldPosition().distanceTo(player.position);
+            return -dis
+        }
+        , (overlay)=>{
+            var tagDir = overlay.plane.getWorldPosition().sub(player.position)
+            var angle = tagDir.angleTo(cameraDir)
+            return -angle * 20
+        }
+        ]
+        var result = common.sortByScore(Overlay.loadQueue, request, rank);
+        Overlay.loadQueue = result ? result.slice(0, 5).map(e=>e.item) : player.overlayGroup.children.filter(e=>!e.hasRequestLoad).slice(0, 2);
+
+    }
+
+    Overlay.load = ()=>{//开始下载图片
+        Overlay.getNeedLoad() 
+        Overlay.loadNext()
+        var unloads = player.overlayGroup.children.filter(e=>!e.hasRequestLoad)
+        if (unloads.length) {
+            setTimeout(Overlay.load, 200)
+        } else {
+            Overlay.allRequestLoad = true
+            console.log('allRequestLoad')
+        }
+    }
+
+    window.Overlay = Overlay;
+
+}
+
+

+ 0 - 7
web/public/static/js/shiyou.js

@@ -12,13 +12,6 @@ let SHIYOU = {
       $('.welcome').fadeOut()
     })
 
-    $('.myBacImg').bind('mousewheel',()=>{
-      return false
-    });
- 
-    $('.myBacImg').bind('pointermove touchmove',()=>{
-      return false
-    });
 
     // e.addEventListener("pointermove", this.onPointerMove.bind(this)),
   },

File diff suppressed because it is too large
+ 2 - 0
web/public/static/js/webuploader.html5only.min.js


+ 1 - 1
web/src/App.vue

@@ -20,7 +20,7 @@ export default {
 <style lang="less">
 .vvvv{
     width: 100%;
-    height: 100%;
+    height: 100vh;
 }
 
 

BIN
web/src/assets/img/flower.png


BIN
web/src/assets/img/flower_active.png


BIN
web/src/assets/img/like.png


BIN
web/src/assets/img/like_active.png


+ 0 - 80
web/src/components/iframe/index.vue

@@ -1,80 +0,0 @@
-<!--  -->
-<template>
-<div class='myIframe' v-show="myIframe">
-  <iframe :src="url" frameborder="0" style="width:100%;height:100%"></iframe>
-  <div class="btn" @click="btnX"> <i class="el-icon-arrow-left"></i> 返 回</div>
-</div>
-</template>
-
-<script>
-//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
-//例如:import 《组件名称》 from '《组件路径》';
-
-export default {
-//import引入的组件需要注入到对象中才能使用
-props:{
-  url:{
-    type:String
-  },
-  myIframe:{
-    type:Boolean,
-    default:false
-  }
-},
-components: {},
-data() {
-//这里存放数据
-return {
-
-};
-},
-//监听属性 类似于data概念
-computed: {},
-//监控data中的数据变化
-watch: {},
-//方法集合
-methods: {
-  btnX(){
-    this.$emit('update:myIframe',false)
-  }
-},
-//生命周期 - 创建完成(可以访问当前this实例)
-created() {
-
-},
-//生命周期 - 挂载完成(可以访问DOM元素)
-mounted() {
-
-},
-beforeCreate() {}, //生命周期 - 创建之前
-beforeMount() {}, //生命周期 - 挂载之前
-beforeUpdate() {}, //生命周期 - 更新之前
-updated() {}, //生命周期 - 更新之后
-beforeDestroy() {}, //生命周期 - 销毁之前
-destroyed() {}, //生命周期 - 销毁完成
-activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
-}
-</script>
-<style lang='less' scoped>
-.myIframe{
-  width: 100vw;
-  height: 100vh;
-  z-index: 99999;
-  .btn{
-    display: flex;
-    align-items: center;
-    width: 100px;
-    height: 40px;
-    position: fixed;
-    top: 12px;
-    left: 5px;
-    background-color: rgba(0,0,0,.7);
-    border-radius: 20px;
-    i {
-      font-size: 20px;
-      margin-left: 10px;
-    }
-  }
-}
-
-</style>

+ 1 - 44
web/src/pages/Home.vue

@@ -8,12 +8,7 @@
     <div id="gui-thumb"></div>
 
     <!-- 主容器 -->
-    <div id="player">
-      <!-- 后面加的图片 -->
-      <div class="myBacImg">
-        <div class="img"></div>
-      </div>
-    </div>
+    <div id="player"></div>
     <div id="gui-parent">
       <!-- 进度条加载 -->
       <gui-loading />
@@ -163,14 +158,6 @@ export default {
         });
       });
     });
-    // 顶部俯视的时候禁止鼠标放大缩小和拖动
-        $('.myBacImg').bind('mousewheel', () => {
-            return false
-        });
-
-        $('.myBacImg').bind('pointermove touchmove', () => {
-            return false
-        });
   },
 };
 </script>
@@ -200,34 +187,4 @@ export default {
   }
 }
 
-/* 后面追加的图片 */
-.myBacImg {
-  display: none;
-  z-index: 1;
-  width: 100vw;
-  height: 100vh;
-  position: fixed;
-  top: 0;
-  left: 0;
-}
-
-.myBacImg .img {
-  position: fixed;
-  width: 60vw;
-  height: 48vw;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-  background: url("../assets/myBacImg.png");
-  background-size: 100% 100%;
-}
-
-@media screen and (max-width: 600px) {
-  .myBacImg .img {
-  background: url("../assets/myBacImgMo.png");
-  background-size: 100% 100%;
-    width: 100vw;
-    height: 110vw;
-  }
-}
 </style>

File diff suppressed because it is too large
+ 113 - 2281
web/src/views/gui/menu.vue