Compare commits

...

2 Commits

Author SHA1 Message Date
bunny ecdb34ce95 feat: 左侧中间完成 2025-03-14 15:25:47 +08:00
bunny b1e6814b31 fix: 报错和打包问题 2025-03-13 23:01:44 +08:00
35 changed files with 547 additions and 204 deletions

View File

@ -33,6 +33,7 @@ export const buildEnv = (): BuildOptions => {
rollupOptions: { rollupOptions: {
external: ['md-editor-v3', 'echarts'], external: ['md-editor-v3', 'echarts'],
input: { input: {
// @ts-ignore
index: pathResolve('../index.html', import.meta.url), index: pathResolve('../index.html', import.meta.url),
}, },
// 静态资源分类打包 // 静态资源分类打包

View File

@ -1,26 +1,26 @@
import type { AcceptedPlugin } from 'postcss';
import postCssPxToViewport8plugin from 'postcss-px-to-viewport-8-plugin'; import postCssPxToViewport8plugin from 'postcss-px-to-viewport-8-plugin';
import type { CSSOptions, Plugin } from 'vite'; import type { CSSOptions } from 'vite';
import { wrapperEnv } from './utils'; import { wrapperEnv } from './utils';
export const css = (mode): CSSOptions => { export const css = (mode: string): CSSOptions => {
const plugins: Plugin[] = [usePostCssPxToViewport8plugin(mode)]; const plugins: AcceptedPlugin[] = [usePostCssPxToViewport8plugin(mode)];
return { return {
preprocessorOptions: { preprocessorOptions: {
scss: { scss: {
additionalData: `@use "@/assets/styles/minix/sidebar" as *;`, additionalData: `@use "@/assets/styles/minix/sidebar" as *;`,
api: 'modern-compiler',
}, },
}, },
postcss: { postcss: {
plugins: plugins.filter(Boolean), plugins: plugins.filter(Boolean),
}, },
} as CSSOptions; };
}; };
/** 是否启用px转换vw插件 */ /** 是否启用px转换vw插件 */
const usePostCssPxToViewport8plugin = (mode): Plugin => { const usePostCssPxToViewport8plugin = (mode: string): AcceptedPlugin => {
const { VITE_POST_CSS_PX_TO_VIEWPORT8_PLUGIN } = wrapperEnv(mode, 'VITE'); const { VITE_POST_CSS_PX_TO_VIEWPORT8_PLUGIN } = wrapperEnv(mode, 'VITE');
const cssPxToVw = postCssPxToViewport8plugin({ const cssPxToVw = postCssPxToViewport8plugin({

View File

@ -3,7 +3,7 @@ import dayjs, { type Dayjs } from 'dayjs';
import duration from 'dayjs/plugin/duration'; import duration from 'dayjs/plugin/duration';
import gradientString from 'gradient-string'; import gradientString from 'gradient-string';
import { wrapperEnv } from './utils'; import { logOutputSize, wrapperEnv } from './utils';
dayjs.extend(duration); dayjs.extend(duration);
@ -17,13 +17,12 @@ const boxenOptions: BoxenOptions = {
/* 输出日志信息 */ /* 输出日志信息 */
const printLogMessage = (VITE_PORT: number) => { const printLogMessage = (VITE_PORT: number) => {
return gradientString('cyan', 'magenta').multiline( return gradientString('cyan', 'magenta').multiline(
`保存成功!服务器重新启动... `欢迎使用此项目,项目访问地址如下:
访
http://localhost:${VITE_PORT}` http://localhost:${VITE_PORT}`
); );
}; };
export const viteConsoleLog = (mode) => { export const viteConsoleLog = (mode: string) => {
const { VITE_PORT } = wrapperEnv(mode); const { VITE_PORT } = wrapperEnv(mode);
let config: { command: string }; let config: { command: string };
@ -44,9 +43,12 @@ export const viteConsoleLog = (mode) => {
if (config.command === 'build') { if (config.command === 'build') {
endTime = dayjs(new Date()); endTime = dayjs(new Date());
const format = dayjs.duration(endTime.diff(startTime)).format('mm分ss秒'); const format = dayjs.duration(endTime.diff(startTime)).format('mm分ss秒');
console.log( console.log(
boxen( boxen(
gradientString('cyan', 'magenta').multiline(`🎉 恭喜打包完成(总用时${format}`), gradientString('cyan', 'magenta').multiline(
`🎉 恭喜打包完成(总用时${format})打包大小(${logOutputSize()}`
),
boxenOptions boxenOptions
) )
); );

View File

@ -9,6 +9,6 @@ const include = ['vue', 'vue-router', 'dayjs', 'axios', 'pinia', 'vue-types', 'j
/** /**
* *
*/ */
const exclude = []; const exclude: string[] = [];
export { include, exclude }; export { include, exclude };

View File

@ -4,6 +4,7 @@ import vueJsx from '@vitejs/plugin-vue-jsx';
import { presetIcons } from 'unocss'; import { presetIcons } from 'unocss';
import UnoCSS from 'unocss/vite'; import UnoCSS from 'unocss/vite';
import type { PluginOption } from 'vite'; import type { PluginOption } from 'vite';
// @ts-ignore
import { vitePluginFakeServer } from 'vite-plugin-fake-server'; import { vitePluginFakeServer } from 'vite-plugin-fake-server';
import removeConsole from 'vite-plugin-remove-console'; import removeConsole from 'vite-plugin-remove-console';
import Inspector from 'vite-plugin-vue-inspector'; import Inspector from 'vite-plugin-vue-inspector';
@ -12,7 +13,7 @@ import { useCDN } from './cdn';
import { viteConsoleLog } from './info'; import { viteConsoleLog } from './info';
import { compressPack, report, wrapperEnv } from './utils'; import { compressPack, report, wrapperEnv } from './utils';
export const plugins = (mode): PluginOption[] => { export const plugins = (mode: string): PluginOption[] => {
return [ return [
vue(), vue(),
vueJsx(), vueJsx(),
@ -47,7 +48,7 @@ export const plugins = (mode): PluginOption[] => {
}; };
/** MOCK 服务 */ /** MOCK 服务 */
const useMock = (mode) => { const useMock = (mode: string) => {
const { VITE_MOCK_DEV_SERVER } = wrapperEnv(mode); const { VITE_MOCK_DEV_SERVER } = wrapperEnv(mode);
return VITE_MOCK_DEV_SERVER return VITE_MOCK_DEV_SERVER

View File

@ -4,7 +4,7 @@ export const resolve = () => {
return { return {
alias: { alias: {
'@': pathResolve('../src'), '@': pathResolve('../src'),
'@build': pathResolve(), // '@build': pathResolve(),
}, },
}; };
}; };

View File

@ -3,7 +3,7 @@ import type { ServerOptions } from 'vite';
import { wrapperEnv } from './utils'; import { wrapperEnv } from './utils';
/* 开发服务配置 */ /* 开发服务配置 */
export const server = (mode) => { export const server = (mode: string) => {
const { VITE_PORT, VITE_APP_URL, VITE_STRICT_PORT } = wrapperEnv(mode); const { VITE_PORT, VITE_APP_URL, VITE_STRICT_PORT } = wrapperEnv(mode);
const options: ServerOptions = { const options: ServerOptions = {

View File

@ -1,10 +1,14 @@
import { dirname, resolve } from 'node:path'; import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url'; import { fileURLToPath } from 'node:url';
import fs from 'fs';
import path from 'path';
import { visualizer } from 'rollup-plugin-visualizer'; import { visualizer } from 'rollup-plugin-visualizer';
import { loadEnv } from 'vite'; import { loadEnv } from 'vite';
import viteCompression from 'vite-plugin-compression'; import viteCompression from 'vite-plugin-compression';
import { buildEnv } from './buildEnv';
export const root: string = process.cwd(); export const root: string = process.cwd();
/** /**
@ -12,6 +16,7 @@ export const root: string = process.cwd();
* @param dir `build` * @param dir `build`
* @param metaUrl `url``build``import.meta.url` * @param metaUrl `url``build``import.meta.url`
*/ */
// @ts-ignore
export const pathResolve = (dir = '.', metaUrl = import.meta.url) => { export const pathResolve = (dir = '.', metaUrl = import.meta.url) => {
// 当前文件目录的绝对路径 // 当前文件目录的绝对路径
const currentFileDir = dirname(fileURLToPath(metaUrl)); const currentFileDir = dirname(fileURLToPath(metaUrl));
@ -34,18 +39,20 @@ export const pathResolve = (dir = '.', metaUrl = import.meta.url) => {
* @param prefix * @param prefix
* @link https://cn.vite.dev/config/#using-environment-variables-in-config * @link https://cn.vite.dev/config/#using-environment-variables-in-config
*/ */
export const wrapperEnv = (mode, prefix: string = ''): ViteEnv => { // @ts-ignore
const env = loadEnv(mode, root, prefix); export const wrapperEnv = (mode: string, prefix: string = ''): ViteEnv => {
const env: any = loadEnv(mode, root, prefix);
// 将变量转换指定类型 // 将变量转换指定类型
for (const envName of Object.keys(env)) { for (const envName of Object.keys(env)) {
let realName = env[envName].replace(/\\n/g, '\n'); let realName: string | boolean | number = env[envName].replace(/\\n/g, '\n');
realName = realName === 'true' ? true : realName === 'false' ? false : realName; realName = realName === 'true' ? true : realName === 'false' ? false : realName;
if (envName === 'VITE_PORT') { if (envName === 'VITE_PORT') {
realName = Number(realName); realName = Number(realName);
} }
env[envName] = realName; env[envName] = realName;
// @ts-ignore
process.env[envName] = realName; process.env[envName] = realName;
} }
return env; return env;
@ -60,8 +67,52 @@ export const report = () => {
}; };
/* 启用gzip压缩 */ /* 启用gzip压缩 */
export const compressPack = (mode) => { export const compressPack = (mode: string) => {
const { VITE_COMPRESSION } = wrapperEnv(mode); const { VITE_COMPRESSION } = wrapperEnv(mode);
return VITE_COMPRESSION == 'gzip' ? viteCompression({ threshold: 1024000 }) : null; return VITE_COMPRESSION == 'gzip' ? viteCompression({ threshold: 1024000 }) : null;
}; };
/**
*
* @returns
*/
export const logOutputSize = (): string => {
const outDir = `../${buildEnv().outDir}`;
function convertSize(size: number) {
const units: Array<string> = ['byte', 'KB', 'MB', 'GB'];
// 输入的单位是否存在
let index = 0;
while (size >= 1024) {
size /= 1024;
index++;
}
return `${size.toFixed(2)} ${units[index]}`;
}
// 计算文件夹字节大小
function getFolderSize(folderPath: string) {
let size = 0;
fs.readdirSync(folderPath).forEach((fileName: string) => {
const filePath = path.join(folderPath, fileName);
const stats = fs.statSync(filePath);
if (stats.isFile()) {
size += stats.size;
} else if (stats.isDirectory()) {
size += getFolderSize(filePath);
}
});
return size;
}
const folderSize = getFolderSize(path.resolve(__dirname, outDir));
return convertSize(folderSize);
};

View File

@ -83,7 +83,7 @@ export default defineFlatConfig([
rules: { rules: {
...pluginTypeScript.configs.strict.rules, ...pluginTypeScript.configs.strict.rules,
'@typescript-eslint/ban-types': 'off', '@typescript-eslint/ban-types': 'off',
'@typescript-eslint/no-redeclare': 'error', '@typescript-eslint/no-redeclare': 'off',
'@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/ban-ts-comment': 'off',
'@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/prefer-as-const': 'warn', '@typescript-eslint/prefer-as-const': 'warn',

View File

@ -3,7 +3,7 @@ import { defineFakeRoute } from 'vite-plugin-fake-server/client';
export default defineFakeRoute([ export default defineFakeRoute([
{ {
url: '/mock/users', url: '/mock/users',
methods: 'get', method: 'GET',
response: () => ({ response: () => ({
code: 200, code: 200,
data: { data: {

View File

@ -13,6 +13,8 @@
}, },
"dependencies": { "dependencies": {
"@eslint/js": "^9.21.0", "@eslint/js": "^9.21.0",
"@parcel/watcher": "^2.5.1",
"@types/node": "^22.13.10",
"@typescript-eslint/eslint-plugin": "^8.24.1", "@typescript-eslint/eslint-plugin": "^8.24.1",
"@typescript-eslint/parser": "^8.24.1", "@typescript-eslint/parser": "^8.24.1",
"@unocss/preset-icons": "^66.0.0", "@unocss/preset-icons": "^66.0.0",
@ -25,6 +27,7 @@
"boxen": "^8.0.1", "boxen": "^8.0.1",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"echarts": "^5.6.0", "echarts": "^5.6.0",
"esbuild": "^0.25.1",
"eslint": "^9.9.1", "eslint": "^9.9.1",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-define-config": "^2.1.0", "eslint-define-config": "^2.1.0",
@ -36,6 +39,7 @@
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"pinia": "^2.3.1", "pinia": "^2.3.1",
"pinia-plugin-persistedstate": "^3.2.3", "pinia-plugin-persistedstate": "^3.2.3",
"postcss": "^8.5.3",
"postcss-px-to-viewport-8-plugin": "^1.2.5", "postcss-px-to-viewport-8-plugin": "^1.2.5",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"qs": "^6.14.0", "qs": "^6.14.0",
@ -54,12 +58,15 @@
"vite-plugin-remove-console": "^2.2.0", "vite-plugin-remove-console": "^2.2.0",
"vite-plugin-vue-inspector": "^5.3.1", "vite-plugin-vue-inspector": "^5.3.1",
"vue": "^3.5.13", "vue": "^3.5.13",
"vue-demi": "^0.14.10",
"vue-eslint-parser": "^9.4.3", "vue-eslint-parser": "^9.4.3",
"vue-router": "^4.4.3", "vue-router": "^4.4.3",
"vue-types": "^6.0.0" "vue-types": "^6.0.0"
}, },
"devDependencies": { "devDependencies": {
"@iconify/json": "^2.2.310", "@iconify/json": "^2.2.310",
"@types/nprogress": "^0.2.3",
"@types/qs": "^6.9.18",
"@vitejs/plugin-vue": "^5.2.1", "@vitejs/plugin-vue": "^5.2.1",
"@vue/tsconfig": "^0.7.0", "@vue/tsconfig": "^0.7.0",
"eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-simple-import-sort": "^12.1.1",

View File

@ -11,6 +11,12 @@ importers:
'@eslint/js': '@eslint/js':
specifier: ^9.21.0 specifier: ^9.21.0
version: 9.21.0 version: 9.21.0
'@parcel/watcher':
specifier: ^2.5.1
version: 2.5.1
'@types/node':
specifier: ^22.13.10
version: 22.13.10
'@typescript-eslint/eslint-plugin': '@typescript-eslint/eslint-plugin':
specifier: ^8.24.1 specifier: ^8.24.1
version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) version: 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
@ -25,7 +31,7 @@ importers:
version: 66.0.0 version: 66.0.0
'@vitejs/plugin-vue-jsx': '@vitejs/plugin-vue-jsx':
specifier: ^4.1.1 specifier: ^4.1.1
version: 4.1.1(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3)) version: 4.1.1(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))
'@vueuse/core': '@vueuse/core':
specifier: ^12.8.2 specifier: ^12.8.2
version: 12.8.2(typescript@5.7.3) version: 12.8.2(typescript@5.7.3)
@ -47,6 +53,9 @@ importers:
echarts: echarts:
specifier: ^5.6.0 specifier: ^5.6.0
version: 5.6.0 version: 5.6.0
esbuild:
specifier: ^0.25.1
version: 0.25.1
eslint: eslint:
specifier: ^9.9.1 specifier: ^9.9.1
version: 9.21.0(jiti@2.4.2) version: 9.21.0(jiti@2.4.2)
@ -80,6 +89,9 @@ importers:
pinia-plugin-persistedstate: pinia-plugin-persistedstate:
specifier: ^3.2.3 specifier: ^3.2.3
version: 3.2.3(pinia@2.3.1(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) version: 3.2.3(pinia@2.3.1(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))
postcss:
specifier: ^8.5.3
version: 8.5.3
postcss-px-to-viewport-8-plugin: postcss-px-to-viewport-8-plugin:
specifier: ^1.2.5 specifier: ^1.2.5
version: 1.2.5 version: 1.2.5
@ -118,10 +130,10 @@ importers:
version: 5.39.0 version: 5.39.0
unocss: unocss:
specifier: ^66.0.0 specifier: ^66.0.0
version: 66.0.0(postcss@8.5.3)(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3)) version: 66.0.0(postcss@8.5.3)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))
vite-plugin-cdn-import: vite-plugin-cdn-import:
specifier: ^1.0.1 specifier: ^1.0.1
version: 1.0.1(rollup@4.34.8)(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)) version: 1.0.1(rollup@4.34.8)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))
vite-plugin-fake-server: vite-plugin-fake-server:
specifier: ^2.2.0 specifier: ^2.2.0
version: 2.2.0 version: 2.2.0
@ -130,10 +142,13 @@ importers:
version: 2.2.0 version: 2.2.0
vite-plugin-vue-inspector: vite-plugin-vue-inspector:
specifier: ^5.3.1 specifier: ^5.3.1
version: 5.3.1(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)) version: 5.3.1(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))
vue: vue:
specifier: ^3.5.13 specifier: ^3.5.13
version: 3.5.13(typescript@5.7.3) version: 3.5.13(typescript@5.7.3)
vue-demi:
specifier: ^0.14.10
version: 0.14.10(vue@3.5.13(typescript@5.7.3))
vue-eslint-parser: vue-eslint-parser:
specifier: ^9.4.3 specifier: ^9.4.3
version: 9.4.3(eslint@9.21.0(jiti@2.4.2)) version: 9.4.3(eslint@9.21.0(jiti@2.4.2))
@ -147,9 +162,15 @@ importers:
'@iconify/json': '@iconify/json':
specifier: ^2.2.310 specifier: ^2.2.310
version: 2.2.310 version: 2.2.310
'@types/nprogress':
specifier: ^0.2.3
version: 0.2.3
'@types/qs':
specifier: ^6.9.18
version: 6.9.18
'@vitejs/plugin-vue': '@vitejs/plugin-vue':
specifier: ^5.2.1 specifier: ^5.2.1
version: 5.2.1(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3)) version: 5.2.1(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))
'@vue/tsconfig': '@vue/tsconfig':
specifier: ^0.7.0 specifier: ^0.7.0
version: 0.7.0(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) version: 0.7.0(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))
@ -161,10 +182,10 @@ importers:
version: 5.7.3 version: 5.7.3
vite: vite:
specifier: ^6.1.0 specifier: ^6.1.0
version: 6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0) version: 6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)
vite-plugin-compression: vite-plugin-compression:
specifier: ^0.5.1 specifier: ^0.5.1
version: 0.5.1(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)) version: 0.5.1(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))
vue-tsc: vue-tsc:
specifier: ^2.2.0 specifier: ^2.2.0
version: 2.2.4(typescript@5.7.3) version: 2.2.4(typescript@5.7.3)
@ -349,150 +370,300 @@ packages:
cpu: [ppc64] cpu: [ppc64]
os: [aix] os: [aix]
'@esbuild/aix-ppc64@0.25.1':
resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.24.2': '@esbuild/android-arm64@0.24.2':
resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@esbuild/android-arm64@0.25.1':
resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.24.2': '@esbuild/android-arm@0.24.2':
resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
'@esbuild/android-arm@0.25.1':
resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.24.2': '@esbuild/android-x64@0.24.2':
resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
'@esbuild/android-x64@0.25.1':
resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.24.2': '@esbuild/darwin-arm64@0.24.2':
resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@esbuild/darwin-arm64@0.25.1':
resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.24.2': '@esbuild/darwin-x64@0.24.2':
resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@esbuild/darwin-x64@0.25.1':
resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.24.2': '@esbuild/freebsd-arm64@0.24.2':
resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
'@esbuild/freebsd-arm64@0.25.1':
resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.24.2': '@esbuild/freebsd-x64@0.24.2':
resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
'@esbuild/freebsd-x64@0.25.1':
resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.24.2': '@esbuild/linux-arm64@0.24.2':
resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@esbuild/linux-arm64@0.25.1':
resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.24.2': '@esbuild/linux-arm@0.24.2':
resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@esbuild/linux-arm@0.25.1':
resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.24.2': '@esbuild/linux-ia32@0.24.2':
resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
'@esbuild/linux-ia32@0.25.1':
resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.24.2': '@esbuild/linux-loong64@0.24.2':
resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
'@esbuild/linux-loong64@0.25.1':
resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.24.2': '@esbuild/linux-mips64el@0.24.2':
resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
'@esbuild/linux-mips64el@0.25.1':
resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.24.2': '@esbuild/linux-ppc64@0.24.2':
resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
'@esbuild/linux-ppc64@0.25.1':
resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.24.2': '@esbuild/linux-riscv64@0.24.2':
resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
'@esbuild/linux-riscv64@0.25.1':
resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.24.2': '@esbuild/linux-s390x@0.24.2':
resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
'@esbuild/linux-s390x@0.25.1':
resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.24.2': '@esbuild/linux-x64@0.24.2':
resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@esbuild/linux-x64@0.25.1':
resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
'@esbuild/netbsd-arm64@0.24.2': '@esbuild/netbsd-arm64@0.24.2':
resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [netbsd] os: [netbsd]
'@esbuild/netbsd-arm64@0.25.1':
resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
'@esbuild/netbsd-x64@0.24.2': '@esbuild/netbsd-x64@0.24.2':
resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
'@esbuild/netbsd-x64@0.25.1':
resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-arm64@0.24.2': '@esbuild/openbsd-arm64@0.24.2':
resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [openbsd] os: [openbsd]
'@esbuild/openbsd-arm64@0.25.1':
resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
'@esbuild/openbsd-x64@0.24.2': '@esbuild/openbsd-x64@0.24.2':
resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
'@esbuild/openbsd-x64@0.25.1':
resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
'@esbuild/sunos-x64@0.24.2': '@esbuild/sunos-x64@0.24.2':
resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
'@esbuild/sunos-x64@0.25.1':
resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.24.2': '@esbuild/win32-arm64@0.24.2':
resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@esbuild/win32-arm64@0.25.1':
resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.24.2': '@esbuild/win32-ia32@0.24.2':
resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@esbuild/win32-ia32@0.25.1':
resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.24.2': '@esbuild/win32-x64@0.24.2':
resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@esbuild/win32-x64@0.25.1':
resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
'@eslint-community/eslint-utils@4.4.1': '@eslint-community/eslint-utils@4.4.1':
resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -815,6 +986,15 @@ packages:
'@types/json-schema@7.0.15': '@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
'@types/node@22.13.10':
resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==}
'@types/nprogress@0.2.3':
resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==}
'@types/qs@6.9.18':
resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==}
'@types/tinycolor2@1.4.6': '@types/tinycolor2@1.4.6':
resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==}
@ -1388,6 +1568,11 @@ packages:
engines: {node: '>=18'} engines: {node: '>=18'}
hasBin: true hasBin: true
esbuild@0.25.1:
resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==}
engines: {node: '>=18'}
hasBin: true
escalade@3.2.0: escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -2441,6 +2626,9 @@ packages:
unconfig@7.0.0: unconfig@7.0.0:
resolution: {integrity: sha512-G5CJSoG6ZTxgzCJblEfgpdRK2tos9+UdD2WtecDUVfImzQ0hFjwpH5RVvGMhP4pRpC9ML7NrC4qBsBl0Ttj35A==} resolution: {integrity: sha512-G5CJSoG6ZTxgzCJblEfgpdRK2tos9+UdD2WtecDUVfImzQ0hFjwpH5RVvGMhP4pRpC9ML7NrC4qBsBl0Ttj35A==}
undici-types@6.20.0:
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
universalify@2.0.1: universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'} engines: {node: '>= 10.0.0'}
@ -2873,78 +3061,153 @@ snapshots:
'@esbuild/aix-ppc64@0.24.2': '@esbuild/aix-ppc64@0.24.2':
optional: true optional: true
'@esbuild/aix-ppc64@0.25.1':
optional: true
'@esbuild/android-arm64@0.24.2': '@esbuild/android-arm64@0.24.2':
optional: true optional: true
'@esbuild/android-arm64@0.25.1':
optional: true
'@esbuild/android-arm@0.24.2': '@esbuild/android-arm@0.24.2':
optional: true optional: true
'@esbuild/android-arm@0.25.1':
optional: true
'@esbuild/android-x64@0.24.2': '@esbuild/android-x64@0.24.2':
optional: true optional: true
'@esbuild/android-x64@0.25.1':
optional: true
'@esbuild/darwin-arm64@0.24.2': '@esbuild/darwin-arm64@0.24.2':
optional: true optional: true
'@esbuild/darwin-arm64@0.25.1':
optional: true
'@esbuild/darwin-x64@0.24.2': '@esbuild/darwin-x64@0.24.2':
optional: true optional: true
'@esbuild/darwin-x64@0.25.1':
optional: true
'@esbuild/freebsd-arm64@0.24.2': '@esbuild/freebsd-arm64@0.24.2':
optional: true optional: true
'@esbuild/freebsd-arm64@0.25.1':
optional: true
'@esbuild/freebsd-x64@0.24.2': '@esbuild/freebsd-x64@0.24.2':
optional: true optional: true
'@esbuild/freebsd-x64@0.25.1':
optional: true
'@esbuild/linux-arm64@0.24.2': '@esbuild/linux-arm64@0.24.2':
optional: true optional: true
'@esbuild/linux-arm64@0.25.1':
optional: true
'@esbuild/linux-arm@0.24.2': '@esbuild/linux-arm@0.24.2':
optional: true optional: true
'@esbuild/linux-arm@0.25.1':
optional: true
'@esbuild/linux-ia32@0.24.2': '@esbuild/linux-ia32@0.24.2':
optional: true optional: true
'@esbuild/linux-ia32@0.25.1':
optional: true
'@esbuild/linux-loong64@0.24.2': '@esbuild/linux-loong64@0.24.2':
optional: true optional: true
'@esbuild/linux-loong64@0.25.1':
optional: true
'@esbuild/linux-mips64el@0.24.2': '@esbuild/linux-mips64el@0.24.2':
optional: true optional: true
'@esbuild/linux-mips64el@0.25.1':
optional: true
'@esbuild/linux-ppc64@0.24.2': '@esbuild/linux-ppc64@0.24.2':
optional: true optional: true
'@esbuild/linux-ppc64@0.25.1':
optional: true
'@esbuild/linux-riscv64@0.24.2': '@esbuild/linux-riscv64@0.24.2':
optional: true optional: true
'@esbuild/linux-riscv64@0.25.1':
optional: true
'@esbuild/linux-s390x@0.24.2': '@esbuild/linux-s390x@0.24.2':
optional: true optional: true
'@esbuild/linux-s390x@0.25.1':
optional: true
'@esbuild/linux-x64@0.24.2': '@esbuild/linux-x64@0.24.2':
optional: true optional: true
'@esbuild/linux-x64@0.25.1':
optional: true
'@esbuild/netbsd-arm64@0.24.2': '@esbuild/netbsd-arm64@0.24.2':
optional: true optional: true
'@esbuild/netbsd-arm64@0.25.1':
optional: true
'@esbuild/netbsd-x64@0.24.2': '@esbuild/netbsd-x64@0.24.2':
optional: true optional: true
'@esbuild/netbsd-x64@0.25.1':
optional: true
'@esbuild/openbsd-arm64@0.24.2': '@esbuild/openbsd-arm64@0.24.2':
optional: true optional: true
'@esbuild/openbsd-arm64@0.25.1':
optional: true
'@esbuild/openbsd-x64@0.24.2': '@esbuild/openbsd-x64@0.24.2':
optional: true optional: true
'@esbuild/openbsd-x64@0.25.1':
optional: true
'@esbuild/sunos-x64@0.24.2': '@esbuild/sunos-x64@0.24.2':
optional: true optional: true
'@esbuild/sunos-x64@0.25.1':
optional: true
'@esbuild/win32-arm64@0.24.2': '@esbuild/win32-arm64@0.24.2':
optional: true optional: true
'@esbuild/win32-arm64@0.25.1':
optional: true
'@esbuild/win32-ia32@0.24.2': '@esbuild/win32-ia32@0.24.2':
optional: true optional: true
'@esbuild/win32-ia32@0.25.1':
optional: true
'@esbuild/win32-x64@0.24.2': '@esbuild/win32-x64@0.24.2':
optional: true optional: true
'@esbuild/win32-x64@0.25.1':
optional: true
'@eslint-community/eslint-utils@4.4.1(eslint@9.21.0(jiti@2.4.2))': '@eslint-community/eslint-utils@4.4.1(eslint@9.21.0(jiti@2.4.2))':
dependencies: dependencies:
eslint: 9.21.0(jiti@2.4.2) eslint: 9.21.0(jiti@2.4.2)
@ -3126,7 +3389,6 @@ snapshots:
'@parcel/watcher-win32-arm64': 2.5.1 '@parcel/watcher-win32-arm64': 2.5.1
'@parcel/watcher-win32-ia32': 2.5.1 '@parcel/watcher-win32-ia32': 2.5.1
'@parcel/watcher-win32-x64': 2.5.1 '@parcel/watcher-win32-x64': 2.5.1
optional: true
'@pkgjs/parseargs@0.11.0': '@pkgjs/parseargs@0.11.0':
optional: true optional: true
@ -3204,6 +3466,14 @@ snapshots:
'@types/json-schema@7.0.15': {} '@types/json-schema@7.0.15': {}
'@types/node@22.13.10':
dependencies:
undici-types: 6.20.0
'@types/nprogress@0.2.3': {}
'@types/qs@6.9.18': {}
'@types/tinycolor2@1.4.6': {} '@types/tinycolor2@1.4.6': {}
'@types/web-bluetooth@0.0.21': {} '@types/web-bluetooth@0.0.21': {}
@ -3285,13 +3555,13 @@ snapshots:
'@typescript-eslint/types': 8.24.1 '@typescript-eslint/types': 8.24.1
eslint-visitor-keys: 4.2.0 eslint-visitor-keys: 4.2.0
'@unocss/astro@66.0.0(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))': '@unocss/astro@66.0.0(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))':
dependencies: dependencies:
'@unocss/core': 66.0.0 '@unocss/core': 66.0.0
'@unocss/reset': 66.0.0 '@unocss/reset': 66.0.0
'@unocss/vite': 66.0.0(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3)) '@unocss/vite': 66.0.0(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))
optionalDependencies: optionalDependencies:
vite: 6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0) vite: 6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)
transitivePeerDependencies: transitivePeerDependencies:
- vue - vue
@ -3416,7 +3686,7 @@ snapshots:
dependencies: dependencies:
'@unocss/core': 66.0.0 '@unocss/core': 66.0.0
'@unocss/vite@66.0.0(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))': '@unocss/vite@66.0.0(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))':
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
'@unocss/config': 66.0.0 '@unocss/config': 66.0.0
@ -3426,23 +3696,23 @@ snapshots:
magic-string: 0.30.17 magic-string: 0.30.17
tinyglobby: 0.2.12 tinyglobby: 0.2.12
unplugin-utils: 0.2.4 unplugin-utils: 0.2.4
vite: 6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0) vite: 6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)
transitivePeerDependencies: transitivePeerDependencies:
- vue - vue
'@vitejs/plugin-vue-jsx@4.1.1(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))': '@vitejs/plugin-vue-jsx@4.1.1(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))':
dependencies: dependencies:
'@babel/core': 7.26.9 '@babel/core': 7.26.9
'@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.9) '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.9)
'@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.9) '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.9)
vite: 6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0) vite: 6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)
vue: 3.5.13(typescript@5.7.3) vue: 3.5.13(typescript@5.7.3)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@vitejs/plugin-vue@5.2.1(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))': '@vitejs/plugin-vue@5.2.1(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))':
dependencies: dependencies:
vite: 6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0) vite: 6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)
vue: 3.5.13(typescript@5.7.3) vue: 3.5.13(typescript@5.7.3)
'@volar/language-core@2.4.11': '@volar/language-core@2.4.11':
@ -3819,8 +4089,7 @@ snapshots:
destr@2.0.3: {} destr@2.0.3: {}
detect-libc@1.0.3: detect-libc@1.0.3: {}
optional: true
dir-glob@3.0.1: dir-glob@3.0.1:
dependencies: dependencies:
@ -3920,6 +4189,34 @@ snapshots:
'@esbuild/win32-ia32': 0.24.2 '@esbuild/win32-ia32': 0.24.2
'@esbuild/win32-x64': 0.24.2 '@esbuild/win32-x64': 0.24.2
esbuild@0.25.1:
optionalDependencies:
'@esbuild/aix-ppc64': 0.25.1
'@esbuild/android-arm': 0.25.1
'@esbuild/android-arm64': 0.25.1
'@esbuild/android-x64': 0.25.1
'@esbuild/darwin-arm64': 0.25.1
'@esbuild/darwin-x64': 0.25.1
'@esbuild/freebsd-arm64': 0.25.1
'@esbuild/freebsd-x64': 0.25.1
'@esbuild/linux-arm': 0.25.1
'@esbuild/linux-arm64': 0.25.1
'@esbuild/linux-ia32': 0.25.1
'@esbuild/linux-loong64': 0.25.1
'@esbuild/linux-mips64el': 0.25.1
'@esbuild/linux-ppc64': 0.25.1
'@esbuild/linux-riscv64': 0.25.1
'@esbuild/linux-s390x': 0.25.1
'@esbuild/linux-x64': 0.25.1
'@esbuild/netbsd-arm64': 0.25.1
'@esbuild/netbsd-x64': 0.25.1
'@esbuild/openbsd-arm64': 0.25.1
'@esbuild/openbsd-x64': 0.25.1
'@esbuild/sunos-x64': 0.25.1
'@esbuild/win32-arm64': 0.25.1
'@esbuild/win32-ia32': 0.25.1
'@esbuild/win32-x64': 0.25.1
escalade@3.2.0: {} escalade@3.2.0: {}
escape-string-regexp@4.0.0: {} escape-string-regexp@4.0.0: {}
@ -4435,8 +4732,7 @@ snapshots:
natural-compare@1.4.0: {} natural-compare@1.4.0: {}
node-addon-api@7.1.1: node-addon-api@7.1.1: {}
optional: true
node-fetch-native@1.6.6: {} node-fetch-native@1.6.6: {}
@ -4972,11 +5268,13 @@ snapshots:
defu: 6.1.4 defu: 6.1.4
jiti: 2.4.2 jiti: 2.4.2
undici-types@6.20.0: {}
universalify@2.0.1: {} universalify@2.0.1: {}
unocss@66.0.0(postcss@8.5.3)(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3)): unocss@66.0.0(postcss@8.5.3)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3)):
dependencies: dependencies:
'@unocss/astro': 66.0.0(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3)) '@unocss/astro': 66.0.0(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))
'@unocss/cli': 66.0.0 '@unocss/cli': 66.0.0
'@unocss/core': 66.0.0 '@unocss/core': 66.0.0
'@unocss/postcss': 66.0.0(postcss@8.5.3) '@unocss/postcss': 66.0.0(postcss@8.5.3)
@ -4993,9 +5291,9 @@ snapshots:
'@unocss/transformer-compile-class': 66.0.0 '@unocss/transformer-compile-class': 66.0.0
'@unocss/transformer-directives': 66.0.0 '@unocss/transformer-directives': 66.0.0
'@unocss/transformer-variant-group': 66.0.0 '@unocss/transformer-variant-group': 66.0.0
'@unocss/vite': 66.0.0(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3)) '@unocss/vite': 66.0.0(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))
optionalDependencies: optionalDependencies:
vite: 6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0) vite: 6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)
transitivePeerDependencies: transitivePeerDependencies:
- postcss - postcss
- supports-color - supports-color
@ -5018,30 +5316,30 @@ snapshots:
util-deprecate@1.0.2: {} util-deprecate@1.0.2: {}
vite-plugin-cdn-import@1.0.1(rollup@4.34.8)(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)): vite-plugin-cdn-import@1.0.1(rollup@4.34.8)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)):
dependencies: dependencies:
rollup-plugin-external-globals: 0.10.0(rollup@4.34.8) rollup-plugin-external-globals: 0.10.0(rollup@4.34.8)
vite-plugin-externals: 0.6.2(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)) vite-plugin-externals: 0.6.2(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0))
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- vite - vite
vite-plugin-compression@0.5.1(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)): vite-plugin-compression@0.5.1(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)):
dependencies: dependencies:
chalk: 4.1.2 chalk: 4.1.2
debug: 4.4.0 debug: 4.4.0
fs-extra: 10.1.0 fs-extra: 10.1.0
vite: 6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0) vite: 6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
vite-plugin-externals@0.6.2(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)): vite-plugin-externals@0.6.2(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)):
dependencies: dependencies:
acorn: 8.14.0 acorn: 8.14.0
es-module-lexer: 0.4.1 es-module-lexer: 0.4.1
fs-extra: 10.1.0 fs-extra: 10.1.0
magic-string: 0.25.9 magic-string: 0.25.9
vite: 6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0) vite: 6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)
vite-plugin-fake-server@2.2.0: vite-plugin-fake-server@2.2.0:
dependencies: dependencies:
@ -5053,7 +5351,7 @@ snapshots:
vite-plugin-remove-console@2.2.0: {} vite-plugin-remove-console@2.2.0: {}
vite-plugin-vue-inspector@5.3.1(vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)): vite-plugin-vue-inspector@5.3.1(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)):
dependencies: dependencies:
'@babel/core': 7.26.9 '@babel/core': 7.26.9
'@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.9) '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.9)
@ -5064,16 +5362,17 @@ snapshots:
'@vue/compiler-dom': 3.5.13 '@vue/compiler-dom': 3.5.13
kolorist: 1.8.0 kolorist: 1.8.0
magic-string: 0.30.17 magic-string: 0.30.17
vite: 6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0) vite: 6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
vite@6.1.1(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0): vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(sass@1.85.0)(terser@5.39.0):
dependencies: dependencies:
esbuild: 0.24.2 esbuild: 0.24.2
postcss: 8.5.3 postcss: 8.5.3
rollup: 4.34.8 rollup: 4.34.8
optionalDependencies: optionalDependencies:
'@types/node': 22.13.10
fsevents: 2.3.3 fsevents: 2.3.3
jiti: 2.4.2 jiti: 2.4.2
sass: 1.85.0 sass: 1.85.0

