
1 changed files with 211 additions and 0 deletions
@ -0,0 +1,211 @@ |
|||
<template> |
|||
<view> |
|||
<view style="position: sticky;top: 0;background-color: #FFFFFF;"> |
|||
<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;font-size: 13px;">搜索</view> |
|||
</view> |
|||
</view> |
|||
<view class="search-body"> |
|||
<view |
|||
style="font-size: 26rpx;padding-left: 40rpx;padding-right: 40rpx;padding-top: 10rpx;padding-bottom: 20rpx;color: steelblue;"> |
|||
输入关键字筛选提货点 |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<loading-state ref="pageView" @request="request"> |
|||
<!-- 搜索联想 --> |
|||
<view |
|||
style="display: flex;flex-direction: column;background: #FFFFFF;border-radius: 30rpx;padding: 20rpx;box-sizing: border-box;margin: 20rpx;width: calc(100% - 40rpx);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> |
|||
|
|||
</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.sid) |
|||
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 { |
|||
display: flex; |
|||
flex-direction: row; |
|||
padding: 10px; |
|||
align-items: center; |
|||
} |
|||
|
|||
.search-body { |
|||
background-color: #ffffff; |
|||
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: white; |
|||
} |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue