两天写一个电影资讯速览微信小程序(附源码)

news/2024/7/20 1:35:16 标签: 微信小程序, 小程序

简介

基于原生小程序精仿的猫眼电影,仅供学习和参考。

首页效果图
在这里插入图片描述

数据请求

 url: 'https://m.maoyan.com/ajax/movieOnInfoList?token=',
      success(res) {
        const movieList0 = _this.formatImgUrl(res.data.movieList)
        wx.hideLoading()
        _this.setData({
          movieIds0: res.data.movieIds,
          movieList0
        })
        if (res.data.movieList.length >= res.data.movieIds.length) {
          _this.setData({
            loadComplete0: true
          })
        }
      }
    })

完整wxml

<import src='../../../templates/movieSection/movieSection.wxml' />

<view>
  <view class='topbar'>
    <navigator class='city-entry' url='../../subPages/city-select/city-select'>
      <text class='city-name'>{{city}}</text>
      <text class='city-entry-arrow'></text>
    </navigator>
    <view class='switch-hot'>
      <view class='hot-item {{switchItem===0 ? "active" :""}}' bindtap='selectItem' data-item='{{0}}'>正在热映</view>
      <view class='hot-item {{switchItem===1 ? "active" :""}}' bindtap='selectItem' data-item='{{1}}'>即将上映</view>
    </view>
    <navigator class='search-entry' url='../../subPages/search-page/search-page?stype=-1'>
      <text class='iconfont icon-sousuo'></text>
    </navigator>
  </view>
  <view class='switch-content'>
    <view hidden="{{switchItem===1}}">
      <template is='movieSection' wx:for='{{movieList0}}' wx:for-item='movie' wx:key='{{movie.id}}' data='{{movie:movie}}'/>
      <view wx:if='{{!loadComplete0 && movieList0.length}}'>
        <template is="loadingMore" />
      </view>
    </view>
    <view hidden="{{switchItem===0}}">
      <view class='most-expected' wx:if='{{mostExpectedList.length}}'>
        <view class='title'>近期最受期待</view>
        <scroll-view class='scroll-view_H' scroll-x bindscrolltolower='lower'>
          <navigator url='/pages/subPages/movie-detail/movie-detail?movieId={{movie.id}}' wx:for='{{mostExpectedList}}' wx:for-item='movie' wx:key='{{id}}' class='expected-item'>
            <image src='{{movie.img}}' class='poster'></image>
            <view class='name line-ellipsis'>{{movie.nm}}</view>
            <view class='data line-ellipsis'>{{movie.wish}}人想看</view>
            <view class='data'>{{movie.comingTitle}}</view>
          </navigator>
        </scroll-view>
      </view>
      <block wx:for='{{movieList1}}' wx:for-item='movie' wx:key='{{movie.id}}'>
        <block wx:if='{{index===0||movieList1[index-1].comingTitle!==movie.comingTitle}}'>
          <view class='title'>{{movie.comingTitle}}</view>
          <template is='movieSection' data='{{movie:movie,rt:true}}' />
        </block>
        <template wx:else is='movieSection' data='{{movie:movie,rt:true}}' />
      </block>
      <view wx:if='{{!loadComplete1 && movieList1.length}}'>
        <template is="loadingMore" />
      </view>
    </view>
  </view>
</view>

附近影院效果图
在这里插入图片描述

可根据商圈或者地铁站进行直接查询附件影院,效果图如下
在这里插入图片描述

可根据影院名进行直接查询附件影院,效果图如下
在这里插入图片描述

还可根据其他具体需求进行直接查询附件影院,效果图如下
在这里插入图片描述

获取影院列表

getCinemas(params)复制代码    const _this = this;
    return new Promise((resolve, reject) => {
      wx.request({
        url: 'https://m.maoyan.com/ajax/cinemaList',
        data: params,
        success(res) {
          resolve(res.data.cinemas)
          _this.setData({
            cinemas: _this.data.cinemas.concat(res.data.cinemas),
            loadComplete: !res.data.paging.hasMore
          })
        }
      })
    })
  },

当过滤条件变化时调用的函数

const obj = e.detail
    wx.showLoading({
      title: '正在加载...'
    })
    this.setData({
      params: { ...this.data.params,
        ...obj
      },
      cinemas: [],
      nothing: false
    }, () => {
      this.getCinemas(this.data.params).then((list) => {
        if (!list.length) {
          this.setData({
            nothing: true
          })
        }
        wx.hideLoading()
      })
    })
  },

导航下拉框状态变化时的处理

const item = e.detail.item
    this.setData({
      isShow: item !== -1
    })
  },

