Merge branch 'dev' of ssh://git.online.zzfzyc.com:10022/mp/EShop into dev

This commit is contained in:
czm 2022-05-23 14:28:26 +08:00
commit 89576841ca
5 changed files with 115 additions and 31 deletions

View File

@ -32,3 +32,25 @@ import { useRequest } from "@/use/useHttp"
method: "get", method: "get",
}) })
} }
/**
*
* @returns
*/
export const addressEditApi = () => {
return useRequest({
url: `/v1/mall/address`,
method: "put",
})
}
/**
*
* @returns
*/
export const addressDeleteApi = () => {
return useRequest({
url: `/v1/mall/address`,
method: "delete",
})
}

View File

@ -8,7 +8,7 @@
export const BASE_URL = `http://192.168.1.30:40001/lymarket` // 发 export const BASE_URL = `http://192.168.1.30:40001/lymarket` // 发
// export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境 // export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境
// export const BASE_URL = `https://www.zzfzyc.com/lymarket` // 正式环境 // export const BASE_URL = `https://www.zzfzyc.com/lymarket` // 正式环境
// export const BASE_URL = `http://192.168.1.165:40001/lymarket` // 王霞 // export const BASE_URL = `http://192.168.1.4:40001/lymarket` // 王霞
// export const BASE_URL = `http://192.168.1.224:50002/lymarket` // 添 // export const BASE_URL = `http://192.168.1.224:50002/lymarket` // 添
// CDN // CDN

View File

@ -22,6 +22,9 @@
border: 1px solid #68b4ff; border: 1px solid #68b4ff;
box-shadow: 0px 0px 10px 0px rgba(0,122,255,0.27); box-shadow: 0px 0px 10px 0px rgba(0,122,255,0.27);
} }
.address-list:first-child{
margin-top: 0;
}
.address-list:last-child{ .address-list:last-child{
margin-bottom: 300px; margin-bottom: 300px;
} }

View File

