| | |
| | | <template> |
| | | <div class="screen"> |
| | | <div class="screen-top" :class="bgVisible ? '' : 'nonebg'"> |
| | | <div class="screen-top-logo" @click="initScene()"></div> |
| | | </div> |
| | | <div class="screen-left" :class="bgVisible ? '' : 'nonebg'"></div> |
| | | <div class="screen-right" :class="bgVisible ? '' : 'nonebg'"></div> |
| | | <div class="screen-bottom" :class="bgVisible ? '' : 'nonebg'"></div> |
| | | <div class="screen"> |
| | | <div class="screen-top" :class="bgVisible ? '' : 'nonebg'"> |
| | | <div class="screen-top-logo" @click="initScene()"></div> |
| | | </div> |
| | | <div class="screen-left" :class="bgVisible ? '' : 'nonebg'"></div> |
| | | <div class="screen-right" :class="bgVisible ? '' : 'nonebg'"></div> |
| | | <div class="screen-bottom" :class="bgVisible ? '' : 'nonebg'"></div> |
| | | |
| | | <div class="screen-leftbg"></div> |
| | | <div class="screen-rightbg"></div> |
| | | <div class="screen-leftbg"></div> |
| | | <div class="screen-rightbg"></div> |
| | | |
| | | <div class="screen-widget"> |
| | | <div class="screen-widget-weather" @click="openWeather"> |
| | | <div class="screen-widget-icon"> |
| | | <img style="width: 26px; height: 26px" :src="weatherIcon" alt="" /> |
| | | </div> |
| | | <div class="screen-widget-text"> |
| | | {{ weather.now.text }} {{ weather.now.temperature + "℃" }} |
| | | </div> |
| | | <div class="screen-widget-time screen-widget-text" style="margin-left: 20px"> |
| | | {{ $dayjs().format("YYYY/MM/DD HH:mm") }} |
| | | </div> |
| | | </div> |
| | | <div class="screen-widget-home"> |
| | | <div class="screen-widget-icon"></div> |
| | | <div class="screen-widget-text" @click="flyToHomeView">返回主页</div> |
| | | </div> |
| | | <div class="screen-widget-location"> |
| | | <div class="screen-widget-icon"></div> |
| | | <div class="screen-widget-text">{{ defaultCity }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="screen-widget"> |
| | | <div class="screen-widget-weather" @click="openWeather"> |
| | | <div class="screen-widget-icon"> |
| | | <img style="width: 26px; height: 26px" :src="weatherIcon" alt="" /> |
| | | </div> |
| | | <div class="screen-widget-text"> |
| | | {{ weather.now.text }} {{ weather.now.temperature + "℃" }} |
| | | </div> |
| | | <div |
| | | class="screen-widget-time screen-widget-text" |
| | | style="margin-left: 20px" |
| | | > |
| | | {{ $dayjs().format("YYYY/MM/DD HH:mm") }} |
| | | </div> |
| | | </div> |
| | | <div class="screen-widget-home"> |
| | | <div class="screen-widget-icon"></div> |
| | | <div class="screen-widget-text" @click="flyToHomeView">返回主页</div> |
| | | </div> |
| | | <div class="screen-widget-location"> |
| | | <div class="screen-widget-icon"></div> |
| | | <div class="screen-widget-text">{{ defaultCity }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, onMounted, computed, defineEmits } from "vue" |
| | | import { useRouter } from "vue-router" |
| | | const router = useRouter() |
| | | const bgVisible = ref(true) |
| | | const defaultCity = ref(cityData.name) |
| | | const emits = defineEmits("showWeatherDetail") |
| | | function init(visible) { |
| | | bgVisible.value = visible |
| | | } |
| | | const weatherIcon = computed(() => { |
| | | return `https://cdn.sencdn.com/widget2/assets/img/chameleon/weather/${weather.value.now.code}.svg ` |
| | | }) |
| | | const weather = ref({ |
| | | location: { |
| | | id: "WKNM0GVFCUJJ", |
| | | name: "北京", |
| | | country: "CN", |
| | | path: "北京,北京,中国", |
| | | timezone: "Asia/Shanghai", |
| | | timezone_offset: "+08:00", |
| | | }, |
| | | now: { |
| | | text: "晴", |
| | | code: "9", |
| | | temperature: "20", |
| | | feels_like: "31", |
| | | pressure: "990", |
| | | humidity: "84", |
| | | visibility: "24.13", |
| | | wind_direction: "东", |
| | | wind_direction_degree: "79", |
| | | wind_speed: "10.0", |
| | | wind_scale: "2", |
| | | clouds: "62", |
| | | dew_point: "", |
| | | }, |
| | | last_update: "2023-04-21T11:02:40+08:00", |
| | | }) |
| | | const air = ref({ |
| | | city: { |
| | | quality: "优", |
| | | }, |
| | | }) |
| | | const getWeatherData = () => { |
| | | fetch( |
| | | "https://api.seniverse.com/v3/weather/now.json?key=Sn4df5dIxeplgBv3X&location=beijing&language=zh-Hans&unit=c", |
| | | { |
| | | mode: "cors", // no-cors, *cors, same-origin |
| | | cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached |
| | | headers: { |
| | | // "Content-Type": "application/json", |
| | | "Content-Type": "application/x-www-form-urlencoded", |
| | | }, |
| | | } |
| | | ) |
| | | .then(response => response.json()) |
| | | .then(data => { |
| | | weather.value = data.results[0] |
| | | // console.log(weather.value) |
| | | }) |
| | | } |
| | | function initScene() { |
| | | flyToHomeView() |
| | | let desc = { |
| | | func_name: "FlyTo", |
| | | vectorType: "WGS84", |
| | | x: "102.410951", |
| | | y: "36.838083", |
| | | z: "20611.588439", |
| | | yaw: "-87.464172", |
| | | pitch: "-89.0", |
| | | distance: "4918164.228809", |
| | | PlayRate: "5", |
| | | Name: "甘肃顶视图", |
| | | } |
| | | ps.emitMessage(desc) |
| | | } |
| | | import { ref, onMounted, computed, defineEmits } from "vue"; |
| | | import { useRouter } from "vue-router"; |
| | | const router = useRouter(); |
| | | const bgVisible = ref(true); |
| | | const defaultCity = ref(cityData.name); |
| | | const emits = defineEmits("showWeatherDetail"); |
| | | function init(visible) { |
| | | bgVisible.value = visible; |
| | | } |
| | | const weatherIcon = computed(() => { |
| | | return `https://cdn.sencdn.com/widget2/assets/img/chameleon/weather/${weather.value.now.code}.svg `; |
| | | }); |
| | | const weather = ref({ |
| | | location: { |
| | | id: "WKNM0GVFCUJJ", |
| | | name: "北京", |
| | | country: "CN", |
| | | path: "北京,北京,中国", |
| | | timezone: "Asia/Shanghai", |
| | | timezone_offset: "+08:00", |
| | | }, |
| | | now: { |
| | | text: "晴", |
| | | code: "9", |
| | | temperature: "20", |
| | | feels_like: "31", |
| | | pressure: "990", |
| | | humidity: "84", |
| | | visibility: "24.13", |
| | | wind_direction: "东", |
| | | wind_direction_degree: "79", |
| | | wind_speed: "10.0", |
| | | wind_scale: "2", |
| | | clouds: "62", |
| | | dew_point: "", |
| | | }, |
| | | last_update: "2023-04-21T11:02:40+08:00", |
| | | }); |
| | | const air = ref({ |
| | | city: { |
| | | quality: "优", |
| | | }, |
| | | }); |
| | | const getWeatherData = () => { |
| | | fetch( |
| | | "https://api.seniverse.com/v3/weather/now.json?key=Sn4df5dIxeplgBv3X&location=beijing&language=zh-Hans&unit=c", |
| | | { |
| | | mode: "cors", // no-cors, *cors, same-origin |
| | | cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached |
| | | headers: { |
| | | // "Content-Type": "application/json", |
| | | "Content-Type": "application/x-www-form-urlencoded", |
| | | }, |
| | | } |
| | | ) |
| | | .then((response) => response.json()) |
| | | .then((data) => { |
| | | weather.value = data.results[0]; |
| | | // console.log(weather.value) |
| | | }); |
| | | }; |
| | | function initScene() { |
| | | flyToHomeView(); |
| | | let desc = { |
| | | func_name: "FlyTo", |
| | | vectorType: "WGS84", |
| | | x: "102.410951", |
| | | y: "36.838083", |
| | | z: "20611.588439", |
| | | yaw: "-87.464172", |
| | | pitch: "-89.0", |
| | | distance: "4918164.228809", |
| | | PlayRate: "5", |
| | | Name: "甘肃顶视图", |
| | | }; |
| | | ps.emitMessage(desc); |
| | | } |
| | | |
| | | function openWeather() { |
| | | emits("showWeatherDetail") |
| | | } |
| | | function flyToHomeView() { |
| | | router.push("/") |
| | | const view = { |
| | | destination: { |
| | | x: -2355432.569004413, |
| | | y: 4687573.191838412, |
| | | z: 4098726.315265574, |
| | | }, |
| | | orientation: { |
| | | pitch: -0.9541030830183503, |
| | | roll: 0.00031421159527500464, |
| | | heading: 6.140424766644804, |
| | | }, |
| | | } |
| | | viewer.scene.camera.flyTo(view) |
| | | } |
| | | onMounted(() => { |
| | | // getWeatherData() |
| | | }) |
| | | function openWeather() { |
| | | emits("showWeatherDetail"); |
| | | } |
| | | |
| | | import { useSimStore } from "@/store/simulation"; |
| | | import { storeToRefs } from "pinia"; |
| | | const simStore = useSimStore(); |
| | | const { showDangerAssess, rightRiverShow } = storeToRefs(simStore); |
| | | function flyToHomeView() { |
| | | rightRiverShow.value = false; |
| | | showDangerAssess.value = false; |
| | | router.push("/"); |
| | | const view = { |
| | | destination: { |
| | | x: -2355432.569004413, |
| | | y: 4687573.191838412, |
| | | z: 4098726.315265574, |
| | | }, |
| | | orientation: { |
| | | pitch: -0.9541030830183503, |
| | | roll: 0.00031421159527500464, |
| | | heading: 6.140424766644804, |
| | | }, |
| | | }; |
| | | viewer.scene.camera.flyTo(view); |
| | | } |
| | | onMounted(() => { |
| | | // getWeatherData() |
| | | }); |
| | | </script> |
| | | <style lang="less" scoped> |
| | | @import url("../assets/css/screen.css"); |
| | | @import url("../assets/css/screen.css"); |
| | | </style> |