H5-ThreeDoorder/pages/film/filmSearch.vue

456 lines
8.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>
<div class="wrapper" :style="'top:'+statusBarHeight+'px'">
<div class="header">
<view class="back_div">
<image class="back_img" @click="back_city()" src="https://img.agrimedia.cn/chwl%2Fv2%2Fsearch.png" mode=""></image>
</view>
<view class="input-wrap">
<input :class="inputActive? 'input':'input inputActive'" @input="onInput" :placeholder="type == 0? '搜索电影名':'搜索电影院'" v-model="searchValue" />
<view class="cancel">
<text v-show="searchValue" @click="searchValue = ''">清空</text>
<text v-show="!searchValue" @click="cancels">取消</text>
</view>
</view>
</div>
<scroll-view class="calendar-list" scroll-y="true" :scroll-into-view="scrollIntoId">
<!-- 搜索结果 -->
<!-- 电影组件 -->
<view class="city-div" v-for="(item, index) in searchList" :key="index" v-if="type == 0">
<film-item :data="item" :key="index"></film-item>
</view>
<!-- 影院组件 -->
<view class="city-div" v-for="(item, index) in searchList" :key="index" v-if="type == 1">
<movies-item :data="item" :key="index" :isFilm='true'></movies-item>
</view>
</scroll-view>
</div>
</template>
<script>
import MoviesItem from '@/components/movies-item/movies-item.vue';
import { getFilmList, getFilmYuan } from '@/request/film/index.js';
import { mapGetters, mapMutations } from 'vuex';
export default {
components: {},
props: {},
data() {
return {
type: 0,
statusBarHeight: this.statusBarHeight,
ImgUrl: this.ImgUrl,
letter: [],
selectLetter: '',
searchValue: '',
scrollIntoId: '',
list: [],
tId: null,
searchList: [],
showMask: false,
disdingwei: true,
position: '',
seconds: 3,
citys:[],
hotCity:[],
inputActive: true,
listYuan: []
}
},
onLoad(option) {
this.type = option.type;
},
computed: {
...mapGetters({
// 获取用户自主改变的地址
UserArae1: 'GetUserArae',
// 获取用户自主选择的电影城市信息
UserFilmArae: 'GetFilmData',
// 获取用户设备定位的地址
UserArae2: 'GetcityInfor',
}),
},
watch: {
UserFilmArae(val) {
this.getYuanData()
},
},
created() {
if (this.type == 0) {
getFilmList().then(data=>{
this.citys = data.data;
})
} else {
this.getYuanData();
}
},
methods: {
...mapMutations({
SETFILMDATA: 'SETFILMDATA',
}),
/**
* @获取电影院
* */
getYuanData() {
const params = {
cityId: this.UserFilmArae.cityId,
regionId: this.UserFilmArae.regionId
}
getFilmYuan(params).then((res) => {
this.citys = res.data;
});
},
getId(index) {
return this.letter[index];
},
// 遍历搜索
query(source, text) {
let res = [];
var self = this;
let resultList = [];
if (this.type == 0) {
source.forEach((item) => {
if (item.movieName.indexOf(text) > -1) {
resultList.push(item);
}
});
} else {
source.forEach((item) => {
if (item.cinemaName.indexOf(text) > -1) {
resultList.push(item);
}
});
}
return resultList
},
cancels() {
uni.navigateBack({
delta: 1
});
},
isString(obj) {
return typeof obj === 'string';
},
onInput(e) {
const value = e.target.value;
if (value !== '' && this.citys && this.citys.length > 0) {
const queryData = this.query(this.citys, String(value).trim());
this.searchList = queryData;
this.disdingwei = false;
this.inputActive = false;
} else {
this.searchList = [];
this.disdingwei = true;
this.inputActive = true;
}
}
},
back_city(item, ind) {
console.log(item, ind)
if (item) {
const FilmCity = {
cityId: item.cityId,
cityName: item.cityName
}
//unshift 把数据插入到首位与push相反
if(this.Visit == null){
this.Visit = []
}
this.Visit.unshift(FilmCity)
this.searchValue = "";
this.disdingwei = true
var arr = this.Visit
//数组去重
function distinct(arr) {
let newArr = []
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) < 0) {
newArr.push(arr[i])
}
}
return newArr
}
this.Visit = distinct(arr)
console.log(this.Visit, "---最近访问")
uni.setStorage({
key: 'Visit_key',
data: this.Visit
});
this.SETFILMDATA(FilmCity);
// 保存之后退页
uni.navigateBack({
delta: 1
});
}
}
}
</script>
<style lang="scss" scoped>
.wrapper {
position: fixed;
z-index: 999999;
background: #F5F5F5;
height: 100%;
width: 100%;
top: 0px;
left: 0px;
}
.mask {
position: absolute;
bottom: 0upx;
top: 83upx;
left: 0upx;
right: 0upx;
width: 750upx;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0);
}
.mask-r {
height: 120upx;
width: 120upx;
border-radius: 60upx;
display: flex;
background: rgba(0, 0, 0, 0.5);
justify-content: center;
align-items: center;
font-size: 40upx;
color: #FFFFFF
}
.content {
height: 100%;
width: 100%;
background-color: #ffffff;
}
.header {
height: 85upx;
display: flex;
justify-content: flex-start;
align-items: center;
display: flex;
margin: 20rpx 0rpx;
}
.back_div {
width: 35rpx;
height: 35rpx;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 44rpx;
left: 70rpx;
}
.input-wrap {
width: 100%;
display: flex;
align-items: center;
box-sizing: border-box;
padding: 0rpx 40rpx;
.cancel {
color: #666666;
font-size: 28rpx;
line-height: 88rpx;
padding-left: 20rpx;
}
}
.back_img {
width: 35rpx;
height: 35rpx;
}
.input {
font-size: 24upx;
height: 88rpx;
line-height: 88rpx;
border-radius: 44rpx;
background-color: #EDEDED;
padding-left: 20upx;
padding-right: 20upx;
box-sizing: border-box;
text-align: left;
margin: 0 auto;
color: #333333;
padding-left: 80rpx;
flex: 1;
}
.inputActive {
text-align: left !important;
}
.title {
font-size: 30upx;
color: white;
}
.show {
left: 0;
width: 100%;
transition: left 0.3s ease;
}
.hide {
left: 100%;
width: 100%;
transition: left 0.3s ease;
}
.title {
font-size: 30upx;
color: white;
}
.calendar-list {
position: absolute;
top: 120rpx;
bottom: 0upx;
width: 100%;
}
.letters {
position: absolute;
right: 30upx;
bottom: 0px;
width: 50upx;
top: 260upx;
color: #2f9bfe;
text-align: center;
font-size: 24upx;
}
.letters-item {
margin-bottom: 5upx;
color: #666666;
}
.letter-header {
height: 45upx;
font-size: 22upx;
color: #333333;
padding-left: 24upx;
box-sizing: border-box;
display: flex;
align-items: center;
/* background-color: #ebedef; */
}
.city-div {
width: 100%;
padding: 0rpx 20rpx 0rpx 20rpx;
border-bottom-width: 0.5upx;
border-bottom-color: #ebedef;
border-bottom-style: solid;
align-items: center;
margin-right: 35upx;
.regionName {
width: 100%;
padding: 20rpx 30rpx;
margin: 0upx 24upx;
align-items: center;
}
}
.city {
padding-left: 30upx;
font-size: 24rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #333333;
line-height: 34rpx;
}
.dingwei {
width: 100%;
padding-top: 25upx;
box-sizing: border-box;
margin-bottom: 26upx;
}
.dingwei_Tips {
margin-left: 24upx;
margin-bottom: 24upx;
font-size: 24upx;
color: #A5A5A5;
}
.dingwei_refresh {
width: 44rpx;
height: 44rpx;
}
.dingwei_city {
width: 100%;
padding-left: 55upx;
padding-right: 70upx;
box-sizing: border-box;
display: flex;
}
.dingwei_city_one {
width: 218rpx;
height: 80rpx;
line-height: 80rpx;
font-size: 24rpx;
color: #333333;
display: flex;
justify-content: center;
align-items: center;
background: #DEDEDE;
border-radius: 44rpx;
margin-right: 6rpx;
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow:ellipsis;
text-align: center;
padding: 0rpx 20rpx;
}
.dingweis_div {
display: flex;
align-content: flex-end;
align-items: center;
font-size: 24upx;
color: #FD5745;
}
.dingweis {
width: 32upx;
height: 32upx;
}
.dingwei_city_zuijin {
display: flex;
justify-content: flex-start;
}
.toright {
margin-right: 25upx;
}
</style>