├── README.md └── vue3-admain ├── .env_development ├── .env_production ├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── auto-imports.d.ts ├── components.d.ts ├── index.html ├── package.json ├── public └── favicon.ico ├── src ├── App.vue ├── api │ ├── Auth.ts │ ├── axios.ts │ └── system │ │ ├── role.ts │ │ └── user.ts ├── assets │ ├── chartJson │ │ ├── bar.json │ │ ├── barTo.json │ │ ├── chart.json │ │ ├── map.json │ │ └── pie.json │ ├── images │ │ ├── avatar.png │ │ ├── isFull.png │ │ ├── lang.png │ │ └── notFull.png │ ├── login │ │ ├── 1.jpg │ │ ├── Particles.mp4 │ │ └── login_form.png │ ├── logo.png │ └── map │ │ └── china.ts ├── components │ └── HelloWorld.vue ├── env.d.ts ├── i18n │ ├── ZH-CN │ │ └── cn.ts │ ├── en │ │ └── en.ts │ └── index.ts ├── layout │ ├── components │ │ ├── APPMain │ │ │ └── APPMain.vue │ │ ├── HeaderBar │ │ │ ├── Breadcrumb.vue │ │ │ ├── LanguageBar.vue │ │ │ ├── Screenfull.vue │ │ │ ├── UserBar.vue │ │ │ └── index.vue │ │ ├── LogoBar │ │ │ └── index.vue │ │ ├── MenuBar │ │ │ ├── MenuItem.vue │ │ │ └── index.vue │ │ └── TabBar │ │ │ └── index.vue │ └── index.vue ├── main.ts ├── router │ ├── index.ts │ ├── modules │ │ ├── goods.ts │ │ ├── home.ts │ │ ├── index.ts │ │ ├── order.ts │ │ ├── store.ts │ │ ├── system.ts │ │ └── user.ts │ └── permissionTree.ts ├── store │ ├── index.ts │ ├── modules │ │ ├── auth.ts │ │ ├── button.ts │ │ ├── menu.ts │ │ └── tabs.ts │ └── type.ts ├── styles │ └── variables.scss ├── utils │ └── isMobile.ts └── views │ ├── goods │ ├── Category.vue │ └── Goods.vue │ ├── index │ ├── Index.vue │ └── components │ │ ├── BarChart.vue │ │ ├── BarChartTo.vue │ │ ├── LineChart.vue │ │ ├── MapChart.vue │ │ ├── Piechart.vue │ │ └── basice.vue │ ├── login │ └── Login.vue │ ├── orders │ ├── OrderAction.vue │ └── OrderQuery.vue │ ├── storesLocation │ └── StoresLocation.vue │ ├── system │ ├── Account.vue │ ├── Group.vue │ ├── Setting.vue │ └── Task.vue │ └── user │ └── User.vue ├── statics ├── account.png ├── changelang.png ├── fullscrren.png ├── group.png ├── home.png ├── login.png ├── loginTips.png ├── role.png └── setrole.png ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── yarn.lock /README.md: -------------------------------------------------------------------------------- 1 | # vue3-admin 2 | 基于vue3.2(setup)+ts+vite+vueRouter4.x+vuex4.x+axios+element-Plus+echarts数据可视化+RBAC(权限管理)搭建的后台管理系统 3 | **项目启动** 4 | `yarn` 5 | `yarn dev` 6 | 7 | **项目预览** 8 | 9 | 登录页 10 | 11 | ![image](vue3-admain/statics/loginTips.png) 12 | 13 | 首页: 14 | 15 | ![image](vue3-admain/statics/home.png) 16 | 17 | 管理员: 18 | 19 | ![image](vue3-admain/statics/account.png) 20 | 21 | 角色管理: 22 | 23 | ![image](vue3-admain/statics/group.png) 24 | 25 | 添加角色授权 26 | 27 | ![image](vue3-admain/statics/role.png) 28 | 29 | 设置角色 30 | 31 | ![image](vue3-admain/statics/setrole.png) 32 | 33 | 全屏 34 | 35 | ![image](vue3-admain/statics/fullscrren.png) 36 | 37 | 中英文切换 38 | 39 | ![image](vue3-admain/statics/changelang.png) -------------------------------------------------------------------------------- /vue3-admain/.env_development: -------------------------------------------------------------------------------- 1 | VITE_URL='/api' -------------------------------------------------------------------------------- /vue3-admain/.env_production: -------------------------------------------------------------------------------- 1 | VITE_URL='http://106.52.235.252:8101/' -------------------------------------------------------------------------------- /vue3-admain/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /vue3-admain/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar"] 3 | } 4 | -------------------------------------------------------------------------------- /vue3-admain/README.md: -------------------------------------------------------------------------------- 1 | # Vue 3 + TypeScript + Vite 2 | 3 | This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` 19 | 20 | 21 | -------------------------------------------------------------------------------- /vue3-admain/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue3-adamin", 3 | "private": true, 4 | "version": "0.0.0", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vue-tsc --noEmit && vite build", 8 | "preview": "vite preview" 9 | }, 10 | "dependencies": { 11 | "@element-plus/icons": "^0.0.11", 12 | "@types/nprogress": "^0.2.0", 13 | "axios": "^0.27.2", 14 | "echarts": "^5.3.2", 15 | "element-plus": "^2.2.0", 16 | "nprogress": "^0.2.0", 17 | "screenfull": "^6.0.1", 18 | "vue": "^3.2.25", 19 | "vue-i18n": "^9.2.0-beta.35", 20 | "vue-router": "4", 21 | "vuex": "^4.0.2" 22 | }, 23 | "devDependencies": { 24 | "@vitejs/plugin-vue": "^2.3.3", 25 | "sass": "^1.51.0", 26 | "sass-loader": "^12.6.0", 27 | "typescript": "^4.5.4", 28 | "unplugin-auto-import": "^0.7.1", 29 | "unplugin-vue-components": "^0.19.5", 30 | "vite": "^2.9.9", 31 | "vite-plugin-compression": "^0.5.1", 32 | "vue-tsc": "^0.34.7" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /vue3-admain/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/public/favicon.ico -------------------------------------------------------------------------------- /vue3-admain/src/App.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 14 | 15 | 28 | -------------------------------------------------------------------------------- /vue3-admain/src/api/Auth.ts: -------------------------------------------------------------------------------- 1 | import axiosInstance from './axios' 2 | 3 | //获取验证码图片 4 | export function getCode(){ 5 | return axiosInstance({ 6 | url:'/auth/code', 7 | method:'GET', 8 | 9 | }) 10 | } 11 | 12 | //用户密码登陆 13 | export const login = (params:object) =>{ 14 | return axiosInstance({ 15 | url:'/auth/login', 16 | method:'POST', 17 | data:params 18 | }) 19 | } 20 | 21 | //token登陆 22 | export const loginByToken = (token:string) =>{ 23 | return axiosInstance({ 24 | url:'/auth/loginByToken?token='+token, 25 | method:'POST' 26 | }) 27 | } -------------------------------------------------------------------------------- /vue3-admain/src/api/axios.ts: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | // import { ElMessage } from 'element-plus'; 3 | 4 | const axiosInstance = axios.create({ 5 | baseURL:'http://106.52.235.252:8101/' 6 | // baseURL:'/api' 7 | }) 8 | 9 | axiosInstance.interceptors.response.use(response => { 10 | const res = response.data; 11 | if(res.code === 200){ 12 | return res; 13 | }else if(res.code === 10001){ 14 | // ElMessage.error('登陆状态异常,请重新登陆') 15 | return res; 16 | }else if(res.code === 10002){ 17 | // ElMessage.error('权限不足'); 18 | return res; 19 | }else{ 20 | // ElMessage.error(res.message); 21 | return res; 22 | } 23 | }) 24 | 25 | //request拦截器 26 | axiosInstance.interceptors.request.use(request =>{ 27 | if(request.headers){ 28 | request.headers['token'] = localStorage.getItem('token') || '0'; 29 | request.headers['Content-Type'] = 'application/json;charset=UTF-8'; 30 | return request; 31 | } 32 | }, 33 | error =>{ 34 | return Promise.reject(error) 35 | } 36 | ) 37 | export default axiosInstance; -------------------------------------------------------------------------------- /vue3-admain/src/api/system/role.ts: -------------------------------------------------------------------------------- 1 | import axiosInstance from "../axios"; 2 | 3 | 4 | export function getAllRoles(){ 5 | return axiosInstance({ 6 | url: "/role/list", 7 | method: "get" 8 | }) 9 | } 10 | 11 | // 获取角色所有权限 12 | export function getPermissionsOfRole(roleId:number){ 13 | return axiosInstance({ 14 | url: "/role/perms/" + roleId, 15 | method: "get" 16 | }) 17 | } 18 | 19 | // 添加角色 20 | export function addRole(user:object) { 21 | return axiosInstance({ 22 | url: "/role/", 23 | method: "post", 24 | data: user 25 | }) 26 | } 27 | 28 | // 更新角色 29 | export function updateRole(role:object) { 30 | return axiosInstance({ 31 | url: "/role", 32 | method: "put", 33 | data: role 34 | }) 35 | } 36 | 37 | // 批量删除角色 38 | export function deleteRoles(roleIds:number[]) { 39 | return axiosInstance({ 40 | url: "/role/batch", 41 | method: "delete", 42 | data: roleIds 43 | }) 44 | } 45 | 46 | // 修改角色的权限 47 | export function updateRolePermission(userIdAndPermissions:object){ 48 | return axiosInstance({ 49 | url: "/role/permission", 50 | method: "put", 51 | data: userIdAndPermissions 52 | }) 53 | } 54 | -------------------------------------------------------------------------------- /vue3-admain/src/api/system/user.ts: -------------------------------------------------------------------------------- 1 | import axiosInstance from "../axios"; 2 | 3 | interface UserInfo { 4 | username:string 5 | } 6 | 7 | export function getAllSysUsers(){ 8 | return axiosInstance({ 9 | url: "/sysUser/list", 10 | method: "get" 11 | }) 12 | } 13 | 14 | // 添加管理员 15 | export function addSysUser(user:UserInfo) { 16 | return axiosInstance({ 17 | url: "/sysUser/", 18 | method: "post", 19 | data: user 20 | }) 21 | } 22 | 23 | // 更新管理员 24 | export function updateSysUser(user:UserInfo) { 25 | return axiosInstance({ 26 | url: "/sysUser/", 27 | method: "put", 28 | data: user 29 | }) 30 | } 31 | 32 | // 删除管理员 33 | export function deleteSysUsers(sysUserIds:number) { 34 | return axiosInstance({ 35 | url: "/sysUser/batch", 36 | method: "delete", 37 | data: sysUserIds 38 | }) 39 | } 40 | 41 | // 更新账号激活状态 42 | export function updateStatus(sysUserId:number, status:boolean) { 43 | return axiosInstance({ 44 | url: "/sysUser/status/" + sysUserId + "/" + status, 45 | method: "put" 46 | }) 47 | } 48 | 49 | // 重置密码 50 | export function resetPassword(sysUserId:number){ 51 | return axiosInstance({ 52 | url: "/sysUser/resetPassword/" + sysUserId, 53 | method: "put" 54 | }) 55 | } 56 | 57 | 58 | // 设置角色 59 | export function setRole(userId:number, roleId:number){ 60 | return axiosInstance({ 61 | url: "/sysUser/role/" + userId + "/" + roleId, 62 | method: "put" 63 | }) 64 | } 65 | -------------------------------------------------------------------------------- /vue3-admain/src/assets/chartJson/bar.json: -------------------------------------------------------------------------------- 1 | {"xdata":["星期一","星期二","星期三","星期四","星期五","星期六","星期日"],"small":[35,55,67,33,25,55,88],"medium":[79,52,200,334,390,330,220],"large":[77,52,200,334,390,330,220]} -------------------------------------------------------------------------------- /vue3-admain/src/assets/chartJson/barTo.json: -------------------------------------------------------------------------------- 1 | {"ydata":["深圳","北京","上海","广州","成都","武汉"],"last":[112,223,333,112,223,333],"current":[322,345,356,342,355,366]} -------------------------------------------------------------------------------- /vue3-admain/src/assets/chartJson/chart.json: -------------------------------------------------------------------------------- 1 | {"Bento":[140,232,101,264,90,340,250],"snack":[120,282,111,234,220,340,310],"bowl":[320,132,201,334,190,130,220],"dining":[220,402,231,134,190,230,120],"xdata":["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]} -------------------------------------------------------------------------------- /vue3-admain/src/assets/chartJson/map.json: -------------------------------------------------------------------------------- 1 | [{"name":"北京","value":[116.23,39.54,244]},{"name":"海门","value":[121.15,31.89,133]},{"name":"上海","value":[121.48,31.22,444]},{"name":"东莞","value":[113.75,23.04,222]},{"name":"南宁","value":[108.33,22.84,188]},{"name":"惠州","value":[114.4,23.09,198]},{"name":"广州","value":[113.23,23.16,389]},{"name":"深圳","value":[114.07,22.62,414]},{"name":"珠海","value":[113.52,22.3,233]},{"name":"佛山","value":[113.11,23.05,185]},{"name":"海口","value":[110.35,20.02,199]},{"name":"南昌","value":[115.89,28.68,178]},{"name":"三亚","value":[109.511909,18.252847,165]},{"name":"西宁","value":[101.74,36.56,178]},{"name":"西安","value":[108.95,34.27,199]},{"name":"杭州","value":[120.19,30.26,266]},{"name":"长沙","value":[113,28.21,366]},{"name":"合肥","value":[117.27,31.86,190]},{"name":"武汉","value":[114.31,30.52,266]}] -------------------------------------------------------------------------------- /vue3-admain/src/assets/chartJson/pie.json: -------------------------------------------------------------------------------- 1 | [{"value":1048,"name":"咖啡豆"},{"value":735,"name":"牛奶"},{"value":580,"name":"大豆粉"},{"value":484,"name":"果汁"},{"value":300,"name":"白糖"}] -------------------------------------------------------------------------------- /vue3-admain/src/assets/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/src/assets/images/avatar.png -------------------------------------------------------------------------------- /vue3-admain/src/assets/images/isFull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/src/assets/images/isFull.png -------------------------------------------------------------------------------- /vue3-admain/src/assets/images/lang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/src/assets/images/lang.png -------------------------------------------------------------------------------- /vue3-admain/src/assets/images/notFull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/src/assets/images/notFull.png -------------------------------------------------------------------------------- /vue3-admain/src/assets/login/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/src/assets/login/1.jpg -------------------------------------------------------------------------------- /vue3-admain/src/assets/login/Particles.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/src/assets/login/Particles.mp4 -------------------------------------------------------------------------------- /vue3-admain/src/assets/login/login_form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/src/assets/login/login_form.png -------------------------------------------------------------------------------- /vue3-admain/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/src/assets/logo.png -------------------------------------------------------------------------------- /vue3-admain/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 23 | 24 | 41 | -------------------------------------------------------------------------------- /vue3-admain/src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue' 5 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 6 | const component: DefineComponent<{}, {}, any> 7 | export default component 8 | } 9 | 10 | interface ImportMetaEnv{ 11 | VITE_URL:string 12 | } 13 | -------------------------------------------------------------------------------- /vue3-admain/src/i18n/ZH-CN/cn.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | menus:{ 3 | wIndex:'首页', 4 | wUserManger:'用户管理', 5 | wGoodsManger:'商品管理', 6 | wGoodsCategory:'商品种类', 7 | wGoodsInfo:'商品查询', 8 | wOrderManger:'订单管理', 9 | wOrderQuery:'订单查询', 10 | wOrderAction:'订单处理', 11 | wStoreManger:'门店管理', 12 | wSystemAdmin:'系统管理', 13 | wSystemManger:'管理员管理', 14 | wSystemRole:'角色管理', 15 | wSystemTask:'定时任务', 16 | wSystemSetting:'系统设置' 17 | }, 18 | button:{ 19 | wLogin:'登录', 20 | wLogout:'退出登出', 21 | wcloseCurrentTab: "关闭所有", 22 | wcloseLeftTabs: "关闭左边", 23 | wcloseRightTabs: "关闭右边", 24 | wcloseOtherTabs: "关闭其它", 25 | wadd:'添加', 26 | wdelete:'删除', 27 | wedit:'编辑', 28 | wempower:'授权', 29 | wresetPassWord:'重置密码' 30 | } 31 | 32 | } -------------------------------------------------------------------------------- /vue3-admain/src/i18n/en/en.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | menus: { 3 | wIndex:'Index', 4 | wUserManger:'UserManger', 5 | wGoodsManger:'GoodsManger', 6 | wGoodsCategory:'GoodsCategory', 7 | wGoodsInfo:'GoodsInfo', 8 | wOrderManger:'OrderManger', 9 | wOrderQuery:'OrderQuery', 10 | wOrderAction:'OrderAction', 11 | wStoreManger:'StoreManger', 12 | wSystemAdmin:'SystemAdmin', 13 | wSystemManger:'SystemManger', 14 | wSystemRole:'SystemRole', 15 | wSystemTask:'SystemTask', 16 | wSystemSetting:'SystemSetting' 17 | }, 18 | button:{ 19 | wLogin:'login', 20 | wLogout:'logout', 21 | wcloseCurrentTab: "Close CurrentTab", 22 | wcloseLeftTabs: "Close LeftTabs", 23 | wcloseRightTabs: "Close RightTabs", 24 | wcloseOtherTabs: "Close OtherTabs", 25 | wcloseAllTabs: "Close AllTabs", 26 | wadd:'add', 27 | wdelete:'delete', 28 | wedit:'edit', 29 | wempower:'empower', 30 | wresetPassWord:'resetPassWord' 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /vue3-admain/src/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { createI18n } from "vue-i18n"; 2 | import CN from './ZH-CN/cn' 3 | import EN from "./en/en"; 4 | 5 | const message = { 6 | chs:{ 7 | ...CN 8 | }, 9 | en:{ 10 | ...EN 11 | } 12 | } 13 | 14 | const getLang = ()=>{ 15 | if(localStorage.getItem('lang')) { 16 | return localStorage.getItem('lang') 17 | } else { 18 | switch(navigator.language) { 19 | case 'zh-CN': 20 | localStorage.setItem('lang','chs') 21 | return 'chs' 22 | case 'en-US': 23 | localStorage.setItem('lang','en') 24 | return 'en' 25 | } 26 | } 27 | } 28 | 29 | const i18n = createI18n({ 30 | legacy:false, 31 | locale:getLang() || 'chs', 32 | globalInjection:true, 33 | messages:message 34 | }) 35 | 36 | export default i18n -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/APPMain/APPMain.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 37 | 38 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/HeaderBar/Breadcrumb.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 36 | 37 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/HeaderBar/LanguageBar.vue: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 33 | 35 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/HeaderBar/Screenfull.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 18 | 19 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/HeaderBar/UserBar.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 43 | 44 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/HeaderBar/index.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 32 | 33 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/LogoBar/index.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 16 | 17 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/MenuBar/MenuItem.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 31 | 32 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/MenuBar/index.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 27 | 28 | 39 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/components/TabBar/index.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 154 | 155 | 181 | -------------------------------------------------------------------------------- /vue3-admain/src/layout/index.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 54 | 55 | -------------------------------------------------------------------------------- /vue3-admain/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import * as ElementUI from 'element-plus' 4 | import 'element-plus/dist/index.css' 5 | import * as ElIcons from '@element-plus/icons' 6 | import router from './router' 7 | import {store,key} from './store' 8 | import i18n from './i18n' 9 | 10 | const app = createApp(App); 11 | for (const name in ElIcons) { 12 | app.component(name,(ElIcons as any)[name]) 13 | } 14 | app.use(router).use(store,key).use(i18n).mount('#app') 15 | 16 | app.directive('btn',{ 17 | //当元素北挂载到dom时候触发 18 | mounted(el,binding){ 19 | 20 | if(!store.state.buttonStore.buttonList.includes(binding.value)){ 21 | el.parentNode.removeChild(el) 22 | } 23 | } 24 | }) 25 | 26 | declare module '@vue/runtime-core' { 27 | interface ComponentCustomProperties { 28 | $Alert:(a:string) => Promise 29 | $Confirm:(a:string) => Promise 30 | $Notify:any 31 | } 32 | } 33 | app.config.globalProperties.$Alert = ElementUI.ElMessageBox.alert 34 | app.config.globalProperties.$Confirm = ElementUI.ElMessageBox.confirm 35 | app.config.globalProperties.$Notify = ElementUI.ElNotification 36 | -------------------------------------------------------------------------------- /vue3-admain/src/router/index.ts: -------------------------------------------------------------------------------- 1 | 2 | import {createRouter,createWebHashHistory,RouteRecordRaw} from 'vue-router' 3 | import Layout from '@/layout/index.vue' 4 | import { store } from '@/store' 5 | import { loginByToken } from '@/api/Auth' 6 | //导入进度lib 7 | import NProgress from 'nprogress'; 8 | import 'nprogress/nprogress.css' 9 | 10 | NProgress.configure({ 11 | //动画方式 12 | easing:'ease', 13 | //递增进度条的速度 14 | speed:500, 15 | //是否需要显示icon 16 | showSpinner:false, 17 | //自动递增的间隔 18 | trickleSpeed:200, 19 | //初始化的最小百分比 20 | minimum:0.3 21 | 22 | }) 23 | 24 | const routes:Array = [ 25 | { 26 | path:'/login', 27 | component: () => import('@/views/login/Login.vue') 28 | }, 29 | ] 30 | //声明的meta类型 31 | declare module 'vue-router' { 32 | interface RouteMeta{ 33 | title:string 34 | icon?:string 35 | permission:string 36 | index?:number 37 | keepAlive?:boolean 38 | } 39 | } 40 | 41 | const router = createRouter({ 42 | history:createWebHashHistory(), 43 | routes:routes 44 | }) 45 | 46 | //前置路由守卫 47 | router.beforeEach((to,from,next) =>{ 48 | const token = localStorage.getItem('token') 49 | NProgress.start(); 50 | if(!store.state.authStore.token && !token){ 51 | if(to.path.startsWith('/login')){ 52 | next() 53 | }else{ 54 | next('/login') 55 | } 56 | }else if(!store.state.authStore.token && token){ 57 | loginByToken(token).then((res:any) =>{ 58 | if(res.data.status){ 59 | //用户信息 60 | store.commit('authStore/addUserInfo',res.data) 61 | //权限菜单 62 | store.dispatch('menuStore/generateSystemMenus',res.data.permissions) 63 | //按钮权限 64 | store.dispatch('buttonStore/generateButtons',res.data.permissions) 65 | if(to.matched.length === 0){ 66 | router.push(to.path) 67 | } 68 | next(); 69 | } 70 | }) 71 | } 72 | else{ 73 | next() 74 | } 75 | 76 | }) 77 | 78 | router.afterEach(() =>{ 79 | NProgress.done(); 80 | }) 81 | 82 | export default router -------------------------------------------------------------------------------- /vue3-admain/src/router/modules/goods.ts: -------------------------------------------------------------------------------- 1 | import Layout from '@/layout/index.vue' 2 | import {RouteRecordRaw} from 'vue-router' 3 | 4 | 5 | const goodsRouter:RouteRecordRaw = 6 | { 7 | path: '/good', 8 | 9 | name: 'good', 10 | component:Layout, 11 | meta: { 12 | title: 'menus.wGoodsManger', 13 | icon: 'TakeawayBox', 14 | permission: "system:goods", 15 | }, 16 | 17 | children: [ 18 | { 19 | path: 'category', 20 | name: 'category', 21 | component:() => import('@/views/goods/Category.vue'), 22 | meta: { 23 | title: 'menus.wGoodsInfo', 24 | icon: 'ShoppingBag', 25 | permission: 'system:goods:goodsCategory', 26 | index:2 27 | }, 28 | 29 | }, 30 | { 31 | path: 'goodQuery', 32 | name: 'goodQuery', 33 | component:() => import('@/views/goods/Goods.vue'), 34 | meta: { 35 | title: 'menus.wGoodsCategory', 36 | icon: 'SoldOut', 37 | permission: 'system:goods:goodsInfo', 38 | index:3 39 | }, 40 | 41 | }, 42 | ], 43 | } 44 | 45 | export default goodsRouter -------------------------------------------------------------------------------- /vue3-admain/src/router/modules/home.ts: -------------------------------------------------------------------------------- 1 | import Layout from '@/layout/index.vue' 2 | import i18n from '@/i18n' 3 | import { 4 | RouteRecordRaw, 5 | } from "vue-router"; 6 | const homeRouter:RouteRecordRaw= { 7 | path: '/', 8 | redirect: '/index', 9 | name: 'Index', 10 | component: Layout, 11 | meta: { 12 | title: 'menus.wIndex', 13 | icon: 'house', 14 | permission: "system:index", 15 | }, 16 | children: [ 17 | { 18 | path: 'index', 19 | name: 'Index', 20 | component: () => import('@/views/index/Index.vue'), 21 | meta: { 22 | title: 'menus.wIndex', 23 | icon: 'house', 24 | permission: "system:index", 25 | index:0 26 | }, 27 | 28 | }, 29 | ], 30 | } 31 | 32 | export default homeRouter -------------------------------------------------------------------------------- /vue3-admain/src/router/modules/index.ts: -------------------------------------------------------------------------------- 1 | import goodsRouter from './goods' 2 | import homeRouter from './home' 3 | import orderRouter from './order' 4 | import storeRouter from './store' 5 | import systemRouter from './system' 6 | import userRouter from './user' 7 | import {RouteRecordRaw} from 'vue-router' 8 | 9 | export const asyncRoutes:RouteRecordRaw[] = [ 10 | homeRouter, 11 | userRouter, 12 | goodsRouter, 13 | orderRouter, 14 | storeRouter, 15 | systemRouter, 16 | 17 | ] -------------------------------------------------------------------------------- /vue3-admain/src/router/modules/order.ts: -------------------------------------------------------------------------------- 1 | import Layout from '@/layout/index.vue' 2 | import i18n from '@/i18n' 3 | import { 4 | RouteRecordRaw, 5 | } from "vue-router"; 6 | const orderRouter:RouteRecordRaw = { 7 | path: '/order', 8 | name: 'Order', 9 | component:Layout, 10 | 11 | meta: { 12 | title: 'menus.wOrderManger', 13 | icon: 'Notebook', 14 | permission: "system:order", 15 | }, 16 | 17 | children: [ 18 | { 19 | path: 'orderQuery', 20 | name: 'orderQuery', 21 | component:() => import('@/views/orders/OrderQuery.vue'), 22 | meta: { 23 | title: 'menus.wOrderQuery', 24 | icon: 'Notification', 25 | permission: 'system:order:orderInfo', 26 | index:4 27 | }, 28 | 29 | }, 30 | { 31 | path: 'orderAction', 32 | name: 'orderAction', 33 | component:() => import('@/views/orders/OrderAction.vue'), 34 | meta: { 35 | title: 'menus.wOrderAction', 36 | icon: 'Money', 37 | permission: 'system:order:orderManage', 38 | index:5 39 | }, 40 | 41 | }, 42 | ], 43 | } 44 | 45 | export default orderRouter -------------------------------------------------------------------------------- /vue3-admain/src/router/modules/store.ts: -------------------------------------------------------------------------------- 1 | import Layout from '@/layout/index.vue' 2 | import {RouteRecordRaw} from 'vue-router' 3 | import i18n from '@/i18n' 4 | const storeRouter:RouteRecordRaw = { 5 | path: '/stores', 6 | redirect: '/stores/Location', 7 | name: 'storesLocation', 8 | component:Layout, 9 | meta: { 10 | title: 'menus.wStoreManger', 11 | icon:'LocationInformation', 12 | permission: "system:store", 13 | }, 14 | children: [ 15 | { 16 | path: 'Location', 17 | name: 'storesLocation', 18 | component:() => import('@/views/storesLocation/StoresLocation.vue'), 19 | meta: { 20 | title: 'menus.wStoreManger', 21 | icon:'LocationInformation', 22 | permission: "system:store", 23 | index:6 24 | }, 25 | 26 | }, 27 | ], 28 | } 29 | 30 | export default storeRouter -------------------------------------------------------------------------------- /vue3-admain/src/router/modules/system.ts: -------------------------------------------------------------------------------- 1 | import Layout from '@/layout/index.vue' 2 | import {RouteRecordRaw} from 'vue-router' 3 | import i18n from '@/i18n' 4 | 5 | const systemRouter:RouteRecordRaw = { 6 | path:'/system', 7 | name:'system', 8 | component:Layout, 9 | redirect:'/system/account' || '/system/group' || '/system/task' || '/system/Setting', 10 | meta:{ 11 | title:'menus.wSystemAdmin', 12 | icon:'Wallet', 13 | permission: "system:admin", 14 | }, 15 | 16 | children:[ 17 | { 18 | path:'account', 19 | name:'account', 20 | component:() => import('@/views/system/Account.vue'), 21 | meta:{ 22 | title:'menus.wSystemManger', 23 | icon:'User', 24 | permission: "system:admin:sysUser", 25 | index:7, 26 | keepAlive:true 27 | }, 28 | 29 | 30 | }, 31 | { 32 | path:'group', 33 | name:'group', 34 | component:() => import('@/views/system/Group.vue'), 35 | meta:{ 36 | title:'menus.wSystemRole', 37 | icon:'Refrigerator', 38 | permission: "system:admin:role", 39 | index:8, 40 | keepAlive:true 41 | }, 42 | 43 | }, { 44 | path:'task', 45 | name:'task', 46 | component:() => import('@/views/system/Task.vue'), 47 | meta:{ 48 | title:'menus.wSystemTask', 49 | icon:'Clock', 50 | permission: "system:admin:timingTask", 51 | index:9 52 | }, 53 | 54 | 55 | }, 56 | { 57 | path:'Setting', 58 | name:'Setting', 59 | component:() => import('@/views/system/Setting.vue'), 60 | meta:{ 61 | title:'menus.wSystemSetting', 62 | icon:'Setting', 63 | permission: 'system:admin:config', 64 | index:10 65 | }, 66 | 67 | } 68 | ] 69 | 70 | } 71 | 72 | export default systemRouter -------------------------------------------------------------------------------- /vue3-admain/src/router/modules/user.ts: -------------------------------------------------------------------------------- 1 | import Layout from '@/layout/index.vue' 2 | import {RouteRecordRaw} from 'vue-router' 3 | import i18n from '@/i18n' 4 | 5 | const userRouter:RouteRecordRaw = { 6 | path: '/user', 7 | redirect: '/user/manger', 8 | name: 'User', 9 | component:Layout, 10 | meta: { 11 | title: 'menus.wUserManger', 12 | icon:'UserFilled', 13 | permission: "system:user", 14 | }, 15 | children: [ 16 | { 17 | path: 'manger', 18 | name: 'UserManger', 19 | component:() => import('@/views/user/User.vue'), 20 | meta: { 21 | title: 'menus.wUserManger', 22 | icon:'UserFilled', 23 | permission: "system:user", 24 | index:1 25 | }, 26 | 27 | }, 28 | ], 29 | } 30 | 31 | export default userRouter -------------------------------------------------------------------------------- /vue3-admain/src/router/permissionTree.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 权限树 授权的时候使用 细粒度 3 | id: 'title', 4 | label: 'title', 5 | children: 'children' 6 | 7 | permission作为key 8 | */ 9 | const permissionTree = [ 10 | { 11 | title: '首页', 12 | permission: "system:index", 13 | }, 14 | 15 | { 16 | title: '用户管理', 17 | permission: "system:user", 18 | }, 19 | { 20 | title: '门店管理', 21 | permission: "system:store", 22 | }, 23 | { 24 | title: '商品管理', 25 | permission: "system:goods", 26 | children: [ 27 | { 28 | title: '商品种类', 29 | permission: 'system:goods:goodsCategory' 30 | }, 31 | { 32 | title: '商品信息', 33 | permission: 'system:goods:goodsInfo', 34 | children: [ 35 | { 36 | title: '添加商品', 37 | permission: "system:goods:goodsInfo:add" // TODO 真正可以添加到数据库的权限值, 对应到具体的后台接口权限 38 | }, 39 | { 40 | title: '修改商品', 41 | permission: "system:goods:goodsInfo:update" 42 | } 43 | ] 44 | } 45 | ] 46 | }, 47 | { 48 | title: '订单管理', 49 | permission: "system:order", 50 | children: [ 51 | { 52 | title: '订单查询', 53 | permission: 'system:order:orderInfo' 54 | }, 55 | { 56 | title: '订单管理', 57 | permission: 'system:order:orderManage' 58 | } 59 | ] 60 | }, 61 | { 62 | title: '系统管理', 63 | permission: "system:admin", 64 | children: [ 65 | { 66 | title: '系统配置', 67 | permission: 'system:admin:config' 68 | }, 69 | { 70 | title: '定时任务', 71 | permission: "system:admin:timingTask" 72 | 73 | }, 74 | { 75 | title: '管理员管理', 76 | permission: "system:admin:sysUser" 77 | }, 78 | { 79 | title: '角色管理', 80 | permission: "system:admin:role" 81 | } 82 | ] 83 | } 84 | 85 | ] 86 | 87 | export default permissionTree 88 | -------------------------------------------------------------------------------- /vue3-admain/src/store/index.ts: -------------------------------------------------------------------------------- 1 | import { createStore, Store, useStore as baseUseStore } from 'vuex'; 2 | import {InjectionKey } from 'vue' 3 | import { tabStore, TabState } from "./modules/tabs"; 4 | import { AuthState, authStore } from "./modules/auth"; 5 | import { MenuState, menuStore } from './modules/menu'; 6 | import { ButtonState,buttonStore } from './modules/button'; 7 | 8 | export interface RootState { 9 | tabStore:TabState 10 | authStore:AuthState 11 | menuStore:MenuState 12 | buttonStore:ButtonState 13 | } 14 | export const key:InjectionKey> = Symbol(); 15 | 16 | export const store:Store = createStore({ 17 | modules:{ 18 | tabStore, 19 | authStore, 20 | menuStore, 21 | buttonStore 22 | } 23 | }) 24 | 25 | //自定义组合式函数 26 | export function useStore(){ 27 | return baseUseStore(key) 28 | } -------------------------------------------------------------------------------- /vue3-admain/src/store/modules/auth.ts: -------------------------------------------------------------------------------- 1 | import { Module } from 'vuex' 2 | import { RootState } from "../index"; 3 | import { login,loginByToken } from "@/api/Auth"; 4 | import { UserType } from '../type' 5 | import router from '@/router' 6 | import { ElMessage } from 'element-plus'; 7 | import { store } from '@/store'; 8 | 9 | export interface AuthState { 10 | token:string 11 | userInfo:UserType 12 | roles:string[] 13 | } 14 | 15 | export const authStore:Module = { 16 | namespaced:true, 17 | state:():AuthState =>( 18 | { 19 | token:'', 20 | userInfo:{ 21 | avatar: '', 22 | username: '', 23 | roleName: '', 24 | status: 1 25 | }, 26 | roles:[] 27 | } 28 | ), 29 | mutations:{ 30 | addToken(state:AuthState,token:string){ 31 | state.token = token; 32 | }, 33 | addUserInfo(state:AuthState,userinfo:UserType) { 34 | state.userInfo = userinfo 35 | } 36 | }, 37 | getters:{ 38 | getToken(state:AuthState){ 39 | return state.token 40 | } 41 | }, 42 | actions:{ 43 | //账号密码登陆 44 | login({commit,state,dispatch},requestUser){ 45 | login(requestUser).then((result:any) =>{ 46 | if(result.code === 200){ 47 | state.userInfo = result.data; 48 | commit('addToken',result.data.token); 49 | localStorage.setItem('token',result.data.token) 50 | store.dispatch('menuStore/generateSystemMenus',result.data.permissions) 51 | store.dispatch('buttonStore/generateButtons',result.data.permissions) 52 | if (result.data.status) { 53 | router.push({ path: '/index' }) 54 | } 55 | }else{ 56 | ElMessage({ 57 | message: result.message, 58 | type: 'error', 59 | }) 60 | } 61 | },) 62 | }, 63 | //token登陆 64 | loginByToken({commit,state,dispatch},token){ 65 | commit('addToken',token); 66 | loginByToken(token).then((result:any) => { 67 | if(result.code === 200){ 68 | state.userInfo = result.data; 69 | localStorage.setItem('token',result.data.token) 70 | store.dispatch('menuStore/generateSystemMenus',result.data.permissions) 71 | store.dispatch('buttonStore/generateButtons',result.data.permissions) 72 | if (result.data.status) { 73 | router.push({ path: '/index' }) 74 | } 75 | }else{ 76 | ElMessage({ 77 | message: result.message, 78 | type: 'error', 79 | }) 80 | } 81 | }).catch(() =>{ 82 | localStorage.removeItem('token') 83 | }) 84 | } 85 | } 86 | } -------------------------------------------------------------------------------- /vue3-admain/src/store/modules/button.ts: -------------------------------------------------------------------------------- 1 | import { Module } from 'vuex' 2 | import { RootState } from '../index' 3 | 4 | export interface ButtonState { 5 | buttonList:string[] 6 | } 7 | 8 | export const buttonStore:Module = { 9 | namespaced:true, 10 | state:():ButtonState => ({ 11 | buttonList:[] 12 | }), 13 | mutations:{ 14 | addButton(state:ButtonState,buttons){ 15 | state.buttonList = buttons 16 | } 17 | }, 18 | getters:{ 19 | getButtons:(state) => state.buttonList 20 | }, 21 | actions:{ 22 | generateButtons({state,commit},buttons:string[]){ 23 | let bList:string[] = []; 24 | buttons.forEach(button =>{ 25 | if(button.match(/:/g)?.length === 3){ 26 | bList.push(button) 27 | } 28 | }) 29 | commit('addButton',bList) 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /vue3-admain/src/store/modules/menu.ts: -------------------------------------------------------------------------------- 1 | import { Module } from 'vuex' 2 | import { RouteRecordRaw } from 'vue-router' 3 | import { RootState } from '../index' 4 | import { asyncRoutes } from '@/router/modules' 5 | import router from '@/router'; 6 | 7 | export interface MenuState { 8 | menuList:RouteRecordRaw[] 9 | } 10 | 11 | function hasPermission(perms:string[],needPermission:string){ 12 | for (let i = 0; i < perms.length; i++) { 13 | if (perms[i].startsWith(needPermission)) { 14 | return true 15 | } 16 | } 17 | return false 18 | } 19 | 20 | function filterRouter (routes:RouteRecordRaw[],perms:string[]){ 21 | const res:RouteRecordRaw[] = []; 22 | routes.forEach(route => { 23 | if (route.children) { 24 | route.children = filterRouter(route.children, perms) 25 | if (route.children.length > 0) { 26 | res.push(route) 27 | } 28 | } else { 29 | if (route.meta!.permission) { 30 | if (hasPermission(perms, route.meta!.permission)) { 31 | res.push(route) 32 | } 33 | } else { 34 | res.push(route) 35 | } 36 | } 37 | 38 | 39 | }) 40 | return res 41 | } 42 | 43 | export const menuStore:Module = { 44 | namespaced:true, 45 | state:():MenuState => ({ 46 | menuList:[] 47 | }), 48 | getters:{ 49 | getMenus:state => state.menuList 50 | }, 51 | mutations:{ 52 | setMenus(state,systemMenu){ 53 | state.menuList = systemMenu 54 | } 55 | }, 56 | actions:{ 57 | generateSystemMenus({state,commit},perm:string[]){ 58 | let routers = filterRouter(asyncRoutes,perm) 59 | //添加动态路由 60 | routers.forEach((route) =>{ 61 | //二级menu调成一级menu 62 | if(route.redirect == null && route.children?.length === 1){ 63 | route.redirect = route.path + '/' + route.children[0].path; 64 | route.meta = route.children[0].meta 65 | } 66 | router.addRoute(route) 67 | }) 68 | //添加动态菜单 69 | commit('setMenus',routers) 70 | } 71 | } 72 | } -------------------------------------------------------------------------------- /vue3-admain/src/store/modules/tabs.ts: -------------------------------------------------------------------------------- 1 | import { Module} from 'vuex' 2 | import { Itype } from '../type' 3 | import { RootState } from "../index"; 4 | 5 | export interface TabState{ 6 | tabsList:Array 7 | contextMenuTabId:string 8 | } 9 | 10 | export const tabStore:Module = { 11 | namespaced:true, 12 | state(){ 13 | return { 14 | tabsList:[], 15 | contextMenuTabId:'' 16 | } 17 | }, 18 | mutations:{ 19 | //添加选项卡,没有相同的就添加 20 | addTab(state:TabState,tab:Itype){ 21 | const isSome = state.tabsList.some((item) => item.path === tab.path) 22 | if(!isSome){ 23 | state.tabsList.push(tab); 24 | } 25 | }, 26 | //删除选项卡 27 | removeTab(state:TabState,tabName:string){ 28 | const index = state.tabsList.findIndex((item:Itype) =>{ 29 | return item.path === tabName 30 | }) 31 | state.tabsList.splice(index,1); 32 | }, 33 | //右键保存tab菜单点击的tab(路径path) 34 | saveCurrentTabId(store:TabState,currMenuTabId:string){ 35 | store.contextMenuTabId = currMenuTabId; 36 | }, 37 | //删除所有tabs 38 | closeAlltabs(store:TabState){ 39 | store.tabsList = []; 40 | sessionStorage.removeItem('TABS_ROUTES'); 41 | }, 42 | //关闭其他Tabs(包含left right other) 43 | closeOtherTabs(store:TabState,action:string){ 44 | if(action === 'other'){ 45 | store.tabsList = store.tabsList.filter((item:Itype) =>{ 46 | return store.contextMenuTabId === item.path 47 | }) 48 | }else if(action === 'left'){ 49 | const index = store.tabsList.findIndex((item:Itype) => store.contextMenuTabId === item.path) 50 | store.tabsList.splice(0, index); 51 | }else if(action === 'right'){ 52 | const index = store.tabsList.findIndex((item:Itype) => store.contextMenuTabId === item.path) 53 | store.tabsList.splice(index + 1); 54 | } 55 | } 56 | }, 57 | getters:{ 58 | getAddTabs(state:TabState){ 59 | return state.tabsList; 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /vue3-admain/src/store/type.ts: -------------------------------------------------------------------------------- 1 | export type Itype = { 2 | path:string 3 | title:string 4 | } 5 | 6 | export type UserType = { 7 | avatar:string, 8 | username:string, 9 | roleName:string, 10 | status:number 11 | } -------------------------------------------------------------------------------- /vue3-admain/src/styles/variables.scss: -------------------------------------------------------------------------------- 1 | /* Variables */ 2 | 3 | // Base color 4 | $blue:#324157; 5 | $light-blue:#3A71A8; 6 | $red:#C03639; 7 | $pink: #E65D6E; 8 | $green: #30B08F; 9 | $tiffany: #4AB7BD; 10 | $yellow:#FEC171; 11 | $panGreen: #30B08F; 12 | 13 | // Sidebar 14 | $sideBarWidth:300px; 15 | $subMenuBg:#1f2d3d; 16 | $subMenuHover:#001528; 17 | $subMenuActiveText:#f4f4f5; 18 | $menuBg:rgb(50, 65, 87); 19 | $menuText:#162B64; 20 | $menuActiveText:#435EBE; // Also see settings.sidebarTextTheme 21 | 22 | // Login page 23 | $lightGray: #eee; 24 | $darkGray:#889aa4; 25 | $loginBg: #2d3a4b; 26 | $loginCursorColor: #fff; 27 | -------------------------------------------------------------------------------- /vue3-admain/src/utils/isMobile.ts: -------------------------------------------------------------------------------- 1 | export const isMobile = ():boolean=> { 2 | let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i) 3 | if(flag === null) { 4 | return false 5 | } else { 6 | return true 7 | } 8 | } -------------------------------------------------------------------------------- /vue3-admain/src/views/goods/Category.vue: -------------------------------------------------------------------------------- 1 | 76 | 77 | 162 | -------------------------------------------------------------------------------- /vue3-admain/src/views/goods/Goods.vue: -------------------------------------------------------------------------------- 1 | 2 | 29 | 30 | 94 | 126 | -------------------------------------------------------------------------------- /vue3-admain/src/views/index/Index.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 27 | 28 | -------------------------------------------------------------------------------- /vue3-admain/src/views/index/components/BarChart.vue: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 85 | -------------------------------------------------------------------------------- /vue3-admain/src/views/index/components/BarChartTo.vue: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 79 | -------------------------------------------------------------------------------- /vue3-admain/src/views/index/components/LineChart.vue: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 205 | -------------------------------------------------------------------------------- /vue3-admain/src/views/index/components/MapChart.vue: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 93 | -------------------------------------------------------------------------------- /vue3-admain/src/views/index/components/Piechart.vue: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 64 | -------------------------------------------------------------------------------- /vue3-admain/src/views/index/components/basice.vue: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /vue3-admain/src/views/login/Login.vue: -------------------------------------------------------------------------------- 1 | 106 | 107 | 156 | 157 | -------------------------------------------------------------------------------- /vue3-admain/src/views/orders/OrderAction.vue: -------------------------------------------------------------------------------- 1 | 51 | 52 | 57 | -------------------------------------------------------------------------------- /vue3-admain/src/views/orders/OrderQuery.vue: -------------------------------------------------------------------------------- 1 | 83 | 84 | 102 | 108 | -------------------------------------------------------------------------------- /vue3-admain/src/views/storesLocation/StoresLocation.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 33 | -------------------------------------------------------------------------------- /vue3-admain/src/views/system/Account.vue: -------------------------------------------------------------------------------- 1 | 2 | 75 | 76 | 81 | 234 | -------------------------------------------------------------------------------- /vue3-admain/src/views/system/Group.vue: -------------------------------------------------------------------------------- 1 | 2 | 73 | 74 | 205 | -------------------------------------------------------------------------------- /vue3-admain/src/views/system/Setting.vue: -------------------------------------------------------------------------------- 1 | 106 | 107 | 142 | 143 | 155 | -------------------------------------------------------------------------------- /vue3-admain/src/views/system/Task.vue: -------------------------------------------------------------------------------- 1 | 2 | 36 | 37 | 50 | -------------------------------------------------------------------------------- /vue3-admain/src/views/user/User.vue: -------------------------------------------------------------------------------- 1 | 2 | 12 | 43 | 44 | 105 | -------------------------------------------------------------------------------- /vue3-admain/statics/account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/statics/account.png -------------------------------------------------------------------------------- /vue3-admain/statics/changelang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/statics/changelang.png -------------------------------------------------------------------------------- /vue3-admain/statics/fullscrren.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/statics/fullscrren.png -------------------------------------------------------------------------------- /vue3-admain/statics/group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/statics/group.png -------------------------------------------------------------------------------- /vue3-admain/statics/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/statics/home.png -------------------------------------------------------------------------------- /vue3-admain/statics/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/statics/login.png -------------------------------------------------------------------------------- /vue3-admain/statics/loginTips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/statics/loginTips.png -------------------------------------------------------------------------------- /vue3-admain/statics/role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/statics/role.png -------------------------------------------------------------------------------- /vue3-admain/statics/setrole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Down-1998/vue3-admin/0773827ec64c99212834114e008fbf3f256f6759/vue3-admain/statics/setrole.png -------------------------------------------------------------------------------- /vue3-admain/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "useDefineForClassFields": true, 5 | "module": "esnext", 6 | "moduleResolution": "node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "esModuleInterop": true, 13 | "lib": ["esnext", "dom"], 14 | "skipLibCheck": true, 15 | "allowSyntheticDefaultImports":true, 16 | "types": ["element-plus/global"], 17 | "paths": { 18 | "@":["./src"], 19 | "@/*":["./src/*"], 20 | } 21 | }, 22 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 23 | "references": [{ "path": "./tsconfig.node.json" }] 24 | } 25 | -------------------------------------------------------------------------------- /vue3-admain/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "esnext", 5 | "moduleResolution": "node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /vue3-admain/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | import AutoImport from 'unplugin-auto-import/vite' 4 | import Components from 'unplugin-vue-components/vite' 5 | import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' 6 | import viteCompression from 'vite-plugin-compression'; 7 | import path from 'path' 8 | // https://vitejs.dev/config/ 9 | export default defineConfig({ 10 | server:{ 11 | port:3001, 12 | proxy:{ 13 | '/api':{ 14 | target:'http://106.52.235.252:8101/', 15 | changeOrigin:true, 16 | rewrite:(path) => path.replace(/^\/api/,'') 17 | } 18 | } 19 | }, 20 | resolve:{ 21 | alias:{ 22 | "@":path.resolve(__dirname,'src'), 23 | "com":path.resolve(__dirname,'src/components') 24 | } 25 | }, 26 | css:{ 27 | //css预处理 28 | preprocessorOptions:{ 29 | scss:{ 30 | //引入varibles.scss全局预定义变量 31 | additionalData:`@import "./src/styles/variables.scss";`, 32 | } 33 | } 34 | }, 35 | build:{ 36 | chunkSizeWarningLimit:1500 37 | }, 38 | plugins: [ 39 | vue(), 40 | AutoImport({ 41 | resolvers: [ElementPlusResolver()], 42 | }), 43 | Components({ 44 | resolvers: [ElementPlusResolver()], 45 | }), 46 | // viteCompression() 47 | ] 48 | }) 49 | -------------------------------------------------------------------------------- /vue3-admain/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@antfu/utils@^0.5.1": 6 | version "0.5.2" 7 | resolved "https://registry.npmmirror.com/@antfu/utils/-/utils-0.5.2.tgz#8c2d931ff927be0ebe740169874a3d4004ab414b" 8 | integrity sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA== 9 | 10 | "@babel/parser@^7.16.4": 11 | version "7.17.10" 12 | resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" 13 | integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== 14 | 15 | "@ctrl/tinycolor@^3.4.1": 16 | version "3.4.1" 17 | resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32" 18 | integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== 19 | 20 | "@element-plus/icons-vue@^1.1.4": 21 | version "1.1.4" 22 | resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-1.1.4.tgz#5d2788ea356f1458068e6d400e724ca5f3d29aca" 23 | integrity sha512-Iz/nHqdp1sFPmdzRwHkEQQA3lKvoObk8azgABZ81QUOpW9s/lUyQVUSh0tNtEPZXQlKwlSh7SPgoVxzrE0uuVQ== 24 | 25 | "@element-plus/icons@^0.0.11": 26 | version "0.0.11" 27 | resolved "https://registry.npmmirror.com/@element-plus/icons/-/icons-0.0.11.tgz#9b187c002774548b911850d17fa5fc2f9a515f57" 28 | integrity sha512-iKQXSxXu131Ai+I9Ymtcof9WId7kaXvB1+WRfAfpQCW7UiAMYgdNDqb/u0hgTo2Yq3MwC4MWJnNuTBEpG8r7+A== 29 | 30 | "@floating-ui/core@^0.6.2": 31 | version "0.6.2" 32 | resolved "https://registry.npmmirror.com/@floating-ui/core/-/core-0.6.2.tgz#f2813f0e5f3d5ed7af5029e1a082203dadf02b7d" 33 | integrity sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg== 34 | 35 | "@floating-ui/dom@^0.4.5": 36 | version "0.4.5" 37 | resolved "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.4.5.tgz#2e88d16646119cc67d44683f75ee99840475bbfa" 38 | integrity sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw== 39 | dependencies: 40 | "@floating-ui/core" "^0.6.2" 41 | 42 | "@intlify/core-base@9.2.0-beta.35": 43 | version "9.2.0-beta.35" 44 | resolved "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.0-beta.35.tgz#ef714d6ddf387024b1f1c0fcde0040a11bd33b0e" 45 | integrity sha512-53yuCpo2ov5OKdvBTvE5zKMo2clLVqNORwkcY9TUu0B+yrOeDwLWQnbPJnOoDu5KkRdbdXlMxnHNCpJ5vlGZ1g== 46 | dependencies: 47 | "@intlify/devtools-if" "9.2.0-beta.35" 48 | "@intlify/message-compiler" "9.2.0-beta.35" 49 | "@intlify/shared" "9.2.0-beta.35" 50 | "@intlify/vue-devtools" "9.2.0-beta.35" 51 | 52 | "@intlify/devtools-if@9.2.0-beta.35": 53 | version "9.2.0-beta.35" 54 | resolved "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.0-beta.35.tgz#16a8bb6b3f6d612ed705ab00a28eba8a8cb7b1ba" 55 | integrity sha512-y3+7M+eS9mqeXTBa1QWAvt4nsjwWJ5G4xT+G3IFtd7Vb2CQHwli229n0avD+VdlDGwWCDWpLkny8QWtdNEYpOA== 56 | dependencies: 57 | "@intlify/shared" "9.2.0-beta.35" 58 | 59 | "@intlify/message-compiler@9.2.0-beta.35": 60 | version "9.2.0-beta.35" 61 | resolved "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.0-beta.35.tgz#3df3809650f4fef97d00ae739a87f33eb095bd79" 62 | integrity sha512-wYQCgnRtyJ40HK3bJTrszHDaxqDXZH+9Ps7RsXNuNwZ9hIb1cVkLiUNIbuJS/XSJ1kATJXA6K+4if6ZLb0Ozxw== 63 | dependencies: 64 | "@intlify/shared" "9.2.0-beta.35" 65 | source-map "0.6.1" 66 | 67 | "@intlify/shared@9.2.0-beta.35": 68 | version "9.2.0-beta.35" 69 | resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.0-beta.35.tgz#10f98403cb541d29d90d428a2ef58fbd927caf1d" 70 | integrity sha512-DXf7xrwf08GKhr93XPQ8EgaEN0CIELl+mAS6SlRhi/aLtZv5HSGSMkz4M/ICwoWzFLSgOx/ZdBSasex19MMogg== 71 | 72 | "@intlify/vue-devtools@9.2.0-beta.35": 73 | version "9.2.0-beta.35" 74 | resolved "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.0-beta.35.tgz#209b5c4964a6dfc40ecc0497334f3fcc347b59d8" 75 | integrity sha512-h7nf5F7AV4uKrr7zKTIyv8EOaIv4yAXuo7tvnFsp5uF8FO+kpBwWDm5csw9v9neyz42hiINJSP0Amou9M2ShEA== 76 | dependencies: 77 | "@intlify/core-base" "9.2.0-beta.35" 78 | "@intlify/shared" "9.2.0-beta.35" 79 | 80 | "@nodelib/fs.scandir@2.1.5": 81 | version "2.1.5" 82 | resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 83 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 84 | dependencies: 85 | "@nodelib/fs.stat" "2.0.5" 86 | run-parallel "^1.1.9" 87 | 88 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 89 | version "2.0.5" 90 | resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 91 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 92 | 93 | "@nodelib/fs.walk@^1.2.3": 94 | version "1.2.8" 95 | resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 96 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 97 | dependencies: 98 | "@nodelib/fs.scandir" "2.1.5" 99 | fastq "^1.6.0" 100 | 101 | "@popperjs/core@npm:@sxzz/popperjs-es@^2.11.6": 102 | version "2.11.7" 103 | resolved "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz#a7f69e3665d3da9b115f9e71671dae1b97e13671" 104 | integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ== 105 | 106 | "@rollup/pluginutils@^4.2.0", "@rollup/pluginutils@^4.2.1": 107 | version "4.2.1" 108 | resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" 109 | integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== 110 | dependencies: 111 | estree-walker "^2.0.1" 112 | picomatch "^2.2.2" 113 | 114 | "@types/lodash-es@^4.17.6": 115 | version "4.17.6" 116 | resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz#c2ed4c8320ffa6f11b43eb89e9eaeec65966a0a0" 117 | integrity sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg== 118 | dependencies: 119 | "@types/lodash" "*" 120 | 121 | "@types/lodash@*", "@types/lodash@^4.14.182": 122 | version "4.14.182" 123 | resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" 124 | integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== 125 | 126 | "@types/nprogress@^0.2.0": 127 | version "0.2.0" 128 | resolved "https://registry.npmmirror.com/@types/nprogress/-/nprogress-0.2.0.tgz#86c593682d4199212a0509cc3c4d562bbbd6e45f" 129 | integrity sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A== 130 | 131 | "@vitejs/plugin-vue@^2.3.3": 132 | version "2.3.3" 133 | resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz#fbf80cc039b82ac21a1acb0f0478de8f61fbf600" 134 | integrity sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw== 135 | 136 | "@volar/code-gen@0.34.12": 137 | version "0.34.12" 138 | resolved "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.34.12.tgz#ce367440b32fd6855076ea1d10e73537c2977207" 139 | integrity sha512-5GAPsSjScnfMmMoh9qLW7CWQjjnT0fTUsPWnDMMjKIOqQF9J5mOyo7rprt1VzX63zwayqFfx7V8W3EVNhUCE3w== 140 | dependencies: 141 | "@volar/source-map" "0.34.12" 142 | 143 | "@volar/source-map@0.34.12": 144 | version "0.34.12" 145 | resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.34.12.tgz#2d6372096e3886d636bc6f52545edea5af45ca41" 146 | integrity sha512-07imKws1cz9g3eo0VWXdioNfc1eCjqwK7GsxVuYSc7OCzKASt9PywUW+F39QGB9g2Kewof+PjCVIPeGqGRECTA== 147 | 148 | "@volar/vue-code-gen@0.34.12": 149 | version "0.34.12" 150 | resolved "https://registry.npmmirror.com/@volar/vue-code-gen/-/vue-code-gen-0.34.12.tgz#e742a3bfe059f96725d3832a0e8a5700ff827d2e" 151 | integrity sha512-PFcft62eIvQvcB6H2Z88fouTu2JmYwimORziFGr3LlGriQUEVmyDtqddtb+E+j2wGChtLkh6hf1py94C5VpI/Q== 152 | dependencies: 153 | "@volar/code-gen" "0.34.12" 154 | "@volar/source-map" "0.34.12" 155 | "@vue/compiler-core" "^3.2.31" 156 | "@vue/compiler-dom" "^3.2.31" 157 | "@vue/shared" "^3.2.31" 158 | 159 | "@volar/vue-typescript@0.34.12": 160 | version "0.34.12" 161 | resolved "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-0.34.12.tgz#3b6baeb59ec4b684fb54ecd00dc206ae94e3fac5" 162 | integrity sha512-mY5cZ2OFOKt1HcCuoX1ViEsccltX3mdACk/FAjrSZTrilTdVHI1zkmQlrpCSnjmE1qowd8I6YoVt7THCaVrHdg== 163 | dependencies: 164 | "@volar/code-gen" "0.34.12" 165 | "@volar/source-map" "0.34.12" 166 | "@volar/vue-code-gen" "0.34.12" 167 | "@vue/compiler-sfc" "^3.2.31" 168 | "@vue/reactivity" "^3.2.31" 169 | 170 | "@vue/compiler-core@3.2.33", "@vue/compiler-core@^3.2.31": 171 | version "3.2.33" 172 | resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.33.tgz#e915d59cce85898f5c5cfebe4c09e539278c3d59" 173 | integrity sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw== 174 | dependencies: 175 | "@babel/parser" "^7.16.4" 176 | "@vue/shared" "3.2.33" 177 | estree-walker "^2.0.2" 178 | source-map "^0.6.1" 179 | 180 | "@vue/compiler-dom@3.2.33", "@vue/compiler-dom@^3.2.31": 181 | version "3.2.33" 182 | resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz#6db84296f949f18e5d3e7fd5e80f943dbed7d5ec" 183 | integrity sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ== 184 | dependencies: 185 | "@vue/compiler-core" "3.2.33" 186 | "@vue/shared" "3.2.33" 187 | 188 | "@vue/compiler-sfc@3.2.33", "@vue/compiler-sfc@^3.2.31": 189 | version "3.2.33" 190 | resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz#7ce01dc947a8b76c099811dc6ca58494d4dc773d" 191 | integrity sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q== 192 | dependencies: 193 | "@babel/parser" "^7.16.4" 194 | "@vue/compiler-core" "3.2.33" 195 | "@vue/compiler-dom" "3.2.33" 196 | "@vue/compiler-ssr" "3.2.33" 197 | "@vue/reactivity-transform" "3.2.33" 198 | "@vue/shared" "3.2.33" 199 | estree-walker "^2.0.2" 200 | magic-string "^0.25.7" 201 | postcss "^8.1.10" 202 | source-map "^0.6.1" 203 | 204 | "@vue/compiler-ssr@3.2.33": 205 | version "3.2.33" 206 | resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz#3e820267e4eea48fde9519f006dedca3f5e42e71" 207 | integrity sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ== 208 | dependencies: 209 | "@vue/compiler-dom" "3.2.33" 210 | "@vue/shared" "3.2.33" 211 | 212 | "@vue/devtools-api@^6.0.0", "@vue/devtools-api@^6.0.0-beta.11", "@vue/devtools-api@^6.0.0-beta.13": 213 | version "6.1.4" 214 | resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz#b4aec2f4b4599e11ba774a50c67fa378c9824e53" 215 | integrity sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ== 216 | 217 | "@vue/reactivity-transform@3.2.33": 218 | version "3.2.33" 219 | resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz#286063f44ca56150ae9b52f8346a26e5913fa699" 220 | integrity sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw== 221 | dependencies: 222 | "@babel/parser" "^7.16.4" 223 | "@vue/compiler-core" "3.2.33" 224 | "@vue/shared" "3.2.33" 225 | estree-walker "^2.0.2" 226 | magic-string "^0.25.7" 227 | 228 | "@vue/reactivity@3.2.33", "@vue/reactivity@^3.2.31": 229 | version "3.2.33" 230 | resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.33.tgz#c84eedb5225138dbfc2472864c151d3efbb4b673" 231 | integrity sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ== 232 | dependencies: 233 | "@vue/shared" "3.2.33" 234 | 235 | "@vue/runtime-core@3.2.33": 236 | version "3.2.33" 237 | resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.33.tgz#2df8907c85c37c3419fbd1bdf1a2df097fa40df2" 238 | integrity sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw== 239 | dependencies: 240 | "@vue/reactivity" "3.2.33" 241 | "@vue/shared" "3.2.33" 242 | 243 | "@vue/runtime-dom@3.2.33": 244 | version "3.2.33" 245 | resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz#123b8969247029ea0d9c1983676d4706a962d848" 246 | integrity sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw== 247 | dependencies: 248 | "@vue/runtime-core" "3.2.33" 249 | "@vue/shared" "3.2.33" 250 | csstype "^2.6.8" 251 | 252 | "@vue/server-renderer@3.2.33": 253 | version "3.2.33" 254 | resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.33.tgz#4b45d6d2ae10ea4e3d2cf8e676804cf60f331979" 255 | integrity sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew== 256 | dependencies: 257 | "@vue/compiler-ssr" "3.2.33" 258 | "@vue/shared" "3.2.33" 259 | 260 | "@vue/shared@3.2.33", "@vue/shared@^3.2.31": 261 | version "3.2.33" 262 | resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.33.tgz#69a8c99ceb37c1b031d5cc4aec2ff1dc77e1161e" 263 | integrity sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg== 264 | 265 | "@vueuse/core@^8.2.6": 266 | version "8.4.2" 267 | resolved "https://registry.npmmirror.com/@vueuse/core/-/core-8.4.2.tgz#e5be73f40394150e6a1b6abd59e5adb7c6bb6c1f" 268 | integrity sha512-dUVU96lii1ZdWoNJXauQNt+4QrHz1DKbuW+y6pDR2N10q7rGZJMDU7pQeMcC2XeosX7kMODfaBuqsF03NozzLg== 269 | dependencies: 270 | "@vueuse/metadata" "8.4.2" 271 | "@vueuse/shared" "8.4.2" 272 | vue-demi "*" 273 | 274 | "@vueuse/metadata@8.4.2": 275 | version "8.4.2" 276 | resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.4.2.tgz#b33e6b7bd5ca69e3f24ea41b149267118bcd566f" 277 | integrity sha512-2BIj++7P0/I5dfMsEe8q7Kw0HqVAjVcyNOd9+G22/ILUC9TVLTeYOuJ1kwa1Gpr+0LWKHc6GqHiLWNL33+exoQ== 278 | 279 | "@vueuse/shared@8.4.2": 280 | version "8.4.2" 281 | resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.4.2.tgz#5900f06ff78bd8b6df4cbf48f8ca82dd6d9747d1" 282 | integrity sha512-hILXMEjL8YQhj1LHN/HZ49UThyfk8irTjhele2nW+L3N55ElFUBGB/f4w0rg8EW+/suhqv7kJJPTZzvHCqxlIw== 283 | dependencies: 284 | vue-demi "*" 285 | 286 | ansi-styles@^4.1.0: 287 | version "4.3.0" 288 | resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 289 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 290 | dependencies: 291 | color-convert "^2.0.1" 292 | 293 | anymatch@~3.1.2: 294 | version "3.1.2" 295 | resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 296 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 297 | dependencies: 298 | normalize-path "^3.0.0" 299 | picomatch "^2.0.4" 300 | 301 | async-validator@^4.0.7: 302 | version "4.1.1" 303 | resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.1.1.tgz#3cd1437faa2de64743f7d56649dd904c946a18fe" 304 | integrity sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA== 305 | 306 | asynckit@^0.4.0: 307 | version "0.4.0" 308 | resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 309 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 310 | 311 | axios@^0.27.2: 312 | version "0.27.2" 313 | resolved "https://registry.npmmirror.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" 314 | integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== 315 | dependencies: 316 | follow-redirects "^1.14.9" 317 | form-data "^4.0.0" 318 | 319 | balanced-match@^1.0.0: 320 | version "1.0.2" 321 | resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 322 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 323 | 324 | binary-extensions@^2.0.0: 325 | version "2.2.0" 326 | resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 327 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 328 | 329 | brace-expansion@^2.0.1: 330 | version "2.0.1" 331 | resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 332 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 333 | dependencies: 334 | balanced-match "^1.0.0" 335 | 336 | braces@^3.0.2, braces@~3.0.2: 337 | version "3.0.2" 338 | resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 339 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 340 | dependencies: 341 | fill-range "^7.0.1" 342 | 343 | chalk@^4.1.2: 344 | version "4.1.2" 345 | resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 346 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 347 | dependencies: 348 | ansi-styles "^4.1.0" 349 | supports-color "^7.1.0" 350 | 351 | "chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: 352 | version "3.5.3" 353 | resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 354 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 355 | dependencies: 356 | anymatch "~3.1.2" 357 | braces "~3.0.2" 358 | glob-parent "~5.1.2" 359 | is-binary-path "~2.1.0" 360 | is-glob "~4.0.1" 361 | normalize-path "~3.0.0" 362 | readdirp "~3.6.0" 363 | optionalDependencies: 364 | fsevents "~2.3.2" 365 | 366 | color-convert@^2.0.1: 367 | version "2.0.1" 368 | resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 369 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 370 | dependencies: 371 | color-name "~1.1.4" 372 | 373 | color-name@~1.1.4: 374 | version "1.1.4" 375 | resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 376 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 377 | 378 | combined-stream@^1.0.8: 379 | version "1.0.8" 380 | resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 381 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 382 | dependencies: 383 | delayed-stream "~1.0.0" 384 | 385 | csstype@^2.6.8: 386 | version "2.6.20" 387 | resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda" 388 | integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA== 389 | 390 | dayjs@^1.11.1: 391 | version "1.11.2" 392 | resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.2.tgz#fa0f5223ef0d6724b3d8327134890cfe3d72fbe5" 393 | integrity sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw== 394 | 395 | debug@^4.3.3, debug@^4.3.4: 396 | version "4.3.4" 397 | resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 398 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 399 | dependencies: 400 | ms "2.1.2" 401 | 402 | delayed-stream@~1.0.0: 403 | version "1.0.0" 404 | resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 405 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 406 | 407 | echarts@^5.3.2: 408 | version "5.3.2" 409 | resolved "https://registry.npmmirror.com/echarts/-/echarts-5.3.2.tgz#0a7b3be8c48a48b2e7cb1b82121df0c208d42d2c" 410 | integrity sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ== 411 | dependencies: 412 | tslib "2.3.0" 413 | zrender "5.3.1" 414 | 415 | element-plus@^2.2.0: 416 | version "2.2.0" 417 | resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.0.tgz#58467d1efde071c2bc12caa9fb451e515667fc78" 418 | integrity sha512-zxmAFEAa1T/n09rR+NozXcWl5CjaFtqoaxhFSafag0dgc90tgEHitDXfegdFAl4ahugdNTqu9aLzngx3VhDAtA== 419 | dependencies: 420 | "@ctrl/tinycolor" "^3.4.1" 421 | "@element-plus/icons-vue" "^1.1.4" 422 | "@floating-ui/dom" "^0.4.5" 423 | "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.6" 424 | "@types/lodash" "^4.14.182" 425 | "@types/lodash-es" "^4.17.6" 426 | "@vueuse/core" "^8.2.6" 427 | async-validator "^4.0.7" 428 | dayjs "^1.11.1" 429 | escape-html "^1.0.3" 430 | lodash "^4.17.21" 431 | lodash-es "^4.17.21" 432 | lodash-unified "^1.0.2" 433 | memoize-one "^6.0.0" 434 | normalize-wheel-es "^1.1.2" 435 | 436 | esbuild-android-64@0.14.38: 437 | version "0.14.38" 438 | resolved "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz#5b94a1306df31d55055f64a62ff6b763a47b7f64" 439 | integrity sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw== 440 | 441 | esbuild-android-arm64@0.14.38: 442 | version "0.14.38" 443 | resolved "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz#78acc80773d16007de5219ccce544c036abd50b8" 444 | integrity sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA== 445 | 446 | esbuild-darwin-64@0.14.38: 447 | version "0.14.38" 448 | resolved "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz#e02b1291f629ebdc2aa46fabfacc9aa28ff6aa46" 449 | integrity sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA== 450 | 451 | esbuild-darwin-arm64@0.14.38: 452 | version "0.14.38" 453 | resolved "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz#01eb6650ec010b18c990e443a6abcca1d71290a9" 454 | integrity sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ== 455 | 456 | esbuild-freebsd-64@0.14.38: 457 | version "0.14.38" 458 | resolved "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz#790b8786729d4aac7be17648f9ea8e0e16475b5e" 459 | integrity sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig== 460 | 461 | esbuild-freebsd-arm64@0.14.38: 462 | version "0.14.38" 463 | resolved "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz#b66340ab28c09c1098e6d9d8ff656db47d7211e6" 464 | integrity sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ== 465 | 466 | esbuild-linux-32@0.14.38: 467 | version "0.14.38" 468 | resolved "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz#7927f950986fd39f0ff319e92839455912b67f70" 469 | integrity sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g== 470 | 471 | esbuild-linux-64@0.14.38: 472 | version "0.14.38" 473 | resolved "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz#4893d07b229d9cfe34a2b3ce586399e73c3ac519" 474 | integrity sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q== 475 | 476 | esbuild-linux-arm64@0.14.38: 477 | version "0.14.38" 478 | resolved "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz#8442402e37d0b8ae946ac616784d9c1a2041056a" 479 | integrity sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA== 480 | 481 | esbuild-linux-arm@0.14.38: 482 | version "0.14.38" 483 | resolved "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz#d5dbf32d38b7f79be0ec6b5fb2f9251fd9066986" 484 | integrity sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA== 485 | 486 | esbuild-linux-mips64le@0.14.38: 487 | version "0.14.38" 488 | resolved "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz#95081e42f698bbe35d8ccee0e3a237594b337eb5" 489 | integrity sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ== 490 | 491 | esbuild-linux-ppc64le@0.14.38: 492 | version "0.14.38" 493 | resolved "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz#dceb0a1b186f5df679618882a7990bd422089b47" 494 | integrity sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q== 495 | 496 | esbuild-linux-riscv64@0.14.38: 497 | version "0.14.38" 498 | resolved "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz#61fb8edb75f475f9208c4a93ab2bfab63821afd2" 499 | integrity sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ== 500 | 501 | esbuild-linux-s390x@0.14.38: 502 | version "0.14.38" 503 | resolved "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz#34c7126a4937406bf6a5e69100185fd702d12fe0" 504 | integrity sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ== 505 | 506 | esbuild-netbsd-64@0.14.38: 507 | version "0.14.38" 508 | resolved "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz#322ea9937d9e529183ee281c7996b93eb38a5d95" 509 | integrity sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q== 510 | 511 | esbuild-openbsd-64@0.14.38: 512 | version "0.14.38" 513 | resolved "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz#1ca29bb7a2bf09592dcc26afdb45108f08a2cdbd" 514 | integrity sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ== 515 | 516 | esbuild-sunos-64@0.14.38: 517 | version "0.14.38" 518 | resolved "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz#c9446f7d8ebf45093e7bb0e7045506a88540019b" 519 | integrity sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA== 520 | 521 | esbuild-windows-32@0.14.38: 522 | version "0.14.38" 523 | resolved "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz#f8e9b4602fd0ccbd48e5c8d117ec0ba4040f2ad1" 524 | integrity sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw== 525 | 526 | esbuild-windows-64@0.14.38: 527 | version "0.14.38" 528 | resolved "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz#280f58e69f78535f470905ce3e43db1746518107" 529 | integrity sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw== 530 | 531 | esbuild-windows-arm64@0.14.38: 532 | version "0.14.38" 533 | resolved "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz#d97e9ac0f95a4c236d9173fa9f86c983d6a53f54" 534 | integrity sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw== 535 | 536 | esbuild@^0.14.27: 537 | version "0.14.38" 538 | resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.38.tgz#99526b778cd9f35532955e26e1709a16cca2fb30" 539 | integrity sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA== 540 | optionalDependencies: 541 | esbuild-android-64 "0.14.38" 542 | esbuild-android-arm64 "0.14.38" 543 | esbuild-darwin-64 "0.14.38" 544 | esbuild-darwin-arm64 "0.14.38" 545 | esbuild-freebsd-64 "0.14.38" 546 | esbuild-freebsd-arm64 "0.14.38" 547 | esbuild-linux-32 "0.14.38" 548 | esbuild-linux-64 "0.14.38" 549 | esbuild-linux-arm "0.14.38" 550 | esbuild-linux-arm64 "0.14.38" 551 | esbuild-linux-mips64le "0.14.38" 552 | esbuild-linux-ppc64le "0.14.38" 553 | esbuild-linux-riscv64 "0.14.38" 554 | esbuild-linux-s390x "0.14.38" 555 | esbuild-netbsd-64 "0.14.38" 556 | esbuild-openbsd-64 "0.14.38" 557 | esbuild-sunos-64 "0.14.38" 558 | esbuild-windows-32 "0.14.38" 559 | esbuild-windows-64 "0.14.38" 560 | esbuild-windows-arm64 "0.14.38" 561 | 562 | escape-html@^1.0.3: 563 | version "1.0.3" 564 | resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 565 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 566 | 567 | estree-walker@^2.0.1, estree-walker@^2.0.2: 568 | version "2.0.2" 569 | resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 570 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 571 | 572 | fast-glob@^3.2.11: 573 | version "3.2.11" 574 | resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 575 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 576 | dependencies: 577 | "@nodelib/fs.stat" "^2.0.2" 578 | "@nodelib/fs.walk" "^1.2.3" 579 | glob-parent "^5.1.2" 580 | merge2 "^1.3.0" 581 | micromatch "^4.0.4" 582 | 583 | fastq@^1.6.0: 584 | version "1.13.0" 585 | resolved "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 586 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 587 | dependencies: 588 | reusify "^1.0.4" 589 | 590 | fill-range@^7.0.1: 591 | version "7.0.1" 592 | resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 593 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 594 | dependencies: 595 | to-regex-range "^5.0.1" 596 | 597 | follow-redirects@^1.14.9: 598 | version "1.15.0" 599 | resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.0.tgz#06441868281c86d0dda4ad8bdaead2d02dca89d4" 600 | integrity sha512-aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ== 601 | 602 | form-data@^4.0.0: 603 | version "4.0.0" 604 | resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 605 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 606 | dependencies: 607 | asynckit "^0.4.0" 608 | combined-stream "^1.0.8" 609 | mime-types "^2.1.12" 610 | 611 | fs-extra@^10.0.0: 612 | version "10.1.0" 613 | resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" 614 | integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== 615 | dependencies: 616 | graceful-fs "^4.2.0" 617 | jsonfile "^6.0.1" 618 | universalify "^2.0.0" 619 | 620 | fsevents@~2.3.2: 621 | version "2.3.2" 622 | resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 623 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 624 | 625 | function-bind@^1.1.1: 626 | version "1.1.1" 627 | resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 628 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 629 | 630 | glob-parent@^5.1.2, glob-parent@~5.1.2: 631 | version "5.1.2" 632 | resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 633 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 634 | dependencies: 635 | is-glob "^4.0.1" 636 | 637 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 638 | version "4.2.10" 639 | resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 640 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 641 | 642 | has-flag@^4.0.0: 643 | version "4.0.0" 644 | resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 645 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 646 | 647 | has@^1.0.3: 648 | version "1.0.3" 649 | resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 650 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 651 | dependencies: 652 | function-bind "^1.1.1" 653 | 654 | immutable@^4.0.0: 655 | version "4.0.0" 656 | resolved "https://registry.npmmirror.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" 657 | integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== 658 | 659 | is-binary-path@~2.1.0: 660 | version "2.1.0" 661 | resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 662 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 663 | dependencies: 664 | binary-extensions "^2.0.0" 665 | 666 | is-core-module@^2.8.1: 667 | version "2.9.0" 668 | resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" 669 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== 670 | dependencies: 671 | has "^1.0.3" 672 | 673 | is-extglob@^2.1.1: 674 | version "2.1.1" 675 | resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 676 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 677 | 678 | is-glob@^4.0.1, is-glob@~4.0.1: 679 | version "4.0.3" 680 | resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 681 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 682 | dependencies: 683 | is-extglob "^2.1.1" 684 | 685 | is-number@^7.0.0: 686 | version "7.0.0" 687 | resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 688 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 689 | 690 | jsonfile@^6.0.1: 691 | version "6.1.0" 692 | resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 693 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 694 | dependencies: 695 | universalify "^2.0.0" 696 | optionalDependencies: 697 | graceful-fs "^4.1.6" 698 | 699 | klona@^2.0.4: 700 | version "2.0.5" 701 | resolved "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" 702 | integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== 703 | 704 | local-pkg@^0.4.1: 705 | version "0.4.1" 706 | resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.1.tgz#e7b0d7aa0b9c498a1110a5ac5b00ba66ef38cfff" 707 | integrity sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw== 708 | 709 | lodash-es@^4.17.21: 710 | version "4.17.21" 711 | resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" 712 | integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== 713 | 714 | lodash-unified@^1.0.2: 715 | version "1.0.2" 716 | resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz#bb2694db3533781e5cce984af60cfaea318b83c1" 717 | integrity sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g== 718 | 719 | lodash@^4.17.21: 720 | version "4.17.21" 721 | resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 722 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 723 | 724 | magic-string@^0.25.7: 725 | version "0.25.9" 726 | resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" 727 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== 728 | dependencies: 729 | sourcemap-codec "^1.4.8" 730 | 731 | magic-string@^0.26.1: 732 | version "0.26.2" 733 | resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" 734 | integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== 735 | dependencies: 736 | sourcemap-codec "^1.4.8" 737 | 738 | memoize-one@^6.0.0: 739 | version "6.0.0" 740 | resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" 741 | integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== 742 | 743 | merge2@^1.3.0: 744 | version "1.4.1" 745 | resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 746 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 747 | 748 | micromatch@^4.0.4: 749 | version "4.0.5" 750 | resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 751 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 752 | dependencies: 753 | braces "^3.0.2" 754 | picomatch "^2.3.1" 755 | 756 | mime-db@1.52.0: 757 | version "1.52.0" 758 | resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 759 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 760 | 761 | mime-types@^2.1.12: 762 | version "2.1.35" 763 | resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 764 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 765 | dependencies: 766 | mime-db "1.52.0" 767 | 768 | minimatch@^5.0.1: 769 | version "5.0.1" 770 | resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 771 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 772 | dependencies: 773 | brace-expansion "^2.0.1" 774 | 775 | ms@2.1.2: 776 | version "2.1.2" 777 | resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 778 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 779 | 780 | nanoid@^3.3.3: 781 | version "3.3.4" 782 | resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" 783 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== 784 | 785 | neo-async@^2.6.2: 786 | version "2.6.2" 787 | resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 788 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 789 | 790 | normalize-path@^3.0.0, normalize-path@~3.0.0: 791 | version "3.0.0" 792 | resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 793 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 794 | 795 | normalize-wheel-es@^1.1.2: 796 | version "1.1.2" 797 | resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.1.2.tgz#285e43676a62d687bf145e33452ea6be435162d0" 798 | integrity sha512-scX83plWJXYH1J4+BhAuIHadROzxX0UBF3+HuZNY2Ks8BciE7tSTQ+5JhTsvzjaO0/EJdm4JBGrfObKxFf3Png== 799 | 800 | nprogress@^0.2.0: 801 | version "0.2.0" 802 | resolved "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" 803 | integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== 804 | 805 | path-parse@^1.0.7: 806 | version "1.0.7" 807 | resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 808 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 809 | 810 | picocolors@^1.0.0: 811 | version "1.0.0" 812 | resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 813 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 814 | 815 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: 816 | version "2.3.1" 817 | resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 818 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 819 | 820 | postcss@^8.1.10, postcss@^8.4.13: 821 | version "8.4.13" 822 | resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" 823 | integrity sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA== 824 | dependencies: 825 | nanoid "^3.3.3" 826 | picocolors "^1.0.0" 827 | source-map-js "^1.0.2" 828 | 829 | queue-microtask@^1.2.2: 830 | version "1.2.3" 831 | resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 832 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 833 | 834 | readdirp@~3.6.0: 835 | version "3.6.0" 836 | resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 837 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 838 | dependencies: 839 | picomatch "^2.2.1" 840 | 841 | resolve@^1.22.0: 842 | version "1.22.0" 843 | resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 844 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 845 | dependencies: 846 | is-core-module "^2.8.1" 847 | path-parse "^1.0.7" 848 | supports-preserve-symlinks-flag "^1.0.0" 849 | 850 | reusify@^1.0.4: 851 | version "1.0.4" 852 | resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 853 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 854 | 855 | rollup@^2.59.0: 856 | version "2.72.1" 857 | resolved "https://registry.npmmirror.com/rollup/-/rollup-2.72.1.tgz#861c94790537b10008f0ca0fbc60e631aabdd045" 858 | integrity sha512-NTc5UGy/NWFGpSqF1lFY8z9Adri6uhyMLI6LvPAXdBKoPRFhIIiBUpt+Qg2awixqO3xvzSijjhnb4+QEZwJmxA== 859 | optionalDependencies: 860 | fsevents "~2.3.2" 861 | 862 | run-parallel@^1.1.9: 863 | version "1.2.0" 864 | resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 865 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 866 | dependencies: 867 | queue-microtask "^1.2.2" 868 | 869 | sass-loader@^12.6.0: 870 | version "12.6.0" 871 | resolved "https://registry.npmmirror.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" 872 | integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== 873 | dependencies: 874 | klona "^2.0.4" 875 | neo-async "^2.6.2" 876 | 877 | sass@^1.51.0: 878 | version "1.51.0" 879 | resolved "https://registry.npmmirror.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" 880 | integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== 881 | dependencies: 882 | chokidar ">=3.0.0 <4.0.0" 883 | immutable "^4.0.0" 884 | source-map-js ">=0.6.2 <2.0.0" 885 | 886 | screenfull@^6.0.1: 887 | version "6.0.1" 888 | resolved "https://registry.npmmirror.com/screenfull/-/screenfull-6.0.1.tgz#3b71e6f06b72d817a8d3be73c45ebe71fa8da1ce" 889 | integrity sha512-yzQW+j4zMUBQC51xxWaoDYjxOtl8Kn+xvue3p6v/fv2pIi1jH4AldgVLU8TBfFVgH2x3VXlf3+YiA/AYIPlaew== 890 | 891 | "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: 892 | version "1.0.2" 893 | resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 894 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 895 | 896 | source-map@0.6.1, source-map@^0.6.1: 897 | version "0.6.1" 898 | resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 899 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 900 | 901 | sourcemap-codec@^1.4.8: 902 | version "1.4.8" 903 | resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 904 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 905 | 906 | supports-color@^7.1.0: 907 | version "7.2.0" 908 | resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 909 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 910 | dependencies: 911 | has-flag "^4.0.0" 912 | 913 | supports-preserve-symlinks-flag@^1.0.0: 914 | version "1.0.0" 915 | resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 916 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 917 | 918 | to-regex-range@^5.0.1: 919 | version "5.0.1" 920 | resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 921 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 922 | dependencies: 923 | is-number "^7.0.0" 924 | 925 | tslib@2.3.0: 926 | version "2.3.0" 927 | resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" 928 | integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== 929 | 930 | typescript@^4.5.4: 931 | version "4.6.4" 932 | resolved "https://registry.npmmirror.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" 933 | integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== 934 | 935 | universalify@^2.0.0: 936 | version "2.0.0" 937 | resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 938 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 939 | 940 | unplugin-auto-import@^0.7.1: 941 | version "0.7.1" 942 | resolved "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.7.1.tgz#3ad04277254f9fc1bcf18ceb71addb4798bbac7c" 943 | integrity sha512-9865OV9eP99PNxHR2mtTDExeN01m4M9boT5U2BtIwsU1wDRsaFIYWLwcCBEjvXzXfTTC2NNMskhHGVAMfL2WgA== 944 | dependencies: 945 | "@antfu/utils" "^0.5.1" 946 | "@rollup/pluginutils" "^4.2.0" 947 | local-pkg "^0.4.1" 948 | magic-string "^0.26.1" 949 | resolve "^1.22.0" 950 | unplugin "^0.6.1" 951 | 952 | unplugin-vue-components@^0.19.5: 953 | version "0.19.5" 954 | resolved "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.19.5.tgz#ba26d741a4853f1439255c5d89898a1a9f2ea458" 955 | integrity sha512-cIC+PdQEXmG+B1gmZGk4hws2xP+00C6pg3FD6ixEgRyW+WF+QXQW/60pc+hUhtDYs1PFE+23K3NY7yvYTnDDTA== 956 | dependencies: 957 | "@antfu/utils" "^0.5.1" 958 | "@rollup/pluginutils" "^4.2.1" 959 | chokidar "^3.5.3" 960 | debug "^4.3.4" 961 | fast-glob "^3.2.11" 962 | local-pkg "^0.4.1" 963 | magic-string "^0.26.1" 964 | minimatch "^5.0.1" 965 | resolve "^1.22.0" 966 | unplugin "^0.6.3" 967 | 968 | unplugin@^0.6.1, unplugin@^0.6.3: 969 | version "0.6.3" 970 | resolved "https://registry.npmmirror.com/unplugin/-/unplugin-0.6.3.tgz#b8721e2b163a410a7efed726e6a0fc6fbadf975a" 971 | integrity sha512-CoW88FQfCW/yabVc4bLrjikN9HC8dEvMU4O7B6K2jsYMPK0l6iAnd9dpJwqGcmXJKRCU9vwSsy653qg+RK0G6A== 972 | dependencies: 973 | chokidar "^3.5.3" 974 | webpack-sources "^3.2.3" 975 | webpack-virtual-modules "^0.4.3" 976 | 977 | vite-plugin-compression@^0.5.1: 978 | version "0.5.1" 979 | resolved "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz#a75b0d8f48357ebb377b65016da9f20885ef39b6" 980 | integrity sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg== 981 | dependencies: 982 | chalk "^4.1.2" 983 | debug "^4.3.3" 984 | fs-extra "^10.0.0" 985 | 986 | vite@^2.9.9: 987 | version "2.9.9" 988 | resolved "https://registry.npmmirror.com/vite/-/vite-2.9.9.tgz#8b558987db5e60fedec2f4b003b73164cb081c5e" 989 | integrity sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew== 990 | dependencies: 991 | esbuild "^0.14.27" 992 | postcss "^8.4.13" 993 | resolve "^1.22.0" 994 | rollup "^2.59.0" 995 | optionalDependencies: 996 | fsevents "~2.3.2" 997 | 998 | vue-demi@*: 999 | version "0.12.5" 1000 | resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.5.tgz#8eeed566a7d86eb090209a11723f887d28aeb2d1" 1001 | integrity sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q== 1002 | 1003 | vue-i18n@^9.2.0-beta.35: 1004 | version "9.2.0-beta.35" 1005 | resolved "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.0-beta.35.tgz#9e5f18bcab8ca40db5c6fe8115bacea3e13cb981" 1006 | integrity sha512-kTYzZSB3B/ar3M9RfQ0KAyTGfvRw544qVzY++/sNV4stOKG6NxIDOdHdYTfVEXTSkczFwoZHTKXTWNVpx+GuHA== 1007 | dependencies: 1008 | "@intlify/core-base" "9.2.0-beta.35" 1009 | "@intlify/shared" "9.2.0-beta.35" 1010 | "@intlify/vue-devtools" "9.2.0-beta.35" 1011 | "@vue/devtools-api" "^6.0.0-beta.13" 1012 | 1013 | vue-router@4: 1014 | version "4.0.15" 1015 | resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.15.tgz#b4a0661efe197f8c724e0f233308f8776e2c3667" 1016 | integrity sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg== 1017 | dependencies: 1018 | "@vue/devtools-api" "^6.0.0" 1019 | 1020 | vue-tsc@^0.34.7: 1021 | version "0.34.12" 1022 | resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.34.12.tgz#19e6593371a1351a0a106fb10ed50e441f5c2299" 1023 | integrity sha512-CmuqLXHEW5UvS8UpT2RYom5MzOWBD142PLXxDX0ARdZ/u1oLobA3od4XY2XZACQYCFCzjTvfD1H5wrWwiGwoUA== 1024 | dependencies: 1025 | "@volar/vue-typescript" "0.34.12" 1026 | 1027 | vue@^3.2.25: 1028 | version "3.2.33" 1029 | resolved "https://registry.npmmirror.com/vue/-/vue-3.2.33.tgz#7867eb16a3293a28c4d190a837bc447878bd64c2" 1030 | integrity sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ== 1031 | dependencies: 1032 | "@vue/compiler-dom" "3.2.33" 1033 | "@vue/compiler-sfc" "3.2.33" 1034 | "@vue/runtime-dom" "3.2.33" 1035 | "@vue/server-renderer" "3.2.33" 1036 | "@vue/shared" "3.2.33" 1037 | 1038 | vuex@^4.0.2: 1039 | version "4.0.2" 1040 | resolved "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz#f896dbd5bf2a0e963f00c67e9b610de749ccacc9" 1041 | integrity sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q== 1042 | dependencies: 1043 | "@vue/devtools-api" "^6.0.0-beta.11" 1044 | 1045 | webpack-sources@^3.2.3: 1046 | version "3.2.3" 1047 | resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" 1048 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== 1049 | 1050 | webpack-virtual-modules@^0.4.3: 1051 | version "0.4.3" 1052 | resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz#cd597c6d51d5a5ecb473eea1983a58fa8a17ded9" 1053 | integrity sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw== 1054 | 1055 | zrender@5.3.1: 1056 | version "5.3.1" 1057 | resolved "https://registry.npmmirror.com/zrender/-/zrender-5.3.1.tgz#fa8e63ac7e719cfd563831fe8c42a9756c5af384" 1058 | integrity sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw== 1059 | dependencies: 1060 | tslib "2.3.0" 1061 | --------------------------------------------------------------------------------