✨ feat(1):
This commit is contained in:
parent
8c7f25e7f9
commit
133e6414fa
@ -1,38 +1,37 @@
|
||||
import { alert, retrieval } from '@/common/common'
|
||||
import Address from '@/components/address'
|
||||
import FromList from '@/components/FromList'
|
||||
import { Button, Input, Text, Textarea, View } from '@tarojs/components'
|
||||
import Taro, { setNavigationBarTitle, useRouter } from '@tarojs/taro'
|
||||
import { useEffect, useState } from 'react'
|
||||
import './index.scss'
|
||||
import { addressAddApi, addressDetailApi, addressEditApi } from '@/api/addressManager'
|
||||
import useLogin from '@/use/useLogin'
|
||||
|
||||
import { alert, retrieval } from "@/common/common"
|
||||
import Address from "@/components/address"
|
||||
import FromList from "@/components/FromList"
|
||||
import { Button, Input, Text, Textarea, View } from "@tarojs/components"
|
||||
import Taro, { setNavigationBarTitle, useRouter } from "@tarojs/taro"
|
||||
import { useEffect, useState } from "react"
|
||||
import "./index.scss"
|
||||
import {addressAddApi, addressDetailApi,addressEditApi} from "@/api/addressManager"
|
||||
import useLogin from "@/use/useLogin"
|
||||
|
||||
export default ()=>{
|
||||
export default () => {
|
||||
useLogin()
|
||||
const [showSiteModal, setShowSiteModal] = useState(false);
|
||||
const {type,id} = useRouter().params;
|
||||
useEffect(()=>{
|
||||
if(type=="add"){
|
||||
setNavigationBarTitle({title:"新增收货地址"})
|
||||
}else{
|
||||
initalFormData();
|
||||
setNavigationBarTitle({title:"编辑收货地址"})
|
||||
const [showSiteModal, setShowSiteModal] = useState(false)
|
||||
const { type, id } = useRouter().params
|
||||
useEffect(() => {
|
||||
if (type == 'add') {
|
||||
setNavigationBarTitle({ title: '新增收货地址' })
|
||||
} else {
|
||||
initalFormData()
|
||||
setNavigationBarTitle({ title: '编辑收货地址' })
|
||||
}
|
||||
},[])
|
||||
}, [])
|
||||
// 获取编辑地址信息
|
||||
const {fetchData: getFromData} = addressDetailApi()
|
||||
const initalFormData = async ()=>{
|
||||
const detail = await getFromData({id});
|
||||
const { province_id,province_name,city_id,city_name,district_id,district_name } = detail.data;
|
||||
const siteArray = [{id: province_id, name: province_name}];
|
||||
city_id&&siteArray.push({id: city_id, name: city_name});
|
||||
district_id&&siteArray.push({id: district_id, name: district_name});
|
||||
const { fetchData: getFromData } = addressDetailApi()
|
||||
const initalFormData = async () => {
|
||||
const detail = await getFromData({ id })
|
||||
const { province_id, province_name, city_id, city_name, district_id, district_name } = detail.data
|
||||
const siteArray = [{ id: province_id, name: province_name }]
|
||||
city_id && siteArray.push({ id: city_id, name: city_name })
|
||||
district_id && siteArray.push({ id: district_id, name: district_name })
|
||||
setFormData({
|
||||
name: detail.data.name,
|
||||
phone: detail.data.phone,
|
||||
site: siteArray.map(item=>item.name).join(" "),
|
||||
site: siteArray.map((item) => item.name).join(' '),
|
||||
siteArray: siteArray as any,
|
||||
district_id: detail.data.district_id,
|
||||
address_detail: detail.data.address_detail,
|
||||
@ -41,104 +40,140 @@ export default ()=>{
|
||||
})
|
||||
}
|
||||
|
||||
const {fetchData} = addressAddApi()
|
||||
const {fetchData: editFetch} = addressEditApi()
|
||||
const { fetchData } = addressAddApi()
|
||||
const { fetchData: editFetch } = addressEditApi()
|
||||
// 保存
|
||||
const [formData, setFormData] = useState({
|
||||
name: "",
|
||||
phone:"",
|
||||
site:"",
|
||||
name: '',
|
||||
phone: '',
|
||||
site: '',
|
||||
siteArray: [],
|
||||
district_id:"",
|
||||
address_detail: "",
|
||||
district_id: '',
|
||||
address_detail: '',
|
||||
is_default: false,
|
||||
id: 0
|
||||
id: 0,
|
||||
})
|
||||
const rules = {
|
||||
name: [{
|
||||
message: "请输入正确收货人姓名",
|
||||
name: [
|
||||
{
|
||||
message: '请输入正确收货人姓名',
|
||||
// validator: (value:any, rule:any)=>{ // 自定义验证,返回true表示匹配到了(错误)
|
||||
// return value.length>5;
|
||||
// }
|
||||
}],
|
||||
phone: [{
|
||||
message: "请输入正确的电话号码", regex: /^1[3|5|6|9|2|8|7]\d{9}$/
|
||||
}],
|
||||
district_id: [{
|
||||
message: "请选择地址"
|
||||
}],
|
||||
address_detail: [{
|
||||
message: "请输入详细地址"
|
||||
}],
|
||||
},
|
||||
],
|
||||
phone: [
|
||||
{
|
||||
message: '请输入正确的电话号码',
|
||||
regex: /^1[3|5|6|9|2|8|7]\d{9}$/,
|
||||
},
|
||||
],
|
||||
district_id: [
|
||||
{
|
||||
message: '请选择地址',
|
||||
},
|
||||
],
|
||||
address_detail: [
|
||||
{
|
||||
message: '请输入详细地址',
|
||||
},
|
||||
],
|
||||
}
|
||||
const handleSave = ()=>{
|
||||
retrieval(formData, rules).then(async ()=>{
|
||||
const result = type=="add"?await fetchData({
|
||||
const handleSave = () => {
|
||||
retrieval(formData, rules)
|
||||
.then(async () => {
|
||||
const result =
|
||||
type == 'add'
|
||||
? await fetchData({
|
||||
name: formData.name,
|
||||
phone:formData.phone,
|
||||
district_id:formData.district_id,
|
||||
address_detail: formData.address_detail,
|
||||
is_default: formData.is_default
|
||||
}):await editFetch({
|
||||
name: formData.name,
|
||||
phone:formData.phone,
|
||||
district_id:formData.district_id,
|
||||
phone: formData.phone,
|
||||
district_id: formData.district_id,
|
||||
address_detail: formData.address_detail,
|
||||
is_default: formData.is_default,
|
||||
id: formData.id
|
||||
});
|
||||
if(result.success){
|
||||
Taro.eventCenter.trigger("addressList:refresh");
|
||||
Taro.navigateBack();
|
||||
alert.success("保存成功");
|
||||
}else{
|
||||
alert.error(result.msg);
|
||||
})
|
||||
: await editFetch({
|
||||
name: formData.name,
|
||||
phone: formData.phone,
|
||||
district_id: formData.district_id,
|
||||
address_detail: formData.address_detail,
|
||||
is_default: formData.is_default,
|
||||
id: formData.id,
|
||||
})
|
||||
if (result.success) {
|
||||
Taro.eventCenter.trigger('addressList:refresh')
|
||||
Taro.navigateBack()
|
||||
alert.success('保存成功')
|
||||
} else {
|
||||
alert.error(result.msg)
|
||||
}
|
||||
}).catch((message)=>{
|
||||
})
|
||||
.catch((message) => {
|
||||
alert.none(message)
|
||||
})
|
||||
}
|
||||
// 监听表单完善
|
||||
const [hozon, setHozon] = useState(false);
|
||||
useEffect(()=>{
|
||||
if(retrieval){
|
||||
retrieval(formData).then(()=>setHozon(true)).catch(()=>setHozon(false))
|
||||
const [hozon, setHozon] = useState(false)
|
||||
useEffect(() => {
|
||||
if (retrieval) {
|
||||
retrieval(formData)
|
||||
.then(() => setHozon(true))
|
||||
.catch(() => setHozon(false))
|
||||
}
|
||||
},[formData])
|
||||
}, [formData])
|
||||
// 设置选择地址
|
||||
const handleSetSite = (ev:any)=>{
|
||||
if(ev.length > 0){
|
||||
const handleSetSite = (ev: any) => {
|
||||
if (ev.length > 0) {
|
||||
setFormData({
|
||||
...formData,
|
||||
siteArray: ev,
|
||||
site: ev.map(item=>item.name+" "),
|
||||
district_id: ev[ev.length-1]?.id
|
||||
site: ev.map((item) => item.name + ' '),
|
||||
district_id: ev[ev.length - 1]?.id,
|
||||
})
|
||||
}else{
|
||||
alert.error("请选择地址");
|
||||
} else {
|
||||
alert.error('请选择地址')
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<View className="add-address">
|
||||
<FromList onInput={(ev:any)=>setFormData({...formData,name:ev.detail.value})} value={formData["name"]} label="联系人" placeholder="请输入收货人姓名"/>
|
||||
<FromList primordialType="number" onInput={(ev:any)=>setFormData({...formData,phone:ev.detail.value})} value={formData["phone"]} label="联系方式" placeholder="请输入联系方式"/>
|
||||
<FromList value={formData["site"]} onClick={()=>setShowSiteModal(true)} label="收货地址" type="select" placeholder="请选择/省/市/区"/>
|
||||
<FromList onInput={(ev:any)=>setFormData({...formData,address_detail:ev.detail.value})} value={formData["address_detail"]} label="详细地址" type="textarea" placeholder="请输入详细地址(街道、门牌号等)"/>
|
||||
<View className="add-address-default">
|
||||
<View className='add-address'>
|
||||
<FromList
|
||||
onInput={(ev: any) => setFormData({ ...formData, name: ev.detail.value })}
|
||||
value={formData['name']}
|
||||
label='联系人'
|
||||
placeholder='请输入收货人姓名'
|
||||
/>
|
||||
<FromList
|
||||
primordialType='number'
|
||||
onInput={(ev: any) => setFormData({ ...formData, phone: ev.detail.value })}
|
||||
value={formData['phone']}
|
||||
label='联系方式'
|
||||
placeholder='请输入联系方式'
|
||||
/>
|
||||
<FromList value={formData['site']} onClick={() => setShowSiteModal(true)} label='收货地址' type='select' placeholder='请选择/省/市/区' />
|
||||
<FromList
|
||||
onInput={(ev: any) => setFormData({ ...formData, address_detail: ev.detail.value })}
|
||||
value={formData['address_detail']}
|
||||
label='详细地址'
|
||||
type='textarea'
|
||||
placeholder='请输入详细地址(街道、门牌号等)'
|
||||
/>
|
||||
<View className='add-address-default'>
|
||||
<Text>设为默认地址</Text>
|
||||
<View onClick={()=>setFormData({...formData ,is_default: !formData.is_default})}>
|
||||
{
|
||||
formData.is_default?<View className="add-address-default-active"><Text className="iconfont icon-tick"/></View>
|
||||
:<View className="add-address-default-noactive"></View>
|
||||
}
|
||||
<View onClick={() => setFormData({ ...formData, is_default: !formData.is_default })}>
|
||||
{formData.is_default ? (
|
||||
<View className='add-address-default-active'>
|
||||
<Text className='iconfont icon-tick' />
|
||||
</View>
|
||||
) : (
|
||||
<View className='add-address-default-noactive'></View>
|
||||
)}
|
||||
</View>
|
||||
</View>
|
||||
|
||||
<Button style={{"background": hozon?'#007aff':''}} hoverClass="none" className={`add-address-save`} onClick={handleSave}>
|
||||
<Button style={{ background: hozon ? '#007aff' : '' }} hoverClass='none' className={`add-address-save`} onClick={handleSave}>
|
||||
保存
|
||||
</Button>
|
||||
<Address addressOnChange={handleSetSite} defaultValue={formData.siteArray} addressOnClose={()=>setShowSiteModal(false)} show={showSiteModal}/>
|
||||
<Address addressOnChange={handleSetSite} defaultValue={formData.siteArray} addressOnClose={() => setShowSiteModal(false)} show={showSiteModal} />
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
@ -43,9 +43,9 @@ export default memo(({ show = false, onClose, title = '', productId = 0 }: param
|
||||
|
||||
//重置数据
|
||||
useEffect(() => {
|
||||
// const newList = initList(list)
|
||||
const newList = initList(list)
|
||||
startTransition(() => {
|
||||
// setList([...newList])
|
||||
setList([...newList])
|
||||
})
|
||||
condition.current.code_or_name = null
|
||||
setSearchShow(false)
|
||||
@ -199,18 +199,6 @@ export default memo(({ show = false, onClose, title = '', productId = 0 }: param
|
||||
setSearchShow(false)
|
||||
}
|
||||
|
||||
//格式化金额
|
||||
const formatPrice = (item) => {
|
||||
return Number(formatPriceDiv(item[selectList[selectIndex].priceField]))
|
||||
// return (
|
||||
// <View className={styles.priceText}>
|
||||
// <Text>¥</Text>
|
||||
// {price}
|
||||
// <Text> /{selectList[selectIndex].eunit}</Text>
|
||||
// </View>
|
||||
// )
|
||||
}
|
||||
|
||||
//显示图片弹窗
|
||||
const [showLabImage, setShowLabImage] = useState(false)
|
||||
const [labImageValue, setLabImageValue] = useState()
|
||||
@ -222,47 +210,6 @@ export default memo(({ show = false, onClose, title = '', productId = 0 }: param
|
||||
setShowLabImage(() => false)
|
||||
}, [])
|
||||
|
||||
//虚拟滚动
|
||||
// const Rows = memo(({ id, index, style, data }: any) => {
|
||||
// let item = data[index]
|
||||
// return (
|
||||
// <>
|
||||
// {(item && (
|
||||
// <View className={styles.item} key={item.id}>
|
||||
// <View className={styles.item_color}>
|
||||
// <LabAndImg value={{ lab: item.lab, rgb: item.rgb, texture_url: item.texture_url, title: item.code }} showStatus={false} onClick={getLabAndImg} />
|
||||
// </View>
|
||||
// <View className={styles.item_con}>
|
||||
// <View className={styles.title}>{formatHashTag(item.code, item.name)}</View>
|
||||
// <View className={styles.num}>{formatPrice(item)}</View>
|
||||
// </View>
|
||||
// <View className={styles.btn_con}>
|
||||
// {(!item.show && (
|
||||
// <View className={styles.btn} onClick={() => onAdd(item)}>
|
||||
// 添加
|
||||
// </View>
|
||||
// )) || (
|
||||
// <View className={styles.btn_count}>
|
||||
// <Counter
|
||||
// otherData={item}
|
||||
// onBlue={getInputValue}
|
||||
// defaultNum={item.count}
|
||||
// step={selectList[selectIndex].step}
|
||||
// digits={selectList[selectIndex].digits}
|
||||
// onClickBtn={getInputValue}
|
||||
// unit={selectList[selectIndex].unit}
|
||||
// minNum={selectList[selectIndex].minNum}
|
||||
// maxNum={selectList[selectIndex].maxNum}
|
||||
// />
|
||||
// </View>
|
||||
// )}
|
||||
// </View>
|
||||
// </View>
|
||||
// )) || <View className={styles.item}></View>}
|
||||
// </>
|
||||
// )
|
||||
// })
|
||||
|
||||
return (
|
||||
<View className={styles.shop_cart_main}>
|
||||
<Popup showTitle={false} show={showPopup} onClose={() => closePopup()}>
|
||||
@ -344,20 +291,6 @@ export default memo(({ show = false, onClose, title = '', productId = 0 }: param
|
||||
})}
|
||||
</View>
|
||||
</InfiniteScroll>
|
||||
|
||||
// <View className={styles.color_con}>
|
||||
// <VirtualList
|
||||
// className={styles.virtual_list}
|
||||
// height={400}
|
||||
// width='100%'
|
||||
// itemData={list}
|
||||
// itemCount={list.length + 1}
|
||||
// itemSize={100}
|
||||
// overscanCount={1}>
|
||||
// {Rows}
|
||||
// </VirtualList>
|
||||
// <View className='common_safe_area_y'></View>
|
||||
// </View>
|
||||
)}
|
||||
{list.length <= 0 && !colorState.loading && <View className={styles.noData}>暂无此商品</View>}
|
||||
</View>
|
||||
|
Loading…
x
Reference in New Issue
Block a user