From 82c5bf39cb8459373cc6f5e31c99a1fd063ed464 Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Tue, 01 Apr 2025 19:38:39 +0800
Subject: [PATCH] 帮助中心
---
package-lock.json | 10 +-
yarn.lock | 12 +-
package.json | 2
src/page/index/top/top-qna.vue | 130 ++++++++++++++++++++++++++++++++
src/page/index/top/index.vue | 75 +++++++++++++++---
5 files changed, 203 insertions(+), 26 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 22cc3d9..15521d3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,7 +16,7 @@
"axios": "^0.21.1",
"crypto-js": "^4.1.1",
"dayjs": "^1.11.13",
- "element-plus": "^2.7.3",
+ "element-plus": "^2.9.7",
"js-base64": "^3.7.4",
"js-cookie": "^3.0.0",
"js-md5": "^0.7.3",
@@ -1592,9 +1592,9 @@
}
},
"node_modules/element-plus": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.7.3.tgz",
- "integrity": "sha512-OaqY1kQ2xzNyRFyge3fzM7jqMwux+464RBEqd+ybRV9xPiGxtgnj/sVK4iEbnKnzQIa9XK03DOIFzoToUhu1DA==",
+ "version": "2.9.7",
+ "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.9.7.tgz",
+ "integrity": "sha512-6vjZh5SXBncLhUwJGTVKS5oDljfgGMh6J4zVTeAZK3YdMUN76FgpvHkwwFXocpJpMbii6rDYU3sgie64FyPerQ==",
"dependencies": {
"@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.3.1",
@@ -1604,7 +1604,7 @@
"@types/lodash-es": "^4.17.6",
"@vueuse/core": "^9.1.0",
"async-validator": "^4.2.5",
- "dayjs": "^1.11.3",
+ "dayjs": "^1.11.13",
"escape-html": "^1.0.3",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
diff --git a/package.json b/package.json
index 3ae8478..ac506b3 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"axios": "^0.21.1",
"crypto-js": "^4.1.1",
"dayjs": "^1.11.13",
- "element-plus": "^2.7.3",
+ "element-plus": "^2.9.7",
"js-base64": "^3.7.4",
"js-cookie": "^3.0.0",
"js-md5": "^0.7.3",
diff --git a/src/page/index/top/index.vue b/src/page/index/top/index.vue
index 228618a..5f37bac 100644
--- a/src/page/index/top/index.vue
+++ b/src/page/index/top/index.vue
@@ -11,24 +11,15 @@
<top-search class="top-bar__item" v-if="setting.search"></top-search>
</div>
<div class="top-bar__right">
- <!-- <div v-if="setting.color" class="top-bar__item">
- <top-color></top-color>
- </div>
- <div v-if="setting.theme" class="top-bar__item">
- <top-theme></top-theme>
- </div> -->
<div v-if="setting.lock" class="top-bar__item">
<top-lock></top-lock>
</div>
- <!-- <div class="top-bar__item">
- <top-lang></top-lang>
- </div> -->
+ <div class="top-bar__item">
+ <top-qna></top-qna>
+ </div>
<div class="top-bar__item" v-if="setting.fullscreen">
<top-full></top-full>
</div>
- <!-- <div class="top-bar__item" v-if="setting.debug">
- <top-logs></top-logs>
- </div> -->
<div class="top-user">
<img class="top-bar__img" :src="userInfo.avatar" />
<el-dropdown>
@@ -56,6 +47,7 @@
</div>
</div>
</template>
+
<script>
import { mapGetters } from 'vuex';
import topLock from './top-lock.vue';
@@ -66,6 +58,7 @@
import topColor from './top-color.vue';
import topLang from './top-lang.vue';
import topFull from './top-full.vue';
+import topQna from './top-qna.vue';
import topSetting from '../setting.vue';
export default {
@@ -78,6 +71,7 @@
topColor,
topLang,
topFull,
+ topQna,
topSetting,
},
name: 'top',
@@ -85,7 +79,7 @@
return {};
},
filters: {},
- created() { },
+ created() {},
computed: {
...mapGetters([
'setting',
@@ -118,4 +112,57 @@
};
</script>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.avue-top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0 15px;
+ height: 50px;
+ background-color: #fff;
+ box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
+}
+
+.top-bar__left {
+ flex: 0 0 auto;
+}
+
+.top-bar__title {
+ flex: 1;
+ display: flex;
+ align-items: center;
+}
+
+.top-bar__right {
+ flex: 0 0 auto;
+ display: flex !important;
+ align-items: center;
+ height: 100%;
+}
+
+.top-bar__item {
+ margin-right: 15px;
+ display: inline-block !important;
+}
+
+.top-user {
+ display: flex;
+ align-items: center;
+}
+
+.top-bar__img {
+ width: 32px;
+ height: 32px;
+ border-radius: 50%;
+ margin-right: 10px;
+}
+
+.el-dropdown-link {
+ cursor: pointer;
+ color: #606266;
+}
+
+.el-dropdown-link:hover {
+ color: #409EFF;
+}
+</style>
\ No newline at end of file
diff --git a/src/page/index/top/top-qna.vue b/src/page/index/top/top-qna.vue
new file mode 100644
index 0000000..0f0968d
--- /dev/null
+++ b/src/page/index/top/top-qna.vue
@@ -0,0 +1,130 @@
+<template>
+ <div class="top-qna" @mouseenter="disableTooltip" @mouseleave="enableTooltip">
+ <el-tooltip :disabled="tooltipDisabled" content="帮助中心" placement="bottom">
+ <el-icon @click="showHelp" class="help-icon">
+ <QuestionFilled />
+ </el-icon>
+ </el-tooltip>
+ <el-dialog v-model="dialogVisible" title="帮助中心" width="30%" @close="closeDialog">
+ <div class="dialog-content">
+ <div class="qa-item">
+ <span class="qa-title">Q1:智飞机场 2 支持哪些无人机?</span>
+ <span class="qa-text">
+ A1:智飞机场 2 仅支持 DJI Matrice 3D 系列无人机。
+ </span>
+ </div>
+ <div class="qa-item">
+ <span class="qa-title">Q2:智飞机场 2 如何应对意外断电?</span>
+ <span class="qa-text">
+ A2:若发生意外断电,机场仍可借助内置蓄电池独立工作超 5 小时,为飞行器预留充足的返航降落时间。
+ 断电后,机场不支持飞行器充电、空调、舱盖加热、风速计加热等功能,请及时排查故障。
+ </span>
+ </div>
+ <div class="qa-item">
+ <span class="qa-title">Q3:智飞无人机是否支持夜间作业?</span>
+ <span class="qa-text">
+ A3:是的,大疆无人机支持夜间作业,部分型号配备了红外摄像头和夜视功能,能够在低光环境下进行高效作业。
+ </span>
+ </div>
+ </div>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="closeDialog">关闭</el-button>
+ </span>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'top-qna',
+ data() {
+ return {
+ dialogVisible: false, // 确保初始值为 false
+ tooltipDisabled: false, // 控制 tooltip 是否显示
+ };
+ },
+ methods: {
+ showHelp() {
+ this.dialogVisible = true;
+ },
+ closeDialog() {
+ this.dialogVisible = false;
+ },
+ disableTooltip() {
+ this.tooltipDisabled = true; // 禁用 tooltip
+ },
+ enableTooltip() {
+ this.tooltipDisabled = false; // 启用 tooltip
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.top-qna {
+ display: inline-block !important;
+ padding: 5px;
+
+ .help-icon {
+ font-size: 20px !important;
+ cursor: pointer;
+ color: #FFFFFF; /* 白色 */
+ display: inline-block !important;
+ line-height: 1 !important;
+ }
+}
+
+/* 优化弹出框样式 */
+:deep(.el-dialog) {
+ border-radius: 8px; /* 圆角边框 */
+ overflow: visible; /* 防止内容溢出 */
+ .el-dialog__header {
+ padding: 15px 20px;
+ border-bottom: 1px solid #e8e8e8; /* 标题下边框 */
+ .el-dialog__title {
+ font-size: 16px;
+ font-weight: bold;
+ color: #333;
+ }
+ }
+ .el-dialog__body {
+ padding: 20px;
+ max-height: none; /* 取消高度限制 */
+ overflow: visible; /* 取消滚动条 */
+ word-wrap: break-word; /* 自动换行 */
+ word-break: break-word; /* 防止长单词溢出 */
+ white-space: normal; /* 确保文字自动换行 */
+ }
+ .el-dialog__footer {
+ padding: 10px 20px;
+ border-top: 1px solid #e8e8e8; /* 底部上边框 */
+ text-align: right;
+ }
+}
+
+/* 优化内容样式 */
+.dialog-content {
+ .qa-item {
+ margin-bottom: 15px;
+ padding: 10px;
+ border: 1px solid #e8e8e8; /* 边框 */
+ border-radius: 4px; /* 圆角 */
+ background-color: #f9f9f9; /* 背景色 */
+ .qa-title {
+ font-size: 14px;
+ font-weight: bold;
+ color: #333;
+ display: block; /* 确保换行 */
+ margin-bottom: 5px;
+ }
+ .qa-text {
+ font-size: 14px;
+ color: #666;
+ line-height: 1.6; /* 行间距 */
+ display: block; /* 确保换行 */
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 03e512c..ad2140e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -641,7 +641,7 @@
"es5-ext" "^0.10.50"
"type" "^1.0.1"
-"dayjs@^1.10.4", "dayjs@^1.11.13", "dayjs@^1.11.3":
+"dayjs@^1.10.4", "dayjs@^1.11.13":
"integrity" "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
"resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz"
"version" "1.11.13"
@@ -701,10 +701,10 @@
"resolved" "https://registry.npmmirror.com/domify/-/domify-1.4.2.tgz"
"version" "1.4.2"
-"element-plus@^2.7.3", "element-plus@>=2.2.0":
- "integrity" "sha512-OaqY1kQ2xzNyRFyge3fzM7jqMwux+464RBEqd+ybRV9xPiGxtgnj/sVK4iEbnKnzQIa9XK03DOIFzoToUhu1DA=="
- "resolved" "https://registry.npmjs.org/element-plus/-/element-plus-2.7.3.tgz"
- "version" "2.7.3"
+"element-plus@^2.9.7", "element-plus@>=2.2.0":
+ "integrity" "sha512-6vjZh5SXBncLhUwJGTVKS5oDljfgGMh6J4zVTeAZK3YdMUN76FgpvHkwwFXocpJpMbii6rDYU3sgie64FyPerQ=="
+ "resolved" "https://registry.npmjs.org/element-plus/-/element-plus-2.9.7.tgz"
+ "version" "2.9.7"
dependencies:
"@ctrl/tinycolor" "^3.4.1"
"@element-plus/icons-vue" "^2.3.1"
@@ -714,7 +714,7 @@
"@types/lodash-es" "^4.17.6"
"@vueuse/core" "^9.1.0"
"async-validator" "^4.2.5"
- "dayjs" "^1.11.3"
+ "dayjs" "^1.11.13"
"escape-html" "^1.0.3"
"lodash" "^4.17.21"
"lodash-es" "^4.17.21"
--
Gitblit v1.9.3