阶段性代码提交
This commit is contained in:
parent
992f4ad1ec
commit
3dd94338c0
|
|
@ -55,6 +55,10 @@ body {
|
|||
background: linear-gradient(0deg, #0143f4, #0195fa);
|
||||
color: #fff !important;
|
||||
}
|
||||
.ant-menu-item-selected {
|
||||
background: linear-gradient(0deg, #3b6fff, #62c0ff);
|
||||
color: #fff !important;
|
||||
}
|
||||
}
|
||||
.blueToolTip {
|
||||
.ant-tooltip-inner {
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ if (!qiankunWindow.__POWERED_BY_QIANKUN__) {
|
|||
id_token:
|
||||
'eyJraWQiOiI3M2I5NTI0Ni02NjI2LTQ3N2YtYWFmYS1kMDJiODFhNjFkZmYiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjc2FkbWluIiwiYXVkIjoidHVvaGVuZy1haXJwb3J0LWFkbWluIiwicm9sZSI6WyJ0dW9oZW5nLWFpcnBvcnRTY3JlZW4tbXAiLCJ0dW9oZW5nLXBpbG90LW1wIiwidHVvaGVuZy13YXRlcndheS1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLW1wIiwidHVvaGVuZy1haXJwb3J0U2NyZWVuLWFkbWluIiwidHVvaGVuZy1kbXAtbXAiLCJ0dW9oZW5nLWZseXBvcnRhbC1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLWFkbWluIiwidHVvaGVuZy1oaHotYWRtaW4iLCJ0dW9oZW5nLWhoei1tcCIsInR1b2hlbmctZnJlZXdheS1hZG1pbiIsInR1b2hlbmctd2VwdHNwLW1wIiwidHVvaGVuZy1waWxvdC1hZG1pbiIsInR1b2hlbmctc3BhY2V0aW1lLWFkbWluIiwidHVvaGVuZy1hbGVydC1tcCIsInR1b2hlbmctYnVzaW5lc3MtYWRtaW4iLCJ0dW9oZW5nLWJ1c2luZXNzLW1wIiwidHVvaGVuZy13ZXB0c3AtYWRtaW4iLCJ0dW9oZW5nLWFpcm1vbml0b3ItbXAiLCJ0dW9oZW5nLWFpcnBvcnQtbXAiLCJ0dW9oZW5nLWFpcm1vbml0b3ItYWRtaW4iLCJ0dW9oZW5nLWFsZXJ0LWFkbWluIiwidHVvaGVuZy1haXJwb3J0LWFkbWluIiwidHVvaGVuZy13YXRlcndheS1tcCIsInR1b2hlbmctZnJlZXdheS1tcCIsInR1b2hlbmctZG1wLWFkbWluIiwidHVvaGVuZy1zcGFjZXRpbWUtbXAiXSwiYXpwIjoidHVvaGVuZy1haXJwb3J0LWFkbWluIiwiaXNzIjoiaHR0cHM6XC9cL2xvZ2luLXRlc3QudC1hYXJvbi5jb20iLCJleHAiOjE3NTUwNzA3MjMsImlhdCI6MTc1NTA2ODkyM30.deCJZsyu2dgLrbl-rnnoYTBhZD59zUJoLzFkadL7m_RJ_jWlvQvLXjQn2h0tuba0HRN7ZT2COVmNxTgLLATbdJU2SQ-_wVt30XwyX1hauDV1DALzdk5UiRelP2lIJlPWZKhpqMX52gYsGZXyliErbORBLMc_920vTZDHKeuiriuODXlT7__5MnKFTCGXDegZRPALY7kLwpQfL4DSn3ILeSGMIqU7dPx3kM4CV1iIJs2f2jEZT4HOzXy51o_GjCW7enY2qWERRfvsLIX8a8DPg0YvN-j3AHoUoKWYX_1ZCmD3eGHhqQbEvZsLJV2J6MlwF6eZOkz08M-mdkyU2_Trpg',
|
||||
access_token:
|
||||
'eyJraWQiOiI3M2I5NTI0Ni02NjI2LTQ3N2YtYWFmYS1kMDJiODFhNjFkZmYiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjc2FkbWluIiwiaXNBYmxlIjoxLCJpc3MiOiJodHRwczpcL1wvbG9naW4tdGVzdC50LWFhcm9uLmNvbSIsImF1ZCI6InR1b2hlbmctYWlycG9ydC1hZG1pbiIsIm5iZiI6MTc1NTg0MDUzNSwib1VzZXJJZCI6NTQzLCJzY29wZSI6WyJ0dW9oZW5nLWFpcnBvcnRTY3JlZW4tbXAiLCJ0dW9oZW5nLXBpbG90LW1wIiwidHVvaGVuZy13YXRlcndheS1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLW1wIiwidHVvaGVuZy1haXJwb3J0U2NyZWVuLWFkbWluIiwidHVvaGVuZy1kbXAtbXAiLCJ0dW9oZW5nLWZseXBvcnRhbC1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLWFkbWluIiwidHVvaGVuZy1oaHotYWRtaW4iLCJ0dW9oZW5nLWhoei1tcCIsInR1b2hlbmctZnJlZXdheS1hZG1pbiIsInR1b2hlbmctd2VwdHNwLW1wIiwidHVvaGVuZy1waWxvdC1hZG1pbiIsInR1b2hlbmctc3BhY2V0aW1lLWFkbWluIiwidHVvaGVuZy1hbGVydC1tcCIsInR1b2hlbmctYnVzaW5lc3MtYWRtaW4iLCJ0dW9oZW5nLWJ1c2luZXNzLW1wIiwidHVvaGVuZy13ZXB0c3AtYWRtaW4iLCJ0dW9oZW5nLWFpcm1vbml0b3ItbXAiLCJ0dW9oZW5nLWFpcnBvcnQtbXAiLCJ0dW9oZW5nLWFpcm1vbml0b3ItYWRtaW4iLCJ0dW9oZW5nLWFsZXJ0LWFkbWluIiwidHVvaGVuZy1haXJwb3J0LWFkbWluIiwidHVvaGVuZy13YXRlcndheS1tcCIsInR1b2hlbmctZnJlZXdheS1tcCIsInR1b2hlbmctZG1wLWFkbWluIiwidHVvaGVuZy1zcGFjZXRpbWUtbXAiXSwiY2xpZW50Um9sZUxpc3QiOiJbe1wiY2xpZW50SWRcIjpcInR1b2hlbmctZmx5cG9ydGFsLWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1idXNpbmVzcy1tcFwiLFwicm9sZUlkXCI6MTE0NX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYnVzaW5lc3MtYWRtaW5cIixcInJvbGVJZFwiOjExNDV9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWFpcnBvcnRTY3JlZW4tYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXNwYWNldGltZS1hZG1pblwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctc3BhY2V0aW1lLW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1oaHotYWRtaW5cIixcInJvbGVJZFwiOjEwMDN9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWhoei1tcFwiLFwicm9sZUlkXCI6MTAwM30se1wiY2xpZW50SWRcIjpcInR1b2hlbmctd2F0ZXJ3YXktYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXdhdGVyd2F5LW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1kbXAtYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWRtcC1tcFwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYWlycG9ydC1hZG1pblwiLFwicm9sZUlkXCI6NjYzfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJwb3J0LW1wXCIsXCJyb2xlSWRcIjo2NjN9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWFsZXJ0LWFkbWluXCIsXCJyb2xlSWRcIjoyN30se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYWxlcnQtbXBcIixcInJvbGVJZFwiOjI3fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJtb25pdG9yLWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJtb25pdG9yLW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy13ZXB0c3AtYWRtaW5cIixcInJvbGVJZFwiOjI1fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy13ZXB0c3AtbXBcIixcInJvbGVJZFwiOjI1fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy10ZWxlY29tdW1hbGUtYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXRlbGVjb211bWFsZS1tcFwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctcGlsb3QtbXBcIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXBpbG90LWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1mcmVld2F5LW1wXCIsXCJyb2xlSWRcIjo1OH0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctZnJlZXdheS1hZG1pblwiLFwicm9sZUlkXCI6NTh9XSIsImV4cCI6MTc1NTkyNjkzNSwiaXNFeHBpcmUiOjEsImlhdCI6MTc1NTg0MDUzNSwidXNlcm5hbWUiOiJjc2FkbWluIn0.CdmV7EymvXhrsCegeAagGffF6BOvFeWIMr-93I2Oa2ZiOB8rcNKOhR9ZsvzTeUFq0S9RXWX4lg8LEO7ymCA0IESumX0KOYAVOF15_xmXHxLiFRaL9L_6KdH0YDp7wA2vCpmiAxNBdUBUW3pfgzXI3mRjOBcH5L26ZLBP0Me0RcPOHGEwtNaFD3JMBhVj6DCiI2koM8oB4TXVEbPMAk19C_mK6tCkTXo_oRMdKHRXmgKOwA4mbggjwgce9-YsAsAkoYl0uO2Z4l6UCWRrmr5_5bCFhokmmoKBKhH84HU6azncJFY3_2StB_bBRPq2y9RWAt4RukRR-kE545N_rriNvg',
|
||||
'eyJraWQiOiI3M2I5NTI0Ni02NjI2LTQ3N2YtYWFmYS1kMDJiODFhNjFkZmYiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjc2FkbWluIiwiaXNBYmxlIjoxLCJpc3MiOiJodHRwczpcL1wvbG9naW4tdGVzdC50LWFhcm9uLmNvbSIsImF1ZCI6InR1b2hlbmctYWlycG9ydC1hZG1pbiIsIm5iZiI6MTc1NTkxNDQ5MSwib1VzZXJJZCI6NTQzLCJzY29wZSI6WyJ0dW9oZW5nLWFpcnBvcnRTY3JlZW4tbXAiLCJ0dW9oZW5nLXBpbG90LW1wIiwidHVvaGVuZy13YXRlcndheS1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLW1wIiwidHVvaGVuZy1haXJwb3J0U2NyZWVuLWFkbWluIiwidHVvaGVuZy1kbXAtbXAiLCJ0dW9oZW5nLWZseXBvcnRhbC1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLWFkbWluIiwidHVvaGVuZy1oaHotYWRtaW4iLCJ0dW9oZW5nLWhoei1tcCIsInR1b2hlbmctZnJlZXdheS1hZG1pbiIsInR1b2hlbmctd2VwdHNwLW1wIiwidHVvaGVuZy1waWxvdC1hZG1pbiIsInR1b2hlbmctc3BhY2V0aW1lLWFkbWluIiwidHVvaGVuZy1hbGVydC1tcCIsInR1b2hlbmctYnVzaW5lc3MtYWRtaW4iLCJ0dW9oZW5nLWJ1c2luZXNzLW1wIiwidHVvaGVuZy13ZXB0c3AtYWRtaW4iLCJ0dW9oZW5nLWFpcm1vbml0b3ItbXAiLCJ0dW9oZW5nLWFpcnBvcnQtbXAiLCJ0dW9oZW5nLWFpcm1vbml0b3ItYWRtaW4iLCJ0dW9oZW5nLWFsZXJ0LWFkbWluIiwidHVvaGVuZy1haXJwb3J0LWFkbWluIiwidHVvaGVuZy13YXRlcndheS1tcCIsInR1b2hlbmctZnJlZXdheS1tcCIsInR1b2hlbmctZG1wLWFkbWluIiwidHVvaGVuZy1zcGFjZXRpbWUtbXAiXSwiY2xpZW50Um9sZUxpc3QiOiJbe1wiY2xpZW50SWRcIjpcInR1b2hlbmctZmx5cG9ydGFsLWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1idXNpbmVzcy1tcFwiLFwicm9sZUlkXCI6MTE0NX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYnVzaW5lc3MtYWRtaW5cIixcInJvbGVJZFwiOjExNDV9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWFpcnBvcnRTY3JlZW4tYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXNwYWNldGltZS1hZG1pblwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctc3BhY2V0aW1lLW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1oaHotYWRtaW5cIixcInJvbGVJZFwiOjEwMDN9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWhoei1tcFwiLFwicm9sZUlkXCI6MTAwM30se1wiY2xpZW50SWRcIjpcInR1b2hlbmctd2F0ZXJ3YXktYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXdhdGVyd2F5LW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1kbXAtYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWRtcC1tcFwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYWlycG9ydC1hZG1pblwiLFwicm9sZUlkXCI6NjYzfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJwb3J0LW1wXCIsXCJyb2xlSWRcIjo2NjN9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWFsZXJ0LWFkbWluXCIsXCJyb2xlSWRcIjoyN30se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYWxlcnQtbXBcIixcInJvbGVJZFwiOjI3fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJtb25pdG9yLWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJtb25pdG9yLW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy13ZXB0c3AtYWRtaW5cIixcInJvbGVJZFwiOjI1fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy13ZXB0c3AtbXBcIixcInJvbGVJZFwiOjI1fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy10ZWxlY29tdW1hbGUtYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXRlbGVjb211bWFsZS1tcFwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctcGlsb3QtbXBcIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXBpbG90LWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1mcmVld2F5LW1wXCIsXCJyb2xlSWRcIjo1OH0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctZnJlZXdheS1hZG1pblwiLFwicm9sZUlkXCI6NTh9XSIsImV4cCI6MTc1NjAwMDg5MSwiaXNFeHBpcmUiOjEsImlhdCI6MTc1NTkxNDQ5MSwidXNlcm5hbWUiOiJjc2FkbWluIn0.Opt-pZg4tgqZkfcme-jSyOOw80j0s5tqWiPVp0lLlOZu20-nJEO2co3A1UZ-ZOsrCik1N3_ZqGWhrk9QYhj0EAeoD6ByLDkLIw7k66_YtBidygxdDaSdpNt_RSat2QBNdrkvoG1bSEgaffh8_x205sFzlYfywn0zQfT6eANiKS8NDyamiwFPg5PcWkf9hmW3IxvhiLbCoSpD1LfHR6izkD2_vBmrNAhV33l84BGpW3HLcD19ZcLWKauSLztiNLMT46zCyZIYaAtzSASdu3esADK28KpzBECBfpSfodvkU3kcv3r_IJ1yrmwdrg9kojOF27WxM3z6ekJAMsuMoUECLg',
|
||||
refresh_token:
|
||||
'HNyAXnoDhR2kgjXUSVwqMldvgzazvaY3tVlCodSiDon7fA7P8Ci3BMsnk31cjeSKwcbsPzUaMdCdBilBhSqQ1dZLk-Md-ERqh5mbbeu7rJDWX4MexO0eKtRBwz-mbnbR',
|
||||
token_type: 'Bearer',
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ const checkFn = async (row) => {
|
|||
// console.log(row.id)
|
||||
let params = {
|
||||
airportId: row.id,
|
||||
taskId: row.task[0].id,
|
||||
taskId: row.task[0].taskId,
|
||||
// taskId: 4454,
|
||||
}
|
||||
let res = await beforeCheckApi(params)
|
||||
|
|
@ -62,7 +62,11 @@ const checkFn = async (row) => {
|
|||
// console.log(processStatus.value)
|
||||
// console.log(res.data)
|
||||
|
||||
if (processStatus.value != null) {
|
||||
if (precent.value == 100) {
|
||||
clearTimeout(checkTime)
|
||||
return
|
||||
}
|
||||
if (processStatus.value == 'error') {
|
||||
clearTimeout(checkTime)
|
||||
return
|
||||
}
|
||||
|
|
@ -99,7 +103,7 @@ onUnmounted(() => {
|
|||
<div class="p-2.5">
|
||||
<div class="flex flex-row items-center justify-between mt-4">
|
||||
<span class="text-[18px] text-[#ffffff] font-medium">TAKEOFF PREPARING</span>
|
||||
<span v-if="processStatus == 'success'" class="success_text">SUCCESS</span>
|
||||
<span v-if="processStatus == 'success' && precent == 100" class="success_text">SUCCESS</span>
|
||||
<span v-if="processStatus == 'error'" class="fail_text">FAILED</span>
|
||||
|
||||
<a-spin :indicator="indicator" v-if="processStatus == null" />
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ let size2Img = ref(new URL(`@/assets/icons/size2.png`, import.meta.url).href)
|
|||
let viewMode = ref(1) //1-1/4方式 2-对半方式
|
||||
let littleViewMode = ref(1) //1-舱外视频 2-舱内视频 3-无人机视频
|
||||
let littleViewModeName = ref('舱外画面')
|
||||
let planeStateList = ref([
|
||||
{
|
||||
let planeStateList = reactive({
|
||||
vspeed: {
|
||||
id: 1,
|
||||
key: 'vspeed',
|
||||
name: '爬升速度',
|
||||
|
|
@ -32,7 +32,7 @@ let planeStateList = ref([
|
|||
content: '爬升<br>速度',
|
||||
unit: '/s',
|
||||
},
|
||||
{
|
||||
hspeed: {
|
||||
id: 2,
|
||||
name: '平飞速度',
|
||||
icon: 'icon-jiantouzuoyou',
|
||||
|
|
@ -41,7 +41,7 @@ let planeStateList = ref([
|
|||
content: '平飞<br>速度',
|
||||
unit: '/s',
|
||||
},
|
||||
{
|
||||
distToHome: {
|
||||
id: 3,
|
||||
name: '距离机场',
|
||||
icon: 'icon-H',
|
||||
|
|
@ -50,7 +50,7 @@ let planeStateList = ref([
|
|||
content: '距离<br>机场',
|
||||
unit: 'm',
|
||||
},
|
||||
{
|
||||
altitude: {
|
||||
id: 4,
|
||||
name: '海拔高度',
|
||||
icon: 'icon-tiedijuli',
|
||||
|
|
@ -59,7 +59,7 @@ let planeStateList = ref([
|
|||
content: '海拔<br>高度',
|
||||
unit: 'm',
|
||||
},
|
||||
{
|
||||
pitch: {
|
||||
id: 5,
|
||||
name: '无人机俯仰角',
|
||||
icon: 'icon-flight-takeoff-line',
|
||||
|
|
@ -68,7 +68,7 @@ let planeStateList = ref([
|
|||
content: '无人机<br>俯仰角',
|
||||
unit: '°',
|
||||
},
|
||||
{
|
||||
yaw: {
|
||||
id: 6,
|
||||
name: '无人机偏航角',
|
||||
icon: 'icon-feihangqipianhangjiao',
|
||||
|
|
@ -76,7 +76,7 @@ let planeStateList = ref([
|
|||
content: '无人机<br>偏航角',
|
||||
touch: false,
|
||||
},
|
||||
{
|
||||
camerapitch: {
|
||||
id: 7,
|
||||
name: '云台俯仰角',
|
||||
icon: 'icon-pianhangjiao-1',
|
||||
|
|
@ -84,7 +84,7 @@ let planeStateList = ref([
|
|||
content: '云台<br>俯仰角',
|
||||
touch: false,
|
||||
},
|
||||
{
|
||||
camerayaw: {
|
||||
id: 8,
|
||||
name: '云台偏航角',
|
||||
icon: 'icon-pianhangjiao-1',
|
||||
|
|
@ -92,7 +92,7 @@ let planeStateList = ref([
|
|||
content: '云台<br>偏航角',
|
||||
touch: false,
|
||||
},
|
||||
])
|
||||
})
|
||||
let selectedAirPort = ref(1)
|
||||
|
||||
//切换显示模式
|
||||
|
|
@ -125,12 +125,33 @@ const switchPlaneVideo = (viewtype) => {
|
|||
break
|
||||
}
|
||||
}
|
||||
//设置socket的值
|
||||
const setCurrentData = (data) => {
|
||||
//爬升速度
|
||||
planeStateList.vspeed.value = data.vspeed
|
||||
//平飞速度
|
||||
planeStateList.hspeed.value = data.hspeed
|
||||
//距离机场
|
||||
planeStateList.distToHome.value = data.distToHome
|
||||
//海拔高度
|
||||
planeStateList.altitude.value = data.altitude
|
||||
//无人机俯仰角
|
||||
planeStateList.pitch.value = data.pitch
|
||||
//无人机偏航角
|
||||
planeStateList.yaw.value = data.yaw
|
||||
//云台俯仰角
|
||||
planeStateList.camerapitch.value = data.camerapitch
|
||||
//云台偏航角
|
||||
planeStateList.camerayaw.value = data.camerayaw
|
||||
}
|
||||
|
||||
//切换视频位置
|
||||
const siwtchVideoPosFn = () => {}
|
||||
|
||||
//监听pinia
|
||||
airPortSocketStore.$subscribe((mutate, state) => {
|
||||
console.log(state.currentAirPort)
|
||||
//设置socket的值
|
||||
setCurrentData(state.currentAirPort)
|
||||
})
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
<script setup>
|
||||
import { ref, defineAsyncComponent, onMounted, watch, toRaw, defineProps, reactive } from 'vue'
|
||||
// const LivePlayer = defineAsyncComponent(() => import('@/components/video/index.vue'))
|
||||
|
||||
const emit = defineEmits(['switchScreen'])
|
||||
|
||||
|
|
@ -11,20 +10,6 @@ let out_title = ref('舱外直播')
|
|||
let in_title = ref('舱内直播')
|
||||
let lastType = ref(null)
|
||||
|
||||
const LiveOptions_out = reactive({
|
||||
videoUrl: null,
|
||||
// videoTitle: null,
|
||||
// live: true,
|
||||
// hideFullscreenButton: true,
|
||||
// stretch: true
|
||||
})
|
||||
const LiveOptions_in = reactive({
|
||||
videoUrl: null,
|
||||
// videoTitle: null,
|
||||
// live: true,
|
||||
// hideFullscreenButton: true,
|
||||
// stretch: true
|
||||
})
|
||||
const switchScreen = (type) => {
|
||||
if (lastType != type) {
|
||||
out_title.value = '舱外直播'
|
||||
|
|
|
|||
|
|
@ -30,11 +30,20 @@ let leftPlaneWidth = ref('25%')
|
|||
let rightPlaneWidth = ref('100%')
|
||||
let rightPlaneHeight = ref('100%')
|
||||
let rightPlaneBottom = ref('0')
|
||||
let showLiveVideo = ref(false)
|
||||
//舱外视角
|
||||
let out_showLive = ref(false)
|
||||
//舱内视角
|
||||
let in_showLive = ref(false)
|
||||
//无人机视角
|
||||
let plane_showLive = ref(false)
|
||||
//gismap
|
||||
let showIframeMap = ref(false)
|
||||
|
||||
let outVideo_teleport = ref('#out_small_video_area')
|
||||
let inVideo_teleport = ref('#in_small_video_area')
|
||||
let planeVideo_teleport = ref('#plane_small_video_area')
|
||||
let map_teleport = ref('#big_area')
|
||||
|
||||
let switchType = null
|
||||
//实时socket机场数据
|
||||
let currentAirPortSocket = ref(null)
|
||||
|
|
@ -46,14 +55,13 @@ let statelliteCount = ref(0)
|
|||
|
||||
//当前机场数据
|
||||
let currentAirPortInfo = ref(null)
|
||||
let currentAirPortStatus = ref(1)
|
||||
let currentAirPortStatus = ref(-1)
|
||||
const statusList = reactive({
|
||||
1: '空闲',
|
||||
2: '飞行中',
|
||||
3: '准备中',
|
||||
})
|
||||
let virturalDrive_iframe_full = ref(null)
|
||||
let showIframeMap = ref(false)
|
||||
let iframeData = null
|
||||
|
||||
//播放器设置1
|
||||
|
|
@ -98,6 +106,12 @@ const switchViewFn = (viewPrecent) => {
|
|||
leftPlaneWidth.value = '50%'
|
||||
rightPlaneWidth.value = '50%'
|
||||
}
|
||||
|
||||
//给gis发送事件
|
||||
let params = {
|
||||
resize: 1,
|
||||
}
|
||||
sendGisMessage(params)
|
||||
}
|
||||
//请求机场数据和航线数据
|
||||
const queryAirLine_AirPort = async () => {
|
||||
|
|
@ -109,25 +123,23 @@ const queryAirLine_AirPort = async () => {
|
|||
if (res[0].value.code == 0) {
|
||||
//机场
|
||||
currentAirPortInfo.value = res[0].value.data[0]
|
||||
// console.log(currentAirPortInfo.value)
|
||||
//机场当前状态
|
||||
currentAirPortStatus.value = Number(currentAirPortInfo.value.status)
|
||||
|
||||
if (Number(currentAirPortStatus.value) == 2) {
|
||||
//飞行中
|
||||
rightPlaneHeight.value = 'calc(100% - 150px)'
|
||||
rightPlaneBottom.value = '150px'
|
||||
//修改地图的指向
|
||||
map_teleport.value = '#left_flying_map'
|
||||
}
|
||||
|
||||
//直播视频
|
||||
LiveOptions_out.videoUrl = currentAirPortInfo.value.external_monitor_url
|
||||
LiveOptions_in.videoUrl = currentAirPortInfo.value.internal_monitor_url
|
||||
LiveOptions_plane.videoUrl = currentAirPortInfo.value.camera_url
|
||||
|
||||
//显示直播画面
|
||||
showLiveVideo.value = true
|
||||
//机场当前状态
|
||||
if (currentAirPortStatus.value != Number(currentAirPortInfo.value.status)) {
|
||||
currentAirPortStatus.value = Number(currentAirPortInfo.value.status)
|
||||
console.log(
|
||||
'现在的状态是:',
|
||||
currentAirPortStatus.value,
|
||||
statusList[currentAirPortStatus.value],
|
||||
)
|
||||
//重置teleport指向
|
||||
resetTeleportTo(currentAirPortStatus.value)
|
||||
}
|
||||
|
||||
//socket发送数据
|
||||
if (!isUsedSocket.value) {
|
||||
|
|
@ -146,9 +158,8 @@ const queryAirLine_AirPort = async () => {
|
|||
let airLineInfo = res[1].value.data[0]
|
||||
//请求航线数据
|
||||
let resultWayPoint = await getAirWayPointsToJson(airLineInfo.fileUrl)
|
||||
//显示iframe地图
|
||||
showIframeMap.value = true
|
||||
|
||||
//地图数据
|
||||
iframeData = {
|
||||
airportName: currentAirPortInfo.value.airportName,
|
||||
airportLocation: {
|
||||
|
|
@ -176,34 +187,69 @@ const queryAirPort = async () => {
|
|||
currentAirPortInfo.value = res.data[0]
|
||||
// console.log(currentAirPortInfo.value)
|
||||
|
||||
//机场当前状态
|
||||
currentAirPortStatus.value = Number(currentAirPortInfo.value.status)
|
||||
// currentAirPortStatus.value = 2
|
||||
console.log('现在的状态是:', currentAirPortStatus.value)
|
||||
|
||||
if (currentAirPortStatus.value == 2) {
|
||||
//飞行中
|
||||
rightPlaneHeight.value = 'calc(100% - 150px)'
|
||||
rightPlaneBottom.value = '150px'
|
||||
|
||||
setTimeout(() => {
|
||||
//修改地图的指向
|
||||
map_teleport.value = '#left_flying_map'
|
||||
//修改舱外视频的指向
|
||||
outVideo_teleport.value = '#plane_small_video_area'
|
||||
}, 50)
|
||||
}
|
||||
|
||||
//直播视频
|
||||
LiveOptions_out.videoUrl = currentAirPortInfo.value.external_monitor_url
|
||||
LiveOptions_in.videoUrl = currentAirPortInfo.value.internal_monitor_url
|
||||
LiveOptions_plane.videoUrl = currentAirPortInfo.value.camera_url
|
||||
|
||||
// currentAirPortInfo.value.status = 3
|
||||
|
||||
//机场当前状态
|
||||
if (currentAirPortStatus.value != Number(currentAirPortInfo.value.status)) {
|
||||
currentAirPortStatus.value = Number(currentAirPortInfo.value.status)
|
||||
console.log(
|
||||
'现在的状态是:',
|
||||
currentAirPortStatus.value,
|
||||
statusList[currentAirPortStatus.value],
|
||||
)
|
||||
//重置teleport指向
|
||||
resetTeleportTo(currentAirPortStatus.value)
|
||||
}
|
||||
}
|
||||
//轮询
|
||||
setTimeout(() => {
|
||||
queryAirPort()
|
||||
}, 6000)
|
||||
}
|
||||
//重置窗口指向
|
||||
const resetTeleportTo = (currentAirPortStatus) => {
|
||||
if (currentAirPortStatus == 1) {
|
||||
//空闲
|
||||
setTimeout(() => {
|
||||
//地图
|
||||
map_teleport.value = '#big_area'
|
||||
//舱外
|
||||
outVideo_teleport.value = '#out_small_video_area'
|
||||
//舱内
|
||||
inVideo_teleport.value = '#in_small_video_area'
|
||||
|
||||
out_showLive.value = true
|
||||
in_showLive.value = true
|
||||
showIframeMap.value = true
|
||||
plane_showLive.value = false
|
||||
}, 50)
|
||||
} else if (currentAirPortStatus == 2) {
|
||||
//飞行中
|
||||
rightPlaneHeight.value = 'calc(100% - 150px)'
|
||||
rightPlaneBottom.value = '150px'
|
||||
setTimeout(() => {
|
||||
//地图
|
||||
map_teleport.value = '#left_flying_map'
|
||||
//舱外
|
||||
outVideo_teleport.value = '#plane_small_video_area'
|
||||
}, 50)
|
||||
} else if (currentAirPortStatus == 3) {
|
||||
//自检中
|
||||
setTimeout(() => {
|
||||
//舱外
|
||||
outVideo_teleport.value = '#big_area'
|
||||
out_showLive.value = true
|
||||
in_showLive.value = false
|
||||
showIframeMap.value = false
|
||||
plane_showLive.value = false
|
||||
}, 50)
|
||||
}
|
||||
}
|
||||
|
||||
//socket线程
|
||||
const socketFn = (workParams) => {
|
||||
|
|
@ -216,26 +262,34 @@ const socketFn = (workParams) => {
|
|||
currentAirPortSocket.value = data
|
||||
//pinia赋值
|
||||
airPortSocketStore.currentAirPort = data
|
||||
//卫星数量
|
||||
statelliteCount.value = data.satcount
|
||||
}
|
||||
}
|
||||
|
||||
//iframe map加载完成
|
||||
const iframeLoaded = () => {
|
||||
// let iframeItem = document.getElementById('iframeItem')
|
||||
let iframeItem = virturalDrive_iframe_full.value
|
||||
let iframeContent = iframeItem.contentWindow
|
||||
|
||||
let data = JSON.stringify(iframeData)
|
||||
// console.log(data)
|
||||
iframeContent.postMessage(data, '*')
|
||||
console.log(data)
|
||||
|
||||
setTimeout(() => {
|
||||
iframeContent.postMessage(data, '*')
|
||||
}, 0)
|
||||
|
||||
//向无人机发送实时数据
|
||||
setTimeout(() => {
|
||||
sendPosToPlane()
|
||||
}, 2000)
|
||||
// setTimeout(() => {
|
||||
// sendPosToPlane()
|
||||
// }, 2000)
|
||||
}
|
||||
|
||||
//无人机实时飞机发送消息
|
||||
const sendPosToPlane = () => {
|
||||
if (currentAirPortStatus.value != 2) {
|
||||
return
|
||||
}
|
||||
// console.log('开始发送无人机移动数据..................................')
|
||||
let pathArr = iframeData.flyPath
|
||||
|
||||
|
|
@ -272,6 +326,48 @@ const sendPosToPlane = () => {
|
|||
sendPosFn()
|
||||
}
|
||||
|
||||
//给gis发送消息
|
||||
const sendGisMessage = (params) => {
|
||||
//params必须是个对象
|
||||
let iframeItem = virturalDrive_iframe_full.value
|
||||
let iframeContent = iframeItem.contentWindow
|
||||
let data = JSON.stringify(params)
|
||||
console.log(data)
|
||||
iframeContent.postMessage(data, '*')
|
||||
}
|
||||
|
||||
//右侧面板切换视频
|
||||
const switchRightVideoFn = (videoType) => {
|
||||
if (videoType == 1) {
|
||||
//舱外视角
|
||||
setTimeout(() => {
|
||||
outVideo_teleport.value = '#big_area'
|
||||
out_showLive.value = true
|
||||
in_showLive.value = false
|
||||
showIframeMap.value = false
|
||||
plane_showLive.value = false
|
||||
}, 50)
|
||||
} else if (videoType == 2) {
|
||||
//舱内视角
|
||||
setTimeout(() => {
|
||||
inVideo_teleport.value = '#big_area'
|
||||
out_showLive.value = false
|
||||
in_showLive.value = true
|
||||
showIframeMap.value = false
|
||||
plane_showLive.value = false
|
||||
}, 50)
|
||||
} else if (videoType == 3) {
|
||||
//无人机视角
|
||||
setTimeout(() => {
|
||||
planeVideo_teleport.value = '#big_area'
|
||||
out_showLive.value = false
|
||||
in_showLive.value = false
|
||||
showIframeMap.value = false
|
||||
plane_showLive.value = true
|
||||
}, 50)
|
||||
}
|
||||
}
|
||||
|
||||
//回调事件
|
||||
const switchScreenFn = (type) => {
|
||||
console.log(type)
|
||||
|
|
@ -341,7 +437,12 @@ onMounted(() => {
|
|||
</div>
|
||||
<!-- 右侧面板 -->
|
||||
<div class="rightPlane absolute right-0 h-full bg-[#ffffff] z-1">
|
||||
<rightSwitchVideo class="absolute right-3 top-3" />
|
||||
<!-- 切换视频按钮 -->
|
||||
<rightSwitchVideo
|
||||
v-if="currentAirPortStatus == 2 || currentAirPortStatus == 3"
|
||||
class="absolute right-3 top-3 z-10"
|
||||
@switchVideo="switchRightVideoFn"
|
||||
/>
|
||||
|
||||
<div class="fullScreen w-full absolute right-0">
|
||||
<!-- <div class="w-full h-10 absolute right-0 bottom-[20px]">
|
||||
|
|
@ -365,37 +466,34 @@ onMounted(() => {
|
|||
|
||||
<!-- 直播播放器 -->
|
||||
<!-- 舱外视频 -->
|
||||
<teleport
|
||||
:to="outVideo_teleport"
|
||||
v-if="showLiveVideo && (currentAirPortStatus == 1 || currentAirPortStatus == 2)"
|
||||
>
|
||||
<teleport :to="outVideo_teleport" v-if="out_showLive">
|
||||
<LivePlayer
|
||||
class="h-full absolute left-0 right-0 top-0 right-0 m-auto"
|
||||
v-show="showLiveVideo && LiveOptions_out.videoUrl?.includes('.flv')"
|
||||
v-show="out_showLive && LiveOptions_out.videoUrl?.includes('.flv')"
|
||||
ref="OutlivePlayerRef"
|
||||
:options="LiveOptions_out"
|
||||
/>
|
||||
</teleport>
|
||||
<!-- 舱内视频 -->
|
||||
<teleport :to="inVideo_teleport" v-if="showLiveVideo && currentAirPortStatus == 1">
|
||||
<teleport :to="inVideo_teleport" v-if="in_showLive">
|
||||
<LivePlayer
|
||||
class="h-full absolute left-0 right-0 top-0 right-0 m-auto"
|
||||
v-show="showLiveVideo && LiveOptions_in.videoUrl?.includes('.flv')"
|
||||
v-show="in_showLive && LiveOptions_in.videoUrl?.includes('.flv')"
|
||||
ref="inlivePlayerRef"
|
||||
:options="LiveOptions_in"
|
||||
/>
|
||||
</teleport>
|
||||
<!-- 无人机视角 -->
|
||||
<!-- <teleport :to="planeVideo_teleport" v-if="showLiveVideo && currentAirPortStatus == 2">
|
||||
<teleport :to="planeVideo_teleport" v-if="plane_showLive">
|
||||
<LivePlayer
|
||||
class="h-full absolute left-0 right-0 top-0 right-0 m-auto"
|
||||
v-show="showLiveVideo && LiveOptions_plane.videoUrl?.includes('.flv')"
|
||||
v-show="plane_showLive && LiveOptions_plane.videoUrl?.includes('.flv')"
|
||||
ref="planelivePlayerRef"
|
||||
:options="LiveOptions_in"
|
||||
:options="LiveOptions_plane"
|
||||
/>
|
||||
</teleport> -->
|
||||
</teleport>
|
||||
<!-- map -->
|
||||
<teleport :to="map_teleport">
|
||||
<teleport v-if="showIframeMap" :to="map_teleport">
|
||||
<iframe
|
||||
v-if="showIframeMap"
|
||||
id="virturalDrive_iframe_full"
|
||||
|
|
|
|||
|
|
@ -10,20 +10,21 @@ import {
|
|||
reactive,
|
||||
} from 'vue'
|
||||
|
||||
let current = ref()
|
||||
const emit = defineEmits(['switchVideo'])
|
||||
let current = ref([1])
|
||||
let items = reactive([
|
||||
{
|
||||
key: '1',
|
||||
key: 1,
|
||||
label: '舱外画面',
|
||||
title: 'Option1',
|
||||
},
|
||||
{
|
||||
key: '2',
|
||||
key: 2,
|
||||
label: '舱内画面',
|
||||
title: 'Option2',
|
||||
},
|
||||
{
|
||||
key: '3',
|
||||
key: 3,
|
||||
label: '无人机画面',
|
||||
title: 'Option3',
|
||||
},
|
||||
|
|
@ -40,6 +41,10 @@ const mergedArrow = computed(() => {
|
|||
return { pointAtCenter: true }
|
||||
}
|
||||
})
|
||||
const selectFn = (e) => {
|
||||
// console.log(current.value)
|
||||
emit('switchVideo', current.value[0])
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
@ -50,7 +55,8 @@ const mergedArrow = computed(() => {
|
|||
:getPopupContainer="(triggerNode) => triggerNode.parentElement"
|
||||
>
|
||||
<template #title>
|
||||
<a-menu class="blueMenus" v-model:selectedKeys="current" :items="items"> </a-menu>
|
||||
<a-menu class="blueMenus" v-model:selectedKeys="current" :items="items" @select="selectFn">
|
||||
</a-menu>
|
||||
</template>
|
||||
<a-button type="primary" size="default">
|
||||
<template #icon>
|
||||
|
|
|
|||
|
|
@ -14,16 +14,17 @@ addEventListener('message', (e) => {
|
|||
// return
|
||||
//开始发送sockets请求
|
||||
//当前机场socket
|
||||
let wsAirport = new WebSocketService()
|
||||
wsAirport.createConnection(`wss://${baseUrl}/airport/socket/webSocket/0:0:${datas.code}`)
|
||||
let wsAirport = new WebSocketService().createConnection(
|
||||
`wss://${baseUrl}/airport/socket/webSocket/0:0:${datas.code}`,
|
||||
)
|
||||
//日志socket
|
||||
// let wsLog = new WebSocketService().createConnection(
|
||||
// `wss://${baseUrl}/airport/socket/logSocket/${datas.id}`,
|
||||
// )
|
||||
wsAirport.onmessage = (event) => {
|
||||
if (!WebSocketService.isJsonString(event.data)) return
|
||||
// const wsData = JSON.parse(event.data)
|
||||
// console.log(wsData)
|
||||
const wsData = JSON.parse(event.data)
|
||||
// console.log(wsData)
|
||||
//发送给主线程
|
||||
return postMessage(event.data)
|
||||
// const currentDroneInfo data.currentDroneInfo || null
|
||||
|
|
|
|||
Loading…
Reference in New Issue