menu.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  1. <template>
  2. <div class="pinBottom-container" @touchstart.stop @keydown.stop>
  3. <div class="pinBottom center">
  4. <div id="view-controllers"></div>
  5. </div>
  6. <div class="pinBottom left">
  7. <div>
  8. <div class="viewContainer">
  9. <div
  10. id="previous"
  11. class="previous desktop-only ui-icon"
  12. style="display: none"
  13. >
  14. <a>
  15. <img
  16. rel="tooltip"
  17. title=""
  18. :src="require('@/assets/images/play.png')"
  19. width="24"
  20. height="24"
  21. data-original-title="播放"
  22. />
  23. </a>
  24. </div>
  25. <div
  26. id="play"
  27. class="ui-icon"
  28. rel="tooltip"
  29. data-original-title="播放"
  30. >
  31. <a>
  32. <img
  33. title="自动漫游"
  34. :src="require('@/assets/images/icon/play.png')"
  35. width="24"
  36. height="24"
  37. />
  38. </a>
  39. </div>
  40. <div id="pause" class="ui-icon" style="display: none">
  41. <a>
  42. <img
  43. rel="tooltip"
  44. title=""
  45. :src="require('@/assets/images/icon/pause.png')"
  46. width="24"
  47. height="24"
  48. data-original-title="暂停"
  49. />
  50. </a>
  51. </div>
  52. <div
  53. id="next"
  54. class="next desktop-only ui-icon wide"
  55. style="display: none"
  56. >
  57. <a>
  58. <i
  59. rel="tooltip"
  60. title=""
  61. class="icon icon-dpad-right"
  62. data-original-title="下一个"
  63. ></i>
  64. </a>
  65. </div>
  66. <div id="gui-modes-map" class="ui-icon double active">
  67. <div
  68. data-original-title="导览"
  69. @click="isGuide = !isGuide"
  70. id="pullTab"
  71. rel="tooltip"
  72. title="场景导览"
  73. >
  74. <img
  75. title="场景导览"
  76. class="icon icon-inside"
  77. :src="
  78. require(`@/assets/images/icon/auto${
  79. !isGuide ? '_active' : ''
  80. }.png`)
  81. "
  82. />
  83. </div>
  84. <div
  85. title="全景漫游"
  86. data-original-title="全景漫游"
  87. id="gui-modes-inside"
  88. rel="tooltip"
  89. >
  90. <img
  91. title="全景漫游"
  92. class="icon icon-inside"
  93. :src="require('@/assets/images/icon/inside.png')"
  94. />
  95. <img
  96. title="全景漫游"
  97. class="icon icon-inside active"
  98. :src="require('@/assets/images/icon/inside_active.png')"
  99. />
  100. </div>
  101. <div
  102. data-original-title="俯视图"
  103. id="gui-modes-floorplan"
  104. rel="tooltip"
  105. title="顶部俯视"
  106. >
  107. <img
  108. title="顶部俯视"
  109. class="icon icon-inside"
  110. :src="require('@/assets/images/icon/floor.png')"
  111. />
  112. <img
  113. title="顶部俯视"
  114. class="active icon icon-inside active"
  115. :src="require('@/assets/images/icon/floor_active.png')"
  116. />
  117. </div>
  118. <div
  119. title="迷你漫游"
  120. data-original-title="迷你模型"
  121. id="gui-modes-dollhouse"
  122. rel="tooltip"
  123. >
  124. <img
  125. title="迷你漫游"
  126. class="icon icon-inside"
  127. :src="require('@/assets/images/icon/dollhouse.png')"
  128. />
  129. <img
  130. class="icon icon-inside active"
  131. :src="require('@/assets/images/icon/dollhouse_active.png')"
  132. title="迷你漫游"
  133. />
  134. </div>
  135. <div @click="switchBGM" id="myMoMu" data-original-title="音乐">
  136. <img
  137. class="icon icon-inside"
  138. :src="
  139. require(`@/assets/images/icon/${
  140. bgmPlay ? 'musicon' : 'musicoff'
  141. }.png`)
  142. "
  143. :title="bgmPlay ? '打开音乐' : '关闭音乐'"
  144. />
  145. </div>
  146. <ul class="btn-list">
  147. <!-- 精品典藏 -->
  148. <li class="quality" title="精品典藏" @click="isQuality = true">
  149. <img
  150. :src="
  151. require(`@/assets/img/${
  152. isQuality ? 'quality_active' : 'quality'
  153. }.png`)
  154. "
  155. />
  156. </li>
  157. <!-- 点赞 -->
  158. <li title="点赞" class="like" @click="handleLike">
  159. <img
  160. :src="
  161. require(`@/assets/img/${
  162. isShowGood ? 'like_active' : 'like'
  163. }.png`)
  164. "
  165. />
  166. <span class="like_txt">{{ likeNum }}</span>
  167. <transition name="likeAddAnimate">
  168. <div class="good" v-show="isShowGood">
  169. <div class="pic">
  170. <img src="../../assets/img/like_active.png" alt="" />
  171. </div>
  172. <div class="num">+1</div>
  173. </div>
  174. </transition>
  175. </li>
  176. </ul>
  177. <div
  178. data-original-title="VR"
  179. id="vr"
  180. rel="tooltip"
  181. title=""
  182. style="display: none"
  183. >
  184. <img
  185. class="icon icon-inside"
  186. :src="require('@/assets/images/VR.png')"
  187. />
  188. </div>
  189. <!-- <div
  190. data-original-title="热点列表"
  191. id="hotList"
  192. rel="tooltip"
  193. title=""
  194. style="display: none"
  195. >
  196. <img
  197. class="icon icon-inside"
  198. :src="require('@/assets/images/hotlist.png')"
  199. />
  200. <img
  201. class="icon icon-inside active"
  202. :src="require('@/assets/images/hotlist.png')"
  203. />
  204. </div> -->
  205. <div
  206. data-original-title="消除外壳"
  207. id="gui-remove-face"
  208. rel="tooltip"
  209. title=""
  210. style="display: none; float: left"
  211. >
  212. <img
  213. class="icon icon-inside"
  214. :src="require('@/assets/images/face.jpg')"
  215. />
  216. </div>
  217. </div>
  218. </div>
  219. </div>
  220. </div>
  221. <div class="pinBottom right hideTarget">
  222. <div class="rightViewContainer clearfix">
  223. <div class="gui-floor">
  224. <div class="gui-floor-title"></div>
  225. <div class="gui-floor-icon">
  226. <span class="gui-floor-number"></span>
  227. </div>
  228. <div class="container"></div>
  229. </div>
  230. <div id="vr" class="ui-icon wide hidden" style="display: none">
  231. <a>
  232. <i
  233. rel="tooltip"
  234. title="{[{ VIEW_IN_VR }]}"
  235. class="icon icon-webvr"
  236. ></i>
  237. </a>
  238. </div>
  239. <div id="sharing" class="ui-icon wide hidden" style="display: none">
  240. <a>
  241. <i
  242. rel="tooltip"
  243. title="{[{ SOCIAL_SHARING }]}"
  244. class="icon icon-share"
  245. ></i>
  246. </a>
  247. </div>
  248. <!-- 游戏分享和切换语言 -->
  249. <ul class="btn-list">
  250. <li title="游戏" @click="isIssue=true">
  251. <img
  252. :src="
  253. require(`@/assets/img/${isGame ? 'game_active' : 'game'}.png`)
  254. "
  255. />
  256. </li>
  257. <!-- 分享 -->
  258. <li title="分享" @click="isShare = true">
  259. <img src="@/assets/img/share.png" />
  260. </li>
  261. <li title="英文">
  262. <img src="@/assets/img/cn.png" />
  263. </li>
  264. </ul>
  265. <div
  266. id="gui-fullscreen"
  267. class="ui-icon wide"
  268. data-placement="top"
  269. rel="tooltip"
  270. title="全屏"
  271. >
  272. <a>
  273. <img
  274. :src="require('@/assets/images/icon/fullscreen.png')"
  275. title="全屏"
  276. />
  277. </a>
  278. </div>
  279. <div
  280. id="gui-fullscreen-exit"
  281. class="ui-icon wide"
  282. data-placement="top"
  283. rel="tooltip"
  284. title="关闭全屏"
  285. style="display: none"
  286. >
  287. <a>
  288. <img
  289. title="关闭全屏"
  290. :src="require('@/assets/images/icon/fullscreen_exit.png')"
  291. style="width: 50px"
  292. />
  293. </a>
  294. </div>
  295. <div class="pull-right terms terms2">
  296. <a>{[{ TERMS }]}</a>
  297. </div>
  298. </div>
  299. </div>
  300. <!-- 精品典藏的盒子 -->
  301. <Quality v-if="isQuality" @close="isQuality = false" />
  302. <!-- 分享的盒子 -->
  303. <Share v-if="isShare" @close="isShare = false"/>
  304. <!-- 顶部的名字还有浏览人数 -->
  305. <Browse />
  306. <!-- 答题 -->
  307. <Issue v-if="isIssue" @close="isIssue = false"/>
  308. </div>
  309. </template>
  310. <script>
  311. import Share from './component/share'
  312. import Quality from "./component/quality"
  313. import Browse from "./component/browse"
  314. import Issue from "./component/issue"
  315. export default {
  316. components: { Quality, Share,Browse,Issue },
  317. data() {
  318. return {
  319. isGuide: true,
  320. // 点赞
  321. isShowGood: false,
  322. likeNum: 0,
  323. bgmPlay: false,
  324. // 控制精品典藏
  325. isQuality: false,
  326. // 控制游戏
  327. isGame: false,
  328. // 控制分享
  329. isShare: false,
  330. // 控制答题
  331. isIssue:false
  332. };
  333. },
  334. computed: {},
  335. mounted() {},
  336. methods: {
  337. switchBGM() {
  338. if (this.bgmPlay) {
  339. window.manage.switchBgmState(true);
  340. this.bgmPlay = false;
  341. } else {
  342. window.manage.switchBgmState(false);
  343. this.bgmPlay = true;
  344. }
  345. },
  346. // 点击点赞
  347. handleLike() {
  348. if (this.isShowGood) return;
  349. this.isShowGood = true;
  350. setTimeout(() => {
  351. this.isShowGood = false;
  352. this.likeNum++;
  353. }, 2800);
  354. },
  355. },
  356. };
  357. </script>
  358. <style lang="less" scoped>
  359. // ----------点赞
  360. .likeAddAnimate-enter-active,
  361. .likeAddAnimate-leave-active {
  362. transition: all 2.8s ease;
  363. }
  364. .likeAddAnimate-enter {
  365. transform: translateY(-40px) scale(1) rotate(20deg);
  366. opacity: 1;
  367. }
  368. .likeAddAnimate-leave {
  369. transform: translateY(-60px) scale(1) rotate(20deg);
  370. opacity: 1;
  371. }
  372. .likeAddAnimate-enter-to,
  373. .likeAddAnimate-leave-to {
  374. transform: translateY(-80px) scale(0.8) rotate(-20deg);
  375. opacity: 0;
  376. }
  377. #myMoMu {
  378. cursor: pointer;
  379. width: 60px;
  380. display: flex;
  381. justify-content: center;
  382. & > img {
  383. width: 48px;
  384. }
  385. }
  386. .good {
  387. position: absolute;
  388. bottom: 5px;
  389. right: 0px;
  390. display: flex;
  391. .pic {
  392. width: 35px;
  393. > img {
  394. width: 100%;
  395. height: 100%;
  396. }
  397. }
  398. .num {
  399. margin-top: 10px;
  400. color: #fff;
  401. text-shadow: 0 0 10px rgba(0, 0, 0, 1);
  402. }
  403. }
  404. .btn-list {
  405. font-size: 14px;
  406. color: #fff;
  407. display: flex;
  408. justify-content: space-between;
  409. align-items: center;
  410. > li {
  411. border-radius: 50%;
  412. position: relative;
  413. width: 60px;
  414. height: 48px;
  415. display: flex;
  416. justify-content: center;
  417. align-items: center;
  418. cursor: pointer;
  419. > img {
  420. width: 48px;
  421. height: 48px;
  422. }
  423. .like_txt {
  424. position: absolute;
  425. bottom: -18px;
  426. left: 50%;
  427. transform: translateX(-50%);
  428. }
  429. }
  430. }
  431. // ----------点赞结束
  432. ::-webkit-scrollbar {
  433. width: 5px; /*高宽分别对应横竖滚动条的尺寸*/
  434. }
  435. ::-webkit-scrollbar-thumb {
  436. // box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2);
  437. background: #edd3b0;
  438. border-color: #edd3b0;
  439. color: #edd3b0;
  440. outline: none;
  441. }
  442. // 右侧菜单栏
  443. @wh: 48px;
  444. @margin: 0px;
  445. #play,
  446. #pause {
  447. margin-right: @margin;
  448. img {
  449. width: @wh;
  450. height: @wh;
  451. }
  452. }
  453. .rightViewContainer {
  454. display: flex !important;
  455. align-items: center !important;
  456. }
  457. #gui-modes-map {
  458. > div {
  459. margin-right: @margin;
  460. > img {
  461. width: @wh;
  462. height: @wh;
  463. display: block !important;
  464. }
  465. .active {
  466. display: none !important;
  467. }
  468. }
  469. .active {
  470. > img {
  471. display: none !important;
  472. }
  473. .active {
  474. display: block !important;
  475. }
  476. }
  477. }
  478. .pinBottom.right .ui-icon {
  479. background: none;
  480. }
  481. #gui-fullscreen img {
  482. width: 48px;
  483. }
  484. #volume {
  485. width: 48px;
  486. border-radius: 50%;
  487. }
  488. #gui-fullscreen {
  489. border-radius: 50%;
  490. }
  491. #gui-fullscreen-exit {
  492. width: 48px;
  493. border-radius: 50%;
  494. }
  495. #gui-fullscreen-exit img {
  496. width: 48px !important;
  497. }
  498. .bgandshare {
  499. background: none !important;
  500. // margin-right: 20px!important;
  501. > div {
  502. width: 48px !important;
  503. margin-left: 3px;
  504. cursor: pointer;
  505. img {
  506. width: 100%;
  507. }
  508. }
  509. }
  510. @media only screen and (max-width: 487px) {
  511. #myMoMu {
  512. display: block !important;
  513. }
  514. #myMoMu img {
  515. margin-left: 12px;
  516. }
  517. .viewContainer {
  518. padding: 15px 0 10px;
  519. border-radius: 50px;
  520. }
  521. @wh: 22px;
  522. @margin: 10px;
  523. #play,
  524. #pause {
  525. margin-bottom: @margin;
  526. img {
  527. width: @wh;
  528. height: @wh;
  529. }
  530. }
  531. #gui-modes-map {
  532. > div {
  533. margin-bottom: @margin;
  534. > img {
  535. width: @wh;
  536. height: @wh;
  537. display: block;
  538. }
  539. .active {
  540. display: none;
  541. }
  542. }
  543. .active {
  544. > img {
  545. display: none;
  546. }
  547. .active {
  548. display: block;
  549. }
  550. }
  551. }
  552. .bgandshare {
  553. display: none !important;
  554. display: flex;
  555. position: fixed;
  556. left: 50px;
  557. bottom: 25px;
  558. flex-direction: column;
  559. margin-right: 10px !important;
  560. > div {
  561. width: @wh!important;
  562. img {
  563. width: 100%;
  564. }
  565. }
  566. }
  567. #volume {
  568. background-color: transparent !important;
  569. }
  570. }
  571. </style>