From b26933c801fbf69df56fd81df3e127e39a14b31d Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期一, 05 二月 2024 19:18:18 +0800
Subject: [PATCH] 存token的问题
---
src/views/dashboard/components/DashboardTitle.vue | 219 +++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 197 insertions(+), 22 deletions(-)
diff --git a/src/views/dashboard/components/DashboardTitle.vue b/src/views/dashboard/components/DashboardTitle.vue
index 6d2ba02..863d4eb 100644
--- a/src/views/dashboard/components/DashboardTitle.vue
+++ b/src/views/dashboard/components/DashboardTitle.vue
@@ -1,63 +1,238 @@
<template>
<div class="dashboard-title">
- <div class="title-text">鏅鸿兘宸ヤ綔鍙� 鈥� {{ deviceStore?.devices?.currentDeviceID ?? '' }}</div>
+ <div class="title-text-box">
+ <div class="title-text">
+ <span> 鏅鸿兘宸ヤ綔鍙� 鈥�</span>
+ <el-popover placement="bottom" :width="180" trigger="click" :content="currentDeviceName">
+ <template #reference>
+ <el-text truncated class="device-name">{{ currentDeviceName }}</el-text>
+ </template>
+ </el-popover>
+ <el-icon class="text-icon" color="#0db7f5" @click="openDevicesModal">
+ <IconSlider></IconSlider>
+ </el-icon>
+ </div>
+ </div>
<div class="title-status">
- <div class="connection-info" @click="openSelectDeviceModal">
- <el-icon size="30" color="red">
+ <div class="connection-info" @click="openProblemsModal">
+ <el-icon class="size_26" :color="problemsIconStatus ? '#00ff00' : '#ff0000'">
<AlertLightIcon></AlertLightIcon>
</el-icon>
</div>
<div class="cloud-connection-status">
- <el-icon size="45" color="#ff0000">
- <IconCloudOff></IconCloudOff>
- </el-icon>
-
- <el-icon size="45" color="#00ff00">
+ <el-icon v-if="cloudConnectionIconStatus" class="size_36" color="#00ff00">
<IconCloudDone></IconCloudDone>
</el-icon>
+
+ <el-icon v-else class="size_36" color="#ff0000">
+ <IconCloudOff></IconCloudOff>
+ </el-icon>
+ </div>
+
+ <div class="reporting-record">
+ <el-icon
+ class="size_26"
+ :color="taskStore.activeTask ? '#0db7f5' : '#c0c0c0'"
+ :style="{ 'margin-right': '10px', cursor: taskStore.activeTask ? 'pointer' : 'not-allowed' }"
+ @click="openReportingRecord"
+ >
+ <IconRecords></IconRecords>
+ </el-icon>
+ </div>
+
+ <div class="params-config" @click="openConfigModal">
+ <el-icon class="size_28"><Setting /></el-icon>
</div>
</div>
</div>
-
- <TroubleTrackerModal v-model="showModal"></TroubleTrackerModal>
+ <DeviceCheckList v-model="showDevicesModal" @should-reload="emits('shouldReload')"></DeviceCheckList>
+ <TroubleTrackerModal v-model="showProblemsModal" :problems="problemList"></TroubleTrackerModal>
+ <DeliverParamsConfigModal v-model="showConfigModal"></DeliverParamsConfigModal>
+ <ReportingRecordModal v-model="showReportingRecordModal"></ReportingRecordModal>
</template>
<script setup lang="ts">
import AlertLightIcon from '@/components/icons/AlertLightIcon.vue'
-import { ref } from 'vue'
+import IconRecords from '~icons/vaadin/records'
+import { computed, onUnmounted, ref } from 'vue'
import { useDevicesStore } from '@/stores/devices'
import TroubleTrackerModal from '@/views/dashboard/components/TroubleTrackerModal.vue'
+import DeviceCheckList from '@/views/dashboard/components/DeviceCheckList.vue'
import IconCloudDone from '~icons/material-symbols-light/cloud-done-outline'
import IconCloudOff from '~icons/material-symbols-light/cloud-off-outline'
+import IconSlider from '~icons/bx/slider'
+import { useRequest } from 'vue-hooks-plus'
+// import { apiGetProblemList } from '@/api'
+import { PROBLEMS_POLLING_DURATION } from '@/common/constants'
+import { Setting } from '@element-plus/icons-vue'
+import DeliverParamsConfigModal from '@/views/dashboard/components/DeliverParamsConfigModal.vue'
+import ReportingRecordModal from '@/views/dashboard/components/ReportingRecordModal.vue'
+import { useTasksStore } from '@/stores/tasks'
-const showModal = ref(false)
+const emits = defineEmits<{
+ shouldReload: []
+}>()
-function openSelectDeviceModal() {
- showModal.value = true
+// 鏄惁鏄剧ず闂璇婃柇modal
+const showProblemsModal = ref(false)
+/**
+ * 鎵撳紑闂璇婃柇modal
+ */
+function openProblemsModal() {
+ showProblemsModal.value = true
}
+// 鏄惁鏄剧ず璁惧鍒囨崲modal
+const showDevicesModal = ref(false)
+/**
+ * 鎵撳紑璁惧鍒囨崲modal
+ */
+function openDevicesModal() {
+ showDevicesModal.value = true
+}
+
+// 鑾峰彇褰撳墠璁惧鍚�
const deviceStore = useDevicesStore()
+const currentDeviceName = computed(() => {
+ return (
+ deviceStore?.deviceInfo?.deviceList?.find((ele) => ele?.deviceID === deviceStore?.deviceInfo?.currentDeviceID)
+ ?.deviceName ?? ''
+ )
+})
+
+// 闂璇婃柇鍒楄〃
+const problemList = computed(() => {
+ // return problemsRes?.value?.data ?? []
+ return []
+})
+// 闂璇婃柇icon鐘舵��, 闂鍒楄〃涓湁涓�鏉″紓甯稿嵆涓虹孩鐏� 鍚﹀垯鏄豢鐏� true缁跨伅
+const problemsIconStatus = computed(() => {
+ if (!problemList.value || !problemList.value?.length) {
+ // 榛樿缁跨伅, 鎷垮埌涓�娆℃暟鎹悗鎵嶄互鎺ュ彛涓哄噯
+ return true
+ }
+ // return !problemList.value.some((ele) => !ele.CheckResult)
+ return false
+})
+// 浜戠杩炴帴icon鐘舵��, 闂鍒楄〃涓湁涓�鏉′唬琛ㄤ簯绔摼鎺ョ殑, 寮傚父鍗充负绾㈣壊浜慽con 鍚﹀垯鏄豢鑹� true缁夸簯
+const cloudConnectionIconStatus = computed(() => {
+ if (!problemList.value || !problemList.value?.length) {
+ // 榛樿缁跨伅, 鎷垮埌涓�娆℃暟鎹悗鎵嶄互鎺ュ彛涓哄噯
+ return true
+ }
+ // 娌℃暟鎹氨褰撴槸閾炬帴姝e父
+ // const cloudConnection = problemList.value.find((ele) => ele.ItemCode === 'cloud')
+ // return cloudConnection ? cloudConnection?.CheckResult : true
+ return false
+})
+
+// 閰嶇疆涓嬪彂鍙傛暟寮圭獥
+const showConfigModal = ref(false)
+function openConfigModal() {
+ showConfigModal.value = true
+}
+function closeConfigModal() {
+ showConfigModal.value = false
+}
+/**
+ * 杞闂璇婃柇
+ */
+// const {
+// data: problemsRes,
+// run: startProblemsPolling,
+// cancel: cancelProblemsPolling
+// } = useRequest(apiGetProblemList, {
+// manual: true,
+// pollingInterval: PROBLEMS_POLLING_DURATION,
+// pollingWhenHidden: false
+// })
+// startProblemsPolling()
+// onUnmounted(() => {
+// cancelProblemsPolling()
+// })
+
+const taskStore = useTasksStore()
+
+// 鏄惁鏄剧ず鎶ュ伐璁板綍
+const showReportingRecordModal = ref(false)
+function openReportingRecord() {
+ if (!taskStore.activeTask) {
+ ElMessage.error('璇峰厛閫夋嫨浠诲姟')
+ return
+ }
+ showReportingRecordModal.value = true
+}
</script>
<style scoped lang="scss">
.dashboard-title {
position: relative;
+ height: 100%;
}
-.title-text {
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 40px;
- font-weight: 700;
+.el-icon.size_28 {
+ font-size: 28px;
}
+.size_26 {
+ font-size: 26px;
+}
+.size_36 {
+ font-size: 36px;
+}
+.title-text-box {
+ width: calc(100% - 150px);
+ height: 100%;
+
+ .title-text {
+ // display: flex;
+ width: 450px;
+ height: 100%;
+ margin: 0 auto;
+ margin-left: 24%;
+ align-items: center;
+ line-height: 68px;
+ // justify-content: center;
+ font-size: 34px;
+ font-weight: 700;
+ span {
+ float: left;
+ }
+ .text-icon {
+ font-size: 32px;
+ margin-left: 4px;
+ cursor: pointer;
+ }
+ }
+}
+
.title-status {
+ height: 100%;
display: flex;
+ vertical-align: middle;
align-items: center;
position: absolute;
- top: 16px;
- right: 40px;
+ top: 0px;
+ right: 6px;
+ div {
+ vertical-align: middle;
+ display: inline-block;
+ margin-top: 7px;
+ }
+ .cloud-connection-status {
+ // margin-top: 5px;
+ }
}
.connection-info {
margin-right: 10px;
cursor: pointer;
}
+.device-name {
+ max-width: 180px;
+ font-size: 40px;
+ color: #fff;
+}
+.cloud-connection-status {
+ margin-right: 10px;
+}
+.params-config {
+ cursor: pointer;
+}
</style>
--
Gitblit v1.8.0