🏗️ refactor config view to improve state management and enhance visibility handling in index.vue
This commit is contained in:
parent
dfbd9c93bd
commit
e6992f4e4c
@ -1,5 +1,12 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineComponent, onMounted, onUnmounted, reactive, ref } from "vue";
|
import {
|
||||||
|
defineComponent,
|
||||||
|
onMounted,
|
||||||
|
onUnmounted,
|
||||||
|
reactive,
|
||||||
|
ref,
|
||||||
|
watch
|
||||||
|
} from "vue";
|
||||||
import { ElMessage, ElMessageBox, FormInstance, FormRules } from "element-plus";
|
import { ElMessage, ElMessageBox, FormInstance, FormRules } from "element-plus";
|
||||||
import Breadcrumb from "@/layout/compoenets/Breadcrumb.vue";
|
import Breadcrumb from "@/layout/compoenets/Breadcrumb.vue";
|
||||||
import { useDebounceFn } from "@vueuse/core";
|
import { useDebounceFn } from "@vueuse/core";
|
||||||
@ -80,11 +87,8 @@ const defaultFormData: OpenSourceFrpcDesktopServer = {
|
|||||||
},
|
},
|
||||||
user: ""
|
user: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
const formData = ref<OpenSourceFrpcDesktopServer>(defaultFormData);
|
const formData = ref<OpenSourceFrpcDesktopServer>(defaultFormData);
|
||||||
|
|
||||||
const loading = ref(1);
|
const loading = ref(1);
|
||||||
|
|
||||||
const rules = reactive<FormRules>({
|
const rules = reactive<FormRules>({
|
||||||
frpcVersion: [{ required: true, message: "请选择版本", trigger: "blur" }],
|
frpcVersion: [{ required: true, message: "请选择版本", trigger: "blur" }],
|
||||||
serverAddr: [
|
serverAddr: [
|
||||||
@ -180,23 +184,27 @@ const rules = reactive<FormRules>({
|
|||||||
{ required: true, message: "web界面端口不能为空", trigger: "change" }
|
{ required: true, message: "web界面端口不能为空", trigger: "change" }
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
const versions = ref<Array<FrpcVersion>>([]);
|
|
||||||
const copyServerConfigBase64 = ref();
|
const copyServerConfigBase64 = ref();
|
||||||
const pasteServerConfigBase64 = ref();
|
const pasteServerConfigBase64 = ref();
|
||||||
|
|
||||||
const formRef = ref<FormInstance>();
|
const formRef = ref<FormInstance>();
|
||||||
const protocol = ref("frp://");
|
const protocol = ref("frp://");
|
||||||
const currSelectLocalFileType = ref();
|
const currSelectLocalFileType = ref();
|
||||||
|
const frpcDesktopStore = useFrpcDesktopStore();
|
||||||
|
|
||||||
const visibles = reactive({
|
watch(
|
||||||
|
() => frpcDesktopStore.downloadedVersions,
|
||||||
|
(newValue, oldValue) => {
|
||||||
|
checkAndResetVersion();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const visible = reactive({
|
||||||
copyServerConfig: false,
|
copyServerConfig: false,
|
||||||
pasteServerConfig: false,
|
pasteServerConfig: false,
|
||||||
exportConfig: false
|
exportConfig: false
|
||||||
});
|
});
|
||||||
|
|
||||||
const exportConfigType = ref("toml");
|
// const exportConfigType = ref("toml");
|
||||||
const frpcDesktopStore = useFrpcDesktopStore();
|
|
||||||
|
|
||||||
const handleSubmit = useDebounceFn(() => {
|
const handleSubmit = useDebounceFn(() => {
|
||||||
if (!formRef.value) return;
|
if (!formRef.value) return;
|
||||||
@ -228,7 +236,9 @@ const checkAndResetVersion = () => {
|
|||||||
const currentVersion = formData.value.frpcVersion;
|
const currentVersion = formData.value.frpcVersion;
|
||||||
if (
|
if (
|
||||||
currentVersion &&
|
currentVersion &&
|
||||||
!versions.value.some(item => item.githubReleaseId === currentVersion)
|
!frpcDesktopStore.downloadedVersions.some(
|
||||||
|
item => item.githubReleaseId === currentVersion
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
formData.value.frpcVersion = null;
|
formData.value.frpcVersion = null;
|
||||||
}
|
}
|
||||||
@ -255,10 +265,10 @@ onMounted(() => {
|
|||||||
loading.value--;
|
loading.value--;
|
||||||
});
|
});
|
||||||
|
|
||||||
on(ipcRouters.VERSION.getDownloadedVersions, data => {
|
// on(ipcRouters.VERSION.getDownloadedVersions, data => {
|
||||||
versions.value = data;
|
// // versions.value = data;
|
||||||
checkAndResetVersion();
|
// checkAndResetVersion();
|
||||||
});
|
// });
|
||||||
|
|
||||||
on(ipcRouters.SERVER.saveConfig, data => {
|
on(ipcRouters.SERVER.saveConfig, data => {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
@ -439,14 +449,14 @@ const handleCopyServerConfig2Base64 = useDebounceFn(() => {
|
|||||||
shareConfig.transport.tls.trustedCaFile = "";
|
shareConfig.transport.tls.trustedCaFile = "";
|
||||||
const base64str = Base64.encode(JSON.stringify(shareConfig));
|
const base64str = Base64.encode(JSON.stringify(shareConfig));
|
||||||
copyServerConfigBase64.value = protocol.value + base64str;
|
copyServerConfigBase64.value = protocol.value + base64str;
|
||||||
visibles.copyServerConfig = true;
|
visible.copyServerConfig = true;
|
||||||
}, 300);
|
}, 300);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入配置
|
* 导入配置
|
||||||
*/
|
*/
|
||||||
const handlePasteServerConfig4Base64 = useDebounceFn(() => {
|
const handlePasteServerConfig4Base64 = useDebounceFn(() => {
|
||||||
visibles.pasteServerConfig = true;
|
visible.pasteServerConfig = true;
|
||||||
}, 300);
|
}, 300);
|
||||||
|
|
||||||
const handlePasteServerConfigBase64 = useDebounceFn(() => {
|
const handlePasteServerConfigBase64 = useDebounceFn(() => {
|
||||||
@ -491,11 +501,11 @@ const handlePasteServerConfigBase64 = useDebounceFn(() => {
|
|||||||
|
|
||||||
handleSubmit();
|
handleSubmit();
|
||||||
pasteServerConfigBase64.value = "";
|
pasteServerConfigBase64.value = "";
|
||||||
visibles.pasteServerConfig = false;
|
visible.pasteServerConfig = false;
|
||||||
}, 300);
|
}, 300);
|
||||||
|
|
||||||
const handleShowExportDialog = () => {
|
const handleShowExportDialog = () => {
|
||||||
visibles.exportConfig = true;
|
visible.exportConfig = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleExportConfig = useDebounceFn(() => {
|
const handleExportConfig = useDebounceFn(() => {
|
||||||
@ -527,11 +537,11 @@ const handleOpenDataFolder = useDebounceFn(() => {
|
|||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
removeRouterListeners(ipcRouters.SERVER.saveConfig);
|
removeRouterListeners(ipcRouters.SERVER.saveConfig);
|
||||||
removeRouterListeners(ipcRouters.VERSION.getDownloadedVersions);
|
// removeRouterListeners(ipcRouters.VERSION.getDownloadedVersions);
|
||||||
removeRouterListeners(ipcRouters.SERVER.getServerConfig);
|
removeRouterListeners(ipcRouters.SERVER.getServerConfig);
|
||||||
removeRouterListeners(ipcRouters.SERVER.saveConfig);
|
removeRouterListeners(ipcRouters.SERVER.saveConfig);
|
||||||
removeRouterListeners(ipcRouters.SERVER.resetAllConfig);
|
removeRouterListeners(ipcRouters.SERVER.resetAllConfig);
|
||||||
removeRouterListeners(ipcRouters.VERSION.getDownloadedVersions);
|
// removeRouterListeners(ipcRouters.VERSION.getDownloadedVersions);
|
||||||
removeRouterListeners(ipcRouters.SERVER.exportConfig);
|
removeRouterListeners(ipcRouters.SERVER.exportConfig);
|
||||||
removeRouterListeners(ipcRouters.SYSTEM.openAppData);
|
removeRouterListeners(ipcRouters.SYSTEM.openAppData);
|
||||||
removeRouterListeners(ipcRouters.SERVER.importTomlConfig);
|
removeRouterListeners(ipcRouters.SERVER.importTomlConfig);
|
||||||
@ -1484,7 +1494,7 @@ onUnmounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
<!-- 链接导入服务器 -->
|
<!-- 链接导入服务器 -->
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="visibles.copyServerConfig"
|
v-model="visible.copyServerConfig"
|
||||||
title="复制链接"
|
title="复制链接"
|
||||||
width="500"
|
width="500"
|
||||||
top="5%"
|
top="5%"
|
||||||
@ -1504,7 +1514,7 @@ onUnmounted(() => {
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 链接导出服务器-->
|
<!-- 链接导出服务器-->
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="visibles.pasteServerConfig"
|
v-model="visible.pasteServerConfig"
|
||||||
title="导入链接"
|
title="导入链接"
|
||||||
width="500"
|
width="500"
|
||||||
top="5%"
|
top="5%"
|
||||||
|
Loading…
Reference in New Issue
Block a user