a
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
* 项目模块API
|
||||
* 统一管理项目相关的所有API调用
|
||||
*/
|
||||
|
||||
import { API_CONFIG } from '../config/api.config.js'
|
||||
import { get } from '../utils/request.js'
|
||||
|
||||
/**
|
||||
* 获取项目分类
|
||||
* @returns {Promise} 项目分类数据
|
||||
*/
|
||||
export const getProjectTree = () => {
|
||||
return get(API_CONFIG.PROJECT.TREE)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目列表
|
||||
* @param {number} cid 分类ID
|
||||
* @param {number} page 页码,从1开始
|
||||
* @returns {Promise} 项目列表数据
|
||||
*/
|
||||
export const getProjectList = (cid, page = 1) => {
|
||||
const url = API_CONFIG.PROJECT.LIST.replace('{page}', page)
|
||||
return get(url, { cid })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目详情
|
||||
* @param {number} id 项目ID
|
||||
* @returns {Promise} 项目详情数据
|
||||
*/
|
||||
export const getProjectDetail = (id) => {
|
||||
const url = API_CONFIG.PROJECT.DETAIL.replace('{id}', id)
|
||||
return get(url)
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索项目
|
||||
* @param {string} keyword 搜索关键词
|
||||
* @param {number} cid 分类ID(可选)
|
||||
* @param {number} page 页码
|
||||
* @returns {Promise} 搜索结果
|
||||
*/
|
||||
export const searchProjects = (keyword, cid = null, page = 1) => {
|
||||
const url = API_CONFIG.PROJECT.LIST.replace('{page}', page)
|
||||
const params = { k: keyword }
|
||||
if (cid !== null) {
|
||||
params.cid = cid
|
||||
}
|
||||
return get(url, params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目模块完整数据(分类 + 默认分类的项目列表)
|
||||
* @param {number} defaultCid 默认分类ID
|
||||
* @returns {Promise} 项目模块完整数据
|
||||
*/
|
||||
export const getProjectModuleData = async (defaultCid = null) => {
|
||||
try {
|
||||
// 获取项目分类
|
||||
const treeData = await getProjectTree()
|
||||
const categories = treeData || []
|
||||
|
||||
// 如果有默认分类,获取该分类的项目列表
|
||||
let projectList = []
|
||||
let selectedCategory = null
|
||||
|
||||
if (categories.length > 0) {
|
||||
// 如果没有指定默认分类,使用第一个分类
|
||||
const targetCid = defaultCid || (categories[0]?.id || null)
|
||||
selectedCategory = categories.find(cat => cat.id === targetCid) || categories[0]
|
||||
|
||||
if (selectedCategory) {
|
||||
projectList = await getProjectList(selectedCategory.id, 1)
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
categories,
|
||||
projectList: projectList?.datas || [],
|
||||
selectedCategory,
|
||||
total: projectList?.total || 0,
|
||||
pageCount: projectList?.pageCount || 0,
|
||||
currentPage: 1
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取项目模块数据失败:', error)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
getProjectTree,
|
||||
getProjectList,
|
||||
getProjectDetail,
|
||||
searchProjects,
|
||||
getProjectModuleData
|
||||
}
|
||||
Reference in New Issue
Block a user