HotspotDialog-1.vue 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246
  1. <template>
  2. <div
  3. :class="[
  4. 'hotspot-dialog-1',
  5. isHYM && 'hym',
  6. isDDGQ && 'ddgq',
  7. isDDLS && 'ddls',
  8. isHC && 'hc',
  9. isHY && 'hy',
  10. isQY && 'qy',
  11. ]"
  12. >
  13. <img
  14. class="back"
  15. draggable="false"
  16. src="@/assets/images/btn-return.png"
  17. @click="close"
  18. >
  19. <!-- 曲苑 -->
  20. <template v-if="isQY">
  21. <div
  22. :class="['qy', qyHover && 'hover']"
  23. @mouseover="qyHover = true"
  24. @click="qyDetailVisbile = true"
  25. @mouseout="
  26. () => {
  27. if (qyDetailVisbile) return;
  28. qyHover = false;
  29. }
  30. "
  31. >
  32. <div class="hotspot-dialog-1__label label">
  33. 戏台
  34. </div>
  35. </div>
  36. <div
  37. v-if="qyHover"
  38. class="qy-hover-bg"
  39. />
  40. <div
  41. :class="['ssz', sszHover && 'hover']"
  42. @mouseover="sszHover = true"
  43. @click="sszDetailVisbile = true"
  44. @mouseout="
  45. () => {
  46. if (sszDetailVisbile) return;
  47. sszHover = false;
  48. }
  49. "
  50. >
  51. <div class="hotspot-dialog-1__label label">
  52. 砂石柱
  53. </div>
  54. </div>
  55. <div
  56. v-if="sszHover"
  57. class="ssz-hover-bg"
  58. />
  59. <!-- label 详情 -->
  60. <div
  61. v-if="qyDetailVisbile"
  62. :class="['hotspot-dialog-1__info box']"
  63. >
  64. <img
  65. draggable="false"
  66. src="@/assets/images/icon_cancel-min.png"
  67. @click="
  68. () => {
  69. qyDetailVisbile = false;
  70. qyHover = false;
  71. }
  72. "
  73. >
  74. <img
  75. draggable="false"
  76. src="@/assets/images/hotspot-relic/Maskgroup-min.jpg"
  77. >
  78. <p>戏台藻井</p>
  79. </div>
  80. <div
  81. v-if="sszDetailVisbile"
  82. :class="['hotspot-dialog-1__info box']"
  83. >
  84. <img
  85. draggable="false"
  86. src="@/assets/images/icon_cancel-min.png"
  87. @click="
  88. () => {
  89. sszDetailVisbile = false;
  90. sszHover = false;
  91. }
  92. "
  93. >
  94. <img
  95. draggable="false"
  96. src="@/assets/images/hotspot-relic/image23-min.jpg"
  97. >
  98. <p>沙石柱</p>
  99. </div>
  100. </template>
  101. <!-- 航运 -->
  102. <template v-if="isHY">
  103. <div
  104. :class="['hy', hyHover && 'hover']"
  105. @mouseover="hyHover = true"
  106. @click="hyDetailVisbile = true"
  107. @mouseout="
  108. () => {
  109. if (hyDetailVisbile) return;
  110. hyHover = false;
  111. }
  112. "
  113. >
  114. <div class="hotspot-dialog-1__label label">
  115. 聊城古船
  116. </div>
  117. </div>
  118. <div
  119. v-if="hyHover"
  120. class="hy-hover-bg"
  121. />
  122. <div
  123. :class="['hy2', hy2Hover && 'hover']"
  124. @mouseover="hy2Hover = true"
  125. @click="hy2DetailVisbile = true"
  126. @mouseout="
  127. () => {
  128. if (hy2DetailVisbile) return;
  129. hy2Hover = false;
  130. }
  131. "
  132. >
  133. <div class="hotspot-dialog-1__label label">
  134. 菏泽沉船
  135. </div>
  136. </div>
  137. <div
  138. v-if="hy2Hover"
  139. class="hy2-hover-bg"
  140. />
  141. <div
  142. :class="['hy3', hy3Hover && 'hover']"
  143. @mouseover="hy3Hover = true"
  144. @click="hy3DetailVisbile = true"
  145. @mouseout="
  146. () => {
  147. if (hy3DetailVisbile) return;
  148. hy3Hover = false;
  149. }
  150. "
  151. >
  152. <div class="hotspot-dialog-1__label label">
  153. 磁县漕船
  154. </div>
  155. </div>
  156. <div
  157. v-if="hy3Hover"
  158. class="hy3-hover-bg"
  159. />
  160. <!-- label 详情 -->
  161. <div
  162. v-if="hyDetailVisbile"
  163. :class="['hotspot-dialog-1__info box']"
  164. >
  165. <img
  166. draggable="false"
  167. src="@/assets/images/icon_cancel-min.png"
  168. @click="
  169. () => {
  170. hyDetailVisbile = false;
  171. hyHover = false;
  172. }
  173. "
  174. >
  175. <img
  176. draggable="false"
  177. src="@/assets/images/hotspot-relic/pic_boat3-min.jpg"
  178. >
  179. <p>聊城古船</p>
  180. </div>
  181. <div
  182. v-if="hy2DetailVisbile"
  183. :class="['hotspot-dialog-1__info box']"
  184. >
  185. <img
  186. draggable="false"
  187. src="@/assets/images/icon_cancel-min.png"
  188. @click="
  189. () => {
  190. hy2DetailVisbile = false;
  191. hy2Hover = false;
  192. startBgAudio();
  193. }
  194. "
  195. >
  196. <video
  197. autoplay
  198. controls
  199. src="@/assets/videos/hotspot-relic/hzcc.mp4"
  200. @play="stopBgAudio"
  201. @ended="startBgAudio"
  202. />
  203. <p>菏泽沉船</p>
  204. </div>
  205. <div
  206. v-if="hy3DetailVisbile"
  207. :class="['hotspot-dialog-1__info box']"
  208. >
  209. <img
  210. draggable="false"
  211. src="@/assets/images/icon_cancel-min.png"
  212. @click="
  213. () => {
  214. hy3DetailVisbile = false;
  215. hy3Hover = false;
  216. }
  217. "
  218. >
  219. <img
  220. draggable="false"
  221. src="@/assets/images/hotspot-relic/pic_boat2-min.jpg"
  222. >
  223. <p>磁县漕船</p>
  224. </div>
  225. <!-- <div
  226. :class="['icon-9', openedBoxList.includes(11) && 'open']"
  227. @click="goRelicDetail(11)"
  228. />
  229. <div
  230. :class="['icon-10', openedBoxList.includes(12) && 'open']"
  231. @click="goRelicDetail(12)"
  232. /> -->
  233. </template>
  234. <!-- 河畅 -->
  235. <template v-if="isHC">
  236. <div
  237. :class="['thh', thhHover && 'hover']"
  238. @mouseover="thhHover = true"
  239. @click="thhDetailVisbile = true"
  240. @mouseout="
  241. () => {
  242. if (thhDetailVisbile) return;
  243. thhHover = false;
  244. }
  245. "
  246. >
  247. <div class="hotspot-dialog-1__label label">
  248. 通惠河
  249. </div>
  250. </div>
  251. <div
  252. v-if="thhHover"
  253. class="thh-hover-bg"
  254. />
  255. <!-- label 详情 -->
  256. <div
  257. v-if="thhDetailVisbile"
  258. :class="['hotspot-dialog-1__info']"
  259. >
  260. <img
  261. draggable="false"
  262. src="@/assets/images/icon_cancel-min.png"
  263. @click="
  264. () => {
  265. thhDetailVisbile = false;
  266. thhHover = false;
  267. startBgAudio();
  268. }
  269. "
  270. >
  271. <img
  272. draggable="false"
  273. src="@/assets/images/box3-min.png"
  274. >
  275. <video
  276. autoplay
  277. controls
  278. src="@/assets/videos/scene-3-hover.mp4"
  279. style="
  280. position: absolute;
  281. top: 50px;
  282. left: 30px;
  283. width: calc(100% - 60px);
  284. height: calc(100% - 80px);
  285. object-fit: cover;
  286. "
  287. @play="stopBgAudio"
  288. @ended="startBgAudio"
  289. />
  290. <p>河畅</p>
  291. </div>
  292. <!-- <div
  293. :class="['icon-7', openedBoxList.includes(9) && 'open']"
  294. @click="goRelicDetail(9)"
  295. />
  296. <div
  297. :class="['icon-8', openedBoxList.includes(10) && 'open']"
  298. @click="goRelicDetail(10)"
  299. /> -->
  300. </template>
  301. <!-- 大都揽胜 -->
  302. <template v-if="isDDLS">
  303. <div
  304. :class="['qss', qssHover && 'hover']"
  305. @mouseover="qssHover = true"
  306. @click="qssDetailVisbile = true"
  307. @mouseout="
  308. () => {
  309. if (qssDetailVisbile) return;
  310. qssHover = false;
  311. }
  312. "
  313. >
  314. <div class="hotspot-dialog-1__label label">
  315. 庆寿寺双塔
  316. </div>
  317. </div>
  318. <div
  319. v-if="qssHover"
  320. class="qss-hover-bg"
  321. />
  322. <!-- label 详情 -->
  323. <div
  324. v-if="qssDetailVisbile"
  325. class="hotspot-dialog-1__qss"
  326. >
  327. <img
  328. draggable="false"
  329. src="@/assets/images/icon_cancel-min.png"
  330. @click="
  331. () => {
  332. qssDetailVisbile = false;
  333. qssHover = false;
  334. }
  335. "
  336. >
  337. <img
  338. draggable="false"
  339. src="@/assets/images/pic_part3-min.png"
  340. >
  341. </div>
  342. <!-- <div
  343. :class="['icon-5', openedBoxList.includes(6) && 'open']"
  344. @click="goRelicDetail(6)"
  345. />
  346. <div
  347. :class="['icon-6', openedBoxList.includes(7) && 'open']"
  348. @click="goRelicDetail(7)"
  349. /> -->
  350. </template>
  351. <!-- 大都宫阙 -->
  352. <template v-if="isDDGQ">
  353. <img
  354. :class="['zmf-back', dmdDetailVisbile && 'move']"
  355. src="@/assets/images/zhaomengfuback-min.png"
  356. >
  357. <div
  358. :class="['dmd', dmdHover && 'hover']"
  359. @mouseover="dmdHover = true"
  360. @click="dmdDetailVisbile = true"
  361. @mouseout="
  362. () => {
  363. if (dmdDetailVisbile) return;
  364. dmdHover = false;
  365. }
  366. "
  367. >
  368. <div
  369. class="hotspot-dialog-1__label label"
  370. >
  371. 大明殿
  372. </div>
  373. </div>
  374. <div
  375. v-if="dmdHover"
  376. class="dmd-hover-bg"
  377. />
  378. <!-- label 详情 -->
  379. <div
  380. v-if="dmdDetailVisbile"
  381. :class="['hotspot-dialog-1__info box', dmdDetailVisbile && 'fade-in']"
  382. >
  383. <img
  384. draggable="false"
  385. src="@/assets/images/icon_cancel-min.png"
  386. @click="
  387. () => {
  388. dmdDetailVisbile = false;
  389. dmdHover = false;
  390. startBgAudio();
  391. }
  392. "
  393. >
  394. <video
  395. autoplay
  396. controls
  397. src="@/assets/videos/scene-2-hover.mp4"
  398. style="width: 100%"
  399. @play="stopBgAudio"
  400. @ended="startBgAudio"
  401. />
  402. <p>忽必烈召见赵孟頫</p>
  403. </div>
  404. <!-- <div
  405. :class="['icon-3', openedBoxList.includes(2) && 'open']"
  406. @click="goRelicDetail(2)"
  407. />
  408. <div
  409. :class="['icon-4', openedBoxList.includes(3) && 'open']"
  410. @click="goRelicDetail(3)"
  411. /> -->
  412. </template>
  413. <!-- 雄伟帝都 -->
  414. <template v-if="isHYM">
  415. <!-- 雄伟帝都-内城门 -->
  416. <div
  417. :class="['hym-ncm', hymHover && 'hover']"
  418. @mouseover="hymHover = true"
  419. @click="hymDetailVisbile = true"
  420. @mouseout="
  421. () => {
  422. if (hymDetailVisbile) return;
  423. hymHover = false;
  424. }
  425. "
  426. >
  427. <div
  428. class="hotspot-dialog-1__label label"
  429. >
  430. 和义门
  431. </div>
  432. </div>
  433. <div
  434. v-if="hymHover"
  435. class="hym-hover-bg"
  436. />
  437. <!-- label 详情 -->
  438. <div
  439. v-if="hymDetailVisbile"
  440. class="hotspot-dialog-1__info"
  441. >
  442. <img
  443. draggable="false"
  444. src="@/assets/images/icon_cancel-min.png"
  445. @click="
  446. () => {
  447. hymDetailVisbile = false;
  448. hymHover = false;
  449. }
  450. "
  451. >
  452. <img
  453. draggable="false"
  454. src="@/assets/images/box_2-min.png"
  455. >
  456. <p>元大都和义门复原图</p>
  457. </div>
  458. <!-- 雄伟帝都-外城门 -->
  459. <div
  460. v-if="false"
  461. :class="['hym-wcm', hymHover2 && 'hover']"
  462. @mouseover="hymHover2 = true"
  463. @click="hymDetail2Visbile = true"
  464. @mouseout="
  465. () => {
  466. if (hymDetail2Visbile) return;
  467. hymHover2 = false;
  468. }
  469. "
  470. >
  471. <div
  472. class="hotspot-dialog-1__label label"
  473. >
  474. 和义门
  475. </div>
  476. </div>
  477. <div
  478. v-if="hymHover2"
  479. class="hym2-hover-bg"
  480. />
  481. <!-- label 详情 -->
  482. <div
  483. v-if="hymDetail2Visbile"
  484. class="hotspot-dialog-1__cm"
  485. >
  486. <img
  487. draggable="false"
  488. src="@/assets/images/icon_cancel-min.png"
  489. @click="
  490. () => {
  491. hymDetail2Visbile = false;
  492. hymHover2 = false;
  493. }
  494. "
  495. >
  496. <img
  497. draggable="false"
  498. src="@/assets/images/box_1-min.png"
  499. >
  500. </div>
  501. <!-- <div
  502. :class="['icon-1', openedBoxList.includes(1) && 'open']"
  503. @click="goRelicDetail(1)"
  504. />
  505. <div
  506. :class="['icon-2', openedBoxList.includes(0) && 'open']"
  507. @click="goRelicDetail(0)"
  508. /> -->
  509. </template>
  510. <MsgContent
  511. v-if="currentMsg.length"
  512. v-model:curIndex="curMsgIndex"
  513. :list="currentMsg"
  514. @back="close"
  515. />
  516. </div>
  517. </template>
  518. <script setup>
  519. import { ref, computed, reactive, inject } from "vue"
  520. import MsgContent from "./MsgContent.vue"
  521. import { useRoute, useRouter } from "vue-router"
  522. const startBgAudio = inject("startBgAudio")
  523. const stopBgAudio = inject("stopBgAudio")
  524. const route = useRoute()
  525. const router = useRouter()
  526. const props = defineProps(["relicInfo"])
  527. const emits = defineEmits(["close", "openRelicDetail"])
  528. const hymHover = ref(false)
  529. const hymDetailVisbile = ref(false)
  530. const hymHover2 = ref(false)
  531. const hymDetail2Visbile = ref(false)
  532. const dmdHover = ref(false)
  533. const dmdDetailVisbile = ref(false)
  534. const qssHover = ref(false)
  535. const qssDetailVisbile = ref(false)
  536. const thhHover = ref(false)
  537. const thhDetailVisbile = ref(false)
  538. const hyHover = ref(false)
  539. const hyDetailVisbile = ref(false)
  540. const hy2Hover = ref(false)
  541. const hy2DetailVisbile = ref(false)
  542. const hy3Hover = ref(false)
  543. const hy3DetailVisbile = ref(false)
  544. const qyHover = ref(false)
  545. const qyDetailVisbile = ref(false)
  546. const sszHover = ref(false)
  547. const sszDetailVisbile = ref(false)
  548. const openedBoxList = reactive([])
  549. // 曲苑
  550. const isQY = computed(() => ["_niQSUEYt"].includes(props.relicInfo.name))
  551. // 河畅
  552. const isHC = computed(() => ["_Kd6Z3CsH"].includes(props.relicInfo.name))
  553. // 航运
  554. const isHY = computed(() =>
  555. ["_FRCO9MGR", "_L4MKbWoY", "_XanP0Hqt"].includes(props.relicInfo.name)
  556. )
  557. // 雄伟帝都
  558. const isHYM = computed(() =>
  559. ["_7TQihSnc", "_CigA1HhG"].includes(props.relicInfo.name)
  560. )
  561. // 大都宫阙
  562. const isDDGQ = computed(() => ["_G9zT4Xx9"].includes(props.relicInfo.name))
  563. // 大都揽胜
  564. const isDDLS = computed(() =>
  565. ["_Frw1X3B8", "_IR4EkN4Z"].includes(props.relicInfo.name)
  566. )
  567. const goRelicDetail = (idx) => {
  568. emits("openRelicDetail", idx)
  569. if (!openedBoxList.includes(idx)) {
  570. openedBoxList.push(idx)
  571. }
  572. // router.replace({
  573. // name: 'PanoView',
  574. // query: {
  575. // ...route.query,
  576. // hotspot: props.relicInfo.name
  577. // }
  578. // }).then(() => {
  579. // router.push({
  580. // name: 'RelicDetail',
  581. // query: {
  582. // sceneIdx: route.query.sceneIdx,
  583. // cameraIdx: route.query.cameraIdx,
  584. // relicIdx: idx,
  585. // hot: 1
  586. // }
  587. // })
  588. // })
  589. }
  590. const curMsgIndex = 0
  591. const currentMsg = computed(() => {
  592. // 曲苑
  593. if (isQY.value) {
  594. if (qyDetailVisbile.value) {
  595. return [
  596. "从戏台内部观看,顶部藻井全为木质结构,顶部看上去有点像八卦形状,上边两层全为从大到小的八角形,到了最下一层又巧妙地回归到四方四正的四边形,整座戏台没有使用一根钉子,全部由木材榫卯结合而成。",
  597. ]
  598. }
  599. if (qyHover.value) {
  600. return [
  601. "戏台建在一个约高一米的砖台上,前面两根石柱,一根刻有“蒙大元国至元二十年岁次癸未季春竖”十六个大字,另一根刻着“维大元国至治元年岁次辛酉孟秋月下旬九日立石”二十一个大字。两侧后1/3及后面有围墙。舞台的左、前、右三面都可以观看演出。石柱和围墙之上有四根相交的大额枋,形成一个方形木框,额枋之上是巨大的斗拱,通过井字形框架撑起单檐歇山顶。",
  602. ]
  603. }
  604. if (sszHover.value || qyDetailVisbile.value) {
  605. return ["戏台上有元代刻石的砂石柱(蒙大元国至元二十年岁次癸未季春竖"]
  606. }
  607. return [
  608. "17:55方寸戏台演绎人生百态,折射出普通人的情感、精神与现实生活。离开雅集活动现场,赵孟頫来到一座表演元曲的戏台,舞台上大都的著名演员正在进行元曲表演,精彩之处不时引得台下阵阵掌声。",
  609. ]
  610. }
  611. // 河畅
  612. if (isHC.value) {
  613. // if (thhDetailVisbile.value) {
  614. // return [
  615. // '通惠河是元代挖建的漕运河道,由郭守敬主持修建。于至元二十九年(1292)春天动工,至元三十年(1293)工程完成,总长 164 里,沿河设坝闸10 处。从此以后,南来的船舶可直驶到大都城中,作为船舶终点码头的积水潭上登时桅樯如林,热闹非凡。通惠河不但解决了运粮问题,而且促进了南货北销,繁荣了大都城的经济。'
  616. // ]
  617. // }
  618. return [
  619. "通惠河是元代挖建的漕运通道,由郭守敬主持修建。于至元二十九年(1292)春天动工,次年工程完工,全长164里,沿线设坝闸10处。从此以后,南来的船舶可直驶到大都城中,作为船舶终点码头的积水潭上登时桅樯如林,热闹非凡。通惠河不但解决了运粮问题,而且促进了南货北销,繁荣了大都城的经济。",
  620. ]
  621. }
  622. // 航运
  623. if (isHY.value) {
  624. // if (hyDetailVisbile.value) {
  625. // return ['<p>船长126cm* 船宽23cm* 船高80 cm</p><p>隔舱板及肋骨:江西小叶樟</p><p>甲板、船壳外板:柚木、梢木</p><p>船附件:菠萝格、龙眼木</p>']
  626. // }
  627. if (hyDetailVisbile.value) {
  628. return [
  629. "<p>航行区域:山东(鲁运河流域)</p><p>聊城古船于2002年出土于会通河聊城城区闸口北50米处,残船长17.5米,宽约4米,共11个舱,为元代官府督造的典型漕船。聊城古船于2002年出土于会通河聊城城区闸口北50米处,残船长17.5米,宽约4米,共11个舱,为元代官府督造的典型漕船。</p><p>古船已残,木料为杉木,但船底和结构基本保存,形状还是比较清楚,长条木板拼接成平底船底,两端另结档板,系平底船,具有元代运粮船的特征。</p>",
  630. ]
  631. }
  632. // if (hy2DetailVisbile.value) {
  633. // return ['2010 年发现的菏泽元代沉船,向世人展示了一处完整的内河沉船遗迹。该船为木质单桅货船,船型狭长,方首,方尾,平底,共 12 个舱,主体用材为杉木。据专家研究,这艘沉船发现的位置正在元朝的黄河北支上,而黄河北支此时与会通河相接,当时凡从运河北上元大都或南下去往杭州方向的船只,在徐州到济宁段都需要经过这段河道。']
  634. // }
  635. // if (hy3DetailVisbile.value) {
  636. // return ['<p>船长108cm* 船宽28cm* 船高26cm</p><p>隔舱板、肋骨:江西小叶樟; 甲板、船壳外板:柚木、梢木;</p><p>船附件:菠萝格、龙眼木;</p>']
  637. // }
  638. if (hy3DetailVisbile.value) {
  639. return [
  640. "<p>元末运粮官船,1975年河北磁县漳河故道附近出土,共六艘,有的船只尾部还烫有“漳河分省粮船”等字。六艘船都已残破,但仍可看出方头平底,分为数舱。其中最大的五号船,残长16.6米,十一舱,也是平衡舵。</p>",
  641. ]
  642. }
  643. return []
  644. }
  645. if (hymHover.value || hymHover2.value) {
  646. if (hymDetail2Visbile.value) {
  647. return [
  648. "1969年,拆除北京西直门箭楼时发现了压在明代箭楼之下的元大都和义门瓮城城门,门洞内有元至正十八年(1358年)的题记。城楼建筑已被拆去,只余城门墩台和门洞。",
  649. ]
  650. }
  651. if (hymDetailVisbile.value) {
  652. // 内城门图文详情
  653. return [
  654. "听闻大都城的最高设计者刘秉忠正在和义门,“我”决定前往和义门,当面拜见,向其详细了解大都城的规划设计,并由外及内(外城、皇城、宫城)俯瞰大都城的雄伟壮阔。",
  655. ]
  656. }
  657. if (hymHover.value) {
  658. // 内城门
  659. return [
  660. "1969年,拆除北京西直门箭楼时发现了压在明代箭楼之下的元大都和义门瓮城城门,门洞内有元至正十八年(1358年)的题记。城楼建筑已被拆去,只余城门墩台和门洞。和义门今尚存遗址,位于北京西直门处。城门残存高22米,门洞长9.92米、宽4.62米,内券高6.68米,外券高4.56米。是研究元代城市建设的珍贵资料。",
  661. ]
  662. }
  663. return [
  664. "1969年,拆除北京西直门箭楼时发现了压在明代箭楼之下的元大都和义门瓮城城门,门洞内有元至正十八年(1358年)的题记。城楼建筑已被拆去,只余城门墩台和门洞。",
  665. ]
  666. }
  667. if (isDDLS.value) {
  668. // 大都揽胜
  669. if (qssDetailVisbile.value) {
  670. return [
  671. "双塔寺,即大庆寿寺。 金末元初,佛教禅宗中的临济宗上层僧侣海云就长期居住在大庆寿寺(双塔寺)。从元世祖忽必烈到燕京的官员们,都对海云尊崇备至,大都城的设计师刘秉忠也是经由海云推荐成为世祖皇帝的幕僚,先后设计规划了元上都、元大都这两座宏伟的都城。",
  672. ]
  673. }
  674. return [
  675. "接受完世祖皇帝的召见,“我”走出大明殿。观赏大都建筑之美,游览城内的皇家寺庙,拜访、参观各类官署机构。",
  676. ]
  677. }
  678. if (isDDGQ.value) {
  679. // 大都宫阙
  680. if (dmdDetailVisbile.value) {
  681. return [
  682. "“我”奉旨进入大明殿内,参见世祖皇帝忽必烈。得到其称许:“果真是一表人才,丰神俊朗,就如那九天之上的仙人啊!朕授予你兵部郎中之职,愿你尽忠职守。”",
  683. ]
  684. }
  685. return [
  686. "接到诏令,“我”便从和义门下来,自西向东,沿外城、皇城、宫城行进。最后从宫城南部崇天门来到大明殿,接受世祖皇帝忽必烈的召见。",
  687. ]
  688. }
  689. if (isHYM.value) {
  690. // 雄伟帝都
  691. return [
  692. "平地而起的元大都,是“大汗之城”,也是“天下大都”。 元世祖至元四年(1267)正月丁未,元大都城破土动工。刘秉忠以太保兼领中书省而总负新都城兴造之责。至元十一年(1274),元大都宫城建成,世祖皇帝忽必烈御正殿,在此接受皇太子和诸王百官的朝贺。两年之后的至元十三年(1276),元大都城建成。",
  693. ]
  694. }
  695. return []
  696. })
  697. const close = () => {
  698. router
  699. .replace({
  700. name: "PanoView",
  701. query: {
  702. ...route.query,
  703. hotspot: undefined,
  704. },
  705. })
  706. .then(() => {
  707. emits("close")
  708. })
  709. }
  710. </script>
  711. <style lang="less" scoped>
  712. .hotspot-dialog-1 {
  713. position: fixed;
  714. top: 0;
  715. left: 0;
  716. right: 0;
  717. bottom: 0;
  718. z-index: 4;
  719. .zmf-back {
  720. position: absolute;
  721. top: 57%;
  722. left: 46.5%;
  723. z-index: 2;
  724. &.move {
  725. animation: zmfMoveToDMD linear 1.5s forwards;
  726. }
  727. }
  728. [class^="icon-"] {
  729. position: absolute;
  730. cursor: pointer;
  731. width: 70px;
  732. height: 70px;
  733. background-position: center;
  734. background-size: cover;
  735. background-image: url("@/assets/images/hotspot-relic/Doticon_close-min.png");
  736. z-index: 2;
  737. &:hover {
  738. animation: flashing linear 1s infinite reverse;
  739. background-image: url("@/assets/images/hotspot-relic/Doticon_open-min.png");
  740. }
  741. &.open {
  742. background-image: url("@/assets/images/hotspot-relic/Doticon_open-min.png");
  743. }
  744. }
  745. [class$="-hover-bg"] {
  746. position: fixed;
  747. top: 0;
  748. left: 0;
  749. width: 100vw;
  750. height: 100vh;
  751. }
  752. .icon-1 {
  753. left: 53%;
  754. bottom: 40%;
  755. }
  756. .icon-2 {
  757. right: 2.5%;
  758. bottom: 54%;
  759. }
  760. .icon-3 {
  761. left: 31%;
  762. bottom: 30%;
  763. }
  764. .icon-4 {
  765. right: 38%;
  766. bottom: 42.5%;
  767. }
  768. .icon-5 {
  769. left: 40%;
  770. bottom: 42%;
  771. }
  772. .icon-6 {
  773. bottom: 26.5%;
  774. right: 18.5%;
  775. }
  776. .icon-7 {
  777. left: 47%;
  778. bottom: 32%;
  779. }
  780. .icon-8 {
  781. bottom: 34.5%;
  782. right: 14%;
  783. }
  784. .icon-9 {
  785. left: 28%;
  786. bottom: 30.5%;
  787. }
  788. .icon-10 {
  789. right: 16%;
  790. bottom: 36.5%;
  791. }
  792. &.qy {
  793. background: url("@/assets/images/hotspot-relic/bg_quyuan-min.jpg") no-repeat
  794. center / cover;
  795. }
  796. &.hc {
  797. background: url("@/assets/images/hotspot-relic/bg_hechang-min.jpg")
  798. no-repeat center / cover;
  799. }
  800. &.hy {
  801. background: url("@/assets/images/hotspot-relic/bg_hangyun-min.jpg")
  802. no-repeat center / cover;
  803. }
  804. &.hym {
  805. background: url("@/assets/images/bg_part1-1-1-2-min.jpg") no-repeat center /
  806. cover;
  807. }
  808. &.ddgq {
  809. background: url("@/assets/images/bg_part1-2-min.jpg") no-repeat center /
  810. cover;
  811. .fade-in {
  812. animation: fadeIn linear 1.5s forwards;
  813. }
  814. }
  815. &.ddls {
  816. background: url("@/assets/images/bg_part1-3-min.jpg") no-repeat center /
  817. cover;
  818. }
  819. .qy {
  820. position: absolute;
  821. top: 18%;
  822. left: 45%;
  823. width: 29vw;
  824. height: 31vh;
  825. z-index: 1;
  826. .label {
  827. top: -25%;
  828. left: 47.5%;
  829. }
  830. &.hover {
  831. .label {
  832. display: flex;
  833. }
  834. }
  835. }
  836. .qy-hover-bg {
  837. background: url("@/assets/images/hotspot-relic/highline_xitai-min.png")
  838. no-repeat center / cover;
  839. }
  840. .ssz {
  841. position: absolute;
  842. top: 31%;
  843. right: 31.3%;
  844. width: 1.5%;
  845. height: 18vh;
  846. z-index: 1;
  847. .label {
  848. top: -25%;
  849. right: -100%;
  850. }
  851. &.hover {
  852. .label {
  853. display: flex;
  854. }
  855. }
  856. }
  857. .ssz-hover-bg {
  858. background: url("@/assets/images/hotspot-relic/highline_zhuzi-min.png")
  859. no-repeat center / cover;
  860. }
  861. .hy {
  862. position: absolute;
  863. left: 39%;
  864. bottom: 35%;
  865. width: 17vw;
  866. height: 10vh;
  867. z-index: 1;
  868. .label {
  869. top: -150%;
  870. left: 48.5%;
  871. }
  872. &.hover {
  873. .label {
  874. display: flex;
  875. }
  876. }
  877. }
  878. .hy2 {
  879. position: absolute;
  880. left: 55%;
  881. bottom: 23%;
  882. width: 19vw;
  883. height: 11vh;
  884. z-index: 1;
  885. .label {
  886. top: -60%;
  887. left: 17%;
  888. }
  889. &.hover {
  890. .label {
  891. display: flex;
  892. }
  893. }
  894. }
  895. .hy3 {
  896. position: absolute;
  897. right: 21%;
  898. bottom: 33%;
  899. width: 19vw;
  900. height: 11vh;
  901. z-index: 1;
  902. .label {
  903. top: -120%;
  904. right: 18%;
  905. }
  906. &.hover {
  907. .label {
  908. display: flex;
  909. }
  910. }
  911. }
  912. .hy-hover-bg {
  913. background: url("@/assets/images/hotspot-relic/highline_boat2-min.png")
  914. no-repeat center / cover;
  915. }
  916. .hy2-hover-bg {
  917. background: url("@/assets/images/hotspot-relic/highline_boat1-min.png")
  918. no-repeat center / cover;
  919. }
  920. .hy3-hover-bg {
  921. background: url("@/assets/images/hotspot-relic/highline_boat3-min.png")
  922. no-repeat center / cover;
  923. }
  924. .bg-hover:hover {
  925. // cursor: pointer;
  926. }
  927. .thh {
  928. position: absolute;
  929. left: 10%;
  930. right: 10%;
  931. bottom: 0;
  932. height: 51vh;
  933. z-index: 1;
  934. .label {
  935. top: -15%;
  936. left: 48.5%;
  937. }
  938. &.hover {
  939. .label {
  940. display: flex;
  941. }
  942. }
  943. }
  944. .thh-hover-bg {
  945. background: url("@/assets/images/hotspot-relic/sign_highline_bg_part2-1-min.png")
  946. no-repeat center / cover;
  947. }
  948. .qss {
  949. position: absolute;
  950. top: 5vh;
  951. left: 48vw;
  952. right: 30vw;
  953. height: 45vh;
  954. z-index: 1;
  955. .label {
  956. top: 8%;
  957. left: 35%;
  958. }
  959. &.hover {
  960. .label {
  961. display: flex;
  962. }
  963. }
  964. }
  965. .qss-hover-bg {
  966. background: url("@/assets/images/sign_highline_part1-3-min.png") no-repeat
  967. center / cover;
  968. }
  969. &__qss {
  970. position: absolute;
  971. top: 10vh;
  972. left: 25%;
  973. z-index: 3;
  974. img:first-child {
  975. position: absolute;
  976. top: -33px;
  977. right: -33px;
  978. cursor: pointer;
  979. }
  980. }
  981. .dmd {
  982. position: absolute;
  983. top: 20vh;
  984. left: 26vw;
  985. right: 28vw;
  986. height: 35vh;
  987. z-index: 1;
  988. .label {
  989. top: -28%;
  990. left: 47%;
  991. }
  992. &.hover {
  993. .label {
  994. display: flex;
  995. }
  996. }
  997. }
  998. .dmd-hover-bg {
  999. background: url("@/assets/images/sign_highline_part1-2-min.png") no-repeat
  1000. center / cover;
  1001. }
  1002. // 外城门
  1003. .hym-wcm {
  1004. position: absolute;
  1005. top: 30vh;
  1006. left: 6vw;
  1007. right: 20vw;
  1008. height: 50vh;
  1009. z-index: 1;
  1010. .label {
  1011. top: 1%;
  1012. left: 35%;
  1013. }
  1014. &.hover {
  1015. .label {
  1016. display: flex;
  1017. }
  1018. }
  1019. }
  1020. // 外城门
  1021. .hym-ncm {
  1022. position: absolute;
  1023. top: 13vh;
  1024. left: 10vw;
  1025. width: 68vw;
  1026. height: 64vh;
  1027. z-index: 2;
  1028. .label {
  1029. top: -10%;
  1030. left: 70%;
  1031. }
  1032. &.hover {
  1033. .label {
  1034. display: flex;
  1035. }
  1036. }
  1037. }
  1038. .hym-hover-bg {
  1039. background: url("@/assets/images/sign_highline_part1-1-2-1.png") no-repeat
  1040. center / cover;
  1041. }
  1042. .hym2-hover-bg {
  1043. background: url("@/assets/images/highline_bg_part1-1-1-2-min.png") no-repeat
  1044. center / cover;
  1045. }
  1046. .back {
  1047. position: absolute;
  1048. top: 64px;
  1049. left: 41px;
  1050. cursor: pointer;
  1051. }
  1052. &__info {
  1053. position: absolute;
  1054. top: 10vh;
  1055. left: 50%;
  1056. transform: translateX(-50%);
  1057. z-index: 4;
  1058. &.box {
  1059. padding: 25px 20px;
  1060. border: 1px solid #ffe88b;
  1061. background: rgba(145, 129, 117, 0.25);
  1062. &::after {
  1063. content: "";
  1064. position: absolute;
  1065. top: -25px;
  1066. left: 50%;
  1067. transform: translateX(-46%);
  1068. width: 406px;
  1069. height: 50px;
  1070. background: linear-gradient(
  1071. 270deg,
  1072. rgba(255, 236, 135, 0) 9%,
  1073. #ffec87 25%,
  1074. #ffec87 50%,
  1075. #ffec87 79%,
  1076. rgba(255, 236, 135, 0) 100%
  1077. );
  1078. }
  1079. p {
  1080. top: -8px;
  1081. }
  1082. img:first-child {
  1083. top: -40px;
  1084. }
  1085. }
  1086. img:first-child {
  1087. position: absolute;
  1088. top: -10px;
  1089. right: -33px;
  1090. cursor: pointer;
  1091. z-index: 2;
  1092. }
  1093. p {
  1094. position: absolute;
  1095. left: 0;
  1096. right: 0;
  1097. top: 2.5%;
  1098. text-align: center;
  1099. color: #724b26;
  1100. font-size: 22px;
  1101. font-family: Source Han Serif CN, Source Han Serif CN;
  1102. font-weight: 800;
  1103. z-index: 1;
  1104. }
  1105. }
  1106. &__cm {
  1107. position: absolute;
  1108. top: 10vh;
  1109. left: calc(32vw + 41px);
  1110. z-index: 3;
  1111. img:first-child {
  1112. position: absolute;
  1113. top: -10px;
  1114. right: 0;
  1115. cursor: pointer;
  1116. }
  1117. }
  1118. &__label {
  1119. display: none;
  1120. align-items: center;
  1121. justify-content: center;
  1122. position: absolute;
  1123. width: 41px;
  1124. height: 181px;
  1125. font-size: 18px;
  1126. color: #724b26;
  1127. letter-spacing: 1px;
  1128. writing-mode: vertical-lr;
  1129. font-weight: 800;
  1130. font-family: Source Han Serif CN, Source Han Serif CN;
  1131. cursor: pointer;
  1132. animation: flashing linear 1.5s infinite reverse;
  1133. background: url("@/assets/images/Group-425.png") no-repeat center / contain;
  1134. z-index: 1;
  1135. }
  1136. }
  1137. .hover {
  1138. &:hover {
  1139. cursor: pointer;
  1140. }
  1141. }
  1142. @keyframes flashing {
  1143. 0% {
  1144. opacity: 1;
  1145. }
  1146. 50% {
  1147. opacity: 0.8;
  1148. }
  1149. 100% {
  1150. opacity: 1;
  1151. }
  1152. }
  1153. @keyframes zmfMoveToDMD {
  1154. 0% {
  1155. transform: translateY(0);
  1156. }
  1157. 50% {
  1158. transform: translateY(-35%) scale(0.7);
  1159. opacity: 0.8;
  1160. }
  1161. 90% {
  1162. opacity: 0.7;
  1163. }
  1164. 100% {
  1165. transform: translateY(-70%) scale(0.5);
  1166. opacity: 0;
  1167. }
  1168. }
  1169. @keyframes fadeIn {
  1170. 0% {
  1171. opacity: 0;
  1172. }
  1173. 90% {
  1174. opacity: 0;
  1175. }
  1176. 100% {
  1177. opacity: 1;
  1178. }
  1179. }
  1180. @keyframes fadeIn2 {
  1181. 0% {
  1182. opacity: 0;
  1183. }
  1184. 100% {
  1185. opacity: 1;
  1186. }
  1187. }
  1188. </style>