优化地址选择

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