优化地址选择

This commit is contained in:
czm 2022-05-12 11:36:59 +08:00
parent 9de3625421
commit 29055ecb70
2 changed files with 36 additions and 4 deletions

11
src/api/search.ts Normal file
View File

@ -0,0 +1,11 @@
import { useRequest } from "@/use/useHttp"
/**
*
*/
export const getHotSearchApi = () => {
return useRequest({
url: `/v1/mall/hotSearch`,
method: "get",
})
}

View File

@ -14,6 +14,7 @@ type Params = {
addressOnClose?: () => void,
show?: true|false,
defaultValue?:DefaultValueParm[]
selectStatus?: false|true, //false不需要选择完整地址true需要选择完整地址
}
type AddresParam = {
@ -22,7 +23,8 @@ type AddresParam = {
level?: number,
level_name?: string,
name?: string,
parent_id?: number
parent_id?: number,
}
@ -30,7 +32,8 @@ export default memo(({
addressOnSelect,
addressOnClose,
show = false,
defaultValue = []
defaultValue = [],
selectStatus = true
}: Params) => {
//省
const provinceList = useRef<AddresParam[]>([])
@ -45,6 +48,7 @@ export default memo(({
const [selectArr, setSelectArr] = useState<DefaultValueParm[]>([]) //选中的省市区
const [cityStatus, setCityStatus] = useState(false) //城市是否存在
const [areaStatus, setAreaStatus] = useState(false) //区镇是否存在
const [confirmBtnStatus, setConfirmBtnStatus] = useState(false) //确认按钮是否可用
const [bottomStyle, setBottomStyle] = useState({width:'100rpx',left:'0rpx'}) //底部滚动条样式
@ -53,6 +57,7 @@ export default memo(({
setSelectArr(defaultValue)
if(defaultValue.length > 1) setCityStatus(true)
if(defaultValue.length > 2) setAreaStatus(true)
if(defaultValue.length > 0) setConfirmBtnStatus(true)
}
}, [defaultValue])
@ -117,7 +122,9 @@ export default memo(({
setList(() => cityList.current)
setCityStatus(true)
getDomDes('#address_tab_1')
setConfirmBtnStatus(false)
} else {
setConfirmBtnStatus(true)
setCityStatus(false)
}
}
@ -131,7 +138,9 @@ export default memo(({
setList(() => areaList.current)
setAreaStatus(true)
getDomDes('#address_tab_2')
setConfirmBtnStatus(false)
} else {
setConfirmBtnStatus(true)
setAreaStatus(false)
}
@ -139,8 +148,20 @@ export default memo(({
//确定按钮
const submitSelect = () => {
addressOnClose?.()
addressOnSelect?.(selectArr)
if(selectStatus) {
if(confirmBtnStatus || selectArr.length == 3) {
addressOnClose?.()
addressOnSelect?.(selectArr)
} else {
Taro.showToast({title:'请选择完整地址',icon:'none'})
}
} else {
addressOnClose?.()
addressOnSelect?.(selectArr)
}
}
//获取省市区宽度