电子商城测试版v3

This commit is contained in:
2022-06-30 20:31:51 +08:00
parent d0d4219413
commit 4ac7890915
22 changed files with 452 additions and 107 deletions
@@ -1,6 +1,6 @@
import Popup from "@/components/popup";
import { Input, ScrollView, Text, View } from "@tarojs/components";
import { memo, useCallback, useMemo, useRef } from "react";
import { memo, useCallback, useEffect, useMemo, useRef } from "react";
import classnames from "classnames";
import styles from './index.module.scss'
import TextareaEnhance from "@/components/textareaEnhance";
@@ -11,7 +11,7 @@ import { alert } from "@/common/common";
type ReasonInfoParam = {
show?: boolean, //显示
onClose?: () => void, //关闭
onSuccess?: () => void, //成功
onSuccess?: (val:any) => void, //成功
defaultValue?: {
remark: string,
name: string
@@ -24,40 +24,34 @@ export default memo(({show = false, onClose, onSuccess, defaultValue}: ReasonInf
"remark": ''
})
const getOtherReason = useCallback((val) => {
const getOtherReason = (val) => {
submitData.current.remark = val
}, [])
const changeInput = useCallback((val) => {
submitData.current.name = val.detail.value
}, [])
//创建
const {fetchData} = CreateFavoriteApi()
const onSubmit = async () => {
if(!submitData.current.name) return alert.none('请输入收藏夹名称!')
let res = await fetchData(submitData.current)
if(res.success) {
alert.success('创建成功')
onSuccess?.()
} else {
alert.error('创建失败')
}
onClose?.()
}
const changeInput = (val) => {
submitData.current.name = val.detail.value
}
const onSubmit = () => {
onSuccess?.(submitData.current)
}
useEffect(() => {
submitData.current = {name: defaultValue?.name!, remark: defaultValue?.remark!}
}, [defaultValue])
return (
<Popup show={show} title="新建收藏夹" onClose={onClose} >
<View className={styles.collection_con}>
<View className={styles.title_item}>
<View className={styles.title}>名称</View>
<View className={styles.select}>
<Input placeholder="请输入文件夹名称" className={styles.input} onInput={changeInput} value={defaultValue?.remark}/>
<Input placeholder="请输入文件夹名称" className={styles.input} onInput={changeInput} value={defaultValue?.name}/>
</View>
</View>
<View className={styles.desc_item}>
<View className={styles.title}>简介</View>
<View className={styles.desc}>
<TextareaEnhance onChange={getOtherReason} placeholder="请输入简介" />
<TextareaEnhance defaultValue={defaultValue?.remark} onChange={getOtherReason} placeholder="请输入简介" />
</View>
</View>
+54 -14
View File
@@ -1,4 +1,4 @@
import { DelFavoriteApi, FavoriteListApi } from "@/api/favorite";
import { CreateFavoriteApi, DelFavoriteApi, FavoriteListApi, UpdateFavoriteApi } from "@/api/favorite";
import { alert } from "@/common/common";
import { getFilterData } from "@/common/util";
import Product from "@/components/product";
@@ -32,9 +32,6 @@ export default () => {
let res = await fetchDataList(getFilterData({name: searchData}))
setList(() => res.data.list)
}
useEffect(() => {
getFavoriteList()
}, [])
//创建收藏夹
const [collectioinShow, setCollectioinShow] = useState(false)
@@ -42,12 +39,31 @@ export default () => {
setCollectioinShow(false)
}, [])
//创建成功
const onCreatSuccess = useCallback(() => {
getFavoriteList()
}, [])
const creatShow = () => {
setCollectioinShow(true)
setInitData(() => ({ remark: '',name: '', id:0}))
}
//新增
const {fetchData} = CreateFavoriteApi()
const onCreate = async (submitData) => {
if(!submitData.name) return alert.none('请输入收藏夹名称!')
let res = await fetchData({...submitData})
if(res.success) {
alert.success('创建成功')
getFavoriteList()
} else {
alert.error('创建失败')
}
}
//更多编辑
const [initData, setInitData] = useState({
remark: '',
name: '',
id:0
})
const selectInfo = useRef<any>(null)
const [updateShow, setUpdateShow] = useState(false)
const closeUpdate = useCallback(() => {
@@ -56,6 +72,8 @@ export default () => {
const moreUpdate = (item,e) => {
e.stopPropagation()
selectInfo.current = item
console.log('item:::', item)
setInitData((e) =>({ ...e, remark:item.remark , name: item.name, id: item.id}))
setUpdateShow(true)
}
@@ -84,15 +102,37 @@ export default () => {
}, [])
//编辑
const onUpdate = useCallback(() => {
const {fetchData: updateFavoriteFetchData} = UpdateFavoriteApi()
const onUpdateShow = useCallback(() => {
setCollectioinShow(true)
}, [])
const onUpdate = async (submitData) => {
if(!submitData.name) return alert.none('请输入收藏夹名称!')
let res = await updateFavoriteFetchData({...submitData})
if(res.success) {
alert.success('编辑成功')
getFavoriteList()
} else {
alert.error('编辑失败')
}
}
//操作文件夹
const onCreatSuccess = (submitData) => {
if (!initData.id) {
onCreate(submitData)
} else {
onUpdate({...submitData, id: initData.id})
}
setCollectioinShow(false)
}
return (
<View className={styles.collection_main}>
<View className={styles.search}>
<Search style={{width: '100%'}} debounceTime={300} changeOnSearch={onSearch} placeholder="请输入面料关键词" />
<View className={styles.miconfont_con} onClick={() => setCollectioinShow(true)}><Text className={classnames(styles.miconfont, 'iconfont icon-jia')}></Text></View>
<View className={styles.miconfont_con} onClick={creatShow}><Text className={classnames(styles.miconfont, 'iconfont icon-jia')}></Text></View>
</View>
<View className={styles.class_list}>
{list?.map((item:any) => <View className={styles.class_item}>
@@ -104,12 +144,12 @@ export default () => {
<View className={styles.more} onClick={(e) => moreUpdate(item,e)}>更多</View>
</View>
<View className={styles.class_con} style={item.openStatus?{maxHeight: 10*260 + 'rpx'}:{maxHeight: 0}} >
<Product productList={new Array(10).fill('')}/>
<Product productList={item.product_color_list}/>
</View>
</View>)}
</View>
<CreatePopup show={collectioinShow} onClose={closeCollection} onSuccess={onCreatSuccess}/>
<UpdatePopup show={updateShow} onClose={closeUpdate} onDelete={onDeleteCollect} onUpdate={onUpdate}/>
<UpdatePopup show={updateShow} onClose={closeUpdate} onDelete={onDeleteCollect} onUpdate={onUpdateShow}/>
<CreatePopup defaultValue={initData} show={collectioinShow} onClose={closeCollection} onSuccess={onCreatSuccess}/>
</View>
)
}