完善vue前端
28
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
|
||||
|
||||
欢迎一起交流!
|
||||
|
||||
|
||||
#### 捐献支持
|
||||
|
||||
作者为兼职做开源,平时还需要工作,如果帮到了您可以请作者吃个盒饭(目前还希望接收大家的捐献可以搭建一个演示环境!)
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
//
|
||||
//}
|
||||
|
|
|
|||
|
|
@ -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<SysMenu> sysMenuList = sysMenuService.selectMenuList(loginUser.getUserId());
|
||||
|
||||
|
||||
// Map<Long, List<MenusVo>> treeList = menusVos.stream().collect(Collectors.groupingBy(MenusVo::getParentId));
|
||||
// menusVos.forEach(menu -> menu.setChildren(treeList.getOrDefault(menu.getId(), null)));
|
||||
// List<MenusVo> result = menusVos.stream().filter(m -> m.getParentId() == 0).collect(Collectors.toList());
|
||||
Map<Long, List<SysMenu>> sysMenuMap = sysMenuList.stream().collect(Collectors.groupingBy(SysMenu::getParentId));
|
||||
// menuList.forEach(menu -> menu.setChildren(treeList.getOrDefault(menu.getMenuId(), new ArrayList<>())));
|
||||
// List<SysMenu> 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<SysMenu> result = menuList.stream().filter(node -> node.getParentId() == 0).collect(Collectors.toList());
|
||||
|
||||
|
||||
List<MenusVo> vo = new ArrayList<>();
|
||||
for (var entry : sysMenuMap.entrySet()) {
|
||||
Optional<SysMenu> 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<MenusVo> 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<MenusVo> 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<SysMenu> 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<Long, List<MenusVo>> treeList = menusVos.stream().collect(Collectors.groupingBy(MenusVo::getParentId));
|
||||
//// menusVos.forEach(menu -> menu.setChildren(treeList.getOrDefault(menu.getId(), null)));
|
||||
//// List<MenusVo> result = menusVos.stream().filter(m -> m.getParentId() == 0).collect(Collectors.toList());
|
||||
// Map<Long, List<SysMenu>> sysMenuMap = sysMenuList.stream().collect(Collectors.groupingBy(SysMenu::getParentId));
|
||||
//// menuList.forEach(menu -> menu.setChildren(treeList.getOrDefault(menu.getMenuId(), new ArrayList<>())));
|
||||
//// List<SysMenu> 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<SysMenu> result = menuList.stream().filter(node -> node.getParentId() == 0).collect(Collectors.toList());
|
||||
//
|
||||
//
|
||||
// List<MenusVo> vo = new ArrayList<>();
|
||||
// for (var entry : sysMenuMap.entrySet()) {
|
||||
// Optional<SysMenu> 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<MenusVo> 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<MenusVo> 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);
|
||||
// }
|
||||
//}
|
||||
|
|
|
|||
|
|
@ -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<SysMenu> 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<SysMenu> 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<SysMenu> 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));
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
|
@ -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<String> 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<String> 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);
|
||||
// }
|
||||
//}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ public class SysMenu extends BaseEntity
|
|||
private Long menuId;
|
||||
|
||||
/** 菜单名称 */
|
||||
@JsonProperty("title")
|
||||
// @JsonProperty("title")
|
||||
private String menuName;
|
||||
|
||||
/** 父菜单名称 */
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 # 关闭末尾空格修剪
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
## 开发环境
|
||||
NODE_ENV='development'
|
||||
|
||||
# 应用端口
|
||||
VITE_APP_PORT = 3000
|
||||
|
||||
# 代理前缀
|
||||
VITE_APP_BASE_API = '/dev-api'
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
## 生产环境
|
||||
NODE_ENV='production'
|
||||
|
||||
# 代理前缀
|
||||
VITE_APP_BASE_API = '/prod-api'
|
||||
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
dist
|
||||
node_modules
|
||||
public
|
||||
.husky
|
||||
.vscode
|
||||
.idea
|
||||
*.sh
|
||||
*.md
|
||||
|
||||
src/assets
|
||||
|
||||
.eslintrc.cjs
|
||||
.prettierrc.cjs
|
||||
.stylelintrc.cjs
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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",
|
||||
},
|
||||
};
|
||||
|
|
@ -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
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
npx --no-install commitlint --edit $1
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
npm run lint:lint-staged
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
dist
|
||||
node_modules
|
||||
public
|
||||
.husky
|
||||
.vscode
|
||||
.idea
|
||||
*.sh
|
||||
*.md
|
||||
|
||||
src/assets
|
||||
stats.html
|
||||
|
|
@ -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 文件中是否缩进 <style> 和 <script> 标签,默认 false
|
||||
vueIndentScriptAndStyle: false,
|
||||
|
||||
endOfLine: "auto",
|
||||
overrides: [
|
||||
{
|
||||
files: "*.html",
|
||||
options: {
|
||||
parser: "html",
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
dist
|
||||
node_modules
|
||||
public
|
||||
.husky
|
||||
.vscode
|
||||
.idea
|
||||
*.sh
|
||||
*.md
|
||||
|
||||
src/assets
|
||||
stats.html
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
module.exports = {
|
||||
// 继承推荐规范配置
|
||||
extends: [
|
||||
"stylelint-config-standard",
|
||||
"stylelint-config-recommended-scss",
|
||||
"stylelint-config-recommended-vue/scss",
|
||||
"stylelint-config-html/vue",
|
||||
"stylelint-config-recess-order",
|
||||
],
|
||||
// 指定不同文件对应的解析器
|
||||
overrides: [
|
||||
{
|
||||
files: ["**/*.{vue,html}"],
|
||||
customSyntax: "postcss-html",
|
||||
},
|
||||
{
|
||||
files: ["**/*.{css,scss}"],
|
||||
customSyntax: "postcss-scss",
|
||||
},
|
||||
],
|
||||
// 自定义规则
|
||||
rules: {
|
||||
"import-notation": "string", // 指定导入CSS文件的方式("string"|"url")
|
||||
"selector-class-pattern": null, // 选择器类名命名规则
|
||||
"custom-property-pattern": null, // 自定义属性命名规则
|
||||
"keyframes-name-pattern": null, // 动画帧节点样式命名规则
|
||||
"no-descending-specificity": null, // 允许无降序特异性
|
||||
// 允许 global 、export 、deep伪类
|
||||
"selector-pseudo-class-no-unknown": [
|
||||
true,
|
||||
{
|
||||
ignorePseudoClasses: ["global", "export", "deep"],
|
||||
},
|
||||
],
|
||||
// 允许未知属性
|
||||
"property-no-unknown": [
|
||||
true,
|
||||
{
|
||||
ignoreProperties: ["menuBg", "menuText", "menuActiveText"],
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
21
vue3/LICENSE
|
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2021-present 有来开源组织
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
module.exports = {
|
||||
// 继承的规则
|
||||
extends: ["@commitlint/config-conventional"],
|
||||
// 自定义规则
|
||||
rules: {
|
||||
// @see https://commitlint.js.org/#/reference-rules
|
||||
|
||||
// 提交类型枚举,git提交type必须是以下类型
|
||||
"type-enum": [
|
||||
2,
|
||||
"always",
|
||||
[
|
||||
"feat", // 新增功能
|
||||
"fix", // 修复缺陷
|
||||
"docs", // 文档变更
|
||||
"style", // 代码格式(不影响功能,例如空格、分号等格式修正)
|
||||
"refactor", // 代码重构(不包括 bug 修复、功能新增)
|
||||
"perf", // 性能优化
|
||||
"test", // 添加疏漏测试或已有测试改动
|
||||
"build", // 构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等)
|
||||
"ci", // 修改 CI 配置、脚本
|
||||
"revert", // 回滚 commit
|
||||
"chore", // 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)
|
||||
],
|
||||
],
|
||||
"subject-case": [0], // subject大小写不做校验
|
||||
},
|
||||
|
||||
prompt: {
|
||||
messages: {
|
||||
type: "选择你要提交的类型 :",
|
||||
scope: "选择一个提交范围(可选):",
|
||||
customScope: "请输入自定义的提交范围 :",
|
||||
subject: "填写简短精炼的变更描述 :\n",
|
||||
body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n',
|
||||
breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n',
|
||||
footerPrefixesSelect: "选择关联issue前缀(可选):",
|
||||
customFooterPrefix: "输入自定义issue前缀 :",
|
||||
footer: "列举关联issue (可选) 例如: #31, #I3244 :\n",
|
||||
generatingByAI: "正在通过 AI 生成你的提交简短描述...",
|
||||
generatedSelectByAI: "选择一个 AI 生成的简短描述:",
|
||||
confirmCommit: "是否提交或修改commit ?",
|
||||
},
|
||||
// prettier-ignore
|
||||
types: [
|
||||
{ value: "feat", name: "特性: ✨ 新增功能", emoji: ":sparkles:" },
|
||||
{ value: "fix", name: "修复: 🐛 修复缺陷", emoji: ":bug:" },
|
||||
{ value: "docs", name: "文档: 📝 文档变更", emoji: ":memo:" },
|
||||
{ value: "style", name: "格式: 🌈 代码格式(不影响功能,例如空格、分号等格式修正)", emoji: ":lipstick:" },
|
||||
{ value: "refactor", name: "重构: 🔄 代码重构(不包括 bug 修复、功能新增)", emoji: ":recycle:" },
|
||||
{ value: "perf", name: "性能: 🚀 性能优化", emoji: ":zap:" },
|
||||
{ value: "test", name: "测试: 🧪 添加疏漏测试或已有测试改动", emoji: ":white_check_mark:"},
|
||||
{ value: "build", name: "构建: 📦️ 构建流程、外部依赖变更(如升级 npm 包、修改 vite 配置等)", emoji: ":package:"},
|
||||
{ value: "ci", name: "集成: ⚙️ 修改 CI 配置、脚本", emoji: ":ferris_wheel:"},
|
||||
{ value: "revert", name: "回退: ↩️ 回滚 commit",emoji: ":rewind:"},
|
||||
{ value: "chore", name: "其他: 🛠️ 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)", emoji: ":hammer:"},
|
||||
],
|
||||
useEmoji: true,
|
||||
emojiAlign: "center",
|
||||
useAI: false,
|
||||
aiNumber: 1,
|
||||
themeColorCode: "",
|
||||
scopes: [],
|
||||
allowCustomScopes: true,
|
||||
allowEmptyScopes: true,
|
||||
customScopesAlign: "bottom",
|
||||
customScopesAlias: "custom",
|
||||
emptyScopesAlias: "empty",
|
||||
upperCaseSubject: false,
|
||||
markBreakingChangeMode: false,
|
||||
allowBreakingChanges: ["feat", "fix"],
|
||||
breaklineNumber: 100,
|
||||
breaklineChar: "|",
|
||||
skipQuestions: [],
|
||||
issuePrefixes: [
|
||||
{ value: "closed", name: "closed: ISSUES has been processed" },
|
||||
],
|
||||
customIssuePrefixAlign: "top",
|
||||
emptyIssuePrefixAlias: "skip",
|
||||
customIssuePrefixAlias: "custom",
|
||||
allowCustomIssuePrefix: true,
|
||||
allowEmptyIssuePrefix: true,
|
||||
confirmColorize: true,
|
||||
maxHeaderLength: Infinity,
|
||||
maxSubjectLength: Infinity,
|
||||
minSubjectLength: 0,
|
||||
scopeOverrides: undefined,
|
||||
defaultBody: "",
|
||||
defaultIssues: "",
|
||||
defaultScope: "",
|
||||
defaultSubject: "",
|
||||
},
|
||||
};
|
||||
140
vue3/index.html
|
|
@ -1,140 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta
|
||||
name="description"
|
||||
content="启航电商OMS系统"
|
||||
/>
|
||||
<meta name="keywords" content="oms,oms系统,订单处理系统" />
|
||||
<title>启航电商OMS系统</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app" class="app">
|
||||
<!--加载动画-->
|
||||
<div class="mesh-loader">
|
||||
<div class="set-one">
|
||||
<div class="circle"></div>
|
||||
<div class="circle"></div>
|
||||
</div>
|
||||
<div class="set-two">
|
||||
<div class="circle"></div>
|
||||
<div class="circle"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
<script>
|
||||
global = globalThis;
|
||||
</script>
|
||||
|
||||
<style>
|
||||
html,
|
||||
body,
|
||||
#app {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.mesh-loader {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.mesh-loader .circle {
|
||||
position: absolute;
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
margin: -12.5px;
|
||||
background: #03a9f4;
|
||||
border-radius: 50%;
|
||||
animation: mesh 3s ease-in-out infinite;
|
||||
animation: mesh 3s ease-in-out infinite -1.5s;
|
||||
}
|
||||
|
||||
.mesh-loader > div .circle:last-child {
|
||||
animation-delay: 0s;
|
||||
animation-delay: 0s;
|
||||
}
|
||||
|
||||
.mesh-loader > div {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
}
|
||||
|
||||
.mesh-loader > div:last-child {
|
||||
transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
@keyframes mesh {
|
||||
0% {
|
||||
transform: rotate(0);
|
||||
transform: rotate(0);
|
||||
transform-origin: 50% -100%;
|
||||
transform-origin: 50% -100%;
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
transform-origin: 50% -100%;
|
||||
transform-origin: 50% -100%;
|
||||
}
|
||||
|
||||
50.00001% {
|
||||
transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
transform-origin: 50% 200%;
|
||||
transform-origin: 50% 200%;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
transform-origin: 50% 200%;
|
||||
transform-origin: 50% 200%;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes mesh {
|
||||
0% {
|
||||
transform: rotate(0);
|
||||
transform: rotate(0);
|
||||
transform-origin: 50% -100%;
|
||||
transform-origin: 50% -100%;
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
transform-origin: 50% -100%;
|
||||
transform-origin: 50% -100%;
|
||||
}
|
||||
|
||||
50.00001% {
|
||||
transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
transform-origin: 50% 200%;
|
||||
transform-origin: 50% 200%;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
transform-origin: 50% 200%;
|
||||
transform-origin: 50% 200%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 4.2 KiB |
|
|
@ -1,11 +0,0 @@
|
|||
<script setup lang="ts">
|
||||
import { useAppStore } from "@/store/modules/app";
|
||||
|
||||
const appStore = useAppStore();
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<el-config-provider :locale="appStore.locale" :size="appStore.size">
|
||||
<router-view />
|
||||
</el-config-provider>
|
||||
</template>
|
||||
|
|
@ -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 },
|
||||
});
|
||||
}
|
||||
|
|
@ -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<LoginResult> {
|
||||
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<CaptchaResult> {
|
||||
return request({
|
||||
url: "/api/v1/auth/captcha",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<DeptVO[]> {
|
||||
return request({
|
||||
url: "/api/v1/dept",
|
||||
method: "get",
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 部门下拉列表
|
||||
*/
|
||||
export function getDeptOptions(): AxiosPromise<OptionType[]> {
|
||||
return request({
|
||||
url: "/api/v1/dept/options",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部门详情
|
||||
*
|
||||
* @param id
|
||||
*/
|
||||
export function getDeptForm(id: number): AxiosPromise<DeptForm> {
|
||||
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",
|
||||
});
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<DictTypePageResult> {
|
||||
return request({
|
||||
url: "/api/v1/dict/types/page",
|
||||
method: "get",
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典类型表单数据
|
||||
*
|
||||
* @param id
|
||||
*/
|
||||
export function getDictTypeForm(id: number): AxiosPromise<DictTypeForm> {
|
||||
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<OptionType[]> {
|
||||
return request({
|
||||
url: "/api/v1/dict/" + typeCode + "/options",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典分页列表
|
||||
*/
|
||||
export function getDictPage(
|
||||
queryParams: DictQuery
|
||||
): AxiosPromise<DictPageResult> {
|
||||
return request({
|
||||
url: "/api/v1/dict/page",
|
||||
method: "get",
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取字典表单数据
|
||||
*
|
||||
* @param id
|
||||
*/
|
||||
export function getDictFormData(id: number): AxiosPromise<DictForm> {
|
||||
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",
|
||||
});
|
||||
}
|
||||
|
|
@ -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<DictTypePageVO[]>;
|
||||
|
||||
/**
|
||||
* 字典表单类型声明
|
||||
*/
|
||||
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<DictPageVO[]>;
|
||||
|
||||
/**
|
||||
* 字典表单
|
||||
*/
|
||||
export interface DictForm {
|
||||
/**
|
||||
* 字典ID
|
||||
*/
|
||||
id?: number;
|
||||
/**
|
||||
* 字典名称
|
||||
*/
|
||||
name?: string;
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
sort?: number;
|
||||
/**
|
||||
* 状态(1:启用;0:禁用)
|
||||
*/
|
||||
status?: number;
|
||||
/**
|
||||
* 类型编码
|
||||
*/
|
||||
typeCode?: string;
|
||||
/**
|
||||
* 值
|
||||
*/
|
||||
value?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
|
@ -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<FileInfo> {
|
||||
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 },
|
||||
});
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
/**
|
||||
* 文件API类型声明
|
||||
*/
|
||||
export interface FileInfo {
|
||||
name: string;
|
||||
url: string;
|
||||
}
|
||||
|
|
@ -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<MenuVO[]> {
|
||||
return request({
|
||||
url: "/api/v1/menus",
|
||||
method: "get",
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单下拉树形列表
|
||||
*/
|
||||
export function getMenuOptions(): AxiosPromise<OptionType[]> {
|
||||
return request({
|
||||
url: "/api/v1/menus/options",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单表单数据
|
||||
*
|
||||
* @param id
|
||||
*/
|
||||
export function getMenuForm(id: number): AxiosPromise<MenuForm> {
|
||||
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",
|
||||
});
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<RolePageResult> {
|
||||
return request({
|
||||
url: "/api/v1/roles/page",
|
||||
method: "get",
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色下拉数据
|
||||
*
|
||||
* @param queryParams
|
||||
*/
|
||||
export function getRoleOptions(
|
||||
queryParams?: RoleQuery
|
||||
): AxiosPromise<OptionType[]> {
|
||||
return request({
|
||||
url: "/api/v1/roles/options",
|
||||
method: "get",
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色的菜单ID集合
|
||||
*
|
||||
* @param queryParams
|
||||
*/
|
||||
export function getRoleMenuIds(roleId: number): AxiosPromise<number[]> {
|
||||
return request({
|
||||
url: "/api/v1/roles/" + roleId + "/menuIds",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 分配菜单权限给角色
|
||||
*
|
||||
* @param queryParams
|
||||
*/
|
||||
export function updateRoleMenus(
|
||||
roleId: number,
|
||||
data: number[]
|
||||
): AxiosPromise<any> {
|
||||
return request({
|
||||
url: "/api/v1/roles/" + roleId + "/menus",
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取角色详情
|
||||
*
|
||||
* @param id
|
||||
*/
|
||||
export function getRoleForm(id: number): AxiosPromise<RoleForm> {
|
||||
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",
|
||||
});
|
||||
}
|
||||
|
|
@ -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<RolePageVO[]>;
|
||||
|
||||
/**
|
||||
* 角色表单对象
|
||||
*/
|
||||
export interface RoleForm {
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 角色编码
|
||||
*/
|
||||
code: string;
|
||||
/**
|
||||
* 数据权限
|
||||
*/
|
||||
dataScope?: number;
|
||||
|
||||
/**
|
||||
* 角色名称
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
sort?: number;
|
||||
/**
|
||||
* 角色状态(1-正常;0-停用)
|
||||
*/
|
||||
status?: number;
|
||||
}
|
||||
|
|
@ -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<ResultVo> {
|
||||
return request({
|
||||
url: "/api/tao-api/goods/list",
|
||||
method: "get",
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -1,140 +0,0 @@
|
|||
import request from "@/utils/request";
|
||||
import { AxiosPromise } from "axios";
|
||||
import { UserForm, UserInfo, UserPageVO, UserQuery } from "./types";
|
||||
|
||||
/**
|
||||
* 登录成功后获取用户信息(昵称、头像、权限集合和角色集合)
|
||||
*/
|
||||
export function getUserInfoApi(): AxiosPromise<UserInfo> {
|
||||
return request({
|
||||
url: "/api/sys-api/users/me",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户分页列表
|
||||
*
|
||||
* @param queryParams
|
||||
*/
|
||||
export function getUserPage(
|
||||
queryParams: UserQuery
|
||||
): AxiosPromise<PageResult<UserPageVO[]>> {
|
||||
return request({
|
||||
url: "/api/v1/users/page",
|
||||
method: "get",
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户表单详情
|
||||
*
|
||||
* @param userId
|
||||
*/
|
||||
export function getUserForm(userId: number): AxiosPromise<UserForm> {
|
||||
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",
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
<svg t="1675604204039" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9667" width="200" height="200"><path d="M499.2 671.232v-261.12h102.4c16.384 0 28.672 1.024 37.888 2.56 13.312 2.048 24.576 6.656 34.816 13.312 9.728 6.656 17.92 16.384 23.552 28.16 6.144 12.288 8.704 25.6 8.192 38.4 0 23.552-7.68 44.032-23.04 59.904-15.36 16.896-40.96 25.088-78.848 25.088h-43.52V670.72l-61.44 0.512z m281.6 0h-61.952v-261.12h61.952v261.12z m-287.744 0H423.936l-27.136-69.632H323.072l-25.088 69.632h-66.56l100.352-261.12h54.272l107.008 261.12z m-149.504-125.952h32.256l-15.872-42.496c0-0.512-0.512-1.024-0.512-1.536l-15.872 44.032z m217.6-26.112h43.52c20.48 0 28.16-4.608 31.232-7.168 4.608-4.096 7.168-10.752 7.168-18.944 0-6.656-1.536-11.776-4.096-15.36-2.56-3.584-6.144-6.144-10.752-7.68-1.536-0.512-6.656-1.536-24.064-1.536h-43.008v50.688z" p-id="9668"></path><path d="M747.52 842.752h-235.52c-8.704 0-16.384-3.584-22.016-9.728-6.144-6.144-9.216-14.336-8.704-22.528 0.512-16.896 14.336-30.72 31.232-31.232H747.52c115.712 0 209.408-94.208 209.408-209.408 0-104.96-78.848-194.56-183.296-207.872l-22.528-3.072-4.608-22.016c-21.504-104.96-114.688-180.736-222.208-180.736-124.928 0-226.304 101.376-226.304 226.304v8.704l1.536 36.352-36.352-4.096c-6.144-1.024-12.288-1.024-18.432-1.024-98.304 0-178.176 79.872-178.176 178.176 0 98.304 79.872 178.176 178.176 178.176h63.488c8.704 0 16.384 3.584 22.016 9.728 6.144 6.144 9.216 14.336 8.704 22.528-0.512 16.896-14.336 30.72-31.232 31.232H244.736h-1.024c-64 0-123.904-25.088-169.472-70.144C28.16 726.528 3.072 665.6 3.072 601.088 3.072 471.552 107.008 364.544 235.52 359.936c12.288-157.184 149.504-276.48 307.2-266.24 59.904 3.584 118.784 27.136 165.888 65.536 45.568 37.376 77.824 87.04 94.208 143.872 125.952 26.112 217.088 137.728 217.088 266.752 0.512 151.04-121.856 272.896-272.384 272.896z" p-id="9669"></path><path d="M572.416 930.816c-8.192 0-15.872-3.072-21.504-8.704l-119.296-109.568 113.152-117.76c6.144-6.144 13.824-9.216 22.528-9.216 8.704 0 16.384 3.072 22.528 9.216 11.776 11.776 12.288 31.232 1.024 44.032L522.24 809.472l71.68 66.048c6.144 5.632 9.728 13.312 10.24 22.016 0.512 8.704-2.56 16.384-8.192 23.04-6.656 6.656-14.848 10.24-23.552 10.24z" p-id="9670"></path></svg>
|
||||
|
Before Width: | Height: | Size: 2.2 KiB |
|
|
@ -1,9 +0,0 @@
|
|||
<svg t="1655050462467" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2131"
|
||||
width="200" height="200">
|
||||
<path
|
||||
d="M917.6 267.2c-36.1-2.5-72.4-9.3-103.6-19.3-10.1-3-20.2-6.4-30.3-10-21.4-6.3-50.5-18.8-83.6-36.6-0.4-0.2-0.7-0.4-1.1-0.6-7.8-4.2-15.7-8.7-23.8-13.4-10.9-6.3-21.7-12.9-32.5-19.9-0.4-0.3-0.8-0.5-1.2-0.8-7.7-5-15.5-10.2-23.1-15.5-5-3.4-10-7.1-15-10.7-3.8-2.8-7.5-5.3-11.3-8.2-27.4-20.5-54.5-43.5-79.9-68.3-25.4 24.8-52.5 47.8-79.9 68.3-3.7 2.8-7.5 5.4-11.3 8.2-5 3.6-10 7.3-15 10.7-7.7 5.4-15.4 10.5-23.1 15.5-0.4 0.3-0.8 0.5-1.2 0.8-10.8 6.9-21.6 13.6-32.5 19.9-8.1 4.7-16 9.2-23.8 13.4-0.3 0.2-0.7 0.4-1 0.6-33 17.8-62.2 30.3-83.6 36.6-10.1 3.6-20.2 7-30.3 10-31.1 10-67.4 16.8-103.6 19.3h0.1c1.1 16.2 2.1 37.7 3.4 60.9h0.7c6.1 86.8 23.5 210.2 49.7 282.8 1.2 3.2 2.2 6.5 3.3 9.6 0.6 1.5 1.2 2.8 1.8 4.3 62.8 162.1 171.9 280.1 303 323.4v0.4c17.3 5.7 31.9 9.3 43.5 11.5 11.5-2.2 26.1-5.8 43.5-11.5v-0.4C687 905 796.1 787 858.9 624.8c0.6-1.5 1.2-2.8 1.8-4.3 1.2-3.1 2.2-6.4 3.3-9.6 26.2-72.5 43.6-196 49.7-282.8h0.7c1.1-23.3 2.2-44.7 3.2-60.9z m-47.4 41.9l-0.5 9.5c-0.5 2.2-0.9 4.4-1 6.6C863 406 847 525.7 821.3 596.7c-0.7 1.9-1.4 3.9-2 5.8-0.4 1.2-0.8 2.5-1.4 4.1-0.5 1.2-1 2.5-1.4 3.4C758.1 760.8 657.7 869.3 541 907.8c-1.9 0.6-3.7 1.4-5.5 2.2-7.9 2.5-15.7 4.6-23.2 6.3-7.5-1.7-15.2-3.8-23.1-6.3-1.8-0.9-3.6-1.6-5.5-2.2-116.7-38.5-217.1-147-275.4-297.5-0.5-1.2-0.9-2.4-1.7-4.1-0.4-1.2-0.8-2.4-1.3-3.6-0.7-2-1.3-3.9-1.9-5.6-25.8-71.2-41.7-191-47.4-271.7-0.2-2.3-0.5-4.5-1-6.6l-0.5-9.3c-0.1-1.5-0.2-3-0.2-4.5 24.6-3.8 48.4-9.3 70-16.2 10.1-3 20.4-6.4 31.4-10.4 25.2-7.6 56.5-21.2 90.5-39.6 0.6-0.3 1.2-0.6 1.7-0.9 8.2-4.4 16.7-9.2 24.8-14 10.7-6.1 22-13 34.5-21.1 0.4-0.2 1-0.6 1.3-0.8 8.2-5.3 16.4-10.8 24.1-16.2 4.5-3.1 9.1-6.4 13.7-9.7l2.4-1.8 4-2.9c2.6-1.9 5.2-3.7 7.5-5.5 17.9-13.4 35.3-27.5 52-42.1 16.7 14.7 34 28.7 51.8 42 2.6 1.9 5.1 3.8 7.7 5.6l4.3 3.1 1.5 1.1c4.8 3.5 9.6 6.9 14 9.9 8.1 5.7 16.3 11.2 23.7 16l2.1 1.3c12.4 8 23.7 14.9 34.1 20.8 8.6 5 17 9.8 25 14.1 0.4 0.2 1 0.5 1.5 0.8 34.2 18.4 65.6 32.1 90.9 39.7 11 3.9 21.3 7.3 30.6 10.1 22.1 7.1 46.1 12.6 70.8 16.5 0.1 1.5 0.1 3 0 4.4z"
|
||||
p-id="2132"></path>
|
||||
<path
|
||||
d="M710.6 411.2L476.1 651.6l-120-123c-8.3-8.5-21.8-8.5-30.1 0s-8.3 22.3 0 30.9L461.1 698c4.2 4.3 9.6 6.4 15.1 6.4 5.4 0 10.9-2.1 15-6.4l249.5-255.7c8.3-8.5 8.3-22.3 0-30.9-8.3-8.7-21.8-8.7-30.1-0.2z"
|
||||
p-id="2133"></path>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.4 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1675604603623" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1216" width="200" height="200"><path d="M832.128 768c33.194667 0 60.501333 25.173333 63.573333 57.813333L896 832a64 64 0 0 1-63.872 64h-298.922667A63.786667 63.786667 0 0 1 469.333333 832a64 64 0 0 1 63.872-64h298.922667zM213.333333 874.666667c-23.722667 0-42.666667-19.072-42.666666-42.624V362.666667A42.666667 42.666667 0 0 1 213.333333 320l4.992 0.298667c21.333333 2.432 37.674667 20.48 37.674667 42.325333L255.957333 490.666667h128.298667c21.248 0 39.594667 16.469333 42.112 37.674666L426.666667 533.333333l-0.298667 4.992a42.368 42.368 0 0 1-42.112 37.674667H256l0.042667 213.333333h128.256c22.869333 0 42.410667 19.114667 42.410666 42.666667l-0.298666 4.992a42.368 42.368 0 0 1-42.112 37.674667zM832.128 469.333333c33.194667 0 60.501333 25.173333 63.573333 57.813334L896 533.333333a64 64 0 0 1-63.872 64h-298.922667A63.786667 63.786667 0 0 1 469.333333 533.333333a64 64 0 0 1 63.872-64h298.922667z m-255.957333-341.333333c33.194667 0 60.458667 25.173333 63.573333 57.813333L640 192c0 35.328-29.013333 64-63.829333 64H191.829333A63.744 63.744 0 0 1 128 192C128 156.672 157.013333 128 191.829333 128h384.341334z" fill="#000000" p-id="1217"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1650328614187" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5090" width="200" height="200"><path d="M962.184 55.874H61.818C27.732 55.874 0 83.606 0 117.692v621.64c0 34.086 27.732 61.818 61.818 61.818h308.52v44.98c0 41.234-33.547 74.782-74.781 74.782h-67.995c-13.036 0-23.606 10.568-23.606 23.606 0 13.038 10.57 23.606 23.606 23.606h568.874c13.036 0 23.606-10.568 23.606-23.606 0-13.038-10.57-23.606-23.606-23.606h-67.997c-41.234 0-74.782-33.548-74.782-74.782v-44.978h308.52c34.087 0 61.821-27.732 61.821-61.819v-621.64c0.004-34.087-27.728-61.819-61.814-61.819zM391.84 920.916c16.092-20.672 25.714-46.616 25.714-74.782v-44.98h188.894v44.98c0 28.166 9.622 54.112 25.714 74.782H391.841zM976.79 739.333c0 8.054-6.552 14.608-14.608 14.608H61.818c-8.054 0-14.608-6.552-14.608-14.608V615.267h929.58v124.066z m0-171.28H47.212v-450.36c0-8.055 6.552-14.609 14.608-14.609h900.362c8.054 0 14.61 6.552 14.61 14.608v450.361z" fill="" p-id="5091"></path><path d="M486.531 684.611a25.476 25.476 0 1 0 50.952 0 25.476 25.476 0 1 0-50.952 0zM552.477 218.508c-9.22-9.218-24.162-9.218-33.386 0L352.263 385.337c-9.218 9.218-9.218 24.166 0 33.386a23.534 23.534 0 0 0 16.694 6.914 23.526 23.526 0 0 0 16.692-6.914l166.828-166.829c9.218-9.218 9.218-24.166 0-33.386z m98.88 96.679c-9.216-9.218-24.158-9.218-33.384-0.002l-66.46 66.456c-9.218 9.22-9.218 24.168 0 33.386a23.53 23.53 0 0 0 16.692 6.914c6.04 0 12.082-2.304 16.692-6.914l66.46-66.456c9.218-9.218 9.218-24.166 0-33.384z" fill="" p-id="5092"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 36 36"><path d="M19.41 18l8.29-8.29a1 1 0 0 0-1.41-1.41L18 16.59l-8.29-8.3a1 1 0 0 0-1.42 1.42l8.3 8.29l-8.3 8.29A1 1 0 1 0 9.7 27.7l8.3-8.29l8.29 8.29a1 1 0 0 0 1.41-1.41z" fill="currentColor"></path></svg>
|
||||
|
Before Width: | Height: | Size: 395 B |
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 36 36"><path d="M26 17H10a1 1 0 0 0 0 2h16a1 1 0 0 0 0-2z" fill="currentColor"></path></svg>
|
||||
|
Before Width: | Height: | Size: 279 B |
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><g fill="none"><path d="M7 12l7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M7 12l7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M21 12H7.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" ></path><path d="M3 3v18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></g></svg>
|
||||
|
Before Width: | Height: | Size: 647 B |
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 20 20"><path d="M3 5h14V3H3v2zm12 8V7H5v6h10zM3 17h14v-2H3v2z" fill="currentColor"></path></svg>
|
||||
|
Before Width: | Height: | Size: 284 B |
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><g transform="translate(24 0) scale(-1 1)"><g fill="none"><path d="M7 12l7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M7 12l7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M21 12H7.5" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path><path d="M3 3v18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></g></g></svg>
|
||||
|
Before Width: | Height: | Size: 693 B |
|
|
@ -1,18 +0,0 @@
|
|||
<svg t="1655030231175" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3473"
|
||||
width="200" height="200">
|
||||
<path
|
||||
d="M449.6 116.2H303.8c-14.2 0-25.7-11.5-25.7-25.7s11.5-25.7 25.7-25.7h145.8c14.2 0 25.7 11.5 25.7 25.7s-11.5 25.7-25.7 25.7z m0 0"
|
||||
p-id="3474"></path>
|
||||
<path
|
||||
d="M160.1 859.3c-14.2 0-25.7-11.5-25.7-25.7V167.4c0-56.6 46-102.6 102.6-102.6h66.8c14.2 0 25.7 11.5 25.7 25.7s-11.5 25.7-25.7 25.7H237c-28.2 0-51.1 22.9-51.1 51.1v666.2c-0.1 14.3-11.6 25.8-25.8 25.8z m0 0M533.6 346.7c-6.3 0-12.4-1.3-17.6-3.5-13.5-5.8-21.9-17.9-21.9-31.6v-221c0-14.2 11.5-25.7 25.7-25.7s25.7 11.5 25.7 25.7v189l27.7-26.6c14.1-13.5 36.1-13.5 50.1 0l22.1 21.3V90.5c0-14.2 11.5-25.7 25.7-25.7s25.7 11.5 25.7 25.7v219.6c0 14.5-8.6 27.5-22 33.2-13.3 5.7-28.7 2.9-39.2-7.2l-37.5-36-37.5 36c-7.6 7.6-17.5 10.6-27 10.6z m0 0"
|
||||
p-id="3475"></path>
|
||||
<path
|
||||
d="M846.1 958.9H236.9c-56.6 0-102.6-46-102.6-102.6v-22.8c0-14.2 11.5-25.7 25.7-25.7s25.7 11.5 25.7 25.7v22.8c0 28.2 22.9 51.1 51.1 51.1H846c14.2 0 25.7 11.5 25.7 25.7 0.1 14.3-11.4 25.8-25.6 25.8z m0 0"
|
||||
p-id="3476"></path>
|
||||
<path
|
||||
d="M160.1 876h-0.9c-14.2-0.5-25.3-12.4-24.8-26.6 1-28.2 6.3-48.5 16.7-63.6 13.8-20.1 35.4-30.3 64.3-30.3h615c3.2-2.7 6.4-6.1 8.6-8.6V133.1c-1.8-5.1-11.7-15-16.8-16.8H449.6c-14.2 0-25.7-11.5-25.7-25.7s11.5-25.7 25.7-25.7h373.6c19.8 0 36.7 13.9 45 22.2 8.3 8.3 22.2 25.2 22.2 45v621.6c0 10.8-6.2 19.6-12.3 26.7-4.6 5.4-10.3 11-15.6 15.4-1 0.9-2.1 1.7-3.2 2.5-5.4 4.1-12.9 8.8-22.3 8.8H215.3c-15 0-28 0-29.5 44.2-0.5 13.8-11.9 24.7-25.7 24.7z m0 0"
|
||||
p-id="3477"></path>
|
||||
<path
|
||||
d="M284.4 806.4c-14.2 0-25.7-11.5-25.7-25.7V90.5c0-14.2 11.5-25.7 25.7-25.7s25.7 11.5 25.7 25.7v690.1c0 14.3-11.5 25.8-25.7 25.8z m0 0M844.9 959h-1.6c-6.6-0.3-30-2.3-52.2-16.9-19.5-12.7-42.6-38-42.6-86.3 0-62.3 35.7-101 93.1-101 14.2 0 25.7 11.5 25.7 25.7s-11.5 25.7-25.7 25.7c-12.5 0-41.7 0-41.7 49.6 0 21 6.6 35.3 20.1 43.8 10.6 6.6 22.1 7.8 25 8 1.4-0.1 2.9 0 4.4 0.2 13.7 1.7 23.6 14 22.5 27.7-0.9 9.5-8.8 23.5-27 23.5z m-1.8-51.3c-1.1 0.1-2.3 0.3-3.4 0.6 1.1-0.3 2.2-0.5 3.4-0.6z m0 0"
|
||||
p-id="3478"></path>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.1 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1675604765384" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21161" width="200" height="200"><path d="M832.1 185.1H609.4l-17.1-62c-9.6-34.6-40.5-58.8-75.3-58.8H196c-43.2 0-78.3 36.4-78.3 81.1V897c0 35.3 28.7 64 64 64H832c35.3 0 64-28.7 64-64V249c0.1-35.2-28.6-63.9-63.9-63.9z m-644.4-39.7c0-6.6 4.4-11.1 8.3-11.1h321c3.4 0 6.6 3.1 7.8 7.4l12 43.4H187.7v-39.7z m638.4 745.8H187.7V255.1h638.4v636.1z" p-id="21162"></path><path d="M346.1 415.1m-35 0a35 35 0 1 0 70 0 35 35 0 1 0-70 0Z" p-id="21163"></path><path d="M462.3 380.1h257.8v70H462.3z" p-id="21164"></path><path d="M346.1 582.3m-35 0a35 35 0 1 0 70 0 35 35 0 1 0-70 0Z" p-id="21165"></path><path d="M462.3 547.3h257.8v70H462.3z" p-id="21166"></path><path d="M346.1 749.5m-35 0a35 35 0 1 0 70 0 35 35 0 1 0-70 0Z" p-id="21167"></path><path d="M462.3 714.5h257.8v70H462.3z" p-id="21168"></path></svg>
|
||||
|
Before Width: | Height: | Size: 909 B |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1675606213335" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17495" width="200" height="200"><path d="M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7c3.2 4.1 9.4 4.1 12.6 0l112-141.7c4.1-5.2 0.4-12.9-6.3-12.9z" p-id="17496"></path><path d="M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6 0.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4 14.9-19.2 32.6-35.9 52.4-49.9 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7-23.4 23.4-54.5 36.3-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z" p-id="17497"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M73.137 29.08h-9.209 29.7L63.886.093 34.373 29.08h20.49v27.035H27.238v17.948h27.625v27.133h18.274V74.063h27.41V56.115h-27.41V29.08zm-9.245 98.827l27.518-26.711H36.59l27.302 26.71zM.042 64.982l27.196 27.029V38.167L.042 64.982zm100.505-26.815V92.01l27.41-27.029-27.41-26.815z"/></svg>
|
||||
|
Before Width: | Height: | Size: 356 B |
|
|
@ -1 +0,0 @@
|
|||
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M106.133 67.2a4.797 4.797 0 0 0-4.8 4.8c0 .187.014.36.027.533h-.027V118.4H9.6V26.667h50.133c2.654 0 4.8-2.147 4.8-4.8 0-2.654-2.146-4.8-4.8-4.8H9.6a9.594 9.594 0 0 0-9.6 9.6V118.4c0 5.307 4.293 9.6 9.6 9.6h91.733c5.307 0 9.6-4.293 9.6-9.6V72.533h-.026c.013-.173.026-.346.026-.533 0-2.653-2.146-4.8-4.8-4.8z"/><path d="M125.16 13.373L114.587 2.8c-3.747-3.747-9.854-3.72-13.6.027l-52.96 52.96a4.264 4.264 0 0 0-.907 1.36L33.813 88.533c-.746 1.76-.226 3.534.907 4.68 1.133 1.147 2.92 1.667 4.693.92l31.4-13.293c.507-.213.96-.52 1.36-.907l52.96-52.96c3.747-3.746 3.774-9.853.027-13.6zM66.107 72.4l-18.32 7.76 7.76-18.32L92.72 24.667l10.56 10.56L66.107 72.4zm52.226-52.227l-8.266 8.267-10.56-10.56 8.266-8.267.027-.026 10.56 10.56-.027.026z"/></svg>
|
||||
|
Before Width: | Height: | Size: 818 B |
|
|
@ -1 +0,0 @@
|
|||
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M49.217 41.329l-.136-35.24c-.06-2.715-2.302-4.345-5.022-4.405h-3.65c-2.712-.06-4.866 2.303-4.806 5.016l.152 19.164-24.151-23.79a6.698 6.698 0 0 0-9.499 0 6.76 6.76 0 0 0 0 9.526l23.93 23.713-18.345.074c-2.712-.069-5.228 1.813-5.64 5.02v3.462c.069 2.721 2.31 4.97 5.022 5.03l35.028-.207c.052.005.087.025.133.025l2.457.054a4.626 4.626 0 0 0 3.436-1.38c.88-.874 1.205-2.096 1.169-3.462l-.262-2.465c0-.048.182-.081.182-.136h.002zm52.523 51.212l18.32-.073c2.713.06 5.224-1.609 5.64-4.815v-3.462c-.068-2.722-2.317-4.97-5.021-5.04l-34.58.21c-.053 0-.086-.021-.138-.021l-2.451-.06a4.64 4.64 0 0 0-3.445 1.381c-.885.868-1.201 2.094-1.174 3.46l.27 2.46c.005.06-.177.095-.177.141l.141 34.697c.069 2.713 2.31 4.338 5.022 4.397l3.45.006c2.705.062 4.867-2.31 4.8-5.026l-.153-18.752 24.151 23.946a6.69 6.69 0 0 0 9.494 0 6.747 6.747 0 0 0 0-9.523L101.74 92.54v.001zM48.125 80.662a4.636 4.636 0 0 0-3.437-1.382l-2.457.06c-.05 0-.082.022-.137.022l-35.025-.21c-2.712.07-4.957 2.318-5.022 5.04v3.462c.409 3.206 2.925 4.874 5.633 4.814l18.554.06-24.132 23.928c-2.62 2.626-2.62 6.89 0 9.524a6.694 6.694 0 0 0 9.496 0l24.155-23.79-.155 18.866c-.06 2.722 2.094 5.093 4.801 5.025h3.65c2.72-.069 4.962-1.685 5.022-4.406l.141-34.956c0-.05-.182-.082-.182-.136l.262-2.46c.03-1.366-.286-2.592-1.166-3.46h-.001zM80.08 47.397a4.62 4.62 0 0 0 3.443 1.374l2.45-.054c.055 0 .088-.02.143-.028l35.08.21c2.712-.062 4.953-2.312 5.021-5.033l.009-3.463c-.417-3.211-2.937-5.084-5.64-5.025l-18.615-.073 23.917-23.715c2.63-2.623 2.63-6.879.008-9.513a6.691 6.691 0 0 0-9.494 0L92.251 26.016l.155-19.312c.065-2.713-2.097-5.085-4.802-5.025h-3.45c-2.713.069-4.954 1.693-5.022 4.406l-.139 35.247c0 .054.18.088.18.136l-.267 2.465c-.028 1.366.288 2.588 1.174 3.463v.001z"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128"><defs><style/></defs><path d="M512 128q69.675 0 135.51 21.163t115.498 54.997 93.483 74.837 73.685 82.006 51.67 74.837 32.17 54.827L1024 512q-2.347 4.992-6.315 13.483T998.87 560.17t-31.658 51.669-44.331 59.99-56.832 64.34-69.504 60.16-82.347 51.5-94.848 34.687T512 896q-69.675 0-135.51-21.163t-115.498-54.826-93.483-74.326-73.685-81.493-51.67-74.496-32.17-54.997L0 513.707q2.347-4.992 6.315-13.483t18.816-34.816 31.658-51.84 44.331-60.33 56.832-64.683 69.504-60.331 82.347-51.84 94.848-34.816T512 128.085zm0 85.333q-46.677 0-91.648 12.331t-81.152 31.83-70.656 47.146-59.648 54.485-48.853 57.686-37.675 52.821-26.325 43.99q12.33 21.674 26.325 43.52t37.675 52.351 48.853 57.003 59.648 53.845T339.2 767.02t81.152 31.488T512 810.667t91.648-12.331 81.152-31.659 70.656-46.848 59.648-54.186 48.853-57.344 37.675-52.651T927.957 512q-12.33-21.675-26.325-43.648t-37.675-52.65-48.853-57.345-59.648-54.186-70.656-46.848-81.152-31.659T512 213.334zm0 128q70.656 0 120.661 50.006T682.667 512 632.66 632.661 512 682.667 391.339 632.66 341.333 512t50.006-120.661T512 341.333zm0 85.334q-35.328 0-60.33 25.002T426.666 512t25.002 60.33T512 597.334t60.33-25.002T597.334 512t-25.002-60.33T512 426.666z"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg width="128" height="64" xmlns="http://www.w3.org/2000/svg"><path d="M127.072 7.994c1.37-2.208.914-5.152-.914-6.87-2.056-1.717-4.797-1.226-6.396.982-.229.245-25.586 32.382-55.74 32.382-29.24 0-55.74-32.382-55.968-32.627-1.6-1.963-4.57-2.208-6.397-.49C-.17 3.086-.399 6.275 1.2 8.238c.457.736 5.94 7.36 14.62 14.72L4.17 35.96c-1.828 1.963-1.6 5.152.228 6.87.457.98 1.6 1.471 2.742 1.471s2.284-.49 3.198-1.472l12.564-13.983c5.94 4.416 13.021 8.587 20.788 11.53l-4.797 17.418c-.685 2.699.686 5.397 3.198 6.133h1.37c2.057 0 3.884-1.472 4.341-3.68L52.6 42.83c3.655.736 7.538 1.227 11.422 1.227 3.883 0 7.767-.49 11.422-1.227l4.797 17.173c.457 2.208 2.513 3.68 4.34 3.68.457 0 .914 0 1.143-.246 2.513-.736 3.883-3.434 3.198-6.133l-4.797-17.172c7.767-2.944 14.848-7.114 20.788-11.53l12.336 13.738c.913.981 2.056 1.472 3.198 1.472s2.284-.49 3.198-1.472c1.828-1.963 1.828-4.906.228-6.87l-11.65-13.001c9.366-7.36 14.849-14.474 14.849-14.474z"/></svg>
|
||||
|
Before Width: | Height: | Size: 944 B |
|
|
@ -1 +0,0 @@
|
|||
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M38.47 52L52 38.462l-23.648-23.67L43.209 0H.035L0 43.137l14.757-14.865L38.47 52zm74.773 47.726L89.526 76 76 89.536l23.648 23.672L84.795 128h43.174L128 84.863l-14.757 14.863zM89.538 52l23.668-23.648L128 43.207V.038L84.866 0 99.73 14.76 76 38.472 89.538 52zM38.46 76L14.792 99.651 0 84.794v43.173l43.137.033-14.865-14.757L52 89.53 38.46 76z"/></svg>
|
||||
|
Before Width: | Height: | Size: 421 B |
|
|
@ -1 +0,0 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1581238998885" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4187" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M511.542857 14.057143C228.914286 13.942857 0 242.742857 0 525.142857 0 748.457143 143.2 938.285714 342.628571 1008c26.857143 6.742857 22.742857-12.342857 22.742858-25.371429v-88.571428c-155.085714 18.171429-161.371429-84.457143-171.771429-101.6C172.571429 756.571429 122.857143 747.428571 137.714286 730.285714c35.314286-18.171429 71.314286 4.571429 113.028571 66.171429 30.171429 44.685714 89.028571 37.142857 118.857143 29.714286 6.514286-26.857143 20.457143-50.857143 39.657143-69.485715-160.685714-28.8-227.657143-126.857143-227.657143-243.428571 0-56.571429 18.628571-108.571429 55.2-150.514286-23.314286-69.142857 2.171429-128.342857 5.6-137.142857 66.4-5.942857 135.428571 47.542857 140.8 51.771429 37.714286-10.171429 80.8-15.542857 129.028571-15.542858 48.457143 0 91.657143 5.6 129.714286 15.885715 12.914286-9.828571 76.914286-55.771429 138.628572-50.171429 3.314286 8.8 28.228571 66.628571 6.285714 134.857143 37.028571 42.057143 55.885714 94.514286 55.885714 151.2 0 116.8-67.428571 214.971429-228.571428 243.314286a145.714286 145.714286 0 0 1 43.542857 104v128.571428c0.914286 10.285714 0 20.457143 17.142857 20.457143 202.4-68.228571 348.114286-259.428571 348.114286-484.685714 0-282.514286-229.028571-511.2-511.428572-511.2z" p-id="4188"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.6 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1650814907622" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="52318" width="200" height="200"><path d="M958.400956 451.54921c-0.058328-5.760191-2.597151-11.215436-6.965645-14.97097L524.345166 69.511143c-7.498788-6.445806-18.581194-6.445806-26.079982 0L309.582871 231.6755l0-102.017488c0-11.04966-8.901741-19.532869-19.951401-19.532869l-88.034009 0c-11.048637 0-19.928888 8.482185-19.928888 19.532869l0 211.954343L71.176063 436.57824c-4.423753 3.800559-6.967692 9.341762-6.967692 15.173584l0 105.500822c0 7.819083 4.554736 14.921851 11.660574 18.183128 2.670829 1.226944 5.51562 1.824555 8.343015 1.824555 4.699022 0 9.346879-1.654686 13.048177-4.836145l53.29788-45.825698 0 324.100516c0 60.677964 49.364291 110.042255 110.042255 110.042255L764.792447 960.741257c60.677964 0 110.042255-49.364291 110.042255-110.042255L874.834702 527.026228l51.585889 44.335764c5.955642 5.119601 14.356986 6.282077 21.481244 2.965541 7.122211-3.313465 11.645225-10.488889 11.565407-18.342764L958.400956 451.54921zM221.578538 150.034085l48.095391 0 0 115.941616-48.095391 41.336454L221.578538 150.034085zM570.718333 920.725892 436.666244 920.725892 436.666244 700.642404c0-11.031241 8.976442-20.007683 20.007683-20.007683l94.0357 0c11.031241 0 20.007683 8.976442 20.007683 20.007683L570.71731 920.725892zM834.818313 495.895207l0 354.803795c0 38.612413-31.414477 70.02689-70.02689 70.02689l-154.058748 0L610.732675 700.642404c0-33.096792-26.926256-60.023048-60.023048-60.023048l-94.0357 0c-33.096792 0-60.023048 26.926256-60.023048 60.023048l0 220.084511L260.59925 920.726915c-38.612413 0-70.02689-31.414477-70.02689-70.02689L190.57236 495.895207c0-1.172709-0.121773-2.314719-0.315178-3.432169l322.113255-276.958846 322.70268 277.348726C834.921667 493.848595 834.818313 494.858598 834.818313 495.895207zM525.411451 173.947727c-7.502881-6.445806-18.587334-6.446829-26.086122 0.00307L104.223736 513.663896l0-52.726875 407.081439-349.870436 407.176606 349.9523 0.521886 51.205219L525.411451 173.947727z" p-id="52319"></path></svg>
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M115.147.062a13 13 0 0 1 4.94.945c1.55.63 2.907 1.526 4.069 2.688a13.148 13.148 0 0 1 2.761 4.069c.678 1.55 1.017 3.245 1.017 5.086v102.3c0 3.681-1.187 6.733-3.56 9.155-2.373 2.422-5.352 3.633-8.937 3.633H12.992c-3.875 0-7-1.26-9.373-3.779-2.373-2.518-3.56-5.667-3.56-9.445V12.704c0-3.39 1.163-6.345 3.488-8.863C5.872 1.32 8.972.062 12.847.062h102.3zM81.434 109.047c1.744 0 3.003-.412 3.778-1.235.775-.824 1.163-1.914 1.163-3.27 0-1.26-.388-2.325-1.163-3.197-.775-.872-2.034-1.307-3.778-1.307H72.57c.097-.194.145-.485.145-.872V27.09h9.01c1.743 0 2.954-.436 3.633-1.308.678-.872 1.017-1.938 1.017-3.197 0-1.26-.34-2.325-1.017-3.197-.679-.872-1.89-1.308-3.633-1.308H46.268c-1.743 0-2.954.436-3.632 1.308-.678.872-1.018 1.938-1.018 3.197 0 1.26.34 2.325 1.018 3.197.678.872 1.889 1.308 3.632 1.308h8.138v72.075c0 .193.024.339.073.436.048.096.072.242.072.436H46.56c-1.744 0-3.003.435-3.778 1.307-.775.872-1.163 1.938-1.163 3.197 0 1.356.388 2.446 1.163 3.27.775.823 2.034 1.235 3.778 1.235h34.875z"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1699574162110" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1543" width="200" height="200"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#FD8E66" p-id="1544"></path><path d="M377.745 354.306h63.05l-78.638 315.388h-63.05l78.638-315.388zM518.387 354.306h103.519c69.926 0 117.527 24.3 98.942 98.896-17.958 72.017-80.148 104.401-147.89 104.401H530.77L502.8 669.694h-63.05l78.637-315.388z m62.702 153.443c43.489 0 68.927-18.329 77.964-54.547 9.153-36.659-10.779-49.018-54.222-49.018h-35.823l-25.833 103.565h37.914z" fill="#FFFFFF" p-id="1545"></path></svg>
|
||||
|
Before Width: | Height: | Size: 636 B |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1675576810577" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1553" width="200" height="200"><path d="M379.392 460.8l114.688 114.688-42.496 102.4L307.2 532.48l-168.96 168.96-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4h-102.4c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8z m196.608 409.6L512 1024H409.6l256-614.4h102.4l256 614.4h-102.4l-64-153.6h-281.6z m42.496-102.4h196.608L716.8 532.48 618.496 768z" p-id="1554" data-spm-anchor-id="a313x.7781069.0.i0" class="selected"></path></svg>
|
||||
|
Before Width: | Height: | Size: 730 B |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1675604734873" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="20095" width="200" height="200"><path d="M611.2 368l-294.4 294.4c-6.4 6.4-9.6 16-9.6 22.4s3.2 16 9.6 22.4 16 9.6 22.4 9.6 16-3.2 22.4-9.6l294.4-294.4c6.4-6.4 9.6-16 9.6-22.4s-3.2-16-9.6-22.4c-12.8-12.8-32-12.8-44.8 0z" p-id="20096"></path><path d="M608 755.2l-99.2 99.2c-96 96-249.6 96-342.4 3.2-92.8-92.8-92.8-246.4 3.2-342.4L268.8 416c12.8-12.8 12.8-32 0-44.8s-32-12.8-44.8 0l-99.2 99.2C3.2 592 3.2 784 121.6 902.4 179.2 960 259.2 992 336 992c80 0 156.8-28.8 217.6-89.6l99.2-99.2c12.8-12.8 12.8-32 0-44.8s-32-16-44.8-3.2zM902.4 121.6c-57.6-57.6-131.2-86.4-214.4-86.4h-3.2c-83.2 0-160 35.2-217.6 92.8l-96 96c-12.8 12.8-12.8 32 0 44.8s32 12.8 44.8 0l96-96c48-48 108.8-73.6 172.8-73.6h3.2c64 0 121.6 25.6 166.4 70.4 92.8 92.8 92.8 246.4-3.2 345.6l-96 96c-12.8 12.8-12.8 32 0 44.8 6.4 6.4 16 9.6 22.4 9.6s16-3.2 22.4-9.6l96-96c121.6-124.8 124.8-320 6.4-438.4z" p-id="20097"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1001 B |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1650624092030" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11056" width="200" height="200"><path d="M374.272 440.832H127.488c-33.792 0-61.44-27.648-61.44-61.44V132.608c0-33.792 27.648-61.44 61.44-61.44h247.296c33.792 0 61.44 27.648 61.44 61.44v247.296c-0.512 33.792-27.648 60.928-61.952 60.928zM127.488 132.608v247.296h247.296V132.608H127.488zM762.88 492.032c-16.384 0-31.744-6.144-43.52-17.92l-174.592-174.592c-11.776-11.776-17.92-27.136-17.92-43.52s6.144-31.744 17.92-43.52l174.592-174.592c11.776-11.776 27.136-17.92 43.52-17.92s31.744 6.144 43.52 17.92l174.592 174.592c11.776 11.776 17.92 27.136 17.92 43.52s-6.144 31.744-17.92 43.52l-174.592 174.592c-11.776 11.776-27.136 17.92-43.52 17.92z m0-410.624L588.288 256 762.88 430.592 937.472 256 762.88 81.408zM374.272 952.832H127.488c-33.792 0-61.44-27.648-61.44-61.44v-247.296c0-33.792 27.648-61.44 61.44-61.44h247.296c33.792 0 61.44 27.648 61.44 61.44v247.296c-0.512 34.304-27.648 61.44-61.952 61.44z m-246.784-308.224v247.296h247.296v-247.296H127.488zM886.272 952.832h-247.296c-33.792 0-61.44-27.648-61.44-61.44v-247.296c0-33.792 27.648-61.44 61.44-61.44h247.296c33.792 0 61.44 27.648 61.44 61.44v247.296c0 34.304-27.136 61.44-61.44 61.44z m-246.784-308.224v247.296h247.296v-247.296h-247.296z" p-id="11057"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1699460574600" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1651" width="200" height="200"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#50DCB6" p-id="1652"></path><path d="M790.14809 502.821512c0-30.855682-25.013375-55.869057-55.869056-55.869057H483.666407c-30.855682 0-55.869057 25.013375-55.869057 55.869057v158.432674c0 30.855682 25.013375 55.869057 55.869057 55.869056h229.557973a47.894148 47.894148 0 0 1 26.280007 7.854392l35.810469 23.508103c6.369072 4.180602 14.833235-0.387891 14.833234-8.006834V502.821512z" fill="#FFFFFF" fill-opacity=".4" p-id="1653"></path><path d="M233.85191 320.848012c0-30.855682 25.013375-55.869057 55.869056-55.869056h366.341388c30.855682 0 55.869057 25.013375 55.869057 55.869056v245.025721c0 30.855682-25.013375 55.869057-55.869057 55.869057H330.782329a47.894148 47.894148 0 0 0-26.295171 7.864767l-55.798821 36.660477c-6.369072 4.184592-14.836427-0.3839-14.836427-8.004439V320.848012z" fill="#FFFFFF" p-id="1654"></path><path d="M357.561964 446.952455m-34.319563 0a34.319564 34.319564 0 1 0 68.639127 0 34.319564 34.319564 0 1 0-68.639127 0Z" fill="#46D7B0" p-id="1655"></path><path d="M473.290725 446.952455m-34.319564 0a34.319564 34.319564 0 1 0 68.639127 0 34.319564 34.319564 0 1 0-68.639127 0Z" fill="#46D7B0" p-id="1656"></path><path d="M589.019486 446.952455m-34.319564 0a34.319564 34.319564 0 1 0 68.639127 0 34.319564 34.319564 0 1 0-68.639127 0Z" fill="#46D7B0" p-id="1657"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1699460938272" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15147" width="200" height="200"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#FF822B" p-id="15148"></path><path d="M324.408781 655.018925C505.290126 655.018925 651.918244 508.387706 651.918244 327.509463c0-152.138029-103.733293-280.047334-244.329811-316.853972C205.813923 52.463528 47.497011 213.017581 8.987325 415.981977 47.587706 553.880127 174.183098 655.018925 324.408781 655.018925z" fill="#FFFFFF" fill-opacity=".2" p-id="15149"></path><path d="M512 1024c282.766631 0 512-229.233369 512-512 0-31.765705-2.891385-62.853911-8.433853-93.018889C928.057169 336.0999 809.874701 285.26268 679.824375 285.26268c-269.711213 0-488.357305 218.645317-488.357305 488.357305 0 54.959576 9.084221 107.802937 25.822474 157.10377C300.626556 989.489417 402.283167 1024 512 1024z" fill="#FFFFFF" fill-opacity=".15" p-id="15150"></path><path d="M732.535958 756.566238c36.389596 0 65.889478-29.499882 65.889477-65.889478 0 36.389596 29.502983 65.889478 65.889478 65.889478-17.053747 0-65.889478 29.502983-65.889478 65.889477 0-36.386495-29.499882-65.889478-65.889477-65.889477zM159.685087 247.279334c25.686819 0 46.51022-20.8234 46.51022-46.51022 0 25.686819 20.8234 46.51022 46.510219 46.51022-12.03607 0-46.51022 20.8234-46.510219 46.510219 0-25.686819-20.8234-46.51022-46.51022-46.510219z" fill="#FFFFFF" fill-opacity=".5" p-id="15151"></path><path d="M206.195307 333.32324c8.562531 0 15.503407-6.940875 15.503406-15.503407 0 8.562531 6.940875 15.503407 15.503407 15.503407-4.012282 0-15.503407 6.940875-15.503407 15.503406 0-8.562531-6.940875-15.503407-15.503406-15.503406z" fill="#FFFFFF" fill-opacity=".3" p-id="15152"></path><path d="M802.301287 726.987288c0 8.109832-1.387555 15.685572-4.154913 22.727994-2.77511 7.042422-6.712975 13.231382-11.829099 18.566105-5.116124 5.335497-11.084936 9.493511-17.90566 12.485668-6.820724 2.984406-14.280963 4.480484-22.379942 4.480485H281.80542c-8.099755 0-15.773166-1.496079-23.019458-4.480485-7.247067-2.992157-13.641447-7.150171-19.18314-12.485668-5.541693-5.334722-9.911328-11.523682-13.10813-18.566105-3.197578-7.042422-4.795979-14.618162-4.795979-22.727994V407.517893c0-16.218889 5.648666-29.983588 16.945223-41.294874 11.296557-11.31051 25.044203-16.965378 41.242938-16.965378h464.226252c16.198734 0 29.94638 5.654868 41.242938 16.965378 11.294232 11.311285 16.945223 25.075985 16.945223 41.294874v87.069456H657.150643c-16.198734 0-29.94638 5.548669-41.242937 16.646008-11.296557 11.097338-16.945223 24.755064-16.945223 40.973953 0.426344 11.097338 2.771234 20.914095 7.033896 29.450271 3.409974 7.255594 9.05864 13.871673 16.944448 19.846685 7.886583 5.975788 19.290114 8.963294 34.209816 8.963295H802.301287v116.519727zM715.338804 319.80737h-290.301287c23.019458-11.950801 44.759885-23.474483 65.222056-34.571821a6020.558002 6020.558002 0 0 0 53.072812-28.16969c17.477765-9.389638 31.118438-16.646008 40.923567-21.767558 14.919703-8.109057 28.241005-11.843827 39.963906-11.203536 11.722901 0.640291 21.634229 2.667361 29.733983 6.081986 9.378011 4.694431 17.477765 10.883391 24.297714 18.566104l37.087249 71.064515zM628.376321 552.20731c0-8.109057 2.770459-14.938307 8.312927-20.486977 5.541693-5.548669 12.361641-8.323004 20.461395-8.323004 8.099755 0 14.919703 2.774335 20.461396 8.323004 5.542468 5.548669 8.312927 12.37792 8.312927 20.486977 0 8.109832-2.770459 15.045281-8.312927 20.807121-5.541693 5.761841-12.361641 8.643149-20.461396 8.64315-8.099755 0-14.919703-2.881308-20.461395-8.64315-5.542468-5.761841-8.312927-12.69729-8.312927-20.807121z" fill="#FFFFFF" p-id="15153"></path></svg>
|
||||
|
Before Width: | Height: | Size: 3.6 KiB |
|
|
@ -1,2 +0,0 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1543827393750" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4695" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css">@font-face { font-family: rbicon; src: url("chrome-extension://dipiagiiohfljcicegpgffpbnjmgjcnf/fonts/rbicon.woff2") format("woff2"); font-weight: normal; font-style: normal; }
|
||||
</style></defs><path d="M64 64V640H896V64H64zM0 0h960v704H0V0z" p-id="4696"></path><path d="M192 896H768v64H192zM448 640H512v256h-64z" p-id="4697"></path><path d="M479.232 561.604267l309.9904-348.330667-47.803733-42.5472-259.566934 291.669333L303.957333 240.008533 163.208533 438.6048l52.224 37.009067 91.6224-129.28z" p-id="4698"></path></svg>
|
||||
|
Before Width: | Height: | Size: 883 B |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1699488416033" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2847" width="200" height="200"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#F15BB5" p-id="2848"></path><path d="M772 432.8l-7.9-63.3v-0.2c-0.1-1-0.4-2.1-0.7-3.1v-0.3l-0.2-0.4-25.7-72.1c-0.3-0.7-0.6-1.5-1-2.2-7-14.4-21.5-23.7-37.5-24h-24.1c-10 0-18.6 7.8-18.9 17.8-0.4 10.5 8 19.1 18.4 19.1H699c1.9 0.3 3.4 1.4 4.2 3.1l13.5 37.9c0.7 1.9 0.4 3.9-0.7 5.6-1.1 1.6-3 2.6-5 2.6h-67.3c-3.5 0-6.2-2.8-6.2-6.2v-24.5c0-67.9-55.1-123-123-123s-123 55.1-123 123v24.5c0 3.5-2.8 6.2-6.2 6.2h-69.8c-3.4 0-6.2-2.8-6.2-6.2 0-0.8 0.2-1.6 0.5-2.3l15.5-36.8c0.7-2.1 2.5-3.5 4.7-3.9h24.1c10 0 18.6-7.8 18.9-17.8 0.4-10.5-8-19.1-18.4-19.1H330c-16.5 0.5-31.3 10.2-38.1 25.3l-30.6 72.1v0.2c-0.2 0.4-0.3 0.8-0.5 1.2v0.4c-0.3 1-0.6 2.1-0.7 3.1l-39 310.8c-6.4 50.5 29.5 96.7 80.1 103 3.8 0.5 7.7 0.7 11.5 0.7h94.5C514.8 718.5 680.7 597.9 772 432.8zM440.7 322.5c0-41 33.3-74.1 74.3-73.8 40.7 0.3 73.3 34.1 73.3 74.8V347c0 3.5-2.8 6.2-6.2 6.2H446.9c-3.5 0-6.2-2.8-6.2-6.2v-24.5z m152.7 257L514 662.4c-2.3 2.4-6.3 2.5-8.7 0.2l-0.2-0.2-79.4-82.9c-15.1-15.1-18.8-38.2-9.3-57.3 13.4-26.8 47.7-36.1 73.3-18.2 2.3 1.6 4.4 3.5 6.4 5.5l9.2 9.2c2.4 2.4 6.3 2.4 8.7 0l9.4-9.4c19.4-19.4 50.8-19.4 70.2 0 19.3 19.4 19.3 50.8-0.2 70.2z" fill="#FFFDF3" p-id="2849"></path><path d="M803.7 691.6c0-3.8-0.3-7.7-0.7-11.4l-31-247.4c-91.3 165.1-257.2 285.7-364.8 351h304.1c51 0 92.4-41.2 92.4-92.2z" fill="#FFFFFF" opacity=".9" p-id="2850"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
|
|
@ -1 +0,0 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1575802846045" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2750" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M868.593046 403.832442c-30.081109-28.844955-70.037123-44.753273-112.624057-44.753273L265.949606 359.079168c-42.554188 0-82.510202 15.908318-112.469538 44.690852-30.236652 28.782533-46.857191 67.222007-46.857191 108.198258l0 294.079782c0 40.977273 16.619516 79.414701 46.702672 108.136859 29.959336 28.844955 70.069869 44.814672 112.624057 44.814672l490.019383 0c42.585911 0 82.696444-15.969717 112.624057-44.814672 30.082132-28.844955 46.579875-67.222007 46.579875-108.136859L915.172921 511.968278C915.171897 471.053426 898.675178 432.677397 868.593046 403.832442zM841.821309 806.049083c0 22.098297-8.882298 42.772152-25.099654 58.306964-16.154935 15.661701-37.81935 24.203238-60.752666 24.203238L265.949606 888.559285c-22.934339 0-44.567032-8.54256-60.877509-24.264637-16.186657-15.474436-25.067932-36.148291-25.067932-58.246589L180.004165 511.968278c0-22.035876 8.881274-42.772152 25.192775-58.307987 16.186657-15.536858 37.81935-24.139793 60.753689-24.139793l490.019383 0c22.933315 0 44.597731 8.602935 60.752666 24.139793 16.21838 15.535835 25.099654 36.272112 25.099654 58.307987L841.822332 806.049083zM510.974136 135.440715c114.914216 0 208.318536 89.75214 208.318536 200.055338l73.350588 0c0-149.113109-126.366036-270.496667-281.669124-270.496667-155.333788 0-281.699824 121.383558-281.699824 270.496667l73.350588 0C302.623877 225.193879 396.059919 135.440715 510.974136 135.440715zM474.299865 747.244792l73.350588 0L547.650453 629.576859l-73.350588 0L474.299865 747.244792z" p-id="2751"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1650623852152" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7510" width="200" height="200"><path d="M520.23466666 504.57706667c51.3056-33.51253333 85.2544-91.47733333 85.2544-157.30133334 0-103.4848-84.27306667-187.7568-187.75786666-187.7568S229.9744 243.79093333 229.9744 347.27466667c0 65.7152 33.9488 123.68 85.2544 157.30133333-47.26613333 15.71946667-90.60266667 42.24533333-126.8448 78.4864-61.23946667 61.23946667-94.97066667 142.67413333-94.97066667 229.2384 0 13.3184 10.69866667 24.016 24.016 24.016s24.01493333-10.69866667 24.01493333-24.016c0-152.27946667 123.89866667-276.17706667 276.17813334-276.17706667S693.80053333 660.02133333 693.80053333 812.30186667c0 13.3184 10.6976 24.016 24.01493333 24.016s24.016-10.69866667 24.016-24.016c0-86.56426667-33.7312-167.99893333-94.97066666-229.23733334-36.02346667-36.13333333-79.36-62.768-126.6272-78.48746666zM278.00533333 347.38453333c0-77.06666667 62.65813333-139.72586667 139.72586667-139.72586666s139.72693333 62.65813333 139.72693333 139.72586666-62.6592 139.72693333-139.72693333 139.72693334c-76.95786667 0-139.72586667-62.6592-139.72586667-139.72693334z" p-id="7511"></path><path d="M871.40586666 599.0016a323.7312 323.7312 0 0 0-150.6432-119.8592c27.072-40.28053333 41.4816-87.76533333 41.04533334-136.77866667-0.43733333-59.60213333-22.70613333-116.69333333-62.54933334-160.79466666-8.95146667-9.824-24.1248-10.5888-33.94986666-1.63733334-9.824 8.95146667-10.58773333 24.1248-1.63733334 33.9488 66.69866667 73.57546667 67.13493333 185.13813333 0.9824 259.47733334-1.52746667 1.74613333-2.83733333 3.71093333-3.712 5.67466666-1.2 1.856-2.0736 3.93066667-2.72853333 6.22293334-3.49226667 12.77226667 4.14933333 25.9808 16.92053333 29.47306666 131.97546667 35.36853333 217.23093333 159.59466667 202.93013334 295.17226667-1.41866667 13.20853333 8.18773333 24.9984 21.39626666 26.41706667 0.87253333 0.1088 1.74613333 0.1088 2.50986667 0.1088 12.11733333 0 22.59733333-9.16906667 23.9072-21.504 7.968-75.86773333-11.3536-152.608-54.47146667-215.92106667z" p-id="7512"></path></svg>
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1699460669940" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6619" width="200" height="200"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#69ADF4" p-id="6620"></path><path d="M526.765394 288.528561m35.292598-10.116657l42.197672-12.096002q35.292598-10.116657 45.409255 25.175942l117.221262 408.933803q10.116657 35.292598-25.175942 45.409255l-42.197672 12.096003q-35.292598 10.116657-45.409255-25.175942l-117.221262-408.933803q-10.116657-35.292598 25.175942-45.409256Z" fill="#FFFFFF" opacity=".4" p-id="6621"></path><path d="M284.134061 263.382697c-20.275679 0-36.713952 16.437475-36.713952 36.713951v43.897117c0 4.408069 3.573225 7.981294 7.981294 7.981293h55.469992c13.443691 0 24.342946 10.898457 24.342946 24.342947S324.315087 400.660951 310.871395 400.660951H255.401403c-4.408069 0-7.981294 3.573225-7.981294 7.981294v316.857365c0 20.276477 16.438273 36.713952 36.713952 36.713952h43.897116c20.275679 0 36.713952-16.437475 36.713952-36.713952V300.096648c0-20.276477-16.438273-36.713952-36.713952-36.713951h-43.897116zM436.576773 263.382697c-20.275679 0-36.713952 16.437475-36.713951 36.713951v122.911926c0 4.408069 3.573225 7.981294 7.981293 7.981293h49.084957c13.443691 0 24.342946 10.898457 24.342947 24.342947S470.372764 479.67576 456.929072 479.67576H407.844115c-4.408069 0-7.981294 3.573225-7.981293 7.981294v237.842556c0 20.276477 16.438273 36.713952 36.713951 36.713952h43.897116c20.275679 0 36.713952-16.437475 36.713952-36.713952V300.096648c0-20.276477-16.438273-36.713952-36.713952-36.713951h-43.897116z" fill="#FFFFFF" p-id="6622"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.6 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1650624655184" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22328" width="200" height="200"><path d="M924.145781 233.089709l0-3.215228-0.642636-0.642636 0-2.571568-0.642636-0.642636 0-0.642636-0.642636-0.642636-0.642636 0-0.642636-0.642636 0-0.642636-1.928932-1.928932 0-0.642636-0.642636-0.642636 0-1.286296-1.928932 0-0.642636-0.642636-1.286296 0-0.642636-0.642636 0-0.642636-0.642636 0 0-0.642636-0.642636 0-0.642636-0.642636-0.642636 0 0-0.642636-2.571568 0 0-0.642636-5.14416 0-0.642636 0.642636-0.642636 0 0 0.642636-1.286296 0-0.642636 0.642636-1.286296 0L112.707968 515.999081c-10.287297 3.857864-15.431457 14.788821-11.573593 25.718755 2.571568 5.786797 7.073092 9.644661 12.216229 11.573593l235.972363 94.517677 24.433482 135.667889c1.928932 10.930957 12.216229 17.36039 22.50455 16.074094 4.500501-0.642636 8.358365-3.215228 10.930957-6.429433l87.444585-87.444585 178.104397 71.370491c10.287297 3.857864 21.218254-0.642636 25.718755-10.287297l223.756133-523.383258 0.642636-0.642636 0-0.642636 0-1.286296 0-5.14416L924.145781 233.089709 924.145781 233.089709zM364.112812 610.516758 364.112812 610.516758l-190.32165-75.870991 604.39841-230.829226L364.112812 610.516758 364.112812 610.516758zM405.263024 738.468918 405.263024 738.468918l-12.859889-74.585719 62.368466 25.076118L405.263024 738.468918 405.263024 738.468918zM670.169369 733.325781 670.169369 733.325781 406.54932 627.877147l452.012767-334.347904L670.169369 733.325781 670.169369 733.325781z" p-id="22329"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
|
|
@ -1 +0,0 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1605865043777" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="856" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M1023.786667 611.84c-0.426667 9.770667-13.354667 20.693333-39.893334 34.56-54.613333 28.458667-337.749333 144.896-397.994666 176.298667-60.288 31.402667-93.738667 31.104-141.354667 8.32-47.616-22.741333-348.842667-144.469333-403.114667-170.368-27.093333-12.970667-40.917333-23.893333-41.386666-34.218667v103.509333c0 10.325333 14.250667 21.290667 41.386666 34.261334 54.272 25.941333 355.541333 147.626667 403.114667 170.368 47.616 22.784 81.066667 23.082667 141.354667-8.362667 60.245333-31.402667 343.338667-147.797333 397.994666-176.298667 27.776-14.464 40.106667-25.728 40.106667-35.925333v-102.058667l-0.213333-0.085333z m0-168.746667c-0.512 9.770667-13.397333 20.650667-39.893334 34.517334-54.613333 28.458667-337.749333 144.896-397.994666 176.298666-60.288 31.402667-93.738667 31.104-141.354667 8.362667-47.616-22.741333-348.842667-144.469333-403.114667-170.410667-27.093333-12.928-40.917333-23.893333-41.386666-34.176v103.509334c0 10.325333 14.250667 21.248 41.386666 34.218666 54.272 25.941333 355.498667 147.626667 403.114667 170.368 47.616 22.784 81.066667 23.082667 141.354667-8.32 60.245333-31.402667 343.338667-147.84 397.994666-176.298666 27.776-14.506667 40.106667-25.770667 40.106667-35.968v-102.058667l-0.256-0.042667z m0-175.018666c0.469333-10.410667-13.141333-19.541333-40.533334-29.610667-53.248-19.498667-334.634667-131.498667-388.522666-151.253333-53.888-19.712-75.818667-18.901333-139.093334 3.84C392.234667 113.706667 92.629333 231.253333 39.338667 252.074667c-26.666667 10.496-39.68 20.181333-39.253334 30.506666V386.133333c0 10.325333 14.250667 21.248 41.386667 34.218667 54.272 25.941333 355.498667 147.669333 403.114667 170.410667 47.616 22.741333 81.066667 23.04 141.354666-8.362667 60.245333-31.402667 343.338667-147.84 397.994667-176.298667 27.776-14.506667 40.106667-25.770667 40.106667-35.968V268.074667h-0.341334zM366.677333 366.08l237.269334-36.437333-71.68 105.088-165.546667-68.650667z m524.8-94.634667l-140.330666 55.466667-15.232 5.973333-140.245334-55.466666 155.392-61.44 140.373334 55.466666z m-411.989333-101.674666l-22.954667-42.325334 71.594667 27.989334 67.498667-22.101334-18.261334 43.733334 68.778667 25.770666-88.704 9.216-19.882667 47.786667-32.085333-53.290667-102.4-9.216 76.416-27.562666z m-176.768 59.733333c70.058667 0 126.805333 21.973333 126.805333 49.109333s-56.746667 49.152-126.805333 49.152-126.848-22.058667-126.848-49.152c0-27.136 56.789333-49.152 126.848-49.152z" p-id="857"></path></svg>
|
||||
|
Before Width: | Height: | Size: 2.8 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"><path d="M400 148l-21.12-24.57A191.43 191.43 0 0 0 240 64C134 64 48 150 48 256s86 192 192 192a192.09 192.09 0 0 0 181.07-128" fill="none" stroke="currentColor" stroke-linecap="square" stroke-miterlimit="10" stroke-width="32"></path><path d="M464 68.45V220a4 4 0 0 1-4 4H308.45a4 4 0 0 1-2.83-6.83L457.17 65.62a4 4 0 0 1 6.83 2.83z" fill="currentColor"></path></svg>
|
||||
|
Before Width: | Height: | Size: 562 B |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1640017511829" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10964" width="256" height="256"><path d="M79.23846992 961.89615371v-25.44230742c0-109.28076943 28.83461573-214.89230742 81.13846113-297.41538515 48.42692315-76.39615372 115.30384629-131.57307685 195.50769258-161.89615372A240.78461573 240.78461573 0 0 1 279.48846992 300.5c0-131.53846114 104.33076943-238.53461572 232.54615372-238.53461572s232.51153887 106.99615372 232.51153798 238.53461572a240.85384629 240.85384629 0 0 1-76.74230742 176.98846114c190.86923057 73.00384629 276.99230742 277.13076943 276.99230742 458.96538514v25.44230743H79.23846992zM694.90770049 300.5c0-103.43076943-82.03846114-187.61538427-182.87307686-187.61538427-100.83461573 0-182.87307685 84.18461573-182.87307685 187.61538427 0 103.46538427 82.03846114 187.65 182.87307685 187.65 100.83461573 0 182.87307685-84.18461573 182.87307686-187.65z m-79.16538516 213.50769258a226.45384629 226.45384629 0 0 1-103.7076917 25.0961537 225.93461572 225.93461572 0 0 1-104.12307686-25.30384628c-195.02307685 51.12692315-271.10769258 239.05384629-278.41153886 397.17692315h765.03461573c-7.99615372-167.4-95.22692315-347.74615372-278.79230831-396.96923057z m-143.41153799 37.2461537h79.40769258l39.73846114-8.48076943-45.24230742 65.66538429 30.6 227.52692313-64.8 56.90769258-69.19615372-56.90769258 40.53461485-227.52692313-50.78076944-65.66538429 39.73846201 8.48076944z" p-id="10965"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.4 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1650625555592" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="36820" width="200" height="200"><path d="M586.666667 494.933333l-8.533334 40.533334-44.8-119.466667-19.2 2.133333-29.866666 57.6H448l-8.533333 19.2-25.6 51.2-29.866667-72.533333-17.066667 6.4 38.4 93.866667h17.066667l38.4-78.933334H497.066667l27.733333-51.2 46.933333 125.866667h19.2l14.933334-74.666667h51.2v-19.2h-66.133334l-4.266666 19.2zM512 283.733333c-117.333333 0-213.333333 96-213.333333 213.333334s96 213.333333 213.333333 213.333333 213.333333-96 213.333333-213.333333c0-119.466667-96-213.333333-213.333333-213.333334z m0 401.066667c-104.533333 0-189.866667-85.333333-189.866667-189.866667s85.333333-189.866667 189.866667-189.866666 189.866667 85.333333 189.866667 189.866666-85.333333 189.866667-189.866667 189.866667z m381.866667-460.8c-44.8-14.933333-134.4-44.8-179.2-66.133333-89.6-44.8-123.733333-74.666667-157.866667-100.266667-12.8-10.666667-27.733333-14.933333-44.8-14.933333s-32 4.266667-44.8 12.8c-34.133333 25.6-68.266667 55.466667-157.866667 100.266666-44.8 21.333333-134.4 51.2-179.2 66.133334-29.866667 10.666667-46.933333 36.266667-44.8 66.133333 8.533333 98.133333 32 288 89.6 405.333333 68.266667 134.4 236.8 238.933333 302.933334 279.466667 10.666667 6.4 21.333333 8.533333 34.133333 8.533333s23.466667-2.133333 34.133333-8.533333c66.133333-40.533333 234.666667-145.066667 302.933334-279.466667 57.6-117.333333 81.066667-307.2 89.6-401.066666 2.133333-32-17.066667-59.733333-44.8-68.266667zM810.666667 674.133333c-42.666667 85.333333-138.666667 172.8-285.866667 262.4-4.266667 0-8.533333 2.133333-12.8 2.133334s-8.533333-2.133333-10.666667-4.266667c-149.333333-87.466667-245.333333-177.066667-288-260.266667C153.6 554.666667 132.266667 347.733333 128 288c-2.133333-14.933333 12.8-21.333333 17.066667-23.466667l17.066666-6.4c49.066667-17.066667 125.866667-42.666667 168.533334-64 81.066667-40.533333 119.466667-70.4 151.466666-93.866666 4.266667-4.266667 8.533333-6.4 12.8-10.666667 0-2.133333 6.4-4.266667 14.933334-4.266667h4.266666c8.533333 0 14.933333 2.133333 17.066667 4.266667 4.266667 4.266667 8.533333 6.4 12.8 10.666667 29.866667 23.466667 68.266667 53.333333 151.466667 93.866666 42.666667 21.333333 117.333333 46.933333 168.533333 64l17.066667 6.4c4.266667 2.133333 17.066667 6.4 17.066666 23.466667-6.4 59.733333-27.733333 266.666667-87.466666 386.133333z" p-id="36821"></path></svg>
|
||||
|
Before Width: | Height: | Size: 2.4 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1697727436066" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8081" width="200" height="200"><path d="M892.5 160h-760a4 4 0 0 0-4 4v64a4 4 0 0 0 4 4h760a4 4 0 0 0 4-4v-64a4 4 0 0 0-4-4z m0 210.7h-440a4 4 0 0 0-4 4v64a4 4 0 0 0 4 4h440a4 4 0 0 0 4-4v-64a4 4 0 0 0-4-4z m0 210.6h-440a4 4 0 0 0-4 4v64a4 4 0 0 0 4 4h440a4 4 0 0 0 4-4v-64a4 4 0 0 0-4-4z m0 210.7h-760a4 4 0 0 0-4 4v64a4 4 0 0 0 4 4h760a4 4 0 0 0 4-4v-64a4 4 0 0 0-4-4z m-527-140.8a4 4 0 0 0 6-3.5V376.3a4 4 0 0 0-6-3.5l-235 135.7a4 4 0 0 0 0 7z" p-id="8082"></path></svg>
|
||||
|
Before Width: | Height: | Size: 588 B |
|
|
@ -1 +0,0 @@
|
|||
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h54.796v18.286H36.531V128H18.265V73.143H0V54.857zm127.857-36.571H91.935V128H72.456V18.286H36.534V0h91.326l-.003 18.286z"/></svg>
|
||||
|
Before Width: | Height: | Size: 211 B |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1675605231338" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12660" width="200" height="200"><path d="M139 669.6V164.3c0-12.7 10.3-23.1 23.1-23.1h694.4c12.7 0 23.1 10.4 23.1 23.1v248.5h70V164.3c0-51.3-41.8-93.1-93.1-93.1H162c-51.3 0.1-93 41.8-93 93.1v505.3c0 51.3 41.8 93.1 93.1 93.1h224.7v-70H162c-12.7 0-23-10.4-23-23.1zM104.7 800.6h282v70h-282z" p-id="12661"></path><path d="M954.9 599.4l-5.1-15c-11.5-33.9-29.4-64.9-53.2-91.9l-10.5-11.9h-83.2l-41.7-72.2-15.6-3.1c-34.8-6.9-71.3-6.9-106.1 0l-15.6 3.1-41.7 72.2H499l-10.5 11.9c-23.8 27.1-41.7 58-53.2 91.9l-5.1 15 41.7 72.2-41.7 72.2 5.1 15c11.5 33.9 29.4 64.9 53.2 91.9l10.5 11.9h83.2l41.7 72.2 15.6 3.1c17.4 3.5 35.3 5.2 53.1 5.2s35.6-1.8 53.1-5.2l15.6-3.1 41.7-72.2h83.2l10.5-11.9c23.8-27.1 41.7-58 53.2-91.9l5.1-15-41.7-72.2 41.6-72.2z m-76.8 151.2c-6.4 14.9-14.5 29-24.3 42h-91.2l-45.6 79c-16.1 1.9-32.4 1.9-48.5 0l-45.6-79h-91.2c-9.8-13-17.9-27-24.3-42l45.6-79.1-45.6-79.1c6.4-14.9 14.5-29 24.3-42h91.2l45.6-79c16.1-1.9 32.4-1.9 48.5 0l45.6 79h91.2c9.8 13 17.9 27 24.3 42l-45.6 79.1 45.6 79.1z" p-id="12662"></path><path d="M692.7 560.2c-61.4 0-111.3 49.9-111.3 111.3s49.9 111.3 111.3 111.3S804 732.9 804 671.5c0-61.3-49.9-111.3-111.3-111.3z m0 152.7c-22.8 0-41.3-18.5-41.3-41.3s18.5-41.3 41.3-41.3 41.3 18.5 41.3 41.3-18.5 41.3-41.3 41.3z" p-id="12663"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1697898598670" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13117" width="200" height="200"><path d="M0 64v896h1024V64H0z m384 576v-192h256v192h-256z m256 64v192h-256v-192h256z m0-512v192h-256V192h256zM320 192v192H64V192h256z m-256 256h256v192H64v-192z m640 0h256v192h-256v-192z m0-64V192h256v192h-256zM64 704h256v192H64v-192z m640 192v-192h256v192h-256z" p-id="13118"></path></svg>
|
||||
|
Before Width: | Height: | Size: 438 B |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1699460646090" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6462" width="200" height="200"><path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#FF8F41" p-id="6463"></path><path d="M436.576773 217.091193m29.530787 0l93.381138 0q29.530787 0 29.530788 29.530787l0 51.08028q0 29.530787-29.530788 29.530788l-93.381138 0q-29.530787 0-29.530787-29.530788l0-51.08028q0-29.530787 29.530787-29.530787Z" fill="#FFFFFF" opacity=".4" p-id="6464"></path><path d="M719.583077 342.1014l40.038959-17.701712c3.507779-1.549169 4.020976-6.315598 0.924234-8.578294l-55.734971-40.715773c-3.096742-2.262697-7.481665-0.324839-7.891106 3.488624l-4.475909 41.54423-58.874014 80.591115 28.157206 20.568592 57.855601-79.196782z" fill="#FFFFFF" opacity=".4" p-id="6465"></path><path d="M512.399065 521.178488m-249.016368 0a249.016368 249.016368 0 1 0 498.032736 0 249.016368 249.016368 0 1 0-498.032736 0Z" fill="#FFFFFF" p-id="6466"></path><path d="M512.399065 348.383476c9.917556 0 17.957911 8.040355 17.957911 17.957911v143.564321l97.432443 55.102055c8.633366 4.882157 11.67344 15.838878 6.791282 24.471445-4.882157 8.633366-15.838878 11.67344-24.471445 6.791283l-106.550272-60.258768A17.957911 17.957911 0 0 1 494.441154 520.380359V366.341387c0-9.917556 8.040355-17.957911 17.957911-17.957911z" fill="#FF8F41" p-id="6467"></path><path d="M513.197194 524.371005m-40.704599 0a40.704599 40.704599 0 1 0 81.409198 0 40.704599 40.704599 0 1 0-81.409198 0Z" fill="#FF8338" p-id="6468"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1650623941490" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9166" width="200" height="200"><path d="M977.454545 558.545455h-34.90909v-104.727273c0-44.218182-37.236364-81.454545-81.454546-81.454546H546.909091v-93.090909H744.727273c25.6 0 46.545455-20.945455 46.545454-46.545454V93.090909c0-25.6-20.945455-46.545455-46.545454-46.545454H279.272727c-25.6 0-46.545455 20.945455-46.545454 46.545454v139.636364c0 25.6 20.945455 46.545455 46.545454 46.545454h197.818182v93.090909H162.909091c-44.218182 0-81.454545 37.236364-81.454546 81.454546V558.545455H46.545455c-25.6 0-46.545455 20.945455-46.545455 46.545454v325.818182c0 25.6 20.945455 46.545455 46.545455 46.545454h139.636363c25.6 0 46.545455-20.945455 46.545455-46.545454V605.090909c0-25.6-20.945455-46.545455-46.545455-46.545454H151.272727v-104.727273c0-6.981818 4.654545-11.636364 11.636364-11.636364h314.181818v116.363637H442.181818c-25.6 0-46.545455 20.945455-46.545454 46.545454v325.818182c0 25.6 20.945455 46.545455 46.545454 46.545454h139.636364c25.6 0 46.545455-20.945455 46.545454-46.545454V605.090909c0-25.6-20.945455-46.545455-46.545454-46.545454h-34.909091v-116.363637H861.090909c6.981818 0 11.636364 4.654545 11.636364 11.636364V558.545455H837.818182c-25.6 0-46.545455 20.945455-46.545455 46.545454v325.818182c0 25.6 20.945455 46.545455 46.545455 46.545454h139.636363c25.6 0 46.545455-20.945455 46.545455-46.545454V605.090909c0-25.6-20.945455-46.545455-46.545455-46.545454zM162.909091 628.363636v279.272728H69.818182V628.363636h93.090909z m395.636364 0v279.272728h-93.09091V628.363636h93.09091zM302.545455 209.454545V116.363636h418.90909v93.090909H302.545455z m651.636363 698.181819h-93.090909V628.363636h93.090909v279.272728z" p-id="9167"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.7 KiB |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1650622753800" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4947" width="200" height="200"><path d="M599.378 958.454H424.62c-165.805 0-296.769 0-296.769-86.024v-17.178c0-161.188 133.115-292.258 296.77-292.258h174.756c163.619 0 296.769 131.102 296.769 292.258v17.178c0 86.024-137.557 86.024-296.768 86.024z m-176.39-346.981c-137.625 0-249.608 109.935-249.608 245.098v17.491c0 35.046 144.255 35.046 249.608 35.046h177.985c87.207 0 249.645 0 249.645-35.046v-17.491c0-135.163-112.018-245.098-249.645-245.098H422.988z m80.266-83.526c-129.923 0-235.555-104.14-235.555-232.12 0-128.015 105.632-232.119 235.555-232.119s235.554 104.104 235.554 232.12c0 127.978-105.7 232.12-235.554 232.12zM316.246 295.098c0 101.224 83.91 183.572 187.008 183.572 103.133 0 187.042-82.348 187.042-183.572 0-101.19-83.909-183.502-187.042-183.502-103.134 0-187.008 82.311-187.008 183.502z m0 17.767" fill="" p-id="4948"></path></svg>
|
||||
|
Before Width: | Height: | Size: 959 B |
|
|
@ -1 +0,0 @@
|
|||
<svg t="1699676610821" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8035" width="200" height="200"><path d="M507.642553 518.53617m-501.106383 0a501.106383 501.106383 0 1 0 1002.212766 0 501.106383 501.106383 0 1 0-1002.212766 0Z" fill="#FA6B6D" p-id="8036"></path><path d="M513.089362 262.53617c68.629787 0 125.276596 55.557447 125.276595 123.097873 0 67.540426-55.557447 123.097872-125.276595 123.097872-68.629787 0-125.276596-55.557447-125.276596-123.097872 1.089362-68.629787 56.646809-123.097872 125.276596-123.097873z m0 0c68.629787 0 125.276596 55.557447 125.276595 123.097873 0 67.540426-55.557447 123.097872-125.276595 123.097872-68.629787 0-125.276596-55.557447-125.276596-123.097872 1.089362-68.629787 56.646809-123.097872 125.276596-123.097873z m-46.842553 286.502128h104.578723c89.32766 0 161.225532 70.808511 161.225532 159.046808v9.804256c0 34.859574-71.897872 35.948936-161.225532 35.948936h-104.578723c-89.32766 0-161.225532 0-161.225532-35.948936V708.085106c0-88.238298 72.987234-159.046809 161.225532-159.046808z" fill="#FFFFFF" p-id="8037"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
|
@ -1,103 +0,0 @@
|
|||
<template>
|
||||
<el-breadcrumb class="h-[50px] flex items-center">
|
||||
<transition-group name="breadcrumb">
|
||||
<el-breadcrumb-item v-for="(item, index) in breadcrumbs" :key="item.path">
|
||||
<span
|
||||
v-if="
|
||||
item.redirect === 'noredirect' || index === breadcrumbs.length - 1
|
||||
"
|
||||
class="text-[var(--el-disabled-text-color)]"
|
||||
>{{ translateRouteTitle(item.meta.title) }}</span
|
||||
>
|
||||
<a v-else @click.prevent="handleLink(item)">
|
||||
{{ translateRouteTitle(item.meta.title) }}
|
||||
</a>
|
||||
</el-breadcrumb-item>
|
||||
</transition-group>
|
||||
</el-breadcrumb>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onBeforeMount, ref, watch } from "vue";
|
||||
import { useRoute, RouteLocationMatched } from "vue-router";
|
||||
import { compile } from "path-to-regexp";
|
||||
import router from "@/router";
|
||||
import { translateRouteTitle } from "@/utils/i18n";
|
||||
|
||||
const currentRoute = useRoute();
|
||||
const pathCompile = (path: string) => {
|
||||
const { params } = currentRoute;
|
||||
const toPath = compile(path);
|
||||
return toPath(params);
|
||||
};
|
||||
|
||||
const breadcrumbs = ref([] as Array<RouteLocationMatched>);
|
||||
|
||||
function getBreadcrumb() {
|
||||
let matched = currentRoute.matched.filter(
|
||||
(item) => item.meta && item.meta.title
|
||||
);
|
||||
const first = matched[0];
|
||||
if (!isDashboard(first)) {
|
||||
matched = [
|
||||
{ path: "/dashboard", meta: { title: "dashboard" } } as any,
|
||||
].concat(matched);
|
||||
}
|
||||
breadcrumbs.value = matched.filter((item) => {
|
||||
return item.meta && item.meta.title && item.meta.breadcrumb !== false;
|
||||
});
|
||||
}
|
||||
|
||||
function isDashboard(route: RouteLocationMatched) {
|
||||
const name = route && route.name;
|
||||
if (!name) {
|
||||
return false;
|
||||
}
|
||||
return (
|
||||
name.toString().trim().toLocaleLowerCase() ===
|
||||
"Dashboard".toLocaleLowerCase()
|
||||
);
|
||||
}
|
||||
|
||||
function handleLink(item: any) {
|
||||
const { redirect, path } = item;
|
||||
if (redirect) {
|
||||
router.push(redirect).catch((err) => {
|
||||
console.warn(err);
|
||||
});
|
||||
return;
|
||||
}
|
||||
router.push(pathCompile(path)).catch((err) => {
|
||||
console.warn(err);
|
||||
});
|
||||
}
|
||||
|
||||
watch(
|
||||
() => currentRoute.path,
|
||||
(path) => {
|
||||
if (path.startsWith("/redirect/")) {
|
||||
return;
|
||||
}
|
||||
getBreadcrumb();
|
||||
}
|
||||
);
|
||||
|
||||
onBeforeMount(() => {
|
||||
getBreadcrumb();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.app-breadcrumb.el-breadcrumb {
|
||||
display: inline-block;
|
||||
margin-left: 8px;
|
||||
font-size: 14px;
|
||||
line-height: 50px;
|
||||
}
|
||||
|
||||
// 覆盖 element-plus 的样式
|
||||
.el-breadcrumb__inner,
|
||||
.el-breadcrumb__inner a {
|
||||
font-weight: 400 !important;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
<template>
|
||||
<el-select
|
||||
v-model="selectedValue"
|
||||
:placeholder="placeholder"
|
||||
:disabled="disabled"
|
||||
clearable
|
||||
@change="handleChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="option in options"
|
||||
:key="option.value"
|
||||
:label="option.label"
|
||||
:value="option.value"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getDictOptions } from "@/api/dict";
|
||||
|
||||
const props = defineProps({
|
||||
/**
|
||||
* 字典类型编码(eg: 性别-gender)
|
||||
*/
|
||||
typeCode: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
modelValue: {
|
||||
type: [String, Number],
|
||||
},
|
||||
placeholder: {
|
||||
type: String,
|
||||
default: "请选择",
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
|
||||
const emits = defineEmits(["update:modelValue"]); // 父组件监听事件,同步子组件值的变化给父组件
|
||||
|
||||
const options: Ref<OptionType[]> = ref([]); // 字典下拉数据源
|
||||
|
||||
const selectedValue = ref<string | number | undefined>();
|
||||
|
||||
watch([options, () => props.modelValue], ([newOptions, newModelValue]) => {
|
||||
if (newOptions.length === 0) return; // 下拉数据源加载未完成不回显
|
||||
if (newModelValue == undefined) {
|
||||
selectedValue.value = undefined;
|
||||
return;
|
||||
}
|
||||
if (typeof newOptions[0].value === "number") {
|
||||
selectedValue.value = Number(newModelValue);
|
||||
} else if (typeof newOptions[0].value === "string") {
|
||||
selectedValue.value = String(newModelValue);
|
||||
} else {
|
||||
selectedValue.value = newModelValue;
|
||||
}
|
||||
});
|
||||
|
||||
function handleChange(val?: string | number | undefined) {
|
||||
emits("update:modelValue", val);
|
||||
}
|
||||
|
||||
onBeforeMount(() => {
|
||||
// 根据字典类型编码(typeCode)获取字典选项
|
||||
getDictOptions(props.typeCode).then((response) => {
|
||||
options.value = response.data;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
<template>
|
||||
<a
|
||||
href="https://github.com/haoxianrui"
|
||||
target="_blank"
|
||||
class="github-corner"
|
||||
aria-label="View source on Github"
|
||||
>
|
||||
<svg
|
||||
width="80"
|
||||
height="80"
|
||||
viewBox="0 0 250 250"
|
||||
style="color: #fff; fill: #40c9c6"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" />
|
||||
<path
|
||||
d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
|
||||
fill="currentColor"
|
||||
style="transform-origin: 130px 106px"
|
||||
class="octo-arm"
|
||||
/>
|
||||
<path
|
||||
d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
|
||||
fill="currentColor"
|
||||
class="octo-body"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.github-corner:hover .octo-arm {
|
||||
animation: octocat-wave 560ms ease-in-out;
|
||||
}
|
||||
|
||||
@keyframes octocat-wave {
|
||||
0%,
|
||||
100% {
|
||||
transform: rotate(0);
|
||||
}
|
||||
|
||||
20%,
|
||||
60% {
|
||||
transform: rotate(-25deg);
|
||||
}
|
||||
|
||||
40%,
|
||||
80% {
|
||||
transform: rotate(10deg);
|
||||
}
|
||||
}
|
||||
|
||||
@media (width <= 500px) {
|
||||
.github-corner .octo-arm {
|
||||
animation: octocat-wave 560ms ease-in-out;
|
||||
}
|
||||
|
||||
.github-corner:hover .octo-arm {
|
||||
animation: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
<template>
|
||||
<div
|
||||
class="px-[15px] flex items-center justify-center color-[var(--el-text-color-regular)]"
|
||||
@click="toggleClick"
|
||||
>
|
||||
<svg-icon
|
||||
class="hamburger"
|
||||
:class="{ 'is-active': isActive }"
|
||||
icon-class="shrink"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
defineProps({
|
||||
isActive: {
|
||||
required: true,
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits(["toggleClick"]);
|
||||
|
||||
function toggleClick() {
|
||||
emit("toggleClick");
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.hamburger {
|
||||
vertical-align: middle;
|
||||
cursor: pointer;
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
|
||||
.hamburger.is-active {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
<script setup lang="ts">
|
||||
const props = defineProps({
|
||||
modelValue: {
|
||||
type: String,
|
||||
require: false,
|
||||
default: "",
|
||||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits(["update:modelValue"]);
|
||||
const inputValue = toRef(props, "modelValue");
|
||||
|
||||
const visible = ref(false); // 弹窗显示状态
|
||||
|
||||
const allIconNames: string[] = []; // 所有的图标名称集合
|
||||
|
||||
const filterValue = ref(""); // 筛选的值
|
||||
const filterIconNames = ref<string[]>([]); // 过滤后的图标名称集合
|
||||
|
||||
const iconSelectorRef = ref();
|
||||
const iconSelectorDialogRef = ref();
|
||||
/**
|
||||
* icon 加载
|
||||
*/
|
||||
function loadIcons() {
|
||||
const icons = import.meta.glob("../../assets/icons/*.svg");
|
||||
for (const icon in icons) {
|
||||
const iconName = icon.split("assets/icons/")[1].split(".svg")[0];
|
||||
allIconNames.push(iconName);
|
||||
}
|
||||
filterIconNames.value = allIconNames;
|
||||
}
|
||||
|
||||
/**
|
||||
* icon 筛选
|
||||
*/
|
||||
function handleFilter() {
|
||||
if (filterValue.value) {
|
||||
filterIconNames.value = allIconNames.filter((iconName) =>
|
||||
iconName.includes(filterValue.value)
|
||||
);
|
||||
} else {
|
||||
filterIconNames.value = allIconNames;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* icon 选择
|
||||
*/
|
||||
function handleSelect(iconName: string) {
|
||||
emit("update:modelValue", iconName);
|
||||
visible.value = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击容器外的区域关闭弹窗 VueUse onClickOutside
|
||||
*/
|
||||
onClickOutside(iconSelectorRef, () => (visible.value = false), {
|
||||
ignore: [iconSelectorDialogRef],
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
loadIcons();
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div ref="iconSelectorRef" class="iconselect-container">
|
||||
<el-input
|
||||
v-model="inputValue"
|
||||
readonly
|
||||
placeholder="点击选择图标"
|
||||
@click="visible = !visible"
|
||||
>
|
||||
<template #prepend>
|
||||
<svg-icon :icon-class="inputValue" />
|
||||
</template>
|
||||
</el-input>
|
||||
|
||||
<el-popover
|
||||
shadow="none"
|
||||
:visible="visible"
|
||||
placement="bottom-end"
|
||||
trigger="click"
|
||||
width="400"
|
||||
>
|
||||
<template #reference>
|
||||
<div
|
||||
class="cursor-pointer text-[#999] absolute right-[10px] top-0 height-[32px] leading-[32px]"
|
||||
@click="visible = !visible"
|
||||
>
|
||||
<i-ep-caret-top v-show="visible" />
|
||||
<i-ep-caret-bottom v-show="!visible" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- 下拉选择弹窗 -->
|
||||
<div ref="iconSelectorDialogRef">
|
||||
<el-input
|
||||
v-model="filterValue"
|
||||
class="p-2"
|
||||
placeholder="搜索图标"
|
||||
clearable
|
||||
@input="handleFilter"
|
||||
/>
|
||||
<el-divider border-style="dashed" />
|
||||
|
||||
<el-scrollbar height="300px">
|
||||
<ul class="icon-list">
|
||||
<li
|
||||
v-for="(iconName, index) in filterIconNames"
|
||||
:key="index"
|
||||
class="icon-item"
|
||||
@click="handleSelect(iconName)"
|
||||
>
|
||||
<el-tooltip :content="iconName" placement="bottom" effect="light">
|
||||
<svg-icon
|
||||
color="var(--el-text-color-regular)"
|
||||
:icon-class="iconName"
|
||||
/>
|
||||
</el-tooltip>
|
||||
</li>
|
||||
</ul>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</el-popover>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.el-divider--horizontal {
|
||||
margin: 10px auto !important;
|
||||
}
|
||||
|
||||
.iconselect-container {
|
||||
position: relative;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
.icon-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding-left: 10px;
|
||||
margin-top: 10px;
|
||||
|
||||
.icon-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
place-items: center center;
|
||||
width: 10%;
|
||||
padding: 5px;
|
||||
margin: 0 10px 10px 0;
|
||||
cursor: pointer;
|
||||
border: 1px solid #ccc;
|
||||
|
||||
&:hover {
|
||||
color: var(--el-color-primary);
|
||||
border-color: var(--el-color-primary);
|
||||
transition: all 0.2s;
|
||||
transform: scaleX(1.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||