diff --git a/LICENSE b/LICENSE index 5120b59..f33b1ee 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2016-2021 vue-manage-system +Copyright (c) 2016-2023 vue-manage-system Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 5d07c72..a46951a 100644 --- a/README.md +++ b/README.md @@ -22,16 +22,6 @@ [English document](https://github.com/lin-xin/manage-system/blob/master/README_EN.md) -## 项目截图 - -### 登录 - -![Image text](https://github.com/lin-xin/manage-system/raw/master/screenshots/wms3.png) - -### 首页 - -![Image text](https://github.com/lin-xin/manage-system/raw/master/screenshots/wms1.png) - ## 赞助商 ### 好问 @@ -40,7 +30,7 @@ 专业问卷服务,一对一客服,按需定制 -## 赞赏 +## 支持作者 请作者喝杯咖啡吧!(微信号:linxin_20) @@ -48,26 +38,25 @@ ## 前言 -该方案作为一套多功能的后台框架模板,适用于绝大部分的后台管理系统(Web Management System)开发。基于 Vue3 + pinia,引用 Element Plus 组件库,方便开发快速简洁好看的组件。分离颜色样式,支持手动切换主题色,而且很方便使用自定义主题色。 +该方案作为一套多功能的后台框架模板,适用于绝大部分的后台管理系统开发。基于 Vue3 + pinia,引用 Element Plus 组件库,方便开发。 ## 功能 - [x] Element Plus +- [x] vite +- [x] pinia - [x] 登录/注销 - [x] Dashboard - [x] 表格 - [x] Tab 选项卡 - [x] 表单 - [x] 图表 :bar_chart: -- [x] 富文本编辑器 +- [x] 富文本/markdown编辑器 - [x] 图片拖拽/裁剪上传 -- [x] 权限测试 -- [x] 404 / 403 +- [x] 权限管理 - [x] 三级菜单 - [x] 自定义图标 -- [x] 国际化 -- [x] vite -- [x] pinia + ## 安装步骤 @@ -76,7 +65,7 @@ git clone https://github.com/lin-xin/vue-manage-system.git // 把模板下 cd vue-manage-system // 进入模板目录 npm install // 安装项目依赖,等待安装完成之后,安装失败可用 cnpm 或 yarn -// 开启服务器,浏览器访问 http://localhost:8080 +// 运行 npm run dev // 执行构建命令,生成的dist文件夹放在服务器下即可访问 @@ -98,38 +87,30 @@ vue.js 封装 sChart.js 的图表组件。访问地址:[vue-schart](https://gi - ``` +## 项目截图 + +### 登录 + +![Image text](https://github.com/lin-xin/manage-system/raw/master/screenshots/wms3.png) + +### 首页 + +![Image text](https://github.com/lin-xin/manage-system/raw/master/screenshots/wms1.png) + ## License [MIT](https://github.com/lin-xin/vue-manage-system/blob/master/LICENSE) diff --git a/README_EN.md b/README_EN.md index e28b3ab..438d22f 100644 --- a/README_EN.md +++ b/README_EN.md @@ -37,13 +37,10 @@ The scheme as a set of multi-function background frame templates, suitable for m - [x] Tabs - [x] From - [x] Chart :bar_chart: -- [ ] Editor -- [ ] Markdown +- [x] Editor +- [x] Markdown - [x] Upload pictures by clipping or dragging -- [ ] Support manual switch themes :sparkles: -- [ ] List drag sort - [x] Permission -- [x] 404 / 403 - [x] Three level menu - [x] Custom icon @@ -55,8 +52,7 @@ The scheme as a set of multi-function background frame templates, suitable for m ## Local development - // Open server and access http://localhost:8080 in browser - npm run serve + npm run dev ## Constructing production @@ -75,39 +71,30 @@ Vue.js wrapper for sChart.js. Github : [vue-schart](https://github.com/lin-xin/v - - ``` -### element-ui - -A desktop component library based on vue.js2.0 . Github : [element](http://element.eleme.io/#/zh-CN/component/layout) - ## Screenshot ### Default theme diff --git a/auto-imports.d.ts b/auto-imports.d.ts new file mode 100644 index 0000000..08908ed --- /dev/null +++ b/auto-imports.d.ts @@ -0,0 +1,5 @@ +// Generated by 'unplugin-auto-import' +export {} +declare global { + +} diff --git a/components.d.ts b/components.d.ts new file mode 100644 index 0000000..a9b470e --- /dev/null +++ b/components.d.ts @@ -0,0 +1,52 @@ +// generated by unplugin-vue-components +// We suggest you to commit this file into source control +// Read more: https://github.com/vuejs/core/pull/3399 +import '@vue/runtime-core' + +export {} + +declare module '@vue/runtime-core' { + export interface GlobalComponents { + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCascader: typeof import('element-plus/es')['ElCascader'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElImage: typeof import('element-plus/es')['ElImage'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElProgress: typeof import('element-plus/es')['ElProgress'] + ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElTimePicker: typeof import('element-plus/es')['ElTimePicker'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + Header: typeof import('./src/components/header.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + Sidebar: typeof import('./src/components/sidebar.vue')['default'] + Tags: typeof import('./src/components/tags.vue')['default'] + } +} diff --git a/index.html b/index.html index 1f032ca..d0cedf2 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ Please enable it to continue.
- + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..641430d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1237 @@ +{ + "name": "vue-manage-system", + "version": "5.3.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@antfu/utils": { + "version": "0.5.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/@antfu/utils/-/utils-0.5.2.tgz", + "integrity": "sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==", + "dev": true + }, + "@babel/parser": { + "version": "7.18.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/@babel/parser/-/parser-7.18.11.tgz", + "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==" + }, + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.18.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", + "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", + "requires": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + } + }, + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@element-plus/icons-vue": { + "version": "2.0.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/@element-plus/icons-vue/-/icons-vue-2.0.9.tgz", + "integrity": "sha512-okdrwiVeKBmW41Hkl0eMrXDjzJwhQMuKiBOu17rOszqM+LS/yBYpNQNV5Jvoh06Wc+89fMmb/uhzf8NZuDuUaQ==" + }, + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, + "@floating-ui/core": { + "version": "0.7.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@floating-ui/core/-/core-0.7.3.tgz", + "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==" + }, + "@floating-ui/dom": { + "version": "0.5.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/@floating-ui/dom/-/dom-0.5.4.tgz", + "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==", + "requires": { + "@floating-ui/core": "^0.7.3" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/lodash": { + "version": "4.14.184", + "resolved": "https://repo.huaweicloud.com/repository/npm/@types/lodash/-/lodash-4.14.184.tgz", + "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==" + }, + "@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/marked": { + "version": "4.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/@types/marked/-/marked-4.0.5.tgz", + "integrity": "sha512-jMN2moJ+lSf1VZXQo3VXeMCjoXuciVONig8+U0YNBop5aBvQw4qkolx1Nzn1i0T8L2l9IZ3jju6bS1pPwlaY1w==" + }, + "@types/web-bluetooth": { + "version": "0.0.15", + "resolved": "https://repo.huaweicloud.com/repository/npm/@types/web-bluetooth/-/web-bluetooth-0.0.15.tgz", + "integrity": "sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==" + }, + "@vitejs/plugin-vue": { + "version": "3.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vitejs/plugin-vue/-/plugin-vue-3.0.3.tgz", + "integrity": "sha512-U4zNBlz9mg+TA+i+5QPc3N5lQvdUXENZLO2h0Wdzp56gI1MWhqJOv+6R+d4kOzoaSSq6TnGPBdZAXKOe4lXy6g==", + "dev": true + }, + "@volar/code-gen": { + "version": "0.38.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/@volar/code-gen/-/code-gen-0.38.9.tgz", + "integrity": "sha512-n6LClucfA+37rQeskvh9vDoZV1VvCVNy++MAPKj2dT4FT+Fbmty/SDQqnsEBtdEe6E3OQctFvA/IcKsx3Mns0A==", + "dev": true, + "requires": { + "@volar/source-map": "0.38.9" + } + }, + "@volar/source-map": { + "version": "0.38.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/@volar/source-map/-/source-map-0.38.9.tgz", + "integrity": "sha512-ba0UFoHDYry+vwKdgkWJ6xlQT+8TFtZg1zj9tSjj4PykW1JZDuM0xplMotLun4h3YOoYfY9K1huY5gvxmrNLIw==", + "dev": true + }, + "@volar/vue-code-gen": { + "version": "0.38.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/@volar/vue-code-gen/-/vue-code-gen-0.38.9.tgz", + "integrity": "sha512-tzj7AoarFBKl7e41MR006ncrEmNPHALuk8aG4WdDIaG387X5//5KhWC5Ff3ZfB2InGSeNT+CVUd74M0gS20rjA==", + "dev": true, + "requires": { + "@volar/code-gen": "0.38.9", + "@volar/source-map": "0.38.9", + "@vue/compiler-core": "^3.2.37", + "@vue/compiler-dom": "^3.2.37", + "@vue/shared": "^3.2.37" + } + }, + "@volar/vue-typescript": { + "version": "0.38.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/@volar/vue-typescript/-/vue-typescript-0.38.9.tgz", + "integrity": "sha512-iJMQGU91ADi98u8V1vXd2UBmELDAaeSP0ZJaFjwosClQdKlJQYc6MlxxKfXBZisHqfbhdtrGRyaryulnYtliZw==", + "dev": true, + "requires": { + "@volar/code-gen": "0.38.9", + "@volar/source-map": "0.38.9", + "@volar/vue-code-gen": "0.38.9", + "@vue/compiler-sfc": "^3.2.37", + "@vue/reactivity": "^3.2.37" + } + }, + "@vue/compiler-core": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-core/-/compiler-core-3.2.37.tgz", + "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz", + "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==", + "requires": { + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz", + "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-ssr": "3.2.37", + "@vue/reactivity-transform": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "@vue/compiler-ssr": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz", + "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==", + "requires": { + "@vue/compiler-dom": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/devtools-api": { + "version": "6.2.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/devtools-api/-/devtools-api-6.2.1.tgz", + "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" + }, + "@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "requires": { + "@vue/shared": "3.2.37" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz", + "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "@vue/runtime-core": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/runtime-core/-/runtime-core-3.2.37.tgz", + "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==", + "requires": { + "@vue/reactivity": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/runtime-dom": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz", + "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==", + "requires": { + "@vue/runtime-core": "3.2.37", + "@vue/shared": "3.2.37", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/server-renderer/-/server-renderer-3.2.37.tgz", + "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==", + "requires": { + "@vue/compiler-ssr": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/shared": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==" + }, + "@vueuse/core": { + "version": "9.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/core/-/core-9.1.0.tgz", + "integrity": "sha512-BIroqvXEqt826aE9r3K5cox1zobuPuAzdYJ36kouC2TVhlXvFKIILgFVWrpp9HZPwB3aLzasmG3K87q7TSyXZg==", + "requires": { + "@types/web-bluetooth": "^0.0.15", + "@vueuse/metadata": "9.1.0", + "@vueuse/shared": "9.1.0", + "vue-demi": "*" + } + }, + "@vueuse/metadata": { + "version": "9.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/metadata/-/metadata-9.1.0.tgz", + "integrity": "sha512-8OEhlog1iaAGTD3LICZ8oBGQdYeMwByvXetOtAOZCJOzyCRSwqwdggTsmVZZ1rkgYIEqgUBk942AsAPwM21s6A==" + }, + "@vueuse/shared": { + "version": "9.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/@vueuse/shared/-/shared-9.1.0.tgz", + "integrity": "sha512-pB/3njQu4tfJJ78ajELNda0yMG6lKfpToQW7Soe09CprF1k3QuyoNi1tBNvo75wBDJWD+LOnr+c4B5HZ39jY/Q==", + "requires": { + "vue-demi": "*" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "async-validator": { + "version": "4.2.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "0.27.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "core-js-pure": { + "version": "3.24.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/core-js-pure/-/core-js-pure-3.24.1.tgz", + "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==" + }, + "cropperjs": { + "version": "1.5.12", + "resolved": "https://repo.huaweicloud.com/repository/npm/cropperjs/-/cropperjs-1.5.12.tgz", + "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + }, + "csstype": { + "version": "2.6.20", + "resolved": "https://repo.huaweicloud.com/repository/npm/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "dayjs": { + "version": "1.11.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/dayjs/-/dayjs-1.11.5.tgz", + "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "element-plus": { + "version": "2.2.14", + "resolved": "https://repo.huaweicloud.com/repository/npm/element-plus/-/element-plus-2.2.14.tgz", + "integrity": "sha512-V5Pis0OHhePg1RgVogZrcefaVl8vjVn4Pn9Qsh/t2CbFgjg9kKOYFqf/tuP3ObSXGm3X89hpe0W+nLVAsaFnpw==", + "requires": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.0.6", + "@floating-ui/dom": "^0.5.4", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "dependencies": { + "@popperjs/core": { + "version": "npm:@sxzz/popperjs-es@2.11.7", + "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" + } + } + }, + "esbuild": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://repo.huaweicloud.com/repository/npm/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "dev": true, + "optional": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, + "local-pkg": { + "version": "0.4.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/local-pkg/-/local-pkg-0.4.2.tgz", + "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://repo.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://repo.huaweicloud.com/repository/npm/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash-unified": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/lodash-unified/-/lodash-unified-1.0.2.tgz", + "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==" + }, + "magic-string": { + "version": "0.26.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "md-editor-v3": { + "version": "2.2.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/md-editor-v3/-/md-editor-v3-2.2.1.tgz", + "integrity": "sha512-nOd8mlEhvC99l9Y8pDMwEi6EdCAeBp88Ffl24We+2uz3/Iympctm92L1qyNicONJRhtZJacQ4oWTQGMYKGAxVg==", + "requires": { + "@types/marked": "^4.0.3" + } + }, + "memoize-one": { + "version": "6.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://repo.huaweicloud.com/repository/npm/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "mlly": { + "version": "0.5.13", + "resolved": "https://repo.huaweicloud.com/repository/npm/mlly/-/mlly-0.5.13.tgz", + "integrity": "sha512-0SK2fqoan+PMjADs4I2egAtrtNtpjqRez6PDTCeAdGjUQNJCvO5o9v2NEq52WA1jFmMU97qBr/JgdvCquehDbA==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "pathe": "^0.3.4", + "pkg-types": "^0.3.3", + "ufo": "^0.8.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "pathe": { + "version": "0.3.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/pathe/-/pathe-0.3.5.tgz", + "integrity": "sha512-grU/QeYP0ChuE5kjU2/k8VtAeODzbernHlue0gTa27+ayGIu3wqYBIPGfP9r5xSqgCgDd4nWrjKXEfxMillByg==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pinia": { + "version": "2.0.20", + "resolved": "https://repo.huaweicloud.com/repository/npm/pinia/-/pinia-2.0.20.tgz", + "integrity": "sha512-fdHHumXW/0U5HhxmY1emo3I4z85p8NJPdbtFQSlmJXFe3ktuF0pYNVgVtk2q+j2zCtTufY763xzaEMx0t6T59g==", + "requires": { + "@vue/devtools-api": "^6.2.1", + "vue-demi": "*" + } + }, + "pkg-types": { + "version": "0.3.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/pkg-types/-/pkg-types-0.3.4.tgz", + "integrity": "sha512-s214f/xkRpwlwVBToWq9Mu0XlU3HhZMYCnr2var8+jjbavBHh/VCh4pBLsJW29rJ//B1jb4HlpMIaNIMH+W2/w==", + "dev": true, + "requires": { + "jsonc-parser": "^3.1.0", + "mlly": "^0.5.13", + "pathe": "^0.3.5" + } + }, + "postcss": { + "version": "8.4.16", + "resolved": "https://repo.huaweicloud.com/repository/npm/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rollup": { + "version": "2.77.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "schart.js": { + "version": "3.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/schart.js/-/schart.js-3.0.4.tgz", + "integrity": "sha512-uylb2u9rrHX1jyAuSAJUQON8XTfyDKI9kWj1J3fUlCQCkLVZ4HG4+IiV8qm//Z71dqvLI78QZ/fCBw0reB22Zw==" + }, + "scule": { + "version": "0.3.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/scule/-/scule-0.3.2.tgz", + "integrity": "sha512-zIvPdjOH8fv8CgrPT5eqtxHQXmPNnV/vHJYffZhE43KZkvULvpCTvOt1HPlFaCZx287INL9qaqrZg34e8NgI4g==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "strip-literal": { + "version": "0.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/strip-literal/-/strip-literal-0.4.0.tgz", + "integrity": "sha512-ql/sBDoJOybTKSIOWrrh8kgUEMjXMwRAkZTD0EwiwxQH/6tTPkZvMIEjp0CRlpi6V5FMiJyvxeRkEi1KrGISoA==", + "dev": true, + "requires": { + "acorn": "^8.7.1" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "typescript": { + "version": "4.7.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true + }, + "ufo": { + "version": "0.8.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/ufo/-/ufo-0.8.5.tgz", + "integrity": "sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==", + "dev": true + }, + "unimport": { + "version": "0.6.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/unimport/-/unimport-0.6.7.tgz", + "integrity": "sha512-EMoVqDjswHkU+nD098QYHXH7Mkw7KwGDQAyeRF2lgairJnuO+wpkhIcmCqrD1OPJmsjkTbJ2tW6Ap8St0PuWZA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^4.2.1", + "escape-string-regexp": "^5.0.0", + "fast-glob": "^3.2.11", + "local-pkg": "^0.4.2", + "magic-string": "^0.26.2", + "mlly": "^0.5.7", + "pathe": "^0.3.3", + "scule": "^0.3.2", + "strip-literal": "^0.4.0", + "unplugin": "^0.9.0" + } + }, + "unplugin": { + "version": "0.9.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/unplugin/-/unplugin-0.9.3.tgz", + "integrity": "sha512-GWXxizZG+tobNs8fuGTCeilerkkfZTZax2iivuE4pxLaF9wTnPJHOq8tbLKDb5ohVb+2BXNjrU9xx59yWTUnuw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.4.4" + } + }, + "unplugin-auto-import": { + "version": "0.11.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/unplugin-auto-import/-/unplugin-auto-import-0.11.2.tgz", + "integrity": "sha512-1+VwBfn9dtiYv9SQLKP1AvZolUbK9xTVeAT+iOcEk4EHSFUlmIqBVLEKI76cifSQTLOJ3rZyPrEgptf3SZNLlQ==", + "dev": true, + "requires": { + "@antfu/utils": "^0.5.2", + "@rollup/pluginutils": "^4.2.1", + "local-pkg": "^0.4.2", + "magic-string": "^0.26.2", + "unimport": "^0.6.7", + "unplugin": "^0.9.3" + } + }, + "unplugin-vue-components": { + "version": "0.22.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/unplugin-vue-components/-/unplugin-vue-components-0.22.4.tgz", + "integrity": "sha512-2rRZcM9OnJGXnYxQNfaceEYuPeVACcWySIjy8WBwIiN3onr980TmA3XE5pRJFt8zoQrUA+c46oyIq96noLqrEQ==", + "dev": true, + "requires": { + "@antfu/utils": "^0.5.2", + "@rollup/pluginutils": "^4.2.1", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.2.11", + "local-pkg": "^0.4.2", + "magic-string": "^0.26.2", + "minimatch": "^5.1.0", + "resolve": "^1.22.1", + "unplugin": "^0.9.0" + } + }, + "vite": { + "version": "3.0.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/vite/-/vite-3.0.9.tgz", + "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==", + "dev": true, + "requires": { + "esbuild": "^0.14.47", + "fsevents": "~2.3.2", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": ">=2.75.6 <2.77.0 || ~2.77.0" + } + }, + "vite-plugin-vue-setup-extend": { + "version": "0.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/vite-plugin-vue-setup-extend/-/vite-plugin-vue-setup-extend-0.4.0.tgz", + "integrity": "sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==", + "dev": true, + "requires": { + "@vue/compiler-sfc": "^3.2.29", + "magic-string": "^0.25.7" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "vue": { + "version": "3.2.37", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue/-/vue-3.2.37.tgz", + "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==", + "requires": { + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-sfc": "3.2.37", + "@vue/runtime-dom": "3.2.37", + "@vue/server-renderer": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "vue-cropperjs": { + "version": "5.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue-cropperjs/-/vue-cropperjs-5.0.0.tgz", + "integrity": "sha512-RhnC8O33uRZNkn74aiHZwNHnBJOXWlS4P6gsRI0lw4cZlWjKSCywZI9oSI9POlIPI6OYv30jvnHMXGch85tw7w==", + "requires": { + "cropperjs": "^1.5.6" + } + }, + "vue-demi": { + "version": "0.13.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue-demi/-/vue-demi-0.13.8.tgz", + "integrity": "sha512-Vy1zbZhCOdsmvGR6tJhAvO5vhP7eiS8xkbYQSoVa7o6KlIy3W8Rc53ED4qI4qpeRDjv3mLfXSEpYU6Yq4pgXRg==" + }, + "vue-router": { + "version": "4.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue-router/-/vue-router-4.1.3.tgz", + "integrity": "sha512-XvK81bcYglKiayT7/vYAg/f36ExPC4t90R/HIpzrZ5x+17BOWptXLCrEPufGgZeuq68ww4ekSIMBZY1qdUdfjA==", + "requires": { + "@vue/devtools-api": "^6.1.4" + } + }, + "vue-schart": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue-schart/-/vue-schart-2.0.0.tgz", + "integrity": "sha512-qAu3e5wfMcq26wK1xeHExEWfGpnjfoN1R/9QXblNi+AsU/p52X7tTwhi+Fw7H/otfEufhEY2X7z7emaoF4QO+g==", + "requires": { + "schart.js": "^3.0.0" + } + }, + "vue-tsc": { + "version": "0.38.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/vue-tsc/-/vue-tsc-0.38.9.tgz", + "integrity": "sha512-Yoy5phgvGqyF98Fb4mYqboR4Q149jrdcGv5kSmufXJUq++RZJ2iMVG0g6zl+v3t4ORVWkQmRpsV4x2szufZ0LQ==", + "dev": true, + "requires": { + "@volar/vue-typescript": "0.38.9" + } + }, + "wangeditor": { + "version": "4.7.15", + "resolved": "https://repo.huaweicloud.com/repository/npm/wangeditor/-/wangeditor-4.7.15.tgz", + "integrity": "sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==", + "requires": { + "@babel/runtime": "^7.11.2", + "@babel/runtime-corejs3": "^7.11.2", + "tslib": "^2.1.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "webpack-virtual-modules": { + "version": "0.4.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz", + "integrity": "sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==", + "dev": true + } + } +} diff --git a/package.json b/package.json index fff76c5..c104840 100644 --- a/package.json +++ b/package.json @@ -1,32 +1,37 @@ { - "name": "vue-manage-system", - "version": "5.2.0", - "private": true, - "scripts": { - "dev": "vite", - "build": "vite build", - "serve": "vite preview" - }, - "dependencies": { - "axios": "^0.21.1", - "element-plus": "^1.0.2-beta.52", - "md-editor-v3": "^2.2.0", - "pinia": "^2.0.14", - "vue": "^3.1.2", - "vue-cropperjs": "^5.0.0", - "vue-i18n": "^9.0.0", - "vue-router": "^4.0.10", - "vue-schart": "^2.0.0", - "wangeditor": "^4.7.4" - }, - "devDependencies": { - "vite": "2.3.7", - "@vitejs/plugin-vue": "^1.2.3", - "@vue/compiler-sfc": "^3.1.2" - }, - "browserslist": [ - "> 1%", - "last 2 versions", - "not dead" - ] + "name": "vue-manage-system", + "version": "5.3.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "serve": "vite preview" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.0.9", + "axios": "^0.27.2", + "element-plus": "^2.2.14", + "md-editor-v3": "^2.2.1", + "pinia": "^2.0.20", + "vue": "^3.2.37", + "vue-cropperjs": "^5.0.0", + "vue-router": "^4.1.3", + "vue-schart": "^2.0.0", + "wangeditor": "^4.7.15" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^3.0.0", + "@vue/compiler-sfc": "^3.1.2", + "typescript": "^4.6.4", + "unplugin-auto-import": "^0.11.2", + "unplugin-vue-components": "^0.22.4", + "vite": "^3.0.0", + "vite-plugin-vue-setup-extend": "^0.4.0", + "vue-tsc": "^0.38.4" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] } diff --git a/src/App.vue b/src/App.vue index 8b3d003..aade1f9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,12 +1,8 @@ - - diff --git a/src/api/index.js b/src/api/index.ts similarity index 55% rename from src/api/index.js rename to src/api/index.ts index 3035ba9..fbe9e90 100644 --- a/src/api/index.js +++ b/src/api/index.ts @@ -1,9 +1,8 @@ import request from '../utils/request'; -export const fetchData = query => { +export const fetchData = () => { return request({ url: './table.json', - method: 'get', - params: query + method: 'get' }); }; diff --git a/src/assets/css/main.css b/src/assets/css/main.css index b6531d8..329d80b 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -174,4 +174,28 @@ a { .v-note-wrapper .v-note-panel { min-height: 500px; +} + +[class*=" el-icon-"], [class^=el-icon-] { + speak: none; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: baseline; + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.el-sub-menu [class^=el-icon-] { + vertical-align: middle; + margin-right: 5px; + width: 24px; + text-align: center; + font-size: 18px; +} + +[hidden]{ + display: none !important; } \ No newline at end of file diff --git a/src/components/Header.vue b/src/components/Header.vue index e313908..19cdc25 100644 --- a/src/components/Header.vue +++ b/src/components/Header.vue @@ -1,161 +1,154 @@ - diff --git a/src/components/Sidebar.vue b/src/components/Sidebar.vue index edd3d9e..1c4b793 100644 --- a/src/components/Sidebar.vue +++ b/src/components/Sidebar.vue @@ -1,156 +1,164 @@ - diff --git a/src/components/Tags.vue b/src/components/Tags.vue index e77c664..3ff5e7b 100644 --- a/src/components/Tags.vue +++ b/src/components/Tags.vue @@ -1,174 +1,168 @@ - +const tags = useTagsStore(); +// 关闭单个标签 +const closeTags = (index: number) => { + const delItem = tags.list[index]; + tags.delTagsItem(index); + const item = tags.list[index] ? tags.list[index] : tags.list[index - 1]; + if (item) { + delItem.path === route.fullPath && router.push(item.path); + } else { + router.push('/'); + } +}; + +// 设置标签 +const setTags = (route: any) => { + const isExist = tags.list.some(item => { + return item.path === route.fullPath; + }); + if (!isExist) { + if (tags.list.length >= 8) tags.delTagsItem(0); + tags.setTagsItem({ + name: route.name, + title: route.meta.title, + path: route.fullPath + }); + } +}; +setTags(route); +onBeforeRouteUpdate(to => { + setTags(to); +}); + +// 关闭全部标签 +const closeAll = () => { + tags.clearTags(); + router.push('/'); +}; +// 关闭其他标签 +const closeOther = () => { + const curItem = tags.list.filter(item => { + return item.path === route.fullPath; + }); + tags.closeTagsOther(curItem); +}; +const handleTags = (command: string) => { + command === 'other' ? closeOther() : closeAll(); +}; + +// 关闭当前页面的标签页 +// tags.closeCurrentTag({ +// $router: router, +// $route: route +// }); + diff --git a/src/main.js b/src/main.js deleted file mode 100644 index ce6e29e..0000000 --- a/src/main.js +++ /dev/null @@ -1,11 +0,0 @@ -import {createApp} from 'vue' -import { createPinia } from 'pinia' -import App from './App.vue' -import router from './router' -import installElementPlus from './plugins/element' -import './assets/css/icon.css' -const app = createApp(App) -installElementPlus(app) -app.use(createPinia()) - .use(router) - .mount('#app') \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..89c06d0 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,31 @@ +import {createApp} from 'vue' +import { createPinia } from 'pinia' +import ElementPlus from 'element-plus' +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import App from './App.vue' +import router from './router' +import { usePermissStore } from './store/permiss' +import 'element-plus/dist/index.css' +import './assets/css/icon.css' + + +const app = createApp(App) + +app.use(createPinia()) +app.use(router) +app.use(ElementPlus) +// 注册elementplus图标 +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) +} +// 自定义权限指令 +const permiss = usePermissStore() +app.directive('permiss', { + mounted(el, binding) { + if(!permiss.key.includes(String(binding.value))){ + el['hidden'] = true; + } + } +}) + +app.mount('#app') \ No newline at end of file diff --git a/src/plugins/element.js b/src/plugins/element.js deleted file mode 100644 index b28f72e..0000000 --- a/src/plugins/element.js +++ /dev/null @@ -1,17 +0,0 @@ -import ElementPlus from 'element-plus' -import { createI18n } from 'vue-i18n' -import 'element-plus/lib/theme-chalk/index.css' -import localeZH from 'element-plus/lib/locale/lang/zh-cn' -import localeEN from 'element-plus/lib/locale/lang/en' -import messages from '../utils/i18n' - -const i18n = createI18n({ - locale: localeZH.name, - fallbackLocale: localeEN.name, - messages, -}) - -export default (app) => { - app.use(ElementPlus, { locale:localeZH }) - app.use(i18n) -} diff --git a/src/router/index.js b/src/router/index.ts similarity index 58% rename from src/router/index.js rename to src/router/index.ts index c4ffcd3..24285e4 100644 --- a/src/router/index.js +++ b/src/router/index.ts @@ -1,151 +1,147 @@ -import {createRouter, createWebHashHistory} from "vue-router"; -import Home from "../views/Home.vue"; - -const routes = [ - { - path: '/', - redirect: '/dashboard' - }, { - path: "/", - name: "Home", - component: Home, - children: [ - { - path: "/dashboard", - name: "dashboard", - meta: { - title: '系统首页' - }, - component: () => import ( /* webpackChunkName: "dashboard" */ "../views/Dashboard.vue") - }, { - path: "/table", - name: "basetable", - meta: { - title: '表格' - }, - component: () => import ( /* webpackChunkName: "table" */ "../views/BaseTable.vue") - }, { - path: "/charts", - name: "basecharts", - meta: { - title: '图表' - }, - component: () => import ( /* webpackChunkName: "charts" */ "../views/BaseCharts.vue") - }, { - path: "/form", - name: "baseform", - meta: { - title: '表单' - }, - component: () => import ( /* webpackChunkName: "form" */ "../views/BaseForm.vue") - }, { - path: "/tabs", - name: "tabs", - meta: { - title: 'tab标签' - }, - component: () => import ( /* webpackChunkName: "tabs" */ "../views/Tabs.vue") - }, { - path: "/donate", - name: "donate", - meta: { - title: '鼓励作者' - }, - component: () => import ( /* webpackChunkName: "donate" */ "../views/Donate.vue") - }, { - path: "/permission", - name: "permission", - meta: { - title: '权限管理', - permission: true - }, - component: () => import ( /* webpackChunkName: "permission" */ "../views/Permission.vue") - }, { - path: "/i18n", - name: "i18n", - meta: { - title: '国际化语言' - }, - component: () => import ( /* webpackChunkName: "i18n" */ "../views/I18n.vue") - }, { - path: "/upload", - name: "upload", - meta: { - title: '上传插件' - }, - component: () => import ( /* webpackChunkName: "upload" */ "../views/Upload.vue") - }, { - path: "/icon", - name: "icon", - meta: { - title: '自定义图标' - }, - component: () => import ( /* webpackChunkName: "icon" */ "../views/Icon.vue") - }, { - path: '/404', - name: '404', - meta: { - title: '找不到页面' - }, - component: () => import (/* webpackChunkName: "404" */ '../views/404.vue') - }, { - path: '/403', - name: '403', - meta: { - title: '没有权限' - }, - component: () => import (/* webpackChunkName: "403" */ '../views/403.vue') - }, { - path: '/user', - name: 'user', - meta: { - title: '个人中心' - }, - component: () => import (/* webpackChunkName: "user" */ '../views/User.vue') - }, { - path: '/editor', - name: 'editor', - meta: { - title: '富文本编辑器' - }, - component: () => import (/* webpackChunkName: "editor" */ '../views/Editor.vue') - }, { - path: '/markdown', - name: 'markdown', - meta: { - title: 'markdown编辑器' - }, - component: () => import (/* webpackChunkName: "markdown" */ '../views/Markdown.vue') - } - ] - }, { - path: "/login", - name: "Login", - meta: { - title: '登录' - }, - component: () => import ( /* webpackChunkName: "login" */ "../views/Login.vue") - } -]; - -const router = createRouter({ - history: createWebHashHistory(), - routes -}); - -router.beforeEach((to, from, next) => { - document.title = `${to.meta.title} | vue-manage-system`; - const role = localStorage.getItem('ms_username'); - if (!role && to.path !== '/login') { - next('/login'); - } else if (to.meta.permission) { - // 如果是管理员权限则可进入,这里只是简单的模拟管理员权限而已 - role === 'admin' - ? next() - : next('/403'); - } else { - next(); - } -}); - +import {createRouter, createWebHashHistory, RouteRecordRaw} from "vue-router"; +import { usePermissStore } from '../store/permiss' +import Home from "../views/Home.vue"; + +const routes:RouteRecordRaw[] = [ + { + path: '/', + redirect: '/dashboard' + }, { + path: "/", + name: "Home", + component: Home, + children: [ + { + path: "/dashboard", + name: "dashboard", + meta: { + title: '系统首页', + permiss: '1' + }, + component: () => import ( /* webpackChunkName: "dashboard" */ "../views/dashboard.vue") + }, { + path: "/table", + name: "basetable", + meta: { + title: '表格', + permiss: '2' + }, + component: () => import ( /* webpackChunkName: "table" */ "../views/table.vue") + }, { + path: "/charts", + name: "basecharts", + meta: { + title: '图表', + permiss: '11' + }, + component: () => import ( /* webpackChunkName: "charts" */ "../views/charts.vue") + }, { + path: "/form", + name: "baseform", + meta: { + title: '表单', + permiss: '5' + }, + component: () => import ( /* webpackChunkName: "form" */ "../views/form.vue") + }, { + path: "/tabs", + name: "tabs", + meta: { + title: 'tab标签', + permiss: '3' + }, + component: () => import ( /* webpackChunkName: "tabs" */ "../views/tabs.vue") + }, { + path: "/donate", + name: "donate", + meta: { + title: '鼓励作者', + permiss: '14' + }, + component: () => import ( /* webpackChunkName: "donate" */ "../views/donate.vue") + }, { + path: "/permission", + name: "permission", + meta: { + title: '权限管理', + permiss: '13' + }, + component: () => import ( /* webpackChunkName: "permission" */ "../views/permission.vue") + }, { + path: "/upload", + name: "upload", + meta: { + title: '上传插件', + permiss: '6' + }, + component: () => import ( /* webpackChunkName: "upload" */ "../views/upload.vue") + }, { + path: "/icon", + name: "icon", + meta: { + title: '自定义图标', + permiss: '10' + }, + component: () => import ( /* webpackChunkName: "icon" */ "../views/icon.vue") + }, { + path: '/user', + name: 'user', + meta: { + title: '个人中心' + }, + component: () => import (/* webpackChunkName: "user" */ '../views/user.vue') + }, { + path: '/editor', + name: 'editor', + meta: { + title: '富文本编辑器', + permiss: '8' + }, + component: () => import (/* webpackChunkName: "editor" */ '../views/editor.vue') + }, { + path: '/markdown', + name: 'markdown', + meta: { + title: 'markdown编辑器', + permiss: '9' + }, + component: () => import (/* webpackChunkName: "markdown" */ '../views/markdown.vue') + } + ] + }, { + path: "/login", + name: "Login", + meta: { + title: '登录' + }, + component: () => import ( /* webpackChunkName: "login" */ "../views/login.vue") + }, { + path: '/403', + name: '403', + meta: { + title: '没有权限' + }, + component: () => import (/* webpackChunkName: "403" */ '../views/403.vue') + }, +]; + +const router = createRouter({ + history: createWebHashHistory(), + routes +}); + +router.beforeEach((to, from, next) => { + document.title = `${to.meta.title} | vue-manage-system`; + const role = localStorage.getItem('ms_username'); + const permiss = usePermissStore(); + if (!role && to.path !== '/login') { + next('/login'); + } else if (to.meta.permiss && !permiss.key.includes(to.meta.permiss)) { + // 如果没有权限,则进入403 + next('/403'); + } else { + next(); + } +}); + export default router; \ No newline at end of file diff --git a/src/store/permiss.ts b/src/store/permiss.ts new file mode 100644 index 0000000..504d78f --- /dev/null +++ b/src/store/permiss.ts @@ -0,0 +1,23 @@ +import { defineStore } from 'pinia'; + +interface ObjectList { + [key: string]: string[]; +} + +export const usePermissStore = defineStore('permiss', { + state: () => { + const keys = localStorage.getItem('ms_keys'); + return { + key: keys ? JSON.parse(keys) : [], + defaultList: { + admin: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16'], + user: ['1', '2', '3', '11', '13', '14', '15'] + } + }; + }, + actions: { + handleSet(val: string[]) { + this.key = val; + } + } +}); diff --git a/src/store/sidebar.js b/src/store/sidebar.js deleted file mode 100644 index 38b05fd..0000000 --- a/src/store/sidebar.js +++ /dev/null @@ -1,17 +0,0 @@ -import { defineStore } from 'pinia' - -export const useSidebarStore = defineStore('sidebar', { - state: () => { - return { - collapse: false - } - }, - getters: { - - }, - actions: { - handleCollapse() { - this.collapse = !this.collapse; - } - } -}) \ No newline at end of file diff --git a/src/store/sidebar.ts b/src/store/sidebar.ts new file mode 100644 index 0000000..ab7a146 --- /dev/null +++ b/src/store/sidebar.ts @@ -0,0 +1,15 @@ +import { defineStore } from 'pinia'; + +export const useSidebarStore = defineStore('sidebar', { + state: () => { + return { + collapse: false + }; + }, + getters: {}, + actions: { + handleCollapse() { + this.collapse = !this.collapse; + } + } +}); diff --git a/src/store/tags.js b/src/store/tags.js deleted file mode 100644 index de0f53c..0000000 --- a/src/store/tags.js +++ /dev/null @@ -1,48 +0,0 @@ -import { defineStore } from 'pinia' - -export const useTagsStore = defineStore('tags', { - state: () => { - return { - list: [] - } - }, - getters: { - show: (state) => { - return state.list.length > 0; - }, - nameList: (state) => { - return state.list.map(item => item.name); - } - }, - actions: { - delTagsItem(index) { - this.list.splice(index, 1); - }, - setTagsItem(data) { - this.list.push(data) - }, - clearTags() { - this.list = [] - }, - closeTagsOther(data) { - this.list = data; - }, - closeCurrentTag(data) { - console.log(data) - for (let i = 0, len = this.list.length; i < len; i++) { - const item = this.list[i]; - if (item.path === data.$route.fullPath) { - if (i < len - 1) { - data.$router.push(this.list[i + 1].path); - } else if (i > 0) { - data.$router.push(this.list[i - 1].path); - } else { - data.$router.push("/"); - } - this.list.splice(i, 1); - break; - } - } - }, - } -}) \ No newline at end of file diff --git a/src/store/tags.ts b/src/store/tags.ts new file mode 100644 index 0000000..7f8ff18 --- /dev/null +++ b/src/store/tags.ts @@ -0,0 +1,53 @@ +import { defineStore } from 'pinia'; + +interface ListItem { + name: string; + path: string; + title: string; +} + +export const useTagsStore = defineStore('tags', { + state: () => { + return { + list: [] + }; + }, + getters: { + show: state => { + return state.list.length > 0; + }, + nameList: state => { + return state.list.map(item => item.name); + } + }, + actions: { + delTagsItem(index: number) { + this.list.splice(index, 1); + }, + setTagsItem(data: ListItem) { + this.list.push(data); + }, + clearTags() { + this.list = []; + }, + closeTagsOther(data: ListItem[]) { + this.list = data; + }, + closeCurrentTag(data: any) { + for (let i = 0, len = this.list.length; i < len; i++) { + const item = this.list[i]; + if (item.path === data.$route.fullPath) { + if (i < len - 1) { + data.$router.push(this.list[i + 1].path); + } else if (i > 0) { + data.$router.push(this.list[i - 1].path); + } else { + data.$router.push('/'); + } + this.list.splice(i, 1); + break; + } + } + } + } +}); diff --git a/src/utils/i18n.js b/src/utils/i18n.js deleted file mode 100644 index 33d9ec0..0000000 --- a/src/utils/i18n.js +++ /dev/null @@ -1,24 +0,0 @@ -export default { - 'zh-cn': { - i18n: { - breadcrumb: '国际化产品', - tips: '通过切换语言按钮,来改变当前内容的语言。', - btn: '切换英文', - title1: '常用用法', - p1: '要是你把你的秘密告诉了风,那就别怪风把它带给树。', - p2: '没有什么比信念更能支撑我们度过艰难的时光了。', - p3: '只要能把自己的事做好,并让自己快乐,你就领先于大多数人了。' - } - }, - 'en': { - i18n: { - breadcrumb: 'International Products', - tips: 'Click on the button to change the current language. ', - btn: 'Switch Chinese', - title1: 'Common usage', - p1: "If you reveal your secrets to the wind you should not blame the wind for revealing them to the trees.", - p2: "Nothing can help us endure dark times better than our faith. ", - p3: "If you can do what you do best and be happy, you're further along in life than most people." - } - } -} \ No newline at end of file diff --git a/src/utils/request.js b/src/utils/request.ts similarity index 52% rename from src/utils/request.js rename to src/utils/request.ts index 0cd1316..f90bc89 100644 --- a/src/utils/request.js +++ b/src/utils/request.ts @@ -1,31 +1,28 @@ -import axios from 'axios'; +import axios, {AxiosInstance, AxiosError, AxiosResponse, AxiosRequestConfig} from 'axios'; -const service = axios.create({ - // process.env.NODE_ENV === 'development' 来判断是否开发环境 - // easy-mock服务挂了,暂时不使用了 - // baseURL: 'https://www.easy-mock.com/mock/592501a391470c0ac1fab128', +const service:AxiosInstance = axios.create({ timeout: 5000 }); service.interceptors.request.use( - config => { + (config: AxiosRequestConfig) => { return config; }, - error => { + (error: AxiosError) => { console.log(error); return Promise.reject(); } ); service.interceptors.response.use( - response => { + (response: AxiosResponse) => { if (response.status === 200) { - return response.data; + return response; } else { Promise.reject(); } }, - error => { + (error: AxiosError) => { console.log(error); return Promise.reject(); } diff --git a/src/views/403.vue b/src/views/403.vue index 2d27c1a..c713270 100644 --- a/src/views/403.vue +++ b/src/views/403.vue @@ -1,62 +1,54 @@ - - diff --git a/src/views/404.vue b/src/views/404.vue index 97a2b20..a4dfcf2 100644 --- a/src/views/404.vue +++ b/src/views/404.vue @@ -1,62 +1,54 @@ - - diff --git a/src/views/BaseCharts.vue b/src/views/BaseCharts.vue deleted file mode 100644 index f016ead..0000000 --- a/src/views/BaseCharts.vue +++ /dev/null @@ -1,158 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/BaseForm.vue b/src/views/BaseForm.vue deleted file mode 100644 index 6a9e1fd..0000000 --- a/src/views/BaseForm.vue +++ /dev/null @@ -1,174 +0,0 @@ - - - \ No newline at end of file diff --git a/src/views/BaseTable.vue b/src/views/BaseTable.vue deleted file mode 100644 index 2c7d49b..0000000 --- a/src/views/BaseTable.vue +++ /dev/null @@ -1,196 +0,0 @@ - - - - - diff --git a/src/views/Dashboard.vue b/src/views/Dashboard.vue index 9268684..6ba78fa 100644 --- a/src/views/Dashboard.vue +++ b/src/views/Dashboard.vue @@ -1,348 +1,298 @@ - diff --git a/src/views/Donate.vue b/src/views/Donate.vue index 1b04b84..c127e30 100644 --- a/src/views/Donate.vue +++ b/src/views/Donate.vue @@ -1,26 +1,14 @@ - + - \ No newline at end of file + diff --git a/src/views/Editor.vue b/src/views/Editor.vue index d26ae2b..c08d55b 100644 --- a/src/views/Editor.vue +++ b/src/views/Editor.vue @@ -1,58 +1,37 @@ - - + diff --git a/src/views/Home.vue b/src/views/Home.vue index fa3acc1..13fa570 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -1,41 +1,26 @@ - diff --git a/src/views/I18n.vue b/src/views/I18n.vue deleted file mode 100644 index 6ec2a9a..0000000 --- a/src/views/I18n.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/src/views/Icon.vue b/src/views/Icon.vue index e5905af..0b01ff3 100644 --- a/src/views/Icon.vue +++ b/src/views/Icon.vue @@ -1,229 +1,212 @@ - \ No newline at end of file + diff --git a/src/views/Login.vue b/src/views/Login.vue index 14f7054..960c614 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -1,125 +1,129 @@ - \ No newline at end of file + diff --git a/src/views/Markdown.vue b/src/views/Markdown.vue index 7a690d0..286b679 100644 --- a/src/views/Markdown.vue +++ b/src/views/Markdown.vue @@ -1,32 +1,21 @@ - \ No newline at end of file +const onUploadImg = (files: any) => { + console.log(files); +}; + diff --git a/src/views/Permission.vue b/src/views/Permission.vue index e03e3e1..bf83327 100644 --- a/src/views/Permission.vue +++ b/src/views/Permission.vue @@ -1,40 +1,137 @@ - \ No newline at end of file + diff --git a/src/views/Tabs.vue b/src/views/Tabs.vue index cfe1161..849a131 100644 --- a/src/views/Tabs.vue +++ b/src/views/Tabs.vue @@ -1,137 +1,116 @@ - - diff --git a/src/views/Upload.vue b/src/views/Upload.vue index 5037439..c1dad31 100644 --- a/src/views/Upload.vue +++ b/src/views/Upload.vue @@ -1,133 +1,70 @@ - - \ No newline at end of file + diff --git a/src/views/User.vue b/src/views/User.vue index 365abc3..c0728da 100644 --- a/src/views/User.vue +++ b/src/views/User.vue @@ -1,192 +1,174 @@ - \ No newline at end of file + diff --git a/src/views/charts.vue b/src/views/charts.vue new file mode 100644 index 0000000..7e4df52 --- /dev/null +++ b/src/views/charts.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/views/form.vue b/src/views/form.vue new file mode 100644 index 0000000..2744e68 --- /dev/null +++ b/src/views/form.vue @@ -0,0 +1,156 @@ + + + diff --git a/src/views/table.vue b/src/views/table.vue new file mode 100644 index 0000000..cd9453f --- /dev/null +++ b/src/views/table.vue @@ -0,0 +1,191 @@ + + + + + diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..ff77396 --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,10 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} + +declare module 'vue-schart'; +declare module 'vue-cropperjs'; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..49c50ad --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "moduleResolution": "Node", + "strict": true, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "lib": ["ESNext", "DOM"], + "skipLibCheck": true + }, + "include": ["src/**/*.ts", "src/**/*.d.ts","src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..9d31e2a --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.js b/vite.config.js deleted file mode 100644 index 6c608d9..0000000 --- a/vite.config.js +++ /dev/null @@ -1,9 +0,0 @@ -import vue from '@vitejs/plugin-vue' - -export default { - base: './', - plugins: [vue()], - optimizeDeps: { - include: ['schart.js'] - } -} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..30ed708 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,22 @@ +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import VueSetupExtend from 'vite-plugin-vue-setup-extend'; +import AutoImport from 'unplugin-auto-import/vite'; +import Components from 'unplugin-vue-components/vite'; +import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'; +export default defineConfig({ + base: './', + plugins: [ + vue(), + VueSetupExtend(), + AutoImport({ + resolvers: [ElementPlusResolver()] + }), + Components({ + resolvers: [ElementPlusResolver()] + }) + ], + optimizeDeps: { + include: ['schart.js'] + } +});