first commit
42
src/App.vue
Normal file
9
src/apis/area/index.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
/** @desc 获取地区列表 */
|
||||
export const getAreaList = (params: { type: 'province' | 'city' | 'area', code?: string }) => {
|
||||
return http.get<T.AreaItem>('/area/list', params)
|
||||
}
|
||||
5
src/apis/area/type.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export interface AreaItem {
|
||||
label: string
|
||||
code: string
|
||||
children?: AreaItem[]
|
||||
}
|
||||
46
src/apis/auth/index.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/auth'
|
||||
|
||||
/** @desc 账号登录 */
|
||||
export function accountLogin(req: T.AccountLoginReq) {
|
||||
return http.post<T.LoginResp>(`${BASE_URL}/login`, req)
|
||||
}
|
||||
|
||||
/** @desc 手机号登录 */
|
||||
export function phoneLogin(req: T.PhoneLoginReq) {
|
||||
return http.post<T.LoginResp>(`${BASE_URL}/login`, req)
|
||||
}
|
||||
|
||||
/** @desc 邮箱登录 */
|
||||
export function emailLogin(req: T.EmailLoginReq) {
|
||||
return http.post<T.LoginResp>(`${BASE_URL}/login`, req)
|
||||
}
|
||||
|
||||
/** @desc 三方账号登录 */
|
||||
export function socialLogin(req: any) {
|
||||
return http.post<T.LoginResp>(`${BASE_URL}/login`, req)
|
||||
}
|
||||
|
||||
/** @desc 三方账号登录授权 */
|
||||
export function socialAuth(source: string) {
|
||||
return http.get<T.SocialAuthAuthorizeResp>(`${BASE_URL}/${source}`)
|
||||
}
|
||||
|
||||
/** @desc 退出登录 */
|
||||
export function logout() {
|
||||
return http.post(`${BASE_URL}/logout`)
|
||||
}
|
||||
|
||||
/** @desc 获取用户信息 */
|
||||
export const getUserInfo = () => {
|
||||
return http.get<T.UserInfo>(`${BASE_URL}/user/info`)
|
||||
}
|
||||
|
||||
/** @desc 获取路由信息 */
|
||||
export const getUserRoute = () => {
|
||||
return http.get<T.RouteItem[]>(`${BASE_URL}/user/route`)
|
||||
}
|
||||
88
src/apis/auth/type.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
/** 用户类型 */
|
||||
export interface UserInfo {
|
||||
id: string
|
||||
username: string
|
||||
nickname: string
|
||||
gender: 0 | 1 | 2
|
||||
email: string
|
||||
phone: string
|
||||
avatar: string
|
||||
pwdResetTime: string
|
||||
pwdExpired: boolean
|
||||
registrationDate: string
|
||||
deptName: string
|
||||
roles: string[]
|
||||
permissions: string[]
|
||||
}
|
||||
|
||||
/** 路由类型 */
|
||||
export interface RouteItem {
|
||||
id: string
|
||||
title: string
|
||||
parentId: string
|
||||
type: 1 | 2 | 3
|
||||
path: string
|
||||
name: string
|
||||
component: string
|
||||
redirect: string
|
||||
icon: string
|
||||
isExternal: boolean
|
||||
isHidden: boolean
|
||||
isCache: boolean
|
||||
permission: string
|
||||
roles: string[]
|
||||
sort: number
|
||||
status: 0 | 1
|
||||
children: RouteItem[]
|
||||
activeMenu: string
|
||||
alwaysShow: boolean
|
||||
breadcrumb: boolean
|
||||
showInTabs: boolean
|
||||
affix: boolean
|
||||
}
|
||||
|
||||
/** 认证类型 */
|
||||
export type AuthType = 'ACCOUNT' | 'PHONE' | 'EMAIL' | 'SOCIAL'
|
||||
|
||||
export const AuthTypeConstants = {
|
||||
ACCOUNT: 'ACCOUNT',
|
||||
PHONE: 'PHONE',
|
||||
EMAIL: 'EMAIL',
|
||||
SOCIAL: 'SOCIAL',
|
||||
} as const
|
||||
|
||||
/** 基础认证请求接口 */
|
||||
export interface AuthReq {
|
||||
clientId?: string
|
||||
authType?: AuthType
|
||||
}
|
||||
|
||||
/** 账号登录请求参数 */
|
||||
export interface AccountLoginReq extends AuthReq {
|
||||
username: string
|
||||
password: string
|
||||
captcha: string
|
||||
uuid: string
|
||||
}
|
||||
|
||||
/** 手机号登录请求参数 */
|
||||
export interface PhoneLoginReq extends AuthReq {
|
||||
phone: string
|
||||
captcha: string
|
||||
}
|
||||
|
||||
/** 邮箱登录请求参数 */
|
||||
export interface EmailLoginReq extends AuthReq {
|
||||
email: string
|
||||
captcha: string
|
||||
}
|
||||
|
||||
/** 登录响应类型 */
|
||||
export interface LoginResp {
|
||||
token: string
|
||||
}
|
||||
|
||||
/** 第三方登录授权类型 */
|
||||
export interface SocialAuthAuthorizeResp {
|
||||
authorizeUrl: string
|
||||
}
|
||||
54
src/apis/code/generator.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
import type { LabelValueState } from '@/types/global'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/code/generator'
|
||||
|
||||
/** @desc 查询代码生成列表 */
|
||||
export function listGenConfig(query: T.GenConfigPageQuery) {
|
||||
return http.get<PageRes<T.GenConfigResp[]>>(`${BASE_URL}/config`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询生成配置信息 */
|
||||
export function getGenConfig(tableName: string) {
|
||||
return http.get<T.GenConfigResp>(`${BASE_URL}/config/${tableName}`)
|
||||
}
|
||||
|
||||
/** @desc 查询字段配置列表 */
|
||||
export function listFieldConfig(tableName: string, requireSync: boolean) {
|
||||
return http.get<T.FieldConfigResp[]>(`${BASE_URL}/field/${tableName}?requireSync=${requireSync}`)
|
||||
}
|
||||
|
||||
/** @desc 保存配置信息 */
|
||||
export function saveGenConfig(tableName: string, req: T.GeneratorConfigResp) {
|
||||
return http.post(`${BASE_URL}/config/${tableName}`, req)
|
||||
}
|
||||
|
||||
/** @desc 生成预览 */
|
||||
export function genPreview(tableNames: Array<string>) {
|
||||
return http.get<T.GeneratePreviewResp[]>(`${BASE_URL}/preview/${tableNames}`)
|
||||
}
|
||||
|
||||
/** @desc 生成代码 */
|
||||
export function downloadCode(tableNames: Array<string>) {
|
||||
return http.requestNative({
|
||||
url: `${BASE_URL}/${tableNames}/download`,
|
||||
method: 'post',
|
||||
responseType: 'blob',
|
||||
})
|
||||
}
|
||||
|
||||
/** @desc 生成代码 */
|
||||
export function generateCode(tableNames: Array<string>) {
|
||||
return http.requestNative({
|
||||
url: `${BASE_URL}/${tableNames}`,
|
||||
method: 'post',
|
||||
})
|
||||
}
|
||||
|
||||
/** @desc 查询字典列表 */
|
||||
export function listFieldConfigDict() {
|
||||
return http.get<LabelValueState[]>(`${BASE_URL}/dict`)
|
||||
}
|
||||
1
src/apis/code/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './generator'
|
||||
45
src/apis/code/type.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
/** 工具代码生成类型 */
|
||||
export interface GenConfigResp {
|
||||
tableName: string
|
||||
comment: string
|
||||
moduleName: string
|
||||
packageName: string
|
||||
businessName: string
|
||||
author: string
|
||||
tablePrefix: string
|
||||
isOverride: boolean
|
||||
createTime?: string
|
||||
updateTime?: string
|
||||
classNamePrefix?: string
|
||||
}
|
||||
export interface GenConfigQuery {
|
||||
tableName?: string
|
||||
}
|
||||
export interface GenConfigPageQuery extends PageQuery, GenConfigQuery {}
|
||||
|
||||
export interface FieldConfigResp {
|
||||
tableName: string
|
||||
columnName: string
|
||||
columnType: string
|
||||
fieldName: string
|
||||
fieldType: string
|
||||
fieldSort: number
|
||||
comment: string
|
||||
isRequired: boolean
|
||||
showInList: boolean
|
||||
showInForm: boolean
|
||||
showInQuery: boolean
|
||||
formType: string
|
||||
queryType: string
|
||||
dictCode: string
|
||||
createTime?: string
|
||||
}
|
||||
export interface GeneratorConfigResp {
|
||||
genConfig: GenConfigResp
|
||||
fieldConfigs: FieldConfigResp[]
|
||||
}
|
||||
export interface GeneratePreviewResp {
|
||||
path: string
|
||||
fileName: string
|
||||
content: string
|
||||
}
|
||||
31
src/apis/common/captcha.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/captcha'
|
||||
|
||||
/** @desc 获取图片验证码 */
|
||||
export function getImageCaptcha() {
|
||||
return http.get<T.ImageCaptchaResp>(`${BASE_URL}/image`)
|
||||
}
|
||||
|
||||
/** @desc 获取短信验证码 */
|
||||
export function getSmsCaptcha(phone: string, captchaReq: T.BehaviorCaptchaReq) {
|
||||
return http.get<boolean>(`${BASE_URL}/sms?phone=${phone}&captchaVerification=${encodeURIComponent(captchaReq.captchaVerification || '')}`)
|
||||
}
|
||||
|
||||
/** @desc 获取邮箱验证码 */
|
||||
export function getEmailCaptcha(email: string, captchaReq: T.BehaviorCaptchaReq) {
|
||||
return http.get<boolean>(`${BASE_URL}/mail?email=${email}&captchaVerification=${encodeURIComponent(captchaReq.captchaVerification || '')}`)
|
||||
}
|
||||
|
||||
/** @desc 获取行为验证码 */
|
||||
export function getBehaviorCaptcha(req: any) {
|
||||
return http.get<T.BehaviorCaptchaResp>(`${BASE_URL}/behavior`, req)
|
||||
}
|
||||
|
||||
/** @desc 校验行为验证码 */
|
||||
export function checkBehaviorCaptcha(req: any) {
|
||||
return http.post<T.CheckBehaviorCaptchaResp>(`${BASE_URL}/behavior`, req)
|
||||
}
|
||||
65
src/apis/common/common.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import type { TreeNodeData } from '@arco-design/web-vue'
|
||||
import http from '@/utils/http'
|
||||
import type { LabelValueState } from '@/types/global'
|
||||
|
||||
const BASE_URL = '/common'
|
||||
|
||||
/** @desc 查询部门树 */
|
||||
export function listDeptTree(query: { description: string | unknown }) {
|
||||
return http.get<TreeNodeData[]>(`${BASE_URL}/tree/dept`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询部门树 */
|
||||
export function listBranchTree(query: { description: string | unknown }) {
|
||||
return http.get<TreeNodeData[]>(`${BASE_URL}/tree/branch`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询空间树 */
|
||||
export function listSpaceTree(query: { description: string | unknown }) {
|
||||
return http.get<TreeNodeData[]>(`${BASE_URL}/tree/space`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询空间树 */
|
||||
export function listPointTree(query: { description: string | unknown }) {
|
||||
return http.get<TreeNodeData[]>(`${BASE_URL}/tree/point`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询菜单树 */
|
||||
export function listMenuTree(query: { description: string }) {
|
||||
return http.get<TreeNodeData[]>(`${BASE_URL}/tree/menu`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询用户列表 */
|
||||
export function listUserDict(query?: { status: number }) {
|
||||
return http.get<LabelValueState[]>(`${BASE_URL}/dict/user`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询角色列表 */
|
||||
export function listRoleDict(query?: { name: string, status: number }) {
|
||||
return http.get<LabelValueState[]>(`${BASE_URL}/dict/role`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询字典列表 */
|
||||
export function listCommonDict(code: string) {
|
||||
return http.get<LabelValueState[]>(`${BASE_URL}/dict/${code}`)
|
||||
}
|
||||
|
||||
/** @desc 查询系统配置参数 */
|
||||
export function listSiteOptionDict() {
|
||||
return http.get<LabelValueState[]>(`${BASE_URL}/dict/option/site`)
|
||||
}
|
||||
|
||||
/** @desc 上传文件 */
|
||||
export function uploadFile(data: FormData) {
|
||||
return http.post(`${BASE_URL}/file`, data)
|
||||
}
|
||||
|
||||
/** @desc 上传文件 */
|
||||
export function updateUpload(data: object) {
|
||||
return http.post(`${BASE_URL}/updateUpload`, data)
|
||||
}
|
||||
|
||||
/** @desc 上传人像 */
|
||||
export function faceUpload(data: object) {
|
||||
return http.post(`${BASE_URL}/faceUpload`, data)
|
||||
}
|
||||
51
src/apis/common/dashboard.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/dashboard'
|
||||
|
||||
/** @desc 查询公告列表 */
|
||||
export function listDashboardNotice() {
|
||||
return http.get<T.DashboardNoticeResp[]>(`${BASE_URL}/notice`)
|
||||
}
|
||||
|
||||
/** @desc 查询 PV 总览 */
|
||||
export function getDashboardOverviewPv() {
|
||||
return http.get<T.DashboardOverviewCommonResp>(`${BASE_URL}/analysis/overview/pv`)
|
||||
}
|
||||
|
||||
/** @desc 查询 IP 总览 */
|
||||
export function getDashboardOverviewIp() {
|
||||
return http.get<T.DashboardOverviewCommonResp>(`${BASE_URL}/analysis/overview/ip`)
|
||||
}
|
||||
|
||||
/** @desc 查询地域分析 */
|
||||
export function getAnalysisGeo() {
|
||||
return http.get<T.DashboardChartCommonResp[]>(`${BASE_URL}/analysis/geo`)
|
||||
}
|
||||
|
||||
/** @desc 查询访问趋势 */
|
||||
export function getDashboardAccessTrend(days: number) {
|
||||
return http.get<T.DashboardAccessTrendResp[]>(`${BASE_URL}/access/trend/${days}`)
|
||||
}
|
||||
|
||||
/** @desc 查询访问时段分析 */
|
||||
export function getAnalysisTimeslot() {
|
||||
return http.get<T.DashboardChartCommonResp[]>(`${BASE_URL}/analysis/timeslot`)
|
||||
}
|
||||
|
||||
/** @desc 查询模块分析 */
|
||||
export function getAnalysisModule() {
|
||||
return http.get<T.DashboardChartCommonResp[]>(`${BASE_URL}/analysis/module`)
|
||||
}
|
||||
|
||||
/** @desc 查询终端分析 */
|
||||
export function getAnalysisOs() {
|
||||
return http.get<T.DashboardChartCommonResp[]>(`${BASE_URL}/analysis/os`)
|
||||
}
|
||||
|
||||
/** @desc 查询浏览器分析 */
|
||||
export function getAnalysisBrowser() {
|
||||
return http.get<T.DashboardChartCommonResp[]>(`${BASE_URL}/analysis/browser`)
|
||||
}
|
||||
3
src/apis/common/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from './common'
|
||||
export * from './captcha'
|
||||
export * from './dashboard'
|
||||
59
src/apis/common/type.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
/** 图形验证码类型 */
|
||||
export interface ImageCaptchaResp {
|
||||
uuid: string
|
||||
img: string
|
||||
expireTime: number
|
||||
isEnabled: boolean
|
||||
}
|
||||
|
||||
/** 仪表盘公告类型 */
|
||||
export interface DashboardNoticeResp {
|
||||
id: number
|
||||
title: string
|
||||
type: number
|
||||
}
|
||||
|
||||
/** 仪表盘访问趋势类型 */
|
||||
export interface DashboardAccessTrendResp {
|
||||
date: string
|
||||
pvCount: number
|
||||
ipCount: number
|
||||
}
|
||||
|
||||
/** 仪表盘通用总览类型 */
|
||||
export interface DashboardOverviewCommonResp {
|
||||
total: number
|
||||
today: number
|
||||
growth: number
|
||||
dataList: DashboardChartCommonResp[]
|
||||
}
|
||||
|
||||
/** 仪表盘通用图表类型 */
|
||||
export interface DashboardChartCommonResp {
|
||||
name: string
|
||||
value: number
|
||||
}
|
||||
|
||||
/* 行为验证码类型 */
|
||||
export interface BehaviorCaptchaResp {
|
||||
originalImageBase64: string
|
||||
point: {
|
||||
x: number
|
||||
y: number
|
||||
}
|
||||
jigsawImageBase64: string
|
||||
token: string
|
||||
secretKey: string
|
||||
wordList: string[]
|
||||
}
|
||||
|
||||
export interface BehaviorCaptchaReq {
|
||||
captchaType?: string
|
||||
captchaVerification?: string
|
||||
clientUid?: string
|
||||
}
|
||||
|
||||
export interface CheckBehaviorCaptchaResp {
|
||||
repCode: string
|
||||
repMsg: string
|
||||
}
|
||||
15
src/apis/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
export * from './area'
|
||||
export * from './auth'
|
||||
export * from './common'
|
||||
export * from './monitor'
|
||||
export * from './system'
|
||||
export * from './code'
|
||||
export * from './schedule'
|
||||
|
||||
export * from './area/type'
|
||||
export * from './auth/type'
|
||||
export * from './common/type'
|
||||
export * from './monitor/type'
|
||||
export * from './system/type'
|
||||
export * from './code/type'
|
||||
export * from './schedule/type'
|
||||
2
src/apis/monitor/index.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export * from './online'
|
||||
export * from './log'
|
||||
26
src/apis/monitor/log.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/log'
|
||||
|
||||
/** @desc 查询日志列表 */
|
||||
export function listLog(query: T.LogPageQuery) {
|
||||
return http.get<PageRes<T.LogResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询日志详情 */
|
||||
export function getLog(id: string) {
|
||||
return http.get<T.LogDetailResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 导出登录日志 */
|
||||
export function exportLoginLog(query: T.LogQuery) {
|
||||
return http.download<any>(`${BASE_URL}/export/login`, query)
|
||||
}
|
||||
|
||||
/** @desc 导出操作日志 */
|
||||
export function exportOperationLog(query: T.LogQuery) {
|
||||
return http.download<any>(`${BASE_URL}/export/operation`, query)
|
||||
}
|
||||
16
src/apis/monitor/online.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/monitor/online'
|
||||
|
||||
/** @desc 查询在线用户列表 */
|
||||
export function listOnlineUser(query: T.OnlineUserPageQuery) {
|
||||
return http.get<PageRes<T.OnlineUserResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 强退在线用户 */
|
||||
export function kickout(token: string) {
|
||||
return http.del(`${BASE_URL}/${token}`)
|
||||
}
|
||||
57
src/apis/monitor/type.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
/** 在线用户类型 */
|
||||
export interface OnlineUserResp {
|
||||
id: string
|
||||
description: string
|
||||
module: string
|
||||
timeTaken: number
|
||||
ip: string
|
||||
address: string
|
||||
browser: string
|
||||
os: string
|
||||
status: number
|
||||
errorMsg: string
|
||||
createUserString: string
|
||||
createTime: string
|
||||
}
|
||||
export interface OnlineUserQuery {
|
||||
nickname?: string
|
||||
loginTime?: string
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface OnlineUserPageQuery extends OnlineUserQuery, PageQuery {}
|
||||
|
||||
/** 系统日志类型 */
|
||||
export interface LogResp {
|
||||
id: string
|
||||
description: string
|
||||
module: string
|
||||
timeTaken: number
|
||||
ip: string
|
||||
address: string
|
||||
browser: string
|
||||
os: string
|
||||
status: number
|
||||
errorMsg: string
|
||||
createUserString: string
|
||||
createTime: string
|
||||
}
|
||||
export interface LogDetailResp extends LogResp {
|
||||
traceId: string
|
||||
requestUrl: string
|
||||
requestMethod: string
|
||||
requestHeaders: string
|
||||
requestBody: string
|
||||
statusCode: number
|
||||
responseHeaders: string
|
||||
responseBody: string
|
||||
}
|
||||
export interface LogQuery {
|
||||
description?: string
|
||||
module?: string
|
||||
ip?: string
|
||||
createUserString?: string
|
||||
createTime: Array<string>
|
||||
status?: number
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface LogPageQuery extends LogQuery, PageQuery {}
|
||||
46
src/apis/open/app.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/open/app'
|
||||
|
||||
/** @desc 查询应用列表 */
|
||||
export function listApp(query: T.AppPageQuery) {
|
||||
return http.get<PageRes<T.AppResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询应用详情 */
|
||||
export function getApp(id: string) {
|
||||
return http.get<T.AppResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增应用 */
|
||||
export function addApp(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改应用 */
|
||||
export function updateApp(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除应用 */
|
||||
export function deleteApp(id: string) {
|
||||
return http.del(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 导出应用 */
|
||||
export function exportApp(query: T.AppQuery) {
|
||||
return http.download(`${BASE_URL}/export`, query)
|
||||
}
|
||||
|
||||
/** @desc 获取密钥 */
|
||||
export function getAppSecret(id: string) {
|
||||
return http.get(`${BASE_URL}/${id}/secret`)
|
||||
}
|
||||
|
||||
/** @desc 重置密钥 */
|
||||
export function resetAppSecret(id: string) {
|
||||
return http.patch(`${BASE_URL}/${id}/secret`)
|
||||
}
|
||||
21
src/apis/open/type.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
/** 应用类型 */
|
||||
export interface AppResp {
|
||||
id: string
|
||||
name: string
|
||||
accessKey: string
|
||||
secretKey: string
|
||||
expireTime: string
|
||||
description: string
|
||||
status: 1 | 2
|
||||
createUserString: string
|
||||
createTime: string
|
||||
updateUserString: string
|
||||
updateTime: string
|
||||
}
|
||||
|
||||
export interface AppQuery {
|
||||
description?: string
|
||||
sort: Array<string>
|
||||
}
|
||||
|
||||
export interface AppPageQuery extends AppQuery, PageQuery {}
|
||||
2
src/apis/schedule/index.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export * from '../schedule/job'
|
||||
export * from '../schedule/log'
|
||||
41
src/apis/schedule/job.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/schedule/job'
|
||||
|
||||
/** @desc 查询任务组列表 */
|
||||
export function listGroup() {
|
||||
return http.get(`${BASE_URL}/group`)
|
||||
}
|
||||
|
||||
/** @desc 查询任务列表 */
|
||||
export function listJob(query: T.JobPageQuery) {
|
||||
return http.get<PageRes<T.JobResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 新增任务 */
|
||||
export function addJob(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改任务 */
|
||||
export function updateJob(data: any, id: number) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改任务状态 */
|
||||
export function updateJobStatus(data: any, id: number) {
|
||||
return http.patch(`${BASE_URL}/${id}/status`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除任务 */
|
||||
export function deleteJob(id: number) {
|
||||
return http.del(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 执行任务 */
|
||||
export function triggerJob(id: number) {
|
||||
return http.post(`${BASE_URL}/trigger/${id}`)
|
||||
}
|
||||
36
src/apis/schedule/log.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/schedule/log'
|
||||
|
||||
/** @desc 查询任务日志列表 */
|
||||
export function listJobLog(query: T.JobLogPageQuery) {
|
||||
return http.get<PageRes<T.JobLogResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询任务日志详情 */
|
||||
export function getJobLogDetail(id: number) {
|
||||
return http.get<boolean>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 停止任务 */
|
||||
export function stopJob(id: number) {
|
||||
return http.post(`${BASE_URL}/stop/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 重试任务 */
|
||||
export function retryJob(id: number) {
|
||||
return http.post(`${BASE_URL}/retry/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 查询任务实例列表 */
|
||||
export function listJobInstance(query: T.JobInstanceQuery) {
|
||||
return http.get<T.JobInstanceResp[]>(`${BASE_URL}/instance`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询任务实例日志列表 */
|
||||
export function listJobInstanceLog(query: T.JobInstanceLogQuery) {
|
||||
return http.get<T.JobInstanceLogResp>(`${BASE_URL}/instance/log`, query)
|
||||
}
|
||||
85
src/apis/schedule/type.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
/** 任务类型 */
|
||||
export interface JobResp {
|
||||
id: number
|
||||
groupName: string
|
||||
jobName: string
|
||||
description?: string
|
||||
triggerType: number
|
||||
triggerInterval: string | number
|
||||
executorType: number
|
||||
taskType: number
|
||||
executorInfo: string
|
||||
argsStr?: string
|
||||
argsType?: string
|
||||
routeKey: number
|
||||
blockStrategy: number
|
||||
executorTimeout: number
|
||||
maxRetryTimes: number
|
||||
retryInterval: number
|
||||
parallelNum: number
|
||||
jobStatus: number
|
||||
nextTriggerAt?: Date
|
||||
createDt?: Date
|
||||
updateDt?: Date
|
||||
}
|
||||
export interface JobQuery {
|
||||
groupName: string
|
||||
jobName?: string
|
||||
jobStatus?: number
|
||||
}
|
||||
export interface JobPageQuery extends JobQuery, PageQuery {}
|
||||
|
||||
/** 任务日志类型 */
|
||||
export interface JobLogResp {
|
||||
id: number
|
||||
groupName: string
|
||||
jobName: string
|
||||
jobId: number
|
||||
taskBatchStatus: number
|
||||
operationReason: number
|
||||
executorType: number
|
||||
executorInfo: string
|
||||
executionAt: string
|
||||
createDt: string
|
||||
}
|
||||
export interface JobLogQuery {
|
||||
jobId?: number
|
||||
groupName?: string
|
||||
jobName?: string
|
||||
taskBatchStatus?: number
|
||||
datetimeRange?: Array<string>
|
||||
}
|
||||
export interface JobLogPageQuery extends JobLogQuery, PageQuery {}
|
||||
|
||||
/** 任务实例类型 */
|
||||
export interface JobInstanceResp {
|
||||
id: number
|
||||
groupName: string
|
||||
jobId: number
|
||||
taskBatchId: number
|
||||
taskStatus: number
|
||||
retryCount: number
|
||||
resultMessage: string
|
||||
clientInfo: string
|
||||
}
|
||||
export interface JobInstanceQuery {
|
||||
jobId?: string | number
|
||||
taskBatchId?: number | string
|
||||
}
|
||||
|
||||
/** 任务实例日志类型 */
|
||||
export interface JobInstanceLogResp {
|
||||
id: number
|
||||
message: any[]
|
||||
finished: number
|
||||
fromIndex: number
|
||||
nextStartId: number
|
||||
}
|
||||
export interface JobInstanceLogQuery {
|
||||
taskBatchId: number
|
||||
jobId: number
|
||||
taskId: number
|
||||
startId: number
|
||||
fromIndex: number
|
||||
size: number
|
||||
}
|
||||
62
src/apis/sysPeople/branch.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import http from '@/utils/http'
|
||||
|
||||
const BASE_URL = '/sysPeople/branch'
|
||||
|
||||
export interface BranchResp {
|
||||
id: string
|
||||
name: string
|
||||
leader: string
|
||||
phone: string
|
||||
parentId: string
|
||||
ancestors: string
|
||||
spaceId: string
|
||||
remark: string
|
||||
createBy: string
|
||||
createTime: string
|
||||
updateBy: string
|
||||
updateTime: string
|
||||
deptId: string
|
||||
level: string
|
||||
deptCode: string
|
||||
ruleId: string
|
||||
ladderRuleId: string
|
||||
isExamine: string
|
||||
createUserString: string
|
||||
updateUserString: string
|
||||
disabled: boolean
|
||||
children: BranchResp[]
|
||||
}
|
||||
export interface BranchQuery {
|
||||
name: string
|
||||
leader: string
|
||||
}
|
||||
|
||||
/** @desc 查询部门管理列表 */
|
||||
export function listBranch(query: BranchQuery) {
|
||||
return http.get<BranchResp[]>(`${BASE_URL}/tree`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询部门管理详情 */
|
||||
export function getBranch(id: string) {
|
||||
return http.get<BranchResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增部门管理 */
|
||||
export function addBranch(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改部门管理 */
|
||||
export function updateBranch(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除部门管理 */
|
||||
export function deleteBranch(id: string) {
|
||||
return http.del(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 导出部门管理 */
|
||||
export function exportBranch(query: BranchQuery) {
|
||||
return http.download(`${BASE_URL}/export`, query)
|
||||
}
|
||||
172
src/apis/sysPeople/people.ts
Normal file
@@ -0,0 +1,172 @@
|
||||
import http from '@/utils/http'
|
||||
import type {LabelValueState} from "@/types/global";
|
||||
|
||||
const BASE_URL = '/sysPeople/people'
|
||||
|
||||
export type * from '../system/type'
|
||||
|
||||
export interface PeopleResp {
|
||||
id: string
|
||||
name: string
|
||||
phone: string
|
||||
sex: number
|
||||
avatar: string
|
||||
branchId: number
|
||||
branchName: string
|
||||
position: string
|
||||
idcard: string
|
||||
carNo: string
|
||||
doorNo: string
|
||||
guid: string
|
||||
faceGuid: string
|
||||
userId: number
|
||||
userName: string
|
||||
remark: string
|
||||
createBy: string
|
||||
createTime: string
|
||||
updateBy: string
|
||||
updateTime: string
|
||||
gh: string
|
||||
fingerprint: string
|
||||
joinTime: string
|
||||
down: number
|
||||
delFlag: string
|
||||
openid: string
|
||||
createUserString: string
|
||||
updateUserString: string
|
||||
disabled: boolean
|
||||
xfFlag: string
|
||||
czje: string
|
||||
btje: string
|
||||
isConsume: number
|
||||
freeze: number
|
||||
xfje: string
|
||||
xfcs: string
|
||||
}
|
||||
|
||||
export interface PeopleDepositImportResp {
|
||||
importKey: string
|
||||
totalRows: number
|
||||
validRows: number
|
||||
duplicateUserRows: number
|
||||
unEnabledRows: number
|
||||
}
|
||||
|
||||
type Long = number
|
||||
|
||||
export interface PeopleQuery {
|
||||
name: string | undefined
|
||||
branchId: string | undefined
|
||||
ids: Array<Long> | undefined
|
||||
branchParentId: string | undefined
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface PeoplePageQuery extends PeopleQuery, PageQuery {}
|
||||
|
||||
/** @desc 查询人员管理列表 */
|
||||
export function listPeople(query: PeoplePageQuery) {
|
||||
return http.get<PageRes<PeopleResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询人员消费列表 */
|
||||
export function pageConsume(query: PeoplePageQuery) {
|
||||
return http.get<PageRes<PeopleResp[]>>(`${BASE_URL}/pageConsume`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询人员名称下拉数据 */
|
||||
export function getPeopleNameList(query: PeopleQuery) {
|
||||
return http.get(`${BASE_URL}/getPeopleNameList`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询人员管理详情 */
|
||||
export function getPeople(id: string) {
|
||||
return http.get<PeopleResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增人员管理 */
|
||||
export function addPeople(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改人员管理 */
|
||||
export function updatePeople(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除人员管理 */
|
||||
export function deletePeople(ids: Long | Array<Long>) {
|
||||
return http.del(`${BASE_URL}/${ids}`)
|
||||
}
|
||||
|
||||
/** @desc 导出人员管理 */
|
||||
export function exportPeople(query: PeopleQuery) {
|
||||
return http.download(`${BASE_URL}/export`, query)
|
||||
}
|
||||
|
||||
/** @desc 导出模板 */
|
||||
export function exportTemplate() {
|
||||
return http.download(`${BASE_URL}/import/template`)
|
||||
}
|
||||
|
||||
/** @desc 解析用户导入数据 */
|
||||
export function parseImportUser(data: FormData) {
|
||||
return http.post(`${BASE_URL}/import/parse`, data)
|
||||
}
|
||||
|
||||
/** @desc 导入用户 */
|
||||
export function importPeople(data: any) {
|
||||
return http.post(`${BASE_URL}/import`, data)
|
||||
}
|
||||
|
||||
export function downPeople(ids: Long | Array<Long>) {
|
||||
return http.get(`${BASE_URL}/down/${ids}`)
|
||||
}
|
||||
|
||||
/** @desc 导出消费人员充值 */
|
||||
export function exportConsumePeople(query: PeopleQuery) {
|
||||
return http.download(`${BASE_URL}/exportConsume`, query)
|
||||
}
|
||||
|
||||
/** @desc 下载人员充值导入模板 */
|
||||
export function downloadConsumeImportTemplate() {
|
||||
return http.download(`${BASE_URL}/import/template`)
|
||||
}
|
||||
|
||||
/** @desc 解析人员充值导入数据 */
|
||||
export function parseConsumeImportUser(data: FormData) {
|
||||
return http.post(`${BASE_URL}/consume/import/parse`, data)
|
||||
}
|
||||
/** @desc 导入人员充值 */
|
||||
export function importConsumeUser(data: any) {
|
||||
return http.post(`${BASE_URL}/consume/import`, data)
|
||||
}
|
||||
|
||||
/** @desc 退款人员 */
|
||||
export function refundPeople(data: any) {
|
||||
return http.post(`${BASE_URL}/refund`, data)
|
||||
}
|
||||
|
||||
/** @desc 充值人员 */
|
||||
export function depositPeople(data: any) {
|
||||
return http.post(`${BASE_URL}/deposit`, data)
|
||||
}
|
||||
|
||||
/** @desc 补贴人员 */
|
||||
export function subsidyPeople(data: any) {
|
||||
return http.post(`${BASE_URL}/subsidy`, data)
|
||||
}
|
||||
|
||||
/** @desc 补贴人员 */
|
||||
export function freeze(ids: Long[]) {
|
||||
return http.post(`${BASE_URL}/freeze`, ids)
|
||||
}
|
||||
|
||||
/** @desc 补贴人员 */
|
||||
export function unFreeze(ids: Long[]) {
|
||||
return http.post(`${BASE_URL}/unFreeze`, ids)
|
||||
}
|
||||
|
||||
/** @desc 补贴人员 */
|
||||
export function resetMoney(data: any) {
|
||||
return http.post(`${BASE_URL}/resetMoney`, data)
|
||||
}
|
||||
31
src/apis/system/client.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/client'
|
||||
|
||||
/** @desc 查询终端列表 */
|
||||
export function listClient(query: T.ClientPageQuery) {
|
||||
return http.get<PageRes<T.ClientResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询终端详情 */
|
||||
export function getClient(id: string) {
|
||||
return http.get<T.ClientDetailResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增终端 */
|
||||
export function addClient(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改终端 */
|
||||
export function updateClient(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除终端 */
|
||||
export function deleteClient(ids: string | Array<string>) {
|
||||
return http.del(`${BASE_URL}/${ids}`)
|
||||
}
|
||||
36
src/apis/system/dept.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/dept'
|
||||
|
||||
/** @desc 查询部门列表 */
|
||||
export function listDept(query: T.DeptQuery) {
|
||||
return http.get<T.DeptResp[]>(`${BASE_URL}/tree`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询部门详情 */
|
||||
export function getDept(id: string) {
|
||||
return http.get<T.DeptResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增部门 */
|
||||
export function addDept(data: any) {
|
||||
return http.post<boolean>(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改部门 */
|
||||
export function updateDept(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除部门 */
|
||||
export function deleteDept(id: string) {
|
||||
return http.del(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 导出部门 */
|
||||
export function exportDept(query: T.DeptQuery) {
|
||||
return http.download(`${BASE_URL}/export`, query)
|
||||
}
|
||||
61
src/apis/system/dict.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/dict'
|
||||
|
||||
/** @desc 查询字典列表 */
|
||||
export function listDict(query?: T.DictQuery) {
|
||||
return http.get<T.DictResp[]>(`${BASE_URL}/list`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询字典详情 */
|
||||
export function getDict(id: string) {
|
||||
return http.get<T.DictResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增字典 */
|
||||
export function addDict(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改字典 */
|
||||
export function updateDict(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除字典 */
|
||||
export function deleteDict(id: string) {
|
||||
return http.del(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 清除字典缓存 */
|
||||
export function clearDictCache(code: string) {
|
||||
return http.del(`${BASE_URL}/cache/${code}`)
|
||||
}
|
||||
|
||||
/** @desc 查询字典项列表 */
|
||||
export function listDictItem(query: T.DictItemPageQuery) {
|
||||
return http.get<PageRes<T.DictItemResp[]>>(`${BASE_URL}/item`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询字典项详情 */
|
||||
export function getDictItem(id: string) {
|
||||
return http.get<T.DictItemResp>(`${BASE_URL}/item/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增字典项 */
|
||||
export function addDictItem(data: any) {
|
||||
return http.post(`${BASE_URL}/item`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改字典项 */
|
||||
export function updateDictItem(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/item/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除字典项 */
|
||||
export function deleteDictItem(id: string) {
|
||||
return http.del(`${BASE_URL}/item/${id}`)
|
||||
}
|
||||
31
src/apis/system/file.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/file'
|
||||
|
||||
/** @desc 查询文件列表 */
|
||||
export function listFile(query: T.FilePageQuery) {
|
||||
return http.get<PageRes<T.FileItem[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 修改文件 */
|
||||
export function updateFile(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除文件 */
|
||||
export function deleteFile(ids: string | Array<string>) {
|
||||
return http.del(`${BASE_URL}/${ids}`)
|
||||
}
|
||||
|
||||
/** @desc 删除文件 */
|
||||
export function deleteByUrl(url: string) {
|
||||
return http.del(`${BASE_URL}/deleteByUrl`, { url: url })
|
||||
}
|
||||
|
||||
/** @desc 查询文件资源统计统计 */
|
||||
export function getFileStatistics() {
|
||||
return http.get<T.FileStatisticsResp>(`${BASE_URL}/statistics`)
|
||||
}
|
||||
11
src/apis/system/index.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
export * from './user'
|
||||
export * from './role'
|
||||
export * from './menu'
|
||||
export * from './dept'
|
||||
export * from './notice'
|
||||
export * from './dict'
|
||||
export * from './file'
|
||||
export * from './storage'
|
||||
export * from './option'
|
||||
export * from './user-center'
|
||||
export * from './message'
|
||||
36
src/apis/system/menu.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/menu'
|
||||
|
||||
/** @desc 查询菜单列表 */
|
||||
export function listMenu(query?: T.MenuQuery) {
|
||||
return http.get<T.MenuResp[]>(`${BASE_URL}/tree`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询菜单详情 */
|
||||
export function getMenu(id: string) {
|
||||
return http.get<T.MenuResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增菜单 */
|
||||
export function addMenu(data: any) {
|
||||
return http.post<boolean>(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改菜单 */
|
||||
export function updateMenu(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除菜单 */
|
||||
export function deleteMenu(id: string) {
|
||||
return http.del(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 清除菜单缓存 */
|
||||
export function clearMenuCache() {
|
||||
return http.del(`${BASE_URL}/cache`)
|
||||
}
|
||||
26
src/apis/system/message.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/message'
|
||||
|
||||
/** @desc 查询消息列表 */
|
||||
export function listMessage(query: T.MessagePageQuery) {
|
||||
return http.get<PageRes<T.MessageResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 删除消息 */
|
||||
export function deleteMessage(ids: string | Array<string>) {
|
||||
return http.del(`${BASE_URL}/${ids}`)
|
||||
}
|
||||
|
||||
/** @desc 标记已读 */
|
||||
export function readMessage(ids?: string | Array<string>) {
|
||||
return http.patch(`${BASE_URL}/read`, ids)
|
||||
}
|
||||
|
||||
/** @desc 查询未读消息数量 */
|
||||
export function getUnreadMessageCount() {
|
||||
return http.get(`${BASE_URL}/unread`)
|
||||
}
|
||||
31
src/apis/system/notice.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/notice'
|
||||
|
||||
/** @desc 查询公告列表 */
|
||||
export function listNotice(query: T.NoticePageQuery) {
|
||||
return http.get<PageRes<T.NoticeResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询公告详情 */
|
||||
export function getNotice(id: string) {
|
||||
return http.get<T.NoticeResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增公告 */
|
||||
export function addNotice(data: any) {
|
||||
return http.post(BASE_URL, data)
|
||||
}
|
||||
|
||||
/** @desc 修改公告 */
|
||||
export function updateNotice(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除公告 */
|
||||
export function deleteNotice(ids: string | Array<number>) {
|
||||
return http.del(`${BASE_URL}/${ids}`)
|
||||
}
|
||||
21
src/apis/system/option.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/option'
|
||||
|
||||
/** @desc 查询参数列表 */
|
||||
export function listOption(query: T.OptionQuery) {
|
||||
return http.get<T.OptionResp[]>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 修改参数 */
|
||||
export function updateOption(data: any) {
|
||||
return http.put(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 重置参数 */
|
||||
export function resetOptionValue(query: T.OptionQuery) {
|
||||
return http.patch(`${BASE_URL}/value`, query)
|
||||
}
|
||||
56
src/apis/system/role.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/role'
|
||||
|
||||
/** @desc 查询角色列表 */
|
||||
export function listRole(query: T.RoleQuery) {
|
||||
return http.get<T.RoleResp[]>(`${BASE_URL}/list`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询角色详情 */
|
||||
export function getRole(id: string) {
|
||||
return http.get<T.RoleDetailResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增角色 */
|
||||
export function addRole(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改角色 */
|
||||
export function updateRole(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除角色 */
|
||||
export function deleteRole(ids: string | Array<string>) {
|
||||
return http.del(`${BASE_URL}/${ids}`)
|
||||
}
|
||||
|
||||
/** @desc 修改角色权限 */
|
||||
export function updateRolePermission(id: string, data: any) {
|
||||
return http.put(`${BASE_URL}/${id}/permission`, data)
|
||||
}
|
||||
|
||||
/** @desc 查询角色关联用户 */
|
||||
export function listRoleUser(id: string, query: T.RoleUserPageQuery) {
|
||||
return http.get<PageRes<T.RoleUserResp[]>>(`${BASE_URL}/${id}/user`, query)
|
||||
}
|
||||
|
||||
/** @desc 分配角色给用户 */
|
||||
export function assignToUsers(id: string, userIds: Array<string>) {
|
||||
return http.post(`${BASE_URL}/${id}/user`, userIds)
|
||||
}
|
||||
|
||||
/** @desc 取消分配角色给用户 */
|
||||
export function unassignFromUsers(userRoleIds: Array<string | number>) {
|
||||
return http.del(`${BASE_URL}/user`, userRoleIds)
|
||||
}
|
||||
|
||||
/** @desc 查询角色关联用户 ID */
|
||||
export function listRoleUserId(id: string) {
|
||||
return http.get(`${BASE_URL}/${id}/user/id`)
|
||||
}
|
||||
41
src/apis/system/storage.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/storage'
|
||||
|
||||
/** @desc 查询存储列表 */
|
||||
export function listStorage(query: T.StorageQuery) {
|
||||
return http.get<T.StorageResp[]>(`${BASE_URL}/list`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询存储详情 */
|
||||
export function getStorage(id: string) {
|
||||
return http.get<T.StorageResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增存储 */
|
||||
export function addStorage(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改存储 */
|
||||
export function updateStorage(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除存储 */
|
||||
export function deleteStorage(id: string) {
|
||||
return http.del(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 修改存储状态 */
|
||||
export function updateStorageStatus(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}/status`, data)
|
||||
}
|
||||
|
||||
/** @desc 设置默认存储 */
|
||||
export function setDefaultStorage(id: string) {
|
||||
return http.put(`${BASE_URL}/${id}/default`)
|
||||
}
|
||||
66
src/apis/system/sysConfig.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import http from '@/utils/http'
|
||||
|
||||
const BASE_URL = '/system/config'
|
||||
|
||||
export interface ConfigResp {
|
||||
id: string
|
||||
configName: string
|
||||
configKey: string
|
||||
configValue: string
|
||||
remark: string
|
||||
createTime: string
|
||||
createUserString: string
|
||||
updateUserString: string
|
||||
disabled: boolean
|
||||
}
|
||||
export interface ConfigDetailResp {
|
||||
id: string
|
||||
configName: string
|
||||
configKey: string
|
||||
configValue: string
|
||||
configType: string
|
||||
remark: string
|
||||
createUser: string
|
||||
createTime: string
|
||||
updateUser: string
|
||||
updateTime: string
|
||||
createUserString: string
|
||||
updateUserString: string
|
||||
}
|
||||
export interface ConfigQuery {
|
||||
configName: string | undefined
|
||||
configKey: string | undefined
|
||||
createTime: Array<string> | undefined
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface ConfigPageQuery extends ConfigQuery, PageQuery {}
|
||||
|
||||
/** @desc 查询参数配置列表 */
|
||||
export function listConfig(query: ConfigPageQuery) {
|
||||
return http.get<PageRes<ConfigResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询参数配置详情 */
|
||||
export function getConfig(id: string) {
|
||||
return http.get<ConfigDetailResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增参数配置 */
|
||||
export function addConfig(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改参数配置 */
|
||||
export function updateConfig(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除参数配置 */
|
||||
export function deleteConfig(id: string) {
|
||||
return http.del(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 导出参数配置 */
|
||||
export function exportConfig(query: ConfigQuery) {
|
||||
return http.download(`${BASE_URL}/export`, query)
|
||||
}
|
||||
406
src/apis/system/type.ts
Normal file
@@ -0,0 +1,406 @@
|
||||
/** 用户类型 */
|
||||
export interface UserResp {
|
||||
id: string
|
||||
username: string
|
||||
nickname: string
|
||||
avatar: string
|
||||
gender: number
|
||||
email: string
|
||||
phone: string
|
||||
description: string
|
||||
status: 1 | 2
|
||||
isSystem?: boolean
|
||||
createUserString: string
|
||||
createTime: string
|
||||
updateUserString: string
|
||||
updateTime: string
|
||||
deptId: string
|
||||
deptName: string
|
||||
roleIds: Array<number>
|
||||
roleNames: Array<string>
|
||||
disabled: boolean
|
||||
}
|
||||
export type UserDetailResp = UserResp & {
|
||||
pwdResetTime?: string
|
||||
}
|
||||
export interface UserImportResp {
|
||||
importKey: string
|
||||
totalRows: number
|
||||
validRows: number
|
||||
duplicateUserRows: number
|
||||
duplicateEmailRows: number
|
||||
duplicatePhoneRows: number
|
||||
}
|
||||
|
||||
export interface PeopleImportResp {
|
||||
importKey: string
|
||||
totalRows: number
|
||||
validRows: number
|
||||
duplicatePeopleRows: number
|
||||
}
|
||||
export interface UserQuery {
|
||||
description?: string
|
||||
status?: number
|
||||
createTime?: Array<string>
|
||||
deptId?: string
|
||||
sort: Array<string>
|
||||
userIds?: Array<string>
|
||||
roleId?: string
|
||||
}
|
||||
export interface UserPageQuery extends UserQuery, PageQuery {}
|
||||
|
||||
/** 角色类型 */
|
||||
export interface RoleResp {
|
||||
id: string
|
||||
name: string
|
||||
code: string
|
||||
sort: number
|
||||
description: string
|
||||
dataScope: number
|
||||
isSystem: boolean
|
||||
createUserString: string
|
||||
createTime: string
|
||||
updateUserString: string
|
||||
updateTime: string
|
||||
disabled: boolean
|
||||
}
|
||||
export type RoleDetailResp = RoleResp & {
|
||||
menuIds: Array<number>
|
||||
deptIds: Array<number>
|
||||
menuCheckStrictly: boolean
|
||||
deptCheckStrictly: boolean
|
||||
}
|
||||
export interface RoleUserResp {
|
||||
id: string
|
||||
username: string
|
||||
nickname: string
|
||||
gender: number
|
||||
description: string
|
||||
status: 1 | 2
|
||||
isSystem?: boolean
|
||||
deptId: string
|
||||
deptName: string
|
||||
roleIds: Array<number>
|
||||
roleNames: Array<string>
|
||||
disabled: boolean
|
||||
}
|
||||
export interface RoleQuery {
|
||||
description?: string
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface RoleUserQuery {
|
||||
description?: string
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface RoleUserPageQuery extends RoleUserQuery, PageQuery {}
|
||||
|
||||
/** 菜单类型 */
|
||||
export interface MenuResp {
|
||||
id: string
|
||||
title: string
|
||||
parentId: string
|
||||
type: 1 | 2 | 3
|
||||
path: string
|
||||
name: string
|
||||
component: string
|
||||
redirect: string
|
||||
icon: string
|
||||
isExternal: boolean
|
||||
isCache: boolean
|
||||
isHidden: boolean
|
||||
permission: string
|
||||
sort: number
|
||||
status: 1 | 2
|
||||
createUserString: string
|
||||
createTime: string
|
||||
updateUserString: string
|
||||
updateTime: string
|
||||
children: MenuResp[]
|
||||
}
|
||||
export interface MenuQuery {
|
||||
title?: string
|
||||
status?: number
|
||||
}
|
||||
|
||||
/** 部门类型 */
|
||||
export interface DeptResp {
|
||||
id: string
|
||||
name: string
|
||||
sort: number
|
||||
status: 1 | 2
|
||||
isSystem: boolean
|
||||
description: string
|
||||
createUserString: string
|
||||
createTime: string
|
||||
updateUserString: string
|
||||
updateTime: string
|
||||
parentId: string
|
||||
children: DeptResp[]
|
||||
}
|
||||
export interface DeptQuery {
|
||||
description?: string
|
||||
status?: number
|
||||
}
|
||||
|
||||
/** 字典类型 */
|
||||
export interface DictResp {
|
||||
id: string
|
||||
name: string
|
||||
code: string
|
||||
isSystem: boolean
|
||||
description: string
|
||||
createUserString: string
|
||||
createTime: string
|
||||
updateUserString: string
|
||||
updateTime: string
|
||||
}
|
||||
export interface DictQuery {
|
||||
description?: string
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface DictItemResp {
|
||||
id: string
|
||||
label: string
|
||||
value: string
|
||||
color: string
|
||||
sort: number
|
||||
description: string
|
||||
status: 1 | 2
|
||||
dictId: number
|
||||
createUserString: string
|
||||
createTime: string
|
||||
updateUserString: string
|
||||
updateTime: string
|
||||
}
|
||||
export interface DictItemQuery {
|
||||
description?: string
|
||||
status?: number
|
||||
sort: Array<string>
|
||||
dictId: string
|
||||
}
|
||||
export interface DictItemPageQuery extends DictItemQuery, PageQuery {
|
||||
}
|
||||
|
||||
/** 公告类型 */
|
||||
export interface NoticeResp {
|
||||
id?: string
|
||||
title?: string
|
||||
content: string
|
||||
status?: number
|
||||
type?: string
|
||||
effectiveTime?: string
|
||||
terminateTime?: string
|
||||
noticeScope?: number
|
||||
noticeUsers?: Array<string>
|
||||
createUserString?: string
|
||||
createTime?: string
|
||||
updateUserString?: string
|
||||
updateTime?: string
|
||||
}
|
||||
export interface NoticeQuery {
|
||||
title?: string
|
||||
type?: string
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface NoticePageQuery extends NoticeQuery, PageQuery {
|
||||
}
|
||||
|
||||
/** 文件类型 */
|
||||
export interface FileItem {
|
||||
id: string
|
||||
name: string
|
||||
size: number
|
||||
url: string
|
||||
parentPath: string
|
||||
absPath: string
|
||||
metadata: string
|
||||
md5: string
|
||||
contentType: string
|
||||
thumbnailSize: number
|
||||
thumbnailUrl: string
|
||||
thumbnailMetadata: string
|
||||
extension: string
|
||||
type: number
|
||||
storageId: string
|
||||
storageName: string
|
||||
createUserString: string
|
||||
createTime: string
|
||||
updateUserString: string
|
||||
updateTime: string
|
||||
}
|
||||
/** 文件资源统计信息 */
|
||||
export interface FileStatisticsResp {
|
||||
type: string
|
||||
size: any
|
||||
number: number
|
||||
unit: string
|
||||
data: Array<FileStatisticsResp>
|
||||
}
|
||||
export interface FileQuery {
|
||||
name?: string
|
||||
type?: string
|
||||
absPath?: string
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface FilePageQuery extends FileQuery, PageQuery {
|
||||
}
|
||||
|
||||
/** 存储类型 */
|
||||
export interface StorageResp {
|
||||
id: string
|
||||
name: string
|
||||
code: string
|
||||
type: number
|
||||
accessKey: string
|
||||
secretKey: string
|
||||
endpoint: string
|
||||
bucketName: string
|
||||
domain: string
|
||||
description: string
|
||||
isDefault: boolean
|
||||
sort: number
|
||||
status: number
|
||||
createUserString: string
|
||||
createTime: string
|
||||
updateUserString: string
|
||||
updateTime: string
|
||||
}
|
||||
export interface StorageQuery {
|
||||
description?: string
|
||||
type?: number
|
||||
sort: Array<string>
|
||||
}
|
||||
|
||||
/** 终端类型 */
|
||||
export interface ClientResp {
|
||||
id: string
|
||||
clientId: string
|
||||
clientKey: string
|
||||
clientSecret: string
|
||||
authType: string
|
||||
clientType: string
|
||||
activeTimeout: string
|
||||
timeout: string
|
||||
status: string
|
||||
createUser: string
|
||||
createTime: string
|
||||
updateUser: string
|
||||
updateTime: string
|
||||
createUserString: string
|
||||
updateUserString: string
|
||||
}
|
||||
export interface ClientDetailResp {
|
||||
id: string
|
||||
clientId: string
|
||||
clientKey: string
|
||||
clientSecret: string
|
||||
authType: string
|
||||
clientType: string
|
||||
activeTimeout: string
|
||||
timeout: string
|
||||
status: string
|
||||
createUser: string
|
||||
createTime: string
|
||||
updateUser: string
|
||||
updateTime: string
|
||||
createUserString: string
|
||||
updateUserString: string
|
||||
}
|
||||
export interface ClientQuery {
|
||||
clientKey: string
|
||||
clientSecret: string
|
||||
authType: string[]
|
||||
clientType: string
|
||||
status: string
|
||||
sort: Array<string>
|
||||
}
|
||||
export interface ClientPageQuery extends ClientQuery, PageQuery {}
|
||||
|
||||
/** 系统参数类型 */
|
||||
export interface OptionResp {
|
||||
id: string
|
||||
name: string
|
||||
code: string
|
||||
value: string
|
||||
description: string
|
||||
}
|
||||
|
||||
export interface OptionQuery {
|
||||
code?: Array<string>
|
||||
category?: string
|
||||
}
|
||||
|
||||
/** 基础配置类型 */
|
||||
export interface BasicConfig {
|
||||
SITE_FAVICON: string
|
||||
SITE_LOGO: string
|
||||
SITE_TITLE: string
|
||||
SITE_COPYRIGHT: string
|
||||
SITE_BEIAN: string
|
||||
}
|
||||
|
||||
/** 基础配置类型 */
|
||||
export interface SiteConfig {
|
||||
SITE_FAVICON: OptionResp
|
||||
SITE_LOGO: OptionResp
|
||||
SITE_TITLE: OptionResp
|
||||
SITE_DESCRIPTION: OptionResp
|
||||
SITE_COPYRIGHT: OptionResp
|
||||
SITE_BEIAN: OptionResp
|
||||
}
|
||||
|
||||
/** 安全配置类型 */
|
||||
export interface SecurityConfig {
|
||||
PASSWORD_ERROR_LOCK_COUNT: OptionResp
|
||||
PASSWORD_ERROR_LOCK_MINUTES: OptionResp
|
||||
PASSWORD_EXPIRATION_DAYS: OptionResp
|
||||
PASSWORD_EXPIRATION_WARNING_DAYS: OptionResp
|
||||
PASSWORD_REPETITION_TIMES: OptionResp
|
||||
PASSWORD_MIN_LENGTH: OptionResp
|
||||
PASSWORD_ALLOW_CONTAIN_USERNAME: OptionResp
|
||||
PASSWORD_REQUIRE_SYMBOLS: OptionResp
|
||||
}
|
||||
|
||||
/** 邮箱配置类型 */
|
||||
export interface MailConfig {
|
||||
MAIL_PROTOCOL: OptionResp
|
||||
MAIL_HOST: OptionResp
|
||||
MAIL_PORT: OptionResp
|
||||
MAIL_USERNAME: OptionResp
|
||||
MAIL_PASSWORD: OptionResp
|
||||
MAIL_SSL_ENABLED: OptionResp
|
||||
MAIL_SSL_PORT: OptionResp
|
||||
}
|
||||
|
||||
/** 登录配置类型 */
|
||||
export interface LoginConfig {
|
||||
LOGIN_CAPTCHA_ENABLED: OptionResp
|
||||
}
|
||||
|
||||
/** 绑定三方账号信息 */
|
||||
export interface BindSocialAccountRes {
|
||||
source: string
|
||||
description: string
|
||||
}
|
||||
|
||||
/** 系统消息类型 */
|
||||
export interface MessageResp {
|
||||
id: string
|
||||
title: string
|
||||
content: string
|
||||
type: number
|
||||
isRead: boolean
|
||||
readTime?: string
|
||||
createUserString?: string
|
||||
createTime: string
|
||||
}
|
||||
|
||||
export interface MessageQuery {
|
||||
title?: string
|
||||
type?: number
|
||||
isRead?: boolean
|
||||
sort: Array<string>
|
||||
}
|
||||
|
||||
export interface MessagePageQuery extends MessageQuery, PageQuery {
|
||||
}
|
||||
44
src/apis/system/user-center.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import type * as System from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
const BASE_URL = '/system/user'
|
||||
|
||||
/** @desc 上传头像 */
|
||||
export function uploadAvatar(data: FormData) {
|
||||
return http.post(`${BASE_URL}/avatar`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改用户基本信息 */
|
||||
export function updateUserBaseInfo(data: { nickname: string, gender: number }) {
|
||||
return http.patch(`${BASE_URL}/basic/info`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改密码 */
|
||||
export function updateUserPassword(data: { oldPassword: string, newPassword: string }) {
|
||||
return http.patch(`${BASE_URL}/password`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改手机号 */
|
||||
export function updateUserPhone(data: { phone: string, captcha: string, oldPassword: string }) {
|
||||
return http.patch(`${BASE_URL}/phone`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改邮箱 */
|
||||
export function updateUserEmail(data: { email: string, captcha: string, oldPassword: string }) {
|
||||
return http.patch(`${BASE_URL}/email`, data)
|
||||
}
|
||||
|
||||
/** @desc 获取绑定的三方账号 */
|
||||
export function listUserSocial() {
|
||||
return http.get<System.BindSocialAccountRes[]>(`${BASE_URL}/social`)
|
||||
}
|
||||
|
||||
/** @desc 绑定三方账号 */
|
||||
export function bindSocialAccount(source: string, data: any) {
|
||||
return http.post(`${BASE_URL}/social/${source}`, data)
|
||||
}
|
||||
|
||||
/** @desc 解绑三方账号 */
|
||||
export function unbindSocialAccount(source: string) {
|
||||
return http.del(`${BASE_URL}/social/${source}`)
|
||||
}
|
||||
66
src/apis/system/user.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import type * as T from './type'
|
||||
import http from '@/utils/http'
|
||||
|
||||
export type * from './type'
|
||||
|
||||
const BASE_URL = '/system/user'
|
||||
|
||||
/** @desc 查询用户列表 */
|
||||
export function listUser(query: T.UserPageQuery) {
|
||||
return http.get<PageRes<T.UserResp[]>>(`${BASE_URL}`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询所有用户列表 */
|
||||
export function listAllUser(query: Partial<T.UserPageQuery>) {
|
||||
return http.get<T.UserResp[]>(`${BASE_URL}/list`, query)
|
||||
}
|
||||
|
||||
/** @desc 查询用户详情 */
|
||||
export function getUser(id: string) {
|
||||
return http.get<T.UserDetailResp>(`${BASE_URL}/${id}`)
|
||||
}
|
||||
|
||||
/** @desc 新增用户 */
|
||||
export function addUser(data: any) {
|
||||
return http.post(`${BASE_URL}`, data)
|
||||
}
|
||||
|
||||
/** @desc 修改用户 */
|
||||
export function updateUser(data: any, id: string) {
|
||||
return http.put(`${BASE_URL}/${id}`, data)
|
||||
}
|
||||
|
||||
/** @desc 删除用户 */
|
||||
export function deleteUser(ids: string | Array<string>) {
|
||||
return http.del(`${BASE_URL}/${ids}`)
|
||||
}
|
||||
|
||||
/** @desc 导出用户 */
|
||||
export function exportUser(query: T.UserQuery) {
|
||||
return http.download(`${BASE_URL}/export`, query)
|
||||
}
|
||||
|
||||
/** @desc 下载用户导入模板 */
|
||||
export function downloadUserImportTemplate() {
|
||||
return http.download(`${BASE_URL}/import/template`)
|
||||
}
|
||||
|
||||
/** @desc 解析用户导入数据 */
|
||||
export function parseImportUser(data: FormData) {
|
||||
return http.post(`${BASE_URL}/import/parse`, data)
|
||||
}
|
||||
|
||||
/** @desc 导入用户 */
|
||||
export function importUser(data: any) {
|
||||
return http.post(`${BASE_URL}/import`, data)
|
||||
}
|
||||
|
||||
/** @desc 重置密码 */
|
||||
export function resetUserPwd(data: any, id: string) {
|
||||
return http.patch(`${BASE_URL}/${id}/password`, data)
|
||||
}
|
||||
|
||||
/** @desc 分配角色 */
|
||||
export function updateUserRole(data: { roleIds: string[] }, id: string) {
|
||||
return http.patch(`${BASE_URL}/${id}/role`, data)
|
||||
}
|
||||
BIN
src/assets/fonts/DINPro-Bold.otf
Normal file
BIN
src/assets/fonts/DINPro-Medium.otf
Normal file
BIN
src/assets/fonts/DINPro-Regular.otf
Normal file
20
src/assets/fonts/font.css
Normal file
@@ -0,0 +1,20 @@
|
||||
@font-face {
|
||||
font-family: 'DINPro-Bold';
|
||||
src: url('./DINPro-Bold.otf');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'DINPro-Medium';
|
||||
src: url('./DINPro-Medium.otf');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'DINPro-Regular';
|
||||
src: url('./DINPro-Regular.otf');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
1
src/assets/icons/align-center.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M44 9H4m38 20H6m28-10H14m20 20H14" /></svg>
|
||||
|
After Width: | Height: | Size: 174 B |
1
src/assets/icons/align-left.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M44 9H4m36 20H4m21-10H4m21 20H4" /></svg>
|
||||
|
After Width: | Height: | Size: 172 B |
1
src/assets/icons/align-right.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M4 9h40M8 29h36M23 19h21M23 39h21" /></svg>
|
||||
|
After Width: | Height: | Size: 174 B |
1
src/assets/icons/api-management.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="24" height="24" viewBox="0 0 48 48" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M4 15a1 1 0 001 1h2a1 1 0 001-1V8h7a1 1 0 001-1V5a1 1 0 00-1-1H6a2 2 0 00-2 2v9zm4 18a1 1 0 00-1-1H5a1 1 0 00-1 1v9a2 2 0 002 2h9a1 1 0 001-1v-2a1 1 0 00-1-1H8v-7zm35-17a1 1 0 001-1V6a2 2 0 00-2-2h-9a1 1 0 00-1 1v2a1 1 0 001 1h7v7a1 1 0 001 1h2zm1 17a1 1 0 00-1-1h-2a1 1 0 00-1 1v7h-7a1 1 0 00-1 1v2a1 1 0 001 1h9a2 2 0 002-2v-9zM32.835 11h-6.108c-6.512 0-11.882 4.804-12.636 11h-1.992c-.382 0-.52.046-.66.134a.855.855 0 00-.325.378c-.074.162-.114.324-.114.77v1.436c0 .446.04.608.114.77.075.163.185.291.324.378.14.088.279.134.66.134h2.157c1.179 5.706 6.315 10 12.472 10h6.108c.405 0 .552-.041.7-.12a.819.819 0 00.344-.337c.079-.145.121-.29.121-.688V31h.901c.382 0 .52-.046.66-.134a.855.855 0 00.325-.378c.074-.162.114-.324.114-.77v-1.436c0-.446-.04-.608-.114-.77a.855.855 0 00-.325-.378c-.14-.088-.278-.134-.66-.134H34v-7h.901c.382 0 .52-.046.66-.134a.855.855 0 00.325-.378c.074-.162.114-.324.114-.77v-1.436c0-.446-.04-.608-.114-.77a.855.855 0 00-.325-.378c-.14-.088-.278-.134-.66-.134H34v-3.855c0-.398-.042-.543-.121-.688a.819.819 0 00-.344-.338c-.148-.078-.295-.119-.7-.119zm-2.744 3.571h-3.637c-5.02 0-9.09 3.998-9.09 8.929s4.07 8.929 9.09 8.929h3.637V14.57z" fill="currentColor"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
1
src/assets/icons/apps.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M7 7h13v13H7zM28 7h13v13H28zM7 28h13v13H7zM28 28h13v13H28z"/></svg>
|
||||
|
After Width: | Height: | Size: 198 B |
1
src/assets/icons/archive.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><rect x="9" y="18" width="30" height="22" rx="1" /><path d="M6 9a1 1 0 011-1h34a1 1 0 011 1v8a1 1 0 01-1 1H7a1 1 0 01-1-1V9zM19 27h10" /></svg>
|
||||
|
After Width: | Height: | Size: 265 B |
5
src/assets/icons/arco.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg width="48" height="48" viewBox="0 0 22 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.72938 13.2709C1.31587 11.8234 1.31587 9.51246 2.72938 8.06503L7.9367 2.73274C9.39842 1.23594 11.8058 1.23594 13.2675 2.73274C14.681 4.18017 14.681 6.49116 13.2675 7.93859L8.06017 13.2709C6.59845 14.7677 4.19111 14.7677 2.72938 13.2709Z" fill="#12D2AC"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.94084 2.7323C9.40256 1.23549 11.8099 1.23549 13.2716 2.7323L18.4789 8.06459C19.8925 9.51202 19.8925 11.823 18.4789 13.2704C17.0172 14.7672 14.6099 14.7672 13.1482 13.2704L7.94084 7.93815C6.52733 6.49071 6.52733 4.17973 7.94084 2.7323Z" fill="#307AF2"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.7384 2.93044C9.30781 1.32337 11.8925 1.32337 13.4619 2.93045L15.8075 5.33229L10.6002 10.6646L5.39285 5.33229L7.7384 2.93044Z" fill="#0057FE"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 909 B |
1
src/assets/icons/area-chart.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="24" height="24" viewBox="0 0 48 48" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 4a1 1 0 011 1v35h35a1 1 0 011 1v2a1 1 0 01-1 1H4V5a1 1 0 011-1h2zm35.727 4.633A1 1 0 0143 9.32V36a1 1 0 01-1 1H12a1 1 0 01-1-1V23l11.324-10.38a1 1 0 011.352 0l6.787 6.22 10.85-10.247a1 1 0 011.414.04zM39 16.28l-8.497 8.024L23 17.426l-8 7.334V33h24V16.28z" fill="currentColor"/></svg>
|
||||
|
After Width: | Height: | Size: 403 B |
1
src/assets/icons/arrow-down.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M11.27 27.728l12.728 12.728 12.728-12.728M24 5v34.295" /></svg>
|
||||
|
After Width: | Height: | Size: 194 B |
1
src/assets/icons/arrow-fall.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M24.008 41.99a.01.01 0 01-.016 0l-9.978-11.974A.01.01 0 0114.02 30H33.98a.01.01 0 01.007.016l-9.978 11.975z" /><path d="M24 42L14 30h20L24 42z" fill="#4E5969"/><path stroke="#4E5969" stroke-width="2" d="M22 6h4v26h-4z"/><path fill="#4E5969" d="M22 6h4v26h-4z"/></svg>
|
||||
|
After Width: | Height: | Size: 398 B |
1
src/assets/icons/arrow-left.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M20.272 11.27L7.544 23.998l12.728 12.728M43 24H8.705" /></svg>
|
||||
|
After Width: | Height: | Size: 193 B |
1
src/assets/icons/arrow-right.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M27.728 11.27l12.728 12.728-12.728 12.728M5 24h34.295" /></svg>
|
||||
|
After Width: | Height: | Size: 194 B |
1
src/assets/icons/arrow-rise.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M23.992 6.01a.01.01 0 01.016 0l9.978 11.974a.01.01 0 01-.007.016H14.02a.01.01 0 01-.007-.016l9.978-11.975z" /><path d="M24 6l10 12H14L24 6z" fill="#4E5969"/><path stroke="#4E5969" stroke-width="2" d="M26 42h-4V16h4z"/><path fill="#4E5969" d="M26 42h-4V16h4z"/></svg>
|
||||
|
After Width: | Height: | Size: 397 B |
1
src/assets/icons/arrow-up.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M11.27 20.272L23.998 7.544l12.728 12.728M24 43V8.705" /></svg>
|
||||
|
After Width: | Height: | Size: 193 B |
1
src/assets/icons/at.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M31 23a7 7 0 11-14 0 7 7 0 0114 0zm0 0c0 3.038 2.462 6.5 5.5 6.5A5.5 5.5 0 0042 24c0-9.941-8.059-18-18-18S6 14.059 6 24s8.059 18 18 18c4.244 0 8.145-1.469 11.222-3.925" /></svg>
|
||||
|
After Width: | Height: | Size: 308 B |
1
src/assets/icons/attachment.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M29.037 15.236s-9.174 9.267-11.48 11.594c-2.305 2.327-1.646 4.987-.329 6.316 1.317 1.33 3.994 1.953 6.258-.332L37.32 18.851c3.623-3.657 2.092-8.492 0-10.639-2.093-2.147-6.916-3.657-10.54 0L11.3 23.838c-3.623 3.657-3.953 10.638.329 14.96 4.282 4.322 11.115 4.105 14.821.333 3.706-3.773 8.74-8.822 11.224-11.33" /></svg>
|
||||
|
After Width: | Height: | Size: 449 B |
1
src/assets/icons/backtop.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg t="1658914025483" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3426" width="200" height="200"><path d="M390 679.988v-35.864c0-111.8-70.278-134.488-70.278-134.488S250 534.068 250 644.126v35.864h140z" fill="#4988FD" p-id="3427"></path><path d="M390 699.988h-140c-11.046 0-20-8.956-20-20v-35.864c0-122.828 79.714-152.174 83.108-153.364a20.012 20.012 0 0 1 12.758-0.158c3.434 1.11 84.132 28.598 84.132 153.522v35.864c0.002 11.046-8.952 20-19.998 20z m-120-40h100v-15.864c0-76.286-35.178-104.09-49.982-112.408-14.948 8.808-50.018 37.46-50.018 112.41v15.862z" fill="#4988FD" p-id="3428"></path><path d="M776 679.988v-35.864c0-111.8-70.278-134.488-70.278-134.488S636 534.068 636 644.126v35.864h140z" fill="#4988FD" p-id="3429"></path><path d="M776 699.988h-140c-11.044 0-20-8.956-20-20v-35.864c0-122.828 79.714-152.174 83.11-153.364a20.026 20.026 0 0 1 12.758-0.158c3.436 1.11 84.132 28.598 84.132 153.522v35.864c0 11.046-8.956 20-20 20z m-120-40h100v-15.864c0-76.286-35.178-104.09-49.982-112.408-14.948 8.808-50.018 37.46-50.018 112.41v15.862z" fill="#4988FD" p-id="3430"></path><path d="M693.146 651.988v-92.516c0-288.398-181.292-346.924-181.292-346.924S332 275.57 332 559.476c0.012 56.328 0 92.514 0 92.514l361.146-0.002z" fill="#4988FD" p-id="3431"></path><path d="M332 671.99a19.996 19.996 0 0 1-20-20.006c0-0.004 0.012-36.184 0-92.504 0-152.884 51.604-243.788 94.894-293.124 47.876-54.564 96.308-71.968 98.346-72.684a20.012 20.012 0 0 1 12.758-0.158c2.06 0.666 51.034 16.918 99.41 71.014 43.676 48.838 95.738 139.654 95.738 294.944v92.516c0 11.044-8.956 20-20 20L332 671.99z m180.098-437.812c-13.256 6.236-45.196 23.814-76.73 60.39C380.828 357.83 352 449.434 352 559.476c0.006 31.314 0.006 56.404 0.004 72.514l321.142-0.002v-72.516c0-111.762-29.016-203.89-83.91-266.424-31.678-36.086-63.762-52.93-77.138-58.87z" fill="#4988FD" p-id="3432"></path><path d="M497.858 864.994l-42.426-42.426c-31.244-31.244-31.244-81.894 0-113.138 31.242-31.242 81.894-31.242 113.136 0 31.242 31.24 31.244 81.894 0 113.138l-42.426 42.426c-7.81 7.81-20.474 7.81-28.284 0z" fill="#DFECFD" p-id="3433"></path><path d="M512 870.852a19.868 19.868 0 0 1-14.142-5.86l-42.426-42.424c-15.11-15.11-23.432-35.2-23.432-56.57s8.322-41.46 23.432-56.568S490.632 686 512 685.996c21.37 0.002 41.46 8.324 56.568 23.434S592 744.63 592 766s-8.322 41.46-23.432 56.57l-42.428 42.428a19.864 19.864 0 0 1-14.14 5.856zM512 688c-20.832-0.002-40.42 8.112-55.154 22.844S434 745.164 434 766c0 20.834 8.112 40.422 22.846 55.156l42.426 42.426a17.88 17.88 0 0 0 12.728 5.272 17.88 17.88 0 0 0 12.726-5.27l42.428-42.428c14.732-14.732 22.846-34.32 22.846-55.156 0-20.834-8.114-40.42-22.846-55.154S532.834 688 512 688z" fill="#DFECFD" p-id="3434"></path><path d="M312.576 803.972l-22.274-22.274c-16.402-16.402-16.402-42.996 0-59.398 16.4-16.4 42.994-16.4 59.396 0 16.402 16.402 16.404 42.996 0 59.398l-22.272 22.274a10.5 10.5 0 0 1-14.85 0z" fill="#DFECFD" p-id="3435"></path><path d="M320 806.896a10.784 10.784 0 0 1-7.68-3.18l-22.02-22.02c-16.374-16.374-16.374-43.02 0-59.396A41.728 41.728 0 0 1 320 710c11.22 0 21.764 4.366 29.7 12.3 16.374 16.376 16.374 43.022 0 59.398l-22.02 22.02a10.784 10.784 0 0 1-7.68 3.178zM320 712a39.744 39.744 0 0 0-28.284 11.714c-15.596 15.596-15.596 40.974 0 56.57l22.02 22.02c1.674 1.674 3.898 2.594 6.264 2.592s4.59-0.92 6.264-2.594l22.02-22.02c15.596-15.594 15.596-40.972 0-56.568A39.744 39.744 0 0 0 320 712z" fill="#DFECFD" p-id="3436"></path><path d="M698.576 803.972l-22.274-22.274c-16.4-16.4-16.4-42.994 0-59.398 16.4-16.4 42.994-16.4 59.396 0 16.402 16.402 16.4 42.996 0 59.398l-22.274 22.274a10.498 10.498 0 0 1-14.848 0z" fill="#DFECFD" p-id="3437"></path><path d="M706 806.896a10.784 10.784 0 0 1-7.68-3.18l-22.02-22.02c-16.37-16.374-16.37-43.02 0-59.396 7.936-7.934 18.482-12.3 29.7-12.3s21.764 4.366 29.7 12.3c16.374 16.376 16.372 43.02 0 59.398l-22.02 22.02a10.784 10.784 0 0 1-7.68 3.178zM706 712a39.736 39.736 0 0 0-28.284 11.714c-15.594 15.596-15.594 40.974 0 56.57l22.02 22.02c1.672 1.672 3.896 2.592 6.264 2.592s4.592-0.92 6.264-2.594l22.02-22.02c15.596-15.594 15.594-40.972 0-56.568A39.736 39.736 0 0 0 706 712z" fill="#DFECFD" p-id="3438"></path><path d="M512 352c22.092 0 40 17.908 40 40v80c0 22.092-17.908 40-40 40s-40-17.908-40-40v-80c0-22.092 17.908-40 40-40z" fill="#DFECFD" p-id="3439"></path><path d="M512 512c-22.056 0-40-17.944-40-40v-80c0-22.056 17.944-40 40-40s40 17.944 40 40v80c0 22.056-17.944 40-40 40z m0-158c-20.954 0-38 17.046-38 38v80c0 20.954 17.046 38 38 38s38-17.046 38-38v-80c0-20.954-17.046-38-38-38z" fill="#DFECFD" p-id="3440"></path></svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
1
src/assets/icons/backward.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M38.293 36.293L26.707 24.707a1 1 0 010-1.414l11.586-11.586c.63-.63 1.707-.184 1.707.707v23.172c0 .89-1.077 1.337-1.707.707zM21 12.414v23.172c0 .89-1.077 1.337-1.707.707L7.707 24.707a1 1 0 010-1.414l11.586-11.586c.63-.63 1.707-.184 1.707.707z" /></svg>
|
||||
|
After Width: | Height: | Size: 382 B |
1
src/assets/icons/bg-colors.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M19 5.25L22.75 9m0 0l12.043 12.043a1 1 0 010 1.414L32 25.25 21.221 36.029a1 1 0 01-1.428-.014L9.443 25.25l-.763-.793a1 1 0 01.013-1.4L22.75 9zM6 42h36" /><path d="M11.791 25.25c-.881 0-1.332 1.058-.72 1.693l8.722 9.072a1 1 0 001.428.014L32 25.25H11.791z" fill="#4E5969" /><path fill-rule="evenodd" clip-rule="evenodd" d="M40.013 29.812L37.201 27l-2.812 2.812a4 4 0 105.624 0z" fill="#4E5969"/></svg>
|
||||
|
After Width: | Height: | Size: 530 B |
1
src/assets/icons/bold.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M13 24h12a8 8 0 100-16H13.2a.2.2 0 00-.2.2V24zm0 0h16a8 8 0 110 16H13.2a.2.2 0 01-.2-.2V24z" /></svg>
|
||||
|
After Width: | Height: | Size: 232 B |
1
src/assets/icons/book.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M24 13L7 7v28l17 6 17-6V7l-17 6zm0 0v27.5M19 18l-7-2.5M19 25l-7-2.5M19 32l-7-2.5M29 18l7-2.5M29 25l7-2.5M29 32l7-2.5" stroke="#4E5969" stroke-width="2" stroke-linejoin="round"/></svg>
|
||||
|
After Width: | Height: | Size: 314 B |
1
src/assets/icons/bookmark.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M16 16h16M16 24h8" /><path d="M24 41H8V6h32v17" /><path d="M30 29h11v13l-5.5-3.5L30 42V29Z" /></svg>
|
||||
|
After Width: | Height: | Size: 231 B |
1
src/assets/icons/branch.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M19 10a4 4 0 11-8 0 4 4 0 018 0zM38 10a4 4 0 11-8 0 4 4 0 018 0zM19 38a4 4 0 11-8 0 4 4 0 018 0zM15 15v15m0 3.5V30m0 0c0-5 19-7 19-15" /></svg>
|
||||
|
After Width: | Height: | Size: 274 B |
1
src/assets/icons/brush.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M33 13h7a1 1 0 011 1v12.14a1 1 0 01-.85.99l-21.3 3.24a1 1 0 00-.85.99V43" /><path d="M7 18V8c0-.552.444-1 .997-1H32.01c.552 0 .99.447.99 1v10.002A.998.998 0 0132 19H8a1 1 0 01-1-1z" /></svg>
|
||||
|
After Width: | Height: | Size: 321 B |
1
src/assets/icons/bug.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M35 27h8M5 27h8m0-9h22v13c0 6.075-4.925 11-11 11s-11-4.925-11-11V18z" stroke="#4E5969" stroke-width="2" stroke-linejoin="round"/><path d="M7 42v-.5a6.5 6.5 0 016.5-6.5M7 42v-.5M41 42v-.5a6.5 6.5 0 00-6.5-6.5M13 18h22M7 14a4 4 0 004 4h26a4 4 0 004-4M24 42V23M17 14a7 7 0 1114 0" stroke="#4E5969" stroke-width="2" stroke-linejoin="round"/></svg>
|
||||
|
After Width: | Height: | Size: 474 B |
1
src/assets/icons/bulb.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M30.8 32.465c.585-2.576 2.231-4.75 3.77-6.897A12.94 12.94 0 0037 18c0-7.18-5.82-13-13-13s-13 5.82-13 13c0 2.823.9 5.437 2.43 7.568 1.539 2.147 3.185 4.32 3.77 6.897l.623 2.756A1 1 0 0018.8 36H29.2a1 1 0 00.976-.779l.624-2.756zM17 42h14" /></svg>
|
||||
|
After Width: | Height: | Size: 376 B |
1
src/assets/icons/calendar.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M7 22h34M8 41h32a1 1 0 001-1V10a1 1 0 00-1-1H8a1 1 0 00-1 1v30a1 1 0 001 1zM34 5v8M14 5v8" /></svg>
|
||||
|
After Width: | Height: | Size: 230 B |
1
src/assets/icons/calendar_clock.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M7 22h34V10a1 1 0 00-1-1H8a1 1 0 00-1 1v30a1 1 0 001 1h18M34 5v8M14 5v8" /><path fill-rule="evenodd" clip-rule="evenodd" d="M36 44a9 9 0 100-18 9 9 0 000 18zm1.5-9.75V29h-3v8.25H42v-3h-4.5z" fill="#4E5969"/></svg>
|
||||
|
After Width: | Height: | Size: 344 B |
1
src/assets/icons/camera.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M6 13a1 1 0 011-1h34a1 1 0 011 1v26a1 1 0 01-1 1H7a1 1 0 01-1-1V13z" /><path d="M31 26a7 7 0 11-14 0 7 7 0 0114 0zM33 12l-1.862-3.724A.5.5 0 0030.691 8H17.309a.5.5 0 00-.447.276L15 12" /></svg>
|
||||
|
After Width: | Height: | Size: 324 B |
1
src/assets/icons/caret-down.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M24.937 34.829a1.2 1.2 0 01-1.874 0L9.56 17.949C8.93 17.165 9.49 16 10.497 16h27.006c1.007 0 1.566 1.164.937 1.95L24.937 34.829z" fill="#4E5969"/></svg>
|
||||
|
After Width: | Height: | Size: 283 B |
1
src/assets/icons/caret-left.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M13.171 24.937a1.2 1.2 0 010-1.874L30.051 9.56c.785-.629 1.949-.07 1.949.937v27.006c0 1.007-1.164 1.566-1.95.937L13.171 24.937z" fill="#4E5969"/></svg>
|
||||
|
After Width: | Height: | Size: 282 B |
1
src/assets/icons/caret-right.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M34.829 23.063c.6.48.6 1.394 0 1.874L17.949 38.44c-.785.629-1.949.07-1.949-.937V10.497c0-1.006 1.164-1.566 1.95-.937l16.879 13.503z" fill="#4E5969"/></svg>
|
||||
|
After Width: | Height: | Size: 286 B |
1
src/assets/icons/caret-up.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M23.063 13.171a1.2 1.2 0 011.874 0l13.503 16.88c.629.785.07 1.949-.937 1.949H10.497c-1.006 0-1.566-1.164-.937-1.95l13.503-16.879z" fill="#4E5969"/></svg>
|
||||
|
After Width: | Height: | Size: 284 B |
1
src/assets/icons/check-circle-fill.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M42 24c0 9.941-8.059 18-18 18S6 33.941 6 24 14.059 6 24 6s18 8.059 18 18z" fill="#4E5969" /><path d="M15 22l7 7 11.5-11.5" stroke="#fff" stroke-width="2"/></svg>
|
||||
|
After Width: | Height: | Size: 292 B |
1
src/assets/icons/check-circle.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M42 24c0 9.941-8.059 18-18 18S6 33.941 6 24 14.059 6 24 6s18 8.059 18 18z" /><path d="M15 22l7 7 11.5-11.5" /></svg>
|
||||
|
After Width: | Height: | Size: 247 B |
1
src/assets/icons/check-square.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M7 8a1 1 0 011-1h32a1 1 0 011 1v32a1 1 0 01-1 1H8a1 1 0 01-1-1V8z" /><path d="M34.603 16.672L21.168 30.107l-7.778-7.779" /></svg>
|
||||
|
After Width: | Height: | Size: 260 B |
1
src/assets/icons/check.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M41.678 11.05L19.05 33.678 6.322 20.95" /></svg>
|
||||
|
After Width: | Height: | Size: 179 B |
1
src/assets/icons/chinese-fill.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M22 21h-5v4.094h5V21zM26 25.094V21h5v4.094h-5z" fill="#4E5969"/><path fill-rule="evenodd" clip-rule="evenodd" d="M24 4C12.954 4 4 12.954 4 24s8.954 20 20 20 20-8.954 20-20S35.046 4 24 4zm2 13v-5h-4v5h-6.5a2.5 2.5 0 00-2.5 2.5v7.094a2.5 2.5 0 002.5 2.5H22V36h4v-6.906h6.5a2.5 2.5 0 002.5-2.5V19.5a2.5 2.5 0 00-2.5-2.5H26z" fill="#4E5969"/></svg>
|
||||
|
After Width: | Height: | Size: 475 B |
1
src/assets/icons/clock-circle.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M42 24c0 9.941-8.059 18-18 18S6 33.941 6 24 14.059 6 24 6s18 8.059 18 18z" /><path d="M24 14v10h9.5" /></svg>
|
||||
|
After Width: | Height: | Size: 240 B |
1
src/assets/icons/close-circle-fill.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M42 24c0 9.941-8.059 18-18 18S6 33.941 6 24 14.059 6 24 6s18 8.059 18 18z" fill="#4E5969" /><path d="M17.643 17.643l6.363 6.364m0 0l6.364 6.364m-6.364-6.364l6.364-6.364m-6.364 6.364l-6.363 6.364" stroke="#fff" stroke-width="2"/></svg>
|
||||
|
After Width: | Height: | Size: 365 B |
1
src/assets/icons/close-circle.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M42 24c0 9.941-8.059 18-18 18S6 33.941 6 24 14.059 6 24 6s18 8.059 18 18zM17.643 17.643l6.364 6.364 6.364 6.364" /><path d="M30.37 17.643l-6.363 6.364-6.364 6.364" /></svg>
|
||||
|
After Width: | Height: | Size: 303 B |
1
src/assets/icons/close.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M38.142 9.858L24 24 9.858 38.142M9.858 9.858L24 24l14.142 14.142" /></svg>
|
||||
|
After Width: | Height: | Size: 205 B |
1
src/assets/icons/cloud-download.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M43 22c0-7.732-6.492-14-14.5-14S14 14.268 14 22v.055A9.001 9.001 0 0015 40h13" /><path d="M44.142 34.071l-7.07 7.071L30 34.071M37.07 26v15" /></svg>
|
||||
|
After Width: | Height: | Size: 279 B |
1
src/assets/icons/cloud.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M5 29a9 9 0 009 9h19c5.523 0 10-4.477 10-10 0-5.312-4.142-9.657-9.373-9.98C32.3 12.833 27.598 9 22 9c-6.606 0-11.965 5.338-12 11.935A9 9 0 005 29z" /></svg>
|
||||
|
After Width: | Height: | Size: 287 B |
1
src/assets/icons/code-block.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M29 6h4a3 3 0 013 3v10c0 3 4.343 5 6 5-1.657 0-6 2-6 5v10a3 3 0 01-3 3h-4M19 6h-4a3 3 0 00-3 3v10c0 3-4.343 5-6 5 1.657 0 6 2 6 5v10a3 3 0 003 3h4" /></svg>
|
||||
|
After Width: | Height: | Size: 287 B |
1
src/assets/icons/code-release-managment.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="24" height="24" viewBox="0 0 48 48" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M26.5 6a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H9v30h29a1 1 0 001-1V22.5a.5.5 0 01.5-.5h3a.5.5 0 01.5.5V42a2 2 0 01-2 2H7a2 2 0 01-2-2V8a2 2 0 012-2h19.5zm3.768 14.707l3.864 1.035-4.141 15.455-3.864-1.035 4.141-15.455zM21.485 20l2.829 2.828-5.683 5.682 5.268 5.268-2.828 2.829-7.778-7.779.025-.025-.318-.318L21.485 20zM39.5 4a.5.5 0 01.5.5V9h4.5a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H40v4.5a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V13h-4.5a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5H36V4.5a.5.5 0 01.5-.5h3z" fill="currentColor"/></svg>
|
||||
|
After Width: | Height: | Size: 621 B |
1
src/assets/icons/code-square.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M39 6H9a1 1 0 00-1 1v34a1 1 0 001 1h30a1 1 0 001-1V7a1 1 0 00-1-1z" /><path d="M8 7a1 1 0 011-1h30a1 1 0 011 1v34a1 1 0 01-1 1H9a1 1 0 01-1-1V7zM32.072 16.518l-4.14 15.454" /><path d="M23.071 17L16 24.071l7.071 7.071" /></svg>
|
||||
|
After Width: | Height: | Size: 357 B |
1
src/assets/icons/code.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M27.2 6.28l-6.251 35.453M16.734 12.686L5.42 24l11.314 11.314M31.255 12.686L42.57 24 31.255 35.314" /></svg>
|
||||
|
After Width: | Height: | Size: 238 B |
1
src/assets/icons/command.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M29 19v10H19V19h10zM13 29a6 6 0 106 6v-6h-6zM35 29a6 6 0 11-6 6v-6h6zM13 19a6 6 0 116-6v6h-6zM35 19a6 6 0 10-6-6v6h6z" /></svg>
|
||||
|
After Width: | Height: | Size: 258 B |
1
src/assets/icons/common.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M24 23L7.652 14.345M24 23l16.366-8.664M24 23v19.438M7 14v20l17 9 17-9V14L24 5 7 14z" /></svg>
|
||||
|
After Width: | Height: | Size: 224 B |
1
src/assets/icons/compass.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M42 24c0 9.941-8.059 18-18 18S6 33.941 6 24 14.059 6 24 6s18 8.059 18 18z" /><path d="M21.177 21.183l10.108-4.717a.2.2 0 01.266.265L26.834 26.84l-10.109 4.717a.2.2 0 01-.266-.266l4.718-10.108z" /></svg>
|
||||
|
After Width: | Height: | Size: 333 B |
1
src/assets/icons/computer.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M41 7H7v22h34V7Z" /><path d="M23.778 29v10" /><path d="M16 39h16" /><path d="m20.243 14.657 5.657 5.657M15.414 22.314l7.071-7.071M24.485 21.728l7.071-7.071" /></svg>
|
||||
|
After Width: | Height: | Size: 296 B |
1
src/assets/icons/config.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="24" height="24" viewBox="0 0 48 48" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M31 21a7.003 7.003 0 006.71-5h5.008c.446 0 .607-.046.77-.134a.908.908 0 00.378-.378c.088-.162.134-.324.134-.77v-1.436c0-.446-.046-.607-.134-.77a.908.908 0 00-.378-.378c-.163-.088-.324-.134-.77-.134l-5.008-.001a7.003 7.003 0 00-13.42 0L5.282 12c-.446 0-.607.046-.77.134a.908.908 0 00-.378.378c-.088.162-.134.324-.134.77v1.436c0 .446.046.607.134.77.087.163.215.291.378.378.163.088.324.134.77.134H24.29c.86 2.892 3.539 5 6.71 5zm0-4a3 3 0 110-6 3 3 0 010 6zM17 41a7.003 7.003 0 006.71-5h19.008c.446 0 .607-.046.77-.134a.908.908 0 00.378-.378c.088-.163.134-.324.134-.77v-1.436c0-.446-.046-.607-.134-.77a.908.908 0 00-.378-.378c-.163-.088-.324-.134-.77-.134l-19.008-.001a7.003 7.003 0 00-13.42 0L5.282 32c-.446 0-.607.046-.77.134a.908.908 0 00-.378.378c-.088.163-.134.324-.134.77v1.436c0 .446.046.607.134.77.087.163.215.291.378.378.163.088.324.134.77.134h5.008c.86 2.892 3.539 5 6.71 5zm0-4a3 3 0 110-6 3 3 0 010 6z" fill="currentColor"/></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
9
src/assets/icons/continew.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<svg width="33" height="33" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 174.8 204">
|
||||
<path fill="#307AF2" d="M86.7,0l88,51v.2l-16.3,9.4v-.2L86.7,18.9Zm71.8,143.5,16.3,9.4v.2L86.8,204h0l-16.3-9.4,16.3-9.4h0l71.7-41.5v-.2Z"/>
|
||||
<path fill="#12D2AC" d="M16.3,143.5v.2L58,167.8l-16.3,9.4L0,153.1v-.2Z"/>
|
||||
<path fill="#12D2AC" d="M104.1,93,15.9,143.8l-.2-.1V124.9l.2.1L87.7,83.6,104.1,93Z"/>
|
||||
<path fill="#0057FE" d="M88.1,0,.1,51v.2l16.3,9.4v-.2L88.1,18.9Z"/>
|
||||
<path fill="#307AF2" d="M.1,50.9.2,152.6l.2.1,16.3-9.4-.2-.1-.1-82.9L.1,50.9Z"/>
|
||||
<path fill="#0057FE" d="M174.7,50.9l-.1,101.7-.2.1-16.3-9.4.2-.1.1-82.9Z"/>
|
||||
<path fill="#12D2AC" d="M41.7,158.5l16.1,9.4,100.6-58.7V90.4Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 683 B |
1
src/assets/icons/copy.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="butt" stroke-linejoin="miter"><path d="M20 6h18a2 2 0 012 2v22" /><path d="M8 40V16a2 2 0 012-2h20c1.105 0 2 .892 2 1.997v24.011A1.99 1.99 0 0130.003 42H9.996A1.996 1.996 0 018 40z" /></svg>
|
||||
|
After Width: | Height: | Size: 282 B |