feat(admin): 新增活动管理功能并优化字典组件

- 新增活动管理相关功能,包括活动创建、编辑、删除和状态管理
- 新增 PublishStatus 枚举定义活动发布状态
- 优化字典组件,支持字符串和数字类型的字典值
- 重构业务数据存储逻辑,简化字典数据获取流程
- 新增活动详情页面,支持分组管理和队伍配置
- 集成富文本编辑器用于活动规则编辑
- 优化图片上传组件,支持小图上传模式
- 修复模板管理中的区域选择和分页问题
- 更新 TypeScript 类型定义,完善 API 接口
- 调整主题配置,新增活动状态相关颜色
This commit is contained in:
2026-02-04 18:01:52 +08:00
parent e1a19c48e0
commit ce5ee2a289
39 changed files with 2621 additions and 693 deletions

View File

@ -28,8 +28,12 @@ const SELECTION_KEY = '__selection__'
const EXPAND_KEY = '__expand__'
/**
* NaiveUI 表格
* @param options 表格选项
*/
export function useNaiveTable<ResponseData, ApiData>(options: UseNaiveTableOptions<ResponseData, ApiData, false>) {
const scope = effectScope()
const scope = effectScope() // 表格作用域,用于管理表格的响应式数据
const appStore = useAppStore()
const result = useTable<ResponseData, ApiData, NaiveUI.TableColumn<ApiData>, false>({
@ -77,6 +81,10 @@ type UseNaivePaginatedTableOptions<ResponseData, ApiData> = UseNaiveTableOptions
onPaginationParamsChange?: (params: PaginationParams) => void | Promise<void>
}
/**
* NaiveUI 分页表格
* @param options 表格选项
*/
export function useNaivePaginatedTable<ResponseData, ApiData>(
options: UseNaivePaginatedTableOptions<ResponseData, ApiData>,
) {
@ -172,21 +180,27 @@ export function useNaivePaginatedTable<ResponseData, ApiData>(
}
}
/**
* NaiveUI 表格操作
* @param data 表格数据
* @param idKey 表格数据的主键字段
* @param getData 获取表格数据的函数
*/
export function useTableOperate<TableData>(
data: Ref<TableData[]>,
idKey: keyof TableData,
getData: () => Promise<void>,
): {
drawerVisible: Ref<boolean>
openDrawer: () => void
closeDrawer: () => void
operateType: Ref<NaiveUI.TableOperateType>
handleAdd: () => void
editingData: Ref<TableData | null>
handleEdit: (id: TableData[keyof TableData]) => void
checkedRowKeys: Ref<string[]>
onBatchDeleted: () => Promise<void>
onDeleted: () => Promise<void>
drawerVisible: Ref<boolean> /** 抽屉是否可见 */
openDrawer: () => void /** 打开抽屉 */
closeDrawer: () => void /** 关闭抽屉 */
operateType: Ref<NaiveUI.TableOperateType> /** 操作类型 */
handleAdd: () => void /** 新增操作 */
editingData: Ref<TableData | null> /** 编辑行数据 */
handleEdit: (id: TableData[keyof TableData]) => void /** 编辑操作 */
checkedRowKeys: Ref<string[]> /** 表格的选中行 keys */
onBatchDeleted: () => Promise<void> /** 批量删除操作完成后的钩子 */
onDeleted: () => Promise<void> /** 删除操作完成后的钩子 */
} {
const { bool: drawerVisible, setTrue: openDrawer, setFalse: closeDrawer } = useBoolean()
@ -253,7 +267,7 @@ export function defaultTransform<ApiData>(
const { data, error } = response
if (!error) {
const { list, currentPage: pageNum, pageSize: size, total } = data
const { data: list, currentPage: pageNum, pageSize: size, total = 0 } = data
return {
data: list,