feat: release v1.0.0

This commit is contained in:
2026-07-29 22:10:33 +08:00
parent 3abf272e33
commit 97235386ca
98 changed files with 2389 additions and 467 deletions

View File

@@ -13,6 +13,14 @@ export const SysApiSchema = z.object({
export type SysApi = z.infer<typeof SysApiSchema>
// 搜索参数
export const searchSysApiSchema = z.object({
group_name: z.string().optional(),
method: HttpMethodSchema.optional(),
})
export type SearchSysApiParams = z.infer<typeof searchSysApiSchema>
export const SysApiFormSchema = z.object({
id: z.number().optional(),
name: z.string().min(2, '接口名称至少2个字符').max(16, '接口名称不能超过16个字符'),

View File

@@ -35,7 +35,7 @@ export const sysMenuFormSchema = z
.object({
id: z.number().optional(),
name: z.string().min(1, '菜单名称不能为空').max(16, '菜单名称不能超过16个字符'),
path: z.string().min(1, '路径不能为空'),
path: z.string().optional(),
component: z.string().optional(),
hidden: z.boolean(),
// https://www.reddit.com/r/reactjs/comments/1mmfnyt/typescript_error_when_using_zcoercenumberstring/

View File

@@ -1,9 +1,12 @@
import { z } from 'zod'
import { StatusSchema } from '@/enum'
export const sysRoleSchema = z.object({
id: z.number().int(),
name: z.string(),
code: z.string(),
status: StatusSchema,
created_at: z.string(),
updated_at: z.string(),
})
@@ -20,6 +23,9 @@ export const sysRoleFormSchema = z
.max(16, '角色编码不能超过16个字符')
.regex(/^[a-zA-Z0-9_]+$/, '角色编码仅支持字母、数字和下划线')
.optional(),
status: StatusSchema.refine((val) => val !== undefined, {
message: '请选择状态',
}),
})
.superRefine((data, ctx) => {
if (!data.id && !data.code) {

View File

@@ -1,5 +1,7 @@
import { z } from 'zod'
import { StatusSchema } from '@/enum'
import { sysFileFormSchema } from './file'
import { sysMenuSchema } from './menu'
@@ -7,6 +9,7 @@ export const sysUserSchema = z.object({
id: z.number().int(),
account: z.string(),
username: z.string(),
status: StatusSchema,
created_at: z.string(),
updated_at: z.string(),
avatar_url: z.string().optional(),
@@ -15,6 +18,12 @@ export const sysUserSchema = z.object({
export type SysUser = z.infer<typeof sysUserSchema>
// 搜索参数
export const searchSysUserSchema = z.object({
username: z.string().optional(),
})
export type SearchSysUserParams = z.infer<typeof searchSysUserSchema>
export const sysUserInfoSchema = sysUserSchema
.pick({
id: true,
@@ -26,6 +35,7 @@ export const sysUserInfoSchema = sysUserSchema
.extend({
roles: z.array(z.string()),
menus: z.array(sysMenuSchema),
permissions: z.array(z.string()),
})
export type SysUserInfo = z.infer<typeof sysUserInfoSchema>
@@ -61,6 +71,9 @@ export const sysUserFormSchema = z
.max(16, '用户名称不能超过16个字符')
.optional(),
password: z.string().regex(passwordRegex, '密码需5-16位且包含字母和数字').optional(),
status: StatusSchema.refine((val) => val !== undefined, {
message: '请选择状态',
}),
confirmPassword: z.string().optional(),
avatar: z.array(sysFileFormSchema).optional(),
})