feat(add): 新增多页面新增和编辑表单功能

- 添加编辑和新增收货地址页面,支持表单数据加载和提交
- 新增应用密钥凭证、新增应用操作动态、新增应用成员、新增应用版本页面配置
- 实现文章新增及编辑页面,包含图片上传及多种文章属性配置
- 增加注册会员页面,支持头像上传、手机号获取和邀请人关系处理
- 引入统一表单提交成功和失败处理,支持编辑模式数据回显
- 配置统一eslint和editorconfig规则,增强代码规范和编辑体验
- 新增.gitignore规则,屏蔽无关文件和目录,优化版本管理
This commit is contained in:
2026-04-11 12:22:29 +08:00
commit 07f5c92f4b
627 changed files with 85725 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api/index';
import type { AppCredential, AppCredentialParam } from './model';
/**
* 分页查询应用密钥凭证
*/
export async function pageAppCredential(params: AppCredentialParam) {
const res = await request.get<ApiResult<PageResult<AppCredential>>>(
'/app/app-credential/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 查询应用密钥凭证列表
*/
export async function listAppCredential(params?: AppCredentialParam) {
const res = await request.get<ApiResult<AppCredential[]>>(
'/app/app-credential',
params
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 添加应用密钥凭证
*/
export async function addAppCredential(data: AppCredential) {
const res = await request.post<ApiResult<unknown>>(
'/app/app-credential',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 修改应用密钥凭证
*/
export async function updateAppCredential(data: AppCredential) {
const res = await request.put<ApiResult<unknown>>(
'/app/app-credential',
data
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除应用密钥凭证
*/
export async function removeAppCredential(id?: number) {
const res = await request.del<ApiResult<unknown>>(
'/app/app-credential/' + id
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 批量删除应用密钥凭证
*/
export async function removeBatchAppCredential(data: (number | undefined)[]) {
const res = await request.del<ApiResult<unknown>>(
'/app/app-credential/batch',
{
data
}
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 根据id查询应用密钥凭证
*/
export async function getAppCredential(id: number) {
const res = await request.get<ApiResult<AppCredential>>(
'/app/app-credential/' + id
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
+49
View File
@@ -0,0 +1,49 @@
import type { PageParam } from '@/api/index';
/**
* 应用密钥凭证
*/
export interface AppCredential {
// 自增ID
id?: string;
// 关联应用ID
websiteId?: string;
// 凭证名称,如生产环境密钥
name?: string;
// App ID(公开)
appId?: string;
// App Secret(加密存储)
appSecret?: string;
// 凭证类型: server/client/webhook
type?: string;
// 权限范围,空格分隔
scopes?: string;
// 到期时间,NULL=永不过期
expireTime?: string;
// 最后使用时间
lastUsedAt?: string;
//
remark?: string;
// 排序(数字越小越靠前)
sortNumber?: number;
// 状态, 0正常, 1冻结
status?: number;
// 是否删除, 0否, 1是
deleted?: number;
// 用户ID
userId?: number;
// 租户id
tenantId?: number;
// 创建时间
createTime?: string;
// 修改时间
updateTime?: string;
}
/**
* 应用密钥凭证搜索条件
*/
export interface AppCredentialParam extends PageParam {
id?: number;
keywords?: string;
}