Merge branch 'dev' of http://git.online.zzfzyc.com/mp/EShop into dev
This commit is contained in:
commit
6bf2fc3391
@ -14,7 +14,7 @@
|
|||||||
padding: 30px 0;
|
padding: 30px 0;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
font-size: $font_size_medium;
|
font-size: $font_size_medium;
|
||||||
border-bottom: 1px solid $color_font_two;
|
border-bottom: 1px solid #eaeaea;
|
||||||
color: $color_font_two;
|
color: $color_font_two;
|
||||||
position: relative;
|
position: relative;
|
||||||
.address_item{
|
.address_item{
|
||||||
|
@ -7,78 +7,76 @@ import Taro from "@tarojs/taro";
|
|||||||
import { GetAddressListApi } from "@/api/addressList";
|
import { GetAddressListApi } from "@/api/addressList";
|
||||||
|
|
||||||
|
|
||||||
|
type DefaultValueParm = {name?: string, id?:string|number}
|
||||||
|
|
||||||
type Params = {
|
type Params = {
|
||||||
addressOnSelect?: ({}:{name: string, id:string|number}) => void,
|
addressOnSelect?: (val:DefaultValueParm[]) => void,
|
||||||
addressOnClose?: () => void,
|
addressOnClose?: () => void,
|
||||||
show?: true|false
|
show?: true|false,
|
||||||
|
defaultValue?:DefaultValueParm[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type AddresParam = {
|
||||||
|
ad_code?: string,
|
||||||
|
id?: number,
|
||||||
|
level?: number,
|
||||||
|
level_name?: string,
|
||||||
|
name?: string,
|
||||||
|
parent_id?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export default memo(({
|
export default memo(({
|
||||||
addressOnSelect,
|
addressOnSelect,
|
||||||
addressOnClose,
|
addressOnClose,
|
||||||
show = false
|
show = false,
|
||||||
|
defaultValue = []
|
||||||
}: Params) => {
|
}: Params) => {
|
||||||
|
//省
|
||||||
//获取地址
|
const provinceList = useRef<AddresParam[]>([])
|
||||||
const {fetchData} = GetAddressListApi()
|
//市
|
||||||
useEffect(() => {
|
const cityList = useRef<AddresParam[]>([])
|
||||||
getAddressList()
|
//区
|
||||||
setList(provinceList)
|
const areaList = useRef<AddresParam[]>([])
|
||||||
}, [])
|
|
||||||
|
|
||||||
const condition = useRef({parent_id:1})
|
|
||||||
const getAddressList = async () => {
|
|
||||||
let res = await fetchData(condition.current)
|
|
||||||
const lists = res.data.list||[]
|
|
||||||
if(selectIndex == 0) {
|
|
||||||
setProvinceList(lists)
|
|
||||||
} else if(selectIndex == 1) {
|
|
||||||
setCityList(lists)
|
|
||||||
} else {
|
|
||||||
setAreaList(lists)
|
|
||||||
}
|
|
||||||
setList(lists)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
type AddresParam = {
|
|
||||||
ad_code?: string,
|
|
||||||
id?: number,
|
|
||||||
level?: number,
|
|
||||||
level_name?: string,
|
|
||||||
name?: string,
|
|
||||||
parent_id?: number
|
|
||||||
}
|
|
||||||
//省
|
|
||||||
const [provinceList, setProvinceList] = useState<AddresParam[]>([])
|
|
||||||
//市
|
|
||||||
const [cityList, setCityList] = useState<AddresParam[]>([])
|
|
||||||
//区
|
|
||||||
const [areaList, setAreaList] = useState<AddresParam[]>([])
|
|
||||||
|
|
||||||
|
|
||||||
const [list, setList] = useState<AddresParam[]>([])
|
const [list, setList] = useState<AddresParam[]>([])
|
||||||
const [selectIndex, setSelectIndex] = useState(0) //0 省, 1 市,2 区
|
const [selectIndex, setSelectIndex] = useState(0) //0 省, 1 市,2 区
|
||||||
const [selectId, setSelectId] = useState(0) //选中的id
|
const [selectId, setSelectId] = useState(1) //选中的id
|
||||||
const [selectArr, setSelectArr] = useState<any>([]) //选中的省市区
|
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 [bottomStyle, setBottomStyle] = useState({width:'100rpx',left:'0rpx'}) //底部滚动条样式
|
const [bottomStyle, setBottomStyle] = useState({width:'100rpx',left:'0rpx'}) //底部滚动条样式
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if(selectArr.length == 0) {
|
||||||
|
setSelectArr(defaultValue)
|
||||||
|
if(defaultValue.length > 1) setCityStatus(true)
|
||||||
|
if(defaultValue.length > 2) setAreaStatus(true)
|
||||||
|
}
|
||||||
|
}, [defaultValue])
|
||||||
|
|
||||||
|
|
||||||
|
//获取地址
|
||||||
|
const {fetchData} = GetAddressListApi()
|
||||||
|
useEffect(() => {
|
||||||
|
getProvince()
|
||||||
|
}, [])
|
||||||
|
|
||||||
//选中内容
|
//选中内容
|
||||||
const selectItem = (item) => {
|
const selectItem = (item) => {
|
||||||
setSelectId(item.id)
|
setSelectId(item.id)
|
||||||
if(selectIndex == 0) {
|
if(selectIndex == 0) {
|
||||||
setSelectArr([item])
|
setSelectArr([{name:item.name, id:item.id}])
|
||||||
getCity()
|
getCity(item.id)
|
||||||
setAreaStatus(false)
|
setAreaStatus(false)
|
||||||
setCityStatus(false)
|
setCityStatus(false)
|
||||||
} else if(selectIndex == 1){
|
} else if(selectIndex == 1){
|
||||||
setSelectArr([selectArr[0], item])
|
setSelectArr([selectArr[0], {name:item.name, id:item.id}])
|
||||||
area()
|
area(item.id)
|
||||||
} else {
|
} else {
|
||||||
setSelectArr([selectArr[0], selectArr[1], item])
|
setSelectArr([selectArr[0], selectArr[1], {name:item.name, id:item.id}])
|
||||||
|
getDomDes('#address_tab_2')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,24 +84,37 @@ export default memo(({
|
|||||||
const onSelectIndex = (index) => {
|
const onSelectIndex = (index) => {
|
||||||
setSelectIndex(index)
|
setSelectIndex(index)
|
||||||
const selectid = selectArr[index]?selectArr[index].id:0
|
const selectid = selectArr[index]?selectArr[index].id:0
|
||||||
setSelectId(selectid)
|
setSelectId(selectid as number)
|
||||||
|
if(index == 0) {
|
||||||
|
getProvince()
|
||||||
|
} else if (index == 1) {
|
||||||
|
const id = selectArr[0]?.id
|
||||||
|
getCity(id)
|
||||||
|
} else {
|
||||||
|
const id = selectArr[1]?.id
|
||||||
|
area(id)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if(selectIndex == 0) {
|
//获取省
|
||||||
setList(provinceList)
|
const getProvince = async () => {
|
||||||
} else if (selectIndex == 1) {
|
let res = await fetchData({parent_id: 1})
|
||||||
getCity()
|
provinceList.current = res.data.list||[]
|
||||||
} else {
|
if(provinceList.current.length > 0) {
|
||||||
area()
|
setSelectIndex(0)
|
||||||
|
setList(() => provinceList.current)
|
||||||
|
getDomDes('#address_tab_0')
|
||||||
}
|
}
|
||||||
}, [selectIndex])
|
}
|
||||||
|
|
||||||
//获取市
|
//获取市
|
||||||
const getCity = async () => {
|
const getCity = async (id) => {
|
||||||
await getAddressList()
|
let res = await fetchData({parent_id: id})
|
||||||
if(cityList.length > 0) {
|
cityList.current = res.data.list||[]
|
||||||
|
if(cityList.current.length > 0) {
|
||||||
setSelectIndex(1)
|
setSelectIndex(1)
|
||||||
|
setList(() => cityList.current)
|
||||||
setCityStatus(true)
|
setCityStatus(true)
|
||||||
getDomDes('#address_tab_1')
|
getDomDes('#address_tab_1')
|
||||||
} else {
|
} else {
|
||||||
@ -112,16 +123,18 @@ export default memo(({
|
|||||||
}
|
}
|
||||||
|
|
||||||
//获取区
|
//获取区
|
||||||
const area = () => {
|
const area = async (id) => {
|
||||||
setTimeout(() => {
|
let res = await fetchData({parent_id: id})
|
||||||
if(areaList.length > 0) {
|
areaList.current = res.data.list||[]
|
||||||
setSelectIndex(2)
|
if(areaList.current.length > 0) {
|
||||||
setAreaStatus(true)
|
setSelectIndex(2)
|
||||||
getDomDes('#address_tab_2')
|
setList(() => areaList.current)
|
||||||
} else {
|
setAreaStatus(true)
|
||||||
setAreaStatus(false)
|
getDomDes('#address_tab_2')
|
||||||
}
|
} else {
|
||||||
},10)
|
setAreaStatus(false)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//确定按钮
|
//确定按钮
|
||||||
@ -132,17 +145,19 @@ export default memo(({
|
|||||||
|
|
||||||
//获取省市区宽度
|
//获取省市区宽度
|
||||||
const getDomDes = (id) => {
|
const getDomDes = (id) => {
|
||||||
Taro.nextTick(() => {
|
|
||||||
|
setTimeout(() => {
|
||||||
let query = Taro.createSelectorQuery();
|
let query = Taro.createSelectorQuery();
|
||||||
query.select(id).boundingClientRect(rect=>{
|
query.select(id).boundingClientRect(rect=>{
|
||||||
let left = rect.left;
|
let left = rect.left;
|
||||||
let clientWidth = rect.width;
|
let clientWidth = rect.width;
|
||||||
|
console.log(clientWidth)
|
||||||
setBottomStyle({
|
setBottomStyle({
|
||||||
width: clientWidth + 'px',
|
width: clientWidth + 'px',
|
||||||
left: left + 'px'
|
left: left + 'px'
|
||||||
})
|
})
|
||||||
}).exec();
|
}).exec();
|
||||||
})
|
}, 100)
|
||||||
}
|
}
|
||||||
|
|
||||||
//点击标题栏
|
//点击标题栏
|
||||||
|
@ -88,7 +88,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 addressOnClose={()=>setShowSiteModal(false)} show={showSiteModal}/>
|
<Address addressOnSelect={(e) => console.log('地址::',e)} defaultValue={[{name: "广东省", id: 193}, {name: "佛山市", id: 202}, {name: "高明区", id: 204}]} addressOnClose={()=>setShowSiteModal(false)} show={showSiteModal}/>
|
||||||
</View>
|
</View>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user