import {FC, useEffect, useState} from "react"; import {Image, Swiper, SwiperItem, View} from "@tarojs/components"; import styles from '../home.module.scss' import Taro from "@tarojs/taro"; import {HomeApi} from "@/api"; import first from '@/static/img/first.png' import second from '@/static/img/second.png' import third from '@/static/img/third.png' import brandTop from '@/static/img/brandTop.png' import illnessTop from '@/static/img/illnessTop.png' import healthTop from '@/static/img/healthTop.png' import professionTop from '@/static/img/professionTop.png' interface DataContent { id: number, imageUrl: string title: string, description: string path: string } interface Data { titleUrl: string url: string detailsUrl: string data: DataContent[] } const FeatureRecommended: FC = () => { const [data, setData] = useState([ { titleUrl: brandTop, url: '/pages/preview/brand/list/list', detailsUrl: '/pages/preview/brand/info/info', data: [] }, { titleUrl: healthTop, url: '/pages/preview/health/health', detailsUrl: '/pages/preview/videoFull/videoFull', data: [] }, { titleUrl: professionTop, url: '/pages/preview/profession/profession', detailsUrl: '/pages/preview/videoFull/videoFull', data: [] }, { titleUrl: illnessTop, url: '/pages/preview/illness/sort/sort', detailsUrl: '/pages/preview/illness/article/article', data: [] }, ]) /** 品牌 */ async function getBrand(): Promise { try { const res = await HomeApi.brand(1, 3) return res.list.map(d => ({ id: d.id, title: d.name, imageUrl: d.brand_album, description: d.graphic_introduction, path: `?id=${d.id}`, })) } catch (e) { } return [] } /** 健康知识 */ async function getHealth(): Promise { try { const res = await HomeApi.healthTop(3) return res.map(d => ({ id: d.id, title: d.title, imageUrl: d.url_path, description: d.introduction, path: `?url=${d.resource?.url}&poster=${d.url_path}&title=${d.title}` })) } catch (e) { } return [] } /** 技能 */ async function getKill(): Promise { try { const res = await HomeApi.skillTop(3) return res.map(d => ({ id: d.id, imageUrl: d.url_path, description: d.introduction, title: d.title, path: `?url=${d.resource?.url}&poster=${d.url_path}&title=${d.title}` })) } catch (e) { } return [] } /** 疾病 */ async function getIllness(): Promise { try { const res = await HomeApi.illness(1, 3) return res.list.map(d => ({ id: d.id, imageUrl: '', description: d.content?.replace(/[^\u4e00-\u9fa5]/gi,"") ?? '暂无描述', title: d.title, path: `?id=${d.id}` })) } catch (e) { } return [] } useEffect(() => { Promise.all([getBrand(), getHealth(), getKill(), getIllness()]).then(([brand, health, kill, illness]) => { const oldData: Data[] = JSON.parse(JSON.stringify(data)) oldData[0].data = brand oldData[1].data = health oldData[2].data = kill console.log(illness) oldData[3].data = illness setData(oldData) }) }, []) function jump(url: string) { Taro.navigateTo({url}) } return ( { data.map(d => jump(d.url)} src={d.titleUrl}/> { d.data.map((c, index) => jump(d.detailsUrl + c.path)}> {c.title} {c.description || '暂无描述'} ) } ) } ) } export default FeatureRecommended