|
@@ -0,0 +1,196 @@
|
|
|
+<template>
|
|
|
+ <div class="development-protection-view">
|
|
|
+ <img
|
|
|
+ class="bg"
|
|
|
+ src="@/assets/images/development-protection-bg.jpg"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ v-for="(item, idx) in eventList"
|
|
|
+ :key="item.time"
|
|
|
+ class="event-sign"
|
|
|
+ :style="{
|
|
|
+ left: item.posX + 'px',
|
|
|
+ bottom: item.posY + 'px',
|
|
|
+ }"
|
|
|
+ @click="onClickEventSign(idx)"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class="location-indicator"
|
|
|
+ src="@/assets/images/location-indicator-normal.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ <h3>{{ item.time }}</h3>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <article
|
|
|
+ v-show="isShowDesc"
|
|
|
+ class="event-desc"
|
|
|
+ :style="{
|
|
|
+ left: descWindowPosX + 'px',
|
|
|
+ bottom: descWindowPosY + 'px',
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ <h3>历史事件</h3>
|
|
|
+ <p>{{ descContent }}</p>
|
|
|
+ <button
|
|
|
+ class="close"
|
|
|
+ @click="isShowDesc = false"
|
|
|
+ >
|
|
|
+ 关闭
|
|
|
+ </button>
|
|
|
+ </article>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { ref, onBeforeUnmount } from "vue"
|
|
|
+
|
|
|
+const eventListRaw = [
|
|
|
+ {
|
|
|
+ time: '1983年',
|
|
|
+ posXInDraft: 260 + 60 / 2,
|
|
|
+ posYInDraft: 726,
|
|
|
+ desc: '2001年3月,开平市成立了开平碉楼申报世界文化遗产领导小组,市主要领导亲自挂帅,从各有关部门抽出精兵强将专职开展碉楼保护和申报工作。6月25日,开平碉楼被国务院批准列入第五批全国重点文物保护单位名单。',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ time: '1983年3月',
|
|
|
+ posXInDraft: 488 + 60 / 2,
|
|
|
+ posYInDraft: 638,
|
|
|
+ desc: '2001年3月,开平市成立了开平碉楼申报世界文化遗产领导小组,市主要领导亲自挂帅,从各有关部门抽出精兵强将专职开展碉楼保护和申报工作。6月25日,开平碉楼被国务院批准列入第五批全国重点文物保护单位名单。',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ time: '1994年12月',
|
|
|
+ posXInDraft: 697 + 60 / 2,
|
|
|
+ posYInDraft: 407,
|
|
|
+ desc: '2001年3月,开平市成立了开平碉楼申报世界文化遗产领导小组,市主要领导亲自挂帅,从各有关部门抽出精兵强将专职开展碉楼保护和申报工作。6月25日,开平碉楼被国务院批准列入第五批全国重点文物保护单位名单。',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ time: '1999年3月',
|
|
|
+ posXInDraft: 914 + 60 / 2,
|
|
|
+ posYInDraft: 326,
|
|
|
+ desc: '2001年3月,开平市成立了开平碉楼申报世界文化遗产领导小组,市主要领导亲自挂帅,从各有关部门抽出精兵强将专职开展碉楼保护和申报工作。6月25日,开平碉楼被国务院批准列入第五批全国重点文物保护单位名单。',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ time: '2000年11月',
|
|
|
+ posXInDraft: 979 + 60 / 2,
|
|
|
+ posYInDraft: 567,
|
|
|
+ desc: '2001年3月,开平市成立了开平碉楼申报世界文化遗产领导小组,市主要领导亲自挂帅,从各有关部门抽出精兵强将专职开展碉楼保护和申报工作。6月25日,开平碉楼被国务院批准列入第五批全国重点文物保护单位名单。',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ time: '2001年3月',
|
|
|
+ posXInDraft: 1205 + 60 / 2,
|
|
|
+ posYInDraft: 686,
|
|
|
+ desc: '2001年3月,开平市成立了开平碉楼申报世界文化遗产领导小组,市主要领导亲自挂帅,从各有关部门抽出精兵强将专职开展碉楼保护和申报工作。6月25日,开平碉楼被国务院批准列入第五批全国重点文物保护单位名单。',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ time: '2002年7月16日',
|
|
|
+ posXInDraft: 1420 + 60 / 2,
|
|
|
+ posYInDraft: 800,
|
|
|
+ desc: '2001年3月,开平市成立了开平碉楼申报世界文化遗产领导小组,市主要领导亲自挂帅,从各有关部门抽出精兵强将专职开展碉楼保护和申报工作。6月25日,开平碉楼被国务院批准列入第五批全国重点文物保护单位名单。',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ time: '2007年6月28日',
|
|
|
+ posXInDraft: 1681 + 60 / 2,
|
|
|
+ posYInDraft: 851,
|
|
|
+ desc: '2001年3月,开平市成立了开平碉楼申报世界文化遗产领导小组,市主要领导亲自挂帅,从各有关部门抽出精兵强将专职开展碉楼保护和申报工作。6月25日,开平碉楼被国务院批准列入第五批全国重点文物保护单位名单。',
|
|
|
+ },
|
|
|
+]
|
|
|
+const eventList = ref([])
|
|
|
+function setEventList() {
|
|
|
+ eventList.value = eventListRaw.map((item) => {
|
|
|
+ const { x, y } = utils.mapPosFromDraftToWindow({
|
|
|
+ x: item.posXInDraft,
|
|
|
+ y: item.posYInDraft,
|
|
|
+ })
|
|
|
+ return {
|
|
|
+ time: item.time,
|
|
|
+ posX: x,
|
|
|
+ posY: y,
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+setEventList()
|
|
|
+window.addEventListener('resize', setEventList)
|
|
|
+onBeforeUnmount(() => {
|
|
|
+ window.removeEventListener('resize', setEventList)
|
|
|
+})
|
|
|
+
|
|
|
+const isShowDesc = ref(false)
|
|
|
+const descContent = ref('')
|
|
|
+const descWindowPosX = ref(0)
|
|
|
+const descWindowPosY = ref(0)
|
|
|
+function onClickEventSign(idx) {
|
|
|
+ descContent.value = eventListRaw[idx].desc
|
|
|
+ const descWindowPos = utils.mapPosFromDraftToWindow({
|
|
|
+ x: eventListRaw[idx].posXInDraft,
|
|
|
+ y: eventListRaw[idx].posYInDraft,
|
|
|
+ })
|
|
|
+ descWindowPosX.value = descWindowPos.x
|
|
|
+ descWindowPosY.value = descWindowPos.y
|
|
|
+ isShowDesc.value = true
|
|
|
+}
|
|
|
+
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+.development-protection-view{
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ top: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ background-color: blue;
|
|
|
+ >.bg{
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ top: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ object-fit: cover;
|
|
|
+ }
|
|
|
+ >.event-sign{
|
|
|
+ position: absolute;
|
|
|
+ // background: red;
|
|
|
+ // opacity: 0.5;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ width: 150px;
|
|
|
+ height: 60px;
|
|
|
+ cursor: pointer;
|
|
|
+ >img.location-indicator{
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ width: 56px;
|
|
|
+ height: 60px;
|
|
|
+ }
|
|
|
+ >h3{
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ bottom: 0;
|
|
|
+ transform: translate(-50%, 36px);
|
|
|
+ font-size: 20px;
|
|
|
+ font-family: Source Han Sans CN-Bold, Source Han Sans CN;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #FFFFFF;
|
|
|
+ line-height: 23px;
|
|
|
+ text-align: center;
|
|
|
+ white-space: pre;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ >article{
|
|
|
+ position: absolute;
|
|
|
+ background-color: red;
|
|
|
+ opacity: 0.7;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ >.close{
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ bottom: 0;
|
|
|
+ transform: translate(-50%, 200%);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|