diff --git a/README.md b/README.md index 782e4a63..2b83fa66 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # 启航电商OMS订单处理系统 ## 一、介绍 -启航电商OMS订单处理系统是一套为中小电商企业构建的一套简单实用的第三方平台订单处理系统,本项目后端采用SpringCloudAlibaba 微服务架构,前端采用Vue3开发。 +启航电商OMS订单处理系统是一套为中小电商企业构建的一套简单实用的第三方平台订单处理系统,本项目后端采用SpringCloudAlibaba 微服务架构,前端采用Vue2开发。 支持多平台店铺,目前支持:淘宝、京东、拼多多、抖店。后续计划支持快手、小红书等。 @@ -42,7 +42,7 @@ ### 1、开发环境级组件 #### 1.1 开发环境 + Jdk:17 -+ Nodejs:v20.11.0 ++ Nodejs:v16.20.0 #### 1.2 项目组件 ##### 后端核心组件 @@ -54,8 +54,8 @@ + spring-cloud-starter-loadbalancer ##### 前端框架及组件 -+ vue3 -+ element-plus ++ vue2 ++ element #### 1.3、存储及中间件 @@ -123,12 +123,11 @@ oms主功能微服务,主要功能包括: 3. 启动微服务网关(api) #### 3.3、运行前端 -+ Nodejs版本:v20.11.0 -+ 进入`vue3`文件夹 -+ 安装pnpm:`npm install pnpm -g` -+ 运行`pnpm install` -+ 运行`pnpm run dev` -+ 浏览网页`http://localhost:3000` ++ Nodejs版本:v16.20.0 ++ 进入`vue`文件夹 ++ 运行`npm install` ++ 运行`npm run dev` ++ 浏览网页`http://localhost` ### 4、项目部署 @@ -156,21 +155,24 @@ server { } # 反向代理配置 location /prod-api/ { - proxy_pass http://vapi.youlai.tech/; # vapi.youlai.tech替换成你的后端API地址 + proxy_pass http://127.0.0.1:8080/; # 替换成你的后端网关API地址 } } ``` -## 捐献作者 - +## 交个朋友 💖 如果觉得有用记得点 Star⭐ +#### 关注公众号 + +作者微信公众号:qihangerp168 欢迎一起交流! +#### 捐献支持 作者为兼职做开源,平时还需要工作,如果帮到了您可以请作者吃个盒饭(目前还希望接收大家的捐献可以搭建一个演示环境!) diff --git a/sys-api/src/main/java/com/qihang/sys/api/controller/BaseController.java b/sys-api/src/main/java/com/qihang/sys/api/controller/BaseController.java new file mode 100644 index 00000000..2e38215e --- /dev/null +++ b/sys-api/src/main/java/com/qihang/sys/api/controller/BaseController.java @@ -0,0 +1,136 @@ +package com.qihang.sys.api.controller; + +import com.qihang.common.common.AjaxResult; +import com.qihang.common.utils.StringUtils; +import com.qihang.security.LoginUser; +import com.qihang.sys.api.common.SecurityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; + +import java.beans.PropertyEditorSupport; +import java.util.Date; +import java.util.List; + +/** + * web层通用数据处理 + * + * @author qihang + */ +public class BaseController +{ + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); + + + + /** + * 返回成功 + */ + public AjaxResult success() + { + return AjaxResult.success(); + } + + /** + * 返回失败消息 + */ + public AjaxResult error() + { + return AjaxResult.error(); + } + + /** + * 返回成功消息 + */ + public AjaxResult success(String message) + { + return AjaxResult.success(message); + } + + /** + * 返回成功消息 + */ + public AjaxResult success(Object data) + { + return AjaxResult.success(data); + } + + /** + * 返回失败消息 + */ + public AjaxResult error(String message) + { + return AjaxResult.error(message); + } + + /** + * 返回警告消息 + */ + public AjaxResult warn(String message) + { + return AjaxResult.warn(message); + } + + /** + * 响应返回结果 + * + * @param rows 影响行数 + * @return 操作结果 + */ + protected AjaxResult toAjax(int rows) + { + return rows > 0 ? AjaxResult.success() : AjaxResult.error(); + } + + /** + * 响应返回结果 + * + * @param result 结果 + * @return 操作结果 + */ + protected AjaxResult toAjax(boolean result) + { + return result ? success() : error(); + } + + /** + * 页面跳转 + */ + public String redirect(String url) + { + return StringUtils.format("redirect:{}", url); + } + + /** + * 获取用户缓存信息 + */ + public LoginUser getLoginUser() + { + return SecurityUtils.getLoginUser(); + } + + /** + * 获取登录用户id + */ + public Long getUserId() + { + return getLoginUser().getUserId(); + } + + /** + * 获取登录部门id + */ + public Long getDeptId() + { + return getLoginUser().getDeptId(); + } + + /** + * 获取登录用户名 + */ + public String getUsername() + { + return getLoginUser().getUsername(); + } +} diff --git a/sys-api/src/main/java/com/qihang/sys/api/controller/LoginController.java b/sys-api/src/main/java/com/qihang/sys/api/controller/LoginController.java index 32718f8b..609d95fb 100644 --- a/sys-api/src/main/java/com/qihang/sys/api/controller/LoginController.java +++ b/sys-api/src/main/java/com/qihang/sys/api/controller/LoginController.java @@ -1,21 +1,21 @@ -package com.qihang.sys.api.controller; - -import com.qihang.common.common.AjaxResult; -import com.qihang.sys.api.domain.LoginBody; -import com.qihang.security.service.ISysUserService; -import com.qihang.security.service.SysLoginService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.HashMap; -import java.util.Map; - -@RestController -public class LoginController { - @Autowired - private SysLoginService loginService; - @Autowired - private ISysUserService userService; +//package com.qihang.sys.api.controller; +// +//import com.qihang.common.common.AjaxResult; +//import com.qihang.sys.api.domain.LoginBody; +//import com.qihang.security.service.ISysUserService; +//import com.qihang.security.service.SysLoginService; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.*; +// +//import java.util.HashMap; +//import java.util.Map; +// +//@RestController +//public class LoginController { +// @Autowired +// private SysLoginService loginService; +// @Autowired +// private ISysUserService userService; // @PostMapping(value = "/login") // public AjaxResult login(@RequestBody LoginBody loginBody){ //// AjaxResult ajax = @@ -29,7 +29,7 @@ public class LoginController { // map.put("tokenType","Bearer"); // return AjaxResult.success(map); // } - - //logout - -} +// +// //logout +// +//} diff --git a/sys-api/src/main/java/com/qihang/sys/api/controller/MenusController.java b/sys-api/src/main/java/com/qihang/sys/api/controller/MenusController.java index db421477..e8f823a4 100644 --- a/sys-api/src/main/java/com/qihang/sys/api/controller/MenusController.java +++ b/sys-api/src/main/java/com/qihang/sys/api/controller/MenusController.java @@ -1,248 +1,248 @@ -package com.qihang.sys.api.controller; - -import com.alibaba.fastjson2.JSONArray; -import com.qihang.common.common.AjaxResult; -import com.qihang.sys.api.domain.SysMenu; -import com.qihang.sys.api.domain.vo.MenusDetailVo; -import com.qihang.sys.api.domain.vo.MenusVo; -import com.qihang.sys.api.service.ISysMenuService; -import com.qihang.security.LoginUser; -import com.qihang.security.TokenService; -import jakarta.servlet.http.HttpServletRequest; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.*; -import java.util.stream.Collectors; - -@RequestMapping("/menus") -@RestController -public class MenusController { - private final TokenService tokenService; - private final ISysMenuService sysMenuService; - - public MenusController(TokenService tokenService, ISysMenuService sysMenuService) { - this.tokenService = tokenService; - this.sysMenuService = sysMenuService; - } - - @GetMapping(value = "/routes") - public AjaxResult list(HttpServletRequest request) { - LoginUser loginUser = tokenService.getLoginUser(request); - - List sysMenuList = sysMenuService.selectMenuList(loginUser.getUserId()); - - -// Map> treeList = menusVos.stream().collect(Collectors.groupingBy(MenusVo::getParentId)); -// menusVos.forEach(menu -> menu.setChildren(treeList.getOrDefault(menu.getId(), null))); -// List result = menusVos.stream().filter(m -> m.getParentId() == 0).collect(Collectors.toList()); - Map> sysMenuMap = sysMenuList.stream().collect(Collectors.groupingBy(SysMenu::getParentId)); -// menuList.forEach(menu -> menu.setChildren(treeList.getOrDefault(menu.getMenuId(), new ArrayList<>()))); -// List result = menuList.stream().filter(node -> node.getParentId() == 0).collect(Collectors.toList()); - -// MenusDetailVo meta1 = new MenusDetailVo(); -// meta1.setTitle("系统管理"); -// meta1.setIcon("system"); -// meta1.setHidden(false); -// meta1.setRoles(new String[]{"GUEST","ADMIN", "ADMIN6"}); +//package com.qihang.sys.api.controller; // -// menuList.forEach(menu -> { -// menu.setChildren(treeList.getOrDefault(menu.getMenuId(), new ArrayList<>())); -// menu.setComponent("/system/user"); -// MenusDetailVo m = new MenusDetailVo(); -// m.setTitle(menu.getMenuName()); -// m.setIcon(menu.getIcon()); -// m.setHidden(false); -// m.setRoles(new String[]{"GUEST","ADMIN", "ADMIN6"}); -// menu.setMeta(m); -// menu.setName(menu.getPath()); -//// menu.setRedirect("/system/user"); -// }); - -// List result = menuList.stream().filter(node -> node.getParentId() == 0).collect(Collectors.toList()); - - - List vo = new ArrayList<>(); - for (var entry : sysMenuMap.entrySet()) { - Optional first = sysMenuList.stream().filter(x -> Objects.equals(x.getMenuId(), entry.getKey())).findFirst(); -// SysMenu sysMenuStream = first.orElse(null); - if(first.isPresent()) { - MenusVo topMenu = new MenusVo(); - topMenu.setPath(first.get().getPath()); - topMenu.setComponent(first.get().getComponent()); -// topMenu.setRedirect("/system/user"); - topMenu.setName(first.get().getPath()); - MenusDetailVo meta = new MenusDetailVo(); - meta.setTitle(first.get().getMenuName()); - meta.setIcon(first.get().getIcon()); - meta.setHidden(false); - meta.setRoles(new String[]{"ADMIN", "ADMIN6"}); - topMenu.setMeta(meta); - var child = sysMenuMap.getOrDefault(entry.getKey(), null); - if(child!=null){ - List children = new ArrayList<>(); - for(var m : child) { - MenusVo m1ch1 = new MenusVo(); - m1ch1.setPath(m.getPath()); - m1ch1.setComponent(m.getComponent()); -// m1ch1.setName(m.getPath().replace("/","")); - MenusDetailVo meta11 = new MenusDetailVo(); - meta11.setTitle(m.getMenuName()); - meta11.setIcon(m.getIcon()); - meta11.setHidden(false); - meta11.setRoles(new String[]{"ADMIN", "GUEST"}); - m1ch1.setMeta(meta11); - children.add(m1ch1); - } - topMenu.setChildren(children); - } - vo.add(topMenu); -// MenusVo m1 = new MenusVo(); -// m1.setPath("/"+first.get().getPath()); -// m1.setComponent(first.get().getComponent()); -// m1.setRedirect("/system/user"); -// m1.setName("/system"); -// MenusDetailVo meta1 = new MenusDetailVo(); -// meta1.setTitle(first.get().getMenuName()); -// meta1.setIcon(first.get().getIcon()); -// meta1.setHidden(false); -// meta1.setRoles(new String[]{"ADMIN", "ADMIN6"}); -// m1.setMeta(meta1); -// vo.add(m1); - } - System.out.println(entry.getKey() + " : " + entry.getValue()); - } - -// vo = new ArrayList<>(); -// MenusVo m1 = new MenusVo(); -// m1.setPath("/system"); -// m1.setComponent("Layout"); -// m1.setRedirect("/system/user"); -// m1.setName("/system"); -// MenusDetailVo meta1 = new MenusDetailVo(); -// meta1.setTitle("系统管理"); -// meta1.setIcon("system"); -// meta1.setHidden(false); -// meta1.setRoles(new String[]{"ADMIN", "ADMIN6"}); -// m1.setMeta(meta1); +//import com.alibaba.fastjson2.JSONArray; +//import com.qihang.common.common.AjaxResult; +//import com.qihang.sys.api.domain.SysMenu; +//import com.qihang.sys.api.domain.vo.MenusDetailVo; +//import com.qihang.sys.api.domain.vo.MenusVo; +//import com.qihang.sys.api.service.ISysMenuService; +//import com.qihang.security.LoginUser; +//import com.qihang.security.TokenService; +//import jakarta.servlet.http.HttpServletRequest; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; // -// List m1Ch = new ArrayList<>(); -// MenusVo m1ch1 = new MenusVo(); -// m1ch1.setPath("/user"); -// m1ch1.setComponent("system/user/index"); -// m1ch1.setName("User"); -// MenusDetailVo meta11 = new MenusDetailVo(); -// meta11.setTitle("用户管理"); -// meta11.setIcon("user"); -// meta11.setHidden(false); -// meta11.setRoles(new String[]{"ADMIN", "GUEST"}); -//// meta11.setKeepAlive(true); -// m1ch1.setMeta(meta11); -// m1Ch.add(m1ch1); -// m1Ch.add(m1ch1); +//import java.util.*; +//import java.util.stream.Collectors; +// +//@RequestMapping("/menus") +//@RestController +//public class MenusController { +// private final TokenService tokenService; +// private final ISysMenuService sysMenuService; +// +// public MenusController(TokenService tokenService, ISysMenuService sysMenuService) { +// this.tokenService = tokenService; +// this.sysMenuService = sysMenuService; +// } +// +// @GetMapping(value = "/routes") +// public AjaxResult list(HttpServletRequest request) { +// LoginUser loginUser = tokenService.getLoginUser(request); +// +// List sysMenuList = sysMenuService.selectMenuList(loginUser.getUserId()); // // -// m1.setChildren(m1Ch); -// vo.add(m1); - - - - return AjaxResult.success(JSONArray.from(vo)); -// return AjaxResult.success(JSONArray.from(result)); -// return AjaxResult.success(JSONArray.from(result)); -// JSONArray jsonArray = JSONArray.parseArray("[{\n" + -// " \"path\": \"/system\",\n" + -// " \"component\": \"Layout\",\n" + -// " \"redirect\": \"/system/user\",\n" + -// " \"name\": \"/system\",\n" + -// " \"meta\": {\n" + -// " \"title\": \"系统管理\",\n" + -// " \"icon\": \"system\",\n" + -// " \"hidden\": false,\n" + -// " \"roles\": [\n" + -// " \"GUEST\",\n" + -// " \"ADMIN\",\n" + -// " \"ADMIN6\"\n" + -// " ]\n" + -// " },\n" + -// " \"children\": [\n" + -// " {\n" + -// " \"path\": \"user\",\n" + -// " \"component\": \"system/user/index\",\n" + -// " \"name\": \"User\",\n" + -// " \"meta\": {\n" + -// " \"title\": \"用户管理\",\n" + -// " \"icon\": \"user\",\n" + -// " \"hidden\": false,\n" + -// " \"roles\": [\n" + -// " \"ADMIN\",\n" + -// " \"GUEST\"\n" + -// " ],\n" + -// " \"keepAlive\": true\n" + -// " }\n" + -// " },\n" + -// " {\n" + -// " \"path\": \"role\",\n" + -// " \"component\": \"system/role/index\",\n" + -// " \"name\": \"Role\",\n" + -// " \"meta\": {\n" + -// " \"title\": \"角色管理\",\n" + -// " \"icon\": \"role\",\n" + -// " \"hidden\": false,\n" + -// " \"roles\": [\n" + -// " \"ADMIN\",\n" + -// " \"ADMIN6\",\n" + -// " \"GUEST\"\n" + -// " ],\n" + -// " \"keepAlive\": true\n" + -// " }\n" + -// " },\n" + -// " {\n" + -// " \"path\": \"menu\",\n" + -// " \"component\": \"system/menu/index\",\n" + -// " \"name\": \"Menu\",\n" + -// " \"meta\": {\n" + -// " \"title\": \"菜单管理\",\n" + -// " \"icon\": \"menu\",\n" + -// " \"hidden\": false,\n" + -// " \"roles\": [\n" + -// " \"ADMIN\"\n" + -// " ],\n" + -// " \"keepAlive\": true\n" + -// " }\n" + -// " },\n" + -// " {\n" + -// " \"path\": \"dept\",\n" + -// " \"component\": \"system/dept/index\",\n" + -// " \"name\": \"Dept\",\n" + -// " \"meta\": {\n" + -// " \"title\": \"部门管理\",\n" + -// " \"icon\": \"tree\",\n" + -// " \"hidden\": false,\n" + -// " \"roles\": [\n" + -// " \"ADMIN\"\n" + -// " ],\n" + -// " \"keepAlive\": true\n" + -// " }\n" + -// " },\n" + -// " {\n" + -// " \"path\": \"dict\",\n" + -// " \"component\": \"system/dict/index\",\n" + -// " \"name\": \"Dict\",\n" + -// " \"meta\": {\n" + -// " \"title\": \"字典管理\",\n" + -// " \"icon\": \"dict\",\n" + -// " \"hidden\": false,\n" + -// " \"roles\": [\n" + -// " \"ADMIN\"\n" + -// " ],\n" + -// " \"keepAlive\": true\n" + -// " }\n" + -// " }\n" + -// " ]\n" + -// "}]"); - -// return AjaxResult.success(jsonArray); - } -} +//// Map> treeList = menusVos.stream().collect(Collectors.groupingBy(MenusVo::getParentId)); +//// menusVos.forEach(menu -> menu.setChildren(treeList.getOrDefault(menu.getId(), null))); +//// List result = menusVos.stream().filter(m -> m.getParentId() == 0).collect(Collectors.toList()); +// Map> sysMenuMap = sysMenuList.stream().collect(Collectors.groupingBy(SysMenu::getParentId)); +//// menuList.forEach(menu -> menu.setChildren(treeList.getOrDefault(menu.getMenuId(), new ArrayList<>()))); +//// List result = menuList.stream().filter(node -> node.getParentId() == 0).collect(Collectors.toList()); +// +//// MenusDetailVo meta1 = new MenusDetailVo(); +//// meta1.setTitle("系统管理"); +//// meta1.setIcon("system"); +//// meta1.setHidden(false); +//// meta1.setRoles(new String[]{"GUEST","ADMIN", "ADMIN6"}); +//// +//// menuList.forEach(menu -> { +//// menu.setChildren(treeList.getOrDefault(menu.getMenuId(), new ArrayList<>())); +//// menu.setComponent("/system/user"); +//// MenusDetailVo m = new MenusDetailVo(); +//// m.setTitle(menu.getMenuName()); +//// m.setIcon(menu.getIcon()); +//// m.setHidden(false); +//// m.setRoles(new String[]{"GUEST","ADMIN", "ADMIN6"}); +//// menu.setMeta(m); +//// menu.setName(menu.getPath()); +////// menu.setRedirect("/system/user"); +//// }); +// +//// List result = menuList.stream().filter(node -> node.getParentId() == 0).collect(Collectors.toList()); +// +// +// List vo = new ArrayList<>(); +// for (var entry : sysMenuMap.entrySet()) { +// Optional first = sysMenuList.stream().filter(x -> Objects.equals(x.getMenuId(), entry.getKey())).findFirst(); +//// SysMenu sysMenuStream = first.orElse(null); +// if(first.isPresent()) { +// MenusVo topMenu = new MenusVo(); +// topMenu.setPath(first.get().getPath()); +// topMenu.setComponent(first.get().getComponent()); +//// topMenu.setRedirect("/system/user"); +// topMenu.setName(first.get().getPath()); +// MenusDetailVo meta = new MenusDetailVo(); +// meta.setTitle(first.get().getMenuName()); +// meta.setIcon(first.get().getIcon()); +// meta.setHidden(false); +// meta.setRoles(new String[]{"ADMIN", "ADMIN6"}); +// topMenu.setMeta(meta); +// var child = sysMenuMap.getOrDefault(entry.getKey(), null); +// if(child!=null){ +// List children = new ArrayList<>(); +// for(var m : child) { +// MenusVo m1ch1 = new MenusVo(); +// m1ch1.setPath(m.getPath()); +// m1ch1.setComponent(m.getComponent()); +//// m1ch1.setName(m.getPath().replace("/","")); +// MenusDetailVo meta11 = new MenusDetailVo(); +// meta11.setTitle(m.getMenuName()); +// meta11.setIcon(m.getIcon()); +// meta11.setHidden(false); +// meta11.setRoles(new String[]{"ADMIN", "GUEST"}); +// m1ch1.setMeta(meta11); +// children.add(m1ch1); +// } +// topMenu.setChildren(children); +// } +// vo.add(topMenu); +//// MenusVo m1 = new MenusVo(); +//// m1.setPath("/"+first.get().getPath()); +//// m1.setComponent(first.get().getComponent()); +//// m1.setRedirect("/system/user"); +//// m1.setName("/system"); +//// MenusDetailVo meta1 = new MenusDetailVo(); +//// meta1.setTitle(first.get().getMenuName()); +//// meta1.setIcon(first.get().getIcon()); +//// meta1.setHidden(false); +//// meta1.setRoles(new String[]{"ADMIN", "ADMIN6"}); +//// m1.setMeta(meta1); +//// vo.add(m1); +// } +// System.out.println(entry.getKey() + " : " + entry.getValue()); +// } +// +//// vo = new ArrayList<>(); +//// MenusVo m1 = new MenusVo(); +//// m1.setPath("/system"); +//// m1.setComponent("Layout"); +//// m1.setRedirect("/system/user"); +//// m1.setName("/system"); +//// MenusDetailVo meta1 = new MenusDetailVo(); +//// meta1.setTitle("系统管理"); +//// meta1.setIcon("system"); +//// meta1.setHidden(false); +//// meta1.setRoles(new String[]{"ADMIN", "ADMIN6"}); +//// m1.setMeta(meta1); +//// +//// List m1Ch = new ArrayList<>(); +//// MenusVo m1ch1 = new MenusVo(); +//// m1ch1.setPath("/user"); +//// m1ch1.setComponent("system/user/index"); +//// m1ch1.setName("User"); +//// MenusDetailVo meta11 = new MenusDetailVo(); +//// meta11.setTitle("用户管理"); +//// meta11.setIcon("user"); +//// meta11.setHidden(false); +//// meta11.setRoles(new String[]{"ADMIN", "GUEST"}); +////// meta11.setKeepAlive(true); +//// m1ch1.setMeta(meta11); +//// m1Ch.add(m1ch1); +//// m1Ch.add(m1ch1); +//// +//// +//// m1.setChildren(m1Ch); +//// vo.add(m1); +// +// +// +// return AjaxResult.success(JSONArray.from(vo)); +//// return AjaxResult.success(JSONArray.from(result)); +//// return AjaxResult.success(JSONArray.from(result)); +//// JSONArray jsonArray = JSONArray.parseArray("[{\n" + +//// " \"path\": \"/system\",\n" + +//// " \"component\": \"Layout\",\n" + +//// " \"redirect\": \"/system/user\",\n" + +//// " \"name\": \"/system\",\n" + +//// " \"meta\": {\n" + +//// " \"title\": \"系统管理\",\n" + +//// " \"icon\": \"system\",\n" + +//// " \"hidden\": false,\n" + +//// " \"roles\": [\n" + +//// " \"GUEST\",\n" + +//// " \"ADMIN\",\n" + +//// " \"ADMIN6\"\n" + +//// " ]\n" + +//// " },\n" + +//// " \"children\": [\n" + +//// " {\n" + +//// " \"path\": \"user\",\n" + +//// " \"component\": \"system/user/index\",\n" + +//// " \"name\": \"User\",\n" + +//// " \"meta\": {\n" + +//// " \"title\": \"用户管理\",\n" + +//// " \"icon\": \"user\",\n" + +//// " \"hidden\": false,\n" + +//// " \"roles\": [\n" + +//// " \"ADMIN\",\n" + +//// " \"GUEST\"\n" + +//// " ],\n" + +//// " \"keepAlive\": true\n" + +//// " }\n" + +//// " },\n" + +//// " {\n" + +//// " \"path\": \"role\",\n" + +//// " \"component\": \"system/role/index\",\n" + +//// " \"name\": \"Role\",\n" + +//// " \"meta\": {\n" + +//// " \"title\": \"角色管理\",\n" + +//// " \"icon\": \"role\",\n" + +//// " \"hidden\": false,\n" + +//// " \"roles\": [\n" + +//// " \"ADMIN\",\n" + +//// " \"ADMIN6\",\n" + +//// " \"GUEST\"\n" + +//// " ],\n" + +//// " \"keepAlive\": true\n" + +//// " }\n" + +//// " },\n" + +//// " {\n" + +//// " \"path\": \"menu\",\n" + +//// " \"component\": \"system/menu/index\",\n" + +//// " \"name\": \"Menu\",\n" + +//// " \"meta\": {\n" + +//// " \"title\": \"菜单管理\",\n" + +//// " \"icon\": \"menu\",\n" + +//// " \"hidden\": false,\n" + +//// " \"roles\": [\n" + +//// " \"ADMIN\"\n" + +//// " ],\n" + +//// " \"keepAlive\": true\n" + +//// " }\n" + +//// " },\n" + +//// " {\n" + +//// " \"path\": \"dept\",\n" + +//// " \"component\": \"system/dept/index\",\n" + +//// " \"name\": \"Dept\",\n" + +//// " \"meta\": {\n" + +//// " \"title\": \"部门管理\",\n" + +//// " \"icon\": \"tree\",\n" + +//// " \"hidden\": false,\n" + +//// " \"roles\": [\n" + +//// " \"ADMIN\"\n" + +//// " ],\n" + +//// " \"keepAlive\": true\n" + +//// " }\n" + +//// " },\n" + +//// " {\n" + +//// " \"path\": \"dict\",\n" + +//// " \"component\": \"system/dict/index\",\n" + +//// " \"name\": \"Dict\",\n" + +//// " \"meta\": {\n" + +//// " \"title\": \"字典管理\",\n" + +//// " \"icon\": \"dict\",\n" + +//// " \"hidden\": false,\n" + +//// " \"roles\": [\n" + +//// " \"ADMIN\"\n" + +//// " ],\n" + +//// " \"keepAlive\": true\n" + +//// " }\n" + +//// " }\n" + +//// " ]\n" + +//// "}]"); +// +//// return AjaxResult.success(jsonArray); +// } +//} diff --git a/sys-api/src/main/java/com/qihang/sys/api/controller/SysMenuController.java b/sys-api/src/main/java/com/qihang/sys/api/controller/SysMenuController.java index 15aa202c..e3705b34 100644 --- a/sys-api/src/main/java/com/qihang/sys/api/controller/SysMenuController.java +++ b/sys-api/src/main/java/com/qihang/sys/api/controller/SysMenuController.java @@ -1,54 +1,62 @@ -//package com.qihang.sys.api.controller; -// -////import com.zhijian.common.annotation.Log; -////import com.zhijian.common.constant.UserConstants; -////import com.zhijian.common.core.controller.BaseController; -////import com.zhijian.common.core.domain.AjaxResult; -////import com.zhijian.common.core.domain.entity.SysMenu; -////import com.zhijian.common.enums.BusinessType; -////import com.zhijian.common.utils.StringUtils; -////import com.zhijian.system.service.ISysMenuService; -//import com.qihang.sys.api.service.ISysMenuService; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.security.access.prepost.PreAuthorize; -//import org.springframework.validation.annotation.Validated; -//import org.springframework.web.bind.annotation.*; -// -//import java.util.List; -// -///** -// * 菜单信息 -// * -// * @author qihang -// */ -//@RestController -//@RequestMapping("/system/menu") -//public class SysMenuController -//{ -// @Autowired -// private ISysMenuService menuService; -// -// /** -// * 获取菜单列表 -// */ -// @PreAuthorize("@ss.hasPermi('system:menu:list')") -// @GetMapping("/list") -// public AjaxResult list(SysMenu menu) -// { -// List menus = menuService.selectMenuList(menu, getUserId()); -// return success(menus); -// } -// -// /** -// * 根据菜单编号获取详细信息 -// */ -// @PreAuthorize("@ss.hasPermi('system:menu:query')") -// @GetMapping(value = "/{menuId}") -// public AjaxResult getInfo(@PathVariable Long menuId) -// { -// return success(menuService.selectMenuById(menuId)); -// } -// +package com.qihang.sys.api.controller; + +//import com.zhijian.common.annotation.Log; +//import com.zhijian.common.constant.UserConstants; +//import com.zhijian.common.core.controller.BaseController; +//import com.zhijian.common.core.domain.AjaxResult; +//import com.zhijian.common.core.domain.entity.SysMenu; +//import com.zhijian.common.enums.BusinessType; +//import com.zhijian.common.utils.StringUtils; +//import com.zhijian.system.service.ISysMenuService; +import com.qihang.common.common.AjaxResult; +import com.qihang.common.constant.UserConstants; +import com.qihang.common.utils.StringUtils; +import com.qihang.sys.api.domain.SysMenu; +import com.qihang.sys.api.service.ISysMenuService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static com.qihang.common.common.AjaxResult.success; +import static com.qihang.common.common.AjaxResult.warn; +import static com.qihang.sys.api.common.SecurityUtils.getUserId; + +/** + * 菜单信息 + * + * @author qihang + */ +@RestController +@RequestMapping("/system/menu") +public class SysMenuController extends BaseController +{ + @Autowired + private ISysMenuService menuService; + + /** + * 获取菜单列表 + */ + @PreAuthorize("@ss.hasPermi('system:menu:list')") + @GetMapping("/list") + public AjaxResult list(SysMenu menu) + { + List menus = menuService.selectMenuList(menu, getUserId()); + return success(menus); + } + + /** + * 根据菜单编号获取详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:menu:query')") + @GetMapping(value = "/{menuId}") + public AjaxResult getInfo(@PathVariable Long menuId) + { + return success(menuService.selectMenuById(menuId)); + } + // /** // * 获取菜单下拉树列表 // */ @@ -66,7 +74,7 @@ // public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) // { // List menus = menuService.selectMenuList(getUserId()); -// AjaxResult ajax = AjaxResult.success(); +// AjaxResult ajax = success(); // ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); // ajax.put("menus", menuService.buildMenuTreeSelect(menus)); // return ajax; @@ -76,7 +84,6 @@ // * 新增菜单 // */ // @PreAuthorize("@ss.hasPermi('system:menu:add')") -// @Log(title = "菜单管理", businessType = BusinessType.INSERT) // @PostMapping // public AjaxResult add(@Validated @RequestBody SysMenu menu) // { @@ -92,35 +99,33 @@ // return toAjax(menuService.insertMenu(menu)); // } // -// /** -// * 修改菜单 -// */ -// @PreAuthorize("@ss.hasPermi('system:menu:edit')") -// @Log(title = "菜单管理", businessType = BusinessType.UPDATE) -// @PutMapping -// public AjaxResult edit(@Validated @RequestBody SysMenu menu) -// { -// if (!menuService.checkMenuNameUnique(menu)) -// { -// return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); -// } -// else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) -// { -// return error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); -// } -// else if (menu.getMenuId().equals(menu.getParentId())) -// { -// return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); -// } -// menu.setUpdateBy(getUsername()); -// return toAjax(menuService.updateMenu(menu)); -// } + /** + * 修改菜单 + */ + @PreAuthorize("@ss.hasPermi('system:menu:edit')") + @PutMapping + public AjaxResult edit(@Validated @RequestBody SysMenu menu) + { + if (!menuService.checkMenuNameUnique(menu)) + { + return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); + } + else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) + { + return error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); + } + else if (menu.getMenuId().equals(menu.getParentId())) + { + return error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); + } + menu.setUpdateBy(getUsername()); + return toAjax(menuService.updateMenu(menu)); + } // // /** // * 删除菜单 // */ // @PreAuthorize("@ss.hasPermi('system:menu:remove')") -// @Log(title = "菜单管理", businessType = BusinessType.DELETE) // @DeleteMapping("/{menuId}") // public AjaxResult remove(@PathVariable("menuId") Long menuId) // { @@ -134,4 +139,4 @@ // } // return toAjax(menuService.deleteMenuById(menuId)); // } -//} \ No newline at end of file +} \ No newline at end of file diff --git a/sys-api/src/main/java/com/qihang/sys/api/controller/UsersController.java b/sys-api/src/main/java/com/qihang/sys/api/controller/UsersController.java index eaca051e..bde73107 100644 --- a/sys-api/src/main/java/com/qihang/sys/api/controller/UsersController.java +++ b/sys-api/src/main/java/com/qihang/sys/api/controller/UsersController.java @@ -1,47 +1,47 @@ -package com.qihang.sys.api.controller; - -import com.qihang.common.common.AjaxResult; -import com.qihang.sys.api.domain.vo.UserInfoVo; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.ArrayList; -import java.util.List; - -@RequestMapping("/users") -@RestController -public class UsersController { - - @GetMapping(value = "/me") - public AjaxResult me() { - UserInfoVo vo = new UserInfoVo(); - vo.setUserId(2); - vo.setUsername("admin"); - vo.setNickname("系统管理员"); - vo.setAvatar("https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif"); - vo.setRoles(new String[]{"ADMIN"}); - List perms = new ArrayList<>(); - perms.add("sys:menu:delete"); - perms.add("sys:dept:edit"); - perms.add("sys:dict_type:add"); - perms.add("sys:dict:edit"); - perms.add("sys:dict:delete"); - perms.add("sys:dict_type:edit"); - perms.add("sys:menu:add"); - perms.add("sys:user:add"); - perms.add("sys:role:edit"); - perms.add("sys:dept:delete"); - perms.add("sys:user:password_reset"); - perms.add("sys:user:edit"); - perms.add("sys:user:delete"); - perms.add("sys:dept:add"); - perms.add("sys:role:delete"); - perms.add("sys:dict_type:delete"); - perms.add("sys:menu:edit"); - perms.add("sys:dict:add"); - perms.add("sys:role:add"); - vo.setPerms(perms); - return AjaxResult.success(vo); - } -} +//package com.qihang.sys.api.controller; +// +//import com.qihang.common.common.AjaxResult; +//import com.qihang.sys.api.domain.vo.UserInfoVo; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//import java.util.ArrayList; +//import java.util.List; +// +//@RequestMapping("/users") +//@RestController +//public class UsersController { +// +// @GetMapping(value = "/me") +// public AjaxResult me() { +// UserInfoVo vo = new UserInfoVo(); +// vo.setUserId(2); +// vo.setUsername("admin"); +// vo.setNickname("系统管理员"); +// vo.setAvatar("https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif"); +// vo.setRoles(new String[]{"ADMIN"}); +// List perms = new ArrayList<>(); +// perms.add("sys:menu:delete"); +// perms.add("sys:dept:edit"); +// perms.add("sys:dict_type:add"); +// perms.add("sys:dict:edit"); +// perms.add("sys:dict:delete"); +// perms.add("sys:dict_type:edit"); +// perms.add("sys:menu:add"); +// perms.add("sys:user:add"); +// perms.add("sys:role:edit"); +// perms.add("sys:dept:delete"); +// perms.add("sys:user:password_reset"); +// perms.add("sys:user:edit"); +// perms.add("sys:user:delete"); +// perms.add("sys:dept:add"); +// perms.add("sys:role:delete"); +// perms.add("sys:dict_type:delete"); +// perms.add("sys:menu:edit"); +// perms.add("sys:dict:add"); +// perms.add("sys:role:add"); +// vo.setPerms(perms); +// return AjaxResult.success(vo); +// } +//} diff --git a/sys-api/src/main/java/com/qihang/sys/api/domain/SysMenu.java b/sys-api/src/main/java/com/qihang/sys/api/domain/SysMenu.java index 8ea26c8e..a10b3d78 100644 --- a/sys-api/src/main/java/com/qihang/sys/api/domain/SysMenu.java +++ b/sys-api/src/main/java/com/qihang/sys/api/domain/SysMenu.java @@ -21,7 +21,7 @@ public class SysMenu extends BaseEntity private Long menuId; /** 菜单名称 */ - @JsonProperty("title") +// @JsonProperty("title") private String menuName; /** 父菜单名称 */ diff --git a/vue/src/api/system/menu.js b/vue/src/api/system/menu.js index f6415c65..163775b4 100644 --- a/vue/src/api/system/menu.js +++ b/vue/src/api/system/menu.js @@ -3,7 +3,7 @@ import request from '@/utils/request' // 查询菜单列表 export function listMenu(query) { return request({ - url: '/system/menu/list', + url: '/api/sys-api/system/menu/list', method: 'get', params: query }) @@ -12,7 +12,7 @@ export function listMenu(query) { // 查询菜单详细 export function getMenu(menuId) { return request({ - url: '/system/menu/' + menuId, + url: '/api/sys-api/system/menu/' + menuId, method: 'get' }) } @@ -45,7 +45,7 @@ export function addMenu(data) { // 修改菜单 export function updateMenu(data) { return request({ - url: '/system/menu', + url: '/api/sys-api/system/menu', method: 'put', data: data }) @@ -57,4 +57,4 @@ export function delMenu(menuId) { url: '/system/menu/' + menuId, method: 'delete' }) -} \ No newline at end of file +} diff --git a/vue3/.editorconfig b/vue3/.editorconfig deleted file mode 100644 index 00ee2de4..00000000 --- a/vue3/.editorconfig +++ /dev/null @@ -1,15 +0,0 @@ -# http://editorconfig.org -root = true - -# 表示所有文件适用 -[*] -charset = utf-8 # 设置文件字符集为 utf-8 -end_of_line = lf # 控制换行类型(lf | cr | crlf) -indent_style = space # 缩进风格(tab | space) -indent_size = 2 # 缩进大小 -insert_final_newline = true # 始终在文件末尾插入一个新行 - -# 表示仅 md 文件适用以下规则 -[*.md] -max_line_length = off # 关闭最大行长度限制 -trim_trailing_whitespace = false # 关闭末尾空格修剪 diff --git a/vue3/.env.development b/vue3/.env.development deleted file mode 100644 index 9544eb57..00000000 --- a/vue3/.env.development +++ /dev/null @@ -1,8 +0,0 @@ -## 开发环境 -NODE_ENV='development' - -# 应用端口 -VITE_APP_PORT = 3000 - -# 代理前缀 -VITE_APP_BASE_API = '/dev-api' diff --git a/vue3/.env.production b/vue3/.env.production deleted file mode 100644 index a2d828cb..00000000 --- a/vue3/.env.production +++ /dev/null @@ -1,6 +0,0 @@ -## 生产环境 -NODE_ENV='production' - -# 代理前缀 -VITE_APP_BASE_API = '/prod-api' - diff --git a/vue3/.eslintignore b/vue3/.eslintignore deleted file mode 100644 index 43af40f4..00000000 --- a/vue3/.eslintignore +++ /dev/null @@ -1,14 +0,0 @@ -dist -node_modules -public -.husky -.vscode -.idea -*.sh -*.md - -src/assets - -.eslintrc.cjs -.prettierrc.cjs -.stylelintrc.cjs diff --git a/vue3/.eslintrc-auto-import.json b/vue3/.eslintrc-auto-import.json deleted file mode 100644 index f4738bfc..00000000 --- a/vue3/.eslintrc-auto-import.json +++ /dev/null @@ -1,284 +0,0 @@ -{ - "globals": { - "Component": true, - "ComponentPublicInstance": true, - "ComputedRef": true, - "EffectScope": true, - "ElMessage": true, - "ElMessageBox": true, - "ElNotification": true, - "InjectionKey": true, - "PropType": true, - "Ref": true, - "VNode": true, - "asyncComputed": true, - "autoResetRef": true, - "computed": true, - "computedAsync": true, - "computedEager": true, - "computedInject": true, - "computedWithControl": true, - "controlledComputed": true, - "controlledRef": true, - "createApp": true, - "createEventHook": true, - "createGlobalState": true, - "createInjectionState": true, - "createReactiveFn": true, - "createReusableTemplate": true, - "createSharedComposable": true, - "createTemplatePromise": true, - "createUnrefFn": true, - "customRef": true, - "debouncedRef": true, - "debouncedWatch": true, - "defineAsyncComponent": true, - "defineComponent": true, - "eagerComputed": true, - "effectScope": true, - "extendRef": true, - "getCurrentInstance": true, - "getCurrentScope": true, - "h": true, - "ignorableWatch": true, - "inject": true, - "isDefined": true, - "isProxy": true, - "isReactive": true, - "isReadonly": true, - "isRef": true, - "makeDestructurable": true, - "markRaw": true, - "nextTick": true, - "onActivated": true, - "onBeforeMount": true, - "onBeforeUnmount": true, - "onBeforeUpdate": true, - "onClickOutside": true, - "onDeactivated": true, - "onErrorCaptured": true, - "onKeyStroke": true, - "onLongPress": true, - "onMounted": true, - "onRenderTracked": true, - "onRenderTriggered": true, - "onScopeDispose": true, - "onServerPrefetch": true, - "onStartTyping": true, - "onUnmounted": true, - "onUpdated": true, - "pausableWatch": true, - "provide": true, - "reactify": true, - "reactifyObject": true, - "reactive": true, - "reactiveComputed": true, - "reactiveOmit": true, - "reactivePick": true, - "readonly": true, - "ref": true, - "refAutoReset": true, - "refDebounced": true, - "refDefault": true, - "refThrottled": true, - "refWithControl": true, - "resolveComponent": true, - "resolveRef": true, - "resolveUnref": true, - "shallowReactive": true, - "shallowReadonly": true, - "shallowRef": true, - "syncRef": true, - "syncRefs": true, - "templateRef": true, - "throttledRef": true, - "throttledWatch": true, - "toRaw": true, - "toReactive": true, - "toRef": true, - "toRefs": true, - "toValue": true, - "triggerRef": true, - "tryOnBeforeMount": true, - "tryOnBeforeUnmount": true, - "tryOnMounted": true, - "tryOnScopeDispose": true, - "tryOnUnmounted": true, - "unref": true, - "unrefElement": true, - "until": true, - "useActiveElement": true, - "useAnimate": true, - "useArrayDifference": true, - "useArrayEvery": true, - "useArrayFilter": true, - "useArrayFind": true, - "useArrayFindIndex": true, - "useArrayFindLast": true, - "useArrayIncludes": true, - "useArrayJoin": true, - "useArrayMap": true, - "useArrayReduce": true, - "useArraySome": true, - "useArrayUnique": true, - "useAsyncQueue": true, - "useAsyncState": true, - "useAttrs": true, - "useBase64": true, - "useBattery": true, - "useBluetooth": true, - "useBreakpoints": true, - "useBroadcastChannel": true, - "useBrowserLocation": true, - "useCached": true, - "useClipboard": true, - "useCloned": true, - "useColorMode": true, - "useConfirmDialog": true, - "useCounter": true, - "useCssModule": true, - "useCssVar": true, - "useCssVars": true, - "useCurrentElement": true, - "useCycleList": true, - "useDark": true, - "useDateFormat": true, - "useDebounce": true, - "useDebounceFn": true, - "useDebouncedRefHistory": true, - "useDeviceMotion": true, - "useDeviceOrientation": true, - "useDevicePixelRatio": true, - "useDevicesList": true, - "useDisplayMedia": true, - "useDocumentVisibility": true, - "useDraggable": true, - "useDropZone": true, - "useElementBounding": true, - "useElementByPoint": true, - "useElementHover": true, - "useElementSize": true, - "useElementVisibility": true, - "useEventBus": true, - "useEventListener": true, - "useEventSource": true, - "useEyeDropper": true, - "useFavicon": true, - "useFetch": true, - "useFileDialog": true, - "useFileSystemAccess": true, - "useFocus": true, - "useFocusWithin": true, - "useFps": true, - "useFullscreen": true, - "useGamepad": true, - "useGeolocation": true, - "useIdle": true, - "useImage": true, - "useInfiniteScroll": true, - "useIntersectionObserver": true, - "useInterval": true, - "useIntervalFn": true, - "useKeyModifier": true, - "useLastChanged": true, - "useLocalStorage": true, - "useMagicKeys": true, - "useManualRefHistory": true, - "useMediaControls": true, - "useMediaQuery": true, - "useMemoize": true, - "useMemory": true, - "useMounted": true, - "useMouse": true, - "useMouseInElement": true, - "useMousePressed": true, - "useMutationObserver": true, - "useNavigatorLanguage": true, - "useNetwork": true, - "useNow": true, - "useObjectUrl": true, - "useOffsetPagination": true, - "useOnline": true, - "usePageLeave": true, - "useParallax": true, - "useParentElement": true, - "usePerformanceObserver": true, - "usePermission": true, - "usePointer": true, - "usePointerLock": true, - "usePointerSwipe": true, - "usePreferredColorScheme": true, - "usePreferredContrast": true, - "usePreferredDark": true, - "usePreferredLanguages": true, - "usePreferredReducedMotion": true, - "usePrevious": true, - "useRafFn": true, - "useRefHistory": true, - "useResizeObserver": true, - "useScreenOrientation": true, - "useScreenSafeArea": true, - "useScriptTag": true, - "useScroll": true, - "useScrollLock": true, - "useSessionStorage": true, - "useShare": true, - "useSlots": true, - "useSorted": true, - "useSpeechRecognition": true, - "useSpeechSynthesis": true, - "useStepper": true, - "useStorage": true, - "useStorageAsync": true, - "useStyleTag": true, - "useSupported": true, - "useSwipe": true, - "useTemplateRefsList": true, - "useTextDirection": true, - "useTextSelection": true, - "useTextareaAutosize": true, - "useThrottle": true, - "useThrottleFn": true, - "useThrottledRefHistory": true, - "useTimeAgo": true, - "useTimeout": true, - "useTimeoutFn": true, - "useTimeoutPoll": true, - "useTimestamp": true, - "useTitle": true, - "useToNumber": true, - "useToString": true, - "useToggle": true, - "useTransition": true, - "useUrlSearchParams": true, - "useUserMedia": true, - "useVModel": true, - "useVModels": true, - "useVibrate": true, - "useVirtualList": true, - "useWakeLock": true, - "useWebNotification": true, - "useWebSocket": true, - "useWebWorker": true, - "useWebWorkerFn": true, - "useWindowFocus": true, - "useWindowScroll": true, - "useWindowSize": true, - "watch": true, - "watchArray": true, - "watchAtMost": true, - "watchDebounced": true, - "watchDeep": true, - "watchEffect": true, - "watchIgnorable": true, - "watchImmediate": true, - "watchOnce": true, - "watchPausable": true, - "watchPostEffect": true, - "watchSyncEffect": true, - "watchThrottled": true, - "watchTriggerable": true, - "watchWithFilter": true, - "whenever": true - } -} diff --git a/vue3/.eslintrc.cjs b/vue3/.eslintrc.cjs deleted file mode 100644 index 8ae169a9..00000000 --- a/vue3/.eslintrc.cjs +++ /dev/null @@ -1,88 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - es2021: true, - node: true, - }, - parser: "vue-eslint-parser", - extends: [ - // https://eslint.vuejs.org/user-guide/#usage - "plugin:vue/vue3-recommended", - "./.eslintrc-auto-import.json", - "prettier", - "plugin:@typescript-eslint/recommended", - "plugin:prettier/recommended", - ], - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - parser: "@typescript-eslint/parser", - project: "./tsconfig.*?.json", - createDefaultProgram: false, - extraFileExtensions: [".vue"], - }, - plugins: ["vue", "@typescript-eslint"], - rules: { - // https://eslint.vuejs.org/rules/#priority-a-essential-error-prevention - "vue/multi-word-component-names": "off", - "vue/no-v-model-argument": "off", - "vue/script-setup-uses-vars": "error", - "vue/no-reserved-component-names": "off", - "vue/custom-event-name-casing": "off", - "vue/attributes-order": "off", - "vue/one-component-per-file": "off", - "vue/html-closing-bracket-newline": "off", - "vue/max-attributes-per-line": "off", - "vue/multiline-html-element-content-newline": "off", - "vue/singleline-html-element-content-newline": "off", - "vue/attribute-hyphenation": "off", - "vue/require-default-prop": "off", - "vue/require-explicit-emits": "off", - "vue/html-self-closing": [ - "error", - { - html: { - void: "always", - normal: "never", - component: "always", - }, - svg: "always", - math: "always", - }, - ], - - "@typescript-eslint/no-empty-function": "off", // 关闭空方法检查 - "@typescript-eslint/no-explicit-any": "off", // 关闭any类型的警告 - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/ban-ts-ignore": "off", - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/ban-types": "off", - "@typescript-eslint/explicit-function-return-type": "off", - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-use-before-define": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-unused-vars": "off", - - "prettier/prettier": [ - "error", - { - useTabs: false, // 不使用制表符 - }, - ], - }, - // eslint不能对html文件生效 - overrides: [ - { - files: ["*.html"], - processor: "vue/.vue", - }, - ], - // https://eslint.org/docs/latest/use/configure/language-options#specifying-globals - globals: { - OptionType: "readonly", - }, -}; diff --git a/vue3/.gitignore b/vue3/.gitignore deleted file mode 100644 index 1fd449a7..00000000 --- a/vue3/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -node_modules -.DS_Store -dist -dist-ssr -*.local - -# Editor directories and files -.idea -*.suo -*.ntvs* -*.njsproj -*.sln -*.local - -package-lock.json -pnpm-lock.yaml -stats.html diff --git a/vue3/.husky/commit-msg b/vue3/.husky/commit-msg deleted file mode 100644 index e8511eae..00000000 --- a/vue3/.husky/commit-msg +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -npx --no-install commitlint --edit $1 diff --git a/vue3/.husky/pre-commit b/vue3/.husky/pre-commit deleted file mode 100644 index 37568d10..00000000 --- a/vue3/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -npm run lint:lint-staged diff --git a/vue3/.prettierignore b/vue3/.prettierignore deleted file mode 100644 index f3e9850f..00000000 --- a/vue3/.prettierignore +++ /dev/null @@ -1,11 +0,0 @@ -dist -node_modules -public -.husky -.vscode -.idea -*.sh -*.md - -src/assets -stats.html diff --git a/vue3/.prettierrc.cjs b/vue3/.prettierrc.cjs deleted file mode 100644 index 347fb32e..00000000 --- a/vue3/.prettierrc.cjs +++ /dev/null @@ -1,46 +0,0 @@ -module.exports = { - // (x)=>{},单个参数箭头函数是否显示小括号。(always:始终显示;avoid:省略括号。默认:always) - arrowParens: "always", - // 开始标签的右尖括号是否跟随在最后一行属性末尾,默认false - bracketSameLine: false, - // 对象字面量的括号之间打印空格 (true - Example: { foo: bar } ; false - Example: {foo:bar}) - bracketSpacing: true, - // 是否格式化一些文件中被嵌入的代码片段的风格(auto|off;默认auto) - embeddedLanguageFormatting: "auto", - // 指定 HTML 文件的空格敏感度 (css|strict|ignore;默认css) - htmlWhitespaceSensitivity: "css", - // 当文件已经被 Prettier 格式化之后,是否会在文件顶部插入一个特殊的 @format 标记,默认false - insertPragma: false, - // 在 JSX 中使用单引号替代双引号,默认false - jsxSingleQuote: false, - // 每行最多字符数量,超出换行(默认80) - printWidth: 80, - // 超出打印宽度 (always | never | preserve ) - proseWrap: "preserve", - // 对象属性是否使用引号(as-needed | consistent | preserve;默认as-needed:对象的属性需要加引号才添加;) - quoteProps: "as-needed", - // 是否只格式化在文件顶部包含特定注释(@prettier| @format)的文件,默认false - requirePragma: false, - // 结尾添加分号 - semi: true, - // 使用单引号 (true:单引号;false:双引号) - singleQuote: false, - // 缩进空格数,默认2个空格 - tabWidth: 2, - // 元素末尾是否加逗号,默认es5: ES5中的 objects, arrays 等会添加逗号,TypeScript 中的 type 后不加逗号 - trailingComma: "es5", - // 指定缩进方式,空格或tab,默认false,即使用空格 - useTabs: false, - // vue 文件中是否缩进 - - diff --git a/vue3/package.json b/vue3/package.json deleted file mode 100644 index fccfeda3..00000000 --- a/vue3/package.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "name": "qihang-oms", - "version": "2.8.2", - "private": true, - "type": "module", - "scripts": { - "preinstall": "npx only-allow pnpm", - "dev": "vite serve --mode development", - "build:prod": "vite build --mode production && vue-tsc --noEmit", - "prepare": "husky install", - "lint:eslint": "eslint --fix --ext .ts,.js,.vue ./src ", - "lint:prettier": "prettier --write \"**/*.{js,cjs,ts,json,tsx,css,less,scss,vue,html,md}\"", - "lint:stylelint": "stylelint \"**/*.{css,scss,vue}\" --fix", - "lint:lint-staged": "lint-staged", - "commit": "git-cz" - }, - "config": { - "commitizen": { - "path": "node_modules/cz-git" - } - }, - "lint-staged": { - "*.{js,ts}": [ - "eslint --fix", - "prettier --write" - ], - "*.{cjs,json}": [ - "prettier --write" - ], - "*.{vue,html}": [ - "eslint --fix", - "prettier --write", - "stylelint --fix" - ], - "*.{scss,css}": [ - "stylelint --fix", - "prettier --write" - ], - "*.md": [ - "prettier --write" - ] - }, - "dependencies": { - "@element-plus/icons-vue": "^2.3.1", - "@vitejs/plugin-vue": "^4.6.2", - "@vueuse/core": "^10.7.1", - "@wangeditor/editor": "^5.1.23", - "@wangeditor/editor-for-vue": "5.1.10", - "axios": "^1.6.5", - "echarts": "^5.4.3", - "element-plus": "^2.5.0", - "lodash-es": "^4.17.21", - "net": "^1.0.2", - "nprogress": "^0.2.0", - "path-browserify": "^1.0.1", - "path-to-regexp": "^6.2.1", - "pinia": "^2.1.7", - "screenfull": "^6.0.2", - "sockjs-client": "1.6.1", - "sortablejs": "^1.15.1", - "stompjs": "^2.3.3", - "terser": "^5.26.0", - "vue": "^3.4.8", - "vue-i18n": "9.2.2", - "vue-router": "^4.2.5", - "xlsx": "^0.18.5" - }, - "devDependencies": { - "@commitlint/cli": "^17.8.1", - "@commitlint/config-conventional": "^17.8.1", - "@iconify-json/ep": "^1.1.14", - "@types/lodash": "^4.14.202", - "@types/nprogress": "^0.2.3", - "@types/path-browserify": "^1.0.2", - "@types/sockjs-client": "^1.5.4", - "@types/sortablejs": "^1.15.7", - "@types/stompjs": "^2.3.9", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "@vitejs/plugin-vue-jsx": "^3.1.0", - "autoprefixer": "^10.4.16", - "commitizen": "^4.3.0", - "cz-git": "^1.8.0", - "eslint": "^8.56.0", - "eslint-config-prettier": "^8.10.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-vue": "^9.20.0", - "fast-glob": "^3.3.2", - "husky": "^8.0.3", - "lint-staged": "^13.3.0", - "postcss": "^8.4.33", - "postcss-html": "^1.5.0", - "postcss-scss": "^4.0.9", - "prettier": "^2.8.8", - "sass": "^1.69.7", - "stylelint": "^15.11.0", - "stylelint-config-html": "^1.1.0", - "stylelint-config-recess-order": "^4.4.0", - "stylelint-config-recommended-scss": "^13.1.0", - "stylelint-config-recommended-vue": "^1.5.0", - "stylelint-config-standard": "^34.0.0", - "stylelint-config-standard-scss": "^11.1.0", - "typescript": "^5.3.3", - "unocss": "^0.58.3", - "unplugin-auto-import": "^0.15.3", - "unplugin-icons": "^0.16.6", - "unplugin-vue-components": "^0.24.1", - "vite": "^5.0.11", - "vite-plugin-mock-dev-server": "^1.4.5", - "vite-plugin-svg-icons": "^2.0.1", - "vue-tsc": "^1.8.27" - }, - "repository": "https://gitee.com/qiliping/qihang.ecom.oms.git", - "author": "启航", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } -} diff --git a/vue3/public/favicon.ico b/vue3/public/favicon.ico deleted file mode 100644 index df36fcfb..00000000 Binary files a/vue3/public/favicon.ico and /dev/null differ diff --git a/vue3/src/App.vue b/vue3/src/App.vue deleted file mode 100644 index dd2ac672..00000000 --- a/vue3/src/App.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/vue3/src/api/article.ts b/vue3/src/api/article.ts deleted file mode 100644 index 2547a4bc..00000000 --- a/vue3/src/api/article.ts +++ /dev/null @@ -1,88 +0,0 @@ -import request from "@/utils/request"; - -export interface ArticleQuery { - page?: number; - limit?: number; - sort?: string; - title?: string; - type?: string; - importance?: number; -} - -export interface ArticleDetail { - id: number; - timestamp: number; - title: string; - type: string; - status: string; - importance: number; - content?: string; - remark?: string; -} - -export interface ArticleCreate { - type: string; - timestamp: Date; - title: string; - status?: string; - importance?: number; - remark?: string; -} - -export interface ArticleUpdate { - id: number; - type?: string; - timestamp?: Date; - title?: string; - status?: string; - importance?: number; - remark?: string; -} - -export function fetchList(query: ArticleQuery) { - return request({ - url: "/api/v1/article/list", - method: "get", - params: query, - }); -} - -export function fetchArticle(id: number) { - return request({ - url: "/api/v1/article/detail", - method: "get", - params: { id }, - }); -} - -export function fetchPv(id: number) { - return request({ - url: "/api/v1/article/pv", - method: "get", - params: { id }, - }); -} - -export function createArticle(data: ArticleCreate) { - return request({ - url: "/api/v1/article/create", - method: "post", - data, - }); -} - -export function updateArticle(data: ArticleUpdate) { - return request({ - url: "/api/v1/article/update", - method: "post", - data, - }); -} - -export function deleteArticle(id: number) { - return request({ - url: "/api/v1/article/delete", - method: "post", - data: { id }, - }); -} diff --git a/vue3/src/api/auth/index.ts b/vue3/src/api/auth/index.ts deleted file mode 100644 index 1f93b6ab..00000000 --- a/vue3/src/api/auth/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from "@/utils/request"; -import { AxiosPromise } from "axios"; -import { CaptchaResult, LoginData, LoginResult } from "./types"; - -/** - * 登录API - * - * @param data {LoginData} - * @returns - */ -export function loginApi(data: LoginData): AxiosPromise { - const formData = new FormData(); - formData.append("username", data.username); - formData.append("password", data.password); - formData.append("captchaKey", data.captchaKey || ""); - formData.append("captchaCode", data.captchaCode || ""); - return request({ - url: "/api/sys-api/login", - method: "post", - data: formData, - headers: { - // "Content-Type": "multipart/form-data", - }, - }); -} - -/** - * 注销API - */ -export function logoutApi() { - return request({ - url: "/api/sys-api/logout", - method: "delete", - }); -} - -/** - * 获取验证码 - */ -export function getCaptchaApi(): AxiosPromise { - return request({ - url: "/api/v1/auth/captcha", - method: "get", - }); -} diff --git a/vue3/src/api/auth/types.ts b/vue3/src/api/auth/types.ts deleted file mode 100644 index 0da661ed..00000000 --- a/vue3/src/api/auth/types.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * 登录请求参数 - */ -export interface LoginData { - /** - * 用户名 - */ - username: string; - /** - * 密码 - */ - password: string; - - /** - * 验证码缓存key - */ - captchaKey?: string; - - /** - * 验证码 - */ - captchaCode?: string; -} - -/** - * 登录响应 - */ -export interface LoginResult { - /** - * 访问token - */ - accessToken?: string; - /** - * 过期时间(单位:毫秒) - */ - expires?: number; - /** - * 刷新token - */ - refreshToken?: string; - /** - * token 类型 - */ - tokenType?: string; -} - -/** - * 验证码响应 - */ -export interface CaptchaResult { - /** - * 验证码缓存key - */ - captchaKey: string; - /** - * 验证码图片Base64字符串 - */ - captchaBase64: string; -} diff --git a/vue3/src/api/dept/index.ts b/vue3/src/api/dept/index.ts deleted file mode 100644 index f5e0466d..00000000 --- a/vue3/src/api/dept/index.ts +++ /dev/null @@ -1,77 +0,0 @@ -import request from "@/utils/request"; -import { AxiosPromise } from "axios"; -import { DeptForm, DeptQuery, DeptVO } from "./types"; - -/** - * 部门树形表格 - * - * @param queryParams - */ -export function listDepts(queryParams?: DeptQuery): AxiosPromise { - return request({ - url: "/api/v1/dept", - method: "get", - params: queryParams, - }); -} - -/** - * 部门下拉列表 - */ -export function getDeptOptions(): AxiosPromise { - return request({ - url: "/api/v1/dept/options", - method: "get", - }); -} - -/** - * 获取部门详情 - * - * @param id - */ -export function getDeptForm(id: number): AxiosPromise { - return request({ - url: "/api/v1/dept/" + id + "/form", - method: "get", - }); -} - -/** - * 新增部门 - * - * @param data - */ -export function addDept(data: DeptForm) { - return request({ - url: "/api/v1/dept", - method: "post", - data: data, - }); -} - -/** - * 修改部门 - * - * @param id - * @param data - */ -export function updateDept(id: number, data: DeptForm) { - return request({ - url: "/api/v1/dept/" + id, - method: "put", - data: data, - }); -} - -/** - * 删除部门 - * - * @param ids - */ -export function deleteDept(ids: string) { - return request({ - url: "/api/v1/dept/" + ids, - method: "delete", - }); -} diff --git a/vue3/src/api/dept/types.ts b/vue3/src/api/dept/types.ts deleted file mode 100644 index 408c39c4..00000000 --- a/vue3/src/api/dept/types.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * 部门查询参数 - */ -export interface DeptQuery { - keywords?: string; - status?: number; -} - -/** - * 部门类型 - */ -export interface DeptVO { - /** - * 子部门 - */ - children?: DeptVO[]; - /** - * 创建时间 - */ - createTime?: Date; - /** - * 部门ID - */ - id?: number; - /** - * 部门名称 - */ - name?: string; - /** - * 父部门ID - */ - parentId?: number; - /** - * 排序 - */ - sort?: number; - /** - * 状态(1:启用;0:禁用) - */ - status?: number; - /** - * 修改时间 - */ - updateTime?: Date; -} - -/** - * 部门表单类型 - */ -export interface DeptForm { - /** - * 部门ID(新增不填) - */ - id?: number; - /** - * 部门名称 - */ - name?: string; - /** - * 父部门ID - */ - parentId: number; - /** - * 排序 - */ - sort?: number; - /** - * 状态(1:启用;0:禁用) - */ - status?: number; -} diff --git a/vue3/src/api/dict/index.ts b/vue3/src/api/dict/index.ts deleted file mode 100644 index 635297eb..00000000 --- a/vue3/src/api/dict/index.ts +++ /dev/null @@ -1,150 +0,0 @@ -import request from "@/utils/request"; -import { AxiosPromise } from "axios"; -import { - DictTypeQuery, - DictTypePageResult, - DictTypeForm, - DictQuery, - DictForm, - DictPageResult, -} from "./types"; - -/** - * 字典类型分页列表 - * - * @param queryParams - */ -export function getDictTypePage( - queryParams: DictTypeQuery -): AxiosPromise { - return request({ - url: "/api/v1/dict/types/page", - method: "get", - params: queryParams, - }); -} - -/** - * 字典类型表单数据 - * - * @param id - */ -export function getDictTypeForm(id: number): AxiosPromise { - return request({ - url: "/api/v1/dict/types/" + id + "/form", - method: "get", - }); -} - -/** - * 新增字典类型 - * - * @param data - */ -export function addDictType(data: DictTypeForm) { - return request({ - url: "/api/v1/dict/types", - method: "post", - data: data, - }); -} - -/** - * 修改字典类型 - * - * @param id - * @param data - */ -export function updateDictType(id: number, data: DictTypeForm) { - return request({ - url: "/api/v1/dict/types/" + id, - method: "put", - data: data, - }); -} - -/** - * 删除字典类型 - */ -export function deleteDictTypes(ids: string) { - return request({ - url: "/api/v1/dict/types/" + ids, - method: "delete", - }); -} - -/** - * 获取字典类型的数据项 - * - * @param typeCode 字典类型编码 - */ -export function getDictOptions(typeCode: string): AxiosPromise { - return request({ - url: "/api/v1/dict/" + typeCode + "/options", - method: "get", - }); -} - -/** - * 字典分页列表 - */ -export function getDictPage( - queryParams: DictQuery -): AxiosPromise { - return request({ - url: "/api/v1/dict/page", - method: "get", - params: queryParams, - }); -} - -/** - * 获取字典表单数据 - * - * @param id - */ -export function getDictFormData(id: number): AxiosPromise { - return request({ - url: "/api/v1/dict/" + id + "/form", - method: "get", - }); -} - -/** - * 新增字典 - * - * @param data - */ -export function addDict(data: DictForm) { - return request({ - url: "/api/v1/dict", - method: "post", - data: data, - }); -} - -/** - * 修改字典项 - * - * @param id - * @param data - */ -export function updateDict(id: number, data: DictForm) { - return request({ - url: "/api/v1/dict/" + id, - method: "put", - data: data, - }); -} - -/** - * 删除字典 - * - * @param ids 字典项ID,多个以英文逗号(,)分割 - */ -export function deleteDict(ids: string) { - return request({ - url: "/api/v1/dict/" + ids, - method: "delete", - }); -} diff --git a/vue3/src/api/dict/types.ts b/vue3/src/api/dict/types.ts deleted file mode 100644 index 315da6d7..00000000 --- a/vue3/src/api/dict/types.ts +++ /dev/null @@ -1,142 +0,0 @@ -/** - * 字典类型查询参数 - */ -export interface DictTypeQuery extends PageQuery { - /** - * 关键字(字典类型名称/编码) - */ - keywords?: string; -} - -/** - * 字典类型分页对象 - */ -export interface DictTypePageVO { - /** - * 字典类型ID - */ - id: number; - /** - * 类型编码 - */ - code: string; - /** - * 类型名称 - */ - name: string; - /** - * 状态(1:启用;0:禁用) - */ - status?: number; - /** - * 备注 - */ - remark?: string; -} - -/** - * 字典分页项类型声明 - */ -export type DictTypePageResult = PageResult; - -/** - * 字典表单类型声明 - */ -export interface DictTypeForm { - /** - * 字典类型ID - */ - id?: number; - /** - * 类型名称 - */ - name?: string; - /** - * 类型编码 - */ - code?: string; - /** - * 类型状态:1:启用;0:禁用 - */ - status: number; - /** - * 备注 - */ - remark?: string; -} - -/** - * 字典查询参数 - */ -export interface DictQuery extends PageQuery { - /** - * 字典项名称 - */ - name?: string; - /** - * 字典类型编码 - */ - typeCode?: string; -} - -/** - * 字典分页对象 - */ -export interface DictPageVO { - /** - * 字典ID - */ - id?: number; - /** - * 字典名称 - */ - name?: string; - /** - * 状态(1:启用;0:禁用) - */ - status?: number; - /** - * 字典值 - */ - value?: string; -} - -/** - * 字典分页 - */ -export type DictPageResult = PageResult; - -/** - * 字典表单 - */ -export interface DictForm { - /** - * 字典ID - */ - id?: number; - /** - * 字典名称 - */ - name?: string; - /** - * 排序 - */ - sort?: number; - /** - * 状态(1:启用;0:禁用) - */ - status?: number; - /** - * 类型编码 - */ - typeCode?: string; - /** - * 值 - */ - value?: string; - - /** - * 备注 - */ - remark?: string; -} diff --git a/vue3/src/api/file/index.ts b/vue3/src/api/file/index.ts deleted file mode 100644 index adcc30b9..00000000 --- a/vue3/src/api/file/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import request from "@/utils/request"; -import { AxiosPromise } from "axios"; -import { FileInfo } from "./types"; - -/** - * 上传文件 - * - * @param file - */ -export function uploadFileApi(file: File): AxiosPromise { - const formData = new FormData(); - formData.append("file", file); - return request({ - url: "/api/v1/files", - method: "post", - data: formData, - headers: { - "Content-Type": "multipart/form-data", - }, - }); -} - -/** - * 删除文件 - * - * @param filePath 文件完整路径 - */ -export function deleteFileApi(filePath?: string) { - return request({ - url: "/api/v1/files", - method: "delete", - params: { filePath: filePath }, - }); -} diff --git a/vue3/src/api/file/types.ts b/vue3/src/api/file/types.ts deleted file mode 100644 index 22b2be55..00000000 --- a/vue3/src/api/file/types.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * 文件API类型声明 - */ -export interface FileInfo { - name: string; - url: string; -} diff --git a/vue3/src/api/menu/index.ts b/vue3/src/api/menu/index.ts deleted file mode 100644 index 6cc4e0d2..00000000 --- a/vue3/src/api/menu/index.ts +++ /dev/null @@ -1,87 +0,0 @@ -import request from "@/utils/request"; -import { AxiosPromise } from "axios"; -import { MenuQuery, MenuVO, MenuForm } from "./types"; - -/** - * 获取路由列表 - */ -export function listRoutes() { - return request({ - url: "/api/sys-api/menus/routes", - method: "get", - }); -} - -/** - * 获取菜单树形列表 - * - * @param queryParams - */ -export function listMenus(queryParams: MenuQuery): AxiosPromise { - return request({ - url: "/api/v1/menus", - method: "get", - params: queryParams, - }); -} - -/** - * 获取菜单下拉树形列表 - */ -export function getMenuOptions(): AxiosPromise { - return request({ - url: "/api/v1/menus/options", - method: "get", - }); -} - -/** - * 获取菜单表单数据 - * - * @param id - */ -export function getMenuForm(id: number): AxiosPromise { - return request({ - url: "/api/v1/menus/" + id + "/form", - method: "get", - }); -} - -/** - * 添加菜单 - * - * @param data - */ -export function addMenu(data: MenuForm) { - return request({ - url: "/api/v1/menus", - method: "post", - data: data, - }); -} - -/** - * 修改菜单 - * - * @param id - * @param data - */ -export function updateMenu(id: string, data: MenuForm) { - return request({ - url: "/api/v1/menus/" + id, - method: "put", - data: data, - }); -} - -/** - * 删除菜单 - * - * @param id 菜单ID - */ -export function deleteMenu(id: number) { - return request({ - url: "/api/v1/menus/" + id, - method: "delete", - }); -} diff --git a/vue3/src/api/menu/types.ts b/vue3/src/api/menu/types.ts deleted file mode 100644 index 38101e8a..00000000 --- a/vue3/src/api/menu/types.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { MenuTypeEnum } from "@/enums/MenuTypeEnum"; - -/** - * 菜单查询参数类型 - */ -export interface MenuQuery { - keywords?: string; -} - -/** - * 菜单视图对象类型 - */ -export interface MenuVO { - /** - * 子菜单 - */ - children?: MenuVO[]; - /** - * 组件路径 - */ - component?: string; - /** - * ICON - */ - icon?: string; - /** - * 菜单ID - */ - id?: number; - /** - * 菜单名称 - */ - name?: string; - /** - * 父菜单ID - */ - parentId?: number; - /** - * 按钮权限标识 - */ - perm?: string; - /** - * 跳转路径 - */ - redirect?: string; - /** - * 路由名称 - */ - routeName?: string; - /** - * 路由相对路径 - */ - routePath?: string; - /** - * 菜单排序(数字越小排名越靠前) - */ - sort?: number; - /** - * 菜单类型 - */ - type?: MenuTypeEnum; - /** - * 菜单是否可见(1:显示;0:隐藏) - */ - visible?: number; -} - -/** - * 菜单表单对象类型 - */ -export interface MenuForm { - /** - * 菜单ID - */ - id?: string; - /** - * 父菜单ID - */ - parentId?: number; - /** - * 菜单名称 - */ - name?: string; - /** - * 菜单是否可见(1:是;0:否;) - */ - visible: number; - icon?: string; - /** - * 排序 - */ - sort: number; - /** - * 组件路径 - */ - component?: string; - /** - * 路由路径 - */ - path?: string; - /** - * 跳转路由路径 - */ - redirect?: string; - - /** - * 菜单类型 - */ - type: MenuTypeEnum; - - /** - * 权限标识 - */ - perm?: string; - /** - * 【菜单】是否开启页面缓存 - */ - keepAlive?: number; - - /** - * 【目录】只有一个子路由是否始终显示 - */ - alwaysShow?: number; -} diff --git a/vue3/src/api/role/index.ts b/vue3/src/api/role/index.ts deleted file mode 100644 index fdbc65cd..00000000 --- a/vue3/src/api/role/index.ts +++ /dev/null @@ -1,112 +0,0 @@ -import request from "@/utils/request"; -import { AxiosPromise } from "axios"; -import { RoleQuery, RolePageResult, RoleForm } from "./types"; - -/** - * 获取角色分页数据 - * - * @param queryParams - */ -export function getRolePage( - queryParams?: RoleQuery -): AxiosPromise { - return request({ - url: "/api/v1/roles/page", - method: "get", - params: queryParams, - }); -} - -/** - * 获取角色下拉数据 - * - * @param queryParams - */ -export function getRoleOptions( - queryParams?: RoleQuery -): AxiosPromise { - return request({ - url: "/api/v1/roles/options", - method: "get", - params: queryParams, - }); -} - -/** - * 获取角色的菜单ID集合 - * - * @param queryParams - */ -export function getRoleMenuIds(roleId: number): AxiosPromise { - return request({ - url: "/api/v1/roles/" + roleId + "/menuIds", - method: "get", - }); -} - -/** - * 分配菜单权限给角色 - * - * @param queryParams - */ -export function updateRoleMenus( - roleId: number, - data: number[] -): AxiosPromise { - return request({ - url: "/api/v1/roles/" + roleId + "/menus", - method: "put", - data: data, - }); -} - -/** - * 获取角色详情 - * - * @param id - */ -export function getRoleForm(id: number): AxiosPromise { - return request({ - url: "/api/v1/roles/" + id + "/form", - method: "get", - }); -} - -/** - * 添加角色 - * - * @param data - */ -export function addRole(data: RoleForm) { - return request({ - url: "/api/v1/roles", - method: "post", - data: data, - }); -} - -/** - * 更新角色 - * - * @param id - * @param data - */ -export function updateRole(id: number, data: RoleForm) { - return request({ - url: "/api/v1/roles/" + id, - method: "put", - data: data, - }); -} - -/** - * 批量删除角色,多个以英文逗号(,)分割 - * - * @param ids - */ -export function deleteRoles(ids: string) { - return request({ - url: "/api/v1/roles/" + ids, - method: "delete", - }); -} diff --git a/vue3/src/api/role/types.ts b/vue3/src/api/role/types.ts deleted file mode 100644 index 2d259c7f..00000000 --- a/vue3/src/api/role/types.ts +++ /dev/null @@ -1,78 +0,0 @@ -/** - * 角色查询参数 - */ -export interface RoleQuery extends PageQuery { - keywords?: string; -} - -/** - * 角色分页对象 - */ -export interface RolePageVO { - /** - * 角色编码 - */ - code?: string; - - /** - * 角色ID - */ - id?: number; - /** - * 角色名称 - */ - name?: string; - /** - * 排序 - */ - sort?: number; - /** - * 角色状态 - */ - status?: number; - /** - * 创建时间 - */ - createTime?: Date; - /** - * 修改时间 - */ - updateTime?: Date; -} - -/** - * 角色分页 - */ -export type RolePageResult = PageResult; - -/** - * 角色表单对象 - */ -export interface RoleForm { - /** - * 角色ID - */ - id?: number; - - /** - * 角色编码 - */ - code: string; - /** - * 数据权限 - */ - dataScope?: number; - - /** - * 角色名称 - */ - name: string; - /** - * 排序 - */ - sort?: number; - /** - * 角色状态(1-正常;0-停用) - */ - status?: number; -} diff --git a/vue3/src/api/taoOrder/index.ts b/vue3/src/api/taoOrder/index.ts deleted file mode 100644 index 3258b2c6..00000000 --- a/vue3/src/api/taoOrder/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import request from "@/utils/request"; -import { AxiosPromise } from "axios"; -import { OrderQuery, OrderVo, ResultVo } from "./types"; -export function listOrder(queryParams: OrderQuery): AxiosPromise { - return request({ - url: "/api/tao-api/goods/list", - method: "get", - params: queryParams, - }); -} diff --git a/vue3/src/api/taoOrder/types.ts b/vue3/src/api/taoOrder/types.ts deleted file mode 100644 index 2f1b101d..00000000 --- a/vue3/src/api/taoOrder/types.ts +++ /dev/null @@ -1,16 +0,0 @@ -export interface OrderQuery { - pageIndex: number; - pageSize: number; - orderNum?: string; -} - -export interface ResultVo { - code: number; - msg: string; - records?: OrderVo[]; - total?: number; -} - -export interface OrderVo { - id: number; -} diff --git a/vue3/src/api/user/index.ts b/vue3/src/api/user/index.ts deleted file mode 100644 index 681f8da1..00000000 --- a/vue3/src/api/user/index.ts +++ /dev/null @@ -1,140 +0,0 @@ -import request from "@/utils/request"; -import { AxiosPromise } from "axios"; -import { UserForm, UserInfo, UserPageVO, UserQuery } from "./types"; - -/** - * 登录成功后获取用户信息(昵称、头像、权限集合和角色集合) - */ -export function getUserInfoApi(): AxiosPromise { - return request({ - url: "/api/sys-api/users/me", - method: "get", - }); -} - -/** - * 获取用户分页列表 - * - * @param queryParams - */ -export function getUserPage( - queryParams: UserQuery -): AxiosPromise> { - return request({ - url: "/api/v1/users/page", - method: "get", - params: queryParams, - }); -} - -/** - * 获取用户表单详情 - * - * @param userId - */ -export function getUserForm(userId: number): AxiosPromise { - return request({ - url: "/api/v1/users/" + userId + "/form", - method: "get", - }); -} - -/** - * 添加用户 - * - * @param data - */ -export function addUser(data: any) { - return request({ - url: "/api/v1/users", - method: "post", - data: data, - }); -} - -/** - * 修改用户 - * - * @param id - * @param data - */ -export function updateUser(id: number, data: UserForm) { - return request({ - url: "/api/v1/users/" + id, - method: "put", - data: data, - }); -} - -/** - * 修改用户密码 - * - * @param id - * @param password - */ -export function updateUserPassword(id: number, password: string) { - return request({ - url: "/api/v1/users/" + id + "/password", - method: "patch", - params: { password: password }, - }); -} - -/** - * 删除用户 - * - * @param ids - */ -export function deleteUsers(ids: string) { - return request({ - url: "/api/v1/users/" + ids, - method: "delete", - }); -} - -/** - * 下载用户导入模板 - * - * @returns - */ -export function downloadTemplateApi() { - return request({ - url: "/api/v1/users/template", - method: "get", - responseType: "arraybuffer", - }); -} - -/** - * 导出用户 - * - * @param queryParams - * @returns - */ -export function exportUser(queryParams: UserQuery) { - return request({ - url: "/api/v1/users/_export", - method: "get", - params: queryParams, - responseType: "arraybuffer", - }); -} - -/** - * 导入用户 - * - * @param file - */ -export function importUser(deptId: number, file: File) { - const formData = new FormData(); - formData.append("file", file); - return request({ - url: "/api/v1/users/_import", - method: "post", - params: { deptId: deptId }, - data: formData, - headers: { - "Content-Type": "multipart/form-data", - }, - }); -} diff --git a/vue3/src/api/user/types.ts b/vue3/src/api/user/types.ts deleted file mode 100644 index c0060f27..00000000 --- a/vue3/src/api/user/types.ts +++ /dev/null @@ -1,115 +0,0 @@ -/** - * 登录用户信息 - */ -export interface UserInfo { - userId?: number; - username?: string; - nickname?: string; - avatar?: string; - roles: string[]; - perms: string[]; -} - -/** - * 用户查询对象类型 - */ -export interface UserQuery extends PageQuery { - keywords?: string; - status?: number; - deptId?: number; - startTime?: string; - endTime?: string; -} - -/** - * 用户分页对象 - */ -export interface UserPageVO { - /** - * 用户头像地址 - */ - avatar?: string; - /** - * 创建时间 - */ - createTime?: Date; - /** - * 部门名称 - */ - deptName?: string; - /** - * 用户邮箱 - */ - email?: string; - /** - * 性别 - */ - genderLabel?: string; - /** - * 用户ID - */ - id?: number; - /** - * 手机号 - */ - mobile?: string; - /** - * 用户昵称 - */ - nickname?: string; - /** - * 角色名称,多个使用英文逗号(,)分割 - */ - roleNames?: string; - /** - * 用户状态(1:启用;0:禁用) - */ - status?: number; - /** - * 用户名 - */ - username?: string; -} - -/** - * 用户表单类型 - */ -export interface UserForm { - /** - * 用户头像 - */ - avatar?: string; - /** - * 部门ID - */ - deptId?: number; - /** - * 邮箱 - */ - email?: string; - /** - * 性别 - */ - gender?: number; - /** - * 用户ID - */ - id?: number; - mobile?: string; - /** - * 昵称 - */ - nickname?: string; - /** - * 角色ID集合 - */ - roleIds?: number[]; - /** - * 用户状态(1:正常;0:禁用) - */ - status?: number; - /** - * 用户名 - */ - username?: string; -} diff --git a/vue3/src/assets/icons/api.svg b/vue3/src/assets/icons/api.svg deleted file mode 100644 index 2753743d..00000000 --- a/vue3/src/assets/icons/api.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/captcha.svg b/vue3/src/assets/icons/captcha.svg deleted file mode 100644 index 39bf4783..00000000 --- a/vue3/src/assets/icons/captcha.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/vue3/src/assets/icons/cascader.svg b/vue3/src/assets/icons/cascader.svg deleted file mode 100644 index a1a27921..00000000 --- a/vue3/src/assets/icons/cascader.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/client.svg b/vue3/src/assets/icons/client.svg deleted file mode 100644 index ad4bc15a..00000000 --- a/vue3/src/assets/icons/client.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/close.svg b/vue3/src/assets/icons/close.svg deleted file mode 100644 index 5b5057f2..00000000 --- a/vue3/src/assets/icons/close.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/close_all.svg b/vue3/src/assets/icons/close_all.svg deleted file mode 100644 index aa13cd75..00000000 --- a/vue3/src/assets/icons/close_all.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/close_left.svg b/vue3/src/assets/icons/close_left.svg deleted file mode 100644 index e5708ea5..00000000 --- a/vue3/src/assets/icons/close_left.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/close_other.svg b/vue3/src/assets/icons/close_other.svg deleted file mode 100644 index 212e6c28..00000000 --- a/vue3/src/assets/icons/close_other.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/close_right.svg b/vue3/src/assets/icons/close_right.svg deleted file mode 100644 index 14d3cf39..00000000 --- a/vue3/src/assets/icons/close_right.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/dict.svg b/vue3/src/assets/icons/dict.svg deleted file mode 100644 index 22a82781..00000000 --- a/vue3/src/assets/icons/dict.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/vue3/src/assets/icons/document.svg b/vue3/src/assets/icons/document.svg deleted file mode 100644 index 918ae33d..00000000 --- a/vue3/src/assets/icons/document.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/download.svg b/vue3/src/assets/icons/download.svg deleted file mode 100644 index 61ec1f9f..00000000 --- a/vue3/src/assets/icons/download.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/drag.svg b/vue3/src/assets/icons/drag.svg deleted file mode 100644 index 4185d3ce..00000000 --- a/vue3/src/assets/icons/drag.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/edit.svg b/vue3/src/assets/icons/edit.svg deleted file mode 100644 index d26101f2..00000000 --- a/vue3/src/assets/icons/edit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/exit-fullscreen.svg b/vue3/src/assets/icons/exit-fullscreen.svg deleted file mode 100644 index 485c128b..00000000 --- a/vue3/src/assets/icons/exit-fullscreen.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/eye-open.svg b/vue3/src/assets/icons/eye-open.svg deleted file mode 100644 index 88dcc98e..00000000 --- a/vue3/src/assets/icons/eye-open.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/eye.svg b/vue3/src/assets/icons/eye.svg deleted file mode 100644 index 16ed2d87..00000000 --- a/vue3/src/assets/icons/eye.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/fullscreen.svg b/vue3/src/assets/icons/fullscreen.svg deleted file mode 100644 index 0e86b6fa..00000000 --- a/vue3/src/assets/icons/fullscreen.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/github.svg b/vue3/src/assets/icons/github.svg deleted file mode 100644 index db0a0d43..00000000 --- a/vue3/src/assets/icons/github.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/homepage.svg b/vue3/src/assets/icons/homepage.svg deleted file mode 100644 index 48f4e249..00000000 --- a/vue3/src/assets/icons/homepage.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/icon.svg b/vue3/src/assets/icons/icon.svg deleted file mode 100644 index 82be8eee..00000000 --- a/vue3/src/assets/icons/icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/ip.svg b/vue3/src/assets/icons/ip.svg deleted file mode 100644 index 7422976f..00000000 --- a/vue3/src/assets/icons/ip.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/language.svg b/vue3/src/assets/icons/language.svg deleted file mode 100644 index d2dd693d..00000000 --- a/vue3/src/assets/icons/language.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/link.svg b/vue3/src/assets/icons/link.svg deleted file mode 100644 index 9748d530..00000000 --- a/vue3/src/assets/icons/link.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/menu.svg b/vue3/src/assets/icons/menu.svg deleted file mode 100644 index 92c364c2..00000000 --- a/vue3/src/assets/icons/menu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/message.svg b/vue3/src/assets/icons/message.svg deleted file mode 100644 index 993522a0..00000000 --- a/vue3/src/assets/icons/message.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/money.svg b/vue3/src/assets/icons/money.svg deleted file mode 100644 index 6547fe9a..00000000 --- a/vue3/src/assets/icons/money.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/monitor.svg b/vue3/src/assets/icons/monitor.svg deleted file mode 100644 index bc308cb0..00000000 --- a/vue3/src/assets/icons/monitor.svg +++ /dev/null @@ -1,2 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/order.svg b/vue3/src/assets/icons/order.svg deleted file mode 100644 index 15c9fb12..00000000 --- a/vue3/src/assets/icons/order.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/password.svg b/vue3/src/assets/icons/password.svg deleted file mode 100644 index 6c64defe..00000000 --- a/vue3/src/assets/icons/password.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/peoples.svg b/vue3/src/assets/icons/peoples.svg deleted file mode 100644 index 383b82d2..00000000 --- a/vue3/src/assets/icons/peoples.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/project.svg b/vue3/src/assets/icons/project.svg deleted file mode 100644 index 19d016df..00000000 --- a/vue3/src/assets/icons/project.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/publish.svg b/vue3/src/assets/icons/publish.svg deleted file mode 100644 index e9b489c3..00000000 --- a/vue3/src/assets/icons/publish.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/redis.svg b/vue3/src/assets/icons/redis.svg deleted file mode 100644 index 2f1d62df..00000000 --- a/vue3/src/assets/icons/redis.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/refresh.svg b/vue3/src/assets/icons/refresh.svg deleted file mode 100644 index 4661eeb7..00000000 --- a/vue3/src/assets/icons/refresh.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/role.svg b/vue3/src/assets/icons/role.svg deleted file mode 100644 index c484b137..00000000 --- a/vue3/src/assets/icons/role.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/security.svg b/vue3/src/assets/icons/security.svg deleted file mode 100644 index bcd9d2e6..00000000 --- a/vue3/src/assets/icons/security.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/shrink.svg b/vue3/src/assets/icons/shrink.svg deleted file mode 100644 index 075a559d..00000000 --- a/vue3/src/assets/icons/shrink.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/size.svg b/vue3/src/assets/icons/size.svg deleted file mode 100644 index ddb25b8d..00000000 --- a/vue3/src/assets/icons/size.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/system.svg b/vue3/src/assets/icons/system.svg deleted file mode 100644 index e3b7e2d4..00000000 --- a/vue3/src/assets/icons/system.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/table.svg b/vue3/src/assets/icons/table.svg deleted file mode 100644 index 99c09369..00000000 --- a/vue3/src/assets/icons/table.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/todolist.svg b/vue3/src/assets/icons/todolist.svg deleted file mode 100644 index 39248390..00000000 --- a/vue3/src/assets/icons/todolist.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/icons/tree.svg b/vue3/src/assets/icons/tree.svg deleted file mode 100644 index d40a414d..00000000 --- a/vue3/src/assets/icons/tree.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/user.svg b/vue3/src/assets/icons/user.svg deleted file mode 100644 index e4c7b389..00000000 --- a/vue3/src/assets/icons/user.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vue3/src/assets/icons/visit.svg b/vue3/src/assets/icons/visit.svg deleted file mode 100644 index 449b8f88..00000000 --- a/vue3/src/assets/icons/visit.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vue3/src/assets/images/401.gif b/vue3/src/assets/images/401.gif deleted file mode 100644 index cd6e0d94..00000000 Binary files a/vue3/src/assets/images/401.gif and /dev/null differ diff --git a/vue3/src/assets/images/404.png b/vue3/src/assets/images/404.png deleted file mode 100644 index 3d8e2305..00000000 Binary files a/vue3/src/assets/images/404.png and /dev/null differ diff --git a/vue3/src/assets/images/404_cloud.png b/vue3/src/assets/images/404_cloud.png deleted file mode 100644 index c6281d09..00000000 Binary files a/vue3/src/assets/images/404_cloud.png and /dev/null differ diff --git a/vue3/src/assets/images/login-bg-dark.jpg b/vue3/src/assets/images/login-bg-dark.jpg deleted file mode 100644 index 988011d3..00000000 Binary files a/vue3/src/assets/images/login-bg-dark.jpg and /dev/null differ diff --git a/vue3/src/assets/images/login-bg.jpg b/vue3/src/assets/images/login-bg.jpg deleted file mode 100644 index f6a92712..00000000 Binary files a/vue3/src/assets/images/login-bg.jpg and /dev/null differ diff --git a/vue3/src/assets/logo.png b/vue3/src/assets/logo.png deleted file mode 100644 index f3d2503f..00000000 Binary files a/vue3/src/assets/logo.png and /dev/null differ diff --git a/vue3/src/components/Breadcrumb/index.vue b/vue3/src/components/Breadcrumb/index.vue deleted file mode 100644 index 2bf19c51..00000000 --- a/vue3/src/components/Breadcrumb/index.vue +++ /dev/null @@ -1,103 +0,0 @@ - - - - - diff --git a/vue3/src/components/Dictionary/index.vue b/vue3/src/components/Dictionary/index.vue deleted file mode 100644 index b2e01d0f..00000000 --- a/vue3/src/components/Dictionary/index.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - diff --git a/vue3/src/components/GithubCorner/index.vue b/vue3/src/components/GithubCorner/index.vue deleted file mode 100644 index 4b0bba98..00000000 --- a/vue3/src/components/GithubCorner/index.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - diff --git a/vue3/src/components/Hamburger/index.vue b/vue3/src/components/Hamburger/index.vue deleted file mode 100644 index a9049d70..00000000 --- a/vue3/src/components/Hamburger/index.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - diff --git a/vue3/src/components/IconSelect/index.vue b/vue3/src/components/IconSelect/index.vue deleted file mode 100644 index 8b26e7c5..00000000 --- a/vue3/src/components/IconSelect/index.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - - - diff --git a/vue3/src/components/LangSelect/index.vue b/vue3/src/components/LangSelect/index.vue deleted file mode 100644 index 13feaf40..00000000 --- a/vue3/src/components/LangSelect/index.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - diff --git a/vue3/src/components/Pagination/index.vue b/vue3/src/components/Pagination/index.vue deleted file mode 100644 index 84e8f3e0..00000000 --- a/vue3/src/components/Pagination/index.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - diff --git a/vue3/src/components/RightPanel/index.vue b/vue3/src/components/RightPanel/index.vue deleted file mode 100644 index 9dc5509c..00000000 --- a/vue3/src/components/RightPanel/index.vue +++ /dev/null @@ -1,136 +0,0 @@ - - - - - diff --git a/vue3/src/components/SizeSelect/index.vue b/vue3/src/components/SizeSelect/index.vue deleted file mode 100644 index f0800ba2..00000000 --- a/vue3/src/components/SizeSelect/index.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/vue3/src/components/SvgIcon/index.vue b/vue3/src/components/SvgIcon/index.vue deleted file mode 100644 index 07b65e8d..00000000 --- a/vue3/src/components/SvgIcon/index.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - - - diff --git a/vue3/src/components/Upload/MultiUpload.vue b/vue3/src/components/Upload/MultiUpload.vue deleted file mode 100644 index d372eff0..00000000 --- a/vue3/src/components/Upload/MultiUpload.vue +++ /dev/null @@ -1,139 +0,0 @@ - - - - - diff --git a/vue3/src/components/Upload/SingleUpload.vue b/vue3/src/components/Upload/SingleUpload.vue deleted file mode 100644 index 631dc28e..00000000 --- a/vue3/src/components/Upload/SingleUpload.vue +++ /dev/null @@ -1,77 +0,0 @@ - - - - - diff --git a/vue3/src/components/WangEditor/index.vue b/vue3/src/components/WangEditor/index.vue deleted file mode 100644 index 2f4c6782..00000000 --- a/vue3/src/components/WangEditor/index.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - - - diff --git a/vue3/src/directive/index.ts b/vue3/src/directive/index.ts deleted file mode 100644 index 9c22eb69..00000000 --- a/vue3/src/directive/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { App } from "vue"; - -import { hasPerm } from "./permission"; - -// 全局注册 directive -export function setupDirective(app: App) { - // 使 v-hasPerm 在所有组件中都可用 - app.directive("hasPerm", hasPerm); -} diff --git a/vue3/src/directive/permission/index.ts b/vue3/src/directive/permission/index.ts deleted file mode 100644 index 2bd2c705..00000000 --- a/vue3/src/directive/permission/index.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { useUserStoreHook } from "@/store/modules/user"; -import { Directive, DirectiveBinding } from "vue"; - -/** - * 按钮权限 - */ -export const hasPerm: Directive = { - mounted(el: HTMLElement, binding: DirectiveBinding) { - // 「超级管理员」拥有所有的按钮权限 - const { roles, perms } = useUserStoreHook().user; - if (roles.includes("ROOT")) { - return true; - } - // 「其他角色」按钮权限校验 - const { value } = binding; - if (value) { - const requiredPerms = value; // DOM绑定需要的按钮权限标识 - - const hasPerm = perms?.some((perm) => { - return requiredPerms.includes(perm); - }); - - if (!hasPerm) { - el.parentNode && el.parentNode.removeChild(el); - } - } else { - throw new Error( - "need perms! Like v-has-perm=\"['sys:user:add','sys:user:edit']\"" - ); - } - }, -}; - -/** - * 角色权限 - */ -export const hasRole: Directive = { - mounted(el: HTMLElement, binding: DirectiveBinding) { - const { value } = binding; - - if (value) { - const requiredRoles = value; // DOM绑定需要的角色编码 - const { roles } = useUserStoreHook().user; - const hasRole = roles.some((perm) => { - return requiredRoles.includes(perm); - }); - - if (!hasRole) { - el.parentNode && el.parentNode.removeChild(el); - } - } else { - throw new Error("need roles! Like v-has-role=\"['admin','test']\""); - } - }, -}; diff --git a/vue3/src/enums/MenuTypeEnum.ts b/vue3/src/enums/MenuTypeEnum.ts deleted file mode 100644 index 65e591db..00000000 --- a/vue3/src/enums/MenuTypeEnum.ts +++ /dev/null @@ -1,19 +0,0 @@ -export enum MenuTypeEnum { - /** - * 目录 - */ - CATALOG = "CATALOG", - /** - * 菜单 - */ - MENU = "MENU", - - /** - * 按钮 - */ - BUTTON = "BUTTON", - /** - * 外链 - */ - EXTLINK = "EXTLINK", -} diff --git a/vue3/src/lang/index.ts b/vue3/src/lang/index.ts deleted file mode 100644 index 18c02316..00000000 --- a/vue3/src/lang/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { createI18n } from "vue-i18n"; -import { useAppStore } from "@/store/modules/app"; -// 本地语言包 -import enLocale from "./package/en"; -import zhCnLocale from "./package/zh-cn"; - -const appStore = useAppStore(); - -const messages = { - "zh-cn": { - ...zhCnLocale, - }, - en: { - ...enLocale, - }, -}; - -const i18n = createI18n({ - legacy: false, - locale: appStore.language, - messages: messages, - globalInjection: true, -}); - -export default i18n; diff --git a/vue3/src/lang/package/en.ts b/vue3/src/lang/package/en.ts deleted file mode 100644 index e7bbb53c..00000000 --- a/vue3/src/lang/package/en.ts +++ /dev/null @@ -1,21 +0,0 @@ -export default { - // 路由国际化 - route: { - dashboard: "Dashboard", - document: "Document", - }, - // 登录页面国际化 - login: { - username: "Username", - password: "Password", - login: "Login", - captchaCode: "Verify Code", - }, - // 导航栏国际化 - navbar: { - dashboard: "Dashboard", - logout: "Logout", - document: "Document", - gitee: "Gitee", - }, -}; diff --git a/vue3/src/lang/package/zh-cn.ts b/vue3/src/lang/package/zh-cn.ts deleted file mode 100644 index c9e29d76..00000000 --- a/vue3/src/lang/package/zh-cn.ts +++ /dev/null @@ -1,20 +0,0 @@ -export default { - // 路由国际化 - route: { - dashboard: "首页", - document: "项目文档", - }, - // 登录页面国际化 - login: { - username: "用户名", - password: "密码", - login: "登 录", - captchaCode: "验证码", - }, - // 导航栏国际化 - navbar: { - dashboard: "首页", - logout: "注销", - document: "项目文档", - }, -}; diff --git a/vue3/src/layout/components/AppMain.vue b/vue3/src/layout/components/AppMain.vue deleted file mode 100644 index 4d24b3ff..00000000 --- a/vue3/src/layout/components/AppMain.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - - - diff --git a/vue3/src/layout/components/NavBar/NavRight.vue b/vue3/src/layout/components/NavBar/NavRight.vue deleted file mode 100644 index 4a5a2f9c..00000000 --- a/vue3/src/layout/components/NavBar/NavRight.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - diff --git a/vue3/src/layout/components/NavBar/index.vue b/vue3/src/layout/components/NavBar/index.vue deleted file mode 100644 index e935d450..00000000 --- a/vue3/src/layout/components/NavBar/index.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - - diff --git a/vue3/src/layout/components/Settings/index.vue b/vue3/src/layout/components/Settings/index.vue deleted file mode 100644 index e8882105..00000000 --- a/vue3/src/layout/components/Settings/index.vue +++ /dev/null @@ -1,268 +0,0 @@ - - - - - diff --git a/vue3/src/layout/components/Sidebar/Item.vue b/vue3/src/layout/components/Sidebar/Item.vue deleted file mode 100644 index 6524a0a8..00000000 --- a/vue3/src/layout/components/Sidebar/Item.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - - diff --git a/vue3/src/layout/components/Sidebar/LeftMenu.vue b/vue3/src/layout/components/Sidebar/LeftMenu.vue deleted file mode 100644 index 97c4fbe6..00000000 --- a/vue3/src/layout/components/Sidebar/LeftMenu.vue +++ /dev/null @@ -1,66 +0,0 @@ - - diff --git a/vue3/src/layout/components/Sidebar/Link.vue b/vue3/src/layout/components/Sidebar/Link.vue deleted file mode 100644 index 536a5d60..00000000 --- a/vue3/src/layout/components/Sidebar/Link.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/vue3/src/layout/components/Sidebar/Logo.vue b/vue3/src/layout/components/Sidebar/Logo.vue deleted file mode 100644 index 468d7ffe..00000000 --- a/vue3/src/layout/components/Sidebar/Logo.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - - - diff --git a/vue3/src/layout/components/Sidebar/SidebarItem.vue b/vue3/src/layout/components/Sidebar/SidebarItem.vue deleted file mode 100644 index cf2e7658..00000000 --- a/vue3/src/layout/components/Sidebar/SidebarItem.vue +++ /dev/null @@ -1,138 +0,0 @@ - - - - diff --git a/vue3/src/layout/components/Sidebar/TopMenu.vue b/vue3/src/layout/components/Sidebar/TopMenu.vue deleted file mode 100644 index 485f83d9..00000000 --- a/vue3/src/layout/components/Sidebar/TopMenu.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - diff --git a/vue3/src/layout/components/Sidebar/index.vue b/vue3/src/layout/components/Sidebar/index.vue deleted file mode 100644 index 08206d0a..00000000 --- a/vue3/src/layout/components/Sidebar/index.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - diff --git a/vue3/src/layout/components/TagsView/ScrollPane.vue b/vue3/src/layout/components/TagsView/ScrollPane.vue deleted file mode 100644 index 7e8cad17..00000000 --- a/vue3/src/layout/components/TagsView/ScrollPane.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - - diff --git a/vue3/src/layout/components/TagsView/index.vue b/vue3/src/layout/components/TagsView/index.vue deleted file mode 100644 index 093b6da2..00000000 --- a/vue3/src/layout/components/TagsView/index.vue +++ /dev/null @@ -1,432 +0,0 @@ - - - - - diff --git a/vue3/src/layout/components/index.ts b/vue3/src/layout/components/index.ts deleted file mode 100644 index 616c59b0..00000000 --- a/vue3/src/layout/components/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { default as Navbar } from "./NavBar/index.vue"; -export { default as AppMain } from "./AppMain.vue"; -export { default as Settings } from "./Settings/index.vue"; -export { default as TagsView } from "./TagsView/index.vue"; diff --git a/vue3/src/layout/index.vue b/vue3/src/layout/index.vue deleted file mode 100644 index affb973b..00000000 --- a/vue3/src/layout/index.vue +++ /dev/null @@ -1,236 +0,0 @@ - - - - - diff --git a/vue3/src/layout/main.vue b/vue3/src/layout/main.vue deleted file mode 100644 index 3e8deb45..00000000 --- a/vue3/src/layout/main.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - - - diff --git a/vue3/src/main.ts b/vue3/src/main.ts deleted file mode 100644 index 3b57f7c4..00000000 --- a/vue3/src/main.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { createApp } from "vue"; -import App from "./App.vue"; -import router from "@/router"; -import { setupStore } from "@/store"; -import { setupDirective } from "@/directive"; - -import "@/permission"; - -// 本地SVG图标 -import "virtual:svg-icons-register"; - -// 国际化 -import i18n from "@/lang/index"; - -// 样式 -import "element-plus/theme-chalk/dark/css-vars.css"; -import "@/styles/index.scss"; -import "uno.css"; - -const app = createApp(App); -// 全局注册 自定义指令(directive) -setupDirective(app); -// 全局注册 状态管理(store) -setupStore(app); - -app.use(router).use(i18n).mount("#app"); diff --git a/vue3/src/permission.ts b/vue3/src/permission.ts deleted file mode 100644 index 29db962c..00000000 --- a/vue3/src/permission.ts +++ /dev/null @@ -1,62 +0,0 @@ -import router from "@/router"; -import { useUserStoreHook } from "@/store/modules/user"; -import { usePermissionStoreHook } from "@/store/modules/permission"; - -import NProgress from "nprogress"; -import "nprogress/nprogress.css"; - -NProgress.configure({ showSpinner: false }); // 进度条 - -const permissionStore = usePermissionStoreHook(); - -// 白名单路由 -const whiteList = ["/login"]; - -router.beforeEach(async (to, from, next) => { - NProgress.start(); - const hasToken = localStorage.getItem("accessToken"); - if (hasToken) { - if (to.path === "/login") { - // 如果已登录,跳转首页 - next({ path: "/" }); - NProgress.done(); - } else { - const userStore = useUserStoreHook(); - const hasRoles = userStore.user.roles && userStore.user.roles.length > 0; - if (hasRoles) { - // 未匹配到任何路由,跳转404 - if (to.matched.length === 0) { - from.name ? next({ name: from.name }) : next("/404"); - } else { - next(); - } - } else { - try { - const { roles } = await userStore.getUserInfo(); - const accessRoutes = await permissionStore.generateRoutes(roles); - accessRoutes.forEach((route) => { - router.addRoute(route); - }); - next({ ...to, replace: true }); - } catch (error) { - // 移除 token 并跳转登录页 - await userStore.resetToken(); - next(`/login?redirect=${to.path}`); - NProgress.done(); - } - } - } - } else { - // 未登录可以访问白名单页面 - if (whiteList.indexOf(to.path) !== -1) { - next(); - } else { - next(`/login?redirect=${to.path}`); - NProgress.done(); - } - } -}); - -router.afterEach(() => { - NProgress.done(); -}); diff --git a/vue3/src/router/index.ts b/vue3/src/router/index.ts deleted file mode 100644 index 17a249a8..00000000 --- a/vue3/src/router/index.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router"; - -export const Layout = () => import("@/layout/index.vue"); - -// 静态路由 -export const constantRoutes: RouteRecordRaw[] = [ - { - path: "/redirect", - component: Layout, - meta: { hidden: true }, - children: [ - { - path: "/redirect/:path(.*)", - component: () => import("@/views/redirect/index.vue"), - }, - ], - }, - - { - path: "/login", - component: () => import("@/views/login/index.vue"), - meta: { hidden: true }, - }, - - { - path: "/", - name: "/", - component: Layout, - redirect: "/dashboard", - children: [ - { - path: "dashboard", - component: () => import("@/views/dashboard/index.vue"), - name: "Dashboard", // 用于 keep-alive, 必须与SFC自动推导或者显示声明的组件name一致 - // https://cn.vuejs.org/guide/built-ins/keep-alive.html#include-exclude - meta: { - title: "dashboard", - icon: "homepage", - affix: true, - keepAlive: true, - alwaysShow: false, - }, - }, - { - path: "401", - component: () => import("@/views/error-page/401.vue"), - meta: { hidden: true }, - }, - { - path: "404", - component: () => import("@/views/error-page/404.vue"), - meta: { hidden: true }, - }, - ], - }, - - // 外部链接 - // { - // path: "/external-link", - // component: Layout, - // children: [ { - // component: () => import("@/views/external-link/index.vue"), - // path: "https://www.cnblogs.com/haoxianrui/", - // meta: { title: "外部链接", icon: "link" }, - // }, - // ], - // }, - // 多级嵌套路由 - /* { - path: '/nested', - component: Layout, - redirect: '/nested/level1/level2', - name: 'Nested', - meta: {title: '多级菜单', icon: 'nested'}, - children: [ - { - path: 'level1', - component: () => import('@/views/nested/level1/index.vue'), - name: 'Level1', - meta: {title: '菜单一级'}, - redirect: '/nested/level1/level2', - children: [ - { - path: 'level2', - component: () => import('@/views/nested/level1/level2/index.vue'), - name: 'Level2', - meta: {title: '菜单二级'}, - redirect: '/nested/level1/level2/level3', - children: [ - { - path: 'level3-1', - component: () => import('@/views/nested/level1/level2/level3/index1.vue'), - name: 'Level3-1', - meta: {title: '菜单三级-1'} - }, - { - path: 'level3-2', - component: () => import('@/views/nested/level1/level2/level3/index2.vue'), - name: 'Level3-2', - meta: {title: '菜单三级-2'} - } - ] - } - ] - }, - ] - }*/ -]; - -/** - * 创建路由 - */ -const router = createRouter({ - history: createWebHashHistory(), - routes: constantRoutes as RouteRecordRaw[], - // 刷新时,滚动条位置还原 - scrollBehavior: () => ({ left: 0, top: 0 }), -}); - -/** - * 重置路由 - */ -export function resetRouter() { - router.replace({ path: "/login" }); -} - -export default router; diff --git a/vue3/src/settings.ts b/vue3/src/settings.ts deleted file mode 100644 index 157dad14..00000000 --- a/vue3/src/settings.ts +++ /dev/null @@ -1,17 +0,0 @@ -const defaultSettings: AppSettings = { - title: "启航电商OMS系统" + - "", - version: "v2.8.2", - showSettings: true, - tagsView: true, - fixedHeader: false, - sidebarLogo: true, - layout: "left", - theme: "light", - size: "default", - language: "zh-cn", - themeColor: "#409EFF", - watermark: { enabled: false, content: "启航电商" }, -}; - -export default defaultSettings; diff --git a/vue3/src/store/index.ts b/vue3/src/store/index.ts deleted file mode 100644 index e22b67c4..00000000 --- a/vue3/src/store/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { App } from "vue"; -import { createPinia } from "pinia"; - -const store = createPinia(); - -// 全局注册 store -export function setupStore(app: App) { - app.use(store); -} - -export { store }; diff --git a/vue3/src/store/modules/app.ts b/vue3/src/store/modules/app.ts deleted file mode 100644 index e2e82356..00000000 --- a/vue3/src/store/modules/app.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { defineStore } from "pinia"; -import { useStorage } from "@vueuse/core"; -import defaultSettings from "@/settings"; - -// 导入 Element Plus 中英文语言包 -import zhCn from "element-plus/es/locale/lang/zh-cn"; -import en from "element-plus/es/locale/lang/en"; - -// setup -export const useAppStore = defineStore("app", () => { - // state - const device = useStorage("device", "desktop"); - const size = useStorage("size", defaultSettings.size); - const language = useStorage("language", defaultSettings.language); - - const sidebarStatus = useStorage("sidebarStatus", "closed"); - - const sidebar = reactive({ - opened: sidebarStatus.value !== "closed", - withoutAnimation: false, - }); - const activeTopMenu = useStorage("activeTop", ""); - /** - * 根据语言标识读取对应的语言包 - */ - const locale = computed(() => { - if (language?.value == "en") { - return en; - } else { - return zhCn; - } - }); - - // actions - function toggleSidebar() { - sidebar.opened = !sidebar.opened; - sidebar.withoutAnimation = false; - if (sidebar.opened) { - sidebarStatus.value = "opened"; - } else { - sidebarStatus.value = "closed"; - } - } - - function closeSideBar(withoutAnimation: boolean) { - sidebar.opened = false; - sidebar.withoutAnimation = withoutAnimation; - sidebarStatus.value = "closed"; - } - - function openSideBar(withoutAnimation: boolean) { - sidebar.opened = true; - sidebar.withoutAnimation = withoutAnimation; - sidebarStatus.value = "opened"; - } - - function toggleDevice(val: string) { - device.value = val; - } - - function changeSize(val: string) { - size.value = val; - } - /** - * 切换语言 - * - * @param val - */ - function changeLanguage(val: string) { - language.value = val; - } - /** - * 混合模式顶部切换 - */ - function changeTopActive(val: string) { - activeTopMenu.value = val; - } - return { - device, - sidebar, - language, - locale, - size, - activeTopMenu, - toggleDevice, - changeSize, - changeLanguage, - toggleSidebar, - closeSideBar, - openSideBar, - changeTopActive, - }; -}); diff --git a/vue3/src/store/modules/permission.ts b/vue3/src/store/modules/permission.ts deleted file mode 100644 index 25448b2a..00000000 --- a/vue3/src/store/modules/permission.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { RouteRecordRaw } from "vue-router"; -import { defineStore } from "pinia"; -import { constantRoutes } from "@/router"; -import { store } from "@/store"; -import { listRoutes } from "@/api/menu"; - -const modules = import.meta.glob("../../views/**/**.vue"); -const Layout = () => import("@/layout/index.vue"); - -/** - * Use meta.role to determine if the current user has permission - * - * @param roles 用户角色集合 - * @param route 路由 - * @returns - */ -const hasPermission = (roles: string[], route: RouteRecordRaw) => { - if (route.meta && route.meta.roles) { - // 角色【超级管理员】拥有所有权限,忽略校验 - if (roles.includes("ROOT")) { - return true; - } - return roles.some((role) => { - if (route.meta?.roles) { - return route.meta.roles.includes(role); - // return true; - } - }); - } - return false; -}; - -/** - * 递归过滤有权限的异步(动态)路由 - * - * @param routes 接口返回的异步(动态)路由 - * @param roles 用户角色集合 - * @returns 返回用户有权限的异步(动态)路由 - */ -const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => { - const asyncRoutes: RouteRecordRaw[] = []; -// debugger - routes.forEach((route) => { - const tmpRoute = { ...route }; // ES6扩展运算符复制新对象 - console.log(tmpRoute) - if (!route.name) { - tmpRoute.name = route.path; - } - // 判断用户(角色)是否有该路由的访问权限 - if (hasPermission(roles, tmpRoute)) { - if (tmpRoute.component?.toString() == "Layout") { - tmpRoute.component = Layout; - } else { - const component = modules[`../../views/${tmpRoute.component}.vue`]; - if (component) { - tmpRoute.component = component; - } else { - tmpRoute.component = modules[`../../views/error-page/404.vue`]; - } - } - - if (tmpRoute.children) { - tmpRoute.children = filterAsyncRoutes(tmpRoute.children, roles); - } - - asyncRoutes.push(tmpRoute); - } - }); - - return asyncRoutes; -}; - -// setup -export const usePermissionStore = defineStore("permission", () => { - // state - const routes = ref([]); - - // actions - function setRoutes(newRoutes: RouteRecordRaw[]) { - routes.value = constantRoutes.concat(newRoutes); - } - /** - * 生成动态路由 - * - * @param roles 用户角色集合 - * @returns - */ - function generateRoutes(roles: string[]) { - return new Promise((resolve, reject) => { - // 接口获取所有路由 - listRoutes() - .then(({ data: asyncRoutes }) => { - console.log("menus"); - console.log(roles); - console.log(asyncRoutes); - // 根据角色获取有访问权限的路由 - const accessedRoutes = filterAsyncRoutes(asyncRoutes, roles); - setRoutes(accessedRoutes); - resolve(accessedRoutes); - }) - .catch((error) => { - reject(error); - }); - }); - } - - /** - * 混合模式左侧菜单 - */ - const mixLeftMenu = ref([]); - function getMixLeftMenu(activeTop: string) { - routes.value.forEach((item) => { - if (item.path === activeTop) { - mixLeftMenu.value = item.children || []; - } - }); - } - return { routes, setRoutes, generateRoutes, getMixLeftMenu, mixLeftMenu }; -}); - -// 非setup -export function usePermissionStoreHook() { - return usePermissionStore(store); -} diff --git a/vue3/src/store/modules/settings.ts b/vue3/src/store/modules/settings.ts deleted file mode 100644 index 3c037587..00000000 --- a/vue3/src/store/modules/settings.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { defineStore } from "pinia"; -import defaultSettings from "@/settings"; - -export const useSettingsStore = defineStore("setting", () => { - const title = defaultSettings.title; - const version = defaultSettings.version; - - const tagsView = useStorage("tagsView", defaultSettings.tagsView); - - const showSettings = ref(defaultSettings.showSettings); - const sidebarLogo = ref(defaultSettings.sidebarLogo); - const fixedHeader = useStorage( - "fixedHeader", - defaultSettings.fixedHeader - ); - const layout = useStorage("layout", defaultSettings.layout); - const themeColor = useStorage( - "themeColor", - defaultSettings.themeColor - ); - const theme = useStorage("theme", defaultSettings.theme); - - // Whether to enable watermark - const watermark = useStorage("watermark", defaultSettings.watermark); - - const settingsMap: Record> = { - showSettings, - fixedHeader, - tagsView, - sidebarLogo, - layout, - themeColor, - theme, - watermark: watermark.value, - }; - - function changeSetting({ key, value }: { key: string; value: any }) { - const setting = settingsMap[key]; - if (setting !== undefined) { - setting.value = value; - if (key === "theme") { - if (value === "dark") { - document.documentElement.classList.add("dark"); - } else { - document.documentElement.classList.remove("dark"); - } - } - } - } - - return { - title, - version, - showSettings, - tagsView, - fixedHeader, - sidebarLogo, - layout, - themeColor, - changeSetting, - theme, - watermark, - }; -}); diff --git a/vue3/src/store/modules/tagsView.ts b/vue3/src/store/modules/tagsView.ts deleted file mode 100644 index 6327ca99..00000000 --- a/vue3/src/store/modules/tagsView.ts +++ /dev/null @@ -1,213 +0,0 @@ -import { defineStore } from "pinia"; - -export const useTagsViewStore = defineStore("tagsView", () => { - const visitedViews = ref([]); - const cachedViews = ref([]); - - /** - * 添加已访问视图到已访问视图列表中 - */ - function addVisitedView(view: TagView) { - // 如果已经存在于已访问的视图列表中,则不再添加 - if (visitedViews.value.some((v) => v.fullPath === view.fullPath)) { - return; - } - // 如果视图是固定的(affix),则在已访问的视图列表的开头添加 - if (view.affix) { - visitedViews.value.unshift(view); - } else { - // 如果视图不是固定的,则在已访问的视图列表的末尾添加 - visitedViews.value.push(view); - } - } - - /** - * 添加缓存视图到缓存视图列表中 - */ - function addCachedView(view: TagView) { - const viewName = view.name; - // 如果缓存视图名称已经存在于缓存视图列表中,则不再添加 - if (cachedViews.value.includes(viewName)) { - return; - } - - // 如果视图需要缓存(keepAlive),则将其路由名称添加到缓存视图列表中 - if (view.keepAlive) { - cachedViews.value.push(viewName); - } - } - - /** - * 从已访问视图列表中删除指定的视图 - */ - function delVisitedView(view: TagView) { - return new Promise((resolve) => { - for (const [i, v] of visitedViews.value.entries()) { - // 找到与指定视图路径匹配的视图,在已访问视图列表中删除该视图 - if (v.path === view.path) { - visitedViews.value.splice(i, 1); - break; - } - } - resolve([...visitedViews.value]); - }); - } - - function delCachedView(view: TagView) { - const viewName = view.name; - return new Promise((resolve) => { - const index = cachedViews.value.indexOf(viewName); - index > -1 && cachedViews.value.splice(index, 1); - resolve([...cachedViews.value]); - }); - } - - function delOtherVisitedViews(view: TagView) { - return new Promise((resolve) => { - visitedViews.value = visitedViews.value.filter((v) => { - return v?.affix || v.path === view.path; - }); - resolve([...visitedViews.value]); - }); - } - - function delOtherCachedViews(view: TagView) { - const viewName = view.name as string; - return new Promise((resolve) => { - const index = cachedViews.value.indexOf(viewName); - if (index > -1) { - cachedViews.value = cachedViews.value.slice(index, index + 1); - } else { - // if index = -1, there is no cached tags - cachedViews.value = []; - } - resolve([...cachedViews.value]); - }); - } - - function updateVisitedView(view: TagView) { - for (let v of visitedViews.value) { - if (v.path === view.path) { - v = Object.assign(v, view); - break; - } - } - } - - function addView(view: TagView) { - addVisitedView(view); - addCachedView(view); - } - - function delView(view: TagView) { - return new Promise((resolve) => { - delVisitedView(view); - delCachedView(view); - resolve({ - visitedViews: [...visitedViews.value], - cachedViews: [...cachedViews.value], - }); - }); - } - - function delOtherViews(view: TagView) { - return new Promise((resolve) => { - delOtherVisitedViews(view); - delOtherCachedViews(view); - resolve({ - visitedViews: [...visitedViews.value], - cachedViews: [...cachedViews.value], - }); - }); - } - - function delLeftViews(view: TagView) { - return new Promise((resolve) => { - const currIndex = visitedViews.value.findIndex( - (v) => v.path === view.path - ); - if (currIndex === -1) { - return; - } - visitedViews.value = visitedViews.value.filter((item, index) => { - if (index >= currIndex || item?.affix) { - return true; - } - - const cacheIndex = cachedViews.value.indexOf(item.name); - if (cacheIndex > -1) { - cachedViews.value.splice(cacheIndex, 1); - } - return false; - }); - resolve({ - visitedViews: [...visitedViews.value], - }); - }); - } - function delRightViews(view: TagView) { - return new Promise((resolve) => { - const currIndex = visitedViews.value.findIndex( - (v) => v.path === view.path - ); - if (currIndex === -1) { - return; - } - visitedViews.value = visitedViews.value.filter((item, index) => { - if (index <= currIndex || item?.affix) { - return true; - } - }); - resolve({ - visitedViews: [...visitedViews.value], - }); - }); - } - - function delAllViews() { - return new Promise((resolve) => { - const affixTags = visitedViews.value.filter((tag) => tag?.affix); - visitedViews.value = affixTags; - cachedViews.value = []; - resolve({ - visitedViews: [...visitedViews.value], - cachedViews: [...cachedViews.value], - }); - }); - } - - function delAllVisitedViews() { - return new Promise((resolve) => { - const affixTags = visitedViews.value.filter((tag) => tag?.affix); - visitedViews.value = affixTags; - resolve([...visitedViews.value]); - }); - } - - function delAllCachedViews() { - return new Promise((resolve) => { - cachedViews.value = []; - resolve([...cachedViews.value]); - }); - } - - return { - visitedViews, - cachedViews, - addVisitedView, - addCachedView, - delVisitedView, - delCachedView, - delOtherVisitedViews, - delOtherCachedViews, - updateVisitedView, - addView, - delView, - delOtherViews, - delLeftViews, - delRightViews, - delAllViews, - delAllVisitedViews, - delAllCachedViews, - }; -}); diff --git a/vue3/src/store/modules/user.ts b/vue3/src/store/modules/user.ts deleted file mode 100644 index c9558e19..00000000 --- a/vue3/src/store/modules/user.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { defineStore } from "pinia"; - -import { loginApi, logoutApi } from "@/api/auth"; -import { getUserInfoApi } from "@/api/user"; -import { resetRouter } from "@/router"; -import { store } from "@/store"; - -import { LoginData } from "@/api/auth/types"; -import { UserInfo } from "@/api/user/types"; - -import { useStorage } from "@vueuse/core"; - -export const useUserStore = defineStore("user", () => { - const user: UserInfo = { - roles: [], - perms: [], - }; - - const token = useStorage("accessToken", ""); - - /** - * 登录 - * - * @param {LoginData} - * @returns - */ - function login(loginData: LoginData) { - return new Promise((resolve, reject) => { - loginApi(loginData) - .then((response) => { - const { tokenType, accessToken } = response.data; - token.value = tokenType + " " + accessToken; // Bearer eyJhbGciOiJIUzI1NiJ9.xxx.xxx - resolve(); - }) - .catch((error) => { - reject(error); - }); - }); - } - - // 获取信息(用户昵称、头像、角色集合、权限集合) - function getUserInfo() { - return new Promise((resolve, reject) => { - getUserInfoApi() - .then(({ data }) => { - if (!data) { - reject("Verification failed, please Login again."); - return; - } - if (!data.roles || data.roles.length <= 0) { - reject("getUserInfo: roles must be a non-null array!"); - return; - } - Object.assign(user, { ...data }); - resolve(data); - }) - .catch((error) => { - reject(error); - }); - }); - } - - // user logout - function logout() { - return new Promise((resolve, reject) => { - logoutApi() - .then(() => { - token.value = ""; - location.reload(); // 清空路由 - resolve(); - }) - .catch((error) => { - reject(error); - }); - }); - } - - // remove token - function resetToken() { - return new Promise((resolve) => { - token.value = ""; - resetRouter(); - resolve(); - }); - } - - return { - token, - user, - login, - getUserInfo, - logout, - resetToken, - }; -}); - -// 非setup -export function useUserStoreHook() { - return useUserStore(store); -} diff --git a/vue3/src/styles/dark.scss b/vue3/src/styles/dark.scss deleted file mode 100644 index fb548a2f..00000000 --- a/vue3/src/styles/dark.scss +++ /dev/null @@ -1,47 +0,0 @@ -html.dark { - --menuBg: var(--el-bg-color-overlay); - --menuText: #fff; - --menuActiveText: var(--el-menu-active-color); - --menuHover: rgb(0 0 0 / 20%); - --subMenuBg: var(--el-menu-bg-color); - --subMenuActiveText: var(--el-menu-active-color); - --subMenuHover: rgb(0 0 0 / 20%); - - // wang-editor toolbar - --w-e-toolbar-bg-color: var(--el-bg-color-overlay); - --w-e-toolbar-color: var(--el-text-color-regulary); - --w-e-toolbar-active-bg-color: var(--el-bg-color-page); - --w-e-toolbar-active-color: var(--el-color-info-dark-2); - --w-e-toolbar-disabled-color: var(--el-disabled-text-color); - --w-e-toolbar-border-color: var(--el-color-info-light-8); - - // wang-editor textarea - --w-e-textarea-bg-color: var(--el-bg-color-overlay); - --w-e-textarea-color: var(--el-text-color-regulary); - --w-e-textarea-slight-border-color: var(--el-color-primary); - --w-e-textarea-slight-bg-color: rgb(var(--el-color-primary-rgb) 0.1); - --w-e-textarea-selected-border-color: var(--el-color-primary); - --w-e-textarea-border-color: var(--el-color-info-light-5); - - // // wang-editor modal - --w-e-modal-button-bg-color: var(--el-button-bg-color); - --w-e-modal-button-border-color: var(--el-color-info-light-3); - - .navbar { - background-color: var(--el-bg-color); - - .setting-container .setting-item:hover { - background: var(--el-fill-color-light); - } - } - - .right-panel-btn { - background-color: var(--el-color-primary-dark); - } - - .sidebar-container { - .el-menu-item.is-active .svg-icon { - fill: var(--el-color-primary); - } - } -} diff --git a/vue3/src/styles/index.scss b/vue3/src/styles/index.scss deleted file mode 100644 index e9250634..00000000 --- a/vue3/src/styles/index.scss +++ /dev/null @@ -1,31 +0,0 @@ -@import "./transition"; -@import "./sidebar"; -@import "./reset"; -@import "./dark"; - -.app-container { - padding: 10px; -} - -.search-container { - padding: 18px 0 0 10px; - margin-bottom: 10px; - background-color: var(--el-bg-color-overlay); - border: 1px solid var(--el-border-color-light); - border-radius: 4px; - box-shadow: var(--el-box-shadow-light); -} - -.table-container > .el-card__header { - padding: calc(var(--el-card-padding) - 8px) var(--el-card-padding); -} - -.link-type, -.link-type:focus { - color: #337ab7; - cursor: pointer; - - &:hover { - color: rgb(32 160 255); - } -} diff --git a/vue3/src/styles/reset.scss b/vue3/src/styles/reset.scss deleted file mode 100644 index 9b19e4c4..00000000 --- a/vue3/src/styles/reset.scss +++ /dev/null @@ -1,75 +0,0 @@ -*, -::before, -::after { - box-sizing: border-box; - border-color: currentcolor; - border-style: solid; - border-width: 0; -} - -#app { - width: 100%; - height: 100%; -} - -html { - box-sizing: border-box; - width: 100%; - height: 100%; - line-height: 1.5; - tab-size: 4; - text-size-adjust: 100%; -} - -body { - width: 100%; - height: 100%; - margin: 0; - font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", - "Microsoft YaHei", "微软雅黑", Arial, sans-serif; - line-height: inherit; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - text-rendering: optimizelegibility; -} - -a { - color: inherit; - text-decoration: inherit; -} - -img, -svg { - display: inline-block; -} - -svg { - vertical-align: -0.15em; //因icon大小被设置为和字体大小一致,而span等标签的下边缘会和字体的基线对齐,故需设置一个往下的偏移比例,来纠正视觉上的未对齐效果 -} - -ul, -li { - padding: 0; - margin: 0; - list-style: none; -} - -*, -*::before, -*::after { - box-sizing: inherit; -} - -a, -a:focus, -a:hover { - color: inherit; - text-decoration: none; - cursor: pointer; -} - -a:focus, -a:active, -div:focus { - outline: none; -} diff --git a/vue3/src/styles/sidebar.scss b/vue3/src/styles/sidebar.scss deleted file mode 100644 index fa1e53fe..00000000 --- a/vue3/src/styles/sidebar.scss +++ /dev/null @@ -1,243 +0,0 @@ -.app { - .main-container { - position: relative; - min-height: 100%; - margin-left: $sideBarWidth; - transition: margin-left 0.28s; - } - - .sidebar-container { - position: fixed; - top: 0; - bottom: 0; - left: 0; - z-index: 1001; - width: $sideBarWidth !important; - height: 100%; - overflow: hidden; - background-color: $menuBg; - transition: width 0.28s; - - // reset element-ui css - .horizontal-collapse-transition { - transition: 0s width ease-in-out, 0s padding-left ease-in-out, - 0s padding-right ease-in-out; - } - - .scrollbar-wrapper { - overflow-x: hidden !important; - } - - .el-scrollbar__bar.is-vertical { - right: 0; - } - - .el-scrollbar { - height: 100%; - } - - &.has-logo { - .el-scrollbar { - height: calc(100% - 50px); - } - } - - .is-horizontal { - display: none; - } - - .svg-icon { - margin-right: 12px; - } - - .sub-el-icon { - margin-right: 12px; - margin-left: -2px; - } - - .el-menu { - width: 100% !important; - height: 100%; - border: none; - } - - // menu hover - .submenu-title-noDropdown, - .el-sub-menu__title { - &:hover { - background-color: $menuHover !important; - } - } - - .is-active > .el-sub-menu__title { - color: $subMenuActiveText !important; - } - - & .nest-menu .el-sub-menu > .el-sub-menu__title, - & .el-sub-menu .el-menu-item { - min-width: $sideBarWidth !important; - background-color: $subMenuBg !important; - - &:hover { - background-color: $subMenuHover !important; - } - } - } - - .hideSidebar { - .mix-wrapper__left { - width: 54px; - } - - .sidebar-container { - width: 54px !important; - - .header { - .logo-wrap { - width: 54px !important; - transition: transform 0.28s; - } - } - } - - .main-container { - margin-left: 54px; - } - - .submenu-title-noDropdown { - position: relative; - padding: 0 !important; - - .el-tooltip { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - - .sub-el-icon { - margin-left: 19px; - } - } - - // TODO - & > .svg-icon { - margin-left: 20px; - } - - & > span { - display: inline-block; - width: 0; - height: 0; - overflow: hidden; - visibility: hidden; - } - } - - .el-sub-menu { - overflow: hidden; - - & > .el-sub-menu__title { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - - .sub-el-icon { - margin-left: 19px; - } - - .el-sub-menu__icon-arrow { - display: none; - } - } - } - - .el-menu--collapse { - .el-sub-menu { - & > .el-sub-menu__title { - & > span { - display: inline-block; - width: 0; - height: 0; - overflow: hidden; - visibility: hidden; - } - } - } - } - } - - .el-menu--collapse .el-menu .el-sub-menu { - min-width: $sideBarWidth !important; - } - - // mobile responsive - .mobile { - .main-container { - margin-left: 0; - } - - .sidebar-container { - width: $sideBarWidth !important; - transition: transform 0.28s; - } - - &.hideSidebar:not(.isMix, .isTop) { - .sidebar-container { - pointer-events: none; - transition-duration: 0.3s; - transform: translate3d(-$sideBarWidth, 0, 0); - } - } - } - - .withoutAnimation { - .main-container, - .sidebar-container { - transition: none; - } - } -} - -// when menu collapsed -.el-menu--vertical { - & > .el-menu { - .svg-icon { - margin-right: 12px; - } - - .sub-el-icon { - margin-right: 12px; - margin-left: -2px; - } - } - - .nest-menu .el-sub-menu > .el-sub-menu__title, - .el-menu-item { - &:hover { - // you can use $subMenuHover - background-color: $menuHover !important; - } - } - - // the scroll bar appears when the subMenu is too long - > .el-menu--popup { - max-height: 100vh; - overflow-y: auto; - - &::-webkit-scrollbar-track-piece { - background: #d3dce6; - } - - &::-webkit-scrollbar { - width: 6px; - } - - &::-webkit-scrollbar-thumb { - background: #99a9bf; - border-radius: 20px; - } - } -} diff --git a/vue3/src/styles/transition.scss b/vue3/src/styles/transition.scss deleted file mode 100644 index 7ba53632..00000000 --- a/vue3/src/styles/transition.scss +++ /dev/null @@ -1,85 +0,0 @@ -// global transition css - -/* fade */ -.fade-enter-active, -.fade-leave-active { - transition: opacity 0.28s; -} - -.fade-enter, -.fade-leave-active { - opacity: 0; -} - -/* fade-transform */ -.fade-transform-leave-active, -.fade-transform-enter-active { - transition: all 0.5s; -} - -.fade-transform-enter { - opacity: 0; - transform: translateX(-30px); -} - -.fade-transform-leave-to { - opacity: 0; - transform: translateX(30px); -} - -/* breadcrumb transition */ -.breadcrumb-enter-active, -.breadcrumb-leave-active { - transition: all 0.5s; -} - -.breadcrumb-enter, -.breadcrumb-leave-active { - opacity: 0; - transform: translateX(20px); -} - -.breadcrumb-move { - transition: all 0.5s; -} - -.breadcrumb-leave-active { - position: absolute; -} - -/* 缩放过渡 */ -.fade-scale-enter-active, -.fade-scale-leave-active { - transition: transform 0.3s ease-in-out; -} - -.fade-scale-enter-from, -.fade-scale-leave-to { - transform: scale(0); -} - -.fade-slide-leave-active, -.fade-slide-enter-active { - transition: opacity 0.3s, transform 0.3s; -} - -.fade-slide-enter-from { - opacity: 0; - transform: translateX(-30px); -} - -.fade-slide-leave-to { - opacity: 0; - transform: translateX(30px); -} - -/* 旋转过渡 */ -.fade-rotate-enter-active, -.fade-rotate-leave-active { - transition: transform 0.3s ease-in-out; -} - -.fade-rotate-enter-from, -.fade-rotate-leave-to { - transform: rotate(90deg); -} diff --git a/vue3/src/styles/variables.module.scss b/vue3/src/styles/variables.module.scss deleted file mode 100644 index 7feccc40..00000000 --- a/vue3/src/styles/variables.module.scss +++ /dev/null @@ -1,6 +0,0 @@ -// 导出 variables.module.scss 变量提供给TypeScript使用 -:export { - menuBg: $menuBg; - menuText: $menuText; - menuActiveText: $menuActiveText; -} diff --git a/vue3/src/styles/variables.scss b/vue3/src/styles/variables.scss deleted file mode 100644 index dd36f4e0..00000000 --- a/vue3/src/styles/variables.scss +++ /dev/null @@ -1,27 +0,0 @@ -// 全局SCSS变量 - -:root { - --menuBg: #304156; - --menuText: #bfcbd9; - --menuActiveText: #409eff; - --menuHover: #263445; - --subMenuBg: #1f2d3d; - --subMenuActiveText: #f4f4f5; - --subMenuHover: #001528; - - // wang-editor textarea - --w-e-textarea-slight-border-color: var(--el-color-primary); - --w-e-textarea-slight-bg-color: rgb(var(--el-color-primary-rgb) 0.1); - --w-e-textarea-selected-border-color: var(--el-color-primary); -} - -$menuBg: var(--menuBg); -$menuText: var(--menuText); -$menuActiveText: var(--menuActiveText); -$menuHover: var(--menuHover); - -$subMenuBg: var(--subMenuBg); -$subMenuActiveText: var(--subMenuActiveText); -$subMenuHover: var(--subMenuHover); - -$sideBarWidth: 210px; diff --git a/vue3/src/typings/auto-imports.d.ts b/vue3/src/typings/auto-imports.d.ts deleted file mode 100644 index 94c3f682..00000000 --- a/vue3/src/typings/auto-imports.d.ts +++ /dev/null @@ -1,1693 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// Generated by unplugin-auto-import -export {} -declare global { - const EffectScope: typeof import("vue")["EffectScope"]; - const ElForm: typeof import("element-plus/es")["ElForm"]; - const ElMessage: typeof import("element-plus/es")["ElMessage"]; - const ElMessageBox: typeof import("element-plus/es")["ElMessageBox"]; - const ElTree: typeof import("element-plus/es")["ElTree"]; - const acceptHMRUpdate: typeof import("pinia")["acceptHMRUpdate"]; - const asyncComputed: typeof import("@vueuse/core")["asyncComputed"]; - const autoResetRef: typeof import("@vueuse/core")["autoResetRef"]; - const computed: typeof import("vue")["computed"]; - const computedAsync: typeof import("@vueuse/core")["computedAsync"]; - const computedEager: typeof import("@vueuse/core")["computedEager"]; - const computedInject: typeof import("@vueuse/core")["computedInject"]; - const computedWithControl: typeof import("@vueuse/core")["computedWithControl"]; - const controlledComputed: typeof import("@vueuse/core")["controlledComputed"]; - const controlledRef: typeof import("@vueuse/core")["controlledRef"]; - const createApp: typeof import("vue")["createApp"]; - const createEventHook: typeof import("@vueuse/core")["createEventHook"]; - const createGlobalState: typeof import("@vueuse/core")["createGlobalState"]; - const createInjectionState: typeof import("@vueuse/core")["createInjectionState"]; - const createPinia: typeof import("pinia")["createPinia"]; - const createReactiveFn: typeof import("@vueuse/core")["createReactiveFn"]; - const createReusableTemplate: typeof import("@vueuse/core")["createReusableTemplate"]; - const createSharedComposable: typeof import("@vueuse/core")["createSharedComposable"]; - const createTemplatePromise: typeof import("@vueuse/core")["createTemplatePromise"]; - const createUnrefFn: typeof import("@vueuse/core")["createUnrefFn"]; - const customRef: typeof import("vue")["customRef"]; - const debouncedRef: typeof import("@vueuse/core")["debouncedRef"]; - const debouncedWatch: typeof import("@vueuse/core")["debouncedWatch"]; - const defineAsyncComponent: typeof import("vue")["defineAsyncComponent"]; - const defineComponent: typeof import("vue")["defineComponent"]; - const defineStore: typeof import("pinia")["defineStore"]; - const eagerComputed: typeof import("@vueuse/core")["eagerComputed"]; - const effectScope: typeof import("vue")["effectScope"]; - const extendRef: typeof import("@vueuse/core")["extendRef"]; - const getActivePinia: typeof import("pinia")["getActivePinia"]; - const getCurrentInstance: typeof import("vue")["getCurrentInstance"]; - const getCurrentScope: typeof import("vue")["getCurrentScope"]; - const h: typeof import("vue")["h"]; - const ignorableWatch: typeof import("@vueuse/core")["ignorableWatch"]; - const inject: typeof import("vue")["inject"]; - const injectLocal: typeof import("@vueuse/core")["injectLocal"]; - const isDefined: typeof import("@vueuse/core")["isDefined"]; - const isProxy: typeof import("vue")["isProxy"]; - const isReactive: typeof import("vue")["isReactive"]; - const isReadonly: typeof import("vue")["isReadonly"]; - const isRef: typeof import("vue")["isRef"]; - const makeDestructurable: typeof import("@vueuse/core")["makeDestructurable"]; - const mapActions: typeof import("pinia")["mapActions"]; - const mapGetters: typeof import("pinia")["mapGetters"]; - const mapState: typeof import("pinia")["mapState"]; - const mapStores: typeof import("pinia")["mapStores"]; - const mapWritableState: typeof import("pinia")["mapWritableState"]; - const markRaw: typeof import("vue")["markRaw"]; - const nextTick: typeof import("vue")["nextTick"]; - const onActivated: typeof import("vue")["onActivated"]; - const onBeforeMount: typeof import("vue")["onBeforeMount"]; - const onBeforeRouteLeave: typeof import("vue-router")["onBeforeRouteLeave"]; - const onBeforeRouteUpdate: typeof import("vue-router")["onBeforeRouteUpdate"]; - const onBeforeUnmount: typeof import("vue")["onBeforeUnmount"]; - const onBeforeUpdate: typeof import("vue")["onBeforeUpdate"]; - const onClickOutside: typeof import("@vueuse/core")["onClickOutside"]; - const onDeactivated: typeof import("vue")["onDeactivated"]; - const onErrorCaptured: typeof import("vue")["onErrorCaptured"]; - const onKeyStroke: typeof import("@vueuse/core")["onKeyStroke"]; - const onLongPress: typeof import("@vueuse/core")["onLongPress"]; - const onMounted: typeof import("vue")["onMounted"]; - const onRenderTracked: typeof import("vue")["onRenderTracked"]; - const onRenderTriggered: typeof import("vue")["onRenderTriggered"]; - const onScopeDispose: typeof import("vue")["onScopeDispose"]; - const onServerPrefetch: typeof import("vue")["onServerPrefetch"]; - const onStartTyping: typeof import("@vueuse/core")["onStartTyping"]; - const onUnmounted: typeof import("vue")["onUnmounted"]; - const onUpdated: typeof import("vue")["onUpdated"]; - const pausableWatch: typeof import("@vueuse/core")["pausableWatch"]; - const provide: typeof import("vue")["provide"]; - const provideLocal: typeof import("@vueuse/core")["provideLocal"]; - const reactify: typeof import("@vueuse/core")["reactify"]; - const reactifyObject: typeof import("@vueuse/core")["reactifyObject"]; - const reactive: typeof import("vue")["reactive"]; - const reactiveComputed: typeof import("@vueuse/core")["reactiveComputed"]; - const reactiveOmit: typeof import("@vueuse/core")["reactiveOmit"]; - const reactivePick: typeof import("@vueuse/core")["reactivePick"]; - const readonly: typeof import("vue")["readonly"]; - const ref: typeof import("vue")["ref"]; - const refAutoReset: typeof import("@vueuse/core")["refAutoReset"]; - const refDebounced: typeof import("@vueuse/core")["refDebounced"]; - const refDefault: typeof import("@vueuse/core")["refDefault"]; - const refThrottled: typeof import("@vueuse/core")["refThrottled"]; - const refWithControl: typeof import("@vueuse/core")["refWithControl"]; - const resolveComponent: typeof import("vue")["resolveComponent"]; - const resolveRef: typeof import("@vueuse/core")["resolveRef"]; - const resolveUnref: typeof import("@vueuse/core")["resolveUnref"]; - const setActivePinia: typeof import("pinia")["setActivePinia"]; - const setMapStoreSuffix: typeof import("pinia")["setMapStoreSuffix"]; - const shallowReactive: typeof import("vue")["shallowReactive"]; - const shallowReadonly: typeof import("vue")["shallowReadonly"]; - const shallowRef: typeof import("vue")["shallowRef"]; - const storeToRefs: typeof import("pinia")["storeToRefs"]; - const syncRef: typeof import("@vueuse/core")["syncRef"]; - const syncRefs: typeof import("@vueuse/core")["syncRefs"]; - const templateRef: typeof import("@vueuse/core")["templateRef"]; - const throttledRef: typeof import("@vueuse/core")["throttledRef"]; - const throttledWatch: typeof import("@vueuse/core")["throttledWatch"]; - const toRaw: typeof import("vue")["toRaw"]; - const toReactive: typeof import("@vueuse/core")["toReactive"]; - const toRef: typeof import("vue")["toRef"]; - const toRefs: typeof import("vue")["toRefs"]; - const toValue: typeof import("vue")["toValue"]; - const triggerRef: typeof import("vue")["triggerRef"]; - const tryOnBeforeMount: typeof import("@vueuse/core")["tryOnBeforeMount"]; - const tryOnBeforeUnmount: typeof import("@vueuse/core")["tryOnBeforeUnmount"]; - const tryOnMounted: typeof import("@vueuse/core")["tryOnMounted"]; - const tryOnScopeDispose: typeof import("@vueuse/core")["tryOnScopeDispose"]; - const tryOnUnmounted: typeof import("@vueuse/core")["tryOnUnmounted"]; - const unref: typeof import("vue")["unref"]; - const unrefElement: typeof import("@vueuse/core")["unrefElement"]; - const until: typeof import("@vueuse/core")["until"]; - const useActiveElement: typeof import("@vueuse/core")["useActiveElement"]; - const useAnimate: typeof import("@vueuse/core")["useAnimate"]; - const useArrayDifference: typeof import("@vueuse/core")["useArrayDifference"]; - const useArrayEvery: typeof import("@vueuse/core")["useArrayEvery"]; - const useArrayFilter: typeof import("@vueuse/core")["useArrayFilter"]; - const useArrayFind: typeof import("@vueuse/core")["useArrayFind"]; - const useArrayFindIndex: typeof import("@vueuse/core")["useArrayFindIndex"]; - const useArrayFindLast: typeof import("@vueuse/core")["useArrayFindLast"]; - const useArrayIncludes: typeof import("@vueuse/core")["useArrayIncludes"]; - const useArrayJoin: typeof import("@vueuse/core")["useArrayJoin"]; - const useArrayMap: typeof import("@vueuse/core")["useArrayMap"]; - const useArrayReduce: typeof import("@vueuse/core")["useArrayReduce"]; - const useArraySome: typeof import("@vueuse/core")["useArraySome"]; - const useArrayUnique: typeof import("@vueuse/core")["useArrayUnique"]; - const useAsyncQueue: typeof import("@vueuse/core")["useAsyncQueue"]; - const useAsyncState: typeof import("@vueuse/core")["useAsyncState"]; - const useAttrs: typeof import("vue")["useAttrs"]; - const useBase64: typeof import("@vueuse/core")["useBase64"]; - const useBattery: typeof import("@vueuse/core")["useBattery"]; - const useBluetooth: typeof import("@vueuse/core")["useBluetooth"]; - const useBreakpoints: typeof import("@vueuse/core")["useBreakpoints"]; - const useBroadcastChannel: typeof import("@vueuse/core")["useBroadcastChannel"]; - const useBrowserLocation: typeof import("@vueuse/core")["useBrowserLocation"]; - const useCached: typeof import("@vueuse/core")["useCached"]; - const useClipboard: typeof import("@vueuse/core")["useClipboard"]; - const useClipboardItems: typeof import("@vueuse/core")["useClipboardItems"]; - const useCloned: typeof import("@vueuse/core")["useCloned"]; - const useColorMode: typeof import("@vueuse/core")["useColorMode"]; - const useConfirmDialog: typeof import("@vueuse/core")["useConfirmDialog"]; - const useCounter: typeof import("@vueuse/core")["useCounter"]; - const useCssModule: typeof import("vue")["useCssModule"]; - const useCssVar: typeof import("@vueuse/core")["useCssVar"]; - const useCssVars: typeof import("vue")["useCssVars"]; - const useCurrentElement: typeof import("@vueuse/core")["useCurrentElement"]; - const useCycleList: typeof import("@vueuse/core")["useCycleList"]; - const useDark: typeof import("@vueuse/core")["useDark"]; - const useDateFormat: typeof import("@vueuse/core")["useDateFormat"]; - const useDebounce: typeof import("@vueuse/core")["useDebounce"]; - const useDebounceFn: typeof import("@vueuse/core")["useDebounceFn"]; - const useDebouncedRefHistory: typeof import("@vueuse/core")["useDebouncedRefHistory"]; - const useDeviceMotion: typeof import("@vueuse/core")["useDeviceMotion"]; - const useDeviceOrientation: typeof import("@vueuse/core")["useDeviceOrientation"]; - const useDevicePixelRatio: typeof import("@vueuse/core")["useDevicePixelRatio"]; - const useDevicesList: typeof import("@vueuse/core")["useDevicesList"]; - const useDisplayMedia: typeof import("@vueuse/core")["useDisplayMedia"]; - const useDocumentVisibility: typeof import("@vueuse/core")["useDocumentVisibility"]; - const useDraggable: typeof import("@vueuse/core")["useDraggable"]; - const useDropZone: typeof import("@vueuse/core")["useDropZone"]; - const useElementBounding: typeof import("@vueuse/core")["useElementBounding"]; - const useElementByPoint: typeof import("@vueuse/core")["useElementByPoint"]; - const useElementHover: typeof import("@vueuse/core")["useElementHover"]; - const useElementSize: typeof import("@vueuse/core")["useElementSize"]; - const useElementVisibility: typeof import("@vueuse/core")["useElementVisibility"]; - const useEventBus: typeof import("@vueuse/core")["useEventBus"]; - const useEventListener: typeof import("@vueuse/core")["useEventListener"]; - const useEventSource: typeof import("@vueuse/core")["useEventSource"]; - const useEyeDropper: typeof import("@vueuse/core")["useEyeDropper"]; - const useFavicon: typeof import("@vueuse/core")["useFavicon"]; - const useFetch: typeof import("@vueuse/core")["useFetch"]; - const useFileDialog: typeof import("@vueuse/core")["useFileDialog"]; - const useFileSystemAccess: typeof import("@vueuse/core")["useFileSystemAccess"]; - const useFocus: typeof import("@vueuse/core")["useFocus"]; - const useFocusWithin: typeof import("@vueuse/core")["useFocusWithin"]; - const useFps: typeof import("@vueuse/core")["useFps"]; - const useFullscreen: typeof import("@vueuse/core")["useFullscreen"]; - const useGamepad: typeof import("@vueuse/core")["useGamepad"]; - const useGeolocation: typeof import("@vueuse/core")["useGeolocation"]; - const useIdle: typeof import("@vueuse/core")["useIdle"]; - const useImage: typeof import("@vueuse/core")["useImage"]; - const useInfiniteScroll: typeof import("@vueuse/core")["useInfiniteScroll"]; - const useIntersectionObserver: typeof import("@vueuse/core")["useIntersectionObserver"]; - const useInterval: typeof import("@vueuse/core")["useInterval"]; - const useIntervalFn: typeof import("@vueuse/core")["useIntervalFn"]; - const useKeyModifier: typeof import("@vueuse/core")["useKeyModifier"]; - const useLastChanged: typeof import("@vueuse/core")["useLastChanged"]; - const useLink: typeof import("vue-router")["useLink"]; - const useLocalStorage: typeof import("@vueuse/core")["useLocalStorage"]; - const useMagicKeys: typeof import("@vueuse/core")["useMagicKeys"]; - const useManualRefHistory: typeof import("@vueuse/core")["useManualRefHistory"]; - const useMediaControls: typeof import("@vueuse/core")["useMediaControls"]; - const useMediaQuery: typeof import("@vueuse/core")["useMediaQuery"]; - const useMemoize: typeof import("@vueuse/core")["useMemoize"]; - const useMemory: typeof import("@vueuse/core")["useMemory"]; - const useMounted: typeof import("@vueuse/core")["useMounted"]; - const useMouse: typeof import("@vueuse/core")["useMouse"]; - const useMouseInElement: typeof import("@vueuse/core")["useMouseInElement"]; - const useMousePressed: typeof import("@vueuse/core")["useMousePressed"]; - const useMutationObserver: typeof import("@vueuse/core")["useMutationObserver"]; - const useNavigatorLanguage: typeof import("@vueuse/core")["useNavigatorLanguage"]; - const useNetwork: typeof import("@vueuse/core")["useNetwork"]; - const useNow: typeof import("@vueuse/core")["useNow"]; - const useObjectUrl: typeof import("@vueuse/core")["useObjectUrl"]; - const useOffsetPagination: typeof import("@vueuse/core")["useOffsetPagination"]; - const useOnline: typeof import("@vueuse/core")["useOnline"]; - const usePageLeave: typeof import("@vueuse/core")["usePageLeave"]; - const useParallax: typeof import("@vueuse/core")["useParallax"]; - const useParentElement: typeof import("@vueuse/core")["useParentElement"]; - const usePerformanceObserver: typeof import("@vueuse/core")["usePerformanceObserver"]; - const usePermission: typeof import("@vueuse/core")["usePermission"]; - const usePointer: typeof import("@vueuse/core")["usePointer"]; - const usePointerLock: typeof import("@vueuse/core")["usePointerLock"]; - const usePointerSwipe: typeof import("@vueuse/core")["usePointerSwipe"]; - const usePreferredColorScheme: typeof import("@vueuse/core")["usePreferredColorScheme"]; - const usePreferredContrast: typeof import("@vueuse/core")["usePreferredContrast"]; - const usePreferredDark: typeof import("@vueuse/core")["usePreferredDark"]; - const usePreferredLanguages: typeof import("@vueuse/core")["usePreferredLanguages"]; - const usePreferredReducedMotion: typeof import("@vueuse/core")["usePreferredReducedMotion"]; - const usePrevious: typeof import("@vueuse/core")["usePrevious"]; - const useRafFn: typeof import("@vueuse/core")["useRafFn"]; - const useRefHistory: typeof import("@vueuse/core")["useRefHistory"]; - const useResizeObserver: typeof import("@vueuse/core")["useResizeObserver"]; - const useRoute: typeof import("vue-router")["useRoute"]; - const useRouter: typeof import("vue-router")["useRouter"]; - const useScreenOrientation: typeof import("@vueuse/core")["useScreenOrientation"]; - const useScreenSafeArea: typeof import("@vueuse/core")["useScreenSafeArea"]; - const useScriptTag: typeof import("@vueuse/core")["useScriptTag"]; - const useScroll: typeof import("@vueuse/core")["useScroll"]; - const useScrollLock: typeof import("@vueuse/core")["useScrollLock"]; - const useSessionStorage: typeof import("@vueuse/core")["useSessionStorage"]; - const useShare: typeof import("@vueuse/core")["useShare"]; - const useSlots: typeof import("vue")["useSlots"]; - const useSorted: typeof import("@vueuse/core")["useSorted"]; - const useSpeechRecognition: typeof import("@vueuse/core")["useSpeechRecognition"]; - const useSpeechSynthesis: typeof import("@vueuse/core")["useSpeechSynthesis"]; - const useStepper: typeof import("@vueuse/core")["useStepper"]; - const useStorage: typeof import("@vueuse/core")["useStorage"]; - const useStorageAsync: typeof import("@vueuse/core")["useStorageAsync"]; - const useStyleTag: typeof import("@vueuse/core")["useStyleTag"]; - const useSupported: typeof import("@vueuse/core")["useSupported"]; - const useSwipe: typeof import("@vueuse/core")["useSwipe"]; - const useTemplateRefsList: typeof import("@vueuse/core")["useTemplateRefsList"]; - const useTextDirection: typeof import("@vueuse/core")["useTextDirection"]; - const useTextSelection: typeof import("@vueuse/core")["useTextSelection"]; - const useTextareaAutosize: typeof import("@vueuse/core")["useTextareaAutosize"]; - const useThrottle: typeof import("@vueuse/core")["useThrottle"]; - const useThrottleFn: typeof import("@vueuse/core")["useThrottleFn"]; - const useThrottledRefHistory: typeof import("@vueuse/core")["useThrottledRefHistory"]; - const useTimeAgo: typeof import("@vueuse/core")["useTimeAgo"]; - const useTimeout: typeof import("@vueuse/core")["useTimeout"]; - const useTimeoutFn: typeof import("@vueuse/core")["useTimeoutFn"]; - const useTimeoutPoll: typeof import("@vueuse/core")["useTimeoutPoll"]; - const useTimestamp: typeof import("@vueuse/core")["useTimestamp"]; - const useTitle: typeof import("@vueuse/core")["useTitle"]; - const useToNumber: typeof import("@vueuse/core")["useToNumber"]; - const useToString: typeof import("@vueuse/core")["useToString"]; - const useToggle: typeof import("@vueuse/core")["useToggle"]; - const useTransition: typeof import("@vueuse/core")["useTransition"]; - const useUrlSearchParams: typeof import("@vueuse/core")["useUrlSearchParams"]; - const useUserMedia: typeof import("@vueuse/core")["useUserMedia"]; - const useVModel: typeof import("@vueuse/core")["useVModel"]; - const useVModels: typeof import("@vueuse/core")["useVModels"]; - const useVibrate: typeof import("@vueuse/core")["useVibrate"]; - const useVirtualList: typeof import("@vueuse/core")["useVirtualList"]; - const useWakeLock: typeof import("@vueuse/core")["useWakeLock"]; - const useWebNotification: typeof import("@vueuse/core")["useWebNotification"]; - const useWebSocket: typeof import("@vueuse/core")["useWebSocket"]; - const useWebWorker: typeof import("@vueuse/core")["useWebWorker"]; - const useWebWorkerFn: typeof import("@vueuse/core")["useWebWorkerFn"]; - const useWindowFocus: typeof import("@vueuse/core")["useWindowFocus"]; - const useWindowScroll: typeof import("@vueuse/core")["useWindowScroll"]; - const useWindowSize: typeof import("@vueuse/core")["useWindowSize"]; - const watch: typeof import("vue")["watch"]; - const watchArray: typeof import("@vueuse/core")["watchArray"]; - const watchAtMost: typeof import("@vueuse/core")["watchAtMost"]; - const watchDebounced: typeof import("@vueuse/core")["watchDebounced"]; - const watchDeep: typeof import("@vueuse/core")["watchDeep"]; - const watchEffect: typeof import("vue")["watchEffect"]; - const watchIgnorable: typeof import("@vueuse/core")["watchIgnorable"]; - const watchImmediate: typeof import("@vueuse/core")["watchImmediate"]; - const watchOnce: typeof import("@vueuse/core")["watchOnce"]; - const watchPausable: typeof import("@vueuse/core")["watchPausable"]; - const watchPostEffect: typeof import("vue")["watchPostEffect"]; - const watchSyncEffect: typeof import("vue")["watchSyncEffect"]; - const watchThrottled: typeof import("@vueuse/core")["watchThrottled"]; - const watchTriggerable: typeof import("@vueuse/core")["watchTriggerable"]; - const watchWithFilter: typeof import("@vueuse/core")["watchWithFilter"]; - const whenever: typeof import("@vueuse/core")["whenever"]; -} -// for type re-export -declare global { - // @ts-ignore - export type { - Component, - ComponentPublicInstance, - ComputedRef, - ExtractDefaultPropTypes, - ExtractPropTypes, - ExtractPublicPropTypes, - InjectionKey, - PropType, - Ref, - VNode, - WritableComputedRef, - } from "vue"; - import("vue"); -} -// for vue template auto import -import { UnwrapRef } from "vue"; -declare module "vue" { - interface ComponentCustomProperties { - readonly EffectScope: UnwrapRef; - readonly ElForm: UnwrapRef; - readonly ElMessage: UnwrapRef< - typeof import("element-plus/es")["ElMessage"] - >; - readonly ElMessageBox: UnwrapRef< - typeof import("element-plus/es")["ElMessageBox"] - >; - readonly ElTree: UnwrapRef; - readonly acceptHMRUpdate: UnwrapRef< - typeof import("pinia")["acceptHMRUpdate"] - >; - readonly asyncComputed: UnwrapRef< - typeof import("@vueuse/core")["asyncComputed"] - >; - readonly autoResetRef: UnwrapRef< - typeof import("@vueuse/core")["autoResetRef"] - >; - readonly computed: UnwrapRef; - readonly computedAsync: UnwrapRef< - typeof import("@vueuse/core")["computedAsync"] - >; - readonly computedEager: UnwrapRef< - typeof import("@vueuse/core")["computedEager"] - >; - readonly computedInject: UnwrapRef< - typeof import("@vueuse/core")["computedInject"] - >; - readonly computedWithControl: UnwrapRef< - typeof import("@vueuse/core")["computedWithControl"] - >; - readonly controlledComputed: UnwrapRef< - typeof import("@vueuse/core")["controlledComputed"] - >; - readonly controlledRef: UnwrapRef< - typeof import("@vueuse/core")["controlledRef"] - >; - readonly createApp: UnwrapRef; - readonly createEventHook: UnwrapRef< - typeof import("@vueuse/core")["createEventHook"] - >; - readonly createGlobalState: UnwrapRef< - typeof import("@vueuse/core")["createGlobalState"] - >; - readonly createInjectionState: UnwrapRef< - typeof import("@vueuse/core")["createInjectionState"] - >; - readonly createPinia: UnwrapRef; - readonly createReactiveFn: UnwrapRef< - typeof import("@vueuse/core")["createReactiveFn"] - >; - readonly createReusableTemplate: UnwrapRef< - typeof import("@vueuse/core")["createReusableTemplate"] - >; - readonly createSharedComposable: UnwrapRef< - typeof import("@vueuse/core")["createSharedComposable"] - >; - readonly createTemplatePromise: UnwrapRef< - typeof import("@vueuse/core")["createTemplatePromise"] - >; - readonly createUnrefFn: UnwrapRef< - typeof import("@vueuse/core")["createUnrefFn"] - >; - readonly customRef: UnwrapRef; - readonly debouncedRef: UnwrapRef< - typeof import("@vueuse/core")["debouncedRef"] - >; - readonly debouncedWatch: UnwrapRef< - typeof import("@vueuse/core")["debouncedWatch"] - >; - readonly defineAsyncComponent: UnwrapRef< - typeof import("vue")["defineAsyncComponent"] - >; - readonly defineComponent: UnwrapRef< - typeof import("vue")["defineComponent"] - >; - readonly defineStore: UnwrapRef; - readonly eagerComputed: UnwrapRef< - typeof import("@vueuse/core")["eagerComputed"] - >; - readonly effectScope: UnwrapRef; - readonly extendRef: UnwrapRef; - readonly getActivePinia: UnwrapRef< - typeof import("pinia")["getActivePinia"] - >; - readonly getCurrentInstance: UnwrapRef< - typeof import("vue")["getCurrentInstance"] - >; - readonly getCurrentScope: UnwrapRef< - typeof import("vue")["getCurrentScope"] - >; - readonly h: UnwrapRef; - readonly ignorableWatch: UnwrapRef< - typeof import("@vueuse/core")["ignorableWatch"] - >; - readonly inject: UnwrapRef; - readonly injectLocal: UnwrapRef< - typeof import("@vueuse/core")["injectLocal"] - >; - readonly isDefined: UnwrapRef; - readonly isProxy: UnwrapRef; - readonly isReactive: UnwrapRef; - readonly isReadonly: UnwrapRef; - readonly isRef: UnwrapRef; - readonly makeDestructurable: UnwrapRef< - typeof import("@vueuse/core")["makeDestructurable"] - >; - readonly mapActions: UnwrapRef; - readonly mapGetters: UnwrapRef; - readonly mapState: UnwrapRef; - readonly mapStores: UnwrapRef; - readonly mapWritableState: UnwrapRef< - typeof import("pinia")["mapWritableState"] - >; - readonly markRaw: UnwrapRef; - readonly nextTick: UnwrapRef; - readonly onActivated: UnwrapRef; - readonly onBeforeMount: UnwrapRef; - readonly onBeforeRouteLeave: UnwrapRef< - typeof import("vue-router")["onBeforeRouteLeave"] - >; - readonly onBeforeRouteUpdate: UnwrapRef< - typeof import("vue-router")["onBeforeRouteUpdate"] - >; - readonly onBeforeUnmount: UnwrapRef< - typeof import("vue")["onBeforeUnmount"] - >; - readonly onBeforeUpdate: UnwrapRef; - readonly onClickOutside: UnwrapRef< - typeof import("@vueuse/core")["onClickOutside"] - >; - readonly onDeactivated: UnwrapRef; - readonly onErrorCaptured: UnwrapRef< - typeof import("vue")["onErrorCaptured"] - >; - readonly onKeyStroke: UnwrapRef< - typeof import("@vueuse/core")["onKeyStroke"] - >; - readonly onLongPress: UnwrapRef< - typeof import("@vueuse/core")["onLongPress"] - >; - readonly onMounted: UnwrapRef; - readonly onRenderTracked: UnwrapRef< - typeof import("vue")["onRenderTracked"] - >; - readonly onRenderTriggered: UnwrapRef< - typeof import("vue")["onRenderTriggered"] - >; - readonly onScopeDispose: UnwrapRef; - readonly onServerPrefetch: UnwrapRef< - typeof import("vue")["onServerPrefetch"] - >; - readonly onStartTyping: UnwrapRef< - typeof import("@vueuse/core")["onStartTyping"] - >; - readonly onUnmounted: UnwrapRef; - readonly onUpdated: UnwrapRef; - readonly pausableWatch: UnwrapRef< - typeof import("@vueuse/core")["pausableWatch"] - >; - readonly provide: UnwrapRef; - readonly provideLocal: UnwrapRef< - typeof import("@vueuse/core")["provideLocal"] - >; - readonly reactify: UnwrapRef; - readonly reactifyObject: UnwrapRef< - typeof import("@vueuse/core")["reactifyObject"] - >; - readonly reactive: UnwrapRef; - readonly reactiveComputed: UnwrapRef< - typeof import("@vueuse/core")["reactiveComputed"] - >; - readonly reactiveOmit: UnwrapRef< - typeof import("@vueuse/core")["reactiveOmit"] - >; - readonly reactivePick: UnwrapRef< - typeof import("@vueuse/core")["reactivePick"] - >; - readonly readonly: UnwrapRef; - readonly ref: UnwrapRef; - readonly refAutoReset: UnwrapRef< - typeof import("@vueuse/core")["refAutoReset"] - >; - readonly refDebounced: UnwrapRef< - typeof import("@vueuse/core")["refDebounced"] - >; - readonly refDefault: UnwrapRef; - readonly refThrottled: UnwrapRef< - typeof import("@vueuse/core")["refThrottled"] - >; - readonly refWithControl: UnwrapRef< - typeof import("@vueuse/core")["refWithControl"] - >; - readonly resolveComponent: UnwrapRef< - typeof import("vue")["resolveComponent"] - >; - readonly resolveRef: UnwrapRef; - readonly resolveUnref: UnwrapRef< - typeof import("@vueuse/core")["resolveUnref"] - >; - readonly setActivePinia: UnwrapRef< - typeof import("pinia")["setActivePinia"] - >; - readonly setMapStoreSuffix: UnwrapRef< - typeof import("pinia")["setMapStoreSuffix"] - >; - readonly shallowReactive: UnwrapRef< - typeof import("vue")["shallowReactive"] - >; - readonly shallowReadonly: UnwrapRef< - typeof import("vue")["shallowReadonly"] - >; - readonly shallowRef: UnwrapRef; - readonly storeToRefs: UnwrapRef; - readonly syncRef: UnwrapRef; - readonly syncRefs: UnwrapRef; - readonly templateRef: UnwrapRef< - typeof import("@vueuse/core")["templateRef"] - >; - readonly throttledRef: UnwrapRef< - typeof import("@vueuse/core")["throttledRef"] - >; - readonly throttledWatch: UnwrapRef< - typeof import("@vueuse/core")["throttledWatch"] - >; - readonly toRaw: UnwrapRef; - readonly toReactive: UnwrapRef; - readonly toRef: UnwrapRef; - readonly toRefs: UnwrapRef; - readonly toValue: UnwrapRef; - readonly triggerRef: UnwrapRef; - readonly tryOnBeforeMount: UnwrapRef< - typeof import("@vueuse/core")["tryOnBeforeMount"] - >; - readonly tryOnBeforeUnmount: UnwrapRef< - typeof import("@vueuse/core")["tryOnBeforeUnmount"] - >; - readonly tryOnMounted: UnwrapRef< - typeof import("@vueuse/core")["tryOnMounted"] - >; - readonly tryOnScopeDispose: UnwrapRef< - typeof import("@vueuse/core")["tryOnScopeDispose"] - >; - readonly tryOnUnmounted: UnwrapRef< - typeof import("@vueuse/core")["tryOnUnmounted"] - >; - readonly unref: UnwrapRef; - readonly unrefElement: UnwrapRef< - typeof import("@vueuse/core")["unrefElement"] - >; - readonly until: UnwrapRef; - readonly useActiveElement: UnwrapRef< - typeof import("@vueuse/core")["useActiveElement"] - >; - readonly useAnimate: UnwrapRef; - readonly useArrayDifference: UnwrapRef< - typeof import("@vueuse/core")["useArrayDifference"] - >; - readonly useArrayEvery: UnwrapRef< - typeof import("@vueuse/core")["useArrayEvery"] - >; - readonly useArrayFilter: UnwrapRef< - typeof import("@vueuse/core")["useArrayFilter"] - >; - readonly useArrayFind: UnwrapRef< - typeof import("@vueuse/core")["useArrayFind"] - >; - readonly useArrayFindIndex: UnwrapRef< - typeof import("@vueuse/core")["useArrayFindIndex"] - >; - readonly useArrayFindLast: UnwrapRef< - typeof import("@vueuse/core")["useArrayFindLast"] - >; - readonly useArrayIncludes: UnwrapRef< - typeof import("@vueuse/core")["useArrayIncludes"] - >; - readonly useArrayJoin: UnwrapRef< - typeof import("@vueuse/core")["useArrayJoin"] - >; - readonly useArrayMap: UnwrapRef< - typeof import("@vueuse/core")["useArrayMap"] - >; - readonly useArrayReduce: UnwrapRef< - typeof import("@vueuse/core")["useArrayReduce"] - >; - readonly useArraySome: UnwrapRef< - typeof import("@vueuse/core")["useArraySome"] - >; - readonly useArrayUnique: UnwrapRef< - typeof import("@vueuse/core")["useArrayUnique"] - >; - readonly useAsyncQueue: UnwrapRef< - typeof import("@vueuse/core")["useAsyncQueue"] - >; - readonly useAsyncState: UnwrapRef< - typeof import("@vueuse/core")["useAsyncState"] - >; - readonly useAttrs: UnwrapRef; - readonly useBase64: UnwrapRef; - readonly useBattery: UnwrapRef; - readonly useBluetooth: UnwrapRef< - typeof import("@vueuse/core")["useBluetooth"] - >; - readonly useBreakpoints: UnwrapRef< - typeof import("@vueuse/core")["useBreakpoints"] - >; - readonly useBroadcastChannel: UnwrapRef< - typeof import("@vueuse/core")["useBroadcastChannel"] - >; - readonly useBrowserLocation: UnwrapRef< - typeof import("@vueuse/core")["useBrowserLocation"] - >; - readonly useCached: UnwrapRef; - readonly useClipboard: UnwrapRef< - typeof import("@vueuse/core")["useClipboard"] - >; - readonly useClipboardItems: UnwrapRef< - typeof import("@vueuse/core")["useClipboardItems"] - >; - readonly useCloned: UnwrapRef; - readonly useColorMode: UnwrapRef< - typeof import("@vueuse/core")["useColorMode"] - >; - readonly useConfirmDialog: UnwrapRef< - typeof import("@vueuse/core")["useConfirmDialog"] - >; - readonly useCounter: UnwrapRef; - readonly useCssModule: UnwrapRef; - readonly useCssVar: UnwrapRef; - readonly useCssVars: UnwrapRef; - readonly useCurrentElement: UnwrapRef< - typeof import("@vueuse/core")["useCurrentElement"] - >; - readonly useCycleList: UnwrapRef< - typeof import("@vueuse/core")["useCycleList"] - >; - readonly useDark: UnwrapRef; - readonly useDateFormat: UnwrapRef< - typeof import("@vueuse/core")["useDateFormat"] - >; - readonly useDebounce: UnwrapRef< - typeof import("@vueuse/core")["useDebounce"] - >; - readonly useDebounceFn: UnwrapRef< - typeof import("@vueuse/core")["useDebounceFn"] - >; - readonly useDebouncedRefHistory: UnwrapRef< - typeof import("@vueuse/core")["useDebouncedRefHistory"] - >; - readonly useDeviceMotion: UnwrapRef< - typeof import("@vueuse/core")["useDeviceMotion"] - >; - readonly useDeviceOrientation: UnwrapRef< - typeof import("@vueuse/core")["useDeviceOrientation"] - >; - readonly useDevicePixelRatio: UnwrapRef< - typeof import("@vueuse/core")["useDevicePixelRatio"] - >; - readonly useDevicesList: UnwrapRef< - typeof import("@vueuse/core")["useDevicesList"] - >; - readonly useDisplayMedia: UnwrapRef< - typeof import("@vueuse/core")["useDisplayMedia"] - >; - readonly useDocumentVisibility: UnwrapRef< - typeof import("@vueuse/core")["useDocumentVisibility"] - >; - readonly useDraggable: UnwrapRef< - typeof import("@vueuse/core")["useDraggable"] - >; - readonly useDropZone: UnwrapRef< - typeof import("@vueuse/core")["useDropZone"] - >; - readonly useElementBounding: UnwrapRef< - typeof import("@vueuse/core")["useElementBounding"] - >; - readonly useElementByPoint: UnwrapRef< - typeof import("@vueuse/core")["useElementByPoint"] - >; - readonly useElementHover: UnwrapRef< - typeof import("@vueuse/core")["useElementHover"] - >; - readonly useElementSize: UnwrapRef< - typeof import("@vueuse/core")["useElementSize"] - >; - readonly useElementVisibility: UnwrapRef< - typeof import("@vueuse/core")["useElementVisibility"] - >; - readonly useEventBus: UnwrapRef< - typeof import("@vueuse/core")["useEventBus"] - >; - readonly useEventListener: UnwrapRef< - typeof import("@vueuse/core")["useEventListener"] - >; - readonly useEventSource: UnwrapRef< - typeof import("@vueuse/core")["useEventSource"] - >; - readonly useEyeDropper: UnwrapRef< - typeof import("@vueuse/core")["useEyeDropper"] - >; - readonly useFavicon: UnwrapRef; - readonly useFetch: UnwrapRef; - readonly useFileDialog: UnwrapRef< - typeof import("@vueuse/core")["useFileDialog"] - >; - readonly useFileSystemAccess: UnwrapRef< - typeof import("@vueuse/core")["useFileSystemAccess"] - >; - readonly useFocus: UnwrapRef; - readonly useFocusWithin: UnwrapRef< - typeof import("@vueuse/core")["useFocusWithin"] - >; - readonly useFps: UnwrapRef; - readonly useFullscreen: UnwrapRef< - typeof import("@vueuse/core")["useFullscreen"] - >; - readonly useGamepad: UnwrapRef; - readonly useGeolocation: UnwrapRef< - typeof import("@vueuse/core")["useGeolocation"] - >; - readonly useIdle: UnwrapRef; - readonly useImage: UnwrapRef; - readonly useInfiniteScroll: UnwrapRef< - typeof import("@vueuse/core")["useInfiniteScroll"] - >; - readonly useIntersectionObserver: UnwrapRef< - typeof import("@vueuse/core")["useIntersectionObserver"] - >; - readonly useInterval: UnwrapRef< - typeof import("@vueuse/core")["useInterval"] - >; - readonly useIntervalFn: UnwrapRef< - typeof import("@vueuse/core")["useIntervalFn"] - >; - readonly useKeyModifier: UnwrapRef< - typeof import("@vueuse/core")["useKeyModifier"] - >; - readonly useLastChanged: UnwrapRef< - typeof import("@vueuse/core")["useLastChanged"] - >; - readonly useLink: UnwrapRef; - readonly useLocalStorage: UnwrapRef< - typeof import("@vueuse/core")["useLocalStorage"] - >; - readonly useMagicKeys: UnwrapRef< - typeof import("@vueuse/core")["useMagicKeys"] - >; - readonly useManualRefHistory: UnwrapRef< - typeof import("@vueuse/core")["useManualRefHistory"] - >; - readonly useMediaControls: UnwrapRef< - typeof import("@vueuse/core")["useMediaControls"] - >; - readonly useMediaQuery: UnwrapRef< - typeof import("@vueuse/core")["useMediaQuery"] - >; - readonly useMemoize: UnwrapRef; - readonly useMemory: UnwrapRef; - readonly useMounted: UnwrapRef; - readonly useMouse: UnwrapRef; - readonly useMouseInElement: UnwrapRef< - typeof import("@vueuse/core")["useMouseInElement"] - >; - readonly useMousePressed: UnwrapRef< - typeof import("@vueuse/core")["useMousePressed"] - >; - readonly useMutationObserver: UnwrapRef< - typeof import("@vueuse/core")["useMutationObserver"] - >; - readonly useNavigatorLanguage: UnwrapRef< - typeof import("@vueuse/core")["useNavigatorLanguage"] - >; - readonly useNetwork: UnwrapRef; - readonly useNow: UnwrapRef; - readonly useObjectUrl: UnwrapRef< - typeof import("@vueuse/core")["useObjectUrl"] - >; - readonly useOffsetPagination: UnwrapRef< - typeof import("@vueuse/core")["useOffsetPagination"] - >; - readonly useOnline: UnwrapRef; - readonly usePageLeave: UnwrapRef< - typeof import("@vueuse/core")["usePageLeave"] - >; - readonly useParallax: UnwrapRef< - typeof import("@vueuse/core")["useParallax"] - >; - readonly useParentElement: UnwrapRef< - typeof import("@vueuse/core")["useParentElement"] - >; - readonly usePerformanceObserver: UnwrapRef< - typeof import("@vueuse/core")["usePerformanceObserver"] - >; - readonly usePermission: UnwrapRef< - typeof import("@vueuse/core")["usePermission"] - >; - readonly usePointer: UnwrapRef; - readonly usePointerLock: UnwrapRef< - typeof import("@vueuse/core")["usePointerLock"] - >; - readonly usePointerSwipe: UnwrapRef< - typeof import("@vueuse/core")["usePointerSwipe"] - >; - readonly usePreferredColorScheme: UnwrapRef< - typeof import("@vueuse/core")["usePreferredColorScheme"] - >; - readonly usePreferredContrast: UnwrapRef< - typeof import("@vueuse/core")["usePreferredContrast"] - >; - readonly usePreferredDark: UnwrapRef< - typeof import("@vueuse/core")["usePreferredDark"] - >; - readonly usePreferredLanguages: UnwrapRef< - typeof import("@vueuse/core")["usePreferredLanguages"] - >; - readonly usePreferredReducedMotion: UnwrapRef< - typeof import("@vueuse/core")["usePreferredReducedMotion"] - >; - readonly usePrevious: UnwrapRef< - typeof import("@vueuse/core")["usePrevious"] - >; - readonly useRafFn: UnwrapRef; - readonly useRefHistory: UnwrapRef< - typeof import("@vueuse/core")["useRefHistory"] - >; - readonly useResizeObserver: UnwrapRef< - typeof import("@vueuse/core")["useResizeObserver"] - >; - readonly useRoute: UnwrapRef; - readonly useRouter: UnwrapRef; - readonly useScreenOrientation: UnwrapRef< - typeof import("@vueuse/core")["useScreenOrientation"] - >; - readonly useScreenSafeArea: UnwrapRef< - typeof import("@vueuse/core")["useScreenSafeArea"] - >; - readonly useScriptTag: UnwrapRef< - typeof import("@vueuse/core")["useScriptTag"] - >; - readonly useScroll: UnwrapRef; - readonly useScrollLock: UnwrapRef< - typeof import("@vueuse/core")["useScrollLock"] - >; - readonly useSessionStorage: UnwrapRef< - typeof import("@vueuse/core")["useSessionStorage"] - >; - readonly useShare: UnwrapRef; - readonly useSlots: UnwrapRef; - readonly useSorted: UnwrapRef; - readonly useSpeechRecognition: UnwrapRef< - typeof import("@vueuse/core")["useSpeechRecognition"] - >; - readonly useSpeechSynthesis: UnwrapRef< - typeof import("@vueuse/core")["useSpeechSynthesis"] - >; - readonly useStepper: UnwrapRef; - readonly useStorage: UnwrapRef; - readonly useStorageAsync: UnwrapRef< - typeof import("@vueuse/core")["useStorageAsync"] - >; - readonly useStyleTag: UnwrapRef< - typeof import("@vueuse/core")["useStyleTag"] - >; - readonly useSupported: UnwrapRef< - typeof import("@vueuse/core")["useSupported"] - >; - readonly useSwipe: UnwrapRef; - readonly useTemplateRefsList: UnwrapRef< - typeof import("@vueuse/core")["useTemplateRefsList"] - >; - readonly useTextDirection: UnwrapRef< - typeof import("@vueuse/core")["useTextDirection"] - >; - readonly useTextSelection: UnwrapRef< - typeof import("@vueuse/core")["useTextSelection"] - >; - readonly useTextareaAutosize: UnwrapRef< - typeof import("@vueuse/core")["useTextareaAutosize"] - >; - readonly useThrottle: UnwrapRef< - typeof import("@vueuse/core")["useThrottle"] - >; - readonly useThrottleFn: UnwrapRef< - typeof import("@vueuse/core")["useThrottleFn"] - >; - readonly useThrottledRefHistory: UnwrapRef< - typeof import("@vueuse/core")["useThrottledRefHistory"] - >; - readonly useTimeAgo: UnwrapRef; - readonly useTimeout: UnwrapRef; - readonly useTimeoutFn: UnwrapRef< - typeof import("@vueuse/core")["useTimeoutFn"] - >; - readonly useTimeoutPoll: UnwrapRef< - typeof import("@vueuse/core")["useTimeoutPoll"] - >; - readonly useTimestamp: UnwrapRef< - typeof import("@vueuse/core")["useTimestamp"] - >; - readonly useTitle: UnwrapRef; - readonly useToNumber: UnwrapRef< - typeof import("@vueuse/core")["useToNumber"] - >; - readonly useToString: UnwrapRef< - typeof import("@vueuse/core")["useToString"] - >; - readonly useToggle: UnwrapRef; - readonly useTransition: UnwrapRef< - typeof import("@vueuse/core")["useTransition"] - >; - readonly useUrlSearchParams: UnwrapRef< - typeof import("@vueuse/core")["useUrlSearchParams"] - >; - readonly useUserMedia: UnwrapRef< - typeof import("@vueuse/core")["useUserMedia"] - >; - readonly useVModel: UnwrapRef; - readonly useVModels: UnwrapRef; - readonly useVibrate: UnwrapRef; - readonly useVirtualList: UnwrapRef< - typeof import("@vueuse/core")["useVirtualList"] - >; - readonly useWakeLock: UnwrapRef< - typeof import("@vueuse/core")["useWakeLock"] - >; - readonly useWebNotification: UnwrapRef< - typeof import("@vueuse/core")["useWebNotification"] - >; - readonly useWebSocket: UnwrapRef< - typeof import("@vueuse/core")["useWebSocket"] - >; - readonly useWebWorker: UnwrapRef< - typeof import("@vueuse/core")["useWebWorker"] - >; - readonly useWebWorkerFn: UnwrapRef< - typeof import("@vueuse/core")["useWebWorkerFn"] - >; - readonly useWindowFocus: UnwrapRef< - typeof import("@vueuse/core")["useWindowFocus"] - >; - readonly useWindowScroll: UnwrapRef< - typeof import("@vueuse/core")["useWindowScroll"] - >; - readonly useWindowSize: UnwrapRef< - typeof import("@vueuse/core")["useWindowSize"] - >; - readonly watch: UnwrapRef; - readonly watchArray: UnwrapRef; - readonly watchAtMost: UnwrapRef< - typeof import("@vueuse/core")["watchAtMost"] - >; - readonly watchDebounced: UnwrapRef< - typeof import("@vueuse/core")["watchDebounced"] - >; - readonly watchDeep: UnwrapRef; - readonly watchEffect: UnwrapRef; - readonly watchIgnorable: UnwrapRef< - typeof import("@vueuse/core")["watchIgnorable"] - >; - readonly watchImmediate: UnwrapRef< - typeof import("@vueuse/core")["watchImmediate"] - >; - readonly watchOnce: UnwrapRef; - readonly watchPausable: UnwrapRef< - typeof import("@vueuse/core")["watchPausable"] - >; - readonly watchPostEffect: UnwrapRef< - typeof import("vue")["watchPostEffect"] - >; - readonly watchSyncEffect: UnwrapRef< - typeof import("vue")["watchSyncEffect"] - >; - readonly watchThrottled: UnwrapRef< - typeof import("@vueuse/core")["watchThrottled"] - >; - readonly watchTriggerable: UnwrapRef< - typeof import("@vueuse/core")["watchTriggerable"] - >; - readonly watchWithFilter: UnwrapRef< - typeof import("@vueuse/core")["watchWithFilter"] - >; - readonly whenever: UnwrapRef; - } -} -declare module "@vue/runtime-core" { - interface ComponentCustomProperties { - readonly EffectScope: UnwrapRef; - readonly ElForm: UnwrapRef; - readonly ElMessage: UnwrapRef< - typeof import("element-plus/es")["ElMessage"] - >; - readonly ElMessageBox: UnwrapRef< - typeof import("element-plus/es")["ElMessageBox"] - >; - readonly ElTree: UnwrapRef; - readonly acceptHMRUpdate: UnwrapRef< - typeof import("pinia")["acceptHMRUpdate"] - >; - readonly asyncComputed: UnwrapRef< - typeof import("@vueuse/core")["asyncComputed"] - >; - readonly autoResetRef: UnwrapRef< - typeof import("@vueuse/core")["autoResetRef"] - >; - readonly computed: UnwrapRef; - readonly computedAsync: UnwrapRef< - typeof import("@vueuse/core")["computedAsync"] - >; - readonly computedEager: UnwrapRef< - typeof import("@vueuse/core")["computedEager"] - >; - readonly computedInject: UnwrapRef< - typeof import("@vueuse/core")["computedInject"] - >; - readonly computedWithControl: UnwrapRef< - typeof import("@vueuse/core")["computedWithControl"] - >; - readonly controlledComputed: UnwrapRef< - typeof import("@vueuse/core")["controlledComputed"] - >; - readonly controlledRef: UnwrapRef< - typeof import("@vueuse/core")["controlledRef"] - >; - readonly createApp: UnwrapRef; - readonly createEventHook: UnwrapRef< - typeof import("@vueuse/core")["createEventHook"] - >; - readonly createGlobalState: UnwrapRef< - typeof import("@vueuse/core")["createGlobalState"] - >; - readonly createInjectionState: UnwrapRef< - typeof import("@vueuse/core")["createInjectionState"] - >; - readonly createPinia: UnwrapRef; - readonly createReactiveFn: UnwrapRef< - typeof import("@vueuse/core")["createReactiveFn"] - >; - readonly createReusableTemplate: UnwrapRef< - typeof import("@vueuse/core")["createReusableTemplate"] - >; - readonly createSharedComposable: UnwrapRef< - typeof import("@vueuse/core")["createSharedComposable"] - >; - readonly createTemplatePromise: UnwrapRef< - typeof import("@vueuse/core")["createTemplatePromise"] - >; - readonly createUnrefFn: UnwrapRef< - typeof import("@vueuse/core")["createUnrefFn"] - >; - readonly customRef: UnwrapRef; - readonly debouncedRef: UnwrapRef< - typeof import("@vueuse/core")["debouncedRef"] - >; - readonly debouncedWatch: UnwrapRef< - typeof import("@vueuse/core")["debouncedWatch"] - >; - readonly defineAsyncComponent: UnwrapRef< - typeof import("vue")["defineAsyncComponent"] - >; - readonly defineComponent: UnwrapRef< - typeof import("vue")["defineComponent"] - >; - readonly defineStore: UnwrapRef; - readonly eagerComputed: UnwrapRef< - typeof import("@vueuse/core")["eagerComputed"] - >; - readonly effectScope: UnwrapRef; - readonly extendRef: UnwrapRef; - readonly getActivePinia: UnwrapRef< - typeof import("pinia")["getActivePinia"] - >; - readonly getCurrentInstance: UnwrapRef< - typeof import("vue")["getCurrentInstance"] - >; - readonly getCurrentScope: UnwrapRef< - typeof import("vue")["getCurrentScope"] - >; - readonly h: UnwrapRef; - readonly ignorableWatch: UnwrapRef< - typeof import("@vueuse/core")["ignorableWatch"] - >; - readonly inject: UnwrapRef; - readonly injectLocal: UnwrapRef< - typeof import("@vueuse/core")["injectLocal"] - >; - readonly isDefined: UnwrapRef; - readonly isProxy: UnwrapRef; - readonly isReactive: UnwrapRef; - readonly isReadonly: UnwrapRef; - readonly isRef: UnwrapRef; - readonly makeDestructurable: UnwrapRef< - typeof import("@vueuse/core")["makeDestructurable"] - >; - readonly mapActions: UnwrapRef; - readonly mapGetters: UnwrapRef; - readonly mapState: UnwrapRef; - readonly mapStores: UnwrapRef; - readonly mapWritableState: UnwrapRef< - typeof import("pinia")["mapWritableState"] - >; - readonly markRaw: UnwrapRef; - readonly nextTick: UnwrapRef; - readonly onActivated: UnwrapRef; - readonly onBeforeMount: UnwrapRef; - readonly onBeforeRouteLeave: UnwrapRef< - typeof import("vue-router")["onBeforeRouteLeave"] - >; - readonly onBeforeRouteUpdate: UnwrapRef< - typeof import("vue-router")["onBeforeRouteUpdate"] - >; - readonly onBeforeUnmount: UnwrapRef< - typeof import("vue")["onBeforeUnmount"] - >; - readonly onBeforeUpdate: UnwrapRef; - readonly onClickOutside: UnwrapRef< - typeof import("@vueuse/core")["onClickOutside"] - >; - readonly onDeactivated: UnwrapRef; - readonly onErrorCaptured: UnwrapRef< - typeof import("vue")["onErrorCaptured"] - >; - readonly onKeyStroke: UnwrapRef< - typeof import("@vueuse/core")["onKeyStroke"] - >; - readonly onLongPress: UnwrapRef< - typeof import("@vueuse/core")["onLongPress"] - >; - readonly onMounted: UnwrapRef; - readonly onRenderTracked: UnwrapRef< - typeof import("vue")["onRenderTracked"] - >; - readonly onRenderTriggered: UnwrapRef< - typeof import("vue")["onRenderTriggered"] - >; - readonly onScopeDispose: UnwrapRef; - readonly onServerPrefetch: UnwrapRef< - typeof import("vue")["onServerPrefetch"] - >; - readonly onStartTyping: UnwrapRef< - typeof import("@vueuse/core")["onStartTyping"] - >; - readonly onUnmounted: UnwrapRef; - readonly onUpdated: UnwrapRef; - readonly pausableWatch: UnwrapRef< - typeof import("@vueuse/core")["pausableWatch"] - >; - readonly provide: UnwrapRef; - readonly provideLocal: UnwrapRef< - typeof import("@vueuse/core")["provideLocal"] - >; - readonly reactify: UnwrapRef; - readonly reactifyObject: UnwrapRef< - typeof import("@vueuse/core")["reactifyObject"] - >; - readonly reactive: UnwrapRef; - readonly reactiveComputed: UnwrapRef< - typeof import("@vueuse/core")["reactiveComputed"] - >; - readonly reactiveOmit: UnwrapRef< - typeof import("@vueuse/core")["reactiveOmit"] - >; - readonly reactivePick: UnwrapRef< - typeof import("@vueuse/core")["reactivePick"] - >; - readonly readonly: UnwrapRef; - readonly ref: UnwrapRef; - readonly refAutoReset: UnwrapRef< - typeof import("@vueuse/core")["refAutoReset"] - >; - readonly refDebounced: UnwrapRef< - typeof import("@vueuse/core")["refDebounced"] - >; - readonly refDefault: UnwrapRef; - readonly refThrottled: UnwrapRef< - typeof import("@vueuse/core")["refThrottled"] - >; - readonly refWithControl: UnwrapRef< - typeof import("@vueuse/core")["refWithControl"] - >; - readonly resolveComponent: UnwrapRef< - typeof import("vue")["resolveComponent"] - >; - readonly resolveRef: UnwrapRef; - readonly resolveUnref: UnwrapRef< - typeof import("@vueuse/core")["resolveUnref"] - >; - readonly setActivePinia: UnwrapRef< - typeof import("pinia")["setActivePinia"] - >; - readonly setMapStoreSuffix: UnwrapRef< - typeof import("pinia")["setMapStoreSuffix"] - >; - readonly shallowReactive: UnwrapRef< - typeof import("vue")["shallowReactive"] - >; - readonly shallowReadonly: UnwrapRef< - typeof import("vue")["shallowReadonly"] - >; - readonly shallowRef: UnwrapRef; - readonly storeToRefs: UnwrapRef; - readonly syncRef: UnwrapRef; - readonly syncRefs: UnwrapRef; - readonly templateRef: UnwrapRef< - typeof import("@vueuse/core")["templateRef"] - >; - readonly throttledRef: UnwrapRef< - typeof import("@vueuse/core")["throttledRef"] - >; - readonly throttledWatch: UnwrapRef< - typeof import("@vueuse/core")["throttledWatch"] - >; - readonly toRaw: UnwrapRef; - readonly toReactive: UnwrapRef; - readonly toRef: UnwrapRef; - readonly toRefs: UnwrapRef; - readonly toValue: UnwrapRef; - readonly triggerRef: UnwrapRef; - readonly tryOnBeforeMount: UnwrapRef< - typeof import("@vueuse/core")["tryOnBeforeMount"] - >; - readonly tryOnBeforeUnmount: UnwrapRef< - typeof import("@vueuse/core")["tryOnBeforeUnmount"] - >; - readonly tryOnMounted: UnwrapRef< - typeof import("@vueuse/core")["tryOnMounted"] - >; - readonly tryOnScopeDispose: UnwrapRef< - typeof import("@vueuse/core")["tryOnScopeDispose"] - >; - readonly tryOnUnmounted: UnwrapRef< - typeof import("@vueuse/core")["tryOnUnmounted"] - >; - readonly unref: UnwrapRef; - readonly unrefElement: UnwrapRef< - typeof import("@vueuse/core")["unrefElement"] - >; - readonly until: UnwrapRef; - readonly useActiveElement: UnwrapRef< - typeof import("@vueuse/core")["useActiveElement"] - >; - readonly useAnimate: UnwrapRef; - readonly useArrayDifference: UnwrapRef< - typeof import("@vueuse/core")["useArrayDifference"] - >; - readonly useArrayEvery: UnwrapRef< - typeof import("@vueuse/core")["useArrayEvery"] - >; - readonly useArrayFilter: UnwrapRef< - typeof import("@vueuse/core")["useArrayFilter"] - >; - readonly useArrayFind: UnwrapRef< - typeof import("@vueuse/core")["useArrayFind"] - >; - readonly useArrayFindIndex: UnwrapRef< - typeof import("@vueuse/core")["useArrayFindIndex"] - >; - readonly useArrayFindLast: UnwrapRef< - typeof import("@vueuse/core")["useArrayFindLast"] - >; - readonly useArrayIncludes: UnwrapRef< - typeof import("@vueuse/core")["useArrayIncludes"] - >; - readonly useArrayJoin: UnwrapRef< - typeof import("@vueuse/core")["useArrayJoin"] - >; - readonly useArrayMap: UnwrapRef< - typeof import("@vueuse/core")["useArrayMap"] - >; - readonly useArrayReduce: UnwrapRef< - typeof import("@vueuse/core")["useArrayReduce"] - >; - readonly useArraySome: UnwrapRef< - typeof import("@vueuse/core")["useArraySome"] - >; - readonly useArrayUnique: UnwrapRef< - typeof import("@vueuse/core")["useArrayUnique"] - >; - readonly useAsyncQueue: UnwrapRef< - typeof import("@vueuse/core")["useAsyncQueue"] - >; - readonly useAsyncState: UnwrapRef< - typeof import("@vueuse/core")["useAsyncState"] - >; - readonly useAttrs: UnwrapRef; - readonly useBase64: UnwrapRef; - readonly useBattery: UnwrapRef; - readonly useBluetooth: UnwrapRef< - typeof import("@vueuse/core")["useBluetooth"] - >; - readonly useBreakpoints: UnwrapRef< - typeof import("@vueuse/core")["useBreakpoints"] - >; - readonly useBroadcastChannel: UnwrapRef< - typeof import("@vueuse/core")["useBroadcastChannel"] - >; - readonly useBrowserLocation: UnwrapRef< - typeof import("@vueuse/core")["useBrowserLocation"] - >; - readonly useCached: UnwrapRef; - readonly useClipboard: UnwrapRef< - typeof import("@vueuse/core")["useClipboard"] - >; - readonly useClipboardItems: UnwrapRef< - typeof import("@vueuse/core")["useClipboardItems"] - >; - readonly useCloned: UnwrapRef; - readonly useColorMode: UnwrapRef< - typeof import("@vueuse/core")["useColorMode"] - >; - readonly useConfirmDialog: UnwrapRef< - typeof import("@vueuse/core")["useConfirmDialog"] - >; - readonly useCounter: UnwrapRef; - readonly useCssModule: UnwrapRef; - readonly useCssVar: UnwrapRef; - readonly useCssVars: UnwrapRef; - readonly useCurrentElement: UnwrapRef< - typeof import("@vueuse/core")["useCurrentElement"] - >; - readonly useCycleList: UnwrapRef< - typeof import("@vueuse/core")["useCycleList"] - >; - readonly useDark: UnwrapRef; - readonly useDateFormat: UnwrapRef< - typeof import("@vueuse/core")["useDateFormat"] - >; - readonly useDebounce: UnwrapRef< - typeof import("@vueuse/core")["useDebounce"] - >; - readonly useDebounceFn: UnwrapRef< - typeof import("@vueuse/core")["useDebounceFn"] - >; - readonly useDebouncedRefHistory: UnwrapRef< - typeof import("@vueuse/core")["useDebouncedRefHistory"] - >; - readonly useDeviceMotion: UnwrapRef< - typeof import("@vueuse/core")["useDeviceMotion"] - >; - readonly useDeviceOrientation: UnwrapRef< - typeof import("@vueuse/core")["useDeviceOrientation"] - >; - readonly useDevicePixelRatio: UnwrapRef< - typeof import("@vueuse/core")["useDevicePixelRatio"] - >; - readonly useDevicesList: UnwrapRef< - typeof import("@vueuse/core")["useDevicesList"] - >; - readonly useDisplayMedia: UnwrapRef< - typeof import("@vueuse/core")["useDisplayMedia"] - >; - readonly useDocumentVisibility: UnwrapRef< - typeof import("@vueuse/core")["useDocumentVisibility"] - >; - readonly useDraggable: UnwrapRef< - typeof import("@vueuse/core")["useDraggable"] - >; - readonly useDropZone: UnwrapRef< - typeof import("@vueuse/core")["useDropZone"] - >; - readonly useElementBounding: UnwrapRef< - typeof import("@vueuse/core")["useElementBounding"] - >; - readonly useElementByPoint: UnwrapRef< - typeof import("@vueuse/core")["useElementByPoint"] - >; - readonly useElementHover: UnwrapRef< - typeof import("@vueuse/core")["useElementHover"] - >; - readonly useElementSize: UnwrapRef< - typeof import("@vueuse/core")["useElementSize"] - >; - readonly useElementVisibility: UnwrapRef< - typeof import("@vueuse/core")["useElementVisibility"] - >; - readonly useEventBus: UnwrapRef< - typeof import("@vueuse/core")["useEventBus"] - >; - readonly useEventListener: UnwrapRef< - typeof import("@vueuse/core")["useEventListener"] - >; - readonly useEventSource: UnwrapRef< - typeof import("@vueuse/core")["useEventSource"] - >; - readonly useEyeDropper: UnwrapRef< - typeof import("@vueuse/core")["useEyeDropper"] - >; - readonly useFavicon: UnwrapRef; - readonly useFetch: UnwrapRef; - readonly useFileDialog: UnwrapRef< - typeof import("@vueuse/core")["useFileDialog"] - >; - readonly useFileSystemAccess: UnwrapRef< - typeof import("@vueuse/core")["useFileSystemAccess"] - >; - readonly useFocus: UnwrapRef; - readonly useFocusWithin: UnwrapRef< - typeof import("@vueuse/core")["useFocusWithin"] - >; - readonly useFps: UnwrapRef; - readonly useFullscreen: UnwrapRef< - typeof import("@vueuse/core")["useFullscreen"] - >; - readonly useGamepad: UnwrapRef; - readonly useGeolocation: UnwrapRef< - typeof import("@vueuse/core")["useGeolocation"] - >; - readonly useIdle: UnwrapRef; - readonly useImage: UnwrapRef; - readonly useInfiniteScroll: UnwrapRef< - typeof import("@vueuse/core")["useInfiniteScroll"] - >; - readonly useIntersectionObserver: UnwrapRef< - typeof import("@vueuse/core")["useIntersectionObserver"] - >; - readonly useInterval: UnwrapRef< - typeof import("@vueuse/core")["useInterval"] - >; - readonly useIntervalFn: UnwrapRef< - typeof import("@vueuse/core")["useIntervalFn"] - >; - readonly useKeyModifier: UnwrapRef< - typeof import("@vueuse/core")["useKeyModifier"] - >; - readonly useLastChanged: UnwrapRef< - typeof import("@vueuse/core")["useLastChanged"] - >; - readonly useLink: UnwrapRef; - readonly useLocalStorage: UnwrapRef< - typeof import("@vueuse/core")["useLocalStorage"] - >; - readonly useMagicKeys: UnwrapRef< - typeof import("@vueuse/core")["useMagicKeys"] - >; - readonly useManualRefHistory: UnwrapRef< - typeof import("@vueuse/core")["useManualRefHistory"] - >; - readonly useMediaControls: UnwrapRef< - typeof import("@vueuse/core")["useMediaControls"] - >; - readonly useMediaQuery: UnwrapRef< - typeof import("@vueuse/core")["useMediaQuery"] - >; - readonly useMemoize: UnwrapRef; - readonly useMemory: UnwrapRef; - readonly useMounted: UnwrapRef; - readonly useMouse: UnwrapRef; - readonly useMouseInElement: UnwrapRef< - typeof import("@vueuse/core")["useMouseInElement"] - >; - readonly useMousePressed: UnwrapRef< - typeof import("@vueuse/core")["useMousePressed"] - >; - readonly useMutationObserver: UnwrapRef< - typeof import("@vueuse/core")["useMutationObserver"] - >; - readonly useNavigatorLanguage: UnwrapRef< - typeof import("@vueuse/core")["useNavigatorLanguage"] - >; - readonly useNetwork: UnwrapRef; - readonly useNow: UnwrapRef; - readonly useObjectUrl: UnwrapRef< - typeof import("@vueuse/core")["useObjectUrl"] - >; - readonly useOffsetPagination: UnwrapRef< - typeof import("@vueuse/core")["useOffsetPagination"] - >; - readonly useOnline: UnwrapRef; - readonly usePageLeave: UnwrapRef< - typeof import("@vueuse/core")["usePageLeave"] - >; - readonly useParallax: UnwrapRef< - typeof import("@vueuse/core")["useParallax"] - >; - readonly useParentElement: UnwrapRef< - typeof import("@vueuse/core")["useParentElement"] - >; - readonly usePerformanceObserver: UnwrapRef< - typeof import("@vueuse/core")["usePerformanceObserver"] - >; - readonly usePermission: UnwrapRef< - typeof import("@vueuse/core")["usePermission"] - >; - readonly usePointer: UnwrapRef; - readonly usePointerLock: UnwrapRef< - typeof import("@vueuse/core")["usePointerLock"] - >; - readonly usePointerSwipe: UnwrapRef< - typeof import("@vueuse/core")["usePointerSwipe"] - >; - readonly usePreferredColorScheme: UnwrapRef< - typeof import("@vueuse/core")["usePreferredColorScheme"] - >; - readonly usePreferredContrast: UnwrapRef< - typeof import("@vueuse/core")["usePreferredContrast"] - >; - readonly usePreferredDark: UnwrapRef< - typeof import("@vueuse/core")["usePreferredDark"] - >; - readonly usePreferredLanguages: UnwrapRef< - typeof import("@vueuse/core")["usePreferredLanguages"] - >; - readonly usePreferredReducedMotion: UnwrapRef< - typeof import("@vueuse/core")["usePreferredReducedMotion"] - >; - readonly usePrevious: UnwrapRef< - typeof import("@vueuse/core")["usePrevious"] - >; - readonly useRafFn: UnwrapRef; - readonly useRefHistory: UnwrapRef< - typeof import("@vueuse/core")["useRefHistory"] - >; - readonly useResizeObserver: UnwrapRef< - typeof import("@vueuse/core")["useResizeObserver"] - >; - readonly useRoute: UnwrapRef; - readonly useRouter: UnwrapRef; - readonly useScreenOrientation: UnwrapRef< - typeof import("@vueuse/core")["useScreenOrientation"] - >; - readonly useScreenSafeArea: UnwrapRef< - typeof import("@vueuse/core")["useScreenSafeArea"] - >; - readonly useScriptTag: UnwrapRef< - typeof import("@vueuse/core")["useScriptTag"] - >; - readonly useScroll: UnwrapRef; - readonly useScrollLock: UnwrapRef< - typeof import("@vueuse/core")["useScrollLock"] - >; - readonly useSessionStorage: UnwrapRef< - typeof import("@vueuse/core")["useSessionStorage"] - >; - readonly useShare: UnwrapRef; - readonly useSlots: UnwrapRef; - readonly useSorted: UnwrapRef; - readonly useSpeechRecognition: UnwrapRef< - typeof import("@vueuse/core")["useSpeechRecognition"] - >; - readonly useSpeechSynthesis: UnwrapRef< - typeof import("@vueuse/core")["useSpeechSynthesis"] - >; - readonly useStepper: UnwrapRef; - readonly useStorage: UnwrapRef; - readonly useStorageAsync: UnwrapRef< - typeof import("@vueuse/core")["useStorageAsync"] - >; - readonly useStyleTag: UnwrapRef< - typeof import("@vueuse/core")["useStyleTag"] - >; - readonly useSupported: UnwrapRef< - typeof import("@vueuse/core")["useSupported"] - >; - readonly useSwipe: UnwrapRef; - readonly useTemplateRefsList: UnwrapRef< - typeof import("@vueuse/core")["useTemplateRefsList"] - >; - readonly useTextDirection: UnwrapRef< - typeof import("@vueuse/core")["useTextDirection"] - >; - readonly useTextSelection: UnwrapRef< - typeof import("@vueuse/core")["useTextSelection"] - >; - readonly useTextareaAutosize: UnwrapRef< - typeof import("@vueuse/core")["useTextareaAutosize"] - >; - readonly useThrottle: UnwrapRef< - typeof import("@vueuse/core")["useThrottle"] - >; - readonly useThrottleFn: UnwrapRef< - typeof import("@vueuse/core")["useThrottleFn"] - >; - readonly useThrottledRefHistory: UnwrapRef< - typeof import("@vueuse/core")["useThrottledRefHistory"] - >; - readonly useTimeAgo: UnwrapRef; - readonly useTimeout: UnwrapRef; - readonly useTimeoutFn: UnwrapRef< - typeof import("@vueuse/core")["useTimeoutFn"] - >; - readonly useTimeoutPoll: UnwrapRef< - typeof import("@vueuse/core")["useTimeoutPoll"] - >; - readonly useTimestamp: UnwrapRef< - typeof import("@vueuse/core")["useTimestamp"] - >; - readonly useTitle: UnwrapRef; - readonly useToNumber: UnwrapRef< - typeof import("@vueuse/core")["useToNumber"] - >; - readonly useToString: UnwrapRef< - typeof import("@vueuse/core")["useToString"] - >; - readonly useToggle: UnwrapRef; - readonly useTransition: UnwrapRef< - typeof import("@vueuse/core")["useTransition"] - >; - readonly useUrlSearchParams: UnwrapRef< - typeof import("@vueuse/core")["useUrlSearchParams"] - >; - readonly useUserMedia: UnwrapRef< - typeof import("@vueuse/core")["useUserMedia"] - >; - readonly useVModel: UnwrapRef; - readonly useVModels: UnwrapRef; - readonly useVibrate: UnwrapRef; - readonly useVirtualList: UnwrapRef< - typeof import("@vueuse/core")["useVirtualList"] - >; - readonly useWakeLock: UnwrapRef< - typeof import("@vueuse/core")["useWakeLock"] - >; - readonly useWebNotification: UnwrapRef< - typeof import("@vueuse/core")["useWebNotification"] - >; - readonly useWebSocket: UnwrapRef< - typeof import("@vueuse/core")["useWebSocket"] - >; - readonly useWebWorker: UnwrapRef< - typeof import("@vueuse/core")["useWebWorker"] - >; - readonly useWebWorkerFn: UnwrapRef< - typeof import("@vueuse/core")["useWebWorkerFn"] - >; - readonly useWindowFocus: UnwrapRef< - typeof import("@vueuse/core")["useWindowFocus"] - >; - readonly useWindowScroll: UnwrapRef< - typeof import("@vueuse/core")["useWindowScroll"] - >; - readonly useWindowSize: UnwrapRef< - typeof import("@vueuse/core")["useWindowSize"] - >; - readonly watch: UnwrapRef; - readonly watchArray: UnwrapRef; - readonly watchAtMost: UnwrapRef< - typeof import("@vueuse/core")["watchAtMost"] - >; - readonly watchDebounced: UnwrapRef< - typeof import("@vueuse/core")["watchDebounced"] - >; - readonly watchDeep: UnwrapRef; - readonly watchEffect: UnwrapRef; - readonly watchIgnorable: UnwrapRef< - typeof import("@vueuse/core")["watchIgnorable"] - >; - readonly watchImmediate: UnwrapRef< - typeof import("@vueuse/core")["watchImmediate"] - >; - readonly watchOnce: UnwrapRef; - readonly watchPausable: UnwrapRef< - typeof import("@vueuse/core")["watchPausable"] - >; - readonly watchPostEffect: UnwrapRef< - typeof import("vue")["watchPostEffect"] - >; - readonly watchSyncEffect: UnwrapRef< - typeof import("vue")["watchSyncEffect"] - >; - readonly watchThrottled: UnwrapRef< - typeof import("@vueuse/core")["watchThrottled"] - >; - readonly watchTriggerable: UnwrapRef< - typeof import("@vueuse/core")["watchTriggerable"] - >; - readonly watchWithFilter: UnwrapRef< - typeof import("@vueuse/core")["watchWithFilter"] - >; - readonly whenever: UnwrapRef; - } -} diff --git a/vue3/src/typings/components.d.ts b/vue3/src/typings/components.d.ts deleted file mode 100644 index 418010e9..00000000 --- a/vue3/src/typings/components.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ -// @ts-nocheck -// Generated by unplugin-vue-components -// Read more: https://github.com/vuejs/core/pull/3399 -import '@vue/runtime-core' - -export {}; - -declare module "@vue/runtime-core" { - export interface GlobalComponents { - AppMain: typeof import("./../layout/components/AppMain.vue")["default"]; - BarChart: typeof import("./../views/dashboard/components/BarChart.vue")["default"]; - Breadcrumb: typeof import("./../components/Breadcrumb/index.vue")["default"]; - DeptTree: typeof import("./../views/system/user/components/dept-tree.vue")["default"]; - Dictionary: typeof import("./../components/Dictionary/index.vue")["default"]; - DictItem: typeof import("./../views/system/dict/components/dict-item.vue")["default"]; - ElAlert: typeof import("element-plus/es")["ElAlert"]; - ElBreadcrumb: typeof import("element-plus/es")["ElBreadcrumb"]; - ElBreadcrumbItem: typeof import("element-plus/es")["ElBreadcrumbItem"]; - ElButton: typeof import("element-plus/es")["ElButton"]; - ElCard: typeof import("element-plus/es")["ElCard"]; - ElCheckbox: typeof import("element-plus/es")["ElCheckbox"]; - ElCheckboxGroup: typeof import("element-plus/es")["ElCheckboxGroup"]; - ElCol: typeof import("element-plus/es")["ElCol"]; - ElDatePicker: typeof import("element-plus/es")["ElDatePicker"]; - ElDialog: typeof import("element-plus/es")["ElDialog"]; - ElDivider: typeof import("element-plus/es")["ElDivider"]; - ElDropdown: typeof import("element-plus/es")["ElDropdown"]; - ElDropdownItem: typeof import("element-plus/es")["ElDropdownItem"]; - ElDropdownMenu: typeof import("element-plus/es")["ElDropdownMenu"]; - ElForm: typeof import("element-plus/es")["ElForm"]; - ElFormItem: typeof import("element-plus/es")["ElFormItem"]; - ElIcon: typeof import("element-plus/es")["ElIcon"]; - ElImage: typeof import("element-plus/es")["ElImage"]; - ElInput: typeof import("element-plus/es")["ElInput"]; - ElInputNumber: typeof import("element-plus/es")["ElInputNumber"]; - ElLink: typeof import("element-plus/es")["ElLink"]; - ElMenu: typeof import("element-plus/es")["ElMenu"]; - ElMenuItem: typeof import("element-plus/es")["ElMenuItem"]; - ElOption: typeof import("element-plus/es")["ElOption"]; - ElPagination: typeof import("element-plus/es")["ElPagination"]; - ElPopover: typeof import("element-plus/es")["ElPopover"]; - ElRadio: typeof import("element-plus/es")["ElRadio"]; - ElRadioButton: typeof import("element-plus/es")["ElRadioButton"]; - ElRadioGroup: typeof import("element-plus/es")["ElRadioGroup"]; - ElRate: typeof import("element-plus/es")["ElRate"]; - ElRow: typeof import("element-plus/es")["ElRow"]; - ElScrollbar: typeof import("element-plus/es")["ElScrollbar"]; - ElSelect: typeof import("element-plus/es")["ElSelect"]; - ElSubMenu: typeof import("element-plus/es")["ElSubMenu"]; - ElSwitch: typeof import("element-plus/es")["ElSwitch"]; - ElTable: typeof import("element-plus/es")["ElTable"]; - ElTableColumn: typeof import("element-plus/es")["ElTableColumn"]; - ElTabPane: typeof import("element-plus/es")["ElTabPane"]; - ElTabs: typeof import("element-plus/es")["ElTabs"]; - ElTag: typeof import("element-plus/es")["ElTag"]; - ElTooltip: typeof import("element-plus/es")["ElTooltip"]; - ElTree: typeof import("element-plus/es")["ElTree"]; - ElTreeSelect: typeof import("element-plus/es")["ElTreeSelect"]; - ElUpload: typeof import("element-plus/es")["ElUpload"]; - FixedThead: typeof import("./../views/demo/table/dynamic-table/components/FixedThead.vue")["default"]; - FunnelChart: typeof import("./../views/dashboard/components/FunnelChart.vue")["default"]; - GithubCorner: typeof import("./../components/GithubCorner/index.vue")["default"]; - Hamburger: typeof import("./../components/Hamburger/index.vue")["default"]; - IconSelect: typeof import("./../components/IconSelect/index.vue")["default"]; - IEpArrowDown: typeof import("~icons/ep/arrow-down")["default"]; - IEpCaretBottom: typeof import("~icons/ep/caret-bottom")["default"]; - IEpCaretTop: typeof import("~icons/ep/caret-top")["default"]; - IEpClose: typeof import("~icons/ep/close")["default"]; - IEpCollection: typeof import("~icons/ep/collection")["default"]; - IEpDelete: typeof import("~icons/ep/delete")["default"]; - IEpDownload: typeof import("~icons/ep/download")["default"]; - IEpEdit: typeof import("~icons/ep/edit")["default"]; - IEpPicture: typeof import("~icons/ep/picture")["default"]; - IEpPlus: typeof import("~icons/ep/plus")["default"]; - IEpPosition: typeof import("~icons/ep/position")["default"]; - IEpRefresh: typeof import("~icons/ep/refresh")["default"]; - IEpRefreshLeft: typeof import("~icons/ep/refresh-left")["default"]; - IEpSearch: typeof import("~icons/ep/search")["default"]; - IEpSetting: typeof import("~icons/ep/setting")["default"]; - IEpSortDown: typeof import("~icons/ep/sort-down")["default"]; - IEpSortUp: typeof import("~icons/ep/sort-up")["default"]; - IEpTop: typeof import("~icons/ep/top")["default"]; - IEpUploadFilled: typeof import("~icons/ep/upload-filled")["default"]; - Item: typeof import("./../layout/components/Sidebar/Item.vue")["default"]; - LangSelect: typeof import("./../components/LangSelect/index.vue")["default"]; - LeftMenu: typeof import("./../layout/components/Sidebar/LeftMenu.vue")["default"]; - Link: typeof import("./../layout/components/Sidebar/Link.vue")["default"]; - Logo: typeof import("./../layout/components/Sidebar/Logo.vue")["default"]; - MultiUpload: typeof import("./../components/Upload/MultiUpload.vue")["default"]; - NavBar: typeof import("./../layout/components/NavBar/index.vue")["default"]; - NavRight: typeof import("./../layout/components/NavBar/NavRight.vue")["default"]; - Pagination: typeof import("./../components/Pagination/index.vue")["default"]; - PieChart: typeof import("./../views/dashboard/components/PieChart.vue")["default"]; - RadarChart: typeof import("./../views/dashboard/components/RadarChart.vue")["default"]; - RightPanel: typeof import("./../components/RightPanel/index.vue")["default"]; - RouterLink: typeof import("vue-router")["RouterLink"]; - RouterView: typeof import("vue-router")["RouterView"]; - ScrollPane: typeof import("./../layout/components/TagsView/ScrollPane.vue")["default"]; - Settings: typeof import("./../layout/components/Settings/index.vue")["default"]; - Sidebar: typeof import("./../layout/components/Sidebar/index.vue")["default"]; - SidebarItem: typeof import("./../layout/components/Sidebar/SidebarItem.vue")["default"]; - SingleUpload: typeof import("./../components/Upload/SingleUpload.vue")["default"]; - SizeSelect: typeof import("./../components/SizeSelect/index.vue")["default"]; - SvgIcon: typeof import("./../components/SvgIcon/index.vue")["default"]; - SwitchRoles: typeof import("./../views/demo/permission/components/SwitchRoles.vue")["default"]; - TagInput: typeof import("./../components/TagInput/index.vue")["default"]; - TagsView: typeof import("./../layout/components/TagsView/index.vue")["default"]; - TopMenu: typeof import("./../layout/components/Sidebar/TopMenu.vue")["default"]; - UnfixedThead: typeof import("./../views/demo/table/dynamic-table/components/UnfixedThead.vue")["default"]; - WangEditor: typeof import("./../components/WangEditor/index.vue")["default"]; - } - export interface ComponentCustomProperties { - vLoading: typeof import("element-plus/es")["ElLoadingDirective"]; - } -} diff --git a/vue3/src/typings/env.d.ts b/vue3/src/typings/env.d.ts deleted file mode 100644 index f6231980..00000000 --- a/vue3/src/typings/env.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/// - -declare module "*.vue" { - import { DefineComponent } from "vue"; - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types - const component: DefineComponent<{}, {}, any>; - export default component; -} - -interface ImportMetaEnv { - /** 应用端口 */ - VITE_APP_PORT: string; - /** API 基础路径 */ - VITE_APP_BASE_API: string; - VITE_APP_API_URL: string; -} - -interface ImportMeta { - readonly env: ImportMetaEnv; -} diff --git a/vue3/src/typings/global.d.ts b/vue3/src/typings/global.d.ts deleted file mode 100644 index c4bb3362..00000000 --- a/vue3/src/typings/global.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -declare global { - /** - * 分页查询参数 - */ - interface PageQuery { - pageNum: number; - pageSize: number; - } - - /** - * 分页响应对象 - */ - interface PageResult { - /** 数据列表 */ - list: T; - /** 总数 */ - total: number; - } - - /** - * 页签对象 - */ - interface TagView { - /** 页签名称 */ - name: string; - /** 页签标题 */ - title: string; - /** 页签路由路径 */ - path: string; - /** 页签路由完整路径 */ - fullPath: string; - /** 页签图标 */ - icon?: string; - /** 是否固定页签 */ - affix?: boolean; - /** 是否开启缓存 */ - keepAlive?: boolean; - /** 路由查询参数 */ - query?: any; - } - - /** - * 系统设置 - */ - interface AppSettings { - /** 系统标题 */ - title: string; - /** 系统版本 */ - version: string; - /** 是否显示设置 */ - showSettings: boolean; - /** 是否固定头部 */ - fixedHeader: boolean; - /** 是否显示多标签导航 */ - tagsView: boolean; - /** 是否显示侧边栏Logo */ - sidebarLogo: boolean; - /** 导航栏布局(left|top|mix) */ - layout: string; - /** 主题颜色 */ - themeColor: string; - /** 主题模式(dark|light) */ - theme: string; - /** 布局大小(default |large |small) */ - size: string; - /** 语言( zh-cn| en) */ - language: string; - /** 水印配置 */ - watermark: { - /** 是否开启水印 */ - enabled: boolean; - /** 水印内容 */ - content: string; - }; - } - - /** - * 组件数据源 - */ - interface OptionType { - /** 值 */ - value: string | number; - /** 文本 */ - label: string; - /** 子列表 */ - children?: OptionType[]; - } -} -export {}; diff --git a/vue3/src/typings/router.d.ts b/vue3/src/typings/router.d.ts deleted file mode 100644 index 99e187bf..00000000 --- a/vue3/src/typings/router.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import "vue-router"; - -declare module "vue-router" { - // https://router.vuejs.org/zh/guide/advanced/meta.html#typescript - // 可以通过扩展 RouteMeta 接口来输入 meta 字段 - interface RouteMeta { - /** 菜单名称 */ - title?: string; - /** 菜单图标 */ - icon?: string; - /** 菜单是否隐藏 */ - hidden?: boolean; - /** 是否固定页签 */ - affix?: boolean; - /** 是否缓存页面 */ - keepAlive?: boolean; - /** 是否在面包屑上隐藏 */ - breadcrumb?: boolean; - /** 拥有菜单权限的角色编码集合 */ - roles?: string[]; - } -} diff --git a/vue3/src/typings/shims-vue.d.ts b/vue3/src/typings/shims-vue.d.ts deleted file mode 100644 index abbc9312..00000000 --- a/vue3/src/typings/shims-vue.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module "xlsx/xlsx.mjs"; diff --git a/vue3/src/utils/i18n.ts b/vue3/src/utils/i18n.ts deleted file mode 100644 index 17ed904a..00000000 --- a/vue3/src/utils/i18n.ts +++ /dev/null @@ -1,12 +0,0 @@ -// translate router.meta.title, be used in breadcrumb sidebar tagsview -import i18n from "@/lang/index"; - -export function translateRouteTitle(title: any) { - // 判断是否存在国际化配置,如果没有原生返回 - const hasKey = i18n.global.te("route." + title); - if (hasKey) { - const translatedTitle = i18n.global.t("route." + title); - return translatedTitle; - } - return title; -} diff --git a/vue3/src/utils/index.ts b/vue3/src/utils/index.ts deleted file mode 100644 index 0d626608..00000000 --- a/vue3/src/utils/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Check if an element has a class - * @param {HTMLElement} ele - * @param {string} cls - * @returns {boolean} - */ -export function hasClass(ele: HTMLElement, cls: string) { - return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)")); -} - -/** - * Add class to element - * @param {HTMLElement} ele - * @param {string} cls - */ -export function addClass(ele: HTMLElement, cls: string) { - if (!hasClass(ele, cls)) ele.className += " " + cls; -} - -/** - * Remove class from element - * @param {HTMLElement} ele - * @param {string} cls - */ -export function removeClass(ele: HTMLElement, cls: string) { - if (hasClass(ele, cls)) { - const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)"); - ele.className = ele.className.replace(reg, " "); - } -} - -/** - * @param {string} path - * @returns {Boolean} - */ -export function isExternal(path: string) { - const isExternal = /^(https?:|http?:|mailto:|tel:)/.test(path); - return isExternal; -} diff --git a/vue3/src/utils/request.ts b/vue3/src/utils/request.ts deleted file mode 100644 index 92945321..00000000 --- a/vue3/src/utils/request.ts +++ /dev/null @@ -1,63 +0,0 @@ -import axios, { InternalAxiosRequestConfig, AxiosResponse } from "axios"; -import { useUserStoreHook } from "@/store/modules/user"; - -// 创建 axios 实例 -const service = axios.create({ - baseURL: import.meta.env.VITE_APP_BASE_API, - timeout: 50000, - headers: { "Content-Type": "application/json;charset=utf-8" }, -}); - -// 请求拦截器 -service.interceptors.request.use( - (config: InternalAxiosRequestConfig) => { - const userStore = useUserStoreHook(); - if (userStore.token) { - config.headers.Authorization = userStore.token; - } - return config; - }, - (error: any) => { - return Promise.reject(error); - } -); - -// 响应拦截器 -service.interceptors.response.use( - (response: AxiosResponse) => { - const { code, msg } = response.data; - if (code === "200" || code === 200) { - return response.data; - } - // 响应数据为二进制流处理(Excel导出) - if (response.data instanceof ArrayBuffer) { - return response; - } - - ElMessage.error(msg || "系统出错"); - return Promise.reject(new Error(msg || "Error")); - }, - (error: any) => { - if (error.response.data) { - const { code, msg } = error.response.data; - // token 过期,重新登录 - if (code === "A0230") { - ElMessageBox.confirm("当前页面已失效,请重新登录", "提示", { - confirmButtonText: "确定", - type: "warning", - }).then(() => { - const userStore = useUserStoreHook(); - userStore.resetToken().then(() => { - location.reload(); - }); - }); - } else { - ElMessage.error(msg || "系统出错"); - } - } - return Promise.reject(error.message); - } -); - -// 导出 axios 实例 -export default service; diff --git a/vue3/src/utils/scroll-to.ts b/vue3/src/utils/scroll-to.ts deleted file mode 100644 index c4e48fc2..00000000 --- a/vue3/src/utils/scroll-to.ts +++ /dev/null @@ -1,69 +0,0 @@ -const easeInOutQuad = (t: number, b: number, c: number, d: number) => { - t /= d / 2; - if (t < 1) { - return (c / 2) * t * t + b; - } - t--; - return (-c / 2) * (t * (t - 2) - 1) + b; -}; - -// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts -const requestAnimFrame = (function () { - return ( - window.requestAnimationFrame || - (window as any).webkitRequestAnimationFrame || - (window as any).mozRequestAnimationFrame || - function (callback) { - window.setTimeout(callback, 1000 / 60); - } - ); -})(); - -/** - * Because it's so fucking difficult to detect the scrolling element, just move them all - * @param {number} amount - */ -const move = (amount: number) => { - document.documentElement.scrollTop = amount; - (document.body.parentNode as HTMLElement).scrollTop = amount; - document.body.scrollTop = amount; -}; - -const position = () => { - return ( - document.documentElement.scrollTop || - (document.body.parentNode as HTMLElement).scrollTop || - document.body.scrollTop - ); -}; - -/** - * @param {number} to - * @param {number} duration - * @param {Function} callback - */ -export const scrollTo = (to: number, duration: number, callback?: any) => { - const start = position(); - const change = to - start; - const increment = 20; - let currentTime = 0; - duration = typeof duration === "undefined" ? 500 : duration; - const animateScroll = function () { - // increment the time - currentTime += increment; - // find the value with the quadratic in-out easing function - const val = easeInOutQuad(currentTime, start, change, duration); - // move the document.body - move(val); - // do the animation unless its over - if (currentTime < duration) { - requestAnimFrame(animateScroll); - } else { - if (callback && typeof callback === "function") { - // the animation is done so lets callback - callback(); - } - } - }; - animateScroll(); -}; diff --git a/vue3/src/views/dashboard/components/BarChart.vue b/vue3/src/views/dashboard/components/BarChart.vue deleted file mode 100644 index dc089b1c..00000000 --- a/vue3/src/views/dashboard/components/BarChart.vue +++ /dev/null @@ -1,194 +0,0 @@ - - - - - diff --git a/vue3/src/views/dashboard/components/FunnelChart.vue b/vue3/src/views/dashboard/components/FunnelChart.vue deleted file mode 100644 index 30fedb97..00000000 --- a/vue3/src/views/dashboard/components/FunnelChart.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - - diff --git a/vue3/src/views/dashboard/components/PieChart.vue b/vue3/src/views/dashboard/components/PieChart.vue deleted file mode 100644 index e8dd6702..00000000 --- a/vue3/src/views/dashboard/components/PieChart.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - - diff --git a/vue3/src/views/dashboard/components/RadarChart.vue b/vue3/src/views/dashboard/components/RadarChart.vue deleted file mode 100644 index 2081bf24..00000000 --- a/vue3/src/views/dashboard/components/RadarChart.vue +++ /dev/null @@ -1,100 +0,0 @@ - - - - diff --git a/vue3/src/views/dashboard/index.vue b/vue3/src/views/dashboard/index.vue deleted file mode 100644 index fbb43625..00000000 --- a/vue3/src/views/dashboard/index.vue +++ /dev/null @@ -1,291 +0,0 @@ - - - - - diff --git a/vue3/src/views/demo/api/apifox.vue b/vue3/src/views/demo/api/apifox.vue deleted file mode 100644 index e625213a..00000000 --- a/vue3/src/views/demo/api/apifox.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - diff --git a/vue3/src/views/demo/api/knife4j.vue b/vue3/src/views/demo/api/knife4j.vue deleted file mode 100644 index 4929cc6c..00000000 --- a/vue3/src/views/demo/api/knife4j.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - diff --git a/vue3/src/views/demo/api/swagger.vue b/vue3/src/views/demo/api/swagger.vue deleted file mode 100644 index dd6dc9d8..00000000 --- a/vue3/src/views/demo/api/swagger.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - diff --git a/vue3/src/views/demo/dict.vue b/vue3/src/views/demo/dict.vue deleted file mode 100644 index fcb6e060..00000000 --- a/vue3/src/views/demo/dict.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - diff --git a/vue3/src/views/demo/icon-selector.vue b/vue3/src/views/demo/icon-selector.vue deleted file mode 100644 index 6a419e2f..00000000 --- a/vue3/src/views/demo/icon-selector.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - diff --git a/vue3/src/views/demo/icons.vue b/vue3/src/views/demo/icons.vue deleted file mode 100644 index 5fd397fe..00000000 --- a/vue3/src/views/demo/icons.vue +++ /dev/null @@ -1,156 +0,0 @@ - - - - - diff --git a/vue3/src/views/demo/internal-doc.vue b/vue3/src/views/demo/internal-doc.vue deleted file mode 100644 index df51bacc..00000000 --- a/vue3/src/views/demo/internal-doc.vue +++ /dev/null @@ -1,28 +0,0 @@ - - diff --git a/vue3/src/views/demo/multi-level/children/children/level3-1.vue b/vue3/src/views/demo/multi-level/children/children/level3-1.vue deleted file mode 100644 index 888f58e9..00000000 --- a/vue3/src/views/demo/multi-level/children/children/level3-1.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vue3/src/views/demo/multi-level/children/children/level3-2.vue b/vue3/src/views/demo/multi-level/children/children/level3-2.vue deleted file mode 100644 index a99c98e9..00000000 --- a/vue3/src/views/demo/multi-level/children/children/level3-2.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vue3/src/views/demo/multi-level/children/level2.vue b/vue3/src/views/demo/multi-level/children/level2.vue deleted file mode 100644 index abcc3a7e..00000000 --- a/vue3/src/views/demo/multi-level/children/level2.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/vue3/src/views/demo/multi-level/level1.vue b/vue3/src/views/demo/multi-level/level1.vue deleted file mode 100644 index b26146d7..00000000 --- a/vue3/src/views/demo/multi-level/level1.vue +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/vue3/src/views/demo/signature.vue b/vue3/src/views/demo/signature.vue deleted file mode 100644 index c63fc444..00000000 --- a/vue3/src/views/demo/signature.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - diff --git a/vue3/src/views/demo/upload.vue b/vue3/src/views/demo/upload.vue deleted file mode 100644 index 7c8051ac..00000000 --- a/vue3/src/views/demo/upload.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/vue3/src/views/demo/wang-editor.vue b/vue3/src/views/demo/wang-editor.vue deleted file mode 100644 index d7ff4bb8..00000000 --- a/vue3/src/views/demo/wang-editor.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - diff --git a/vue3/src/views/demo/websocket.vue b/vue3/src/views/demo/websocket.vue deleted file mode 100644 index 23546a90..00000000 --- a/vue3/src/views/demo/websocket.vue +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - diff --git a/vue3/src/views/error-page/401.vue b/vue3/src/views/error-page/401.vue deleted file mode 100644 index 79b11aa5..00000000 --- a/vue3/src/views/error-page/401.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - diff --git a/vue3/src/views/error-page/404.vue b/vue3/src/views/error-page/404.vue deleted file mode 100644 index 4e689952..00000000 --- a/vue3/src/views/error-page/404.vue +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - diff --git a/vue3/src/views/login/index.vue b/vue3/src/views/login/index.vue deleted file mode 100644 index 6b0d6252..00000000 --- a/vue3/src/views/login/index.vue +++ /dev/null @@ -1,366 +0,0 @@ - - - - - diff --git a/vue3/src/views/redirect/index.vue b/vue3/src/views/redirect/index.vue deleted file mode 100644 index 4215bf69..00000000 --- a/vue3/src/views/redirect/index.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/vue3/src/views/system/dept/index.vue b/vue3/src/views/system/dept/index.vue deleted file mode 100644 index 268c4953..00000000 --- a/vue3/src/views/system/dept/index.vue +++ /dev/null @@ -1,316 +0,0 @@ - - diff --git a/vue3/src/views/system/dict/components/dict-item.vue b/vue3/src/views/system/dict/components/dict-item.vue deleted file mode 100644 index 6a68e892..00000000 --- a/vue3/src/views/system/dict/components/dict-item.vue +++ /dev/null @@ -1,326 +0,0 @@ - - - - diff --git a/vue3/src/views/system/dict/index.vue b/vue3/src/views/system/dict/index.vue deleted file mode 100644 index 5740dce3..00000000 --- a/vue3/src/views/system/dict/index.vue +++ /dev/null @@ -1,323 +0,0 @@ - - - - diff --git a/vue3/src/views/system/menu/index.vue b/vue3/src/views/system/menu/index.vue deleted file mode 100644 index bca9f991..00000000 --- a/vue3/src/views/system/menu/index.vue +++ /dev/null @@ -1,508 +0,0 @@ - - - diff --git a/vue3/src/views/system/role/index.vue b/vue3/src/views/system/role/index.vue deleted file mode 100644 index 17742b7a..00000000 --- a/vue3/src/views/system/role/index.vue +++ /dev/null @@ -1,402 +0,0 @@ - - - diff --git a/vue3/src/views/system/user/components/dept-tree.vue b/vue3/src/views/system/user/components/dept-tree.vue deleted file mode 100644 index 6394b328..00000000 --- a/vue3/src/views/system/user/components/dept-tree.vue +++ /dev/null @@ -1,69 +0,0 @@ - - - - diff --git a/vue3/src/views/system/user/index.vue b/vue3/src/views/system/user/index.vue deleted file mode 100644 index 80ca5c4e..00000000 --- a/vue3/src/views/system/user/index.vue +++ /dev/null @@ -1,660 +0,0 @@ - - - - diff --git a/vue3/src/views/tao/order/index.vue b/vue3/src/views/tao/order/index.vue deleted file mode 100644 index 315ac030..00000000 --- a/vue3/src/views/tao/order/index.vue +++ /dev/null @@ -1,505 +0,0 @@ - - - diff --git a/vue3/tsconfig.json b/vue3/tsconfig.json deleted file mode 100644 index 6d1e993c..00000000 --- a/vue3/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "useDefineForClassFields": true, - "module": "esnext", - "moduleResolution": "node", - "strict": true, - "noLib": false, - "sourceMap": true, - "resolveJsonModule": true, - "esModuleInterop": true, - "lib": ["esnext", "dom"], - "baseUrl": ".", - "allowJs": true, - "paths": { - "@/*": ["src/*"] - }, - "types": ["vite/client", "unplugin-icons/types/vue", "element-plus/global"], - "skipLibCheck": true /* Skip type checking all .d.ts files. */, - "allowSyntheticDefaultImports": true /* 允许默认导入 */, - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - - "jsx": "preserve", - "jsxFactory": "h", - "jsxFragmentFactory": "Fragment" - }, - "include": [ - "src/**/*.ts", - "src/**/*.vue", - "src/typings/**/*.d.ts", - "mock/**/*.ts", - "vite.config.ts" - ], - "exclude": ["node_modules", "dist", "**/*.js"] -} diff --git a/vue3/uno.config.ts b/vue3/uno.config.ts deleted file mode 100644 index 346dc505..00000000 --- a/vue3/uno.config.ts +++ /dev/null @@ -1,35 +0,0 @@ -// uno.config.ts -import { - defineConfig, - presetAttributify, - presetIcons, - presetTypography, - presetUno, - presetWebFonts, - transformerDirectives, - transformerVariantGroup, -} from "unocss"; - -export default defineConfig({ - shortcuts: { - "flex-center": "flex justify-center items-center", - }, - theme: { - colors: { - primary: "var(--el-color-primary)", - primary_dark: "var(--el-color-primary-light-5)", - }, - }, - presets: [ - presetUno(), - presetAttributify(), - presetIcons(), - presetTypography(), - presetWebFonts({ - fonts: { - // ... - }, - }), - ], - transformers: [transformerDirectives(), transformerVariantGroup()], -}); diff --git a/vue3/vite.config.ts b/vue3/vite.config.ts deleted file mode 100644 index caad601b..00000000 --- a/vue3/vite.config.ts +++ /dev/null @@ -1,220 +0,0 @@ -import vue from "@vitejs/plugin-vue"; -import { UserConfig, ConfigEnv, loadEnv, defineConfig } from "vite"; - -import AutoImport from "unplugin-auto-import/vite"; -import Components from "unplugin-vue-components/vite"; -import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; - -import Icons from "unplugin-icons/vite"; -import IconsResolver from "unplugin-icons/resolver"; - -import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; -import mockDevServerPlugin from "vite-plugin-mock-dev-server"; - -import vueJsx from "@vitejs/plugin-vue-jsx"; - -import UnoCSS from "unocss/vite"; -import { resolve } from "path"; - -const pathSrc = resolve(__dirname, "src"); -// https://cn.vitejs.dev/config -export default defineConfig(({ mode }: ConfigEnv): UserConfig => { - const env = loadEnv(mode, process.cwd()); - return { - resolve: { - alias: { - "@": pathSrc, - }, - }, - css: { - // CSS 预处理器 - preprocessorOptions: { - // 定义全局 SCSS 变量 - scss: { - javascriptEnabled: true, - additionalData: ` - @use "@/styles/variables.scss" as *; - `, - }, - }, - }, - server: { - // 允许IP访问 - host: "0.0.0.0", - // 应用端口 (默认:3000) - port: Number(env.VITE_APP_PORT), - // 运行是否自动打开浏览器 - open: true, - proxy: { - /** - * env.VITE_APP_BASE_API: /dev-api - */ - [env.VITE_APP_BASE_API]: { - changeOrigin: true, - // 线上接口地址 - // target: "http://www.qihang.com", - // 开发接口地址 - target: "http://localhost:8080", - rewrite: (path) => - path.replace(new RegExp("^" + env.VITE_APP_BASE_API), ""), - }, - }, - }, - plugins: [ - vue(), - // MOCK 服务,开启 MOCK 放开注释即可 - // mockDevServerPlugin(), - vueJsx(), - UnoCSS({ - hmrTopLevelAwait: false, - }), - // 自动导入参考: https://github.com/sxzz/element-plus-best-practices/blob/main/vite.config.ts - AutoImport({ - // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 - imports: ["vue", "@vueuse/core", "pinia", "vue-router"], - // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式) - resolvers: [ElementPlusResolver(), IconsResolver({})], - eslintrc: { - enabled: false, - filepath: "./.eslintrc-auto-import.json", - globalsPropValue: true, - }, - vueTemplate: true, - // 配置文件生成位置(false:关闭自动生成) - dts: false, - // dts: "src/typings/auto-imports.d.ts", - }), - - Components({ - resolvers: [ - // 自动导入 Element Plus 组件 - ElementPlusResolver(), - // 自动注册图标组件 - IconsResolver({ enabledCollections: ["ep"] }), - ], - // 指定自定义组件位置(默认:src/components) - dirs: ["src/components", "src/**/components"], - // 配置文件位置 (false:关闭自动生成) - dts: false, - // dts: "src/typings/components.d.ts", - }), - - Icons({ - autoInstall: true, - }), - createSvgIconsPlugin({ - // 指定需要缓存的图标文件夹 - iconDirs: [resolve(pathSrc, "assets/icons")], - // 指定symbolId格式 - symbolId: "icon-[dir]-[name]", - }), - ], - // 预加载项目必需的组件 - optimizeDeps: { - include: [ - "vue", - "vue-router", - "pinia", - "axios", - "element-plus/es/components/form/style/css", - "element-plus/es/components/form-item/style/css", - "element-plus/es/components/button/style/css", - "element-plus/es/components/input/style/css", - "element-plus/es/components/input-number/style/css", - "element-plus/es/components/switch/style/css", - "element-plus/es/components/upload/style/css", - "element-plus/es/components/menu/style/css", - "element-plus/es/components/col/style/css", - "element-plus/es/components/icon/style/css", - "element-plus/es/components/row/style/css", - "element-plus/es/components/tag/style/css", - "element-plus/es/components/dialog/style/css", - "element-plus/es/components/loading/style/css", - "element-plus/es/components/radio/style/css", - "element-plus/es/components/radio-group/style/css", - "element-plus/es/components/popover/style/css", - "element-plus/es/components/scrollbar/style/css", - "element-plus/es/components/tooltip/style/css", - "element-plus/es/components/dropdown/style/css", - "element-plus/es/components/dropdown-menu/style/css", - "element-plus/es/components/dropdown-item/style/css", - "element-plus/es/components/sub-menu/style/css", - "element-plus/es/components/menu-item/style/css", - "element-plus/es/components/divider/style/css", - "element-plus/es/components/card/style/css", - "element-plus/es/components/link/style/css", - "element-plus/es/components/breadcrumb/style/css", - "element-plus/es/components/breadcrumb-item/style/css", - "element-plus/es/components/table/style/css", - "element-plus/es/components/tree-select/style/css", - "element-plus/es/components/table-column/style/css", - "element-plus/es/components/select/style/css", - "element-plus/es/components/option/style/css", - "element-plus/es/components/pagination/style/css", - "element-plus/es/components/tree/style/css", - "element-plus/es/components/alert/style/css", - "element-plus/es/components/radio-button/style/css", - "element-plus/es/components/checkbox-group/style/css", - "element-plus/es/components/checkbox/style/css", - "element-plus/es/components/tabs/style/css", - "element-plus/es/components/tab-pane/style/css", - "element-plus/es/components/rate/style/css", - "element-plus/es/components/date-picker/style/css", - "element-plus/es/components/notification/style/css", - "element-plus/es/components/image/style/css", - "element-plus/es/components/statistic/style/css", - "element-plus/es/components/watermark/style/css", - "element-plus/es/components/config-provider/style/css", - "@vueuse/core", - "sortablejs", - "path-to-regexp", - "echarts", - "@wangeditor/editor", - "@wangeditor/editor-for-vue", - "vue-i18n", - ], - }, - // 构建配置 - build: { - chunkSizeWarningLimit: 2000, // 消除打包大小超过500kb警告 - minify: "terser", // Vite 2.6.x 以上需要配置 minify: "terser", terserOptions 才能生效 - terserOptions: { - compress: { - keep_infinity: true, // 防止 Infinity 被压缩成 1/0,这可能会导致 Chrome 上的性能问题 - drop_console: true, // 生产环境去除 console - drop_debugger: true, // 生产环境去除 debugger - }, - format: { - comments: false, // 删除注释 - }, - }, - rollupOptions: { - output: { - // manualChunks: { - // "vue-i18n": ["vue-i18n"], - // }, - // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值 - entryFileNames: "js/[name].[hash].js", - // 用于命名代码拆分时创建的共享块的输出命名 - chunkFileNames: "js/[name].[hash].js", - // 用于输出静态资源的命名,[ext]表示文件扩展名 - assetFileNames: (assetInfo: any) => { - const info = assetInfo.name.split("."); - let extType = info[info.length - 1]; - // console.log('文件信息', assetInfo.name) - if ( - /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/i.test(assetInfo.name) - ) { - extType = "media"; - } else if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(assetInfo.name)) { - extType = "img"; - } else if (/\.(woff2?|eot|ttf|otf)(\?.*)?$/i.test(assetInfo.name)) { - extType = "fonts"; - } - return `${extType}/[name].[hash].[ext]`; - }, - }, - }, - }, - }; -});