View File

@ -6,10 +6,10 @@
</router-view> </router-view>
</template> </template>
<style> <style lang="scss">
#app { #app {
width: 100%; width: 100%;
//height: 100%;
height: 1080px; height: 1080px;
//height: 100%;
} }
</style> </style>

View File

@ -44,7 +44,7 @@ service.interceptors.response.use(
} }
// ElMessage.error(msg || '系统出错'); // ElMessage.error(msg || '系统出错');
return Promise.reject(msg || 'Error'); return Promise.reject(response.data.message || 'Error');
}, },
(error: any) => { (error: any) => {
// 异常处理 // 异常处理

View File

@ -44,7 +44,7 @@ service.interceptors.response.use(
} }
// ElMessage.error(msg || '系统出错'); // ElMessage.error(msg || '系统出错');
return Promise.reject(msg || 'Error'); return Promise.reject(response.data.message || 'Error');
}, },
(error: any) => { (error: any) => {
// 异常处理 // 异常处理

View File

@ -2,7 +2,7 @@ import 'animate.css';
import '@unocss/reset/tailwind-compat.css'; import '@unocss/reset/tailwind-compat.css';
import 'uno.css'; import 'uno.css';
import 'virtual:unocss-devtools'; import 'virtual:unocss-devtools';
import '@/assets/styles/global.scss'; import './assets/styles/global.scss';
import { createApp } from 'vue'; import { createApp } from 'vue';

View File

@ -5,7 +5,7 @@ import error from '@/router/modules/error';
import remaining from '@/router/modules/remaining'; import remaining from '@/router/modules/remaining';
// 静态路由 // 静态路由
const routes: RouteRecordRaw[] = [...remaining, ...error]; const routes: RouteRecordRaw[] = [...remaining, ...error] as RouteRecordRaw[];
const router = createRouter({ const router = createRouter({
history: createWebHashHistory(), history: createWebHashHistory(),
routes, routes,

View File

@ -2,8 +2,9 @@ import type { RouteRecordRaw } from 'vue-router';
import Layout from '@/layout/index.vue'; import Layout from '@/layout/index.vue';
import home from '@/router/modules/home'; import home from '@/router/modules/home';
import type { RouteConfigsTable } from '@/types/router/Route';
const routes: RouteRecordRaw[] = [ const routes: RouteRecordRaw[] | RouteConfigsTable[] = [
{ {
path: '/', path: '/',
name: 'layout', name: 'layout',

View File

@ -10,7 +10,7 @@ const useAppStore = defineStore('appStore', {
}, },
getters: {}, getters: {},
actions: { actions: {
setBackground(background) { setBackground(background: string) {
if (isCSSColor(background)) { if (isCSSColor(background)) {
this.background = background; this.background = background;
} else if (isPath(background)) { } else if (isPath(background)) {

View File

@ -3,7 +3,7 @@ import { defineStore } from 'pinia';
import { user } from '@/api/test'; import { user } from '@/api/test';
/** 用户信息 */ /** 用户信息 */
const useUserStore = defineStore('userStore', { export const useUserStore = defineStore('userStore', {
state() { state() {
return { return {
userinfo: {}, userinfo: {},
@ -19,5 +19,3 @@ const useUserStore = defineStore('userStore', {
}, },
}, },
}); });
export { useUserStore };

View File

@ -1,6 +1,6 @@
declare global { declare global {
/* 环境便配置 */ /* 环境便配置 */
declare interface ViteEnv { export declare interface ViteEnv {
VITE_APP_TITLE: string; VITE_APP_TITLE: string;
VITE_PORT: number; VITE_PORT: number;
VITE_PUBLIC_PATH: string; VITE_PUBLIC_PATH: string;

View File

@ -4,15 +4,16 @@ import type { RouteComponent } from 'vue-router';
* @description `meta` * @description `meta`
*/ */
interface CustomizeRouteMeta { interface CustomizeRouteMeta {
title: string; title?: string;
subtitle: string; subtitle?: string;
transition: string; transition?: string;
hidden?: boolean;
} }
/** /**
* @description * @description
*/ */
interface RouteConfigsTable { export interface RouteConfigsTable {
/** 路由地址 `必填` */ /** 路由地址 `必填` */
path: string; path: string;
/** 路由名字(保持唯一)`可选` */ /** 路由名字(保持唯一)`可选` */
@ -25,5 +26,3 @@ interface RouteConfigsTable {
/** 子路由配置项 */ /** 子路由配置项 */
children?: Array<RouteConfigsTable>; children?: Array<RouteConfigsTable>;
} }
export { RouteConfigsTable };

View File

@ -1,11 +1,14 @@
import { useEventListener } from '@vueuse/core'; import { useDebounceFn, useEventListener } from '@vueuse/core';
import type { EChartsType } from 'echarts';
import type echarts from '@/plugins/echarts';
/** 通用重置图表样式 */ /** 通用重置图表样式 */
export const debounceChart = (myChart: EChartsType | undefined) => { export const debounceChart = (myChart: echarts.ECharts | undefined) => {
useEventListener(window, 'resize', () => { const debounceFn = useDebounceFn(() => {
myChart!.resize(); myChart!.resize();
}); }, 500);
useEventListener(window, 'resize', debounceFn);
}; };
/** 数字格式化 */ /** 数字格式化 */

View File

@ -1,5 +1,5 @@
/** 判断是否是CSS颜色 */ /** 判断是否是CSS颜色 */
function isCSSColor(str) { function isCSSColor(str: string) {
// 匹配十六进制颜色(如 #fff, #ffffff // 匹配十六进制颜色(如 #fff, #ffffff
const hexColor = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/; const hexColor = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;
@ -16,7 +16,7 @@ function isCSSColor(str) {
} }
/** 判断是否是相对路径或绝对路径 */ /** 判断是否是相对路径或绝对路径 */
function isPath(str) { function isPath(str: string) {
// 匹配相对路径(如 ./path, ../path, path/to/file // 匹配相对路径(如 ./path, ../path, path/to/file
const relativePath = /^\.{0,2}\/[^\/].*$/; const relativePath = /^\.{0,2}\/[^\/].*$/;

View File

@ -27,7 +27,7 @@ option.value = {
series: [ series: [
{ {
type: 'gauge', type: 'gauge',
title: { fontSize: 14, color: '#fff', offsetCenter: ['0%', '14%'] }, title: { fontSize: '0.7em', color: '#fff', offsetCenter: ['0%', '14%'] },
startAngle: 90, startAngle: 90,
endAngle: -270, endAngle: -270,
pointer: { show: false }, pointer: { show: false },
@ -36,23 +36,10 @@ option.value = {
splitLine: { show: false, distance: 0, length: 10 }, splitLine: { show: false, distance: 0, length: 10 },
axisTick: { show: false }, axisTick: { show: false },
axisLabel: { show: false, distance: 50 }, axisLabel: { show: false, distance: 50 },
// data: [
// {
// value: 80,
// name: '环比变化',
// detail: { valueAnimation: true, offsetCenter: ['0%', '-20%'] },
// itemStyle: {
// color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// { offset: 0, color: '#00CCD2' },
// { offset: 1, color: '#00A2FF' },
// ]),
// },
// },
// ],
detail: { detail: {
width: 10, width: 40,
height: 50, height: 40,
fontSize: 14, fontSize: '0.8em',
fontWeight: 0, fontWeight: 0,
color: '#fff', color: '#fff',
formatter: '+{value}%', formatter: '+{value}%',
@ -62,18 +49,15 @@ option.value = {
}; };
/** 绘制图表 */ /** 绘制图表 */
export const renderEcharts: any = ( const renderEcharts: any = (myChart: Ref<echarts.ECharts>, element: Ref<HTMLDivElement>) => {
myChart: Ref<EChartsType | undefined>,
element: Ref<HTMLDivElement | undefined>
) => {
myChart.value = echarts.init(element.value, null, { myChart.value = echarts.init(element.value, null, {
renderer: 'svg', renderer: 'svg',
devicePixelRatio: window.devicePixelRatio, devicePixelRatio: window.devicePixelRatio,
}) as any; });
debounceChart(myChart.value);
myChart.value!.setOption(option.value!); myChart.value!.setOption(option.value!);
debounceChart(myChart.value);
}; };
/* 封装组件 */ /* 封装组件 */
@ -98,10 +82,11 @@ export const ChartProgress = defineComponent({
); );
}); });
return () => <div ref={chart} class="progress"></div>; return () => <div ref={chart} className="progress"></div>;
}, },
}); });
/** 更新图标数据 */
const updateChart = (myChart: Ref<EChartsType | undefined>, props: any) => { const updateChart = (myChart: Ref<EChartsType | undefined>, props: any) => {
myChart.value?.setOption({ myChart.value?.setOption({
series: [ series: [

View File

@ -41,14 +41,14 @@ onMounted(() => {
{ title: '经营总收入', amount: randomNumber(9999999), percent: randomNumber() }, { title: '经营总收入', amount: randomNumber(9999999), percent: randomNumber() },
{ title: '经营总收入', amount: randomNumber(9999999), percent: randomNumber() }, { title: '经营总收入', amount: randomNumber(9999999), percent: randomNumber() },
]; ];
}, 1000); }, 2000);
}); });
</script> </script>
<template> <template>
<div class="big-data__sidebar-item h-[389px]"> <div class="big-data__sidebar-item h-[389px]">
<div class="flex-x-between"> <div class="flex-x-between">
<h1 class="big-data__sidebar-title">规模效益</h1> <h1 class="big-data__sidebar-title">本年经营收入</h1>
<span class="big-data__sidebar-title-describe">截止时间至2021年6月</span> <span class="big-data__sidebar-title-describe">截止时间至2021年6月</span>
</div> </div>
@ -84,8 +84,8 @@ li {
position: absolute; position: absolute;
top: -10px; top: -10px;
right: -5px; right: -5px;
width: 90px; width: 100px;
height: 90px; height: 100px;
} }
h1 { h1 {

View File

@ -9,7 +9,7 @@ import BigDataRight from '@/views/big-data/components/big-data-right/index.vue';
const appStore = useAppStore(); const appStore = useAppStore();
onBeforeMount(async () => { onBeforeMount(async () => {
appStore.setBackground('#04072F'); appStore.setBackground('../assets/images/common/bg/bg-secondary.png');
}); });
</script> </script>

View File

@ -45,7 +45,7 @@ option.value = {
}; };
export const renderEcharts = (element: Ref<HTMLDivElement>) => { export const renderEcharts = (element: Ref<HTMLDivElement>) => {
const myChart = echarts.init(element.value, null, { const myChart: any = echarts.init(element.value, null, {
renderer: 'svg', renderer: 'svg',
devicePixelRatio: window.devicePixelRatio, devicePixelRatio: window.devicePixelRatio,
}); });

View File

@ -57,7 +57,7 @@
margin: 30px 0 0 0; margin: 30px 0 0 0;
width: 761px; width: 761px;
height: 407px; height: 407px;
background: url('@/assets/images/business-supervision/bg/content/bg-middle.png ') no-repeat center; background: url('@/assets/images/business-supervision/bg/content/bg-middle.png') no-repeat center;
background-size: cover; background-size: cover;
li { li {

View File

@ -1,12 +1,11 @@
import 'echarts/lib/component/dataZoom'; import 'echarts/lib/component/dataZoom';
import type { EChartsOption } from 'echarts';
import { type Ref, ref } from 'vue'; import { type Ref, ref } from 'vue';
import echarts from '@/plugins/echarts'; import echarts from '@/plugins/echarts';
import { debounceChart } from '@/utils/chart'; import { debounceChart } from '@/utils/chart';
const option = ref<EChartsOption>(); const option = ref<any>();
option.value = { option.value = {
backgroundColor: 'transparent', backgroundColor: 'transparent',
grid: { right: 10, left: 10, bottom: 20 }, grid: { right: 10, left: 10, bottom: 20 },
@ -97,7 +96,7 @@ option.value = {
}; };
export const renderEcharts = (element: Ref<HTMLDivElement>) => { export const renderEcharts = (element: Ref<HTMLDivElement>) => {
const myChart = echarts.init(element.value, null, { const myChart: any = echarts.init(element.value, null, {
renderer: 'svg', renderer: 'svg',
devicePixelRatio: window.devicePixelRatio, devicePixelRatio: window.devicePixelRatio,
}); });

View File

@ -5,6 +5,14 @@ const router = useRouter();
</script> </script>
<template> <template>
<div class="welcome__content">
<div class="welcome__content-inner">
<p>
<img alt="welcome-bg" src="@/assets/images/welcome/icon/welcome.png" />
<i>xxxx</i>
你好 欢迎使用xxxxxxxzz
</p>
</div>
<ul class="welcome__content-list"> <ul class="welcome__content-list">
<li @click="router.push('/smart-park')"> <li @click="router.push('/smart-park')">
<img alt="car" src="@/assets/images/welcome/icon/center/car.png" /> <img alt="car" src="@/assets/images/welcome/icon/center/car.png" />
@ -27,9 +35,36 @@ const router = useRouter();
<span>智慧路灯</span> <span>智慧路灯</span>
</li> </li>
</ul> </ul>
</div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.welcome__content {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-around;
align-items: center;
&-inner {
margin: 156px 0 0 0;
}
p {
color: #fff;
font-size: 16px;
i {
color: var(--color-primary-secondary);
}
}
img {
width: 239px;
height: 34px;
}
}
.welcome__content-list { .welcome__content-list {
display: flex; display: flex;
align-items: center; align-items: center;

View File

@ -1,16 +0,0 @@
<script lang="ts" setup>
import ContentList from '@/views/welcome/components/welcome-content/content-list.vue';
</script>
<template>
<div class="flex-y-around">
<div class="mt-[158px]">
<p>
<img alt="welcome-bg" src="@/assets/images/welcome/icon/welcome.png" />
<i>xxxx</i>
你好 欢迎使用xxxxxxxzz
</p>
</div>
<content-list />
</div>
</template>

View File

@ -1,5 +1,5 @@
<script lang="ts" setup> <script lang="ts" setup>
import WelcomeContent from '@/views/welcome/components/welcome-content/index.vue'; import WelcomeContent from '@/views/welcome/components/welcome-content.vue';
import WelcomeFooter from '@/views/welcome/components/welcome-footer.vue'; import WelcomeFooter from '@/views/welcome/components/welcome-footer.vue';
</script> </script>
@ -16,27 +16,5 @@ import WelcomeFooter from '@/views/welcome/components/welcome-footer.vue';
height: 100%; height: 100%;
background: url('@/assets/images/welcome/bg/bg-particle.png') no-repeat center; background: url('@/assets/images/welcome/bg/bg-particle.png') no-repeat center;
background-size: cover; background-size: cover;
&__content {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: space-around;
align-items: center;
p {
color: #fff;
font-size: 16px;
i {
color: var(--color-primary-secondary);
}
}
img {
width: 239px;
height: 34px;
}
}
} }
</style> </style>

View File

@ -1,50 +1,49 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "esnext", "target": "ESNext",
"useDefineForClassFields": true, "module": "ESNext",
"module": "esnext", "moduleResolution": "bundler",
"moduleResolution": "node", "strict": false,
"strict": true, "jsx": "preserve",
"noLib": false, "importHelpers": true,
"sourceMap": true, "experimentalDecorators": true,
"resolveJsonModule": true, "strictFunctionTypes": false,
"esModuleInterop": true,
"lib": [
"esnext",
"dom"
],
"baseUrl": ".",
"allowJs": true,
"skipLibCheck": true, "skipLibCheck": true,
"esModuleInterop": true,
"isolatedModules": true,
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true, "forceConsistentCasingInFileNames": true,
"jsx": "preserve", "sourceMap": true,
"jsxFactory": "h", "baseUrl": ".",
"jsxImportSource": "vue", "allowJs": false,
"jsxFragmentFactory": "Fragment", "resolveJsonModule": true,
"lib": [
"ESNext",
"DOM"
],
"paths": { "paths": {
"@/*": [ "@/*": [
"src/*" "src/*"
] ]
// "@build/*": [
// "build/*"
// ]
}, },
"types": [ "types": [
"vite/client", "node",
"unplugin-icons/types/vue", "vite/client"
"element-plus/global"
] ]
}, },
"files": [],
"include": [ "include": [
"mock/*.ts", "mock/*.ts",
"src/**/*.ts", "src/**/*.ts",
"src/**/*.tsx", "src/**/*.tsx",
"src/**/*.vue", "src/**/*.vue",
"src/types/*.d.ts", "vite.config.ts",
"vite.config.ts" "src/**/*.d.ts"
], ],
"exclude": [ "exclude": [
"dist", "dist",
"**/*.js",
"node_modules" "node_modules"
] ]
} }

View File

@ -10,7 +10,8 @@ import { server } from './build/server';
import { root, wrapperEnv } from './build/utils'; import { root, wrapperEnv } from './build/utils';
// https://vite.dev/config/ // https://vite.dev/config/
export default defineConfig(({ command, mode, isSsrBuild, isPreview }) => { // export default defineConfig(({ command, mode, isSsrBuild, isPreview }) => {
export default defineConfig(({ mode }) => {
const env = wrapperEnv(mode, 'VITE'); const env = wrapperEnv(mode, 'VITE');
return { return {