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.
 
 
 
 

247 lines
9.2 KiB

<template>
<view>
<view style="position: sticky;top: 0;background-color: #60CA2C;">
<view class="search-container">
<!-- 搜索框 -->
<view class="search-container-bar">
<!-- :cancelText="keyBoardPopup ? '取消' : '搜索'" -->
<uni-search-bar ref="searchBar" style="flex:1;margin-left: 20rpx;" radius="100"
v-model="associativeText" :focus="focus" :placeholder="hotWorld" clearButton="auto"
cancelButton="none" @clear="clear" />
<view v-if="stringIsNotEmpty(associativeText) && associativeText!=page.key" @click="search"
style="margin-right: 10px; padding: 3px 8px; font-size: 18px; color: #fff;">搜索</view>
</view>
</view>
<!-- <view class="search-body">
<view
style="font-size: 26rpx;padding-left: 50rpx;padding-right: 40rpx;padding-top: 10rpx;padding-bottom: 20rpx;color: #FED6B5;">
输入关键字筛选提货点
</view>
</view> -->
</view>
<loading-state ref="pageView" @request="request">
<!-- 搜索联想 -->
<view
style="display: flex;flex-direction: column;background: #FFFFFF;
border-top-left-radius: 30px;border-top-right-radius: 30px; padding:10px 20px;margin-top: 10px;box-sizing: border-box;padding-bottom: 0px;"
v-for="(item,index) in dataList" :key="index">
<!--
<view
style="display: flex;flex-direction: row;width: 100%;box-sizing: border-box;width: 100%;margin-top:10rpx ;align-items: center;">
<image src="../static/address_name.png" style="width: 50rpx;height: 50rpx;flex-shrink: 0;">
</image>
<text
style="font-size: 31.5rpx;margin-left: 18rpx;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;">{{item.name}}
</text>
</view>
<text
style="font-size: 24rpx;color: #999999;margin-top: 6rpx;box-sizing: border-box;width: 100%;display:inline-block;white-space: pre-wrap; word-wrap: break-word;height: auto;">营业时间{{item.businessHours}}</text>
<view style="display: flex;flex-direction: row;margin-top: 22rpx;">
<image v-if="false"
style="width: 120rpx;height: 120rpx;border-radius: 20rpx;flex-shrink: 0;background-color: #fafafa;">
</image>
<view style="display: flex;flex: 1;flex-direction: column;margin-left: 20rpx;margin-top: 10rpx;">
<view style="display: flex;flex-direction: row;">
<image src="../static/address_location.png"
style="width: 16px;height: 16px;flex-shrink: 0;margin-right: 3px;">
</image>
<view style="color: #666666;font-size: 29.5rpx;">{{item.address}}
</view>
</view>
<view style="display: flex;flex-direction: row;margin-top: 22rpx;">
<image src="../static/address_phone.png"
style="width: 16px;height: 16px;margin-right: 3px;flex-shrink: 0;">
</image>
<view style="color: #5259D7;font-size: 29.5rpx;">{{item.phone}}</view>
</view>
</view>
</view>
<view style="display: flex;flex-direction: row;margin-top: 38rpx;border-top: 1rpx #f1f2f3 solid;">
<view style="flex: 1;"></view>
<view class="btn" style="flex-shrink: 0;font-size: 30rpx;color: #191919;"
@click.stop="phone(item.phone)">
<image src="../static/address_phone2.png" style="width: 18px;height: 18px;"></image>
<view style="font-size: 13px;margin-left: 6px;">电话</view>
</view>
<view class="btn" style="flex-shrink: 0;font-size: 30rpx;color: #191919;"
@click.stop="confirm(item)">
<image src="../static/address_confirm.png" style="width: 18px;height: 18px;"></image>
<view style="font-size: 13px;margin-left: 6px;">确定</view>
</view>
</view> -->
<text style="font-size: 18px;font-weight: 600;font-family: sans-serif;color: 333;">{{item.name}}</text>
<view style="display: flex;flex-direction: row;align-items: center;margin-top: 8px;">
<image src="https://nhx.yxtsoft.com/image/date.png" style="width: 20px;height: 20px;">
</image>
<text style="margin-left: 5px;font-size: 12px; color: #999;">营业时间:{{item.businessHours}}</text>
</view>
<view style="display: flex;flex-direction: row;align-items: center;margin-top: 8px;">
<image src="https://nhx.yxtsoft.com/image/location.png" style="width: 20px;height: 20px;">
</image>
<text style="margin-left: 5px;font-size: 12px; color: #999;flex: 1;">门店地址:{{item.address}}</text>
<!-- <image src="https://nhx.yxtsoft.com/image/navigation.png"
style="width: 20px;height: 20px; margin-right: 20px;"></image> -->
</view>
<view style="display: flex;flex-direction: row;margin-top: 38rpx;border-top: 1rpx #f1f2f3 solid; justify-content: space-between;
padding-left: 30px;padding-right:30px;">
<view class="btn" @click.stop="phone(item.phone)">
<image src="https://nhx.yxtsoft.com/image/phone.png"
style="width: 20px;height: 20px;">
</image>
<text style="margin-left: 5px;font-size: 14px; color: #666;">电话咨询</text>
</view>
<view class="btn" @click.stop="confirm(item)">
<image src="https://nhx.yxtsoft.com/image/user.png" style="width: 20px;height: 20px;">
</image>
<text style="margin-left: 5px;font-size: 14px; color: #666;">预约自提</text>
</view>
</view>
</view>
</loading-state>
<view style="height: 20px;"></view>
</view>
</template>
<script>
export default {
data() {
return {
page: {
key: ''
},
associativeText: '',
hotWorld: '输入关键字搜索提货点', // 搜索热词,如果没有输入即回车,则搜索热词,但是不会加入搜索记录
focus: true, // 是否自动聚焦
dataList: []
}
},
created() {
// 首次请求
this.request()
// #ifdef APP-PLUS
uni.onKeyboardHeightChange((res) => {
this.keyBoardPopup = res.height !== 0;
})
// #endif
},
methods: {
search() {
this.page.key = this.associativeText
this.request()
},
phone(num) {
uni.makePhoneCall({
phoneNumber: num
});
},
confirm(item) {
uni.$emit('address', item)
uni.navigateBack()
},
request() {
this.$nextTick(() => {
this.$refs.pageView.setLoadState(0)
})
let _this = this
_this.$api.address({
'name': this.page.key
}).then((resp) => {
_this.dataList = resp
if (resp.length == 0) {
_this.$nextTick(() => {
_this.$refs.pageView.setLoadState(100)
})
} else {
_this.$nextTick(() => {
_this.$refs.pageView.setLoadState(2)
})
}
}).catch(e => {
_this.$nextTick(() => {
_this.$refs.pageView.setLoadState(1)
})
})
},
clear(res) {
this.page.key = ''
this.request()
}
}
}
</script>
<style lang="scss">
uni-page-body,
page {
background: #f3f4f6;
}
.btn {
margin-top: 10px;
border: 1px solid #FEA561;
border-radius: 20px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
padding: 5px 10px;
margin-bottom: 10px;
}
.search-body {
background-color: #FE9039;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
}
@mixin uni-flex {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
}
$search-bar-height: 52px;
$word-container_header-height: 72rpx;
.search-container {
height: $search-bar-height;
@include uni-flex;
flex-direction: column;
justify-content: center;
align-items: center;
position: relative;
background: white;
@at-root {
#{&}-bar {
@include uni-flex;
flex-direction: row;
justify-content: center;
align-items: center;
position: absolute;
top: 0;
left: 0;
right: 0;
background: #60CA2C;
}
}
}
</style>