From 9864e8afa62d3c2ab9506323a87b7d01e7dbdbeb Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Fri, 18 Oct 2024 23:09:48 +0800 Subject: [PATCH] =?UTF-8?q?page:=20=F0=9F=93=84=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/plugins.ts | 17 +- package.json | 403 +++++++++--------- pnpm-lock.yaml | 299 ------------- src/api/v1/quartzExecuteLog.ts | 5 - src/api/v1/userLoginLog.ts | 17 + src/router/modules/remaining.ts | 56 ++- .../quartzExecuteLog.ts | 8 +- src/store/monitor/userLoginLog.ts | 71 +++ src/views/login/login-form.vue | 2 +- .../schedulerExecuteLog}/index.vue | 6 +- .../quartz-execute-log-dialog.vue | 20 +- .../schedulerExecuteLog}/utils/columns.ts | 0 .../schedulerExecuteLog}/utils/hooks.ts | 6 +- .../schedulerExecuteLog}/utils/types.ts | 0 src/views/monitor/userLoginLog/index.vue | 138 ++++++ .../userLoginLog/user-login-log-dialog.vue | 63 +++ .../monitor/userLoginLog/utils/columns.ts | 41 ++ src/views/monitor/userLoginLog/utils/hooks.ts | 97 +++++ src/views/monitor/userLoginLog/utils/types.ts | 20 + 19 files changed, 702 insertions(+), 567 deletions(-) create mode 100644 src/api/v1/userLoginLog.ts rename src/store/{scheduler => monitor}/quartzExecuteLog.ts (83%) create mode 100644 src/store/monitor/userLoginLog.ts rename src/views/{scheduler/quartzExecuteLog => monitor/schedulerExecuteLog}/index.vue (96%) rename src/views/{scheduler/quartzExecuteLog => monitor/schedulerExecuteLog}/quartz-execute-log-dialog.vue (87%) rename src/views/{scheduler/quartzExecuteLog => monitor/schedulerExecuteLog}/utils/columns.ts (100%) rename src/views/{scheduler/quartzExecuteLog => monitor/schedulerExecuteLog}/utils/hooks.ts (89%) rename src/views/{scheduler/quartzExecuteLog => monitor/schedulerExecuteLog}/utils/types.ts (100%) create mode 100644 src/views/monitor/userLoginLog/index.vue create mode 100644 src/views/monitor/userLoginLog/user-login-log-dialog.vue create mode 100644 src/views/monitor/userLoginLog/utils/columns.ts create mode 100644 src/views/monitor/userLoginLog/utils/hooks.ts create mode 100644 src/views/monitor/userLoginLog/utils/types.ts diff --git a/build/plugins.ts b/build/plugins.ts index 2958f34..2898260 100644 --- a/build/plugins.ts +++ b/build/plugins.ts @@ -13,7 +13,8 @@ import removeConsole from 'vite-plugin-remove-console'; import { themePreprocessorPlugin } from '@pureadmin/theme'; import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'; import { genScssMultipleScopeVars } from '../src/layout/theme'; -import { vitePluginFakeServer } from 'vite-plugin-fake-server'; + +// import { vitePluginFakeServer } from 'vite-plugin-fake-server'; export function getPluginsList(VITE_CDN: boolean, VITE_COMPRESSION: ViteCompression, VITE_PORT: number): PluginOption[] { const lifecycle = process.env.npm_lifecycle_event; @@ -34,13 +35,13 @@ export function getPluginsList(VITE_CDN: boolean, VITE_COMPRESSION: ViteCompress * vite-plugin-router-warn只在开发环境下启用,只处理vue-router文件并且只在服务启动或重启时运行一次,性能消耗可忽略不计 */ removeNoMatch(), - // mock支持 - vitePluginFakeServer({ - logger: false, - include: 'mock', - infixName: false, - enableProd: true, - }), + // // mock支持 + // vitePluginFakeServer({ + // logger: false, + // include: 'mock', + // infixName: false, + // enableProd: true,// 线上支持mock + // }), // 自定义主题 themePreprocessorPlugin({ scss: { diff --git a/package.json b/package.json index 77eabd0..09087e9 100644 --- a/package.json +++ b/package.json @@ -1,204 +1,203 @@ { - "name": "bunny-admin-element", - "version": "1.0.0", - "private": true, - "type": "module", - "keywords": [ - "bunny-admin-element", - "bunny-cli", - "element-plus", - "tailwindcss", - "typescript", - "pinia", - "vue3", - "vite", - "esm" - ], - "homepage": "https://gitee.com/BunnyBoss/bunny-admin-element.git", - "repository": { - "type": "git", - "url": "https://gitee.com/BunnyBoss/bunny-admin-element.git" - }, - "bugs": { - "url": "https://gitee.com/BunnyBoss/bunny-admin-element.git/issues" - }, - "license": "MIT", - "author": { - "name": "Bunny0212", - "email": "1319900154@qq.com", - "url": "https://github.com/xiaoxian521" - }, - "scripts": { - "dev": "NODE_OPTIONS=--max-old-space-size=4096 vite", - "serve": "pnpm vite", - "start": "vite", - "build": "rimraf dist && NODE_OPTIONS=--max-old-space-size=8192 vite build && generate-version-file", - "build:staging": "rimraf dist && vite build --mode staging", - "report": "rimraf dist && vite build", - "preview": "vite preview", - "preview:build": "pnpm build && vite preview", - "typecheck": "tsc --noEmit && vue-tsc --noEmit --skipLibCheck", - "svgo": "svgo -f . -r", - "clean:cache": "rimraf .eslintcache && rimraf pnpm-lock.yaml && rimraf node_modules && pnpm store prune && pnpm install", - "lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock,build}/**/*.{vue,js,ts,tsx}\" --fix", - "lint:prettier": "prettier --write \"src/**/*.{js,ts,json,tsx,css,scss,vue,html,md}\"", - "lint:stylelint": "stylelint --cache --fix \"**/*.{html,vue,css,scss}\" --cache-location node_modules/.cache/stylelint/", - "lint": "pnpm lint:eslint && pnpm lint:prettier && pnpm lint:stylelint", - "prepare": "husky install", - "preinstall": "npx only-allow pnpm", - "commit": "git pull && git add -A && git-cz && git push" - }, - "dependencies": { - "@amap/amap-jsapi-loader": "^1.0.1", - "@howdyjs/mouse-menu": "^2.1.3", - "@infectoone/vue-ganttastic": "^2.3.2", - "@logicflow/core": "^1.2.27", - "@logicflow/extension": "^1.2.27", - "@pureadmin/descriptions": "^1.2.1", - "@pureadmin/table": "^3.1.2", - "@pureadmin/utils": "^2.4.7", - "@vue-flow/background": "^1.3.0", - "@vue-flow/core": "^1.33.6", - "@vueuse/core": "^10.9.0", - "@vueuse/motion": "^2.1.0", - "@wangeditor/editor": "^5.1.23", - "@wangeditor/editor-for-vue": "^5.1.12", - "@zxcvbn-ts/core": "^3.0.4", - "animate.css": "^4.1.1", - "axios": "^1.6.8", - "china-area-data": "^5.0.1", - "cropperjs": "^1.6.2", - "dayjs": "^1.11.11", - "echarts": "^5.5.0", - "el-table-infinite-scroll": "^3.0.3", - "element-plus": "2.7.1", - "intro.js": "^7.2.0", - "js-cookie": "^3.0.5", - "jsbarcode": "^3.11.6", - "localforage": "^1.10.0", - "mint-filter": "^4.0.3", - "mitt": "^3.0.1", - "mqtt": "4.3.7", - "nprogress": "^0.2.0", - "path": "^0.12.7", - "pinia": "^2.1.7", - "pinia-plugin-persistedstate": "^3.2.1", - "pinyin-pro": "^3.20.4", - "plus-pro-components": "^0.1.1", - "qrcode": "^1.5.3", - "qs": "^6.12.1", - "responsive-storage": "^2.2.0", - "sortablejs": "^1.15.2", - "swiper": "^11.1.1", - "terser": "^5.31.0", - "typeit": "^8.8.3", - "v-contextmenu": "^3.2.0", - "v3-infinite-loading": "^1.3.1", - "version-rocket": "^1.7.1", - "vite-plugin-vue-inspector": "^5.1.3", - "vue": "^3.4.27", - "vue-i18n": "^9.13.1", - "vue-json-pretty": "^2.4.0", - "vue-pdf-embed": "^2.0.3", - "vue-router": "^4.3.2", - "vue-tippy": "^6.4.1", - "vue-types": "^5.1.2", - "vue-virtual-scroller": "2.0.0-beta.8", - "vue-waterfall-plugin-next": "^2.4.3", - "vue3-danmaku": "^1.6.0", - "vue3-puzzle-vcode": "^1.1.7", - "vuedraggable": "^4.1.0", - "vxe-table": "^4.6.9", - "wavesurfer.js": "^7.7.13", - "xgplayer": "^3.0.17", - "xlsx": "^0.18.5" - }, - "devDependencies": { - "@commitlint/cli": "^19.3.0", - "@commitlint/config-conventional": "^19.2.2", - "@commitlint/types": "^19.0.3", - "@eslint/js": "^9.2.0", - "@faker-js/faker": "^8.4.1", - "@iconify-icons/ep": "^1.2.12", - "@iconify-icons/ri": "^1.2.10", - "@iconify/vue": "^4.1.2", - "@intlify/unplugin-vue-i18n": "^4.0.0", - "@pureadmin/theme": "^3.2.0", - "@types/dagre": "^0.7.52", - "@types/gradient-string": "^1.1.6", - "@types/intro.js": "^5.1.5", - "@types/js-cookie": "^3.0.6", - "@types/node": "^20.12.11", - "@types/nprogress": "^0.2.3", - "@types/qrcode": "^1.5.5", - "@types/qs": "^6.9.15", - "@types/sortablejs": "^1.15.8", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "@vitejs/plugin-vue": "^5.0.4", - "@vitejs/plugin-vue-jsx": "^3.1.0", - "autoprefixer": "^10.4.19", - "boxen": "^7.1.1", - "commitizen": "^4.2.4", - "commitlint": "^17.0.1", - "cssnano": "^7.0.1", - "cz-git": "^1.3.2", - "dagre": "^0.8.5", - "eslint": "^9.2.0", - "eslint-config-prettier": "^9.1.0", - "eslint-define-config": "^2.1.0", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-vue": "^9.25.0", - "gradient-string": "^2.0.2", - "husky": "^8.0.1", - "lint-staged": "^15.2.2", - "postcss": "^8.4.38", - "postcss-html": "^1.7.0", - "postcss-import": "^16.1.0", - "postcss-scss": "^4.0.9", - "prettier": "^3.2.5", - "rimraf": "^5.0.5", - "rollup-plugin-visualizer": "^5.12.0", - "sass": "^1.77.0", - "stylelint": "^16.5.0", - "stylelint-config-recess-order": "^5.0.1", - "stylelint-config-recommended-vue": "^1.5.0", - "stylelint-config-standard-scss": "^13.1.0", - "stylelint-prettier": "^5.0.0", - "svgo": "^3.3.0", - "tailwindcss": "^3.4.3", - "typescript": "^5.4.5", - "vite": "^5.2.11", - "vite-plugin-cdn-import": "^0.3.5", - "vite-plugin-compression": "^0.5.1", - "vite-plugin-fake-server": "^2.1.1", - "vite-plugin-remove-console": "^2.2.0", - "vite-plugin-router-warn": "^1.0.0", - "vite-svg-loader": "^5.1.0", - "vue-eslint-parser": "^9.4.2", - "vue-tsc": "^1.8.27" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0", - "pnpm": ">=8.6.10" - }, - "pnpm": { - "allowedDeprecatedVersions": { - "sourcemap-codec": "*", - "domexception": "*", - "w3c-hr-time": "*", - "stable": "*", - "abab": "*" - }, - "peerDependencyRules": { - "allowedVersions": { - "eslint": "9" - } - } - }, - "config": { - "commitizen": { - "path": "node_modules/cz-git" - } - } + "name": "bunny-admin-element", + "version": "1.0.0", + "private": true, + "type": "module", + "keywords": [ + "bunny-admin-element", + "bunny-cli", + "element-plus", + "tailwindcss", + "typescript", + "pinia", + "vue3", + "vite", + "esm" + ], + "homepage": "https://gitee.com/BunnyBoss/bunny-admin-element.git", + "repository": { + "type": "git", + "url": "https://gitee.com/BunnyBoss/bunny-admin-element.git" + }, + "bugs": { + "url": "https://gitee.com/BunnyBoss/bunny-admin-element.git/issues" + }, + "license": "MIT", + "author": { + "name": "Bunny0212", + "email": "1319900154@qq.com", + "url": "https://github.com/xiaoxian521" + }, + "scripts": { + "dev": "NODE_OPTIONS=--max-old-space-size=4096 vite", + "serve": "pnpm vite", + "start": "vite", + "build": "rimraf dist && NODE_OPTIONS=--max-old-space-size=8192 vite build && generate-version-file", + "build:staging": "rimraf dist && vite build --mode staging", + "report": "rimraf dist && vite build", + "preview": "vite preview", + "preview:build": "pnpm build && vite preview", + "typecheck": "tsc --noEmit && vue-tsc --noEmit --skipLibCheck", + "svgo": "svgo -f . -r", + "clean:cache": "rimraf .eslintcache && rimraf pnpm-lock.yaml && rimraf node_modules && pnpm store prune && pnpm install", + "lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock,build}/**/*.{vue,js,ts,tsx}\" --fix", + "lint:prettier": "prettier --write \"src/**/*.{js,ts,json,tsx,css,scss,vue,html,md}\"", + "lint:stylelint": "stylelint --cache --fix \"**/*.{html,vue,css,scss}\" --cache-location node_modules/.cache/stylelint/", + "lint": "pnpm lint:eslint && pnpm lint:prettier && pnpm lint:stylelint", + "prepare": "husky install", + "preinstall": "npx only-allow pnpm", + "commit": "git pull && git add -A && git-cz && git push" + }, + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@howdyjs/mouse-menu": "^2.1.3", + "@infectoone/vue-ganttastic": "^2.3.2", + "@logicflow/core": "^1.2.27", + "@logicflow/extension": "^1.2.27", + "@pureadmin/descriptions": "^1.2.1", + "@pureadmin/table": "^3.1.2", + "@pureadmin/utils": "^2.4.7", + "@vue-flow/background": "^1.3.0", + "@vue-flow/core": "^1.33.6", + "@vueuse/core": "^10.9.0", + "@vueuse/motion": "^2.1.0", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "^5.1.12", + "@zxcvbn-ts/core": "^3.0.4", + "animate.css": "^4.1.1", + "axios": "^1.6.8", + "china-area-data": "^5.0.1", + "cropperjs": "^1.6.2", + "dayjs": "^1.11.11", + "echarts": "^5.5.0", + "el-table-infinite-scroll": "^3.0.3", + "element-plus": "2.7.1", + "intro.js": "^7.2.0", + "js-cookie": "^3.0.5", + "jsbarcode": "^3.11.6", + "localforage": "^1.10.0", + "mint-filter": "^4.0.3", + "mitt": "^3.0.1", + "mqtt": "4.3.7", + "nprogress": "^0.2.0", + "path": "^0.12.7", + "pinia": "^2.1.7", + "pinia-plugin-persistedstate": "^3.2.1", + "pinyin-pro": "^3.20.4", + "plus-pro-components": "^0.1.1", + "qrcode": "^1.5.3", + "qs": "^6.12.1", + "responsive-storage": "^2.2.0", + "sortablejs": "^1.15.2", + "swiper": "^11.1.1", + "terser": "^5.31.0", + "typeit": "^8.8.3", + "v-contextmenu": "^3.2.0", + "v3-infinite-loading": "^1.3.1", + "version-rocket": "^1.7.1", + "vite-plugin-vue-inspector": "^5.1.3", + "vue": "^3.4.27", + "vue-i18n": "^9.13.1", + "vue-json-pretty": "^2.4.0", + "vue-pdf-embed": "^2.0.3", + "vue-router": "^4.3.2", + "vue-tippy": "^6.4.1", + "vue-types": "^5.1.2", + "vue-virtual-scroller": "2.0.0-beta.8", + "vue-waterfall-plugin-next": "^2.4.3", + "vue3-danmaku": "^1.6.0", + "vue3-puzzle-vcode": "^1.1.7", + "vuedraggable": "^4.1.0", + "vxe-table": "^4.6.9", + "wavesurfer.js": "^7.7.13", + "xgplayer": "^3.0.17", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@commitlint/cli": "^19.3.0", + "@commitlint/config-conventional": "^19.2.2", + "@commitlint/types": "^19.0.3", + "@eslint/js": "^9.2.0", + "@faker-js/faker": "^8.4.1", + "@iconify-icons/ep": "^1.2.12", + "@iconify-icons/ri": "^1.2.10", + "@iconify/vue": "^4.1.2", + "@intlify/unplugin-vue-i18n": "^4.0.0", + "@pureadmin/theme": "^3.2.0", + "@types/dagre": "^0.7.52", + "@types/gradient-string": "^1.1.6", + "@types/intro.js": "^5.1.5", + "@types/js-cookie": "^3.0.6", + "@types/node": "^20.12.11", + "@types/nprogress": "^0.2.3", + "@types/qrcode": "^1.5.5", + "@types/qs": "^6.9.15", + "@types/sortablejs": "^1.15.8", + "@typescript-eslint/eslint-plugin": "^7.8.0", + "@typescript-eslint/parser": "^7.8.0", + "@vitejs/plugin-vue": "^5.0.4", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "autoprefixer": "^10.4.19", + "boxen": "^7.1.1", + "commitizen": "^4.2.4", + "commitlint": "^17.0.1", + "cssnano": "^7.0.1", + "cz-git": "^1.3.2", + "dagre": "^0.8.5", + "eslint": "^9.2.0", + "eslint-config-prettier": "^9.1.0", + "eslint-define-config": "^2.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-vue": "^9.25.0", + "gradient-string": "^2.0.2", + "husky": "^8.0.1", + "lint-staged": "^15.2.2", + "postcss": "^8.4.38", + "postcss-html": "^1.7.0", + "postcss-import": "^16.1.0", + "postcss-scss": "^4.0.9", + "prettier": "^3.2.5", + "rimraf": "^5.0.5", + "rollup-plugin-visualizer": "^5.12.0", + "sass": "^1.77.0", + "stylelint": "^16.5.0", + "stylelint-config-recess-order": "^5.0.1", + "stylelint-config-recommended-vue": "^1.5.0", + "stylelint-config-standard-scss": "^13.1.0", + "stylelint-prettier": "^5.0.0", + "svgo": "^3.3.0", + "tailwindcss": "^3.4.3", + "typescript": "^5.4.5", + "vite": "^5.2.11", + "vite-plugin-cdn-import": "^0.3.5", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-remove-console": "^2.2.0", + "vite-plugin-router-warn": "^1.0.0", + "vite-svg-loader": "^5.1.0", + "vue-eslint-parser": "^9.4.2", + "vue-tsc": "^1.8.27" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0", + "pnpm": ">=8.6.10" + }, + "pnpm": { + "allowedDeprecatedVersions": { + "sourcemap-codec": "*", + "domexception": "*", + "w3c-hr-time": "*", + "stable": "*", + "abab": "*" + }, + "peerDependencyRules": { + "allowedVersions": { + "eslint": "9" + } + } + }, + "config": { + "commitizen": { + "path": "node_modules/cz-git" + } + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a16ffc9..978f9e0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -369,9 +369,6 @@ importers: vite-plugin-compression: specifier: ^0.5.1 version: 0.5.1(vite@5.4.2(@types/node@20.16.2)(sass@1.77.8)(terser@5.31.6)) - vite-plugin-fake-server: - specifier: ^2.1.1 - version: 2.1.1 vite-plugin-remove-console: specifier: ^2.2.0 version: 2.2.0 @@ -801,276 +798,138 @@ packages: peerDependencies: vue: ^3.2.0 - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.21.5': resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} @@ -1380,55 +1239,46 @@ packages: resolution: {integrity: sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.21.1': resolution: {integrity: sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.21.1': resolution: {integrity: sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.21.1': resolution: {integrity: sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-powerpc64le-gnu@4.21.1': resolution: {integrity: sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.21.1': resolution: {integrity: sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.21.1': resolution: {integrity: sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.21.1': resolution: {integrity: sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.21.1': resolution: {integrity: sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.21.1': resolution: {integrity: sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==} @@ -2092,9 +1942,6 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bundle-import@0.0.1: - resolution: {integrity: sha512-L0z0iPX7t7ff5eZsK7oMEH+Ly2lzJczFKPHwrta6X8SF64a20R3wOrAOYK1MzHZVaWWugg9qlSTVfVwqvQJ2dw==} - c12@1.11.1: resolution: {integrity: sha512-KDU0TvSvVdaYcQKQ6iPHATGz/7p/KiVjPg4vQrB6Jg/wX9R0yl5RZxWm9IoZqaIHD2+6PZd81+KMGwRr/lRIUg==} peerDependencies: @@ -2813,11 +2660,6 @@ packages: resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} engines: {node: '>=0.12'} - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -3151,9 +2993,6 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.7.6: - resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} - giget@1.2.3: resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true @@ -3369,17 +3208,11 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - import-from-string@0.0.4: - resolution: {integrity: sha512-ZmtWHOGv55OEFb3HxfQH4L4vAR7g3HUm82N5LmvXugiXlaZ1j/epItoUDjQ+gJ+MjNl+apczmCnqGFq8q2CM6w==} - import-local@3.2.0: resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} hasBin: true - import-meta-resolve@3.1.1: - resolution: {integrity: sha512-qeywsE/KC3w9Fd2ORrRDUw6nS/nLwZpXgfrOc2IILvZYnCaEMd+D56Vfg9k4G29gIeVi3XKql1RQatME8iYsiw==} - import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -4325,9 +4158,6 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -4957,9 +4787,6 @@ packages: resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve.exports@1.1.1: resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} engines: {node: '>=10'} @@ -5665,9 +5492,6 @@ packages: peerDependencies: vite: '>=2.0.0' - vite-plugin-fake-server@2.1.1: - resolution: {integrity: sha512-QUgssvE7jI9XU1WuDZ3gkzzi9GzVeapELIlFNMvmE2swDKL7O2y2nV0kRZ9VYOsD+hV312uSJyzHBJvcmBw7UQ==} - vite-plugin-remove-console@2.2.0: resolution: {integrity: sha512-qgjh5pz75MdE9Kzs8J0kBwaCfifHV0ezRbB9rpGsIOxam+ilcGV7WOk91vFJXquzRmiKrFh3Hxlh0JJWAmXTbQ==} @@ -6580,141 +6404,72 @@ snapshots: dependencies: vue: 3.4.38(typescript@5.5.4) - '@esbuild/aix-ppc64@0.19.12': - optional: true - '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/android-arm64@0.19.12': - optional: true - '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm@0.19.12': - optional: true - '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-x64@0.19.12': - optional: true - '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.19.12': - optional: true - '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-x64@0.19.12': - optional: true - '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.19.12': - optional: true - '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.19.12': - optional: true - '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/linux-arm64@0.19.12': - optional: true - '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm@0.19.12': - optional: true - '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-ia32@0.19.12': - optional: true - '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-loong64@0.19.12': - optional: true - '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-mips64el@0.19.12': - optional: true - '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-ppc64@0.19.12': - optional: true - '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.19.12': - optional: true - '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-s390x@0.19.12': - optional: true - '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-x64@0.19.12': - optional: true - '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.19.12': - optional: true - '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.19.12': - optional: true - '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.19.12': - optional: true - '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/win32-arm64@0.19.12': - optional: true - '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-ia32@0.19.12': - optional: true - '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-x64@0.19.12': - optional: true - '@esbuild/win32-x64@0.21.5': optional: true @@ -8037,11 +7792,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bundle-import@0.0.1: - dependencies: - get-tsconfig: 4.7.6 - import-from-string: 0.0.4 - c12@1.11.1: dependencies: chokidar: 3.6.0 @@ -8837,32 +8587,6 @@ snapshots: d: 1.0.2 ext: 1.7.0 - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -9267,10 +8991,6 @@ snapshots: get-stream@8.0.1: {} - get-tsconfig@4.7.6: - dependencies: - resolve-pkg-maps: 1.0.0 - giget@1.2.3: dependencies: citty: 0.1.6 @@ -9508,18 +9228,11 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-from-string@0.0.4: - dependencies: - esbuild: 0.19.12 - import-meta-resolve: 3.1.1 - import-local@3.2.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - import-meta-resolve@3.1.1: {} - import-meta-resolve@4.1.0: {} imurmurhash@0.1.4: {} @@ -10668,8 +10381,6 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-to-regexp@6.2.2: {} - path-type@4.0.0: {} path-type@5.0.0: @@ -11241,8 +10952,6 @@ snapshots: dependencies: global-dirs: 0.1.1 - resolve-pkg-maps@1.0.0: {} - resolve.exports@1.1.1: {} resolve@1.22.8: @@ -12051,14 +11760,6 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-fake-server@2.1.1: - dependencies: - bundle-import: 0.0.1 - chokidar: 3.6.0 - fast-glob: 3.3.2 - path-to-regexp: 6.2.2 - picocolors: 1.0.1 - vite-plugin-remove-console@2.2.0: {} vite-plugin-router-warn@1.0.0: {} diff --git a/src/api/v1/quartzExecuteLog.ts b/src/api/v1/quartzExecuteLog.ts index f527753..51e09d2 100644 --- a/src/api/v1/quartzExecuteLog.ts +++ b/src/api/v1/quartzExecuteLog.ts @@ -6,11 +6,6 @@ export const fetchGetQuartzExecuteLogList = (data: any) => { return http.request>('get', `quartzExecuteLog/getQuartzExecuteLogList/${data.currentPage}/${data.pageSize}`, { params: data }); }; -/** 调度任务执行日志---添加调度任务执行日志 */ -export const fetchAddQuartzExecuteLog = (data: any) => { - return http.request>('post', 'quartzExecuteLog/addQuartzExecuteLog', { data }); -}; - /** 调度任务执行日志---更新调度任务执行日志 */ export const fetchUpdateQuartzExecuteLog = (data: any) => { return http.request>('put', 'quartzExecuteLog/updateQuartzExecuteLog', { data }); diff --git a/src/api/v1/userLoginLog.ts b/src/api/v1/userLoginLog.ts new file mode 100644 index 0000000..767da67 --- /dev/null +++ b/src/api/v1/userLoginLog.ts @@ -0,0 +1,17 @@ +import { http } from '@/api/service/request'; +import type { BaseResult, ResultTable } from '@/api/service/types'; + +/** 用户登录日志---获取用户登录日志列表 */ +export const fetchGetUserLoginLogList = (data: any) => { + return http.request>('get', `userLoginLog/getUserLoginLogList/${data.currentPage}/${data.pageSize}`, { params: data }); +}; + +/** 用户登录日志---更新用户登录日志 */ +export const fetchUpdateUserLoginLog = (data: any) => { + return http.request>('put', 'userLoginLog/updateUserLoginLog', { data }); +}; + +/** 用户登录日志---删除用户登录日志 */ +export const fetchDeleteUserLoginLog = (data: any) => { + return http.request>('delete', 'userLoginLog/deleteUserLoginLog', { data }); +}; diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index 11f2272..17b6ef0 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -1,32 +1,30 @@ -import { $t } from "@/plugins/i18n"; - -const Layout = () => import("@/layout/index.vue"); +const Layout = () => import('@/layout/index.vue'); export default [ - { - path: "/login", - name: "Login", - component: () => import("@/views/login/index.vue"), - meta: { - title: "menus.pureLogin", - showLink: false, - rank: 101 - } - }, - { - path: "/redirect", - component: Layout, - meta: { - title: $t("status.pureLoad"), - showLink: false, - rank: 102 - }, - children: [ - { - path: "/redirect/:path(.*)", - name: "Redirect", - component: () => import("@/layout/redirect.vue") - } - ] - } + { + path: '/login', + name: 'Login', + component: () => import('@/views/login/index.vue'), + meta: { + title: 'menus.pureLogin', + showLink: false, + rank: 101, + }, + }, + { + path: '/redirect', + component: Layout, + meta: { + title: 'status.pureLoad', + showLink: false, + rank: 102, + }, + children: [ + { + path: '/redirect/:path(.*)', + name: 'Redirect', + component: () => import('@/layout/redirect.vue'), + }, + ], + }, ] satisfies Array; diff --git a/src/store/scheduler/quartzExecuteLog.ts b/src/store/monitor/quartzExecuteLog.ts similarity index 83% rename from src/store/scheduler/quartzExecuteLog.ts rename to src/store/monitor/quartzExecuteLog.ts index 1ac8f26..7ee1a37 100644 --- a/src/store/scheduler/quartzExecuteLog.ts +++ b/src/store/monitor/quartzExecuteLog.ts @@ -1,5 +1,5 @@ import { defineStore } from 'pinia'; -import { fetchAddQuartzExecuteLog, fetchDeleteQuartzExecuteLog, fetchGetQuartzExecuteLogList, fetchUpdateQuartzExecuteLog } from '@/api/v1/quartzExecuteLog'; +import { fetchDeleteQuartzExecuteLog, fetchGetQuartzExecuteLogList, fetchUpdateQuartzExecuteLog } from '@/api/v1/quartzExecuteLog'; import { pageSizes } from '@/enums/baseConstant'; import { storeMessage } from '@/utils/message'; import { storePagination } from '@/store/useStorePagination'; @@ -56,12 +56,6 @@ export const useQuartzExecuteLogStore = defineStore('quartzExecuteLogStore', { return pagination(result); }, - /** 添加调度任务执行日志 */ - async addQuartzExecuteLog(data: any) { - const result = await fetchAddQuartzExecuteLog(data); - return storeMessage(result); - }, - /** 修改调度任务执行日志 */ async updateQuartzExecuteLog(data: any) { const result = await fetchUpdateQuartzExecuteLog(data); diff --git a/src/store/monitor/userLoginLog.ts b/src/store/monitor/userLoginLog.ts new file mode 100644 index 0000000..84ee023 --- /dev/null +++ b/src/store/monitor/userLoginLog.ts @@ -0,0 +1,71 @@ +import { defineStore } from 'pinia'; +import { fetchDeleteUserLoginLog, fetchGetUserLoginLogList, fetchUpdateUserLoginLog } from '@/api/v1/userLoginLog'; +import { pageSizes } from '@/enums/baseConstant'; +import { storeMessage } from '@/utils/message'; +import { storePagination } from '@/store/useStorePagination'; + +/** + * 用户登录日志 Store + */ +export const useUserLoginLogStore = defineStore('userLoginLogStore', { + state() { + return { + // 用户登录日志列表 + datalist: [], + // 查询表单 + form: { + // 用户Id + userId: undefined, + // 用户名 + username: undefined, + // 登录token + token: undefined, + // 登录Ip + ip: undefined, + // 登录Ip地点 + ipAddress: undefined, + // 登录时代理 + userAgent: undefined, + }, + // 分页查询结果 + pagination: { + currentPage: 1, + pageSize: 150, + total: 100, + pageSizes, + }, + // 加载 + loading: false, + }; + }, + getters: {}, + actions: { + /** 获取用户登录日志 */ + async getUserLoginLogList() { + // 整理请求参数 + const data = { ...this.pagination, ...this.form }; + delete data.pageSizes; + delete data.total; + delete data.background; + + // 获取用户登录日志列表 + const result = await fetchGetUserLoginLogList(data); + + // 公共页面函数hook + const pagination = storePagination.bind(this); + return pagination(result); + }, + + /** 修改用户登录日志 */ + async updateUserLoginLog(data: any) { + const result = await fetchUpdateUserLoginLog(data); + return storeMessage(result); + }, + + /** 删除用户登录日志 */ + async deleteUserLoginLog(data: any) { + const result = await fetchDeleteUserLoginLog(data); + return storeMessage(result); + }, + }, +}); diff --git a/src/views/login/login-form.vue b/src/views/login/login-form.vue index cdf7be0..33ec0fc 100644 --- a/src/views/login/login-form.vue +++ b/src/views/login/login-form.vue @@ -23,7 +23,7 @@ const { t } = useI18n(); const ruleForm = reactive({ username: '1319900154@qq.com', password: 'admin123', - emailCode: '', + emailCode: '1', }); /** diff --git a/src/views/scheduler/quartzExecuteLog/index.vue b/src/views/monitor/schedulerExecuteLog/index.vue similarity index 96% rename from src/views/scheduler/quartzExecuteLog/index.vue rename to src/views/monitor/schedulerExecuteLog/index.vue index 6439f9a..5d1504c 100644 --- a/src/views/scheduler/quartzExecuteLog/index.vue +++ b/src/views/monitor/schedulerExecuteLog/index.vue @@ -1,15 +1,15 @@ + + diff --git a/src/views/monitor/userLoginLog/user-login-log-dialog.vue b/src/views/monitor/userLoginLog/user-login-log-dialog.vue new file mode 100644 index 0000000..6d28497 --- /dev/null +++ b/src/views/monitor/userLoginLog/user-login-log-dialog.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/views/monitor/userLoginLog/utils/columns.ts b/src/views/monitor/userLoginLog/utils/columns.ts new file mode 100644 index 0000000..0d266e8 --- /dev/null +++ b/src/views/monitor/userLoginLog/utils/columns.ts @@ -0,0 +1,41 @@ +import { reactive } from 'vue'; +import { $t } from '@/plugins/i18n'; + +// 表格列 +export const columns: TableColumnList = [ + { type: 'selection', align: 'left' }, + { type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 }, + // 用户Id + { label: $t('userLoginLog_userId'), prop: 'userId' }, + // 用户名 + { label: $t('userLoginLog_username'), prop: 'username' }, + // 登录token + { label: $t('userLoginLog_token'), prop: 'token' }, + // 登录Ip + { label: $t('userLoginLog_ip'), prop: 'ip' }, + // 登录Ip地点 + { label: $t('userLoginLog_ipAddress'), prop: 'ipAddress' }, + // 登录时代理 + { label: $t('userLoginLog_userAgent'), prop: 'userAgent' }, + { label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 }, + { label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 }, + { label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 90 }, + { label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 90 }, + { label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation' }, +]; + +// 添加规则 +export const rules = reactive({ + // 用户Id + userId: [{ required: true, message: `${$t('input')}${$t('userLoginLog_userId')}`, trigger: 'blur' }], + // 用户名 + username: [{ required: true, message: `${$t('input')}${$t('userLoginLog_username')}`, trigger: 'blur' }], + // 登录token + token: [{ required: true, message: `${$t('input')}${$t('userLoginLog_token')}`, trigger: 'blur' }], + // 登录Ip + ip: [{ required: true, message: `${$t('input')}${$t('userLoginLog_ip')}`, trigger: 'blur' }], + // 登录Ip地点 + ipAddress: [{ required: true, message: `${$t('input')}${$t('userLoginLog_ipAddress')}`, trigger: 'blur' }], + // 登录时代理 + userAgent: [{ required: true, message: `${$t('input')}${$t('userLoginLog_userAgent')}`, trigger: 'blur' }], +}); diff --git a/src/views/monitor/userLoginLog/utils/hooks.ts b/src/views/monitor/userLoginLog/utils/hooks.ts new file mode 100644 index 0000000..f70efc9 --- /dev/null +++ b/src/views/monitor/userLoginLog/utils/hooks.ts @@ -0,0 +1,97 @@ +import { addDialog } from '@/components/BaseDialog/index'; +import UserLoginLogDialog from '@/views/monitor/userLoginLog/user-login-log-dialog.vue'; +import { useUserLoginLogStore } from '@/store/monitor/userLoginLog'; +import { h, ref } from 'vue'; +import { messageBox } from '@/utils/message'; +import type { FormItemProps } from '@/views/monitor/userLoginLog/utils/types'; +import { $t } from '@/plugins/i18n'; + +export const formRef = ref(); +// 删除ids +export const deleteIds = ref([]); +const userLoginLogStore = useUserLoginLogStore(); + +/** + * * 搜索初始化用户登录日志 + */ +export async function onSearch() { + userLoginLogStore.loading = true; + await userLoginLogStore.getUserLoginLogList(); + userLoginLogStore.loading = false; +} + +/** + * * 更新用户登录日志 + * @param row + */ +export function onUpdate(row: any) { + addDialog({ + title: `${$t('modify')}${$t('userLoginLog')}`, + width: '30%', + props: { + formInline: { + userId: row.userId, + username: row.username, + token: row.token, + ip: row.ip, + ipAddress: row.ipAddress, + userAgent: row.userAgent, + }, + }, + draggable: true, + fullscreenIcon: true, + closeOnClickModal: false, + contentRenderer: () => h(UserLoginLogDialog, { ref: formRef }), + beforeSure: (done, { options }) => { + const form = options.props.formInline as FormItemProps; + formRef.value.formRef.validate(async (valid: any) => { + if (!valid) return; + + const result = await userLoginLogStore.updateUserLoginLog({ ...form, id: row.id }); + if (!result) return; + done(); + await onSearch(); + }); + }, + }); +} + +/** + * * 删除用户登录日志 + */ +export const onDelete = async (row: any) => { + const id = row.id; + + // 是否确认删除 + const result = await messageBox({ + title: $t('confirm_delete'), + showMessage: false, + confirmMessage: undefined, + cancelMessage: $t('cancel_delete'), + }); + if (!result) return; + + // 删除数据 + await userLoginLogStore.deleteUserLoginLog([id]); + await onSearch(); +}; + +/** + * 批量删除 + */ +export const onDeleteBatch = async () => { + const ids = deleteIds.value; + + // 是否确认删除 + const result = await messageBox({ + title: $t('confirm_delete'), + showMessage: false, + confirmMessage: undefined, + cancelMessage: $t('cancel_delete'), + }); + if (!result) return; + + // 删除数据 + await userLoginLogStore.deleteUserLoginLog(ids); + await onSearch(); +}; diff --git a/src/views/monitor/userLoginLog/utils/types.ts b/src/views/monitor/userLoginLog/utils/types.ts new file mode 100644 index 0000000..c538d63 --- /dev/null +++ b/src/views/monitor/userLoginLog/utils/types.ts @@ -0,0 +1,20 @@ +// 添加或者修改表单元素 +export interface FormItemProps { + // 用户Id + userId: number; + // 用户名 + username: string; + // 登录token + token: string; + // 登录Ip + ip: string; + // 登录Ip地点 + ipAddress: string; + // 登录时代理 + userAgent: string; +} + +// 添加或修改表单Props +export interface FormProps { + formInline: FormItemProps; +}