454 lines
12 KiB
Vue
454 lines
12 KiB
Vue
<template>
|
||
<view class="content">
|
||
<view class="search-box">
|
||
<!-- mSearch组件 如果使用原样式,删除组件元素-->
|
||
<!-- <mSearch class="mSearch-input-box" :mode="2" button="inside" :placeholder="defaultKeyword"
|
||
@search="doSearch(false)" @input="inputChange" @confirm="doSearch(false)" v-model="keyword"></mSearch> -->
|
||
<!-- 原样式 如果使用原样式,恢复下方注销代码 -->
|
||
|
||
<!-- <view class="input-box">
|
||
<input type="text" :adjust-position="true" :placeholder="defaultKeyword" @input="inputChange" v-model="keyword" @confirm="doSearch(false)"
|
||
placeholder-class="placeholder-class" confirm-type="search">
|
||
</view>
|
||
<view class="search-btn" @tap="doSearch(false)">搜索</view> -->
|
||
<u-search style="width: 100%;" placeholder="输入搜索内容" :focus="true" v-model="keyword" :show-action="true"
|
||
:animation="true" shape="square" bg-color="#F7F7F7" color="#1A1A1A" action-text="取消" @custom="goBack()"
|
||
@search="doSearch(false)"></u-search>
|
||
<!-- 原样式 end -->
|
||
</view>
|
||
<view class="search-keyword">
|
||
<scroll-view class="keyword-list-box" v-show="isShowKeywordList" scroll-y>
|
||
<view class="margin-lr-sm padding-bottom">
|
||
<view class="flex justify-between margin-bottom padding-sm radius"
|
||
v-for="(item, index) in keywordList" :key="index" @click="goOrder(item)">
|
||
<!-- <image :src="item.headImg?item.headImg: '../../../static/logo.png'"
|
||
style="width: 220rpx;height: 200rpx;border-radius: 10rpx;"></image> -->
|
||
<view style="width: 300upx;height: 260upx;border-radius: 10rpx;">
|
||
<image :src="item.headImg?item.headImg: '../../static/logo.png'"
|
||
style="width: 300upx;height: 260upx;" mode="aspectFit"></image>
|
||
</view>
|
||
<view class=" margin-left-sm text-white flex flex-direction justify-between" style="width: 50%;">
|
||
<view class="flex">
|
||
<view v-if="item.authentication == 2">
|
||
<image src="../../../static/images/qi.png" style="width: 35rpx;height: 35rpx;"></image>
|
||
|
||
</view>
|
||
<view class="" v-if="item.authentication == 1">
|
||
<image src="../../../static/images/geren.png" style="width: 35rpx;height: 35rpx;"></image>
|
||
</view>
|
||
<view class="margin-right-xs text-df margin-left-xs"
|
||
style="margin-top: -2px;display: inline-block;width: 320upx; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">
|
||
{{item.myLevel}}
|
||
</view>
|
||
</view>
|
||
<view style="color: #999999;" v-if="item.authentication == 1">
|
||
<text v-if="item.sex == 1">女</text>
|
||
<text v-if="item.sex == 0">男</text>
|
||
/<text>{{age}}岁</text>
|
||
/<text>{{item.orderLevel}}</text>
|
||
/<text >{{item.region}}</text>
|
||
|
||
</view>
|
||
<view style="color: #999999;" v-if="item.authentication == 2">
|
||
<text>{{item.name}}</text>
|
||
|
||
</view>
|
||
<view class="flex flex-wrap">
|
||
<text class=" box" v-for="(item,index) in item.gameName"
|
||
:key="index" style="margin-right: 5rpx;">{{item}}</text>
|
||
</view>
|
||
<!-- <view class="flex" style="align-items: center;font-size: 24rpx;" v-if="item.salesNum">
|
||
<view style="color: #999999;background: #F2F2F2; padding: 5rpx 10rpx;">已售{{item.salesNum}}
|
||
</view>
|
||
</view> -->
|
||
<view style="width: 100%;display: flex;justify-content: space-between;align-items: center;">
|
||
<view style="color:#FF1200;font-size: 31rpx;">
|
||
¥{{item.oldMoney}}/月
|
||
</view>
|
||
<!-- <view style="background: #005DFF;color: #ffffff;padding: 15rpx 25rpx;border-radius: 8rpx;">
|
||
预约服务
|
||
</view> -->
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- <view v-if="keywordList.length == 0">
|
||
暂无数据
|
||
</view> -->
|
||
<empty v-if="keywordList.length == 0"></empty>
|
||
</scroll-view>
|
||
<scroll-view class="keyword-box" v-show="!isShowKeywordList" scroll-y>
|
||
<view class="keyword-block">
|
||
<view class="keyword-list-header">
|
||
<view>热门搜索</view>
|
||
<view>
|
||
<image @tap="hotToggle" :src="'/static/images/index/attention'+forbid+'.png'"></image>
|
||
</view>
|
||
</view>
|
||
<view class="keyword" v-if="forbid==''">
|
||
<view v-for="(keyword,index) in hotKeywordList" @tap="doSearch(keyword)" :key="index">
|
||
{{keyword}}
|
||
</view>
|
||
</view>
|
||
<view class="hide-hot-tis" v-else>
|
||
<view>当前搜热已隐藏</view>
|
||
</view>
|
||
</view>
|
||
<view class="keyword-block" v-if="oldKeywordList.length>0">
|
||
<view class="keyword-list-header">
|
||
<view>历史记录</view>
|
||
<view>
|
||
<image @tap="oldDelete" src="/static/images/index/delete.png"></image>
|
||
</view>
|
||
</view>
|
||
<view class="keyword">
|
||
<view v-for="(keyword,index) in oldKeywordList" @tap="doSearch(keyword)" :key="index">
|
||
{{keyword}}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</scroll-view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import empty from '@/components/empty.vue'
|
||
export default {
|
||
components: {
|
||
empty
|
||
},
|
||
data() {
|
||
return {
|
||
defaultKeyword: "",
|
||
keyword: "",
|
||
oldKeywordList: [], //历史记录
|
||
hotKeywordList: [], //热搜
|
||
keywordList: [], //搜索列表
|
||
forbid: '',
|
||
isShowKeywordList: false,
|
||
limit: 10,
|
||
page: 1,
|
||
userId: '',
|
||
isVip: false,
|
||
age: 0,
|
||
birthDate: ''
|
||
}
|
||
},
|
||
onLoad() {
|
||
this.userId = uni.getStorageSync('userId')
|
||
if (this.userId) {
|
||
this.getSearchList()
|
||
}
|
||
this.isVip = uni.getStorageSync('isVIP')
|
||
|
||
},
|
||
methods: {
|
||
//换算年龄
|
||
getAge(e) {
|
||
console.log('出生日期:' + e)
|
||
this.birthDate = e
|
||
//创建系统日期
|
||
var today = new Date();
|
||
//把出生日期转换成日期
|
||
this.birthDate = new Date(this.birthDate);
|
||
//分别获取到年份后相减
|
||
this.age = today.getFullYear() - this.birthDate.getFullYear();
|
||
// console.log(this.age+'当前年龄')
|
||
},
|
||
// 获取搜索历史
|
||
getSearchList() {
|
||
this.$Request.get("/app/Search/selectAppSearchNum").then(res => {
|
||
console.log(res)
|
||
if (res.code == 0) {
|
||
this.oldKeywordList = res.data.userSearchName
|
||
// for (let i = 0; i < this.oldKeywordList.length; i++) {
|
||
// this.oldKeywordList[i].gameName = this.oldKeywordList[i].gameName.split(",");
|
||
// }
|
||
this.hotKeywordList = res.data.allSerchName
|
||
|
||
|
||
}
|
||
});
|
||
},
|
||
//清除历史搜索
|
||
oldDelete() {
|
||
uni.showModal({
|
||
content: '确定清除历史搜索记录?',
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
console.log('用户点击确定');
|
||
this.$Request.get("/app/Search/deleteAppSearch").then(res => {
|
||
if (res.code == 0) {
|
||
this.getSearchList()
|
||
}
|
||
})
|
||
} else if (res.cancel) {
|
||
console.log('用户点击取消');
|
||
}
|
||
}
|
||
});
|
||
},
|
||
//执行搜索
|
||
doSearch(keyword) {
|
||
this.keyword = keyword === false ? this.keyword : keyword;
|
||
this.isShowKeywordList = true;
|
||
if (!this.keyword) {
|
||
uni.showToast({
|
||
title: '请输入内容',
|
||
icon: 'none',
|
||
duration: 1000
|
||
})
|
||
return
|
||
}
|
||
|
||
let data = {
|
||
like: this.keyword,
|
||
limit: this.limit,
|
||
page: this.page,
|
||
}
|
||
if (this.userId) {
|
||
this.$Request.get("/app/orderTaking/queryTaking", data).then(res => {
|
||
if (res.code == 0) {
|
||
if (this.page == 1) this.keywordList = [];
|
||
this.keywordList = [...this.keywordList, ...res.data.list]
|
||
for (let i = 0; i < this.keywordList.length; i++) {
|
||
this.keywordList[i].gameName = this.keywordList[i].gameName.split(",");
|
||
this.getAge(this.keywordList[i].birthdate)
|
||
// this.keywordList[i].region = this.keywordList[i].region.split(",");
|
||
if(this.keywordList[i].region){
|
||
let region=this.keywordList[i].region.split(",");
|
||
this.keywordList[i].region = region[1]
|
||
}else{
|
||
this.keywordList[i].region='不限地区'
|
||
}
|
||
}
|
||
}
|
||
});
|
||
} else {
|
||
this.$Request.get("/app/orderTaking/queryTakings", data).then(res => {
|
||
if (res.code == 0) {
|
||
if (this.page == 1) this.keywordList = [];
|
||
this.keywordList = [...this.keywordList, ...res.data.list]
|
||
for (let i = 0; i < this.keywordList.length; i++) {
|
||
this.keywordList[i].gameName = this.keywordList[i].gameName.split(",");
|
||
this.getAge(this.keywordList[i].birthdate)
|
||
// this.keywordList[i].region = this.keywordList[i].region.split(",");
|
||
if(this.keywordList[i].region){
|
||
let region=this.keywordList[i].region.split(",");
|
||
this.keywordList[i].region = region[1]
|
||
}else{
|
||
this.keywordList[i].region='不限地区'
|
||
}
|
||
}
|
||
}
|
||
});
|
||
}
|
||
},
|
||
// 点击取消返回首页
|
||
goBack() {
|
||
uni.navigateBack()
|
||
},
|
||
//热门搜索开关
|
||
hotToggle() {
|
||
this.forbid = this.forbid ? '' : '_forbid';
|
||
},
|
||
// 跳转订单
|
||
goOrder(e) {
|
||
if (this.userId) {
|
||
uni.navigateTo({
|
||
url: '/pages/index/game/order?id=' + e.id
|
||
});
|
||
} else {
|
||
uni.navigateTo({
|
||
url: '/pages/public/login'
|
||
});
|
||
}
|
||
},
|
||
|
||
},
|
||
onReachBottom: function() {
|
||
this.page = this.page + 1;
|
||
this.doSearch(false);
|
||
},
|
||
onPullDownRefresh: function() {
|
||
this.page = 1;
|
||
this.doSearch(false);
|
||
},
|
||
}
|
||
</script>
|
||
<style>
|
||
page {
|
||
background-color: #F7F7F7;
|
||
}
|
||
|
||
.bg {
|
||
background-color: #FFFFFF;
|
||
}
|
||
|
||
.search-box {
|
||
width: 100%;
|
||
/* background-color: rgb(242, 242, 242); */
|
||
padding: 15upx 2.5%;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
position: sticky;
|
||
top: 0;
|
||
background-color: #FFFFFF;
|
||
}
|
||
|
||
.search-box .mSearch-input-box {
|
||
width: 100%;
|
||
}
|
||
|
||
.search-box .input-box {
|
||
width: 85%;
|
||
flex-shrink: 1;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
|
||
.search-box .search-btn {
|
||
width: 15%;
|
||
margin: 0 0 0 2%;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
flex-shrink: 0;
|
||
font-size: 28upx;
|
||
color: #fff;
|
||
background: linear-gradient(to right, #ff9801, #ff570a);
|
||
border-radius: 60upx;
|
||
}
|
||
|
||
.search-box .input-box>input {
|
||
width: 100%;
|
||
height: 60upx;
|
||
font-size: 32upx;
|
||
border: 0;
|
||
border-radius: 60upx;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
appearance: none;
|
||
padding: 0 3%;
|
||
margin: 0;
|
||
background-color: #ffffff;
|
||
}
|
||
|
||
.placeholder-class {
|
||
color: #9e9e9e;
|
||
}
|
||
|
||
.search-keyword {
|
||
width: 100%;
|
||
background-color: #FFFFFF;
|
||
}
|
||
|
||
.keyword-list-box {
|
||
height: calc(100vh - 110upx);
|
||
padding-top: 10upx;
|
||
/* border-radius: 20upx 20upx 0 0; */
|
||
/* background-color: #fff; */
|
||
}
|
||
|
||
.keyword-entry-tap {
|
||
background-color: #eee;
|
||
}
|
||
|
||
.keyword-entry {
|
||
width: 94%;
|
||
height: 80upx;
|
||
margin: 0 3%;
|
||
font-size: 30upx;
|
||
color: #333;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
border-bottom: solid 1upx #e7e7e7;
|
||
}
|
||
|
||
.keyword-entry image {
|
||
width: 60upx;
|
||
height: 60upx;
|
||
}
|
||
|
||
.keyword-entry .keyword-text,
|
||
.keyword-entry .keyword-img {
|
||
height: 80upx;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.keyword-entry .keyword-text {
|
||
width: 90%;
|
||
}
|
||
|
||
.keyword-entry .keyword-img {
|
||
width: 10%;
|
||
justify-content: center;
|
||
}
|
||
|
||
.keyword-box {
|
||
height: calc(100vh - 110upx);
|
||
/* border-radius: 20upx 20upx 0 0; */
|
||
background-color: #F7F7F7;
|
||
}
|
||
|
||
.keyword-box .keyword-block {
|
||
padding: 10upx 0;
|
||
}
|
||
|
||
.keyword-box .keyword-block .keyword-list-header {
|
||
width: 94%;
|
||
padding: 10upx 3%;
|
||
font-size: 27upx;
|
||
font-weight: 700;
|
||
/* color: #FFFFFF; */
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.keyword-box .keyword-block .keyword-list-header image {
|
||
width: 40upx;
|
||
height: 40upx;
|
||
}
|
||
|
||
.keyword-box .keyword-block .keyword {
|
||
width: 94%;
|
||
padding: 3px 3%;
|
||
display: flex;
|
||
flex-flow: wrap;
|
||
justify-content: flex-start;
|
||
}
|
||
|
||
.keyword-box .keyword-block .hide-hot-tis {
|
||
display: flex;
|
||
justify-content: center;
|
||
font-size: 28upx;
|
||
color: #FFFFFF;
|
||
}
|
||
|
||
.keyword-box .keyword-block .keyword>view {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
border-radius: 10upx;
|
||
padding: 0 20upx;
|
||
margin: 10upx 20upx 10upx 0;
|
||
height: 60upx;
|
||
font-size: 28upx;
|
||
background-color: #FFFFFF;
|
||
color: #343546;
|
||
}
|
||
.box {
|
||
border: 1rpx solid #005dff;
|
||
color: #005DFF;
|
||
padding: 5rpx 15rpx;
|
||
font-size: 22rpx;
|
||
letter-spacing: 2rpx;
|
||
border-radius: 8rpx;
|
||
margin-bottom: 2rpx;
|
||
}
|
||
</style>
|