From f32a7105c38ee455c4b165d48651ef19fc6948db Mon Sep 17 00:00:00 2001 From: ahaos <8406649+lhailgl@user.noreply.gitee.com> Date: 星期三, 13 十二月 2023 18:35:55 +0800 Subject: [PATCH] !68 修复升级依赖带来的问题 * Merge remote-tracking branch 'origin/dev' into dev * 升级依赖 * Merge remote-tracking branch 'origin/ts' into ts * 升级依赖 * Merge branch 'dev' of gitee.com:JavaLionLi/plus-ui into ts * 升级依赖 * !61 fix: 删除重复环境变量ElUploadInstance * fix: 删除重复环境变量ElUploadInstance --- src/components/BuildCode/render.vue | 4 src/store/modules/app.ts | 4 src/types/global.d.ts | 82 ++++++----- src/enums/LanguageEnum.ts | 5 src/components/SizeSelect/index.vue | 2 src/types/module.d.ts | 20 +- src/main.ts | 19 -- src/permission.ts | 6 src/lang/index.ts | 7 src/components/IconSelect/index.vue | 2 src/views/system/user/index.vue | 5 src/plugins/index.ts | 19 ++ .prettierrc | 2 src/views/tool/gen/genInfoForm.vue | 2 src/views/system/user/profile/userInfo.vue | 6 src/store/modules/settings.ts | 55 ++----- package.json | 20 +- src/utils/ruoyi.ts | 4 src/components/ImagePreview/index.vue | 2 src/layout/components/Settings/index.vue | 98 ++++--------- src/App.vue | 2 src/settings.ts | 9 + 22 files changed, 172 insertions(+), 203 deletions(-) diff --git a/.prettierrc b/.prettierrc index 0b00890..6ca3ce5 100644 --- a/.prettierrc +++ b/.prettierrc @@ -4,7 +4,7 @@ "useTabs": false, "semi": true, "singleQuote": true, - "quoteProps": "as-needed", + "quoteProps": "preserve", "jsxSingleQuote": false, "bracketSameLine": false, "trailingComma": "none", diff --git a/package.json b/package.json index 95cd2a1..3b1c1d6 100644 --- a/package.json +++ b/package.json @@ -18,19 +18,19 @@ "url": "https://gitee.com/JavaLionLi/plus-ui.git" }, "dependencies": { - "@element-plus/icons-vue": "2.1.0", + "@element-plus/icons-vue": "2.3.1", "@vueup/vue-quill": "1.2.0", "@vueuse/core": "10.7.0", "animate.css": "4.1.1", "await-to-js": "^3.0.0", "axios": "^1.3.4", "crypto-js": "^4.1.1", - "echarts": "5.4.0", + "echarts": "5.4.3", "element-plus": "2.4.3", "file-saver": "2.0.5", "fuse.js": "6.6.2", - "js-cookie": "3.0.1", - "jsencrypt": "3.3.1", + "js-cookie": "3.0.5", + "jsencrypt": "3.3.2", "nprogress": "0.2.0", "path-browserify": "1.0.1", "path-to-regexp": "6.2.0", @@ -38,14 +38,14 @@ "screenfull": "6.0.0", "vform3-builds": "3.0.8", "vue": "3.3.11", - "vue-cropper": "1.0.3", + "vue-cropper": "1.1.1", "vue-i18n": "9.2.2", "vue-router": "4.2.5", "vue-types": "5.1.1" }, "devDependencies": { - "@iconify/json": "^2.2.40", - "@intlify/unplugin-vue-i18n": "0.8.2", + "@iconify/json": "^2.2.157", + "@intlify/unplugin-vue-i18n": "1.6.0", "@types/crypto-js": "^4.1.1", "@types/file-saver": "2.0.5", "@types/js-cookie": "3.0.3", @@ -57,7 +57,7 @@ "@unocss/preset-attributify": "^0.58.0", "@unocss/preset-icons": "^0.58.0", "@unocss/preset-uno": "^0.58.0", - "@vue/compiler-sfc": "3.2.45", + "@vue/compiler-sfc": "3.3.9", "@vitejs/plugin-vue": "4.5.2", "autoprefixer": "10.4.14", "eslint": "8.55.0", @@ -72,13 +72,13 @@ "husky": "7.0.4", "postcss": "^8.4.21", "prettier": "3.1.1", - "sass": "1.56.1", + "sass": "1.69.5", "typescript": "5.2.2", "unocss": "^0.58.0", "unplugin-auto-import": "0.17.2", "unplugin-icons": "0.18.1", "unplugin-vue-components": "0.26.0", - "unplugin-vue-setup-extend-plus": "0.4.9", + "unplugin-vue-setup-extend-plus": "1.0.0", "vite-plugin-compression": "0.5.1", "vite-plugin-svg-icons": "2.0.1", "vitest": "^0.29.7", diff --git a/src/App.vue b/src/App.vue index 0b058d7..a93790a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -10,7 +10,7 @@ import useAppStore from '@/store/modules/app'; const appStore = useAppStore(); -const size = computed(() => appStore.size as any); +const size = computed(() => appStore.size); onMounted(() => { nextTick(() => { diff --git a/src/components/BuildCode/render.vue b/src/components/BuildCode/render.vue index 3c0865c..aeb9312 100644 --- a/src/components/BuildCode/render.vue +++ b/src/components/BuildCode/render.vue @@ -18,7 +18,7 @@ isView: false }); -const vFormRef = ref(null); +const vFormRef = ref(); // 鑾峰彇琛ㄥ崟鏁版嵁-寮傛 const getFormData = () => { return vFormRef.value.getFormData(); @@ -29,7 +29,7 @@ * @param {琛ㄥ崟閰嶇疆} formConf * formConfig锛歿 formTemplate锛氳〃鍗曟ā鏉匡紝formData锛氳〃鍗曟暟鎹紝hiddenField锛氶渶瑕侀殣钘忕殑瀛楁瀛楃涓查泦鍚堬紝disabledField锛氶渶瑕佺鐢ㄧ殑鑷瀛楃涓查泦鍚坿 */ -const initForm = (formConf) => { +const initForm = (formConf: any) => { const { formTemplate, formData, hiddenField, disabledField } = toRaw(formConf); if (formTemplate) { vFormRef.value.setFormJson(formTemplate); diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue index 7e392e7..3bfde4d 100644 --- a/src/components/IconSelect/index.vue +++ b/src/components/IconSelect/index.vue @@ -1,5 +1,5 @@ <template> - <div class="relative" :style="{ width: width }"> + <div class="relative" :style="{ 'width': width }"> <el-input v-model="modelValue" readonly placeholder="鐐瑰嚮閫夋嫨鍥炬爣" @click="visible = !visible"> <template #prepend> <svg-icon :icon-class="modelValue" /> diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue index 349c443..31bf873 100644 --- a/src/components/ImagePreview/index.vue +++ b/src/components/ImagePreview/index.vue @@ -37,7 +37,7 @@ } let real_src_list = props.src.split(','); let srcList: string[] = []; - real_src_list.forEach((item) => { + real_src_list.forEach((item: string) => { return srcList.push(item); }); return srcList; diff --git a/src/components/SizeSelect/index.vue b/src/components/SizeSelect/index.vue index 86671f5..abf72cc 100644 --- a/src/components/SizeSelect/index.vue +++ b/src/components/SizeSelect/index.vue @@ -27,7 +27,7 @@ { label: '绋嶅皬', value: 'small' } ]); -const handleSetSize = (size: string) => { +const handleSetSize = (size: 'large' | 'default' | 'small') => { appStore.setSize(size); }; </script> diff --git a/src/enums/LanguageEnum.ts b/src/enums/LanguageEnum.ts new file mode 100644 index 0000000..c857c43 --- /dev/null +++ b/src/enums/LanguageEnum.ts @@ -0,0 +1,5 @@ +export enum LanguageEnum { + zh_CN = 'zh_CN', + + en_US = 'en_US' +} diff --git a/src/lang/index.ts b/src/lang/index.ts index dddb86b..071599e 100644 --- a/src/lang/index.ts +++ b/src/lang/index.ts @@ -4,6 +4,7 @@ // 鏈湴璇█鍖� import enUSLocale from './en_US'; import zhCNLocale from './zh_CN'; +import { LanguageEnum } from '@/enums/LanguageEnum'; const messages = { zh_CN: { @@ -18,12 +19,12 @@ * 鑾峰彇褰撳墠璇█ * @returns zh-cn|en ... */ -export const getLanguage = () => { - const language = useStorage('language', 'zh_CN'); +export const getLanguage = (): LanguageEnum => { + const language = useStorage<LanguageEnum>('language', LanguageEnum.zh_CN); if (language.value) { return language.value; } - return 'zh_CN'; + return LanguageEnum.zh_CN; }; const i18n = createI18n({ diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue index c748998..2a2e077 100644 --- a/src/layout/components/Settings/index.vue +++ b/src/layout/components/Settings/index.vue @@ -48,35 +48,35 @@ <div class="drawer-item"> <span>寮�鍚� TopNav</span> <span class="comp-style"> - <el-switch v-model="topNav" class="drawer-switch" /> + <el-switch v-model="settingsStore.topNav" class="drawer-switch" @change="topNavChange" /> </span> </div> <div class="drawer-item"> <span>寮�鍚� Tags-Views</span> <span class="comp-style"> - <el-switch v-model="tagsView" class="drawer-switch" /> + <el-switch v-model="settingsStore.tagsView" class="drawer-switch" /> </span> </div> <div class="drawer-item"> <span>鍥哄畾 Header</span> <span class="comp-style"> - <el-switch v-model="fixedHeader" class="drawer-switch" /> + <el-switch v-model="settingsStore.fixedHeader" class="drawer-switch" /> </span> </div> <div class="drawer-item"> <span>鏄剧ず Logo</span> <span class="comp-style"> - <el-switch v-model="sidebarLogo" class="drawer-switch" /> + <el-switch v-model="settingsStore.sidebarLogo" class="drawer-switch" /> </span> </div> <div class="drawer-item"> <span>鍔ㄦ�佹爣棰�</span> <span class="comp-style"> - <el-switch v-model="dynamicTitle" class="drawer-switch" /> + <el-switch v-model="settingsStore.dynamicTitle" class="drawer-switch" @change="dynamicTitleChange" /> </span> </div> @@ -93,8 +93,8 @@ import useSettingsStore from '@/store/modules/settings'; import usePermissionStore from '@/store/modules/permission'; import { handleThemeStyle } from '@/utils/theme'; -import { SettingTypeEnum } from '@/enums/SettingTypeEnum'; import { SideThemeEnum } from '@/enums/SideThemeEnum'; +import defaultSettings from '@/settings'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const appStore = useAppStore(); @@ -113,92 +113,58 @@ valueDark: 'dark', valueLight: 'light' }); +// 鍖归厤鑿滃崟棰滆壊 watch(isDark, () => { if (isDark.value) { - settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: SideThemeEnum.DARK }); + settingsStore.sideTheme = SideThemeEnum.DARK; } else { - settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: sideTheme.value }); + settingsStore.sideTheme = sideTheme.value; } }); const toggleDark = () => useToggle(isDark); -/** 鏄惁闇�瑕乼opNav */ -const topNav = computed({ - get: () => storeSettings.value.topNav, - set: (val) => { - settingsStore.changeSetting({ key: SettingTypeEnum.TOP_NAV, value: val }); - if (!val) { - appStore.toggleSideBarHide(false); - permissionStore.setSidebarRouters(permissionStore.defaultRoutes); - } +const topNavChange = (val) => { + if (!val) { + appStore.toggleSideBarHide(false); + permissionStore.setSidebarRouters(permissionStore.defaultRoutes); } -}); -/** 鏄惁闇�瑕乼agview */ -const tagsView = computed({ - get: () => storeSettings.value.tagsView, - set: (val) => { - settingsStore.changeSetting({ key: SettingTypeEnum.TAGS_VIEW, value: val }); - } -}); -/**鏄惁闇�瑕佸浐瀹氬ご閮� */ -const fixedHeader = computed({ - get: () => storeSettings.value.fixedHeader, - set: (val) => { - settingsStore.changeSetting({ key: SettingTypeEnum.FIXED_HEADER, value: val }); - } -}); -/**鏄惁闇�瑕佷晶杈规爮鐨刲ogo */ -const sidebarLogo = computed({ - get: () => storeSettings.value.sidebarLogo, - set: (val) => { - settingsStore.changeSetting({ key: SettingTypeEnum.SIDEBAR_LOGO, value: val }); - } -}); -/**鏄惁闇�瑕佷晶杈规爮鐨勫姩鎬佺綉椤电殑title */ -const dynamicTitle = computed({ - get: () => storeSettings.value.dynamicTitle, - set: (val) => { - settingsStore.changeSetting({ key: SettingTypeEnum.DYNAMIC_TITLE, value: val }); - // 鍔ㄦ�佽缃綉椤垫爣棰� - useDynamicTitle(); - } -}); +}; + +const dynamicTitleChange = () => { + // 鍔ㄦ�佽缃綉椤垫爣棰� + useDynamicTitle(); +}; const themeChange = (val: string) => { - settingsStore.changeSetting({ key: SettingTypeEnum.THEME, value: val }); - theme.value = val; - if (val) { - handleThemeStyle(val); - } + settingsStore.theme = val; + handleThemeStyle(val); }; const handleTheme = (val: string) => { sideTheme.value = val; if (isDark.value && val === SideThemeEnum.LIGHT) { // 鏆楅粦妯″紡棰滆壊涓嶅彉 - settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: SideThemeEnum.DARK }); + settingsStore.sideTheme = SideThemeEnum.DARK; return; } - settingsStore.changeSetting({ key: SettingTypeEnum.SIDE_THEME, value: val }); + settingsStore.sideTheme = val; }; const saveSetting = () => { proxy?.$modal.loading('姝e湪淇濆瓨鍒版湰鍦帮紝璇风◢鍊�...'); - let layoutSetting = { - topNav: storeSettings.value.topNav, - tagsView: storeSettings.value.tagsView, - fixedHeader: storeSettings.value.fixedHeader, - sidebarLogo: storeSettings.value.sidebarLogo, - dynamicTitle: storeSettings.value.dynamicTitle, - sideTheme: storeSettings.value.sideTheme, - theme: storeSettings.value.theme - }; - localStorage.setItem('layout-setting', JSON.stringify(layoutSetting)); + const settings = useStorage<LayoutSetting>('layout-setting', defaultSettings); + settings.value.topNav = storeSettings.value.topNav; + settings.value.tagsView = storeSettings.value.tagsView; + settings.value.fixedHeader = storeSettings.value.fixedHeader; + settings.value.sidebarLogo = storeSettings.value.sidebarLogo; + settings.value.dynamicTitle = storeSettings.value.dynamicTitle; + settings.value.sideTheme = storeSettings.value.sideTheme; + settings.value.theme = storeSettings.value.theme; setTimeout(() => { proxy?.$modal.closeLoading(); }, 1000); }; const resetSetting = () => { proxy?.$modal.loading('姝e湪娓呴櫎璁剧疆缂撳瓨骞跺埛鏂帮紝璇风◢鍊�...'); - localStorage.removeItem('layout-setting'); + useStorage<any>('layout-setting', null).value = null; setTimeout('window.location.reload()', 1000); }; const openSetting = () => { diff --git a/src/main.ts b/src/main.ts index 0ad939a..7d5d153 100644 --- a/src/main.ts +++ b/src/main.ts @@ -14,10 +14,6 @@ // 娉ㄥ唽鎻掍欢 import plugins from './plugins/index'; // plugins -import { download } from '@/utils/request'; - -// 棰勮鍔ㄧ敾 -import animate from './animate'; // svg鍥炬爣 import 'virtual:svg-icons-register'; @@ -26,25 +22,10 @@ // permission control import './permission'; -import { useDict } from '@/utils/dict'; -import { getConfigKey, updateConfigByKey } from '@/api/system/config'; -import { parseTime, addDateRange, handleTree, selectDictLabel, selectDictLabels } from '@/utils/ruoyi'; - // 鍥介檯鍖� import i18n from '@/lang/index'; const app = createApp(App); -// 鍏ㄥ眬鏂规硶鎸傝浇 -app.config.globalProperties.useDict = useDict; -app.config.globalProperties.getConfigKey = getConfigKey; -app.config.globalProperties.updateConfigByKey = updateConfigByKey; -app.config.globalProperties.download = download; -app.config.globalProperties.parseTime = parseTime; -app.config.globalProperties.handleTree = handleTree; -app.config.globalProperties.addDateRange = addDateRange; -app.config.globalProperties.selectDictLabel = selectDictLabel; -app.config.globalProperties.selectDictLabels = selectDictLabels; -app.config.globalProperties.animate = animate; app.use(ElementIcons); app.use(router); diff --git a/src/permission.ts b/src/permission.ts index 402fdec..2fc105b 100644 --- a/src/permission.ts +++ b/src/permission.ts @@ -16,13 +16,13 @@ router.beforeEach(async (to, from, next) => { NProgress.start(); if (getToken()) { - to.meta.title && useSettingsStore().setTitle(to.meta.title as string); + to.meta.title && useSettingsStore().setTitle(to.meta.title); /* has token*/ if (to.path === '/login') { next({ path: '/' }); NProgress.done(); - } else if (whiteList.indexOf(to.path) !== -1) { - next() + } else if (whiteList.indexOf(to.path as string) !== -1) { + next(); } else { if (useUserStore().roles.length === 0) { isRelogin.show = true; diff --git a/src/plugins/index.ts b/src/plugins/index.ts index 09d550a..6c5e0c3 100644 --- a/src/plugins/index.ts +++ b/src/plugins/index.ts @@ -3,6 +3,13 @@ import download from './download'; import cache from './cache'; import auth from './auth'; +// 棰勮鍔ㄧ敾 +import animate from '@/animate'; + +import { download as dl } from '@/utils/request'; +import { useDict } from '@/utils/dict'; +import { getConfigKey, updateConfigByKey } from '@/api/system/config'; +import { parseTime, addDateRange, handleTree, selectDictLabel, selectDictLabels } from '@/utils/ruoyi'; import { App } from 'vue'; @@ -21,4 +28,16 @@ // 璁よ瘉瀵硅薄 app.config.globalProperties.$auth = auth; + + // 鍏ㄥ眬鏂规硶鎸傝浇 + app.config.globalProperties.useDict = useDict; + app.config.globalProperties.getConfigKey = getConfigKey; + app.config.globalProperties.updateConfigByKey = updateConfigByKey; + app.config.globalProperties.download = dl; + app.config.globalProperties.parseTime = parseTime; + app.config.globalProperties.handleTree = handleTree; + app.config.globalProperties.addDateRange = addDateRange; + app.config.globalProperties.selectDictLabel = selectDictLabel; + app.config.globalProperties.selectDictLabels = selectDictLabels; + app.config.globalProperties.animate = animate; } diff --git a/src/settings.ts b/src/settings.ts index 9cebde7..4b62c75 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -1,3 +1,5 @@ +import { LanguageEnum } from '@/enums/LanguageEnum'; + const setting: DefaultSettings = { /** * 缃戦〉鏍囬 @@ -50,6 +52,11 @@ animationEnable: false, - dark: false + dark: false, + language: LanguageEnum.zh_CN, + + size: 'default', + + layout: '' }; export default setting; diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts index 90866c1..0205fab 100644 --- a/src/store/modules/app.ts +++ b/src/store/modules/app.ts @@ -9,7 +9,7 @@ hide: false }); const device = ref<string>('desktop'); - const size = useStorage('size', 'default'); + const size = useStorage<'large' | 'default' | 'small'>('size', 'default'); // 璇█ const language = useStorage('language', 'zh_CN'); @@ -43,7 +43,7 @@ const toggleDevice = (d: string): void => { device.value = d; }; - const setSize = (s: string): void => { + const setSize = (s: 'large' | 'default' | 'small'): void => { size.value = s; }; const toggleSideBarHide = (status: boolean): void => { diff --git a/src/store/modules/settings.ts b/src/store/modules/settings.ts index 861c6c8..ef49b3c 100644 --- a/src/store/modules/settings.ts +++ b/src/store/modules/settings.ts @@ -1,43 +1,29 @@ import { defineStore } from 'pinia'; import defaultSettings from '@/settings'; -import { SettingTypeEnum } from '@/enums/SettingTypeEnum'; import { useDynamicTitle } from '@/utils/dynamicTitle'; + export const useSettingsStore = defineStore('setting', () => { - const storageSetting = JSON.parse(localStorage.getItem('layout-setting') || '{}'); + const storageSetting = useStorage<LayoutSetting>('layout-setting', { + topNav: defaultSettings.topNav, + tagsView: defaultSettings.tagsView, + fixedHeader: defaultSettings.fixedHeader, + sidebarLogo: defaultSettings.sidebarLogo, + dynamicTitle: defaultSettings.dynamicTitle, + sideTheme: defaultSettings.sideTheme, + theme: defaultSettings.theme + }); const title = ref<string>(defaultSettings.title); - const theme = ref<string>(storageSetting.theme || defaultSettings.theme); - const sideTheme = ref<string>(storageSetting.sideTheme || defaultSettings.sideTheme); - const showSettings = ref<boolean>(storageSetting.showSettings || defaultSettings.showSettings); - const topNav = ref<boolean>(storageSetting.topNav === undefined ? defaultSettings.topNav : storageSetting.topNav); - const tagsView = ref<boolean>(storageSetting.tagsView === undefined ? defaultSettings.tagsView : storageSetting.tagsView); - const fixedHeader = ref<boolean>(storageSetting.fixedHeader === undefined ? defaultSettings.fixedHeader : storageSetting.fixedHeader); - const sidebarLogo = ref<boolean>(storageSetting.sidebarLogo === undefined ? defaultSettings.sidebarLogo : storageSetting.sidebarLogo); - const dynamicTitle = ref<boolean>(storageSetting.dynamicTitle === undefined ? defaultSettings.dynamicTitle : storageSetting.dynamicTitle); - const animationEnable = ref<boolean>( - storageSetting.animationEnable === undefined ? defaultSettings.animationEnable : storageSetting.animationEnable - ); - const dark = ref<boolean>(storageSetting.dark || defaultSettings.dark); + const theme = ref<string>(storageSetting.value.theme); + const sideTheme = ref<string>(storageSetting.value.sideTheme); + const showSettings = ref<boolean>(defaultSettings.showSettings); + const topNav = ref<boolean>(storageSetting.value.topNav); + const tagsView = ref<boolean>(storageSetting.value.tagsView); + const fixedHeader = ref<boolean>(storageSetting.value.fixedHeader); + const sidebarLogo = ref<boolean>(storageSetting.value.sidebarLogo); + const dynamicTitle = ref<boolean>(storageSetting.value.dynamicTitle); + const animationEnable = ref<boolean>(defaultSettings.animationEnable); + const dark = ref<boolean>(defaultSettings.dark); - const prop: { [key: string]: Ref<any> } = { - theme, - sideTheme, - showSettings, - topNav, - tagsView, - fixedHeader, - sidebarLogo, - dynamicTitle, - animationEnable, - dark - }; - - // actions - const changeSetting = (param: { key: SettingTypeEnum; value: any }) => { - const { key, value } = param; - if (key in prop) { - prop[key].value = value; - } - }; const setTitle = (value: string) => { title.value = value; useDynamicTitle(); @@ -54,7 +40,6 @@ dynamicTitle, animationEnable, dark, - changeSetting, setTitle }; }); diff --git a/src/types/global.d.ts b/src/types/global.d.ts index bb1c1e2..c6cb210 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -1,4 +1,5 @@ import type { ComponentInternalInstance as ComponentInstance, PropType as VuePropType } from 'vue/runtime-core'; +import { LanguageEnum } from '@/enums/LanguageEnum'; declare global { /** vue Instance */ @@ -49,6 +50,8 @@ /** 鏄惁绂佺敤涓婁紶 */ isUploading: boolean; + updateSupport: number; + /** 鍏朵粬鍙傛暟 */ [key: string]: any; } @@ -87,76 +90,77 @@ pageNum: number; pageSize: number; } + declare interface LayoutSetting { + /** + * 鏄惁鏄剧ず椤堕儴瀵艰埅 + */ + topNav: boolean; - declare type DefaultSettings = { + /** + * 鏄惁鏄剧ず澶氭爣绛惧鑸� + */ + tagsView: boolean; + /** + * 鏄惁鍥哄畾澶撮儴 + */ + fixedHeader: boolean; + /** + * 鏄惁鏄剧ず渚ц竟鏍廘ogo + */ + sidebarLogo: boolean; + /** + * 鏄惁鏄剧ず鍔ㄦ�佹爣棰� + */ + dynamicTitle: boolean; + /** + * 渚ц竟鏍忎富棰� theme-dark | theme-light + */ + sideTheme: string; + /** + * 涓婚妯″紡 + */ + theme: string; + } + + declare interface DefaultSettings extends LayoutSetting { /** * 缃戦〉鏍囬 */ title: string; /** - * 渚ц竟鏍忎富棰� theme-dark | theme-light - */ - sideTheme?: string; - - /** * 鏄惁鏄剧ず绯荤粺甯冨眬璁剧疆 */ - showSettings?: boolean; + showSettings: boolean; - /** - * 鏄惁鏄剧ず椤堕儴瀵艰埅 - */ - topNav?: boolean; - - /** - * 鏄惁鏄剧ず澶氭爣绛惧鑸� - */ - tagsView?: boolean; - /** - * 鏄惁鍥哄畾澶撮儴 - */ - fixedHeader?: boolean; - /** - * 鏄惁鏄剧ず渚ц竟鏍廘ogo - */ - sidebarLogo?: boolean; /** * 瀵艰埅鏍忓竷灞� */ - layout?: string; - /** - * 涓婚妯″紡 - */ - theme?: string; + layout: string; /** * 甯冨眬澶у皬 */ - size?: string; + size: 'large' | 'default' | 'small'; /** * 璇█ */ - language?: string; + language: LanguageEnum; - /** - * 鏄惁鏄剧ず鍔ㄦ�佹爣棰� - */ - dynamicTitle?: boolean; /** * 鏄惁鍚敤鍔ㄧ敾鏁堟灉 */ - animationEnable?: boolean; + animationEnable: boolean; /** * 鏄惁鍚敤鏆楅粦妯″紡 * * true:鏆楅粦妯″紡 * false: 鏄庝寒妯″紡 */ - dark?: boolean; + dark: boolean; - errorLog?: string; - }; + errorLog: string; + } } export {}; diff --git a/src/types/module.d.ts b/src/types/module.d.ts index 987c349..b1be08d 100644 --- a/src/types/module.d.ts +++ b/src/types/module.d.ts @@ -1,13 +1,13 @@ -import type modal from '@/plugins/modal'; -import type tab from '@/plugins/tab'; -import type download from '@/plugins/download'; -import type auth from '@/plugins/auth'; -import type cache from '@/plugins/cache'; -import type animate from '@/animate'; -import type { useDict } from '@/utils/dict'; -import type { addDateRange, handleTree, selectDictLabel, selectDictLabels, parseTime } from '@/utils/ruoyi'; -import type { getConfigKey, updateConfigByKey } from '@/api/system/config'; -import type { download as rd } from '@/utils/request'; +import modal from '@/plugins/modal'; +import tab from '@/plugins/tab'; +import download from '@/plugins/download'; +import auth from '@/plugins/auth'; +import cache from '@/plugins/cache'; +import animate from '@/animate'; +import { useDict } from '@/utils/dict'; +import handleTree, { addDateRange, selectDictLabel, selectDictLabels, parseTime } from '@/utils/ruoyi'; +import { getConfigKey, updateConfigByKey } from '@/api/system/config'; +import { download as rd } from '@/utils/request'; declare module '@vue/runtime-core' { interface ComponentCustomProperties { diff --git a/src/utils/ruoyi.ts b/src/utils/ruoyi.ts index a116b52..bbba282 100644 --- a/src/utils/ruoyi.ts +++ b/src/utils/ruoyi.ts @@ -245,3 +245,7 @@ export const blobValidate = (data: any) => { return data.type !== 'application/json'; }; + +export default { + handleTree +}; diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 79ae8f8..56078d9 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -306,9 +306,8 @@ import { globalHeaders } from '@/utils/request'; const router = useRouter(); -const { proxy } = getCurrentInstance() as ComponentInternalInstance; +const { proxy } = getCurrentInstance(); const { sys_normal_disable, sys_user_sex } = toRefs<any>(proxy?.useDict('sys_normal_disable', 'sys_user_sex')); - const userList = ref<UserVO[]>(); const loading = ref(true); const showSearch = ref(true); @@ -512,7 +511,7 @@ inputErrorMessage: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿' }) ); - if (!err) { + if (!err && res) { await api.resetUserPwd(row.userId, res.value); proxy?.$modal.msgSuccess('淇敼鎴愬姛锛屾柊瀵嗙爜鏄細' + res.value); } diff --git a/src/views/system/user/profile/userInfo.vue b/src/views/system/user/profile/userInfo.vue index 5ea5456..885f1c9 100644 --- a/src/views/system/user/profile/userInfo.vue +++ b/src/views/system/user/profile/userInfo.vue @@ -24,12 +24,10 @@ <script setup lang="ts"> import { updateUserProfile } from '@/api/system/user'; +import { propTypes } from '@/utils/propTypes'; const props = defineProps({ - user: { - type: Object as PropType<any>, - required: true - } + user: propTypes.any.isRequired }); const userForm = computed(() => props.user); const { proxy } = getCurrentInstance() as ComponentInternalInstance; diff --git a/src/views/tool/gen/genInfoForm.vue b/src/views/tool/gen/genInfoForm.vue index 84e1d90..ad8fd5e 100644 --- a/src/views/tool/gen/genInfoForm.vue +++ b/src/views/tool/gen/genInfoForm.vue @@ -233,7 +233,7 @@ const subColumns = ref<any>([]); const menuOptions = ref<Array<MenuOptionsType>>([]); -const { proxy } = getCurrentInstance() as ComponentInternalInstance; +const { proxy } = getCurrentInstance(); const props = defineProps({ info: propTypes.any.def(null), -- Gitblit v1.9.3