@ -2,33 +2,81 @@
import { Button, Navigator, ScrollView, Text, View } from "@tarojs/components" import { Button, Navigator, ScrollView, Text, View } from "@tarojs/components"
import { memo, useEffect, useState } from "react" import { memo, useEffect, useState } from "react"
import "./index.scss" import "./index.scss"
import {addressListApi} from "@/api/addressManager" import {addressListApi,addressDeleteApi} from "@/api/addressManager"
import { alert } from "@/common/common"
import Taro, { showModal } from "@tarojs/taro"
interface Params{ interface Params{
refresherEnabled?: boolean,//是否开启刷新 refresherEnabled?: boolean,//是否开启刷新
onSelect?: (item:any,index:number)=>void,//列表选择 onSelect?: (item:any,index:number)=>void,//列表选择
addButtonEnabled?: boolean, //是否显示添加按钮
focusBorderEnabled?: boolean, //焦点显示蓝色边框
id?: number, //默认选择值
} }
// 地址列表 // 地址列表
const AddressList = memo((props:Params)=>{ const AddressList = memo((props:Params)=>{
const {addButtonEnabled=true,focusBorderEnabled=false} = props;
const {fetchData, state} = addressListApi() const {fetchData, state} = addressListApi()
// 获取数据 // 获取数据
const getData = ()=>{ const getData = async ()=>{
fetchData(); const result = await fetchData();
if(props.id){
setFocusId(props.id as any);
}else{
result.data.list?.every(item=>{
if(item.is_default){
setFocusId(item.id);
return false;
}
return true;
})
}
} }
useEffect(()=>{ useEffect(()=>{
getData(); getData();
// 监听刷新
Taro.eventCenter.on("addressList:refresh", getData);
return ()=>{
Taro.eventCenter.off("addressList:refresh", getData);
}
},[]) },[])
// 处理刷新 // 处理刷新
const [refreshState, setRefreshState] = useState(false); const [refreshState, setRefreshState] = useState(false);
const handleRefresh = async ()=>{ const handleRefresh = async ()=>{
setRefreshState(true); setRefreshState(true);
await fetchData(); await getData();
setRefreshState(false); setRefreshState(false);
} }
const data = Array.from({length:15}); const data = Array.from({length:15});
// 焦点
const [focusId, setFocusId] = useState();
// 列表选择
const handleSelect = (item: any, index: number)=>{
props.onSelect&&props.onSelect(item,index);
if(focusBorderEnabled){
setFocusId(item?.id);
}
}
// 删除地址
const {fetchData: deleteFetch} = addressDeleteApi()
const handleDelete = (item:any)=>{
showModal(({
title: "提示",
content: "是否删除地址?",
async success(ev){
if(ev.confirm){
const result = await deleteFetch({id:item.id});
if(result.success){
alert.success("删除成功");
getData();
}else{
alert.success(result.msg);
}
}
}
}))
}
return ( return (
<View className="address-scroll-view"> <View className="address-scroll-view">
@ -39,7 +87,7 @@ const AddressList = memo((props:Params)=>{
// data.length>0? // data.length>0?
// data.map((item,index)=>{ // data.map((item,index)=>{
return( return(
<View onClick={()=>props.onSelect&&props.onSelect(item,index)} className={`address-list ${item.is_default&&'address-active'}`}> <View onLongPress={()=>handleDelete(item)} onClick={()=>handleSelect(item,index)} className={`address-list ${focusId==item.id&&'address-active'}`}>
<View className="address-user"> <View className="address-user">
{item.name} {item.name}
{ {
@ -52,7 +100,7 @@ const AddressList = memo((props:Params)=>{
{/* **省**市**区**街道****仓库 */} {/* **省**市**区**街道****仓库 */}
{item.province_name+item.city_name+item.district_name} {item.address_detail} {item.province_name+item.city_name+item.district_name} {item.address_detail}
{ {
item.is_default&&<Text className="address-list-phone">{item.phone}</Text> item.is_default&&<Text className="address-list-phone">{item.phone.replace(item.phone.substring(3,7), "****")}</Text>
} }
</View> </View>
<Navigator url={`/pages/addressAdd/index?type=edit&id=${item.id}`} hoverClass="none" className="address-edit"> <Navigator url={`/pages/addressAdd/index?type=edit&id=${item.id}`} hoverClass="none" className="address-edit">
@ -65,7 +113,7 @@ const AddressList = memo((props:Params)=>{
<View className="address-no-data"></View> <View className="address-no-data"></View>
} }
</ScrollView> </ScrollView>
<Navigator url="/pages/addressAdd/index?type=add" hoverClass="none" className="add-address"></Navigator> {addButtonEnabled&&<Navigator url="/pages/addressAdd/index?type=add" hoverClass="none" className="add-address"></Navigator>}
</View> </View>
) )
}) })

View File

@ -6,7 +6,7 @@ import { Button, Input, Text, Textarea, View } from "@tarojs/components"
import Taro, { setNavigationBarTitle, useRouter } from "@tarojs/taro" import Taro, { setNavigationBarTitle, useRouter } from "@tarojs/taro"
import { useEffect, useState } from "react" import { useEffect, useState } from "react"
import "./index.scss" import "./index.scss"
import {addressAddApi, addressDetailApi} from "@/api/addressManager" import {addressAddApi, addressDetailApi,addressEditApi} from "@/api/addressManager"
export default ()=>{ export default ()=>{
const [showSiteModal, setShowSiteModal] = useState(false); const [showSiteModal, setShowSiteModal] = useState(false);
@ -15,7 +15,7 @@ export default ()=>{
if(type=="add"){ if(type=="add"){
setNavigationBarTitle({title:"新增收货地址"}) setNavigationBarTitle({title:"新增收货地址"})
}else{ }else{
// initalFormData(); initalFormData();
setNavigationBarTitle({title:"编辑收货地址"}) setNavigationBarTitle({title:"编辑收货地址"})
} }
},[]) },[])
@ -23,19 +23,24 @@ export default ()=>{
const {fetchData: getFromData} = addressDetailApi() const {fetchData: getFromData} = addressDetailApi()
const initalFormData = async ()=>{ const initalFormData = async ()=>{
const detail = await getFromData({id}); const detail = await getFromData({id});
const siteArray = [] const { province_id,province_name,city_id,city_name,district_id,district_name } = detail.data;
// setFormData({ const siteArray = [{id: province_id, name: province_name}];
// name: detail.data.name, city_id&&siteArray.push({id: city_id, name: city_name});
// phone: detail.data.phone, district_id&&siteArray.push({id: district_id, name: district_name});
// site: detail.data., setFormData({
// siteArray: [], name: detail.data.name,
// district_id: detail.data.district_id, phone: detail.data.phone,
// address_detail: detail.data.address_detail, site: siteArray.map(item=>item.name).join(" "),
// is_default: false siteArray: siteArray as any,
// }) district_id: detail.data.district_id,
address_detail: detail.data.address_detail,
is_default: detail.data.is_default,
id: detail.data.id,
})
} }
const {fetchData, state} = addressAddApi() const {fetchData} = addressAddApi()
const {fetchData: editFetch} = addressEditApi()
// 保存 // 保存
const [formData, setFormData] = useState({ const [formData, setFormData] = useState({
name: "", name: "",
@ -44,7 +49,8 @@ export default ()=>{
siteArray: [], siteArray: [],
district_id:"", district_id:"",
address_detail: "", address_detail: "",
is_default: false is_default: false,
id: 0
}) })
const rules = { const rules = {
name: [{ name: [{
@ -62,20 +68,27 @@ export default ()=>{
} }
const handleSave = ()=>{ const handleSave = ()=>{
retrieval(formData, rules).then(async ()=>{ retrieval(formData, rules).then(async ()=>{
const result = await fetchData({ const result = type=="add"?await fetchData({
name: formData.name, name: formData.name,
phone:formData.phone, phone:formData.phone,
site:formData.site,
district_id:formData.district_id, district_id:formData.district_id,
address_detail: formData.address_detail, address_detail: formData.address_detail,
is_default: formData.is_default is_default: formData.is_default
}):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){ if(result.success){
alert.success("保存成功") Taro.eventCenter.trigger("addressList:refresh");
Taro.navigateBack();
alert.success("保存成功");
}else{ }else{
alert.error(result.msg); alert.error(result.msg);
} }
// Taro.navigateBack();
}).catch((message)=>{ }).catch((message)=>{
alert.none(message) alert.none(message)
}) })
@ -89,8 +102,6 @@ export default ()=>{
},[formData]) },[formData])
// 设置选择地址 // 设置选择地址
const handleSetSite = (ev:any)=>{ const handleSetSite = (ev:any)=>{
console.log(ev);
if(ev.length>=3){ if(ev.length>=3){
setFormData({ setFormData({
...formData, ...formData,
@ -122,7 +133,7 @@ export default ()=>{
<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> </Button>
<Address addressOnSelect={handleSetSite} defaultValue={[ {name: "广东省", id: 193, level: 2}, {name: "佛山市", id: 202, level:3}, {name: "高明区", id: 204, level:4}]} addressOnClose={()=>setShowSiteModal(false)} show={showSiteModal}/> <Address addressOnSelect={handleSetSite} defaultValue={formData.siteArray} addressOnClose={()=>setShowSiteModal(false)} show={showSiteModal}/>
</View> </View>
) )
} }