(globalThis["webpackChunkGoFaster"] = globalThis["webpackChunkGoFaster"] || []).push([["src_renderer_views_Settings_vue"],{ /***/ "./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/renderer/views/Settings.vue?vue&type=style&index=0&id=a5c10072&scoped=true&lang=css": /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/renderer/views/Settings.vue?vue&type=style&index=0&id=a5c10072&scoped=true&lang=css ***! \************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, ` .settings[data-v-a5c10072] { padding: 20px; /* 移除强制高度和滚动条设置,让内容自然流动 */ } .page-header[data-v-a5c10072] { margin-bottom: 30px; } .page-header h2[data-v-a5c10072] { margin: 0; color: var(--text-primary); font-size: 24px; } .settings-content[data-v-a5c10072] { max-width: 800px; } .settings-section[data-v-a5c10072] { background: var(--card-bg); border-radius: 8px; padding: 24px; margin-bottom: 24px; box-shadow: 0 2px 8px var(--shadow-color); } .settings-section h3[data-v-a5c10072] { margin: 0 0 20px 0; color: var(--text-primary); font-size: 18px; border-bottom: 2px solid var(--border-color); padding-bottom: 8px; } .setting-item[data-v-a5c10072] { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; padding: 16px 0; border-bottom: 1px solid #f5f5f5; } .setting-item[data-v-a5c10072]:last-child { border-bottom: none; margin-bottom: 0; } .setting-item label[data-v-a5c10072] { font-weight: 500; color: var(--text-primary); min-width: 200px; } .setting-item input[type="text"][data-v-a5c10072], .setting-item input[type="number"][data-v-a5c10072], .setting-item select[data-v-a5c10072] { padding: 8px 12px; border: 1px solid var(--input-border); border-radius: 4px; font-size: 14px; min-width: 200px; background-color: var(--input-bg); color: var(--input-text); } .setting-item input[type="text"][data-v-a5c10072]:focus, .setting-item input[type="number"][data-v-a5c10072]:focus, .setting-item select[data-v-a5c10072]:focus { outline: none; border-color: var(--accent-color); box-shadow: 0 0 0 2px rgba(74, 158, 255, 0.2); } /* 开关样式 */ .toggle-switch[data-v-a5c10072] { position: relative; display: inline-block; } .toggle-switch input[type="checkbox"][data-v-a5c10072] { opacity: 0; width: 0; height: 0; } .toggle-label[data-v-a5c10072] { display: block; width: 50px; height: 24px; background: #ccc; border-radius: 12px; cursor: pointer; position: relative; transition: background-color 0.3s; } .toggle-label[data-v-a5c10072]:before { content: ''; position: absolute; width: 20px; height: 20px; border-radius: 50%; background: white; top: 2px; left: 2px; transition: transform 0.3s; } .toggle-switch input[type="checkbox"]:checked + .toggle-label[data-v-a5c10072] { background: #1976d2; } .toggle-switch input[type="checkbox"]:checked + .toggle-label[data-v-a5c10072]:before { transform: translateX(26px); } /* 操作按钮 */ .settings-actions[data-v-a5c10072] { display: flex; gap: 16px; justify-content: flex-end; margin-top: 30px; } .btn[data-v-a5c10072] { padding: 12px 24px; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.2s; } .btn-primary[data-v-a5c10072] { background: #1976d2; color: white; } .btn-primary[data-v-a5c10072]:hover { background: #1565c0; } .btn-secondary[data-v-a5c10072] { background: #757575; color: white; } .btn-secondary[data-v-a5c10072]:hover { background: #616161; } /* 响应式保存按钮样式 */ .btn-disabled[data-v-a5c10072] { background: #e0e0e0; color: #9e9e9e; cursor: not-allowed; } .btn-disabled[data-v-a5c10072]:hover { background: #e0e0e0; } .btn-saving[data-v-a5c10072] { background: #ff9800; color: white; cursor: not-allowed; } .btn-saving[data-v-a5c10072]:hover { background: #ff9800; } /* 响应式设计 */ @media (max-width: 768px) { .setting-item[data-v-a5c10072] { flex-direction: column; align-items: flex-start; gap: 12px; } .setting-item label[data-v-a5c10072] { min-width: auto; } .setting-item input[type="text"][data-v-a5c10072], .setting-item input[type="number"][data-v-a5c10072], .setting-item select[data-v-a5c10072] { min-width: 100%; } .settings-actions[data-v-a5c10072] { flex-direction: column; } } `, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }), /***/ "./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/renderer/views/Settings.vue?vue&type=script&lang=js": /*!****************************************************************************************************************************!*\ !*** ./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/renderer/views/Settings.vue?vue&type=script&lang=js ***! \****************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm-bundler.js"); /* harmony import */ var _utils_themeManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/themeManager.js */ "./src/renderer/utils/themeManager.js"); /* harmony import */ var _components_Toast_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Toast.vue */ "./src/renderer/components/Toast.vue"); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'Settings', components: { Toast: _components_Toast_vue__WEBPACK_IMPORTED_MODULE_2__["default"] }, setup() { const settings = (0,vue__WEBPACK_IMPORTED_MODULE_0__.reactive)({ // 基本设置 appName: 'GoFaster', language: 'zh-CN', theme: 'light', // 网络设置 apiUrl: 'http://localhost:8080', timeout: 10, retryCount: 3, // 用户设置 autoLogin: false, rememberPassword: false, sessionTimeout: 30, // 通知设置 desktopNotifications: true, soundNotifications: true, notificationInterval: 10, // 数据设置 cacheSize: 100, autoCleanCache: true, backupFrequency: 'weekly' }) // 保存原始设置用于比较 const originalSettings = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)({}) const hasChanges = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(false) const isSaving = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(false) // Toast 相关状态 const showToast = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)(false) const toastConfig = (0,vue__WEBPACK_IMPORTED_MODULE_0__.reactive)({ type: 'success', title: '保存成功', content: '用户设置已成功保存', duration: 3000 }) // 计算保存按钮的样式类 const saveButtonClass = (0,vue__WEBPACK_IMPORTED_MODULE_0__.computed)(() => { if (isSaving.value) { return 'btn-saving' } else if (hasChanges.value) { return 'btn-primary' } else { return 'btn-disabled' } }) // 检查设置是否有变化 const checkChanges = () => { hasChanges.value = JSON.stringify(settings) !== JSON.stringify(originalSettings.value) } // 显示Toast提示 const showToastMessage = (type, title, content, duration = 3000) => { toastConfig.type = type toastConfig.title = title toastConfig.content = content toastConfig.duration = duration showToast.value = true } const loadSettings = () => { const savedSettings = localStorage.getItem('gofaster-settings') if (savedSettings) { Object.assign(settings, JSON.parse(savedSettings)) } // 保存原始设置 originalSettings.value = JSON.parse(JSON.stringify(settings)) // 同步主题管理器 if (settings.theme) { _utils_themeManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].setTheme(settings.theme) } } const saveSettings = async () => { if (!hasChanges.value || isSaving.value) return isSaving.value = true try { // 模拟保存延迟 await new Promise(resolve => setTimeout(resolve, 1000)) localStorage.setItem('gofaster-settings', JSON.stringify(settings)) // 应用主题设置 if (settings.theme) { _utils_themeManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].setTheme(settings.theme) } // 触发自定义事件,通知其他组件设置已更新 window.dispatchEvent(new CustomEvent('gofaster-settings-changed', { detail: { settings: settings } })); // 更新原始设置 originalSettings.value = JSON.parse(JSON.stringify(settings)) hasChanges.value = false // 显示保存成功提示 showToastMessage('success', '保存成功', '用户设置已成功保存') console.log('用户设置已保存') } catch (error) { console.error('保存用户设置失败:', error) // 显示保存失败提示 showToastMessage('error', '保存失败', '保存用户设置时发生错误,请重试') } finally { isSaving.value = false } } // 主题切换处理 const handleThemeChange = (newTheme) => { settings.theme = newTheme _utils_themeManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].setTheme(newTheme) } const resetSettings = () => { if (confirm('确定要重置所有用户设置吗?此操作不可撤销。')) { localStorage.removeItem('gofaster-settings') location.reload() } } // 监听设置变化 ;(0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(settings, () => { checkChanges() }, { deep: true }) ;(0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => { loadSettings() }) return { settings, hasChanges, isSaving, saveButtonClass, showToast, toastConfig, saveSettings, resetSettings, handleThemeChange } } }); /***/ }), /***/ "./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/renderer/views/Settings.vue?vue&type=template&id=a5c10072&scoped=true": /*!********************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/renderer/views/Settings.vue?vue&type=template&id=a5c10072&scoped=true ***! \********************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ render: () => (/* binding */ render) /* harmony export */ }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm-bundler.js"); const _hoisted_1 = { class: "settings" } const _hoisted_2 = { class: "settings-content" } const _hoisted_3 = { class: "settings-section" } const _hoisted_4 = { class: "setting-item" } const _hoisted_5 = { class: "setting-item" } const _hoisted_6 = { class: "setting-item" } const _hoisted_7 = { class: "settings-section" } const _hoisted_8 = { class: "setting-item" } const _hoisted_9 = { class: "setting-item" } const _hoisted_10 = { class: "settings-section" } const _hoisted_11 = { class: "setting-item" } const _hoisted_12 = { class: "toggle-switch" } const _hoisted_13 = { class: "setting-item" } const _hoisted_14 = { class: "toggle-switch" } const _hoisted_15 = { class: "setting-item" } const _hoisted_16 = { class: "settings-section" } const _hoisted_17 = { class: "setting-item" } const _hoisted_18 = { class: "toggle-switch" } const _hoisted_19 = { class: "setting-item" } const _hoisted_20 = { class: "toggle-switch" } const _hoisted_21 = { class: "setting-item" } const _hoisted_22 = { class: "settings-section" } const _hoisted_23 = { class: "setting-item" } const _hoisted_24 = { class: "setting-item" } const _hoisted_25 = { class: "toggle-switch" } const _hoisted_26 = { class: "setting-item" } const _hoisted_27 = { class: "settings-actions" } const _hoisted_28 = ["disabled"] const _hoisted_29 = { key: 0 } const _hoisted_30 = { key: 1 } const _hoisted_31 = { key: 2 } function render(_ctx, _cache, $props, $setup, $data, $options) { const _component_Toast = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)("Toast") return ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("div", _hoisted_1, [ _cache[45] || (_cache[45] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", { class: "page-header" }, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h2", null, "用户设置") ], -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_2, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" 个人偏好 "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_3, [ _cache[23] || (_cache[23] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", null, "个人偏好", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_4, [ _cache[18] || (_cache[18] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "应用名称", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[0] || (_cache[0] = $event => (($setup.settings.appName) = $event)), type: "text", placeholder: "GoFaster" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelText, $setup.settings.appName] ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_5, [ _cache[20] || (_cache[20] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "语言", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("select", { "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => (($setup.settings.language) = $event)) }, _cache[19] || (_cache[19] = [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("option", { value: "zh-CN" }, "简体中文", -1 /* CACHED */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("option", { value: "en-US" }, "English", -1 /* CACHED */) ]), 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelSelect, $setup.settings.language] ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_6, [ _cache[22] || (_cache[22] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "主题", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("select", { "onUpdate:modelValue": _cache[2] || (_cache[2] = $event => (($setup.settings.theme) = $event)), onChange: _cache[3] || (_cache[3] = $event => ($setup.handleThemeChange($setup.settings.theme))) }, _cache[21] || (_cache[21] = [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("option", { value: "light" }, "浅色主题", -1 /* CACHED */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("option", { value: "dark" }, "深色主题", -1 /* CACHED */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("option", { value: "auto" }, "跟随系统", -1 /* CACHED */) ]), 544 /* NEED_HYDRATION, NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelSelect, $setup.settings.theme] ]) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" 应用设置 "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_7, [ _cache[26] || (_cache[26] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", null, "应用设置", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_8, [ _cache[24] || (_cache[24] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "请求超时时间 (秒)", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[4] || (_cache[4] = $event => (($setup.settings.timeout) = $event)), type: "number", min: "5", max: "60" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelText, $setup.settings.timeout] ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_9, [ _cache[25] || (_cache[25] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "自动重试次数", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[5] || (_cache[5] = $event => (($setup.settings.retryCount) = $event)), type: "number", min: "0", max: "5" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelText, $setup.settings.retryCount] ]) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" 用户设置 "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_10, [ _cache[32] || (_cache[32] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", null, "用户设置", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_11, [ _cache[28] || (_cache[28] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "自动登录", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_12, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[6] || (_cache[6] = $event => (($setup.settings.autoLogin) = $event)), type: "checkbox", id: "autoLogin" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelCheckbox, $setup.settings.autoLogin] ]), _cache[27] || (_cache[27] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", { for: "autoLogin", class: "toggle-label" }, null, -1 /* CACHED */)) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_13, [ _cache[30] || (_cache[30] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "记住密码", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_14, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[7] || (_cache[7] = $event => (($setup.settings.rememberPassword) = $event)), type: "checkbox", id: "rememberPassword" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelCheckbox, $setup.settings.rememberPassword] ]), _cache[29] || (_cache[29] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", { for: "rememberPassword", class: "toggle-label" }, null, -1 /* CACHED */)) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_15, [ _cache[31] || (_cache[31] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "会话超时时间 (分钟)", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[8] || (_cache[8] = $event => (($setup.settings.sessionTimeout) = $event)), type: "number", min: "15", max: "1440" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelText, $setup.settings.sessionTimeout] ]) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" 通知偏好 "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_16, [ _cache[38] || (_cache[38] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", null, "通知偏好", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_17, [ _cache[34] || (_cache[34] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "桌面通知", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_18, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[9] || (_cache[9] = $event => (($setup.settings.desktopNotifications) = $event)), type: "checkbox", id: "desktopNotifications" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelCheckbox, $setup.settings.desktopNotifications] ]), _cache[33] || (_cache[33] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", { for: "desktopNotifications", class: "toggle-label" }, null, -1 /* CACHED */)) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_19, [ _cache[36] || (_cache[36] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "声音提醒", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_20, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[10] || (_cache[10] = $event => (($setup.settings.soundNotifications) = $event)), type: "checkbox", id: "soundNotifications" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelCheckbox, $setup.settings.soundNotifications] ]), _cache[35] || (_cache[35] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", { for: "soundNotifications", class: "toggle-label" }, null, -1 /* CACHED */)) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_21, [ _cache[37] || (_cache[37] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "消息提醒间隔 (秒)", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[11] || (_cache[11] = $event => (($setup.settings.notificationInterval) = $event)), type: "number", min: "5", max: "300" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelText, $setup.settings.notificationInterval] ]) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" 数据管理 "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_22, [ _cache[44] || (_cache[44] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("h3", null, "数据管理", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_23, [ _cache[39] || (_cache[39] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "数据缓存大小 (MB)", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[12] || (_cache[12] = $event => (($setup.settings.cacheSize) = $event)), type: "number", min: "50", max: "1000" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelText, $setup.settings.cacheSize] ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_24, [ _cache[41] || (_cache[41] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "自动清理缓存", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_25, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("input", { "onUpdate:modelValue": _cache[13] || (_cache[13] = $event => (($setup.settings.autoCleanCache) = $event)), type: "checkbox", id: "autoCleanCache" }, null, 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelCheckbox, $setup.settings.autoCleanCache] ]), _cache[40] || (_cache[40] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", { for: "autoCleanCache", class: "toggle-label" }, null, -1 /* CACHED */)) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_26, [ _cache[43] || (_cache[43] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("label", null, "数据备份频率", -1 /* CACHED */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.withDirectives)((0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("select", { "onUpdate:modelValue": _cache[14] || (_cache[14] = $event => (($setup.settings.backupFrequency) = $event)) }, _cache[42] || (_cache[42] = [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("option", { value: "daily" }, "每日", -1 /* CACHED */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("option", { value: "weekly" }, "每周", -1 /* CACHED */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("option", { value: "monthly" }, "每月", -1 /* CACHED */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("option", { value: "never" }, "从不", -1 /* CACHED */) ]), 512 /* NEED_PATCH */), [ [vue__WEBPACK_IMPORTED_MODULE_0__.vModelSelect, $setup.settings.backupFrequency] ]) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" 操作按钮 "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("div", _hoisted_27, [ (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("button", { class: "btn btn-secondary", onClick: _cache[15] || (_cache[15] = (...args) => ($setup.resetSettings && $setup.resetSettings(...args))) }, " 重置所有设置 "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)("button", { class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)(["btn", $setup.saveButtonClass]), onClick: _cache[16] || (_cache[16] = (...args) => ($setup.saveSettings && $setup.saveSettings(...args))), disabled: !$setup.hasChanges || $setup.isSaving }, [ ($setup.isSaving) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("span", _hoisted_29, "保存中...")) : ($setup.hasChanges) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("span", _hoisted_30, "保存更改")) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)("span", _hoisted_31, "已保存")) ], 10 /* CLASS, PROPS */, _hoisted_28) ]) ]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(" Toast 消息提示 "), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Toast, { visible: $setup.showToast, "onUpdate:visible": _cache[17] || (_cache[17] = $event => (($setup.showToast) = $event)), type: $setup.toastConfig.type, title: $setup.toastConfig.title, content: $setup.toastConfig.content, duration: $setup.toastConfig.duration }, null, 8 /* PROPS */, ["visible", "type", "title", "content", "duration"]) ])) } /***/ }), /***/ "./node_modules/vue-style-loader/index.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/renderer/views/Settings.vue?vue&type=style&index=0&id=a5c10072&scoped=true&lang=css": /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/vue-style-loader/index.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/renderer/views/Settings.vue?vue&type=style&index=0&id=a5c10072&scoped=true&lang=css ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // style-loader: Adds some css to the DOM by adding a