| | |
| | | <template> |
| | | <div class="ai-chat"> |
| | | <el-popover |
| | | placement="bottom" |
| | | :visible="visible" |
| | | :width="200" |
| | | trigger="click" |
| | | > |
| | | <template #reference> |
| | | <div class="chat" id="chatID" v-drag:chatID @mousedown="handleMouseDown" |
| | | @mouseup="handleMouseUp"/> |
| | | </template> |
| | | <div> |
| | | 快和我对话吧 |
| | | <el-input/> |
| | | </div> |
| | | </el-popover> |
| | | <img class="chat-bottom" src="../../assets/images/chat-bottom.png" alt=""> |
| | | </div> |
| | | <div class="r-side"> |
| | | <img v-for="(item, index) in images" |
| | | :key="index" :class="item.class" |
| | | :src="activeIndex === index ? item.activeSrc : item.src" alt="" |
| | | @click="activeChange(index)" |
| | | @mouseenter="enterHover(index)" |
| | | @mouseleave="logIndex=3" |
| | | > |
| | | </div> |
| | | <div v-if="logIndex===0" class="r-side-positioning">返回当前位置</div> |
| | | <div v-if="logIndex===1" class="r-side-measuring">量尺</div> |
| | | <div v-if="logIndex===2" class="r-side-layer">切换地图模式</div> |
| | | <MeasuringDistance v-if="activeIndex === 1"/> |
| | | <div class="ai-chat"> |
| | | <el-popover placement="bottom" :visible="visible" :width="200" trigger="click"> |
| | | <template #reference> |
| | | <div class="chat" id="chatID" v-drag:chatID @mousedown="handleMouseDown" @mouseup="handleMouseUp" /> |
| | | </template> |
| | | <div> |
| | | 快和我对话吧 |
| | | <el-input /> |
| | | </div> |
| | | </el-popover> |
| | | <img class="chat-bottom" src="../../assets/images/chat-bottom.png" alt="" /> |
| | | </div> |
| | | <div class="r-side"> |
| | | <img |
| | | v-for="(item, index) in images" |
| | | :key="index" |
| | | :class="item.class" |
| | | :src="activeIndex === index ? item.activeSrc : item.src" |
| | | alt="" |
| | | @click="activeChange(index)" |
| | | @mouseenter="enterHover(index)" |
| | | @mouseleave="logIndex = 3" |
| | | /> |
| | | </div> |
| | | <div v-if="logIndex === 0" class="r-side-positioning">返回当前位置</div> |
| | | <div v-if="logIndex === 1" class="r-side-measuring">量尺</div> |
| | | <div v-if="logIndex === 2" class="r-side-layer">切换地图模式</div> |
| | | <MeasuringDistance v-if="activeIndex === 1" /> |
| | | |
| | | </template> |
| | | |
| | | <script setup> |
| | |
| | | import tc1 from '@/assets/images/rSide/tc1.png' |
| | | import cesiumOperation from '@/utils/cesium-tsa' |
| | | |
| | | let logIndex = ref(3); |
| | | const enterHover = (value) => { |
| | | logIndex.value = value; |
| | | let logIndex = ref(3) |
| | | const enterHover = value => { |
| | | logIndex.value = value |
| | | } |
| | | const { flyTo } = cesiumOperation() |
| | | |
| | | const store = useStore(); |
| | | const currentAreaPosition = computed(() => store.state.home.currentAreaPosition); |
| | | const store = useStore() |
| | | const currentAreaPosition = computed(() => store.state.home.currentAreaPosition) |
| | | |
| | | let activeIndex = ref(null); |
| | | const activeChange = (value) => { |
| | | if(value === 0) { |
| | | let activeIndex = ref(null) |
| | | const activeChange = value => { |
| | | if (value === 0) { |
| | | flyTo(currentAreaPosition.value, 0, currentAreaPosition.value.height) |
| | | } |
| | | if (value === 1){ |
| | | activeIndex.value = activeIndex.value === 1 ? null : value; |
| | | if (value === 1) { |
| | | activeIndex.value = activeIndex.value === 1 ? null : value |
| | | } |
| | | if (value === 2) { |
| | | activeIndex.value = activeIndex.value === 2 ? null : value |
| | | console.log('22222') |
| | | } |
| | | } |
| | | const visible = ref(false); |
| | | let pressStart = 0; |
| | | const visible = ref(false) |
| | | let pressStart = 0 |
| | | |
| | | const handleMouseDown = () => { |
| | | pressStart = Date.now(); // 记录按下时间 |
| | | }; |
| | | pressStart = Date.now() // 记录按下时间 |
| | | } |
| | | |
| | | const handleMouseUp = () => { |
| | | const pressDuration = Date.now() - pressStart; // 计算按下时长 |
| | | if (pressDuration < 150) { |
| | | // 如果按下时间小于200ms,认为是点击 |
| | | visible.value = !visible.value; |
| | | } |
| | | }; |
| | | const pressDuration = Date.now() - pressStart // 计算按下时长 |
| | | if (pressDuration < 150) { |
| | | // 如果按下时间小于200ms,认为是点击 |
| | | visible.value = !visible.value |
| | | } |
| | | } |
| | | |
| | | // 添加: 定义图片数组 |
| | | const images = [ |
| | | { class: 'positioning', src: dw,activeSrc:dw1 }, |
| | | { class: 'measuring-scale', src: lc,activeSrc:lc1 }, |
| | | { class: 'layer', src: tc,activeSrc:tc1 } |
| | | ]; |
| | | { class: 'positioning', src: dw, activeSrc: dw1 }, |
| | | { class: 'measuring-scale', src: lc, activeSrc: lc1 }, |
| | | { class: 'layer', src: tc, activeSrc: tc1 }, |
| | | ] |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | |
| | | } |
| | | } |
| | | .r-side { |
| | | position: absolute; |
| | | bottom: 122px; |
| | | right: 463px; |
| | | cursor: pointer; |
| | | img { |
| | | display: block; |
| | | width: 48px; |
| | | height: 48px; |
| | | } |
| | | .positioning { |
| | | position: relative; |
| | | bottom: 24px; |
| | | } |
| | | .measuring-scale { |
| | | position: relative; |
| | | bottom: 12px; |
| | | } |
| | | position: absolute; |
| | | bottom: 122px; |
| | | right: 463px; |
| | | cursor: pointer; |
| | | img { |
| | | display: block; |
| | | width: 48px; |
| | | height: 48px; |
| | | } |
| | | .positioning { |
| | | position: relative; |
| | | bottom: 24px; |
| | | } |
| | | .measuring-scale { |
| | | position: relative; |
| | | bottom: 12px; |
| | | } |
| | | } |
| | | .r-side-positioning, .r-side-measuring, .r-side-layer { |
| | | position: absolute; |
| | | right: 514px; |
| | | width: 130px; |
| | | height: 48px; |
| | | font-family: Source Han Sans CN, Source Han Sans CN; |
| | | font-weight: 400; |
| | | font-size: 18px; |
| | | color: #FFFFFF; |
| | | line-height: 48px; |
| | | text-align: center; |
| | | background: url('@/assets/images/cursor.png'); |
| | | .r-side-positioning, |
| | | .r-side-measuring, |
| | | .r-side-layer { |
| | | position: absolute; |
| | | right: 514px; |
| | | width: 130px; |
| | | height: 48px; |
| | | font-family: Source Han Sans CN, Source Han Sans CN; |
| | | font-weight: 400; |
| | | font-size: 18px; |
| | | color: #ffffff; |
| | | line-height: 48px; |
| | | text-align: center; |
| | | background: url('@/assets/images/cursor.png'); |
| | | } |
| | | .r-side-positioning { |
| | | bottom: 242px; |
| | | bottom: 242px; |
| | | } |
| | | .r-side-measuring { |
| | | bottom: 182px; |
| | | bottom: 182px; |
| | | } |
| | | .r-side-layer { |
| | | bottom: 122px; |
| | | bottom: 122px; |
| | | } |
| | | </style> |
| | | |