feat: 新增首页推荐组件及相关功能优化

- 新增首页推荐组件 HomeRecommend,用于展示趋势数据
- 新增推荐相关 API 接口 recommend.ts 及类型定义
- 优化 YlTable 组件,添加类型定义文件,支持 emptyText 和 width 属性
- 修改 Home 页面,添加首页推荐组件的展示
- 优化 Survey 页面代码结构,修复加载逻辑
- 添加响应类型定义,规范 API 返回数据格式
This commit is contained in:
Huangzhe
2025-05-21 14:38:29 +08:00
parent e21770134c
commit 0ae0bd0fdf
8 changed files with 305 additions and 161 deletions

View File

@@ -0,0 +1,35 @@
import request from '@/utils/request';
import type { HomeRecommendResponse } from './types/response';
import { ref } from 'vue';
import type { AxiosResponse } from 'axios';
type RecommendParams = {
page: string;
per_page: string;
sort: string;
};
/**
* 首页推荐内容
* @param params 可选参数
* @returns 推荐结果
*/
export function recommend(params: Partial<RecommendParams>) {
const code = ref();
const message = ref();
const data = ref<HomeRecommendResponse['data']>();
request<HomeRecommendResponse>({
url: `/console/survey/trend/list`,
params
}).then((res) => {
code.value = res.data.code;
message.value = res.data.message;
data.value = res.data.data;
});
return {
code,
message,
data
};
}

38
src/hooks/request/types/recommend.d.ts vendored Normal file
View File

@@ -0,0 +1,38 @@
export interface HomeRecommend {
meta: Meta;
surveyTrendDataVOS: SurveyTrendDataVO[];
// [property: string]: any;
}
export interface Meta {
currentPage: number;
from: number;
lastPage: number;
perPage: number;
total: number;
[property: string]: any;
}
export interface SurveyTrendDataVO {
/**
* 声量增长环比
*/
growthRingRatio: number | number;
/**
* 主键
*/
id: number;
/**
* 排名
*/
rank: number;
/**
* 销量增长环比
*/
salesGrowthRingRatio: number;
/**
* 趋势名称
*/
trendName: string;
[property: string]: any;
}

9
src/hooks/request/types/response.d.ts vendored Normal file
View File

@@ -0,0 +1,9 @@
import { HomeRecommend } from "./recommend";
export interface CDMResponse<T>{
code: number;
data: T;
message: string;
}
type HomeRecommendResponse = CDMResponse<HomeRecommend>;