From d0853cca1ff88d7ebc97fcf4268aad4e73470f74 Mon Sep 17 00:00:00 2001
From: Kuingsmile <96409857+Kuingsmile@users.noreply.github.com>
Date: Sun, 25 Jan 2026 12:58:38 +0800
Subject: [PATCH] :sparkles: Feature(custom): optimize image process setting
page
---
src/renderer/components/FirstTimeGuide.vue | 44 +-
.../components/ImageProcessSetting.vue | 1447 ++++++++---------
src/renderer/components/InputBoxDialog.vue | 19 +-
src/renderer/components/PerPicbedSetting.vue | 28 +-
.../components/common/customRange.vue | 2 +-
.../components/common/customSwitch.vue | 15 +-
.../components/css/FirstTimeGuide.css | 16 -
.../components/css/ImageProcessSetting.css | 37 -
src/renderer/pages/Gallery.vue | 86 +-
src/renderer/pages/PicGoSetting.vue | 4 +-
src/renderer/pages/css/Gallery.css | 55 -
11 files changed, 810 insertions(+), 943 deletions(-)
delete mode 100644 src/renderer/components/css/FirstTimeGuide.css
diff --git a/src/renderer/components/FirstTimeGuide.vue b/src/renderer/components/FirstTimeGuide.vue
index 76051b43..93ea5ff1 100644
--- a/src/renderer/components/FirstTimeGuide.vue
+++ b/src/renderer/components/FirstTimeGuide.vue
@@ -53,21 +53,31 @@
-
-
-
-
+
+
+
+
@@ -93,6 +103,8 @@ import { computed, nextTick, onMounted, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { useRoute, useRouter } from 'vue-router'
+import CustomButton from '@/components/common/CustomButton.vue'
+
const { t } = useI18n()
const route = useRoute()
const router = useRouter()
@@ -363,5 +375,3 @@ onMounted(async () => {
window.addEventListener('resize', updateSpotlight)
})
-
-
diff --git a/src/renderer/components/ImageProcessSetting.vue b/src/renderer/components/ImageProcessSetting.vue
index e0bc4074..ab6b96ea 100644
--- a/src/renderer/components/ImageProcessSetting.vue
+++ b/src/renderer/components/ImageProcessSetting.vue
@@ -33,89 +33,70 @@
>
-
-
-
+
+ safeSetMapValue(
+ compressForm,
+ 'formatConvertObj',
+ picbedType,
+ value,
+ defaultCompressSetting.formatConvertObj,
+ )
+ "
+ />
+
+
-
-
-
-
+
-
+
+
+
+
+
+
+
+ safeSetMapValue(
+ waterMarkForm,
+ 'watermarkType',
+ picbedType,
+ value,
+ defaultWaterMarkSetting.watermarkType,
+ )
+ "
+ />
+
+
+
+
+
+
+ safeSetMapValue(
+ waterMarkForm,
+ 'isFullScreenWatermark',
+ picbedType,
+ value,
+ defaultWaterMarkSetting.isFullScreenWatermark,
+ )
+ "
+ />
+
+
+
+
+
+
+ safeSetMapValue(
+ waterMarkForm,
+ 'watermarkDegree',
+ picbedType,
+ value,
+ defaultWaterMarkSetting.watermarkDegree,
+ )
+ "
+ />
+
+
+
+
+
+
+ safeSetMapValue(
+ waterMarkForm,
+ 'watermarkScaleRatio',
+ picbedType,
+ value,
+ defaultWaterMarkSetting.watermarkScaleRatio,
+ )
+ "
+ />
+
+
+
-
+
+
+ safeSetMapValue(
+ waterMarkForm,
+ 'watermarkText',
+ picbedType,
+ value,
+ defaultWaterMarkSetting.watermarkText,
+ )
+ "
+ />
+
-
-
-
-
-
-
+
+ safeSetMapValue(
+ waterMarkForm,
+ 'watermarkPosition',
+ picbedType,
+ value,
+ defaultWaterMarkSetting.watermarkPosition,
+ )
+ "
+ />
+
+
-
-
-
+
+
-
-
-
-
+
-
-
-
-
+ safeSetMapValue(compressForm, 'reSizeWidth', picbedType, value, defaultCompressSetting.reSizeWidth)
"
- class="form-group"
- >
-
+ />
+
-
- safeSetMapValue(
- compressForm,
- 'skipReSizeOfSmallImg',
- picbedType,
- value,
- defaultCompressSetting.skipReSizeOfSmallImg,
- )
- "
- />
-
-
-
+
+
+
-
-
+
+ safeSetMapValue(
+ compressForm,
+ 'reSizeHeight',
+ picbedType,
+ value,
+ defaultCompressSetting.reSizeHeight,
+ )
+ "
+ />
+
-
+
-
-
+
-
-
+
+
-
-
-
+
+
{{
- $t('pages.imageProcess.general.skipProcessExtListPlaceholder')
+ t('pages.imageProcess.general.skipProcessExtListPlaceholder')
}}
-
-
+
+
-
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
@@ -991,6 +952,7 @@ import { useStorage } from '@vueuse/core'
import {
Droplets,
Edit,
+ Edit2Icon,
FileText,
FlipHorizontal,
Image,
@@ -1011,15 +973,18 @@ import type {
import { computed, nextTick, onBeforeMount, onBeforeUnmount, onMounted, ref, toRaw, useTemplateRef, watch } from 'vue'
import { useI18n } from 'vue-i18n'
-import customRadioOption from '@/components/common/CustomRadioOption.vue'
-import customRange from '@/components/common/CustomRange.vue'
-import customSwitch from '@/components/common/CustomSwitch.vue'
+import CustomRadioOption from '@/components/common/CustomRadioOption.vue'
+import CustomRange from '@/components/common/CustomRange.vue'
+import CustomSwitch from '@/components/common/CustomSwitch.vue'
import PlaceholderTable from '@/components/common/PlaceholderTable.vue'
import PerPicbedSetting from '@/components/PerPicbedSetting.vue'
import { getRawData } from '@/utils/common'
import { configPaths } from '@/utils/configPaths'
import { getConfig, saveConfig } from '@/utils/dataSender'
+import SettingCard from './common/SettingCard.vue'
+import SettingSection from './common/SettingSection.vue'
+
const { t } = useI18n()
const activeTab = useStorage
('image-process-setting-active-tab', 'general')
diff --git a/src/renderer/components/InputBoxDialog.vue b/src/renderer/components/InputBoxDialog.vue
index 7be9fccc..11adfe7c 100644
--- a/src/renderer/components/InputBoxDialog.vue
+++ b/src/renderer/components/InputBoxDialog.vue
@@ -55,20 +55,14 @@
-
-
-
+ />
@@ -82,6 +76,7 @@ import { XIcon } from 'lucide-vue-next'
import { nextTick, onBeforeMount, onBeforeUnmount, reactive, ref, useTemplateRef } from 'vue'
import { useI18n } from 'vue-i18n'
+import CustomButton from '@/components/common/CustomButton.vue'
import $bus from '@/utils/bus'
import { SHOW_INPUT_BOX, SHOW_INPUT_BOX_RESPONSE } from '@/utils/constant'
import { getConfig } from '@/utils/dataSender'
diff --git a/src/renderer/components/PerPicbedSetting.vue b/src/renderer/components/PerPicbedSetting.vue
index bdf8232f..7c8d0a6c 100644
--- a/src/renderer/components/PerPicbedSetting.vue
+++ b/src/renderer/components/PerPicbedSetting.vue
@@ -26,20 +26,22 @@
class="flex flex-wrap items-center justify-between rounded-sm border border-border bg-bg p-3 transition-all duration-fast ease-apple hover:border-accent hover:bg-surface"
>
-
-
-
+
+
+
{{ showValue }}
diff --git a/src/renderer/components/common/customSwitch.vue b/src/renderer/components/common/customSwitch.vue
index 1012e35c..b2607d68 100644
--- a/src/renderer/components/common/customSwitch.vue
+++ b/src/renderer/components/common/customSwitch.vue
@@ -1,12 +1,15 @@
-
+
{{ t('pages.gallery.isAlwaysForceReload') }}
-
+
{{ t('pages.gallery.syncDelete') }}
-
+
-
-
-
+
+
+
@@ -90,7 +85,9 @@
-
+
-
@@ -423,6 +420,7 @@ import { onBeforeRouteUpdate } from 'vue-router'
import ALLApi from '@/apis/allApi'
import CustomButton from '@/components/common/CustomButton.vue'
import CustomModal from '@/components/common/CustomModal.vue'
+import CustomSwitch from '@/components/common/CustomSwitch.vue'
import MultiSelect from '@/components/common/MultiSelect.vue'
import PlaceholderTable from '@/components/common/PlaceholderTable.vue'
import SingleSelect from '@/components/common/SingleSelect.vue'
@@ -458,7 +456,7 @@ const imgInfo = reactive({
imgUrl: '',
})
const choosedList: IObjT = reactive({})
-const gallerySliderControl = reactive({
+const gallerySliderControl = ref({
visible: false,
index: 0,
})
@@ -808,8 +806,8 @@ function clearChoosedList() {
}
function zoomImage(index: number) {
- gallerySliderControl.index = index
- gallerySliderControl.visible = true
+ gallerySliderControl.value.index = index
+ gallerySliderControl.value.visible = true
}
async function copy(item: ImgInfo) {
@@ -863,18 +861,16 @@ function remove(item: ImgInfo, _: number) {
})
}
-function handleIsAlwaysForceReload(event: Event) {
- const ev = (event.target as HTMLInputElement).checked
- isAlwaysForceReload.value = ev
+function handleIsAlwaysForceReload(value: boolean) {
saveConfig({
- [configPaths.settings.isAlwaysForceReload]: ev,
+ [configPaths.settings.isAlwaysForceReload]: value,
})
window.electron.sendRPC(IRPCActionType.REFRESH_SETTING_WINDOW)
}
-function handleDeleteCloudFile(event: Event) {
+function handleDeleteCloudFile(value: boolean) {
saveConfig({
- [configPaths.settings.deleteCloudFile]: (event.target as HTMLInputElement).checked,
+ [configPaths.settings.deleteCloudFile]: value,
})
}
diff --git a/src/renderer/pages/PicGoSetting.vue b/src/renderer/pages/PicGoSetting.vue
index e9bd605f..06c122ee 100644
--- a/src/renderer/pages/PicGoSetting.vue
+++ b/src/renderer/pages/PicGoSetting.vue
@@ -399,7 +399,7 @@
/>
-
+
-
+