+
+
{{ currentRoute.meta["title"] }}
-
diff --git a/src/styles/layout.scss b/src/styles/layout.scss
index 04ede87..1d11793 100644
--- a/src/styles/layout.scss
+++ b/src/styles/layout.scss
@@ -21,24 +21,30 @@ $danger-color: #F56C6C;
}
.breadcrumb {
- color: $primary-color;
- font-size: 36px;
- height: 50px;
+ margin-bottom: 15px;
- svg {
- vertical-align: top;
- }
+ .breadcrumb-left {
+ color: $primary-color;
+ font-size: 36px;
+ height: 30px;
- span {
- vertical-align: top;
- color: black;
- font-size: 18px;
- font-weight: bold;
- transform: translateY(5px);
- display: inline-block;
+ svg {
+ vertical-align: top;
+ }
+ span {
+ vertical-align: top;
+ color: black;
+ font-size: 18px;
+ font-weight: bold;
+ //transform: translateY(5px);
+ display: inline-block;
+
+ }
}
}
+
+
}
.left-menu-container {
@@ -57,6 +63,7 @@ $danger-color: #F56C6C;
font-size: 14px;
cursor: pointer;
}
+
.version:hover {
animation: heartBeat 1s;
}
@@ -91,7 +98,6 @@ $danger-color: #F56C6C;
}
-
}
}
@@ -111,6 +117,10 @@ $danger-color: #F56C6C;
color: $primary-color;
}
+.bg-primary {
+ background: $primary-color;
+}
+
.danger-text {
color: $danger-color !important;
}
diff --git a/src/views/config/index.vue b/src/views/config/index.vue
index 7218214..b3bae43 100644
--- a/src/views/config/index.vue
+++ b/src/views/config/index.vue
@@ -6,6 +6,7 @@ import Breadcrumb from "@/layout/compoenets/Breadcrumb.vue";
import { useDebounceFn } from "@vueuse/core";
import { clone } from "@/utils/clone";
import { Base64 } from "js-base64";
+import IconifyIconOffline from "@/components/IconifyIcon/src/iconifyIconOffline";
defineComponent({
name: "Config"
@@ -116,9 +117,12 @@ const protocol = ref("frp://");
const visibles = reactive({
copyServerConfig: false,
- pasteServerConfig: false
+ pasteServerConfig: false,
+ exportConfig: false
});
+const exportConfigType = ref("toml");
+
const handleSubmit = useDebounceFn(() => {
if (!formRef.value) return;
formRef.value.validate(valid => {
@@ -195,6 +199,14 @@ onMounted(() => {
checkAndResetVersion();
}
});
+ ipcRenderer.on("Config.exportConfig.hook", (event, args) => {
+ const { err, data } = args;
+ console.log(err, data, "export");
+ if (!err) {
+ const { configPath } = data;
+ ElMessageBox.alert(`配置路径:${configPath}`, `🎉 导出成功`);
+ }
+ });
});
const handleSelectFile = (type: number, ext: string[]) => {
@@ -286,15 +298,34 @@ const handlePasteServerConfigBase64 = useDebounceFn(() => {
visibles.pasteServerConfig = false;
}, 300);
+const handleShowExportDialog = () => {
+ visibles.exportConfig = true;
+};
+
+const handleExportConfig = useDebounceFn(() => {
+ ipcRenderer.send("config.exportConfig", exportConfigType.value);
+ visibles.exportConfig = false;
+}, 300);
+
+const handleImportConfig = () => {};
+
onUnmounted(() => {
ipcRenderer.removeAllListeners("Config.getConfig.hook");
ipcRenderer.removeAllListeners("Config.saveConfig.hook");
ipcRenderer.removeAllListeners("Config.versions.hook");
+ ipcRenderer.removeAllListeners("Config.exportConfig.hook");
});
-
+
+
+
+
+
+
+
+
{
class="ml-2"
type="primary"
@click="handleSelectFile(1, ['crt'])"
- >选择
+ >选择
+
@@ -682,8 +713,8 @@ onUnmounted(() => {
class="ml-2"
type="primary"
@click="handleSelectFile(2, ['key'])"
- >选择
+ >选择
+
@@ -721,8 +752,8 @@ onUnmounted(() => {
class="ml-2"
type="primary"
@click="handleSelectFile(3, ['crt'])"
- >选择
+ >选择
+
@@ -896,7 +927,7 @@ onUnmounted(() => {
-
+
{
:rows="8"
>
-
+
{
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/download/index.vue b/src/views/download/index.vue
index 7d9af59..a655f3b 100644
--- a/src/views/download/index.vue
+++ b/src/views/download/index.vue
@@ -117,7 +117,7 @@ onUnmounted(() => {