完整wxml

<import src='../../../templates/loadingMore/loadingMore.wxml' />
<import src='../../../templates/cinemaSection/cinemaSection.wxml' />

<view class='container' style='position:{{isShow?"fixed":""}}'>
  <view class='topbar'>
    <navigator class='city-entry' url='../../subPages/city-select/city-select'>
      <text class='city-name'>{{city}}</text>
      <text class='city-entry-arrow'></text>
    </navigator>
    <navigator url='../../subPages/search-page/search-page?stype=2' class='search-input'>
      <text class='iconfont icon-sousuo'></text>搜影院</navigator>
  </view>
  <view class='nav-wrapper'>
    <filter-nav city-cinema-info='{{cityCinemaInfo}}' bindchange='changeCondition' bindtoggleShow='toggleShow'></filter-nav>
  </view>
  <view class='cinema-list'>
   <template is="cinemaSection" wx:for='{{cinemas}}' wx:for-item='cinema' wx:key='{{cinema.id}}' data='{{cinema}}'/>
  </view>
  <view wx:if='{{!loadComplete && cinemas.length}}'>
    <template is="loadingMore" />
  </view>
  <view hidden='{{!nothing}}'>
    <template is='nothing' data='{{message:"暂无符合条件的影院"}}' />
  </view>
</view>

我的效果图
在这里插入图片描述

关于信息效果图
在这里插入图片描述

其他代码细节,不再赘述,具体可查看源码。

在这里插入图片描述

▲关注 同名 公众号【码农园区】▲
▲回复「电影」,获取项目源码▲


http://www.niftyadmin.cn/n/5127726.html

相关文章

体系结构评估——(一)质量属性

体系结构评估是整个体系结构设计中&#xff0c;非常重要的一个环节。体系结构评估可以只针对一个体系结构&#xff0c;也可以针对一组体系结构。在体系结构评估过程中&#xff0c;评估人员所关注的是系统的质量属性。所有评估方法所普遍关注的质量属性有功能性、性能、可用性、…

取证之2021年第三届长安杯电子数据取证竞赛

2021年第三届长安杯电子数据取证竞赛 2021年4月25日&#xff0c;上午8点左右&#xff0c;警方接到被害人金某报案&#xff0c;声称自己被敲诈数万元&#xff1b;经询问&#xff0c;昨日金某被嫌疑人诱导裸聊&#xff0c;下载了某“裸聊”软件&#xff0c;导致自己的通讯录和裸…

基于AI与物联网技术的智能视频监控系统架构剖析

智能视频监控系统正逐渐成为我们日常生活和工作中不可或缺的一部分。基于物联网的智能监控系统架构为我们在各个领域提供了更高效、智能化和安全的监控解决方案。本文将以旭帆科技EasyCVR视频监控云平台为例&#xff0c;介绍基于AI、物联网的智能监控系统的架构&#xff0c;并探…

房产网源码 房产中介小程序源码 房产门户网站源码

房产网源码 房产中介小程序源码 房产门户网站源码 功能介绍&#xff1a; 一、付费发布信息 支持付费发布、刷新、置顶房源信息&#xff1b;二、个人发布信息 支持个人和房产经纪人发布房源信息&#xff1b;三、新房楼盘模块 支持新房楼盘功能&#xff0c;后台添加…

python 获取本机ip

python获取本机IP_python获取本机ip地址_uncle_ll的博客-CSDN博客 使用python获取IP地址_python 获取服务器ip_冯诺依曼01的博客-CSDN博客

ChatGLM系列六:基于知识库的问答

1、安装milvus 下载milvus-standalone-docker-compose.yml并保存为docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.3.2/milvus-standalone-docker-compose.yml -O docker-compose.yml运行milvus sudo docker-compose up -d2、文档预处理…

c++ deque 的使用

目录 1. deque 的介绍 2. deque 底层原理 3. deque 的迭代器 4. deque 的接口使用 5. deque 和 vector&#xff0c;list 的比较 1. deque 的介绍 下面是 deque 的介绍&#xff0c;来自于&#xff1a;deque - C Reference (cplusplus.com) 的翻译&#xff0c;您可以不用…

css属性clip-path的使用说明

前言 当ui设计上的图片、div等的形状不是长方形&#xff0c;而是多边形的时候&#xff0c;就可以借助clip-path这个css属性来实现。 clip-path CSS 属性使用裁剪方式创建元素的可显示区域。区域内的部分显示&#xff0c;区域外的隐藏。【from: MDN】 clip-path可以理解为一把剪…