Files
砂糖 8015759c65 init
2026-02-07 18:01:13 +08:00

213 lines
4.8 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="container">
<view class="search-wrapper">
<view class="search-input">
<view class="search-input-wrapper">
<view class="left">
<text class="search-icon iconfont icon-sousuo"></text>
</view>
<view class="right">
<input v-model="searchValue" class="input" placeholder="请输入店铺关键字" type="text"></input>
</view>
</view>
</view>
<view class="search-button">
<button class="button" @click="doSearch" type="warn"> 搜索 </button>
</view>
</view>
<view class="store-list">
<view class="store-info" v-for="(item, index) in storeList" :key="index" @click="handleQuick(item.id)">
<view class="base-info">
<view class="name">{{ item.name }}</view>
<view class="hours">营业时间{{ item.hours }}</view>
<view class="address"><text class="location-icon iconfont icon-dingwei"></text>{{ item.address }}</view>
<view class="tel">联系电话{{ item.phone }}</view>
</view>
<view class="loc-info">
<text class="dis"><text class="distance">{{ parseFloat(item.distance).toFixed(1) }}</text>公里</text>
</view>
</view>
</view>
<empty v-if="!storeList.length" :isLoading="isLoading" :custom-style="{ padding: '180rpx 50rpx' }" tips="暂无店铺~">
</empty>
</view>
</template>
<script>
import * as settingApi from '@/api/setting'
import * as userApi from '@/api/user'
import Empty from '@/components/empty'
export default {
components: {
Empty
},
data() {
return {
storeId: 0,
searchValue: '',
storeList: []
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.storeId = this.getStoreId()
this.getStoreList()
},
methods: {
/**
* 获取店铺列表
* */
getStoreList() {
const app = this
settingApi.storeList(app.searchValue)
.then(result => {
app.storeList = result.data.data
})
},
/**
* 获取历史店铺
*/
getStoreId() {
return uni.getStorageSync("storeId")
},
/**
* 搜索提交
*/
doSearch() {
this.getStoreList()
},
/**
* 跳转回去
*/
handleQuick(storeId) {
const app = this
userApi.defaultStore(storeId)
.then(result => {
uni.setStorageSync("storeId", storeId);
// 刷新相关页面数据
uni.setStorageSync("reflashHomeData", true);
uni.navigateBack();
})
}
}
}
</script>
<style lang="scss" scoped>
.container {
padding: 20rpx;
min-height: 100vh;
background: #f7f7f7;
}
.search-wrapper {
display: flex;
height: 78rpx;
}
// 搜索输入框
.search-input {
width: 80%;
background: #fff;
border-radius: 50rpx 0 0 50rpx;
box-sizing: border-box;
overflow: hidden;
border: solid 1px #cccccc;
.search-input-wrapper {
display: flex;
.left {
display: flex;
width: 60rpx;
justify-content: center;
align-items: center;
.search-icon {
display: block;
color: #666666;
font-size: 30rpx;
font-weight: bold;
}
}
.right {
flex: 1;
input {
font-size: 28rpx;
height: 78rpx;
line-height: 78rpx;
.input-placeholder {
color: #aba9a9;
}
}
}
}
}
// 搜索按钮
.search-button {
width: 20%;
box-sizing: border-box;
.button {
line-height: 78rpx;
height: 78rpx;
font-size: 28rpx;
border-radius: 0 20px 20px 0;
background: $fuint-theme;
}
}
// 店铺列表
.store-list {
.store-info {
padding: 10px 0;
overflow: hidden;
border: 2rpx solid #cccccc;
min-height: 240rpx;
border-radius: 5rpx;
margin-top: 10rpx;
margin-bottom: 10rpx;
padding: 30rpx;
background: #FFFFFF;
.base-info {
float: left;
width: 70%;
.name {
font-size: 34rpx;
font-weight: bold;
margin-top: 15rpx;
margin-bottom: 12rpx;
color: #666;
}
.location-icon {
color: #f03c3c;
font-weight: bold;
}
}
.loc-info {
color: #666666;
dispaly:flex;
line-height: 240rpx;
float: left;
overflow: hidden;
width: 30%;
text-align: right;
.distance {
font-weight: bold;
color: #f03c3c;
}
}
}
}
</style>