阶段性代码提交
This commit is contained in:
parent
b525eaccbe
commit
992f4ad1ec
|
|
@ -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.eyJzdWIiOiJjc2FkbWluIiwiaXNBYmxlIjoxLCJpc3MiOiJodHRwczpcL1wvbG9naW4tdGVzdC50LWFhcm9uLmNvbSIsImF1ZCI6InR1b2hlbmctYWlycG9ydC1hZG1pbiIsIm5iZiI6MTc1NTc1OTQyNSwib1VzZXJJZCI6NTQzLCJzY29wZSI6WyJ0dW9oZW5nLWFpcnBvcnRTY3JlZW4tbXAiLCJ0dW9oZW5nLXBpbG90LW1wIiwidHVvaGVuZy13YXRlcndheS1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLW1wIiwidHVvaGVuZy1haXJwb3J0U2NyZWVuLWFkbWluIiwidHVvaGVuZy1kbXAtbXAiLCJ0dW9oZW5nLWZseXBvcnRhbC1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLWFkbWluIiwidHVvaGVuZy1oaHotYWRtaW4iLCJ0dW9oZW5nLWhoei1tcCIsInR1b2hlbmctZnJlZXdheS1hZG1pbiIsInR1b2hlbmctd2VwdHNwLW1wIiwidHVvaGVuZy1waWxvdC1hZG1pbiIsInR1b2hlbmctc3BhY2V0aW1lLWFkbWluIiwidHVvaGVuZy1hbGVydC1tcCIsInR1b2hlbmctYnVzaW5lc3MtYWRtaW4iLCJ0dW9oZW5nLWJ1c2luZXNzLW1wIiwidHVvaGVuZy13ZXB0c3AtYWRtaW4iLCJ0dW9oZW5nLWFpcm1vbml0b3ItbXAiLCJ0dW9oZW5nLWFpcnBvcnQtbXAiLCJ0dW9oZW5nLWFpcm1vbml0b3ItYWRtaW4iLCJ0dW9oZW5nLWFsZXJ0LWFkbWluIiwidHVvaGVuZy1haXJwb3J0LWFkbWluIiwidHVvaGVuZy13YXRlcndheS1tcCIsInR1b2hlbmctZnJlZXdheS1tcCIsInR1b2hlbmctZG1wLWFkbWluIiwidHVvaGVuZy1zcGFjZXRpbWUtbXAiXSwiY2xpZW50Um9sZUxpc3QiOiJbe1wiY2xpZW50SWRcIjpcInR1b2hlbmctZmx5cG9ydGFsLWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1idXNpbmVzcy1tcFwiLFwicm9sZUlkXCI6MTE0NX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYnVzaW5lc3MtYWRtaW5cIixcInJvbGVJZFwiOjExNDV9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWFpcnBvcnRTY3JlZW4tYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXNwYWNldGltZS1hZG1pblwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctc3BhY2V0aW1lLW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1oaHotYWRtaW5cIixcInJvbGVJZFwiOjEwMDN9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWhoei1tcFwiLFwicm9sZUlkXCI6MTAwM30se1wiY2xpZW50SWRcIjpcInR1b2hlbmctd2F0ZXJ3YXktYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXdhdGVyd2F5LW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1kbXAtYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWRtcC1tcFwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYWlycG9ydC1hZG1pblwiLFwicm9sZUlkXCI6NjYzfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJwb3J0LW1wXCIsXCJyb2xlSWRcIjo2NjN9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWFsZXJ0LWFkbWluXCIsXCJyb2xlSWRcIjoyN30se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYWxlcnQtbXBcIixcInJvbGVJZFwiOjI3fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJtb25pdG9yLWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJtb25pdG9yLW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy13ZXB0c3AtYWRtaW5cIixcInJvbGVJZFwiOjI1fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy13ZXB0c3AtbXBcIixcInJvbGVJZFwiOjI1fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy10ZWxlY29tdW1hbGUtYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXRlbGVjb211bWFsZS1tcFwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctcGlsb3QtbXBcIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXBpbG90LWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1mcmVld2F5LW1wXCIsXCJyb2xlSWRcIjo1OH0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctZnJlZXdheS1hZG1pblwiLFwicm9sZUlkXCI6NTh9XSIsImV4cCI6MTc1NTg0NTgyNSwiaXNFeHBpcmUiOjEsImlhdCI6MTc1NTc1OTQyNSwidXNlcm5hbWUiOiJjc2FkbWluIn0.AWMLWQODIm82pet6D6e_jtb--CbKMXFLZPUmvIIP18Ezk5r-rA4ZT37mC5ZZgP3p9I792ulk-Xg-fpbC4Gm6d4TmDUHwZztLXc_sTH0XOHqblNy_G6rjV1UZKex9hOKpGYH3eXxZVjUTfjcp9tbs5w5DkxzYu-hdpeVr4JUYasqVVFOZIEhOML0kBgA85P-RjK0kH1hMbyI1mRqV1t5Mnyqhd2pmybqmWDnh-ohq5JiYaquxZ2jROappWvg11gOGZ2PWptDH9pfqLMt07Td1sZOstLKNrq6fpfeJNuJ43YHcQHy6fkoM8Wf9N7Nxpv_qydfrW_9cjqwDgAgvkgf0kA',
|
||||
'eyJraWQiOiI3M2I5NTI0Ni02NjI2LTQ3N2YtYWFmYS1kMDJiODFhNjFkZmYiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjc2FkbWluIiwiaXNBYmxlIjoxLCJpc3MiOiJodHRwczpcL1wvbG9naW4tdGVzdC50LWFhcm9uLmNvbSIsImF1ZCI6InR1b2hlbmctYWlycG9ydC1hZG1pbiIsIm5iZiI6MTc1NTg0MDUzNSwib1VzZXJJZCI6NTQzLCJzY29wZSI6WyJ0dW9oZW5nLWFpcnBvcnRTY3JlZW4tbXAiLCJ0dW9oZW5nLXBpbG90LW1wIiwidHVvaGVuZy13YXRlcndheS1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLW1wIiwidHVvaGVuZy1haXJwb3J0U2NyZWVuLWFkbWluIiwidHVvaGVuZy1kbXAtbXAiLCJ0dW9oZW5nLWZseXBvcnRhbC1hZG1pbiIsInR1b2hlbmctdGVsZWNvbXVtYWxlLWFkbWluIiwidHVvaGVuZy1oaHotYWRtaW4iLCJ0dW9oZW5nLWhoei1tcCIsInR1b2hlbmctZnJlZXdheS1hZG1pbiIsInR1b2hlbmctd2VwdHNwLW1wIiwidHVvaGVuZy1waWxvdC1hZG1pbiIsInR1b2hlbmctc3BhY2V0aW1lLWFkbWluIiwidHVvaGVuZy1hbGVydC1tcCIsInR1b2hlbmctYnVzaW5lc3MtYWRtaW4iLCJ0dW9oZW5nLWJ1c2luZXNzLW1wIiwidHVvaGVuZy13ZXB0c3AtYWRtaW4iLCJ0dW9oZW5nLWFpcm1vbml0b3ItbXAiLCJ0dW9oZW5nLWFpcnBvcnQtbXAiLCJ0dW9oZW5nLWFpcm1vbml0b3ItYWRtaW4iLCJ0dW9oZW5nLWFsZXJ0LWFkbWluIiwidHVvaGVuZy1haXJwb3J0LWFkbWluIiwidHVvaGVuZy13YXRlcndheS1tcCIsInR1b2hlbmctZnJlZXdheS1tcCIsInR1b2hlbmctZG1wLWFkbWluIiwidHVvaGVuZy1zcGFjZXRpbWUtbXAiXSwiY2xpZW50Um9sZUxpc3QiOiJbe1wiY2xpZW50SWRcIjpcInR1b2hlbmctZmx5cG9ydGFsLWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1idXNpbmVzcy1tcFwiLFwicm9sZUlkXCI6MTE0NX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYnVzaW5lc3MtYWRtaW5cIixcInJvbGVJZFwiOjExNDV9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWFpcnBvcnRTY3JlZW4tYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXNwYWNldGltZS1hZG1pblwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctc3BhY2V0aW1lLW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1oaHotYWRtaW5cIixcInJvbGVJZFwiOjEwMDN9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWhoei1tcFwiLFwicm9sZUlkXCI6MTAwM30se1wiY2xpZW50SWRcIjpcInR1b2hlbmctd2F0ZXJ3YXktYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXdhdGVyd2F5LW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1kbXAtYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWRtcC1tcFwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYWlycG9ydC1hZG1pblwiLFwicm9sZUlkXCI6NjYzfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJwb3J0LW1wXCIsXCJyb2xlSWRcIjo2NjN9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLWFsZXJ0LWFkbWluXCIsXCJyb2xlSWRcIjoyN30se1wiY2xpZW50SWRcIjpcInR1b2hlbmctYWxlcnQtbXBcIixcInJvbGVJZFwiOjI3fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJtb25pdG9yLWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1haXJtb25pdG9yLW1wXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy13ZXB0c3AtYWRtaW5cIixcInJvbGVJZFwiOjI1fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy13ZXB0c3AtbXBcIixcInJvbGVJZFwiOjI1fSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy10ZWxlY29tdW1hbGUtYWRtaW5cIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXRlbGVjb211bWFsZS1tcFwiLFwicm9sZUlkXCI6MX0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctcGlsb3QtbXBcIixcInJvbGVJZFwiOjF9LHtcImNsaWVudElkXCI6XCJ0dW9oZW5nLXBpbG90LWFkbWluXCIsXCJyb2xlSWRcIjoxfSx7XCJjbGllbnRJZFwiOlwidHVvaGVuZy1mcmVld2F5LW1wXCIsXCJyb2xlSWRcIjo1OH0se1wiY2xpZW50SWRcIjpcInR1b2hlbmctZnJlZXdheS1hZG1pblwiLFwicm9sZUlkXCI6NTh9XSIsImV4cCI6MTc1NTkyNjkzNSwiaXNFeHBpcmUiOjEsImlhdCI6MTc1NTg0MDUzNSwidXNlcm5hbWUiOiJjc2FkbWluIn0.CdmV7EymvXhrsCegeAagGffF6BOvFeWIMr-93I2Oa2ZiOB8rcNKOhR9ZsvzTeUFq0S9RXWX4lg8LEO7ymCA0IESumX0KOYAVOF15_xmXHxLiFRaL9L_6KdH0YDp7wA2vCpmiAxNBdUBUW3pfgzXI3mRjOBcH5L26ZLBP0Me0RcPOHGEwtNaFD3JMBhVj6DCiI2koM8oB4TXVEbPMAk19C_mK6tCkTXo_oRMdKHRXmgKOwA4mbggjwgce9-YsAsAkoYl0uO2Z4l6UCWRrmr5_5bCFhokmmoKBKhH84HU6azncJFY3_2StB_bBRPq2y9RWAt4RukRR-kE545N_rriNvg',
|
||||
refresh_token:
|
||||
'HNyAXnoDhR2kgjXUSVwqMldvgzazvaY3tVlCodSiDon7fA7P8Ci3BMsnk31cjeSKwcbsPzUaMdCdBilBhSqQ1dZLk-Md-ERqh5mbbeu7rJDWX4MexO0eKtRBwz-mbnbR',
|
||||
token_type: 'Bearer',
|
||||
|
|
|
|||
|
|
@ -1,7 +1,31 @@
|
|||
<script setup>
|
||||
//飞行前的检查面板
|
||||
import { ref, h, defineAsyncComponent, onMounted, watch, toRaw, defineProps, reactive } from 'vue'
|
||||
import {
|
||||
ref,
|
||||
h,
|
||||
defineAsyncComponent,
|
||||
onMounted,
|
||||
onUnmounted,
|
||||
watch,
|
||||
toRaw,
|
||||
defineProps,
|
||||
reactive,
|
||||
} from 'vue'
|
||||
import { LoadingOutlined } from '@ant-design/icons-vue'
|
||||
import { beforeCheckApi } from '@/apis/common'
|
||||
|
||||
const props = defineProps({
|
||||
row: Object, //当前数据
|
||||
})
|
||||
let isChecked = ref(false)
|
||||
let checkTime = null
|
||||
let checkTimeNum = ref(0) //花费的检测时间
|
||||
let checkTimeNum_timeout = null
|
||||
let processInfoList = ref([]) //进度列表
|
||||
let processTitle = ref('')
|
||||
let processStatus = ref(null)
|
||||
let precent = ref(0)
|
||||
|
||||
const indicator = h(LoadingOutlined, {
|
||||
style: {
|
||||
fontSize: '20px',
|
||||
|
|
@ -9,39 +33,124 @@ const indicator = h(LoadingOutlined, {
|
|||
},
|
||||
spin: true,
|
||||
})
|
||||
//开始计时
|
||||
const startTimeFn = () => {
|
||||
checkTimeNum.value++
|
||||
checkTimeNum_timeout = setTimeout(() => {
|
||||
startTimeFn()
|
||||
}, 1000)
|
||||
}
|
||||
//自检请求
|
||||
const checkFn = async (row) => {
|
||||
if (row) {
|
||||
// console.log(row)
|
||||
// console.log(row.id)
|
||||
let params = {
|
||||
airportId: row.id,
|
||||
taskId: row.task[0].id,
|
||||
// taskId: 4454,
|
||||
}
|
||||
let res = await beforeCheckApi(params)
|
||||
if (res.code == 0) {
|
||||
processInfoList = res.data.steps
|
||||
|
||||
//总共花费的时间
|
||||
checkTimeNum.value = res.data.elapsedTime
|
||||
processTitle.value = res.data.description
|
||||
processStatus.value = res.data.status
|
||||
precent.value = res.data.progressPercentage
|
||||
// console.log(processStatus.value)
|
||||
// console.log(res.data)
|
||||
|
||||
if (processStatus.value != null) {
|
||||
clearTimeout(checkTime)
|
||||
return
|
||||
}
|
||||
checkTime = setTimeout(() => {
|
||||
checkFn(row)
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
watch(
|
||||
() => props.row,
|
||||
(val) => {
|
||||
if (val.task.length > 0 && !isChecked.value) {
|
||||
if (val.task[0].id) {
|
||||
//自检请求
|
||||
checkFn(val)
|
||||
//watch里面不再执行此操作
|
||||
isChecked.value = true
|
||||
}
|
||||
}
|
||||
},
|
||||
{ deep: true },
|
||||
)
|
||||
|
||||
onMounted(() => {})
|
||||
onUnmounted(() => {
|
||||
clearTimeout(checkTime)
|
||||
// clearTimeout(checkTimeNum_timeout)
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<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>
|
||||
<a-spin :indicator="indicator" />
|
||||
<span v-if="processStatus == 'success'" class="success_text">SUCCESS</span>
|
||||
<span v-if="processStatus == 'error'" class="fail_text">FAILED</span>
|
||||
|
||||
<a-spin :indicator="indicator" v-if="processStatus == null" />
|
||||
</div>
|
||||
<a-progress :percent="50" :show-info="false" trailColor="#ffffff" />
|
||||
<a-progress :percent="precent" :show-info="false" trailColor="#ffffff" />
|
||||
|
||||
<div class="flex flex-row items-center justify-between text-sm">
|
||||
<span>
|
||||
<span class="text-[#ffffff]">耗时:</span>
|
||||
<span class="text-[#3BA3FB] ml-2">10s</span>
|
||||
<span class="text-[#3BA3FB] ml-2">{{ checkTimeNum }}</span>
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<span class="text-[#ffffff]">起飞前准备中 预计还剩:</span>
|
||||
<span class="text-[#FFA800] ml-2">50s</span>
|
||||
<span class="text-[#ffffff]">{{ processTitle }}</span>
|
||||
<!-- <span class="text-[#FFA800] ml-2">50s</span> -->
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="w-full lg:h-[211px] xk:h-[211px] x1k:h-[296px] x2k:h-[394px] mt-6 p-3 border border-[#394C73] rounded-bl-md rounded-br-md"
|
||||
v-if="processInfoList.length > 0"
|
||||
class="w-full mt-6 py-3 px-1 border border-[#394C73] rounded-bl-md rounded-br-md"
|
||||
>
|
||||
<div class="w-full flex flex-row items-center">
|
||||
<span class="iconfont icon-biaoqian text-[#ffffff] opacity-50 mr-5"></span>
|
||||
<span class="text-[#FFA800] text-sm mr-5">15:30:20</span>
|
||||
<span class="text-[#ffffff] text-sm mr-5">机场完成自检</span>
|
||||
<span class="text-[#ffffff] text-sm">总共耗时19s</span>
|
||||
<div
|
||||
class="w-full grid grid-cols-10 gap-0"
|
||||
v-for="(item, index) in processInfoList"
|
||||
:key="index"
|
||||
>
|
||||
<span class="iconfont icon-biaoqian text-[#ffffff] opacity-50 col-span-1 leading-5"></span>
|
||||
<span class="text-[#FFA800] text-xs col-span-2">{{ item.time }}</span>
|
||||
<span class="text-[#ffffff] text-xs col-span-5">{{ item.description }}</span>
|
||||
<span class="text-[#ffffff] text-xs col-span-2 text-right" v-if="item.diffSeconds != ''"
|
||||
>耗时{{ item.diffSeconds }}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="less" scoped></style>
|
||||
<style lang="less" scoped>
|
||||
.success_text {
|
||||
font-weight: 500;
|
||||
color: #3ba3fb;
|
||||
background: linear-gradient(0deg, #5d8ad2 0%, #50d890 0%, #70da78 56.0791015625%, #a4e567 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
.fail_text {
|
||||
font-weight: 500;
|
||||
color: #ffffff;
|
||||
background: linear-gradient(0deg, #de4747 0%, #f12626 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -19,8 +19,8 @@ const airPortSocketStore = useAirPortSocketStore()
|
|||
let size1Img = ref(new URL(`@/assets/icons/size1active.png`, import.meta.url).href)
|
||||
let size2Img = ref(new URL(`@/assets/icons/size2.png`, import.meta.url).href)
|
||||
let viewMode = ref(1) //1-1/4方式 2-对半方式
|
||||
let littleViewMode = ref(2) //1-舱外视频 2-舱内视频 3-无人机视频
|
||||
let littleViewModeName = ref('舱内画面')
|
||||
let littleViewMode = ref(1) //1-舱外视频 2-舱内视频 3-无人机视频
|
||||
let littleViewModeName = ref('舱外画面')
|
||||
let planeStateList = ref([
|
||||
{
|
||||
id: 1,
|
||||
|
|
@ -165,9 +165,12 @@ airPortSocketStore.$subscribe((mutate, state) => {
|
|||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-[250px] h-full bg-[#bdbdbd] ml-2.5 px-2 py-1 rounded relative">
|
||||
<div id="#plane_small_video_area" class="w-full h-full absolute left-0 top-0"></div>
|
||||
<div class="w-full flex flex-row justify-between items-center">
|
||||
<div
|
||||
class="w-[250px] aspect-video h-full bg-[#bdbdbd] ml-2.5 px-2 py-1 rounded relative overflow-hidden"
|
||||
>
|
||||
<!-- 视频播放区域 -->
|
||||
<div id="plane_small_video_area" class="w-full h-full absolute left-0 top-0"></div>
|
||||
<div class="px-2 absolute left-0 w-full flex flex-row justify-around items-center">
|
||||
<div class="w-full flex flex-row">
|
||||
<div
|
||||
class="size-7 p-0.5 rounded-sm cursor-pointer"
|
||||
|
|
@ -175,7 +178,7 @@ airPortSocketStore.$subscribe((mutate, state) => {
|
|||
@click="switchPlaneVideo(1)"
|
||||
>
|
||||
<div class="w-full h-1"></div>
|
||||
<div class="bg-[rgba(255,255,255,0.3)] w-full h-5 text-center text-[#fff]">
|
||||
<div class="bg-[rgba(255,255,255,0.4)] w-full h-5 text-center text-[#fff]">
|
||||
<span
|
||||
class="iconfont icon-cangnei_xianxing text-[24px]/6"
|
||||
:class="littleViewMode == 1 ? 'opacity-100' : 'opacity-60'"
|
||||
|
|
@ -188,7 +191,7 @@ airPortSocketStore.$subscribe((mutate, state) => {
|
|||
@click="switchPlaneVideo(2)"
|
||||
>
|
||||
<div class="w-full h-1"></div>
|
||||
<div class="bg-[rgba(255,255,255,0.3)] w-full h-5 text-center text-[#fff]">
|
||||
<div class="bg-[rgba(255,255,255,0.4)] w-full h-5 text-center text-[#fff]">
|
||||
<span
|
||||
class="iconfont icon-shexiangtou text-[18px]/6"
|
||||
:class="littleViewMode == 2 ? 'opacity-100' : 'opacity-60'"
|
||||
|
|
@ -201,7 +204,7 @@ airPortSocketStore.$subscribe((mutate, state) => {
|
|||
@click="switchPlaneVideo(3)"
|
||||
>
|
||||
<div class="w-full h-1"></div>
|
||||
<div class="bg-[rgba(255,255,255,0.3)] w-full h-5 text-center text-[#fff]">
|
||||
<div class="bg-[rgba(255,255,255,0.4)] w-full h-5 text-center text-[#fff]">
|
||||
<span
|
||||
class="iconfont icon-uav-fill text-[18px]/6"
|
||||
:class="littleViewMode == 3 ? 'opacity-100' : 'opacity-60'"
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ const switchScreen = (type) => {
|
|||
watch(
|
||||
() => props.row,
|
||||
(val) => {
|
||||
console.log('来值了呢')
|
||||
// console.log('来值了呢')
|
||||
// console.log(val)
|
||||
// LiveOptions_out.videoUrl = val.external_monitor_url
|
||||
// LiveOptions_in.videoUrl = val.internal_monitor_url
|
||||
|
|
|
|||
|
|
@ -99,24 +99,26 @@ const switchViewFn = (viewPrecent) => {
|
|||
rightPlaneWidth.value = '50%'
|
||||
}
|
||||
}
|
||||
//请求机场数据
|
||||
//请求机场数据和航线数据
|
||||
const queryAirLine_AirPort = async () => {
|
||||
let params = {
|
||||
airportId: 67,
|
||||
airportId: 67, //67 1011
|
||||
}
|
||||
let res = await Promise.allSettled([queryAirportApi(params), queryAirLineApi(params)])
|
||||
// console.log(res)
|
||||
if (res[0].value.code == 0) {
|
||||
//机场
|
||||
currentAirPortInfo.value = res[0].value.data[0]
|
||||
// console.log(currentAirPortInfo.value)
|
||||
//机场当前状态
|
||||
currentAirPortStatus.value = Number(currentAirPortInfo.value.status)
|
||||
console.log('现在的状态是:', currentAirPortStatus.value)
|
||||
|
||||
if (Number(currentAirPortStatus.value) == 2) {
|
||||
//飞行中
|
||||
rightPlaneHeight.value = 'calc(100% - 150px)'
|
||||
rightPlaneBottom.value = '150px'
|
||||
//修改地图的指向
|
||||
map_teleport.value = '#left_flying_map'
|
||||
}
|
||||
|
||||
//直播视频
|
||||
|
|
@ -128,7 +130,6 @@ const queryAirLine_AirPort = async () => {
|
|||
showLiveVideo.value = true
|
||||
|
||||
//socket发送数据
|
||||
// console.log(currentAirPortInfo.value)
|
||||
if (!isUsedSocket.value) {
|
||||
let data = {
|
||||
id: currentAirPortInfo.value.id,
|
||||
|
|
@ -161,7 +162,46 @@ const queryAirLine_AirPort = async () => {
|
|||
|
||||
//6秒查询一次,主要是获取机场的状态,不同的状态展示的界面也不一样
|
||||
setTimeout(() => {
|
||||
queryAirLine_AirPort()
|
||||
queryAirPort()
|
||||
}, 6000)
|
||||
}
|
||||
//只请求机场数据
|
||||
const queryAirPort = async () => {
|
||||
let params = {
|
||||
airportId: 67,
|
||||
}
|
||||
|
||||
let res = await queryAirportApi(params)
|
||||
if (res.code == 0) {
|
||||
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
|
||||
}
|
||||
//轮询
|
||||
setTimeout(() => {
|
||||
queryAirPort()
|
||||
}, 6000)
|
||||
}
|
||||
|
||||
|
|
@ -260,7 +300,7 @@ onMounted(() => {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="flex flex-col w-full h-full min-w-[1366px] bg-[#0B2038]">
|
||||
<div class="flex flex-col w-full h-full min-w-[1366px] bg-[#0B2038] overflow-hidden">
|
||||
<!-- 顶部 -->
|
||||
<div
|
||||
class="rem-header w-full px-3.5 flex flex-row items-center justify-between lg:h-[36px] xk:h-[36px] x1k:h-[50px] x2k:h-[66px]"
|
||||
|
|
@ -282,7 +322,7 @@ onMounted(() => {
|
|||
<!-- 底部 -->
|
||||
<div class="rem-bottom-area w-full flex flex-1 flex-row relative">
|
||||
<!-- 左侧面板 -->
|
||||
<div class="leftPlane h-full bg-[#0B2038] rounded-r-lg absolute left-0 z-[2]">
|
||||
<div class="leftPlane h-full bg-[#0A1A2C] rounded-r-lg absolute left-0 z-[2]">
|
||||
<!-- 航线选择面板-先不做 -->
|
||||
<!-- <leftPlaneAirLine @modifPlaneWidth="modifPlaneWidthFn" /> -->
|
||||
|
||||
|
|
@ -294,13 +334,16 @@ onMounted(() => {
|
|||
/>
|
||||
|
||||
<!-- 自检面板 准备中-->
|
||||
<leftPlaneCheck v-if="currentAirPortStatus == 3" />
|
||||
<leftPlaneCheck v-if="currentAirPortStatus == 3" :row="currentAirPortInfo" />
|
||||
|
||||
<!-- 飞行中 地图 -->
|
||||
<div id="left_flying_map" class="leftPlane-area w-full"></div>
|
||||
</div>
|
||||
<!-- 右侧面板 -->
|
||||
<div class="rightPlane absolute right-0 h-full bg-[#ffffff] z-1">
|
||||
<rightSwitchVideo class="absolute right-3 top-3" />
|
||||
|
||||
<div class="fullScreen w-3/4 absolute right-0">
|
||||
<div class="fullScreen w-full absolute right-0">
|
||||
<!-- <div class="w-full h-10 absolute right-0 bottom-[20px]">
|
||||
<planeControl class="absolute left-0 right-0 top-0 bottom-0 m-auto" />
|
||||
</div> -->
|
||||
|
|
@ -310,6 +353,7 @@ onMounted(() => {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 底部面板 -->
|
||||
<div
|
||||
v-if="currentAirPortStatus == 2"
|
||||
class="bottomPlane w-full lg:h-[150px] xk:h-[150px] x1k:h-[212px] x2k:h-[282px] bg-[#0B2038] absolute bottom-0 left-0 z-[3]"
|
||||
|
|
@ -320,7 +364,11 @@ onMounted(() => {
|
|||
</div>
|
||||
|
||||
<!-- 直播播放器 -->
|
||||
<teleport :to="outVideo_teleport" v-if="showLiveVideo && currentAirPortStatus == 1">
|
||||
<!-- 舱外视频 -->
|
||||
<teleport
|
||||
:to="outVideo_teleport"
|
||||
v-if="showLiveVideo && (currentAirPortStatus == 1 || currentAirPortStatus == 2)"
|
||||
>
|
||||
<LivePlayer
|
||||
class="h-full absolute left-0 right-0 top-0 right-0 m-auto"
|
||||
v-show="showLiveVideo && LiveOptions_out.videoUrl?.includes('.flv')"
|
||||
|
|
@ -328,6 +376,7 @@ onMounted(() => {
|
|||
:options="LiveOptions_out"
|
||||
/>
|
||||
</teleport>
|
||||
<!-- 舱内视频 -->
|
||||
<teleport :to="inVideo_teleport" v-if="showLiveVideo && currentAirPortStatus == 1">
|
||||
<LivePlayer
|
||||
class="h-full absolute left-0 right-0 top-0 right-0 m-auto"
|
||||
|
|
@ -337,14 +386,14 @@ onMounted(() => {
|
|||
/>
|
||||
</teleport>
|
||||
<!-- 无人机视角 -->
|
||||
<teleport :to="planeVideo_teleport" v-if="showLiveVideo && currentAirPortStatus == 2">
|
||||
<!-- <teleport :to="planeVideo_teleport" v-if="showLiveVideo && currentAirPortStatus == 2">
|
||||
<LivePlayer
|
||||
class="h-full absolute left-0 right-0 top-0 right-0 m-auto"
|
||||
v-show="showLiveVideo && LiveOptions_plane.videoUrl?.includes('.flv')"
|
||||
ref="planelivePlayerRef"
|
||||
:options="LiveOptions_in"
|
||||
/>
|
||||
</teleport>
|
||||
</teleport> -->
|
||||
<!-- map -->
|
||||
<teleport :to="map_teleport">
|
||||
<iframe
|
||||
|
|
@ -379,6 +428,9 @@ onMounted(() => {
|
|||
--leftPlaneWidth: v-bind(leftPlaneWidth);
|
||||
width: var(--leftPlaneWidth);
|
||||
}
|
||||
.leftPlane-area {
|
||||
height: calc(100% - 150px);
|
||||
}
|
||||
.rightPlane {
|
||||
--rightPlaneWidth: v-bind(rightPlaneWidth);
|
||||
width: var(--rightPlaneWidth);
|
||||
|
|
|
|||
Loading…
Reference in New Issue