2022-06-08 17:02:06 +08:00

95 lines
3.4 KiB
TypeScript

import { View } from '@tarojs/components'
import Search from '@/components/search'
import { alert, goLink } from '@/common/common';
import classnames from "classnames";
import styles from './search.module.scss'
import { useEffect, useRef, useState } from 'react';
import {GetHotSearchApi, GetSearchHistoryApi, AddSearchHistoryApi} from "@/api/search"
import { SCENE } from '@/common/constant';
import useLogin from '@/use/useLogin';
import Taro, { useDidShow, useShareAppMessage } from '@tarojs/taro';
type searchDataParam = {'search_key':''}
export default () => {
const {checkLogin} = useLogin()
useDidShow(async () => {
await checkLogin()
})
const [searchData, setSearchData] = useState<{hotField: searchDataParam[], historyField: searchDataParam[]}>({
hotField: [],
historyField: []
})
//获取热门搜索数据
const {fetchData:hotFetchData} = GetHotSearchApi()
const getHotSearch = async () => {
let {data} = await hotFetchData()
setSearchData((val) => ({...val, hotField: data.list}))
}
//获取历史搜索数据
const {fetchData:HistoryFetchData} = GetSearchHistoryApi()
const getSearchHistory = async () => {
let {data} = await HistoryFetchData()
setSearchData((val) => ({...val, historyField: data.list}))
}
useEffect(() => {
getHotSearch(),
getSearchHistory()
}, [])
//添加搜索关键字
const addSearchField = useRef({key: '', screen: SCENE.SearchScene})
const {fetchData:addFetchData} = AddSearchHistoryApi()
const addSearchHistory = async () => {
await addFetchData(addSearchField.current)
// goLink('/pages/searchList/searchList', {key: addSearchField.current.key})
}
//搜索事件, status = true 添加搜索, status = false 直接跳转
const searchEvent = (e, status = true) => {
if(e == "") {
alert.error('请输入关键词')
return false
}
addSearchField.current.key = e
status&&addSearchHistory()
Taro.navigateTo({
url: `/pages/searchList/searchList?key=${addSearchField.current.key}`
})
}
return (
<View className={styles.main}>
<View className={styles.search}>
<Search style={{width: '100%'}} placeholder="请输入面料关键词" placeIcon="out" showBtn={true} clickOnSearch={(e) => searchEvent(e)}/>
</View>
<View className={styles.up_search} onClick={() => goLink('/pages/searchList/searchList')}></View>
{searchData?.hotField.length > 0 && <View className={styles.hot}>
<View className={styles.hot_header}>
<View className={styles.hot_header_title}></View>
</View>
<View className={styles.list}>
{searchData.hotField.map((item, index) => {
return <View key={index} className={styles.item} onClick={() => searchEvent(item.search_key, false)}>{item.search_key}</View>
})}
</View>
</View>}
{searchData?.historyField.length > 0 && <View className={styles.history}>
<View className={styles.history_header}>
<View className={styles.history_header_title}></View>
<View className={classnames('iconfont icon-lajixiang', styles.miconfont)}></View>
</View>
<View className={styles.list}>
{searchData?.historyField?.map((item, index) => <View key={index} className={styles.item} onClick={() => searchEvent(item.search_key, false)}>{item.search_key}</View>)}
</View>
</View>}
</View>
)
}