{"version":3,"mappings":"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","names":["pinia","createPinia","__vite_glob_0_0$1","__vite_glob_0_1$1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","__vite_glob_0_6","__vite_glob_0_7","__vite_glob_0_8","__vite_glob_0_9","__vite_glob_0_10","__vite_glob_0_11","__vite_glob_0_12","__vite_glob_0_13","__vite_glob_0_14","__vite_glob_0_15","__vite_glob_0_16","__vite_glob_0_17","__vite_glob_0_18","__vite_glob_0_19","__vite_glob_0_20","__vite_glob_0_21","__vite_glob_0_22","__vite_glob_0_23","__vite_glob_0_24","__vite_glob_0_25","__vite_glob_0_26","__vite_glob_0_27","__vite_glob_0_28","__vite_glob_0_29","__vite_glob_0_30","__vite_glob_0_31","__vite_glob_0_32","__vite_glob_0_33","__vite_glob_0_34","__vite_glob_0_35","__vite_glob_0_36","__vite_glob_0_37","__vite_glob_0_38","__vite_glob_0_39","__vite_glob_0_40","__vite_glob_0_41","__vite_glob_0_42","__vite_glob_0_43","__vite_glob_0_44","__vite_glob_0_45","__vite_glob_0_46","__vite_glob_0_47","__vite_glob_0_48","__vite_glob_0_49","__vite_glob_0_50","__vite_glob_0_51","__vite_glob_0_52","__vite_glob_0_53","__vite_glob_0_54","__vite_glob_0_55","__vite_glob_0_56","__vite_glob_0_57","__vite_glob_0_58","__vite_glob_0_59","__vite_glob_0_60","__vite_glob_0_61","__vite_glob_0_62","Debounce$1","__publicField","fn","delay","self","args","Throttle$1","md5","str","tsMd5","formatNumber","number","decimals","decPoint","thousandsSep","s","last","l","deepClone","data","type","obj","k","f","getCascaderParent","list","id","options","ids","getParent","_list","_id","res","importAssetsFile","url","__vite_glob_0_0","__vite_glob_0_1","XssOptions","xss","v","FilterXSS","ClipboardFunc","textDom","copyResult","Debounce","func.Debounce","Throttle","func.Throttle","MD5","func.md5","FormatNumber","func.formatNumber","DeepClone","func.deepClone","GetCascaderParent","func.getCascaderParent","clipboard.ClipboardFunc","Xss","xss.default","ImportAssetsFile","func.importAssetsFile","GenerateCacheKey","key","SetLocalStorageByObject","val","_val","GetLocalStorageByObject","err","SetLocalStorageByString","GetLocalStorageByString","RemoveLocalStorage","SetSessionStorageByString","GetSessionStorageByString","RemoveSessionStorage","useAppStore","defineStore","state","reactive","cache.GetSessionStorageByString","cache.GetLocalStorageByString","set_loadingShade","loadingShade","set_shrink","isShrink","cache.SetSessionStorageByString","setNowRoutePath","nowRoutePath","setNowRouteSpread","nowRouteSpread","resetRouteState","cache.RemoveSessionStorage","setClientWidth","clientWidth","setLocale","locale","cache.SetLocalStorageByString","setSize","size","getNowRoutePath","computed","getNowRouteSpread","toRefs","_sfc_main$4","defineComponent","appStore","_openBlock","_createBlock","_Teleport","_ctx","_createElementBlock","_hoisted_1","_createCommentVNode","enUS","zhCN","localeTypes","e_zhCN","e_enUS","modules","getLangAll","message","getLangFiles","mList","msg","path","pathName","toggleLocaleAsync","i18n","error","createI18n","_","useI18n","_use","_sfc_main$3","LoadingShade","t","route","useRoute","elementLocle","elementSize","onMounted","onResize","event","watch","_a","_b","to","_component_el_config_provider","__unplugin_components_1","_withCtx","_Suspense","Layout","__vitePreload","components","token_key","SetToken","value","Cookie","GetToken","RemoveToken","timeout","failedRetryIntervalTime","failedRetryCount","req","axios","queue","msg_key","ShowLoading","info","time","nowTime","HiddenLoading","isForce","config","headers","response","userStore","useUserStore","errMsg","content","requestFailedRetry","_c","result","resolve","formatParamsArray","params","Get","Post","Delete","Put","req$1","User_API","Users_API","UserPermission_API","UserPassword_API","GetUserPermission","GetUsers","GetUser","PostUser","PutUser","DeleteUser","PutUserPassword","user_id","password","Login","Login_API","RefreshToken","RefreshToken_API","useViewTagStore","SET_INIT_TAGS","viewTags","ADD_VIEW_TAG","viewTag","SET_TAG","DEL_TAG","index","CLOSE_ALL_TAG","initTags","getAffixRoutes","routes","rts","r","router","addViewTag","setTag","delTag","closeAllTag","getTag","getCacheNames","m","viewTagStore","cache.GetLocalStorageByObject","SET_TOKEN","token","SET_REFRESH_TOKEN","REMOVE_TOKEN","REMOVE_REFRESH_TOKEN","cache.RemoveLocalStorage","SET_USER_INFO","user","SET_IS_REFRESH_TOKEN","isRefresh","REMOVE_USER_INFO","SET_MENUS","menus","cache.SetLocalStorageByObject","REMOVE_MENUS","login","dt","status","refreshRes","loginOut","refreshToken","resetRefreshToken","staticRoutes","GetStaticRoutes","count","routerComponents","GenerateRoutes","generateDynamicRoutes","registerAsyncRoutes","_static_routes","_r","registerStaticRoutes","isRoot","routers","createRouter","createWebHashHistory","startRouterPath","RouterWrite","StaticRouterCount","Nprogress","from","next","_startTime","clipboard","el","bind","permission","perAction","mode","classList","RegisterDirective","app","per","dialogHeader","dialogRoot","cX","cY","down","move","up","init","dialogClassName","className","_sfc_main$2","props","emit","dialogRef","ref","dialogRootRef","open","close","nextTick","_hoisted_2","_hoisted_3","_component_g_svg_icon","_resolveComponent","_createVNode","_Transition","_withDirectives","_createElementVNode","_normalizeStyle","_withModifiers","_cache","_withKeys","_hoisted_4","_renderSlot","svgIconProps","setup","color","width","height","name","_sfc_main$1","currentChange","current","sizeChange","__unplugin_components_0","$event","_sfc_main","context","blobInfo","success","reader","ed","tinymce","cursorGoEnd","onUnmounted","editor","insertContent","copyContent","chartProps","useEchart","charts","domRef","echarts","undefined","renderer","setOption","deep","render","tableProps","tableEmits","emits","_isVNode","tableRef","total","pageNumber","pageSize","tableLoading","clearSelection","toggleRowSelection","toggleAllSelection","toggleRowExpansion","setCurrentRow","clearSort","clearFilter","doLayout","sort","target","unref","Sortable","animation","filter","onStart","e","text","ElLoading","flush","pageChange","slots","elTableColumns","map","ElTableColumn","sortable","sortOrders","formatter","filterPlacement","header_slot","default","header","column","column_slot","ElTable","cellClassName","emptyText","onSelect","onSelect-all","onSelection-change","onCell-mouse-enter","onCell-mouse-leave","onCell-click","onCell-dblclick","onCell-contextmenu","onRow-click","onRow-contextmenu","onRow-dblclick","oHeader-click","onHeader-contextmenu","onSort-change","onFilter-change","onCurrent-change","onHeader-dragend","onExpand-change","_isSlot","onChange","_vShow","markDownProps","mdRender","MD","html","xhtmlOut","breaks","langPrefix","linkify","typographer","quotes","highlight","modelValue","qrCodeProps","qrCode","create","qr","toCanvas","dark","light","backgroundColor","margin","scale","linkProps","Link","svg","icon","left","ElLink","href","iconSelectEmits","icons","Object","keys","replace","change","icon_template","style","onClick","RegisterComponent","Dialog","SvgIcon","Page","Editor","Chart","Table","MarkDown","QrCode","IconSelect","GEditor","RegisterGlobal","func","loadSvg","body","svgDom","createApp","App","VueI18n"],"sources":["../../src/store/index.ts","../../src/assets/icons/404.svg?url","../../src/assets/icons/add.svg?url","../../src/assets/icons/api.svg?url","../../src/assets/icons/authorize.svg?url","../../src/assets/icons/cache.svg?url","../../src/assets/icons/clipboard.svg?url","../../src/assets/icons/close.svg?url","../../src/assets/icons/closeAll.svg?url","../../src/assets/icons/component.svg?url","../../src/assets/icons/dashboard/count.svg?url","../../src/assets/icons/dashboard/dt.svg?url","../../src/assets/icons/dashboard/gz.svg?url","../../src/assets/icons/dashboard/watch.svg?url","../../src/assets/icons/delete.svg?url","../../src/assets/icons/dialog.svg?url","../../src/assets/icons/down.svg?url","../../src/assets/icons/echart.svg?url","../../src/assets/icons/edit.svg?url","../../src/assets/icons/email.svg?url","../../src/assets/icons/exportExcel.svg?url","../../src/assets/icons/fontSize.svg?url","../../src/assets/icons/fullscreen.svg?url","../../src/assets/icons/gitee.svg?url","../../src/assets/icons/home.svg?url","../../src/assets/icons/icon.svg?url","../../src/assets/icons/link.svg?url","../../src/assets/icons/locale.svg?url","../../src/assets/icons/markdown.svg?url","../../src/assets/icons/menu.svg?url","../../src/assets/icons/module.svg?url","../../src/assets/icons/nest.svg?url","../../src/assets/icons/no-fullscreen.svg?url","../../src/assets/icons/password.svg?url","../../src/assets/icons/pdf.svg?url","../../src/assets/icons/permission.svg?url","../../src/assets/icons/qq.svg?url","../../src/assets/icons/qrCode.svg?url","../../src/assets/icons/refresh.svg?url","../../src/assets/icons/richText.svg?url","../../src/assets/icons/role.svg?url","../../src/assets/icons/save.svg?url","../../src/assets/icons/search.svg?url","../../src/assets/icons/shrink.svg?url","../../src/assets/icons/system.svg?url","../../src/assets/icons/table.svg?url","../../src/assets/icons/upload.svg?url","../../src/assets/icons/user.svg?url","../../src/assets/icons/verify.svg?url","../../src/assets/icons/wx.svg?url","../../src/assets/icons/xss.svg?url","../../src/assets/imgs/404.png?url","../../src/assets/imgs/login/background.jpg?url","../../src/assets/imgs/login/docs.png?url","../../src/assets/imgs/login/github.png?url","../../src/assets/imgs/login/login_background.jpg?url","../../src/assets/imgs/login/login_background.svg?url","../../src/assets/imgs/login/login_left.svg?url","../../src/assets/logo.png?url","../../src/assets/style/__variables.scss?url","../../src/assets/style/antdv/antdv.scss?url","../../src/assets/style/element/index.scss?url","../../src/assets/style/global.scss?url","../../src/assets/style/markdown/markdown-dark.scss?url","../../src/utils/func/src/func.ts","../../src/utils/func/src/xss.ts","../../src/utils/func/src/clipboard.ts","../../src/utils/func/index.ts","../../src/utils/cache/src/index.ts","../../src/utils/cache/src/localStorage.ts","../../src/utils/cache/src/sessionStorage.ts","../../src/store/app.ts","../../src/components/LoadingShade/LoadingShade.vue","../../src/locale/src/en-US.ts","../../src/locale/src/zh-CN.ts","../../src/locale/langs.ts","../../src/locale/index.ts","../../src/App.vue","../../src/router/modules/components.ts","../../src/utils/cookie.ts","../../src/utils/request.ts","../../src/api/system/user.ts","../../src/api/oAuth/index.ts","../../src/store/viewTag.ts","../../src/store/user.ts","../../src/router/static.ts","../../src/router/index.ts","../../src/utils/permission.ts","../../src/directive/src/clipboard/index.ts","../../src/directive/src/permission/index.ts","../../src/directive/index.ts","../../src/components/Dialog/index.ts","../../src/components/Dialog/Dialog.vue","../../src/components/SvgIcon/src/options.ts","../../src/components/SvgIcon/src/SvgIcon.tsx","../../src/components/Page/Page.vue","../../src/components/Editor/Editor.vue","../../src/components/Charts/src/options.ts","../../src/components/Charts/src/setup.ts","../../src/components/Charts/src/Chart.tsx","../../src/components/Table/src/options.ts","../../src/components/Table/src/Table.tsx","../../src/components/MarkDown/src/options.ts","../../src/components/MarkDown/src/MarkDown.tsx","../../src/components/QrCode/src/options.ts","../../src/components/QrCode/src/QrCode.tsx","../../src/components/Link/src/options.ts","../../src/components/Link/src/Link.tsx","../../src/components/IconSelect/src/options.ts","../../src/components/IconSelect/src/IconSelect.tsx","../../src/components/index.ts","../../src/global/index.ts","../../virtual:svg-icons-register","../../src/main.ts"],"sourcesContent":["import { createPinia } from \"pinia\";\n\nconst pinia = createPinia();\nexport default pinia;","export default \"__VITE_ASSET__daa0f320__\"","export default \"__VITE_ASSET__543aced3__\"","export default \"__VITE_ASSET__76537e37__\"","export default \"__VITE_ASSET__125fdc30__\"","export default \"__VITE_ASSET__b9a49043__\"","export default \"__VITE_ASSET__81a9f0ca__\"","export default \"__VITE_ASSET__aaabd9ba__\"","export default \"__VITE_ASSET__22edf94f__\"","export default \"__VITE_ASSET__c5676643__\"","export default \"__VITE_ASSET__049f68c6__\"","export default \"__VITE_ASSET__b7378ccd__\"","export default \"__VITE_ASSET__b3bf0bfe__\"","export default \"__VITE_ASSET__87f729d4__\"","export default \"__VITE_ASSET__722fb007__\"","export default \"__VITE_ASSET__3ed3e7c7__\"","export default \"__VITE_ASSET__be0266ab__\"","export default \"__VITE_ASSET__d3139b1e__\"","export default \"__VITE_ASSET__81a4ab51__\"","export default \"__VITE_ASSET__8ec29133__\"","export default \"__VITE_ASSET__f270e0f7__\"","export default \"__VITE_ASSET__b9cdb25a__\"","export default \"__VITE_ASSET__69f28739__\"","export default \"__VITE_ASSET__6d124652__\"","export default \"__VITE_ASSET__2b4d7694__\"","export default \"__VITE_ASSET__65a791c1__\"","export default \"__VITE_ASSET__c4765a88__\"","export default \"__VITE_ASSET__2684553d__\"","export default \"__VITE_ASSET__2f919156__\"","export default \"__VITE_ASSET__8a9d0cc8__\"","export default \"__VITE_ASSET__43050db6__\"","export default \"__VITE_ASSET__32e67657__\"","export default \"__VITE_ASSET__8437e3e7__\"","export default \"__VITE_ASSET__dcc992cb__\"","export default \"__VITE_ASSET__bdb492bd__\"","export default \"__VITE_ASSET__883a835d__\"","export default \"__VITE_ASSET__c8df6f7c__\"","export default \"__VITE_ASSET__86db3934__\"","export default \"__VITE_ASSET__ba7a036d__\"","export default \"__VITE_ASSET__249c805b__\"","export default \"__VITE_ASSET__bdc02141__\"","export default \"__VITE_ASSET__75a1c11c__\"","export default \"__VITE_ASSET__c9293802__\"","export default \"__VITE_ASSET__8e1f9276__\"","export default \"__VITE_ASSET__2d897b5e__\"","export default \"__VITE_ASSET__81ac7c0a__\"","export default \"__VITE_ASSET__31048831__\"","export default \"__VITE_ASSET__5fb1701c__\"","export default \"__VITE_ASSET__8e59f156__\"","export default \"__VITE_ASSET__61f75f16__\"","export default \"__VITE_ASSET__be150867__\"","export default \"__VITE_ASSET__62e5caf9__\"","export default \"__VITE_ASSET__7bdb2d87__\"","export default \"__VITE_ASSET__516f25b1__\"","export default \"__VITE_ASSET__09dccf67__\"","export default \"__VITE_ASSET__b99deadb__\"","export default \"__VITE_ASSET__995dfe6a__\"","export default \"__VITE_ASSET__0667aaf4__\"","export default \"__VITE_ASSET__ab211233__\"","export default \"__VITE_ASSET__96c39b9d__\"","export default \"__VITE_ASSET__811a51ef__\"","export default \"__VITE_ASSET__992aa03f__\"","export default \"__VITE_ASSET__c85f19f4__\"","export default \"__VITE_ASSET__0c4a88bf__\"","/*\n * @ModuleName: 通用函数\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-12-06 17:07:20\n */\nimport { Md5 as tsMd5 } from \"ts-md5\";\n\nexport class Debounce {\n private timer: any;\n\n /**\n * 防抖\n * @param fn\n * @param delay\n * @returns\n */\n public use(fn: Function, delay: number): Function {\n const self = this;\n return (...args: any[]) => {\n if (self.timer) {\n clearTimeout(self.timer);\n }\n self.timer = setTimeout(() => {\n fn.apply(this, args);\n }, delay);\n };\n }\n}\n\nexport class Throttle {\n private timer: any;\n\n /**\n * 节流\n * @param fn\n * @param delay\n * @returns\n */\n public use(fn: Function, delay: number): Function {\n const self = this;\n return (...args: any[]) => {\n if (self.timer) {\n return;\n }\n self.timer = setTimeout(() => {\n fn.apply(this, args);\n self.timer = 0;\n }, delay);\n };\n }\n}\n\n/** MD5加密 */\nexport const md5 = (str: string) => tsMd5.hashStr(str);\n\n/**\n * @description 格式化数字\n * @param number:要格式化的数字\n * @param decimals:保留几位小数 默认0位\n * @param decPoint:小数点符号 默认.\n * @param thousandsSep:千分位符号 默认为,\n */\nexport const formatNumber = (number: number, decimals = 0, decPoint = \".\", thousandsSep = \",\") => {\n if (number / 1000 < 1) {\n return number;\n }\n const s = [];\n let n = (number / 1000).toString();\n\n // 小数\n let last = \"\";\n let l = \"\";\n if (n.includes(\".\")) {\n l = n.split(\".\")[1];\n last = l.substring(0, decimals);\n if (decimals - l.length > 0) {\n last += new Array(decimals - l.length + 1).join(\"0\");\n }\n n = n.split(\".\")[0];\n } else {\n last = new Array(decimals + 1).join(\"0\");\n n = \"0\";\n }\n\n if (n === \"0\") {\n return `0${ decimals !== 0 ? decPoint : \"\" }${ last }`;\n }\n do {\n n = (parseInt(n) / 1000).toString();\n s.unshift(parseInt(n.split(\".\")[1]).toString());\n n = n.split(\".\")[0];\n } while (n.split(\".\")[0] !== \"0\" || n !== \"0\");\n\n return `${ s.join(thousandsSep) }${ decimals !== 0 ? decPoint : \"\" }${ last }`;\n};\n\n/**\n * 深拷贝\n * @param data\n * @returns\n */\nexport const deepClone = >(data: T) => {\n const type = Object.prototype.toString.call(data);\n let obj: any;\n if (type === \"[object Object]\") {\n obj = {};\n for (const k in data) {\n obj[k] = deepClone(data[k]);\n }\n } else if (type === \"[object Array]\") {\n obj = [];\n data.forEach((f: any, i: number) => {\n obj[i] = deepClone(f);\n });\n } else {\n obj = data;\n }\n return obj as T;\n};\n\n/**\n * 级联选择器,通过最后一级获取所有父级节点,返回级联数组\n * @param list\n * @param id\n * @param options\n * @returns Array[]\n */\nexport const getCascaderParent = (list: any[], id: string | number, options = { id: \"id\", parentId: \"parent_id\", children: \"children\" }) => {\n let ids = [];\n\n const getParent = (_list: any[], _id: string | number, res: any[]) => {\n _list.forEach((f) => {\n if (f[options.id] === _id && f[options.parentId] !== 0) {\n res.push(f[options.parentId]);\n res = res.concat(getParent(list, f[options.parentId], []));\n return;\n }\n res = res.concat(getParent(f.children, _id, []));\n });\n return res;\n };\n ids = getParent(list, id, [id]);\n ids.reverse();\n return ids;\n};\n\n/**\n * 动态引入资源文件\n * @param url 资源文件路径\n * @returns\n */\nexport const importAssetsFile = (url: string) => {\n if (!url) {\n return \"\";\n }\n\n // 处理 / 前缀\n if (url[0].toString() === \"/\") {\n url = url.substring(1);\n }\n\n return new URL(`../../../assets/${ url }`, import.meta.url).href;\n};\n","/*\n * @ModuleName: Custom Filter Xss\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-03-08 09:21:27\n */\nimport { FilterXSS } from \"xss\"\n\n// options配置参考:https://github.com/leizongmin/js-xss/blob/master/README.zh.md\nconst XssOptions = {\n whiteList: {\n div: [\"style\"],\n },\n}\n\nexport default (v:string) => new FilterXSS(XssOptions).process(v)","/*\n * @ModuleName: Clipboard\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-10-26 15:33:42\n */\n\n/** 写入剪切板 */\nexport const ClipboardFunc = (data: string) => {\n if (navigator.clipboard) {\n return navigator.clipboard.writeText(data);\n }\n \n const textDom = document.createElement(\"textarea\");\n textDom.innerText = data;\n textDom.style.zIndex = \"0\";\n textDom.style.top = \"-999999px\";\n textDom.style.left = \"-999999px\";\n textDom.style.position = \"absolute\";\n document.body.appendChild(textDom);\n textDom.select();\n const copyResult = document.execCommand(\"copy\");\n setTimeout(() => {\n document.body.removeChild(textDom);\n }, 100);\n return copyResult ? Promise.resolve() : Promise.reject();\n};","import * as func from \"./src/func\"\nimport * as xss from \"./src/xss\"\nimport * as clipboard from \"./src/clipboard\"\n\nexport const Debounce = func.Debounce;\nexport const Throttle = func.Throttle;\nexport const MD5 = func.md5;\nexport const FormatNumber = func.formatNumber;\nexport const DeepClone = func.deepClone;\nexport const GetCascaderParent = func.getCascaderParent\nexport const ClipboardFunc = clipboard.ClipboardFunc;\nexport const Xss = xss.default;\nexport const ImportAssetsFile = func.importAssetsFile;","/*\n * @ModuleName: \n * @Author: yuetchn@163.com\n * @LastEditTime: 2023-01-12 12:16:59\n */\nimport { MD5 } from \"@/utils/func\"\n\nexport const GenerateCacheKey = (key: string) => `__c_u_k__${ MD5(key) }`","/*\n * @ModuleName: Local Storage\n * @Author: yuetchn@163.com\n * @LastEditTime: 2023-01-12 12:14:58\n */\n\nimport { DeepClone } from \"@/utils/func\"\nimport { GenerateCacheKey } from \"./index\";\n\nexport const SetLocalStorageByObject = (key:string, val:object) => {\n key = GenerateCacheKey(key)\n const _val = DeepClone(val)\n localStorage.setItem(key, JSON.stringify(_val))\n}\n\nexport const GetLocalStorageByObject = (key: string): T | null => {\n key = GenerateCacheKey(key)\n let _val = localStorage.getItem(key)\n if (!_val) {\n return null\n }\n try {\n _val = JSON.parse(_val)\n } catch (err) {\n // eslint-disable-next-line\n console.error(new Error(`localStorage:the '${ key }' key doesn't exist.`))\n return null\n }\n return _val ? (_val as unknown) as T : null\n}\n\nexport const SetLocalStorageByString = (key:string, val:string) => localStorage.setItem(GenerateCacheKey(key), val)\nexport const GetLocalStorageByString = (key: string) => localStorage.getItem(GenerateCacheKey(key)) \nexport const RemoveLocalStorage = (key:string) => localStorage.removeItem(GenerateCacheKey(key))","/*\n * @ModuleName: Session Storage\n * @Author: yuetchn@163.com\n * @LastEditTime: 2023-01-12 12:15:48\n */\nimport { DeepClone } from \"@/utils/func\"\nimport { GenerateCacheKey } from \"./index\";\n\nexport const SetSessionStorageByObject = (key: string, val: object) => {\n key = GenerateCacheKey(key)\n const _val = DeepClone(val)\n sessionStorage.setItem(key, JSON.stringify(_val))\n}\n \nexport const GetSessionStorageByObject = (key: string):T|null => {\n key = GenerateCacheKey(key)\n let _val = sessionStorage.getItem(key)\n if (!_val) {\n return null\n }\n try {\n _val = JSON.parse(_val)\n } catch (err) {\n // eslint-disable-next-line\n console.error(new Error(`sessionStorage:the '${ key }' key doesn't exist.`))\n return null\n }\n return _val ? (_val as unknown) as T : null\n}\n\nexport const SetSessionStorageByString = (key:string, val:string) => sessionStorage.setItem(GenerateCacheKey(key), val)\nexport const GetSessionStorageByString = (key: string) => sessionStorage.getItem(GenerateCacheKey(key))\nexport const RemoveSessionStorage = (key:string) => sessionStorage.removeItem(GenerateCacheKey(key))","import { defineStore } from \"pinia\";\nimport { reactive, computed, toRefs } from \"vue\";\nimport * as cache from \"@/utils/cache\";\n\ninterface AppStates {\n /** 遮罩状态 */\n loadingShade: boolean;\n /** 侧边收缩状态 */\n isShrink: boolean;\n /** 当前路由状态 */\n nowRoutePath: string;\n /** 当前路由展开状态 */\n nowRouteSpread: string;\n /** client 宽度 */\n clientWidth: number;\n /** 国际化语言 */\n locale: string;\n /** 组件大小 \"large\" | \"default\" | \"small\" */\n size: string;\n}\n\nexport const useAppStore = defineStore(\"appStore\", () => {\n const state = reactive({\n loadingShade: false,\n nowRoutePath: cache.GetSessionStorageByString(\"nowRoutePath\") || \"/\",\n isShrink: cache.GetSessionStorageByString(\"isShrink\") === \"1\",\n nowRouteSpread: cache.GetSessionStorageByString(\"nowRouteSpread\") || \"\",\n clientWidth: 0,\n locale: cache.GetLocalStorageByString(\"locale\") || \"zh-CN\",\n size: (cache.GetLocalStorageByString(\"size\") as any) || \"default\",\n })\n\n /**\n * 修改遮罩状态\n * @param loadingShade\n * @constructor\n */\n const set_loadingShade = (loadingShade: boolean) => {\n state.loadingShade = loadingShade;\n }\n\n /**\n * 侧边导航栏收缩\n * @param isShrink\n * @constructor\n */\n const set_shrink = (isShrink: boolean) => {\n state.isShrink = isShrink;\n cache.SetSessionStorageByString(\"isShrink\", isShrink ? \"1\" : \"0\");\n }\n\n /**\n * 修改当前路由状态\n * @param nowRoutePath\n */\n const setNowRoutePath = (nowRoutePath: string) => {\n state.nowRoutePath = nowRoutePath;\n cache.SetSessionStorageByString(\"nowRoutePath\", nowRoutePath);\n }\n\n /**\n * 修改当前路由展开状态\n * @param nowRouteSpread\n */\n const setNowRouteSpread = (nowRouteSpread: string[]) => {\n state.nowRouteSpread = nowRouteSpread.toString();\n cache.SetSessionStorageByString(\"nowRouteSpread\", nowRouteSpread.toString());\n }\n\n /**\n * 重置路由状态\n */\n const resetRouteState = () => {\n state.nowRoutePath = \"/\";\n state.nowRouteSpread = \"\";\n cache.RemoveSessionStorage(\"nowRoutePath\");\n cache.RemoveSessionStorage(\"nowRouteSpread\");\n }\n\n const setClientWidth = (clientWidth: number) => {\n state.clientWidth = clientWidth;\n }\n\n const setLocale = (locale: string) => {\n state.locale = locale;\n cache.SetLocalStorageByString(\"locale\", locale);\n }\n\n const setSize = (size: string) => {\n state.size = size;\n cache.SetLocalStorageByString(\"size\", size);\n }\n\n const getNowRoutePath = computed(() => [state.nowRoutePath]);\n const getNowRouteSpread = computed(() => (state.nowRouteSpread !== \"\" ? state.nowRouteSpread.split(\",\") : []));\n\n return {\n ...toRefs(state),\n set_loadingShade,\n set_shrink,\n setNowRoutePath,\n setNowRouteSpread,\n resetRouteState,\n setClientWidth,\n setLocale,\n setSize,\n getNowRoutePath,\n getNowRouteSpread,\n }\n})","\n\n","/*\n * @ModuleName: en-US\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-04-21 07:36:08\n */\nexport default {\n // NavBar\n navBar: {\n refresh: \"Refresh\",\n fullScreen: \"FullScreen\",\n userCenter: \"UserCenter\",\n loginOut: \"LoginOut\",\n closeAllTags: \"CloseAllTags\",\n hellow: \"Hellow\",\n locale: \"Language\",\n },\n // routes\n dashboard: \"Home\",\n components: \"Components\",\n dashboardIndex: \"Dashboard\",\n login: \"Login\",\n tablePage: \"Table\",\n richTextEdit: \"RichTextEditor\",\n markdownIndex: \"MarkDown\",\n fileUpload: \"FileUpload\",\n dialog: \"Dialog\",\n clipboard: \"Clipboard\",\n clipboardIndex: \"Clipboard\",\n permission: \"Permission\",\n permissionTest: \"MenuPermission\",\n permissionTest2: \"MenuPermission2\",\n icon: \"Icon\",\n iconIndex: \"Icon\",\n verify: \"RegularVerify\",\n verifyIndex: \"RegularVerify\",\n xss: \"XssInject\",\n xssIndex: \"XssInject\",\n routerNest: \"RouteNest\",\n exportExcel: \"ExportExcel\",\n exportExcelIndex: \"ExportExcel\",\n link: \"ExternalLink\",\n linkIndex: \"ExternalLink\",\n echarts: \"Echarts\",\n chartLine: \"Line\",\n error: \"Error\",\n \"404Index\": \"404\",\n locale: \"I18n\",\n localeIndex: \"I18n\",\n qrCode: \"QrCode\",\n cache: \"Cache\",\n cacheIndex: \"Cache\",\n linkComponent: \"Link\",\n};\n","/*\n * @ModuleName: zh-CN\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-04-21 07:35:38\n */\nexport default {\n // NavBar\n navBar: {\n refresh: \"刷新\",\n fullScreen: \"全屏\",\n userCenter: \"个人中心\",\n loginOut: \"退出登录\",\n closeAllTags: \"关闭所有Tag\",\n hellow: \"你好\",\n locale: \"语言\",\n },\n // routes\n dashboard: \"首页\",\n components: \"组件展示\",\n dashboardIndex: \"控制台\",\n login: \"登录\",\n tablePage: \"表格\",\n richTextEdit: \"富文本编辑器\",\n markdownIndex: \"MarkDown\",\n fileUpload: \"文件上传\",\n dialog: \"弹窗\",\n clipboard: \"剪切板\",\n clipboardIndex: \"剪切板\",\n permission: \"权限\",\n permissionTest: \"菜单权限\",\n permissionTest2: \"菜单权限2\",\n icon: \"Icon\",\n iconIndex: \"Icon\",\n verify: \"正则验证\",\n verifyIndex: \"正则验证\",\n xss: \"Xss注入\",\n xssIndex: \"Xss注入\",\n routerNest: \"路由嵌套\",\n exportExcel: \"导出Excel\",\n exportExcelIndex: \"导出Excel\",\n link: \"外链\",\n linkIndex: \"外链\",\n echarts: \"图表\",\n chartLine: \"Line\",\n error: \"错误\",\n \"404Index\": \"404\",\n locale: \"国际化\",\n localeIndex: \"国际化\",\n qrCode: \"二维码\",\n cache: \"缓存\",\n cacheIndex: \"缓存\",\n linkComponent: \"链接\",\n};","/*\n * @ModuleName: Language Types\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-08-09 10:56:20\n */\n\nimport e_zhCN from \"element-plus/es/locale/lang/zh-cn\";\nimport e_enUS from \"element-plus/es/locale/lang/en\";\n\nexport const localeTypes = [{\n key: \"zh-CN\",\n name: \"中文\",\n elementUI: e_zhCN,\n},\n{\n key: \"en-US\",\n name: \"English\",\n elementUI: e_enUS,\n},\n];","/*\n * @ModuleName: i18n\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-08-09 10:41:57\n */\nimport { createI18n, useI18n as _use } from \"vue-i18n\";\nimport { useAppStore } from \"@/store/app\";\nimport pinia from \"@/store\";\n\nconst appStore = useAppStore(pinia);\n\nconst modules = import.meta.globEager(\"./src/*.ts\");\nconst getLangAll = () => {\n const message: any = {};\n getLangFiles(modules, message);\n return message;\n};\n\n/**\n * 获取所有语言文件\n * @param {Object} mList\n */\nconst getLangFiles = (mList: any, msg: any) => {\n for (const path in mList) {\n if (mList[path].default) {\n // 获取文件名\n const pathName = path.substr(path.lastIndexOf(\"/\") + 1, 5);\n\n if (msg[pathName]) {\n msg[pathName] = {\n ...mList[pathName],\n ...mList[path].default,\n };\n } else {\n msg[pathName] = mList[path].default;\n }\n }\n }\n};\n\n/**\n * 异步切换语言\n * @param key\n * @returns\n */\nexport const toggleLocaleAsync = async (key: string) => {\n try {\n if (!key) {\n return Promise.resolve()\n }\n\n appStore.setLocale(key);\n if (i18n.mode === \"legacy\") {\n i18n.global.locale = key as any\n } else {\n i18n.global.locale.value = key as any\n }\n return Promise.resolve()\n } catch (error) {\n return Promise.reject(new Error(\"🚧Failed to load language!\"))\n }\n};\n\nconst i18n = createI18n({\n legacy: false, // Composition API 模式\n globalInjection: true, // 全局注册 $t方法\n allowComposition: true,\n fallbackWarn: false,\n locale: appStore.locale,\n messages: getLangAll(),\n missing: (_, k: string) => k,\n});\n\nexport * from \"./langs\"\n\nexport const useI18n = () => ({ ..._use() })\n\nexport default i18n;","\n\n\n\n","/*\n * @ModuleName: 组件展示\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-04-15 15:43:31\n */\nimport { RouteRecordRaw } from \"vue-router\";\n\nconst Layout = () => import(\"@/layout/Layout.vue\");\n\nexport default [\n {\n path: \"/components\",\n redirect: \"/components/tablePage\",\n name: \"components\",\n component: Layout,\n meta: {\n title: \"组件展示\",\n icon: \"component\",\n },\n children: [\n {\n path: \"tablePage\",\n name: \"tablePage\",\n component: () => import(\"@/views/components/tablePage.vue\"),\n meta: {\n title: \"表格\",\n icon: \"table\",\n },\n },\n {\n path: \"richTextEdit\",\n name: \"richTextEdit\",\n component: () => import(\"@/views/components/richTextEdit.vue\"),\n meta: {\n title: \"富文本编辑器\",\n icon: \"richText\",\n },\n },\n {\n path: \"fileUpload\",\n name: \"fileUpload\",\n component: () => import(\"@/views/components/fileUpload.vue\"),\n meta: {\n title: \"文件上传\",\n icon: \"upload\",\n },\n },\n {\n path: \"dialog\",\n name: \"dialog\",\n component: () => import(\"@/views/components/dialog.vue\"),\n meta: {\n title: \"Dialog\",\n icon: \"dialog\",\n },\n },\n ],\n },\n {\n path: \"/clipboard\",\n name: \"clipboard\",\n component: Layout,\n meta: {\n title: \"剪切板\",\n icon: \"clipboard\",\n },\n children: [\n {\n path: \"clipboardIndex\",\n name: \"clipboardIndex\",\n component: () => import(\"@/views/components/clipboard.vue\"),\n meta: {\n title: \"剪切板\",\n icon: \"clipboard\",\n },\n },\n ],\n },\n {\n path: \"/permission\",\n name: \"permission\",\n component: Layout,\n meta: {\n title: \"权限\",\n icon: \"permission\",\n },\n children: [\n {\n path: \"test\",\n name: \"permissionTest\",\n component: () => import(\"@/views/components/permission/test.vue\"),\n meta: {\n title: \"菜单权限\",\n icon: \"permission\",\n },\n },\n ],\n },\n {\n path: \"/icon\",\n redirect: \"/icon/index\",\n name: \"icon\",\n component: Layout,\n meta: {\n title: \"Icon图标\",\n icon: \"icon\",\n },\n children: [\n {\n path: \"index\",\n name: \"iconIndex\",\n component: () => import(\"@/views/components/icon.vue\"),\n meta: {\n title: \"Icon图标\",\n icon: \"icon\",\n },\n },\n ],\n },\n {\n path: \"/verify\",\n redirect: \"/verify/index\",\n name: \"verify\",\n component: Layout,\n meta: {\n title: \"正则验证\",\n icon: \"verify\",\n },\n children: [\n {\n path: \"index\",\n name: \"verifyIndex\",\n component: () => import(\"@/views/components/verifys.vue\"),\n meta: {\n title: \"正则验证\",\n icon: \"verify\",\n },\n },\n ],\n },\n {\n path: \"/routerNest\",\n redirect: \"/routerNest/index\",\n name: \"routerNest\",\n component: Layout,\n meta: {\n title: \"路由嵌套\",\n icon: \"module\",\n },\n children: [\n {\n path: \"index\",\n name: \"routerNestIndex\",\n component: () => import(\"@/views/components/dialog.vue\"),\n meta: {\n title: \"子路由1\",\n icon: \"module\",\n },\n children: [\n {\n path: \"routerNestChildrenIndex\",\n name: \"routerNestChildrenIndex\",\n component: () => import(\"@/views/components/dialog.vue\"),\n meta: {\n title: \"子子路由1\",\n icon: \"module\",\n },\n },\n {\n path: \"routerNestChildren2\",\n name: \"routerNestChildren2\",\n component: () => import(\"@/views/components/dialog.vue\"),\n meta: {\n title: \"子子路由2\",\n icon: \"module\",\n },\n },\n {\n path: \"routerNestChildren3\",\n name: \"routerNestChildren3\",\n component: () => import(\"@/views/components/dialog.vue\"),\n meta: {\n title: \"子子路由3\",\n icon: \"module\",\n },\n },\n ],\n },\n {\n path: \"routerNest2\",\n name: \"routerNest2\",\n component: () => import(\"@/views/components/dialog.vue\"),\n meta: {\n title: \"子路由2\",\n icon: \"module\",\n },\n },\n {\n path: \"routerNest3\",\n name: \"routerNest3\",\n component: () => import(\"@/views/components/dialog.vue\"),\n meta: {\n title: \"子路由3\",\n icon: \"module\",\n },\n },\n ],\n },\n {\n path: \"/exportExcel\",\n name: \"exportExcel\",\n component: Layout,\n meta: {\n title: \"导出Excel\",\n icon: \"exportExcel\",\n },\n children: [\n {\n path: \"exportExcelIndex\",\n name: \"exportExcelIndex\",\n component: () => import(\"@/views/components/exportExcel.vue\"),\n meta: {\n title: \"导出Excel\",\n icon: \"exportExcel\",\n },\n },\n ],\n },\n {\n path: \"/echarts\",\n name: \"echarts\",\n component: Layout,\n meta: {\n title: \"图表\",\n icon: \"echart\",\n },\n children: [\n {\n path: \"chartLine\",\n name: \"chartLine\",\n component: () => import(\"@/views/components/echarts/chartLine.vue\"),\n meta: {\n title: \"Line\",\n icon: \"echart\",\n },\n },\n ],\n },\n {\n path: \"/error\",\n name: \"error\",\n component: Layout,\n redirect: \"/error/404Index\",\n meta: {\n title: \"错误页面\",\n icon: \"404\",\n },\n children: [\n {\n path: \"404Index\",\n name: \"404Index\",\n component: () => import(\"@/views/404/404.vue\"),\n meta: {\n title: \"404\",\n icon: \"404\",\n },\n },\n ],\n },\n {\n path: \"/pdf\",\n name: \"pdf\",\n component: Layout,\n meta: {\n title: \"PDF\",\n icon: \"pdf\",\n },\n children: [],\n },\n {\n path: \"/link\",\n name: \"外链\",\n component: Layout,\n redirect: \"/link/index\",\n meta: {\n title: \"外链\",\n icon: \"link\",\n },\n children: [\n {\n path: \"index\",\n name: \"linkIndex\",\n component: Layout,\n meta: {\n title: \"外链\",\n icon: \"link\",\n link: \"https://gitee.com/yuetchn_admin/VueNext-ElementPlus-Admin\",\n },\n },\n ],\n },\n];\n","/*\n * @ModuleName: Cookies\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-01-12 11:49:03\n */\nimport Cookie from \"js-cookie\";\n\nconst token_key = \"pro_token\";\n\n// token\nexport const SetToken = (value: string): string | undefined => Cookie.set(token_key, value);\nexport const GetToken = (): string | undefined => Cookie.get(token_key);\nexport const RemoveToken = (): void => Cookie.remove(token_key);\n","/*\n * @ModuleName: Http Request\n * @Author: yuetchn@163.com\n * @LastEditTime: 2023-01-13 15:47:16\n */\n\nimport axios, { AxiosRequestConfig, AxiosError } from \"axios\";\nimport { message, MessageArgsProps } from \"ant-design-vue\";\nimport { IAxiosResponseBody } from \"@/types\";\nimport { GetToken } from \"@/utils/cookie\";\nimport { useAppStore } from \"@/store/app\";\nimport { useUserStore } from \"@/store/user\";\nimport pinia from \"@/store\";\n\ninterface IRequestFailedRetry {\n isOk: boolean;\n retryCount: number;\n result: () => Promise;\n}\n\nconst timeout = 1000 * import.meta.env.VITE_HTTP_REQUEST_TIME_OUT;\nconst failedRetryIntervalTime = import.meta.env.VITE_GLOBAL_REQUEST_FAILED_RETRY_INTERVAL_TIME;\nconst failedRetryCount = import.meta.env.VITE_GLOBAL_REQUEST_FAILED_RETRY_COUNT;\n\nconst req = axios.create({\n baseURL: import.meta.env.VITE_BASE_HOST,\n timeout,\n timeoutErrorMessage: \"连接超时\",\n failedRetryCount: import.meta.env.VITE_GLOBAL_REQUEST_FAILED_RETRY_COUNT,\n});\n\n// 请求队列\nlet queue = 0;\nconst msg_key = \"request_queue_message_key\";\nconst ShowLoading = ((info = \"加载中\") => {\n const appStore = useAppStore(pinia);\n\n let time: any = 0;\n return () => {\n const nowTime = new Date().getTime();\n queue++;\n if (nowTime - time > 200) {\n time = nowTime;\n appStore.set_loadingShade(true);\n message.loading({\n content: info,\n duration: timeout,\n key: msg_key,\n });\n }\n };\n})();\n\nconst HiddenLoading = (isForce = false) => {\n const appStore = useAppStore(pinia);\n\n isForce ? (queue = 0) : queue--;\n if (queue > 0) {\n return;\n }\n queue = 0;\n appStore.set_loadingShade(false);\n message.destroy(msg_key);\n};\n\nreq.interceptors.request.use(\n (config) => {\n const appStore = useAppStore(pinia);\n // loading\n (config.loading !== false && !config.__timestamp) ? ShowLoading() : null;\n\n // headers\n const headers: Record = {\n \"Accept-Language\": appStore.locale,\n };\n\n if (GetToken()) {\n headers.Authorization = GetToken() as string;\n }\n\n // custom params\n config.params = Object.assign(config.params || {}, {\n timestamp: new Date().getTime(),\n });\n\n config.headers = { ...config.headers, ...headers };\n return config;\n },\n (err) => {\n HiddenLoading(true)\n return Promise.reject(err);\n },\n);\n\nreq.interceptors.response.use(\n (response) => {\n HiddenLoading();\n\n return response;\n },\n async (err: AxiosError>) => {\n const userStore = useUserStore(pinia);\n\n const errMsg = {\n config: {\n content: \"连接失败\",\n } as MessageArgsProps,\n isFetry: false,\n isLoading: true,\n isRefreshToken: false,\n failed: undefined as IRequestFailedRetry | undefined,\n setErrMsg(content: string, type: \"info\" | \"success\" | \"error\" | \"warning\" | \"loading\") {\n this.config.content = content;\n this.config.type = type;\n },\n // 失败重试\n fetry() {\n this.failed = requestFailedRetry(err);\n this.isFetry = true;\n },\n };\n\n if (err.message.includes(\"timeout\")) {\n errMsg.setErrMsg(\"连接超时\", \"error\")\n errMsg.fetry();\n } else {\n switch (err.response?.status) {\n case 401:\n try {\n if (userStore.isRefreshToken) {\n errMsg.isLoading = false;\n userStore.resetRefreshToken();\n throw new Error(\"会话超时\")\n }\n await userStore.refreshToken();\n errMsg.isRefreshToken = true;\n } catch (err) {\n errMsg.setErrMsg(\"会话超时\", \"warning\");\n setTimeout(() => {\n userStore.loginOut();\n }, 1000);\n }\n\n break;\n case 502:\n errMsg.setErrMsg(\"网关错误\", \"error\");\n errMsg.fetry();\n break;\n\n default:\n errMsg.setErrMsg(err.response?.data.msg || \"连接失败\", \"error\");\n break;\n }\n }\n\n // 关闭弹窗\n HiddenLoading(true);\n\n if (errMsg.isRefreshToken) {\n return Promise.resolve(req(err.config));\n }\n if (errMsg.failed && errMsg.failed.isOk && errMsg.isFetry) {\n message.loading({\n key: msg_key,\n content: `正在尝试第${ failedRetryCount - (errMsg.failed?.retryCount || 0) }次重试...`,\n });\n const res = await errMsg.failed.result();\n return Promise.resolve(res);\n }\n\n errMsg.isLoading ? message.open(errMsg.config) : null;\n return Promise.reject(err);\n },\n);\n\nconst requestFailedRetry = (err: AxiosError>) => {\n let result: IRequestFailedRetry = {\n isOk: false,\n retryCount: err.config.failedRetryCount || 0,\n result: () => Promise.reject(err),\n };\n const config = err.config;\n if (config && config.failedRetryCount) {\n config.failedRetryCount--;\n config.__timestamp = Date.now();\n result.isOk = true;\n result.result = () => new Promise((resolve) => {\n setTimeout(() => {\n resolve(req(config))\n }, failedRetryIntervalTime);\n });\n } else {\n result = {\n isOk: false,\n retryCount: 0,\n result: () => Promise.reject(err),\n };\n }\n\n result.retryCount = config.failedRetryCount || 0;\n return result;\n};\n\nconst formatParamsArray = (params: Record) => {\n if (!params) {\n return {};\n }\n Object.keys(params)\n .forEach((f) => {\n if (Object.prototype.toString.call(params[f]) === \"[object Array]\") {\n params[f] = JSON.stringify(params[f]);\n }\n });\n return params;\n};\n\n/**\n * Http Get Request\n * @param url\n * @param params\n * @returns\n */\nconst Get = (url: string, params?: any, options?: AxiosRequestConfig) => req({\n url,\n method: \"GET\",\n params: formatParamsArray(params),\n ...options,\n});\n\n/**\n * Http Post Request\n * @param url\n * @param data\n * @returns\n */\nconst Post = (url: string, data?: any, options?: AxiosRequestConfig) => req({\n url,\n method: \"POST\",\n data,\n ...options,\n});\n\n/**\n * Http Delete Request\n * @param url\n * @param data\n * @returns\n */\nconst Delete = (url: string, params?: any, options?: AxiosRequestConfig) => req({\n url,\n method: \"DELETE\",\n params: formatParamsArray(params),\n ...options,\n});\n\n/**\n * Http Put Request\n * @param url\n * @param data\n * @returns\n */\nconst Put = (url: string, data?: any, options?: AxiosRequestConfig) => req({\n url,\n method: \"PUT\",\n data,\n ...options,\n});\n\n/**\n * Http Request Hook\n * @returns\n */\nexport default {\n Get,\n Post,\n Put,\n Delete,\n Request: req,\n};\n","/*\n * @ModuleName: User Api\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-12-23 14:50:45\n */\nimport { IRequestPageInfo, IResponsePageInfo } from \"@/types\";\nimport req from \"@/utils/request\";\n\nexport const User_API = \"system/user\";\nexport const Users_API = \"system/users\";\nexport const UserPermission_API = \"system/userPermission\";\nexport const UserPassword_API = \"system/userPassword\";\n\n/**\n * 获取用户权限信息\n * @returns\n */\nexport const GetUserPermission = () => req.Get(UserPermission_API);\n\n/**\n * 获取用户集合\n * @param params\n * @returns\n */\nexport const GetUsers = (params: IRequestPageInfo) => req.Get>(Users_API, params);\n\n/**\n * 获取用户信息\n * @param id\n * @returns\n */\nexport const GetUser = (id: number) => req.Get(User_API, { user_id: id });\n\n/**\n * 新增用户\n * @param data\n * @returns\n */\nexport const PostUser = (data: any) => req.Post(User_API, data);\n\n/**\n * 修改用户\n * @param data\n * @returns\n */\nexport const PutUser = (data: any) => req.Put(User_API, data);\n\n/**\n * 删除用户\n * @param ids\n * @returns\n */\nexport const DeleteUser = (ids: number[]) => req.Delete(User_API, { ids });\n\n/**\n * 重置密码\n * @param user_id\n * @param password\n * @returns\n */\nexport const PutUserPassword = (user_id: number, password: string) => req.Put(UserPassword_API, { user_id, password });\n","/*\n * @ModuleName: oAuth Api\n * @Author: yuetchn@163.com\n * @LastEditTime: 2023-01-13 09:18:29\n */\nimport req from \"@/utils/request\";\n\n/**\n * 授权登录\n * @param data\n * @returns\n */\nexport const Login = (data: { account: string; password: string }) => req.Post(Login_API, data);\nexport const Login_API = \"oAuth/login\";\n\n/**\n * 刷新Token\n * @returns \n */\nexport const RefreshToken = () => req.Get<{ token: string, refresh_token: string }>(RefreshToken_API, null, { loading: false });\nexport const RefreshToken_API = \"oAuth/refreshToken\";\n","import { computed, reactive, toRefs } from \"vue\"\nimport { defineStore } from \"pinia\";\nimport { RouteLocationNormalizedLoaded, RouteRecordNormalized } from \"vue-router\";\nimport router from \"@/router\";\n\ninterface ViewTagStates {\n viewTags: RouteLocationNormalizedLoaded[];\n tag: RouteLocationNormalizedLoaded;\n initTagsData: RouteLocationNormalizedLoaded[];\n}\n\nexport const useViewTagStore = defineStore(\"viewTagStore\", () => {\n const state = reactive({\n viewTags: [],\n tag: {},\n initTagsData: [],\n });\n\n const SET_INIT_TAGS = (viewTags: RouteLocationNormalizedLoaded[]) => {\n state.initTagsData = viewTags;\n };\n\n const ADD_VIEW_TAG = (viewTag: RouteLocationNormalizedLoaded) => {\n const index = state.viewTags.findIndex((f) => f.path === viewTag.path);\n index === -1 && state.viewTags.push(viewTag);\n };\n\n const SET_TAG = (viewTag: RouteLocationNormalizedLoaded) => {\n state.tag = viewTag;\n };\n\n const DEL_TAG = (viewTag: RouteLocationNormalizedLoaded) => {\n const index = state.viewTags.findIndex((f) => f.path === viewTag.path);\n\n index !== -1 && state.viewTags.splice(index, 1);\n };\n\n const CLOSE_ALL_TAG = () => {\n state.viewTags = [];\n };\n\n const initTags = () => {\n const getAffixRoutes = (routes: RouteRecordNormalized[]) => {\n let rts: RouteLocationNormalizedLoaded[] = [];\n routes.forEach((r) => {\n if (r.meta && r.meta.affix && !r.meta.noTag) {\n rts.push({\n path: r.path,\n name: r.name,\n meta: { ...r.meta },\n query: {},\n params: {},\n matched: [],\n hash: \"\",\n redirectedFrom: undefined,\n fullPath: r.path,\n });\n\n if (r.children) {\n rts = [...rts, ...getAffixRoutes(r.children as RouteRecordNormalized[])];\n }\n }\n });\n return rts;\n };\n\n SET_INIT_TAGS(getAffixRoutes(router.getRoutes()));\n };\n\n const addViewTag = (viewTag: RouteLocationNormalizedLoaded) => {\n ADD_VIEW_TAG(viewTag);\n };\n\n const setTag = (viewTag: RouteLocationNormalizedLoaded) => {\n SET_TAG(viewTag);\n };\n\n const delTag = (viewTag: RouteLocationNormalizedLoaded) => {\n DEL_TAG(viewTag);\n };\n\n const closeAllTag = () => {\n CLOSE_ALL_TAG();\n };\n\n const getTag = computed(() => state.tag || {});\n\n const getCacheNames = computed(() => [...state.initTagsData, ...state.viewTags].filter(f => f.meta?.cache).map(m => m.name));\n\n return {\n ...toRefs(state),\n initTags,\n addViewTag,\n setTag,\n delTag,\n closeAllTag,\n getTag,\n getCacheNames,\n }\n});","import { reactive, toRefs } from \"vue\"\nimport { defineStore } from \"pinia\"\nimport * as cache from \"@/utils/cache\";\nimport { GetToken, SetToken, RemoveToken } from \"@/utils/cookie\";\nimport { GetUserPermission } from \"@/api/system/user\";\nimport { Login, RefreshToken } from \"@/api/oAuth\";\nimport router from \"@/router\";\nimport { useAppStore } from \"@/store/app\";\nimport { useViewTagStore } from \"@/store/viewTag\";\n\nexport interface UserStates {\n /** token */\n token: string | undefined;\n /** refreshToken */\n refreshToken: string | undefined;\n /** isRefreshToken */\n isRefreshToken: boolean;\n /** userName */\n userName: string;\n /** avatar */\n avatar: string;\n /** menus */\n menus: any[];\n}\n\nexport const useUserStore = defineStore(\"userStore\", () => {\n const appStore = useAppStore();\n const viewTagStore = useViewTagStore();\n\n const state = reactive(\n {\n token: GetToken(),\n userName: cache.GetLocalStorageByString(\"userName\") || \"\",\n avatar: cache.GetLocalStorageByString(\"avatar\") || \"\",\n menus: cache.GetLocalStorageByObject(\"menus\") || [],\n refreshToken: cache.GetLocalStorageByString(\"refreshToken\") || undefined,\n isRefreshToken: false,\n },\n );\n\n const SET_TOKEN = (token: string) => {\n state.token = token;\n SetToken(token);\n }\n\n const SET_REFRESH_TOKEN = (token: string) => {\n state.refreshToken = token;\n cache.SetLocalStorageByString(\"refreshToken\", token);\n }\n\n const REMOVE_TOKEN = () => {\n state.token = undefined;\n RemoveToken();\n }\n\n const REMOVE_REFRESH_TOKEN = () => {\n state.refreshToken = undefined;\n cache.RemoveLocalStorage(\"refreshToken\");\n }\n\n const SET_USER_INFO = (user: { nick_name: string; avatar: string }) => {\n state.userName = user.nick_name;\n state.avatar = user.avatar;\n cache.SetLocalStorageByString(\"userName\", user.nick_name);\n cache.SetLocalStorageByString(\"avatar\", user.avatar);\n }\n\n const SET_IS_REFRESH_TOKEN = (isRefresh: boolean) => {\n state.isRefreshToken = isRefresh;\n }\n\n const REMOVE_USER_INFO = () => {\n state.userName = \"\";\n state.avatar = \"\";\n cache.RemoveLocalStorage(\"userName\");\n cache.RemoveLocalStorage(\"avatar\");\n }\n\n const SET_MENUS = (menus: any[]) => {\n // 移除动态路由\n state.menus.forEach((f) => {\n if (!router.hasRoute(f.name as string)) {\n return;\n }\n router.removeRoute(f.name as string);\n });\n\n state.menus = menus;\n cache.SetLocalStorageByObject(\"menus\", menus);\n }\n\n const REMOVE_MENUS = () => {\n // 移除动态路由\n state.menus.forEach((f) => {\n if (!router.hasRoute(f.name as string)) {\n return;\n }\n router.removeRoute(f.name as string);\n });\n\n state.menus = [];\n cache.RemoveLocalStorage(\"menus\");\n };\n\n /**\n * 登录\n * @param dt\n */\n const login = async (dt: { account: string; password: string }): Promise<{ code: number, data: any, msg:any }> => {\n const {\n data,\n status,\n } = await Login(dt)\n .catch((dt) => dt);\n\n try {\n if (status !== 200) {\n throw new Error(\"连接失败\");\n }\n\n SET_TOKEN(data.data);\n\n // 刷新Token\n const refreshRes = await RefreshToken();\n SET_TOKEN(refreshRes.data.data.token);\n SET_REFRESH_TOKEN(refreshRes.data.data.refresh_token);\n\n // 此处可调用自己的方法获取用户数据,或者通过login接口直接返回数据\n\n const res = await GetUserPermission();\n SET_USER_INFO(res.data.data.user_info);\n viewTagStore.closeAllTag();\n SET_MENUS(res.data.data.menus);\n } catch (error) {\n REMOVE_TOKEN();\n return Promise.resolve({\n code: -1,\n data: null,\n msg: error,\n });\n }\n return Promise.resolve({ data } as any);\n }\n\n /**\n * 退出登录\n */\n const loginOut = () => {\n REMOVE_MENUS();\n REMOVE_USER_INFO();\n REMOVE_REFRESH_TOKEN();\n REMOVE_TOKEN();\n router.replace(import.meta.env.VITE_DEFAULT_START_ROUTER_PATH);\n // window.location.reload();\n // 重置路由缓存状态\n appStore.resetRouteState();\n }\n\n /**\n * 刷新Token\n */\n const refreshToken = async () => {\n try {\n if (!state.refreshToken) {\n throw new Error(\"会话失效\");\n }\n\n SET_IS_REFRESH_TOKEN(true);\n SET_TOKEN(state.refreshToken);\n const { data } = await RefreshToken();\n SET_TOKEN(data.data.token);\n SET_REFRESH_TOKEN(data.data.refresh_token);\n SET_IS_REFRESH_TOKEN(false);\n } catch (err) {\n throw new Error(\"会话失效\");\n }\n };\n\n const resetRefreshToken = () => {\n SET_IS_REFRESH_TOKEN(false);\n };\n\n return {\n ...toRefs(state),\n login,\n loginOut,\n refreshToken,\n resetRefreshToken,\n }\n})","/*\n * @ModuleName: 静态路由\n * @Author: yuetchn@163.com\n * @LastEditTime: 2023-03-05 18:34:54\n */\nimport { RouteRecordRaw } from \"vue-router\";\n\nconst Layout = () => import(\"@/layout/Layout.vue\");\n\nconst staticRoutes: RouteRecordRaw[] = [\n {\n path: \"/\",\n redirect: \"/dashboard\",\n name: \"/\",\n meta: {\n title: \"/\",\n hide: true,\n },\n },\n {\n path: \"/dashboard\",\n component: Layout,\n name: \"dashboard\",\n redirect: \"/dashboard/dashboardIndex\",\n meta: {\n title: \"首页\",\n icon: \"home\",\n },\n children: [\n {\n path: \"dashboardIndex\",\n name: \"dashboardIndex\",\n component: () => import(\"@/views/dashboard/dashboard.vue\"),\n meta: {\n title: \"控制台\",\n icon: \"home\",\n affix: true,\n cache: true,\n },\n },\n ],\n },\n {\n path: \"/login\",\n component: () => import(\"@/views/login/login.vue\"),\n name: \"login\",\n meta: {\n title: \"登录\",\n hide: true,\n },\n },\n {\n path: \"/dynForm\",\n component: Layout,\n name: \"dynForm\",\n redirect: \"/dynForm/index\",\n meta: {\n title: \"动态表单\",\n icon: \"home\",\n },\n children: [\n {\n path: \"index\",\n name: \"dynFormIndex\",\n component: () => import(\"@/views/components/dynForm.vue\"),\n meta: {\n title: \"动态表单\",\n icon: \"home\",\n },\n },\n ],\n },\n {\n path: \"/redirect\",\n name: \"Redirect\",\n component: Layout,\n meta: {\n title: \"Redirect\",\n hide: true,\n },\n children: [\n {\n path: \":path(.*)\",\n name: \"RedirectPath\",\n component: () => import(\"@/views/Redirect/Redirect\"),\n meta: {\n title: \"RedirectPath\",\n hide: true,\n noTag: true,\n },\n },\n ],\n },\n {\n path: \"/:path(.*)*\",\n name: \"NotFound\",\n component: () => import(\"@/views/404/404.vue\"),\n meta: {\n title: \"404\",\n hide: true,\n noTag: true,\n },\n },\n];\n\nexport const GetStaticRoutes = (routes = staticRoutes) => {\n let count = routes.length;\n routes.forEach((f) => {\n if (f.children) {\n count += GetStaticRoutes(f.children);\n }\n });\n return count;\n};\n\nexport default staticRoutes;\n","/*\n * @ModuleName: Router\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-11-08 10:28:26\n */\nimport { createRouter, RouteRecordRaw, createWebHashHistory } from \"vue-router\";\nimport { computed } from \"vue\";\nimport { useUserStore } from \"@/store/user\";\nimport { DeepClone } from \"@/utils/func\";\n// 静态路由\nimport staticRoutes from \"./static\";\n\nconst userStore = useUserStore();\n\nconst routerComponents = import.meta.glob(\"/src/views/**/*.vue\");\n\nexport const GenerateRoutes = () => (import.meta.env.VITE_ROUTER_MODE === \"async\" ? generateDynamicRoutes.value : generateStaticRoutes.value);\n\n/**\n * 生成动态路由\n */\nconst generateDynamicRoutes = computed(() => registerAsyncRoutes(JSON.parse(JSON.stringify(userStore.menus)), true));\n\n/**\n * 生成静态路由\n */\nconst generateStaticRoutes = computed(() => {\n const _static_routes = import.meta.globEager(\"./modules/**/*.ts\");\n let _r: RouteRecordRaw[] = [];\n Object.keys(_static_routes)\n .forEach((f) => {\n _r = _r.concat(...[_static_routes[f].default as RouteRecordRaw]);\n });\n return registerStaticRoutes(DeepClone(_r), true);\n});\n\n/**\n * 注册动态路由组件\n * @param routes\n * @param isRoot\n * @returns\n */\nconst registerAsyncRoutes = (routes: RouteRecordRaw[], isRoot: boolean): RouteRecordRaw[] => {\n const routers: RouteRecordRaw[] = [];\n routes.forEach((f: RouteRecordRaw) => {\n if ((f.component as any) === \"Layout\") {\n f.component = () => import(\"@/layout/Layout.vue\");\n } else if (routerComponents[`/src/views/${ f.component }.vue`]) {\n f.component = routerComponents[`/src/views/${ f.component }.vue`];\n } else {\n // eslint-disable-next-line\n console.warn(`失效的路由:[${ f.path }],找不到对应模块:[${ f.component }]`);\n return;\n }\n if (f.children) {\n f.children = registerAsyncRoutes(f.children, false);\n }\n if (isRoot) {\n router.addRoute(f);\n }\n routers.push(f);\n });\n return routers;\n};\n\n/**\n * 注册静态路由组件\n * @param routes\n * @param isRoot\n * @returns\n */\nconst registerStaticRoutes = (routes: RouteRecordRaw[], isRoot: boolean): RouteRecordRaw[] => {\n const routers: RouteRecordRaw[] = [];\n routes.forEach((f: RouteRecordRaw) => {\n if (!userStore.menus.includes(f.path)) {\n return;\n }\n if (f.children) {\n f.children = registerStaticRoutes(f.children, false);\n }\n if (isRoot) {\n router.addRoute(f);\n }\n routers.push(f);\n });\n return routers;\n};\n\nconst router = createRouter({\n history: createWebHashHistory(),\n routes: staticRoutes,\n scrollBehavior() {\n // 始终滚动到顶部\n return { top: 0 };\n },\n});\n\nexport const routes = staticRoutes;\nexport default router;\n","/*\n * @ModuleName: 权限拦截\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-11-24 12:02:50\n */\nimport { computed } from \"vue\";\nimport Nprogress from \"nprogress\";\nimport router, { GenerateRoutes } from \"@/router\";\nimport { GetStaticRoutes } from \"@/router/static\";\nimport { GetToken } from \"@/utils/cookie\";\nimport \"nprogress/nprogress.css\";\nimport { useViewTagStore } from \"@/store/viewTag\";\n\nconst viewTagStore = useViewTagStore();\n\nconst startRouterPath = import.meta.env.VITE_DEFAULT_START_ROUTER_PATH\nconst RouterWrite = import.meta.env.VITE_DEFAULT_ROUTER_WRITES;\nconst StaticRouterCount = computed(() => GetStaticRoutes());\n\nNprogress.configure({\n showSpinner: false,\n});\n\nrouter.beforeEach(async (to, from, next) => {\n Nprogress.start();\n\n if (!GetToken()) {\n if (RouterWrite.includes(to.path)) {\n return next();\n }\n router.replace(startRouterPath);\n return next(startRouterPath)\n }\n\n if (to.path === startRouterPath) {\n return next(from.path);\n }\n\n if (router.getRoutes().length === StaticRouterCount.value) {\n const _startTime = performance.now();\n if (!GenerateRoutes().length) {\n return next()\n }\n viewTagStore.initTags();\n // eslint-disable-next-line\n console.info(`🎉Route mounting time:${ performance.now() - _startTime }/ms`)\n return next(to.fullPath);\n }\n\n next();\n});\n\nrouter.afterEach(() => {\n Nprogress.done();\n});","/*\n * @ModuleName: Clipboard\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-06-01 14:46:17\n */\nimport { Directive } from \"vue\";\nimport { ClipboardFunc } from \"@/utils/func\"\n\nexport const clipboard: Directive = {\n mounted(el, bind) {\n switch (bind.arg) {\n case \"data\":\n el._v_copy_data = bind.value;\n el.onclick = () => {\n ClipboardFunc(el._v_copy_data)\n .then(() => {\n const callback = el._v_copy_success;\n if (callback && Object.prototype.toString.call(el._v_copy_success) === \"[object Function]\") {\n el._v_copy_success();\n }\n })\n .catch(() => {\n const callback = el._v_copy_error;\n if (callback && Object.prototype.toString.call(el._v_copy_error) === \"[object Function]\") {\n el._v_copy_error();\n }\n });\n };\n break;\n\n case \"success\":\n el._v_copy_success = bind.value;\n break;\n case \"error\":\n el._v_copy_error = bind.value;\n break;\n default:\n break;\n }\n },\n updated(el, bind) {\n if (bind.arg === \"data\") {\n el._v_copy_data = bind.value;\n }\n },\n};\n\nexport default clipboard;\n","/*\n * @ModuleName: Permission\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-07-22 16:22:14\n */\nimport { Directive } from \"vue\";\nimport router from \"@/router\"\n\nexport const permission: Directive = {\n mounted(el, bind) {\n if (bind.arg) {\n switch (bind.arg) {\n case \"key\":\n el._v_per_key = bind.value\n break;\n \n case \"mode\":\n el._v_per_mode = bind.value\n break;\n default:\n break;\n }\n \n if (el._v_per_key && el._v_per_mode) {\n perAction(el, el._v_per_key, el._v_per_mode)\n }\n return\n }\n perAction(el, bind.value)\n },\n};\n\nconst perAction = (el: any, key: string, mode = \"delete\") => {\n if (!router.currentRoute.value) {\n return \n }\n const find = router.currentRoute.value.meta.button_options?.find(f => f.key === key)\n if (find) {\n return \n }\n if (mode === \"delete\") {\n el.remove() \n } else if (mode === \"disabled\") {\n const classList = el.className.split(\" \")\n classList.push(\"is-disabled\")\n classList.push(\"v-per-disabled\")\n el.className = classList.join(\" \")\n el.disabled = true\n }\n}\nexport default permission;\n","/*\n * @ModuleName: 全局指令注册\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-07-22 15:23:06\n */\nimport { App } from \"vue\";\nimport clipboard from \"./src/clipboard\";\nimport per from \"./src/permission\"\n\nexport default (app: App) => {\n /** 按钮权限 */\n app.directive(\"per\", per);\n\n /** 写入剪切板 */\n app.directive(\"copy\", clipboard);\n};\n","/*\n * @ModuleName: Dialog Drag\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-04-30 09:01:21\n */\n\nlet dialogHeader: HTMLDivElement | null = null;\nlet dialogRoot: HTMLDivElement | null = null;\nlet cX = 0;\nlet cY = 0;\nconst down = (e: MouseEvent) => {\n if (dialogHeader && typeof dialogHeader.onselectstart != \"undefined\") {\n dialogHeader.onselectstart = () => false\n }\n if (dialogRoot) {\n cX = e.clientX - dialogRoot.offsetLeft;\n cY = e.clientY - dialogRoot.offsetTop;\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n }\n};\n\nconst up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n};\n\nconst move = (e: MouseEvent) => {\n if (dialogRoot) {\n // 留个坑,此处未做拖拽超出范围限制,且更新版本后拖拽定位有点问题,暂时没时间处理\n // if (e.clientX - cX <= 0 || e.clientX - cX >= document.body.clientWidth || e.clientY - cY <= 0 || e.clientY - cY >= document.body.clientHeight) {\n // return;\n // }\n dialogRoot.style.left = `${ e.clientX - cX }px`;\n dialogRoot.style.top = `${ e.clientY - cY }px`;\n }\n};\nconst init = (el:any, dialogClassName: string, className: string) => {\n dialogHeader = el.querySelector(`.${ className }`);\n dialogRoot = el.querySelector(`.${ dialogClassName }`);\n\n if (dialogRoot) {\n dialogRoot.style.left = `${ (document.body.clientWidth - dialogRoot.clientWidth) / 2 }px`;\n }\n if (dialogHeader) {\n dialogHeader.style.cursor = \"move\";\n dialogHeader.addEventListener(\"mousedown\", down);\n\n if (typeof dialogHeader.onselectstart != \"undefined\") {\n dialogHeader.onselectstart = () => true\n }\n }\n};\n\nexport default init;\n","\n\n\n","/*\n * @ModuleName: SvgIcon Options\n * @Author: yuetchn@163.com\n * @LastEditTime: 2022-07-25 11:03:22\n */\nexport const svgIconProps = {\n /** Svg图标名称 */\n name: {\n type: String,\n default: \"\",\n },\n /** Svg颜色 */\n color: {\n type: String,\n default: \"\",\n },\n /** Svg大小 */\n size: {\n type: [Number, String],\n default: 16,\n },\n width: {\n type: [Number, String],\n default: null,\n },\n height: {\n type: [Number, String],\n default: null,\n },\n}","import { defineComponent } from \"vue\";\nimport { svgIconProps } from \"./options\";\n\nexport default defineComponent({\n props: svgIconProps,\n setup(props) {\n return () => (\n \n \n \n );\n },\n});\n","\n\n\n","