You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
5.2 KiB
206 lines
5.2 KiB
<template> |
|
<view class="body-background"></view> |
|
<u-navbar |
|
:title="title" |
|
:auto-back="true" |
|
left-icon-size="40rpx" |
|
:safe-area-inset-top="true" |
|
:placeholder="true" |
|
bgColor="#fff" |
|
></u-navbar> |
|
<view class="street-container"> |
|
<view class="item" v-for="(item,index) in lists"> |
|
<view class="title-container"> |
|
<view class="title">{{ item.name }}</view> |
|
</view> |
|
<view class="address-container"> |
|
|
|
<view class="address-main"> |
|
<view class="address-icon"> |
|
<u-icon :name="staticImage.map"></u-icon> |
|
</view> |
|
<view class="address"> |
|
{{ item.address }} |
|
</view> |
|
</view> |
|
<view class="button"> |
|
<u-button |
|
:custom-style="{border:'none'}" class="custom-style" size="small" radius="10" color="#178AF2" text="一键导航" @click="callLocation(item)"></u-button> |
|
</view> |
|
</view> |
|
<view class="phone-container"> |
|
<view class="phone-main"> |
|
<view class="phone-icon"> |
|
<u-icon :name="staticImage.phone"></u-icon> |
|
</view> |
|
<view class="phone"> |
|
{{ item.tel }} |
|
</view> |
|
</view> |
|
<view class="button"> |
|
<u-button :custom-style="{border:'none'}" class="custom-style" size="small" radius="10" color="#FF9545" text="一键拨号" @click="callPhone(item.tel)"></u-button> |
|
</view> |
|
</view> |
|
</view> |
|
<u-loadmore :status="status" fontSize="28" marginBottom="50" marginTop="30" @loadmore="getStreetPhoneList()"/> |
|
|
|
</view> |
|
</template> |
|
|
|
<script> |
|
import { |
|
imghost |
|
} from '@/config/host.js' |
|
import MzSubsection from '@/components/MzSubsection/Index.vue'; |
|
import api from '@/utils/functions.js'; |
|
import {streetCallList} from "@/api/other"; |
|
import {lineList} from "@/api/line"; |
|
import {userLineList} from "@/api/user"; |
|
|
|
export default { |
|
components: { |
|
MzSubsection |
|
}, |
|
data() { |
|
return { |
|
list: [{ |
|
name: '最新资讯' |
|
}, { |
|
name: '表彰评优' |
|
}, { |
|
name: '活动回顾' |
|
}], |
|
// 或者如下,也可以配置keyName参数修改对象键名 |
|
// list: [{name: '未付款'}, {name: '待评价'}, {name: '已付款'}], |
|
current: 1, |
|
title: '街道联系方式', |
|
loading: true, |
|
staticImage: { |
|
bg: imghost + '/BG.png', |
|
newIcon: imghost + '/new-icon.png', |
|
map: imghost + '/street-map.png', |
|
phone: imghost + '/street-phone.png', |
|
}, |
|
user: { |
|
avatar: imghost + '/banner.png', |
|
nickname: '清晨的风', |
|
coupons: 221, |
|
id: 88685, |
|
}, |
|
isTop: false, |
|
lists: [], |
|
pages:{ |
|
page:1, |
|
limit:10, |
|
}, |
|
size: { |
|
height: 500, |
|
}, |
|
status:'loadmore', |
|
} |
|
}, |
|
onLoad() { |
|
|
|
}, |
|
computed: { |
|
api() { |
|
return api |
|
}, |
|
sectionStyle() { |
|
const style = {}; |
|
style.padding = '0 26rpx'; |
|
style.position = 'sticky'; |
|
style.zIndex = '9999'; |
|
style.top = api.navHeight().systemBarHeight + 'px' |
|
return style; |
|
}, |
|
listHeight() { |
|
let that = this; |
|
let height; |
|
let info = uni.createSelectorQuery().in(this).select('.subsection'); |
|
info.boundingClientRect(function (data) { |
|
that.size.height = data.height; |
|
}).exec(function (res) { |
|
|
|
}); |
|
// that.size.height = (api.navHeight().windowHeight - height); |
|
} |
|
}, |
|
methods: { |
|
callPhone(phone){ |
|
uni.makePhoneCall({ |
|
phoneNumber: phone?.toString() |
|
}); |
|
}, |
|
callLocation(item){ |
|
uni.openLocation({ |
|
latitude:parseFloat(item.coordinate[1]), |
|
longitude:parseFloat(item.coordinate[0]), |
|
name:item.address, |
|
}) |
|
}, |
|
chatDetail(item) { |
|
wx.navigateTo({ |
|
url: '/pages/ChatDetail/index?id=' + item.id |
|
}); |
|
}, |
|
checkSection(index) { |
|
this.current = index; |
|
}, |
|
scrollToLower() { |
|
|
|
}, |
|
getStreetPhoneList(clear = false) { |
|
if(clear){ |
|
this.status = 'loadmore' |
|
this.pages.page = 1; |
|
this.pages.limit = 10; |
|
this.lists = []; |
|
} |
|
if(this.status === 'nomore'){ |
|
return false; |
|
} |
|
this.status = 'loading'; |
|
streetCallList(this.pages).then(res => { |
|
if(res.data.length === 0){ |
|
this.status = 'nomore'; |
|
}else{ |
|
this.status = 'loadmore'; |
|
} |
|
this.lists.push.apply(this.lists,res.data.map(item => { |
|
item.coordinate = item.coordinate.split(',') |
|
return item; |
|
})) |
|
}).catch(err => { |
|
this.status = 'loadmore'; |
|
}) |
|
|
|
this.pages.page++; |
|
}, |
|
}, |
|
onPageScroll(res) { |
|
if (res.scrollTop <= 20) { |
|
uni.$emit('isTop', true); |
|
} else { |
|
uni.$emit('isTop', false); |
|
} |
|
}, |
|
created() { |
|
// this.listHeight(); |
|
// this.pagePadding = (api.navHeight().navPaddingTop + |
|
// api.navHeight().navHeight + (api.navHeight().headerPadding * 2)) |
|
}, |
|
mounted() { |
|
this.getStreetPhoneList(); |
|
}, |
|
onReachBottom(){ |
|
|
|
console.log('bottom') |
|
this.getStreetPhoneList(); |
|
}, |
|
} |
|
</script> |
|
|
|
<style lang="scss"> |
|
@import './components/index.scss'; |
|
</style> |