diff --git a/src/assets/images/empty.svg b/src/assets/images/empty.svg
new file mode 100644
index 0000000..bb2724c
--- /dev/null
+++ b/src/assets/images/empty.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/pages/CollectionDetail/index.tsx b/src/pages/CollectionDetail/index.tsx
index 42558c6..b04b60d 100644
--- a/src/pages/CollectionDetail/index.tsx
+++ b/src/pages/CollectionDetail/index.tsx
@@ -15,6 +15,7 @@ interface DetailProps {
PrdtSubtitle: string,
PrdtTitle: string,
}[],
+ IsFree: number,
IsSubscribed: number,
MallLink: string,
Product: {
@@ -96,7 +97,7 @@ export default function CollectionDetail() {
}
})
}
-
+
})
useEffect(() => {
@@ -107,17 +108,17 @@ export default function CollectionDetail() {
}, [])
const handleToSingleDetail = (id: string) => {
+ if(productDetail?.IsSubscribed === 1 || productDetail?.IsFree){
+ //已订阅/免费,跳转详情页
+ Taro.navigateTo({
+ url: '/pages/SingleDetail/index?id=' + id
+ })
+ } else
if(productDetail?.IsSubscribed === -1 || productDetail?.IsSubscribed === 2){
//未订阅,跳转商城
setprdtMallLink(productDetail.MallLink)
setisToStoreOpen(true)
}
- else if(productDetail?.IsSubscribed === 1){
- //已订阅,跳转详情页
- Taro.navigateTo({
- url: '/pages/SingleDetail/index?id=' + id
- })
- }
// Taro.navigateTo({
// url: '/pages/SingleDetail/index?id=' + id
// })
@@ -125,19 +126,19 @@ export default function CollectionDetail() {
return (
- Taro.navigateBack()}
>
{
- productDetail &&
}
-
-
@@ -148,38 +149,38 @@ export default function CollectionDetail() {
{productDetail?.Product.PrdtDescription}
-
{
productDetail?.Child.map((item: any, index: number) => (
- handleToSingleDetail(item.PrdtId)}
>
{item.PrdtTitle}
{item.PrdtSubtitle}
-
+
{
item.PrdtKeys.map((keys_item: any, keys_index: number) => (
- keys_index < 3 &&
{keys_item}
))
}
-
+
))
@@ -187,10 +188,10 @@ export default function CollectionDetail() {
-
- setisToStoreOpen(false)}
+
+ setisToStoreOpen(false)}
type={0}
mallLink={prdtMallLink}
setmallLink={setprdtMallLink}
diff --git a/src/pages/ListenSearch/index.less b/src/pages/ListenSearch/index.less
index 9dac243..dd1bb9e 100644
--- a/src/pages/ListenSearch/index.less
+++ b/src/pages/ListenSearch/index.less
@@ -11,7 +11,7 @@
display: flex;
flex-direction: row;
margin-bottom: 1rem;
-
+
.subscribe_header_input {
width: calc(100% - 2.5rem - 4rem);
height: 2.5rem;
@@ -20,7 +20,7 @@
padding-left: 3rem;
border: .0625rem solid green;
}
-
+
.subscribe_header_dressing {
width: 2.5rem;
height: 1.5rem;
@@ -28,7 +28,7 @@
font-size: 1rem;
margin: auto 0 auto auto;
}
-
+
.subscribe_header_scanCodeBtn {
position: absolute;
top: 1.5625rem;
@@ -36,7 +36,7 @@
width: 1.5rem;
height: 1.5rem;
}
-
+
.subscribe_header_errorIcon {
position: absolute;
top: 1.5625rem;
@@ -45,14 +45,14 @@
height: 1.5rem;
z-index: 999;
}
-
+
.subscribe_header_searchContainer {
position: relative;
width: 0;
height: 2.5rem;
top: calc(2.5rem + .125rem);
left: 0;
-
+
.subscribe_searchContainer {
position: absolute;
left: 1.125rem;
@@ -63,7 +63,7 @@
flex-direction: column;
z-index: 999;
opacity: .9;
-
+
.subscribe_searchItem {
// width: 100%;
width: auto;
@@ -72,12 +72,12 @@
border: .0625rem solid #f8f8f8;
display: flex;
flex-direction: row;
-
+
.subscribe_searchItem_cover {
width: 2.5rem;
height: 2.5rem;
}
-
+
.subscribe_searchItem_title {
width: auto;
font-size: 1.125rem;
@@ -86,11 +86,11 @@
}
}
}
-
-
+
+
}
}
-
+
.subscribe_selection {
width: 100%;
height: 1.5rem;
@@ -98,13 +98,13 @@
flex-direction: row;
gap: 1rem;
margin-bottom: 1rem;
-
+
.subscribe_selection_item {
width: 2.5rem;
height: 1.5rem;
margin: auto 0;
display: flex;
-
+
.subscribe_selection_item_text {
margin: auto;
}
@@ -145,11 +145,11 @@
border-radius: .75rem 0;
background-color: #fcca1e;
display: flex;
-
+
.subscribe_content_singleItem_label_text {
font-size: .5rem;
margin: auto;
- }
+ }
}
}
@@ -159,7 +159,7 @@
border-radius: .75rem;
margin-bottom: auto;
}
-
+
.subscribe_content_singleItem_title {
width: 100%;
height: 2.5rem;
@@ -191,11 +191,11 @@
border-radius: .75rem 0;
background-color: #fcca1e;
display: flex;
-
+
.subscribe_content_singleItem_label_text {
font-size: .5rem;
margin: auto;
- }
+ }
}
}
@@ -205,7 +205,7 @@
border-radius: .75rem;
margin-bottom: .625rem;
}
-
+
.subscribe_content_singleItem_title {
width: calc(((100vw - 2rem - .625rem) / 2));
height: 1.25rem;
@@ -227,4 +227,10 @@
}
}
}
+ .none {
+ padding-top: 5rem;
+ font-size: .9rem;
+ text-align: center;
+ color: #353535;
+ }
}
diff --git a/src/pages/ListenSearch/index.tsx b/src/pages/ListenSearch/index.tsx
index 85ddb0d..d75398c 100644
--- a/src/pages/ListenSearch/index.tsx
+++ b/src/pages/ListenSearch/index.tsx
@@ -1,38 +1,10 @@
import { Input, View, Image, Text, ScrollView } from '@tarojs/components'
import Taro, { useLoad, useShareAppMessage, useShareTimeline } from '@tarojs/taro'
-import React, { useState } from 'react'
+import React, { useState, useEffect } from 'react'
import searchIcon from '../../assets/images/searchIcon.png'
-import errorIcon from '../../assets/images/error.png'
+import empty from '../../assets/images/empty.svg'
import './index.less'
-// 自定义防抖 Hook
-function useDebounce(callback: (...args: any[]) => void, delay: number): (...args: any[]) => void {
- let timeoutId: ReturnType | null = null;
- return (...args: any[]): void => {
- //@ts-ignore
- clearTimeout(timeoutId);
- timeoutId = setTimeout(() => callback(...args), delay);
- };
-}
-
-// 自定义节流 Hook
-function useThrottle(callback: (...args: any[]) => void, delay: number): (...args: any[]) => void {
- let lastCallTime: number | null = null;
- let timeoutId: ReturnType | null = null;
- return (...args: any[]): void => {
- const now = Date.now();
- if (lastCallTime === null || now - lastCallTime >= delay) {
- lastCallTime = now;
- callback(...args);
- } else if (!timeoutId) {
- timeoutId = setTimeout(() => {
- lastCallTime = now;
- callback(...args);
- timeoutId = null;
- }, delay - (now - (lastCallTime as number)));
- }
- };
-}
export default function SearchDetail() {
@@ -62,6 +34,7 @@ export default function SearchDetail() {
//管理登录弹窗
const [isGetUsePhone, setisGetUsePhone] = useState(false)
+ const [timer, setTimer] = useState(null);
const [searchText, setSearchText] = useState('');
const [searchSingleResults, setSearchSingleResults] = useState()
@@ -70,37 +43,30 @@ export default function SearchDetail() {
const [userSelect, setuserSelect] = useState(0)
// 搜索逻辑
- const handleSearch = (value: string) => {
- if(value){
+ const handleSearch = () => {
+ if(searchText){
//搜索单本结果
Taro.request({
method: 'POST',
url: 'https://interapi.jm-kid.com/api/audio/search/product',
data: {
timestamp: Date.now(),
- title: value,
+ title: searchText
},
success: (res: any) => {
console.log('依据专辑标题搜索熏听专辑列表', res.data)
setSearchSingleResults(res.data.data.products)
}
})
+ } else {
+ setSearchSingleResults([])
}
-
- // console.log('searchSingle=>', searchSingle)
- // setSearchSingleResults(searchSingle)
};
- // 使用防抖和节流 Hooks
- const debouncedHandleSearch = useDebounce(handleSearch, 300);
- const throttledHandleSearch = useThrottle(handleSearch, 500);
-
- // 监听输入框的变化
- const handleInputChange = (event: any) => {
- setSearchText(event.detail.value);
- debouncedHandleSearch(event.detail.value);
- throttledHandleSearch(event.detail.value);
- };
+ useEffect(() => {
+ clearTimeout(timer)
+ setTimer(setTimeout(handleSearch, 300))
+ }, [searchText])
//跳转详情页
const handleToCollectionDetail = (id: string) => {
@@ -130,15 +96,15 @@ export default function SearchDetail() {
return (
-
- setSearchText(e.detail.value)}
>
{/* 列表渲染 */}
-
-
- {
- searchSingleResults && searchSingleResults.length > 0 &&searchSingleResults.map((item: any, index: number) => (
- handleToSingleDetail(item.PrdtId)}
- >
- {
- item.isFree === 1 && (
-
-
- 免费绘本
-
-
- )
- }
-
-
- {item.PrdtTitle}
-
- ))
- }
-
-
+ {
+ searchSingleResults && searchSingleResults.length > 0 ?
+
+
+ {
+ searchSingleResults.map((item: any, index: number) => (
+ handleToSingleDetail(item.PrdtId)}
+ >
+ {
+ item.isFree === 1 && (
+
+
+ 免费绘本
+
+
+ )
+ }
+
+
+ {item.PrdtTitle}
+
+ ))
+ }
+
+ :
+
+
+ 抱歉,暂无查询结果
+
+ }
)
}