美文网首页web前端开发
May 13,2023【微信小程序】电影购票

May 13,2023【微信小程序】电影购票

作者: Du1in9 | 来源:发表于2023-05-12 14:46 被阅读0次

    一、根目录

    • app.js
    App({
      globalData: {     //全局变量
        userInfo: null
      }
    })
    
    • app.json
    {
      "pages": [                                       
        "pages/home/home",
        "pages/movie/movie",
        "pages/cinema/cinema",
        "pages/find/find",
        "pages/profile/profile"
      ],
      "window": {
        "backgroundColor": "#030000",
        "backgroundTextStyle": "light",
        "navigationBarBackgroundColor": "#333333",
        "navigationBarTitleText": "万达电影",
        "navigationBarTextStyle": "white"
      },
      "tabBar": {
        "backgroundColor": "#333",
        "color": "#fff",
        "selectedColor": "#F73171",
        "list": [{
            "pagePath": "pages/home/home",
            "text": "首页",
            "iconPath": "./assets/images/tabbar/home_n_icon.png",
            "selectedIconPath": "./assets/images/tabbar/home_a_icon.png"
          },
          {
            "pagePath": "pages/movie/movie",
            "text": "电影",
            "iconPath": "./assets/images/tabbar/movie_n_icon.png",
            "selectedIconPath": "./assets/images/tabbar/movie_a_icon.png"
          },
          {
            "pagePath": "pages/cinema/cinema",
            "text": "电影院",
            "iconPath": "./assets/images/tabbar/cinema_n_icon.png",
            "selectedIconPath": "./assets/images/tabbar/cinema_a_icon.png"
          },
          {
            "pagePath": "pages/find/find",
            "text": "发现",
            "iconPath": "./assets/images/tabbar/find_n_icon.png",
            "selectedIconPath": "./assets/images/tabbar/find_a_icon.png"
          },
          {
            "pagePath": "pages/profile/profile",
            "text": "我的",
            "iconPath": "./assets/images/tabbar/mine_n_icon.png",
            "selectedIconPath": "./assets/images/tabbar/mine_a_icon.png"
          }
        ]
      },
      "style": "v2",
      "sitemapLocation": "sitemap.json"
    }
    
    • app.wxss
    page {
      background-color: #030000;
      color: #ffffff;
      height: 100%;
    }
    
    ::-webkit-scrollbar {
      width: 0;
      height: 0;
      color: transparent;       /* 隐藏滚动条 */
    }
    
    • project.config.json
    {
        "description": "项目配置文件",
        "packOptions": {
            "ignore": [],
            "include": []
        },
        "setting": {
            "urlCheck": true,
            "es6": true,
            "enhance": false,
            "postcss": true,
            "preloadBackgroundData": false,
            "minified": true,
            "newFeature": false,
            "coverView": true,
            "nodeModules": false,
            "autoAudits": false,
            "showShadowRootInWxmlPanel": true,
            "scopeDataCheck": false,
            "uglifyFileName": false,
            "checkInvalidKey": true,
            "checkSiteMap": false,
            "uploadWithSourceMap": true,
            "compileHotReLoad": false,
            "useMultiFrameRuntime": true,
            "useApiHook": true,
            "useApiHostProcess": false,
            "babelSetting": {
                "ignore": [],
                "disablePlugins": [],
                "outputPath": ""
            },
            "enableEngineNative": false,
            "bundle": false,
            "useIsolateContext": true,
            "useCompilerModule": true,
            "userConfirmedUseCompilerModuleSwitch": false,
            "userConfirmedBundleSwitch": false,
            "packNpmManually": false,
            "packNpmRelationList": [],
            "minifyWXSS": true
        },
        "compileType": "miniprogram",
        "libVersion": "2.14.0",
        "appid": "wxa5988aab181e5dec",
        "projectname": "supermovie",
        "simulatorType": "wechat",
        "simulatorPluginLibVersion": {},
        "condition": {
            "miniprogram": {
                "list": [
                    {
                        "name": "pages/movie/movie",
                        "pathName": "pages/movie/movie",
                        "query": "",
                        "scene": null
                    },
                    {
                        "name": "pages/cinema/cinema",
                        "pathName": "pages/cinema/cinema",
                        "query": "",
                        "scene": null
                    },
                    {
                        "name": "pages/find/find",
                        "pathName": "pages/find/find",
                        "query": "",
                        "scene": null
                    },
                    {
                        "name": "pages/profile/profile",
                        "pathName": "pages/profile/profile",
                        "query": "",
                        "scene": null
                    }
                ]
            }
        },
        "editorSetting": {
            "tabIndent": "insertSpaces",
            "tabSize": 4
        }
    }
    

    二、pages 目录

    1、cinema 二级目录

    • cinema.wxml
    <view class="cinema-container-view">
      <!-- 头部 -->
      <w-header-component model:header-items="{{headerItems}}"></w-header-component>
      <!-- 导航栏 -->
      <w-nav-component model:nav-items="{{navItems}}"></w-nav-component>
      <!-- 广告图 -->
      <view class="banner-container-view">
        <image src="../../assets/images/banner/ad_1.png" class="banner-image"></image>
      </view>
      <!-- 电影卡片 -->
      <w-card-component model:movie-card-data="{{movieCardData}}"></w-card-component>
    </view>
    
    • cinema.wxss
    .banner-container-view {
      height: 220rpx;
      margin: 20rpx ;
    }
    .banner-container-view .banner-image{
      width: 100%;
      height: 100%;
    }
    
    • cinema.js
    Page({
    
      /* 页面的初始数据*/
      data: {
        currentIndex: 0,
        headerItems: ['电影院'],
        navItems:[
          {title:'区域',imageUrl: '../../assets/images/searchbar/option_icon.png'},
          {title:'品牌',imageUrl: '../../assets/images/searchbar/option_icon.png'},
          {title:'距离',imageUrl: '../../assets/images/searchbar/option_icon.png'},
          {title:'筛选',imageUrl: '../../assets/images/searchbar/option_icon.png'}
        ],
        movieCardData: [
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.9起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "知名影院",
            addresTitle: "万达国际影城(北路店)",
            popTitle: "人气6000",
            addresDetail: "北京市昌平区",
            shopTitle1: "美甲",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "2.8km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥39.9起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "火热影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气9890",
            addresDetail: "北京市昌平区",
            shopTitle1: "洗浴",
            shopTitle2: "午夜DJ",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "3.2km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥29.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          }
        ]
      },
    
      /* 生命周期函数--监听页面加载*/
      onLoad: function (options) {},
    
      /* 生命周期函数--监听页面初次渲染完成*/
      onReady: function () {},
    
      /* 生命周期函数--监听页面显示*/
      onShow: function () {},
    
      /* 生命周期函数--监听页面隐藏*/
      onHide: function () {},
    
      /* 生命周期函数--监听页面卸载*/
      onUnload: function () {},
    
      /* 页面相关事件处理函数--监听用户下拉动作*/
      onPullDownRefresh: function () {},
    
      /* 页面上拉触底事件的处理函数*/
      onReachBottom: function () {},
    
      /* 用户点击右上角分享*/
      onShareAppMessage: function () {}
    })
    
    • cinema.json
    Page({
      data: {
        currentIndex: 0,
        headerItems: ['电影院'],
        navItems:[
          {title:'区域',imageUrl: '../../assets/images/searchbar/option_icon.png'},
          {title:'品牌',imageUrl: '../../assets/images/searchbar/option_icon.png'},
          {title:'距离',imageUrl: '../../assets/images/searchbar/option_icon.png'},
          {title:'筛选',imageUrl: '../../assets/images/searchbar/option_icon.png'}
        ],
        movieCardData: [
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.9起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "知名影院",
            addresTitle: "万达国际影城(北路店)",
            popTitle: "人气6000",
            addresDetail: "北京市昌平区",
            shopTitle1: "美甲",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "2.8km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥39.9起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "火热影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气9890",
            addresDetail: "北京市昌平区",
            shopTitle1: "洗浴",
            shopTitle2: "午夜DJ",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "3.2km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥29.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          }
        ]
      }
    })
    

    2、find 二级目录

    • find.wxml
    <view class="page-body">
      <!-- 头部 -->
      <view class="header-component-view">
        <w-header-component model:header-items="{{headerItems}}"></w-header-component>
      </view>
      <!-- 导航栏 -->
      <w-nav-component model:nav-items="{{navItems}}"></w-nav-component>
      <!-- 广告图 -->
      <view class="banner-container-view">
        <image src="../../assets/images/banner/ad_2.png" class="banner-image"></image>
      </view>
      <w-video-component model:video-items="{{videoItems}}"></w-video-component>
    </view>
    
    • find.wxss
    .banner-container-view {
      height: 220rpx;
      margin: 20rpx ;
    }
    .banner-container-view .banner-image{
      width: 100%;
      height: 100%;
      border-radius: 10rpx;
    }
    
    • find.js
    Page({
      data: {
        headerItems: ['发现'],
        navItems: [
          { title: '精选电影', imageUrl: '../../assets/images/searchbar/option_icon.png' },
          { title: 'VIP会员', imageUrl: '../../assets/images/searchbar/option_icon.png' },
          { title: '综艺节目', imageUrl: '../../assets/images/searchbar/option_icon.png' },
          { title: '海外剧', imageUrl: '../../assets/images/searchbar/option_icon.png' }
        ],
        videoItems: [
          {
            videoPath: 'https://du1in9.com/demo_wallpaper/demo.mp4',
            posterPath: 'https://du1in9.com/demo_wallpaper/1.jpg',
            title: '神探蒲松龄',
            headPhotos: [
              'http://m.imeitou.com/uploads/allimg/201114/3-2011141F133-lp.jpg',
              'http://m.imeitou.com/uploads/allimg/2020111109/2rim0cysapx-lp.jpg',
              'http://m.imeitou.com/uploads/allimg/2020110210/wze1ae0riqj-lp.jpg'
            ],
            likeIcon: '../../assets/images/comment-map/like_icon.png',
            likeTitle: '9240点赞',
            shareIcon: '../../assets/images/comment-map/share_icon.png',
            shareTitle: '949分享',
            alignmentIcon: '../../assets/images/comment-map/evaluate_2_icon.png',
            alignmentTitle: '1228评论'
          },
          {
            videoPath: 'https://du1in9.com/demo_wallpaper/demo.mp4',
            posterPath: 'https://du1in9.com/demo_wallpaper/2.jpg',
            title: '哥斯拉',
            headPhotos: [
              'http://img.touxiangwu.com/uploads/allimg/200312/-1_0312140F25547.jpg',
              'http://img.touxiangwu.com/uploads/allimg/200312/-1_03121406442351.jpg',
              'http://img.touxiangwu.com/uploads/allimg/200312/-1_0312141152C43.jpg'
            ],
            likeIcon: '../../assets/images/comment-map/like_icon.png',
            likeTitle: '1988点赞',
            shareIcon: '../../assets/images/comment-map/share_icon.png',
            shareTitle: '689分享',
            alignmentIcon: '../../assets/images/comment-map/evaluate_2_icon.png',
            alignmentTitle: '328评论'
          },
          {
            videoPath: 'https://du1in9.com/demo_wallpaper/demo.mp4',
            posterPath: 'https://du1in9.com/demo_wallpaper/3.jpg',
            title: '福星高照朱小八',
            headPhotos: [
              'http://m.imeitou.com/uploads/allimg/2020111109/vfhoqk3ldhq-lp.jpg',
              'http://m.imeitou.com/uploads/allimg/2020111109/o3zvr5vqs5h-lp.jpg',
              'http://m.imeitou.com/uploads/allimg/2020111109/0c4kiurabfe-lp.jpg'
            ],
            likeIcon: '../../assets/images/comment-map/like_icon.png',
            likeTitle: '650点赞',
            shareIcon: '../../assets/images/comment-map/share_icon.png',
            shareTitle: '889分享',
            alignmentIcon: '../../assets/images/comment-map/evaluate_2_icon.png',
            alignmentTitle: '9928评论'
          },
          {
            videoPath: 'https://du1in9.com/demo_wallpaper/demo.mp4',
            posterPath: 'https://du1in9.com/demo_wallpaper/4.jpg',
            title: '宠物联盟',
            headPhotos: [
              'http://m.imeitou.com/uploads/allimg/2020111109/azi4yvvzpti-lp.jpg',
              'http://m.imeitou.com/uploads/allimg/2020111109/yv3yox134oq-lp.jpg',
              'http://m.imeitou.com/uploads/allimg/201114/3-2011141FI6-lp.jpg'
            ],
            likeIcon: '../../assets/images/comment-map/like_icon.png',
            likeTitle: '550点赞',
            shareIcon: '../../assets/images/comment-map/share_icon.png',
            shareTitle: '989分享',
            alignmentIcon: '../../assets/images/comment-map/evaluate_2_icon.png',
            alignmentTitle: '628评论'
          },
          {
            videoPath: 'https://du1in9.com/demo_wallpaper/demo.mp4',
            posterPath: 'https://du1in9.com/demo_wallpaper/5.jpg',
            title: '哪吒',
            headPhotos: [
              'http://m.imeitou.com/uploads/allimg/201114/3-2011141F133-lp.jpg',
              'http://m.imeitou.com/uploads/allimg/2020111109/2rim0cysapx-lp.jpg',
              'http://m.imeitou.com/uploads/allimg/2020110210/wze1ae0riqj-lp.jpg'
            ],
            likeIcon: '../../assets/images/comment-map/like_icon.png',
            likeTitle: '9240点赞',
            shareIcon: '../../assets/images/comment-map/share_icon.png',
            shareTitle: '949分享',
            alignmentIcon: '../../assets/images/comment-map/evaluate_2_icon.png',
            alignmentTitle: '1228评论'
          }
        ]
      },
      // 视频播放完成
      videoEndCallback: function (params) {
        console.log(params);
        console.log("视频播放完成");
      },
      // 视频播放失败
      videoErrorCallback: function (params) {
        console.log(params)
        console.log("视频播放失败");
      }
    })
    
    • find.json
    {
      "enablePullDownRefresh": true,
      "usingComponents": {
        "w-header-component": "../../components/w-header-component/w-header-component",
        "w-nav-component": "../../components/w-nav-component/w-nav-component",
        "w-card-component": "../../components/w-card-component/w-card-component",
        "w-video-component": "../../components/w-video-component/w-video-component"
      }
    }
    

    3、home 二级目录

    • home.wxml
      <!-- 头部搜索栏 -->
      <w-child-search></w-child-search>
      <!-- 轮播图 -->
      <w-swiper-component model:swiper-data="{{swiperData}}"></w-swiper-component>
      <!-- 选项卡 -->
      <w-tab-control model:titles="{{titles}}" bind:switchItem="switchItemEvent"></w-tab-control>
      <!-- 选项卡菜单 -->
      <w-child-scroll model:scroll-item="{{movieColumn[currentType].list}}"></w-child-scroll>
      <!-- 影院卡片 -->
      <w-card-component model:movie-card-data="{{movieCardData}}"></w-card-component>
    
    • home.js
    import {HIT, SOON, BOARD} from '../../common/const.js'
    Page({
      data: {
        list: [],
        pageNo: 1,
        currentType: 'hit',
        movieColumn: {
          [HIT]: {
            page: 1, 
            list: [
              { id: "001", imageUrl: "../../../../assets/images/scroll-view/movie_1.jpg", text: "八佰", dateDesc: "2020-11-05 上映" },
              { id: "002", imageUrl: "https://pic2.iqiyipic.com/image/20201112/36/c7/v_128042334_m_601_m10_260_360.webp", text: "花木兰", dateDesc: "2020-11-14 上映" },
              { id: "003", imageUrl: "https://pic2.iqiyipic.com/image/20201113/c3/8f/v_131397337_m_601_m20_260_360.webp", text: "急先锋", dateDesc: "2020-11-15 上映" },
              { id: "004", imageUrl: "../../../../assets/images/scroll-view/movie_4.jpg", text: "哈利波特与魔法", dateDesc: "2020-10-08 上映" },
              { id: "005", imageUrl: "../../../../assets/images/scroll-view/movie_5.jpg", text: "寻梦环游记", dateDesc: "2020-10-10 上映" },
              { id: "006", imageUrl: "../../../../assets/images/scroll-view/movie_6.jpg", text: "假面饭店", dateDesc: "2020-10-28 上映" }]
          },
          [SOON]: {
            page: 1, 
            list: [
              { id: "001", imageUrl: "../../../../assets/images/scroll-view/movie_7.jpg", text: "绝地反击", dateDesc: "2020-8-20 上映" },
              { id: "002", imageUrl: "../../../../assets/images/scroll-view/movie_8.jpg", text: "无疯也超浪", dateDesc: "2020-09-10 上映" },
              { id: "003", imageUrl: "../../../../assets/images/scroll-view/movie_9.jpg", text: "站玄武", dateDesc: "2020-10-20 上映" },
              { id: "004", imageUrl: "../../../../assets/images/scroll-view/movie_10.jpg", text: "清平客栈", dateDesc: "2020-10-08 上映" },
              { id: "005", imageUrl: "../../../../assets/images/scroll-view/movie_11.jpg", text: "双龙记", dateDesc: "2020-10-10 上映" },
              { id: "006", imageUrl: "../../../../assets/images/scroll-view/movie_12.jpg", text: "ABOMINABLE", dateDesc: "2020-10-28 上映" }]
          },
          [BOARD]: {
            page: 1, 
            list: [
              { id: "001", imageUrl: "../../../../assets/images/scroll-view/movie_13.jpg", text: "CASINO ROYALE", dateDesc: "2020-8-20 上映" },
              { id: "002", imageUrl: "../../../../assets/images/scroll-view/movie_14.jpg", text: "GOOZILLA", dateDesc: "2020-09-10 上映" },
              { id: "003", imageUrl: "../../../../assets/images/scroll-view/movie_15.jpg", text: "BOB", dateDesc: "2020-10-20 上映" },
              { id: "004", imageUrl: "../../../../assets/images/scroll-view/movie_16.jpg", text: "SCARY MOVIE", dateDesc: "2020-10-08 上映" },
              { id: "005", imageUrl: "../../../../assets/images/scroll-view/movie_17.jpg", text: "JOKER", dateDesc: "2020-10-10 上映" }]
          }
        },
        titles: [
          "真正热播", "即将上映", "排行榜"
        ],
        swiperData: [
          "https://puui.qpic.cn/media_img/lena/PIC9v8c98_580_1680/0",
          "../../assets/images/swiper/swiper_2.jpg",
          "../../assets/images/swiper/swiper_3.jpg",
          "https://puui.qpic.cn/vupload/0/1604629644054_jmntgavqr3.jpg/0",
          "../../assets/images/swiper/swiper_5.jpg",
          "../../assets/images/swiper/swiper_6.jpg",
          "../../assets/images/swiper/swiper_7.jpg",
    
        ],
        movieCardData: [
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.9起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "知名影院",
            addresTitle: "万达国际影城(北路店)",
            popTitle: "人气6000",
            addresDetail: "北京市昌平区",
            shopTitle1: "美甲",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "2.8km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥39.9起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "火热影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气9890",
            addresDetail: "北京市昌平区",
            shopTitle1: "洗浴",
            shopTitle2: "午夜DJ",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "3.2km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥29.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          },
          {
            movieTitle: "人气影院",
            addresTitle: "嘉年华国际影城(北路店)",
            popTitle: "人气5000",
            addresDetail: "北京市昌平区",
            shopTitle1: "零食",
            shopTitle2: "MAX厅",
            shopTitle3: "中国剧目",
            shopTitle4: "停车场",
            distanse: "1.1km",
            discount1: "开通会员8折购票",
            discount2: "组团购票优惠8折起",
            price: "¥19.99起",
            gloryLableImageUrl: "../../assets/images/movie-card/fire_icon.png",
            proLableImageUrl: "../../assets/images/movie-card/rank_icon.png"
          }
        ]
      },
      switchItemEvent(event) {
        const key = event.detail.index
        let currentType = ''
        switch (key) {
          case 0:
            currentType = HIT
            break;
          case 1:
            currentType = SOON
            break;
          case 2:
            currentType = BOARD
            break;
        }
        this.setData({
          currentType: currentType
        })
      }
    })
    
    • home.json
    {
      "enablePullDownRefresh": true,
      "usingComponents": {
        "w-card-component": "../../components/w-card-component/w-card-component",
        "w-child-search": "../home/components/w-child-search/w-child-search",
        "w-swiper-component": "../../components/w-swiper-component/w-swiper-component",
        "w-tab-control": "../home/components/w-tab-control/w-tab-control",
        "w-child-scroll": "../home/components/w-child-scroll/w-child-scroll"
      }
    }
    
    components 三级目录

    ① w-child-scroll 四级目录

    • w-child-scroll.wxml
    <view class="scroll-view-container">
        <scroll-view scroll-x="true" :scroll-into-view="a" class="scroll-view">
            <block wx:for="{{scrollItem}}" wx:key="id">
                <view class="tab-container"><image src="{{item.imageUrl}}" class="tab-item-image"></image>
                    <view class="tab-title-view">
                        <h4 class="title-text">{{item.text}}</h4>
                        <text class="title-date">{{item.dateDesc}}</text>
                    </view>
                </view>
            </block>
        </scroll-view>
        <view class="see-more-view"><h2 class="see-more-titlt">查看更多(30部)></h2></view>
    </view>
    
    • w-child-scroll.wxss
    .scroll-view-container {
      margin-top: 40rpx;
      width: 100%;
    }
    .scroll-view {
      width: 100%;
      height: 455rpx;
      white-space: nowrap;
    }
    .tab-container {
      display: inline-block;
      margin: 0 10rpx;
      width: 270rpx;
      height: 100%;
    }
    .tab-container:first-child {
      margin-left: 20rpx ;
    }
    .tab-container:last-child {
      margin-right: 20rpx ;
    }
    .tab-item-image {
      width: 100%;
      height: 360rpx;
    }
    .tab-title-view .title-text {
      display: block;
      color: #ffffff;
      text-align: left;
      margin: 5rpx 0;
    }
    .tab-title-view .title-date {
      color: #808080;
      text-align: left;
    }
    .see-more-view {
     margin: 25rpx 0;
     text-align: center;
    }
    .see-more-titlt {
      font-weight: 600;
    color: #ffffff;
    }
    
    • w-child-scroll.js
    Component({
      properties: {
        scrollItem: {type: Array, value: []}
      }
    })
    
    • w-child-scroll.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    ② w-child-search 四级目录

    • w-child-search.wxml
    <view class="city-selection-view">
        <text class="city-text">天津</text>
        <view class="down-icon-view">
          <image src="../../../../assets/images/searchbar/down_icon.png" class="drow-icon-image"></image>
        </view>
      </view>
      <view class="search-bar-view">
        <input type="text" class="input" placeholder="请输入电影、电影院" />
        <view class="search-image-view">
          <image src="../../../../assets/images/searchbar/search_icon.png" class="search-icon-image" />
        </view>
      </view>
      <view class="scan-code-view">
        <image src="../../../../assets/images/searchbar/scan_icon.png" class="scan-icon-image"></image>
      </view>
    
    • w-child-search.wxss
    .city-selection-view {
      color: #ffffff;
      position: absolute;
      top: 28rpx;
      left: 30rpx;
      width: 70rpx;
      height: 40rpx;
    }
    .down-icon-view {
      position: absolute;
      top: 0rpx;
      left:72rpx;
      z-index: 2;
    }
    .drow-icon-image {
      width: 20rpx;
      height: 15rpx;
    }
    .search-bar-view {
      position: relative;
      width: 100%;
      height: 80rpx;
    }
    .search-image-view {
      position: absolute;
      top: 26rpx;
      left: 175rpx;
      width: 40rpx;
      height: 40rpx;
    }
    .search-icon-image {
      display: block;
      width: 100%;
      height: 100%;
    }
    .input {
      box-sizing: border-box;
      position: absolute;
      top: 10rpx;
      left: 20%;
      width: 500rpx;
      height: 40px;
      border-radius: 20px;
      color: #ffffff;
      border: none;
      background-color: #444242;
      padding-left:40px;
      padding-right: 20px;
    }
    .scan-code-view {
      position: absolute;
      right: 30rpx;
      top: 30rpx;
      height: 40rpx;
      width: 40rpx;
    }
    .scan-icon-image {
      height: 100%;
      width: 100%;
    }
    
    • w-child-search.js
    Component({})
    
    • w-child-search.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    ③ w-tab-control 四级目录

    • w-tab-control.wxml
    <view class="tab-control-view">
        <block wx:for="{{titles}}" wx:key="index">
          <view class="tab-item {{index === currentIndex ? 'active' : ''}}" bind:tap="itemTab" data-index="{{index}}">{{item}}</view>
        </block>
    </view>
    
    • w-tab-control.wxss
    .tab-control-view {
      display: flex;
      flex-flow: row nowrap;
      justify-content: space-around;
      color: #ffffff;
      margin-top: 40rpx;
    }
    .tab-item {
      flex: 1;
      text-align: center;
      height: 80rpx;
      line-height: 80rpx;
      font-size: 32rpx;
    }
    .active {
      color: #f73171;
    }
    
    • w-tab-control.js
    Component({
      /*组件的属性列表*/
      properties: {titles: {type: Array, valur: []}},
      /*组件的初始数据*/
      data: {currentIndex: 0},
      /*组件的方法列表*/
      methods: {
        itemTab(event) {
          const index = event.currentTarget.dataset.index
          this.setData({currentIndex: index})
          this.triggerEvent("switchItem",{index:index},{})
        }
      }
    })
    
    • w-tab-control.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    4、movie 二级目录

    • movie.wxml
    <!-- 整体盒子 -->
    <view class="movie-container-view">
        <!-- 头部搜索栏 -->
        <w-header-component model:header-items="{{tapControlItem}}" bind:handlerTabControlEvent="tabControlEvent"></w-header-component>
        <!-- 统计条 -->
        <w-child-total></w-child-total>
        <!-- 电影栏目 -->
        <w-detail-component model:detail-items="{{detailItems[currentIndex].list}}"></w-detail-component>
    </view>
    
    • movie.wxss
    .movie-container-view {
      background-color: #030000;
      height: 100%;
    }
    
    • movie.js
    import { HIT, SOON, BOARD } from '../../common/const.js'
    Page({
      data: {
        currentIndex: 'hit',
        tapControlItem: ["正在热映", "即将上映"],
        detailItems: {
          [HIT]: {
            page: 1,
            list: [{
              movieTitle: '八佰',
              director: '管虎',
              movieImageUrl: 'https://pic0.iqiyipic.com/image/20201102/3b/62/v_112883426_m_601_m15_260_360.jpg',
              toStars: ['黄志忠', '欧豪', '王千源'],
              blocktitles: ['2D', '国语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '6分',
              releaseTime: '2020-08-01'
    
            },
            {
              movieTitle: '我在时间尽头等你',
              director: '妮基·卡罗',
              movieImageUrl: 'https://pic3.iqiyipic.com/image/20201112/5b/cb/v_153975084_m_601_m2_260_360.jpg',
              toStars: ['刘亦菲', '李连杰', '甄子丹'],
              blocktitles: ['3D', '国语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '10分',
              releaseTime: '2020-11-25'
    
            },
            {
              movieTitle: '急先锋',
              director: '徐展雄',
              movieImageUrl: 'https://pic2.iqiyipic.com/image/20201113/c3/8f/v_131397337_m_601_m20_260_360.webp',
              toStars: ['成龙', '杨洋', '艾伦'],
              blocktitles: ['3D', '国语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '8分',
              releaseTime: '2020-10-01'
            },
    
            {
              movieTitle: '哈利伯特与魔法石',
              director: '克里斯·哥伦布',
              movieImageUrl: '../../assets/images/scroll-view/movie_4.jpg',
              toStars: ['丹尼尔', '鲁伯特', '格林特'],
              blocktitles: ['3D', '英语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '10分',
              releaseTime: '2020-10-29'
            },
            {
              movieTitle: '寻梦环游记',
              director: '李·昂克里奇',
              movieImageUrl: '../../assets/images/scroll-view/movie_5.jpg',
              toStars: ['安东尼', '布拉特'],
              blocktitles: ['3D', '国语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '10分',
              releaseTime: '2020-10-01'
            }
            ]
          },
          [SOON]: {
            page: 1,
            list: [{
              movieTitle: '假面饭店',
              director: '铃木雅之',
              movieImageUrl: '../../assets/images/scroll-view/movie_6.jpg',
              toStars: ['木村拓哉' ,'长泽雅美'],
              blocktitles: ['2D', '日语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '4分',
              releaseTime: '2020-11-01'
    
            },
            {
              movieTitle: '中国机长',
              director: '刘伟强',
              movieImageUrl: 'https://image11.m1905.cn/uploadfile/2020/0123/thumb_1_150_203_20200123024910214436.jpg',
              toStars: ['张涵予', '欧豪', '杜江'],
              blocktitles: ['2D', '国语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '8分',
              releaseTime: '2020-09-01'
    
            },
            {
              movieTitle: '无疯也超浪',
              director: '徐展雄',
              movieImageUrl: '../../assets/images/scroll-view/movie_8.jpg',
              toStars: ['前小库', '大飞', '张思思'],
              blocktitles: ['3D', '国语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '8分',
              releaseTime: '2020-10-01'
            },
    
            {
              movieTitle: '战玄武',
              director: '克里斯·哥伦布',
              movieImageUrl: '../../assets/images/scroll-view/movie_9.jpg',
              toStars: ['丹尼尔', '鲁伯特', '格林特'],
              blocktitles: ['3D', '英语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '10分',
              releaseTime: '2020-10-29'
            },
            {
              movieTitle: '清平客栈',
              director: '李·昂克里奇',
              movieImageUrl: '../../assets/images/scroll-view/movie_10.jpg',
              toStars: ['安东尼', '布拉特'],
              blocktitles: ['3D', '国语', '中国巨幕'],
              scortItems: [
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png',
                '../../assets/images/searchbar/star_icon.png'
              ],
              scoreText: '8分',
              releaseTime: '2020-10-01'
            }
            ]
          }
        },
      },
      tabControlEvent(event) {
        const key = event.detail.index
        let currentIndex = ''
        switch (key) {
          case 0:
            currentIndex = HIT
            break;
    
          default:
            currentIndex = SOON
            break;
        }
        this.setData({currentIndex: currentIndex})
      }
    })
    
    • movie.json
    {
      "enablePullDownRefresh": true,
      "usingComponents": {
        "w-header-component": "../../components/w-header-component/w-header-component",
        "w-child-total": "../movie/components/w-child-total/w-child-total",
        "w-detail-component": "../../components/w-detail-component/w-detail-component"
      }
    }
    
    components 三级目录

    w-child-total 四级目录

    • w-child-total.wxml
    <view class="total-title-view">
      <view class="left-total-container">
        <image src="../../../../assets/images/searchbar/data_icon.png" class="data-image"></image>
        <text class="box-office-text">实时票房</text>
        <text class="release-date-text">2020-10-22</text>
      </view>
      <view class="right-total-container">
        <text class="today-inven-text">今日大盘</text>
        <text class="data-volume-text">2918万</text>
        <image src="../../../../assets/images/searchbar/polygon_icon.png" class="polygon-image"></image>
      </view>
    </view>
    
    • w-child-total.wxss
    .total-title-view {
      position: relative;
      display: flex;
      justify-content: space-between;
      background-color: #333333;
      padding: 20rpx 10rpx 20rpx 55rpx;
      margin: 20rpx 0 30rpx 0;
    }
    
    .polygon-image {
      width: 20rpx;
      height: 20rpx;
      padding-left: 5rpx;
    }
    
    .data-image {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      left: 10rpx;
      width: 40rpx;
      height: 40rpx;
    }
    
    .box-office-text,
    .release-date-text,
    .today-inven-text,
    .data-volume-text {
      color: #ffffff;
      margin: 0 10rpx;
    }
    
    .right-total-container {margin-top: 2rpx;}
    .left-total-container .release-date-text {font-size: 32rpx;}
    .right-total-container .data-volume-text {color: #f73171;}
    
    • w-child-total.js
    Component({})
    
    • w-child-total.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    5、profile 二级目录

    • profile.wxml
    <view class="page-body">
      <!-- 顶部nav -->
      <w-top-nav></w-top-nav>
      <!-- 个人信息 -->
      <w-user-detail model:profile="{{profile}}"></w-user-detail>
      <!-- 会员中心 -->
      <w-user-member model:personal-center="{{personalCenter}}"></w-user-member>
      <!-- 我的订单 -->
      <w-user-order model:menu-items="{{menuItems}}"></w-user-order>
      <!-- 菜单列表 -->
      <w-menu-list model:menu-cloumn-list="{{menuCloumnList}}"></w-menu-list>
    </view>
    
    • profile.js
    Page({
      data: {
        profile: {              // 用户信息
          userName: '易烊千玺',
          userAvatarUrl: '../../../../assets/images/comment-map/avatar_1.jpeg',
          membershipLevel: '黄金会员',
          membershipLevelImageUrl: '../../../../assets/images/comment-map/crown_icon.png',
          integral: '228',
          discountText: '开通影视卡会员专属8折优惠',
          summary: [
            { text: '已看', total: 800, },
            { text: '想看', total: 300, },
            { text: '讨论', total: 389, },
            { text: '记录', total: 999 }
          ]
        },
        personalCenter:{        // 会员中心
          iconUrl: '../../../../assets/images/comment-map/diamand_icon.png',
          content: '会员中心',
          contentDetail: '开通影视卡会员专属8折优惠',
          rightText: '立即开通',
          rightIcon: '../../../../assets/images/comment-map/right_icon.png'   
      },
      menuItems: [              // 我的订单
        {menuTitle: '我的钱包',menuIcon: '../../../../assets/images/comment-map/wallet_icon.png'},
        {menuTitle: '待付款',menuIcon: '../../../../assets/images/comment-map/pay_icon.png'},
        {menuTitle: '待评价',menuIcon: '../../../../assets/images/comment-map/evaluate_icon.png'},
        {menuTitle: '退款',menuIcon: '../../../../assets/images/comment-map/speed_icon.png'},
        {menuTitle: '电影票',menuIcon: '../../../../assets/images/comment-map/movie_a_icon.png'},
        {menuTitle: '演出票',menuIcon: '../../../../assets/images/comment-map/music_icon.png'},
        {menuTitle: '优惠券',menuIcon: '../../../../assets/images/comment-map/coupon_icon.png'},
        {menuTitle: '总积分',menuIcon: '../../../../assets/images/comment-map/wallet_icon.png'}
      ],
      menuCloumnList: [         // 菜单列表
        {cloumnTitle: '我的收藏',cloumnIcon:'../../../../assets/images/comment-map/collect_icon.png'},
        {cloumnTitle: '我的银行卡',cloumnIcon:'../../../../assets/images/comment-map/movie_card.png'},
        {cloumnTitle: '我的小剧场',cloumnIcon:'../../../../assets/images/comment-map/theatre_icon.png'}
      ]
      }
    })
    
    • profile.json
    {
      "usingComponents": {
        "w-top-nav": "../profile/components/w-top-nav/w-top-nav",
        "w-user-detail": "../profile/components/w-user-detail/w-user-detail",
        "w-user-member": "../profile/components/w-user-member/w-user-member",
        "w-user-order": "../profile/components/w-user-order/w-user-order",
        "w-menu-list": "../profile/components/w-menu-list/w-menu-list"
      }
    }
    
    components 三级目录

    ① w-menu-list 四级目录

    • w-menu-list.wxml
    <view class="menu-list">
        <block wx:for="{{menuCloumnList}}" wx:key="id">
            <view class="menu-list-view">
                <view class="left">
                    <image src="{{item.cloumnIcon}}" class="menu-list-icon"></image>
                    <text>{{item.cloumnTitle}}</text>
                </view>
                <view class="right">
                    <image src="../../../../assets/images/comment-map/right_icon.png" class="right-icon"></image>
                </view>
            </view>
        </block>
    </view>
    
    • w-menu-list.wxss
    .menu-list {
      margin-bottom: 20rpx;
    }
    .menu-list-view {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 20rpx;
      background-color: #333333;
      height: 60rpx;
      border-bottom: 1rpx solid #030000;
    }
    .menu-list-view:last-child {
      border-bottom: none;
    }
    .menu-list-icon {
      width: 40rpx;
      height: 40rpx;
      vertical-align: bottom;  
      margin-right: 20rpx;
    }
    .right-icon {
      width: 18rpx;
      height: 35rpx;
      vertical-align: middle;
    }
    
    • w-menu-list.js
    Component({
      properties: {
        menuCloumnList: {type: Array, value:  []}}
    })
    
    • w-menu-list.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    ② w-top-nav 四级目录

    • w-top-nav.wxml
    <view class="top-header-view">
        <view class="heade-container">
            <view class="header-item"><image src="../../../../assets/images/searchbar/scan_icon.png" class="icon-image"></image></view>
            <view class="header-item"><text>个人中心</text></view>
            <view class="header-item"><image src="../../../../assets/images/comment-map/evaluate_2_icon.png" class="icon-image"></image></view>
        </view>
    </view>
    
    • w-top-nav.wxss
    .heade-container {
      display: flex;
      justify-content: space-between;
      flex-wrap: nowrap;
      margin: 20rpx;
    }
    .icon-image {
      vertical-align: middle;
      width: 40rpx;
      height: 40rpx;
    }
    
    • w-top-nav.js
    Component({})
    
    • w-top-nav.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    ③ w-user-detail 四级目录

    • w-user-detail.wxml
    <view class="profile-detail-view">
        <view class="detail-upper-region regin-flex">
            <view class="user-head-portrait"><image src="{{profile.userAvatarUrl}}" class="head-portrait"></image></view>
            <view class="user-detail-view">
                <view class="user-name regin-flex">
                    <h1 class="name-h">{{profile.userName}}</h1>
                    <image src="{{profile.membershipLevelImageUrl}}" class="crown-icon"></image>
                </view>
                <view class="user-integral-member regin-flex">
                    <h2 class="integral-h">{{profile.membershipLevel}}</h2>
                    <h2 class="member-h">{{'积分'+ profile.integral}}</h2>
                </view>
            </view>
        </view>
        <view class="detail-bottom-regin regin-flex after">
            <block wx:for="{{profile.summary}}" wx:key="index">
                <view class="bottom-item regin-flex after-element">
                    <text class="text-desc">{{item.total}}</text>
                    <text class="text-desc">{{item.text}}</text>
                </view>
            </block>
        </view>
    </view>
    
    • w-user-detail.wxss
    .profile-detail-view {
      display: flex;
      flex-flow: column nowrap;
      height: 295rpx;
      margin: 40rpx 20rpx 20rpx;
      padding: 25rpx 35rpx;
      border-radius: 20rpx;
      background-color: #F73171;
    }
    
    .regin-flex {
      flex: 1;
    }
    
    .head-portrait {
      width: 120rpx;
      height: 120rpx;
      border-radius: 10rpx;
    }
    
    .detail-upper-region {
      display: flex;
      justify-content: flex-start;
    }
    
    .user-detail-view {
      display: flex;
      flex-flow: column nowrap;
      justify-content: flex-start;
      margin-left: 20rpx;
    }
    
    .name-h {
      font-size: 38rpx;
    }
    
    .integral-h,
    .member-h {
      display: inline-block;
      padding: 2rpx 20rpx;
      border-radius: 20rpx;
      font-size: 28rpx;
      background-color: rgba(255, 255, 255, 0.4);
    }
    
    .member-h {
      margin-left: 10rpx;
    }
    
    .crown-icon {
      width: 35rpx;
      height: 35rpx;
      vertical-align: text-top;
      margin-left: 20rpx;
    }
    
    .detail-bottom-regin {
      display: flex;
      justify-content: space-evenly;
      text-align: center;
      margin-top: 55rpx;
    }
    
    .bottom-item {
      position: relative;
    }
    
    .bottom-item::after {
      content: "";
      width: 1px;
      height: 6.7vw;
      background-color: rgba(255, 255, 255, 0.4);
      position: absolute;
      right: 0;
      top: 8px;
    }
    .bottom-item:last-child::after {
      display: none;
    }
    
    .text-desc {
      border: none;
      display: block;
    }
    
    • w-user-detail.js
    Component({
      properties: {
        profile: {type: Object, value: []}
      }
    })
    
    • w-user-detail.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    ④ w-user-member 四级目录

    • w-user-member.wxml
    <view class="member-center-view">
        <view class="member-item">
            <image src="{{personalCenter.iconUrl}}" class="member-image"></image>
            <view class="member-text-view">
                <text class="member-center-text">{{personalCenter.content}}</text>
                <text class="member-center-desc">{{personalCenter.contentDetail}}</text>
            </view>
        </view>
        <view class="member-item">
            <text class="member-right-text">{{personalCenter.rightText}}</text>
            <image src="{{personalCenter.rightIcon}}" class="right_icon"></image>
        </view>
    </view>
    
    • w-user-member.wxss
    .member-center-view {
      position: relative;
      display: flex;
      justify-content: space-between;
      align-items: center;
      height: 130rpx;
      padding: 0 20rpx;
      background-color: #333333;
    }
    
    .member-image {
      width: 45rpx;
      height: 43rpx;
    }
    
    .right_icon {
      width: 18rpx;
      height: 35rpx;
      vertical-align: middle;
    }
    
    .member-right-text {
      font-size: 30rpx;
      position: absolute;
      top: 47rpx;
      right: 52rpx;
    }
    
    .member-text-view {
      display: flex;
      flex-flow: column nowrap;
      position: absolute;
      top: 18rpx;
      left: 80rpx;
    }
    
    .member-center-text {
      margin-bottom: 8rpx;
    }
    
    .member-center-desc {
      font-size: 24rpx;
    }
    
    • w-user-member.js
    Component({
      properties: {
        personalCenter: {type: Object, value: ''}
      }
    })
    
    • w-user-member.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    ⑤ w-user-order 四级目录

    • w-user-order.wxml
    <view class="order-container">
        <!-- 上面start -->
        <view class="order-title-column">
            <view class="left-content">
                <image src="../../../../assets/images/comment-map/order_icon.png" class="order-icon"></image>
                <text class="order-text">我的订单</text>
            </view>
            <view class="right-icon">
                <image src="../../../../assets/images/comment-map/right_icon.png" class="right-icon"></image>
            </view>
        </view>
        <!-- 菜单列表 -->
        <view class="order-menu-column">
            <block wx:for="{{menuItems}}" wx:key="index">
                <view class="menu-item">
                    <view class="item-icon-view"><image src="{{item.menuIcon}}" class="item-menu-icon"></image></view>
                    <text class="menu-title">{{item.menuTitle}}</text>
                </view>
            </block>
        </view>
    </view>
    
    • w-user-order.wxss
    .order-container {
      height: 400rpx;
      margin: 20rpx 0;
      padding: 20rpx;
      background-color: #333333;
    }
    
    .order-icon {
      width: 45rpx;
      height: 35rpx;
      vertical-align: middle;
    }
    
    .right-icon {
      width: 18rpx;
      height: 35rpx;
      vertical-align: middle;
    }
    
    .order-text {
      margin-left: 20rpx;
    
    }
    .menu-title {
      font-size: 24rpx;
    }
    
    .order-title-column {
      display: flex;
      justify-content: space-between;
      height: 65rpx;
    }
    
    .order-menu-column {
      display: flex;
      flex-flow: row wrap;
      text-align: center;
    }
    
    .menu-item {
      flex: 0 0 25%;
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      align-items: center;
      height: 160rpx;
    }
    
    .item-menu-icon {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      width: 50rpx;
      height: 50rpx;
    }
    
    .item-icon-view {
      position: relative;
      width: 90rpx;
      height: 90rpx;
      border-radius: 45rpx;
      background-color: #ffffff;
      margin-bottom: 10rpx;
    }
    
    • w-user-order.js
    Component({
      properties: {
        menuItems: {type: Array, value: []}
      }
    })
    
    • w-user-order.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    三、components 目录

    1、w-card-component 二级目录

    • w-card-component.wxml
    <block wx:for="{{movieCardData}}" wx:key="index">
        <view class="movie-card-container">
        <!-- title -->
        <view class="movie-card-title">
            <view class="title-item-container">
                <image src="{{item.gloryLableImageUrl}}" class="title-card-image"></image>
                <h2 class="title-text-desc">{{item.movieTitle}}</h2>
            </view>
            <view class="title-item-container">查看全部</view>
        </view>
        <!-- 影院地址 -->
        <view class="movie-location-container">
            <view class="location-item"><text>{{item.addresTitle}}</text></view>
            <view class="location-item">
                <image src="{{item.proLableImageUrl}}" class="location-pop-image"></image>
                <h2 class="location-pop-desc">{{item.popTitle}}</h2>
            </view>
        </view>
        <view class="address-det-text">{{item.addresDetail}}</view>
        <!-- 彩色小块 -->
        <view class="title-block-container">
            <view class="color-block-view">
                <h4 class="coloe-block-item">{{item.shopTitle1}}</h4>
                <h4 class="coloe-block-item">{{item.shopTitle2}}</h4>
                <h4 class="coloe-block-item">{{item.shopTitle3}}</h4>
                <h4 class="coloe-block-item">{{item.shopTitle4}}</h4>
            </view>
            <view>{{item.distanse}}</view>
        </view>
        <!-- 团购  优惠 -->
        <view class="footer-block-container">
            <view class="group-buy-view">
                <h6 class="group-buy-item">卡</h6>
                <h6 class="group-buy-item">{{item.discount1}}</h6>
                <h6 class="group-buy-item">团</h6>
                <h6 class="group-buy-item">{{item.discount2}}</h6>
            </view>
            <view class="price-text"><text class="text">{{item.price}}</text></view>
        </view>
        </view>
    </block>
    
    • w-card-component.wxss
    .movie-card-container {
      margin:20rpx;
      background-color: #333333;
    }
    .movie-card-container:first-child {
      margin-top: 20rpx;
    }
    .movie-card-title {
      position: relative;
      display: flex;
      justify-content: space-between;
      padding: 20rpx 0;
      border-bottom: 1px solid #262525;
    }
    
    .title-text-desc {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      left: 60rpx;
      color: #ffffff;
    }
    
    .title-card-image {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      left: 18rpx;
      width: 30rpx;
      height: 30rpx;
    }
    
    .title-item-container {
      color: #ffffff;
      font-weight: 600;
      margin: 0 20rpx;
    }
    
    /* title 下面 */
    .movie-location-container {
      position: relative;
      display: flex;
      justify-content: space-between;
      color: #ffffff;
      padding: 10rpx 0 15rpx 20rpx;
    }
    
    .location-pop-image {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      right: 160rpx;
      width: 30rpx;
      height: 30rpx;
    }
    
    .location-pop-desc {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      right: 20rpx;
      color: #ffffff;
      font-weight: 500;
    }
    
    .address-det-text {
      color: #ffffff;
      padding: 20rpx;
    }
    
    .title-block-container {
      display: flex;
      justify-content: space-between;
      color: #ffffff;
      padding: 0 20rpx 15rpx;
    }
    
    .coloe-block-item {
      display: inline-block;
      margin: 0 5rpx;
      color: #ffffff;
      padding: 5rpx 10rpx;
      border-radius: 10rpx;
    }
    
    .title-block-container .coloe-block-item:first-child {
      background-color: #FBC216;
    }
    
    .title-block-container .coloe-block-item:nth-child(2) {
      background-color: #A05Bf6;
    }
    
    .title-block-container .coloe-block-item:nth-child(3) {
      background-color: #38C566;
    }
    
    .title-block-container .coloe-block-item:nth-child(4) {
      background-color: #21C3F8;
    }
    
    .footer-block-container {
      display: flex;
      justify-content: space-between;
      color: #ffffff;
      padding: 0 20rpx 15rpx;
    }
    
    .group-buy-item {
      display: inline-block;
      margin: 0 5rpx;
      font-size: 15px;
    }
    
    .group-buy-item:first-child {
      margin-left: 0;
      padding: 0 4rpx;
      background-color: #38C566;
    }
    
    .group-buy-item:nth-child(3) {
      padding: 0 4rpx;
      background-color: #A05Bf6;
    }
    
    .group-buy-item:nth-child(4) {
      margin-left: 0;
    }
    
    .price-text .text {
      color: #f73171;
    }
    
    • w-card-component.js
    Component({
      properties: {
        movieCardData: {type: Array, value: []}
      }
    })
    
    • w-card-component.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    2、w-detail-component 二级目录

    • w-detail-component.wxml
    <block wx:for="{{detailItems}}" wx:key="index">
        <view class="movie-card-view">
            <view class="movie-detail-container">
                <view class="left-image-view"><image src="{{item.movieImageUrl}}" class="movie-image"></image></view>
                <view class="right-content-view">
                    <view class="movie-title-view">
                        <h1 class="movie-title-h1">{{item.movieTitle}}</h1>
                        <button class="buy-tickets-btn" size="mini">购票</button>
                    </view>
                    <view class="director-title-view location">
                        <text>导演:</text>
                        <text class="director-text-title">{{item.director}}</text>
                    </view>
                    <view class="to-star-view location">
                        <text>主演:</text>
                        <block wx:for="{{item.toStars}}" wx:key="index" wx:for-item="starItem">
                            <text class="to-star-item">{{starItem}}</text>
                        </block>
                    </view>
                    <view class="titlle-block-view location">
                        <block wx:for="{{item.blocktitles}}" wx:for-item="blockitem" wx:key="index">
                            <text class="title-block-item">{{blockitem}}</text>
                        </block>
                    </view>
                    <view class="score-view ">
                        <block wx:for="{{item.scortItems}}" wx:for-item="imageItem" wx:key="index">
                            <image src="{{imageItem}}" class="star-image-item"></image>
                        </block>
                        <text class="scort-text-desc">{{item.scoreText}}</text>
                    </view>
                    <view class="release-time-view">上映时间:<text>{{item.releaseTime}}</text> </view>
                </view>
            </view>
        </view>
    </block>
    
    • w-detail-component.wxss
    .movie-card-view {
      margin: 10rpx 20rpx;
    }
    
    .movie-detail-container {
      display: flex;
      justify-content: flex-start;
      font-size: 28rpx;
    }
    
    .movie-image {
      width: 298rpx;
      height: 370rpx;
      margin-right: 30rpx;
    }
    
    .movie-title-h1 {
      font-size: 35rpx;
    }
    
    .location {
      margin: 10rpx 0;
      color: #808080;
    }
    
    .to-star-item {
      padding-right: 10rpx;
    }
    
    .title-block-item {
      text-align: center;
      display: inline-block;
      background-color: #F71371;
      color: #ffffff;
      font-size: 30rpx;
      padding: 2rpx 14rpx;
      margin-right: 16rpx;
      border-radius: 10rpx;
    }
    
    .title-block-item:last-child {
      margin-right: 0;
    }
    
    .star-image-item {
      width: 40rpx;
      height: 40rpx;
    }
    
    .score-view {
      position: relative;
      margin-top: 20rpx;
    }
    
    .scort-text-desc {
      position: absolute;
      top: 6rpx;
      right: 65rpx;
      color: #F71371;
    }
    
    .right-content-view {
      width: 100%;
      position: relative;
    }
    
    .release-time-view {
      margin: 4rpx 0;
      color: #808080;
    }
    
    .buy-tickets-btn {
      position: absolute;
      top: 5rpx;
      right: 0rpx;
      color: #ffffff;
      font-size: 40rpx;
      background-color: #38c566;
    }
    
    • w-detail-component.js
    Component({
      properties: {
        detailItems: {type:Array, value: []}
      }
    })
    
    • w-detail-component.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    3、w-header-component 二级目录

    • w-header-component.wxml
    <view class="tab-control-container">
        <view class="left-city-view">
            <h2 class="city-text-h2">天津</h2>
            <image src="../../assets/images/searchbar/down_icon.png" class="left-down-image"></image>
        </view>
        <view class="center-tab-view">
            <block wx:for="{{headerItems}}" wx:key="index">
                <view class="center-tab-item {{index === currentIndex ? 'active' : ''}}" bindtap="tabClick" data-index="{{index}}">{{item}}</view>
            </block>
        </view>
        <view class="right-search-view"><image src="../../assets/images/searchbar/search_icon.png" class="right-search-image"></image></view>
      </view>
    
    • w-header-component.wxss
    .left-down-image {
      padding-left: 10rpx;
      width: 20rpx;
      height: 15rpx;
    }
    .city-text-h2 {
      color: #ffffff;
    }
    .tab-control-container {
      display: flex;
      justify-content: space-between;
      margin: 20rpx;
    }
    
    .center-tab-view {
      display: flex;
      justify-content: space-between;
    }
    
    .center-tab-view .center-tab-item {
      font-size: 36rpx;
      padding: 0 20rpx;
    }
    
    .right-search-image {
      width: 40rpx;
      height: 40rpx;
      margin-top: 8rpx;
    }
    
    .active {
      color: #f73171;
    }
    
    • w-header-component.js
    Component({
      /*组件的属性列表*/
      properties: {
        headerItems: {
          type: Array,
          value: []
        }
      },
      /*组件的初始数据*/
      data: {currentIndex: 1},
      /*组件的方法列表*/
      methods: {
        tabClick(event) {
          const index = event.target.dataset.index
          this.setData({currentIndex: index})
          this.triggerEvent('handlerTabControlEvent',{index:index},{})
        }
      }
    })
    
    • w-header-component.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    4、w-nav-component 二级目录

    • w-nav-component.wxml
    <view class="nav-container">
        <view class="nav-container-view">
            <block wx:for="{{navItems}}" wx:key="index">
                <view class="nav-item">
                    <text>{{item.title}}</text>
                    <image src="{{item.imageUrl}}" class="nav-option-image"></image>
                </view>
            </block>
        </view>
    </view>
    
    • w-nav-component.wxss
    .nav-container-view {
      display: flex;
      justify-content: space-around;
      margin-top: 20rpx;
      background-color: #333333;
      padding: 20rpx 0;
    }
    .nav-option-image {
      vertical-align: middle;
      width: 20rpx;
      height: 20rpx;
      margin-left:10rpx;
    }
    
    • w-nav-component.js
    Component({
      properties: {
        navItems: {type: Array, value: []}
      }
    })
    
    • w-nav-component.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    5、w-swiper-component 二级目录

    • w-swiper-component.wxml
    <view class="slide-swiper-view"> 
        <swiper class="swiper" indicator-color="white" indicator-dots autoplay interval="3000" circular indicator-active-color="#F73171">
            <block wx:for="{{swiperData}}" wx:key="index">
                <swiper-item><image src="{{item}}" class="slide-swiper-image" /></swiper-item>
            </block>
        </swiper>
    </view>
    
    • w-swiper-component.wxss
    .slide-swiper-view {
      height: auto;
      max-width: 760rpx;
      margin: 20rpx 20rpx;
      border-radius: 10rpx;
    }
    
    .slide-swiper-image {
      width: 100%;
      height: 100%;
      border-radius: 10rpx;
    }
    .swiper {
      height:320rpx;
    }
    
    • w-swiper-component.js
    Component({
      properties: {
        swiperData: {type: Array, value: []}
      }
    })
    
    • w-swiper-component.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    6、w-video-component 二级目录

    • w-video-component.wxml
    <block wx:for="{{videoItems}}" wx:key="index">
        <view class="video-container-view">
            <video class="video" src="{{item.videoPath}}" binderror="videoErrorCallback" enable-play-gesture show-mute-btn controls enable-auto-rotation controls poster="{{item.posterPath}}" title="{{item.title}}"></video>
        </view>
        <view class="video-footer-view">
            <view class="footer-item">
                <block wx:for="{{item.headPhotos}}" wx:key="index" wx:for-item="photoItem">
                    <image src="{{photoItem}}" class="head-image"></image>
                </block>
            </view>
            <view class="footer-item alignment">
                <image src="{{item.likeIcon}}" class="like-image"></image>
                <text>{{item.likeTitle}}</text>
            </view>
            <view class="footer-item alignment">
                <image src="{{item.shareIcon}}" class="like-image"></image>
                <text>{{item.shareTitle}}</text>
            </view>
            <view class="footer-item alignment">
                <image src="{{item.alignmentIcon}}" class="like-image"></image>
                <text>{{item.alignmentTitle}}</text>
            </view>
        </view>
    </block>
    
    • w-video-component.wxss
    .video {width: 100%;}
    
    .video-footer-view {
      display: flex;
      justify-content: space-evenly;
      padding: 10rpx;
    }
    
    .footer-item {text-align: center;}
    
    .head-image {
      margin: 0 5rpx;
      width: 60rpx;
      height: 60rpx;
      border-radius: 30rpx;
    }
    
    .like-image {
      vertical-align: middle;
      padding-right: 10rpx;
      width: 40rpx;
      height: 40rpx;
    }
    
    .alignment {
      margin-right: 5rpx;
      padding-top: 12rpx;
    }
    
    • w-video-component.js
    Component({
      properties: {
        videoItems: {type: Array, value: []}
      }
    })
    
    • w-video-component.json
    {
      "component": true,
      "usingComponents": {}
    }
    

    四、assets 目录

    images 二级目录

    ① banner 三级目录
    ad_1.png ad_2.png
    ② comment-map 三级目录
    avatar_1.jpeg collect_icon.png coupon_icon.png crown_icon.png diamand_icon.png evaluate_2_icon.png evaluate_icon.png like_icon.png movie_a_icon.png movie_card.png music_icon.png order_icon.png pay_icon.png right_icon.png score_icon.png share_icon.png speed_icon.png theatre_icon.png wallet_icon.png
    ③ movie-card 三级目录
    fire_icon.png price_icon.png rank_icon.png
    ④ scroll-view 三级目录
    movie_1.jpg movie_2.jpg movie_3.jpg movie_4.jpg movie_5.jpg movie_6.jpg movie_7.jpg movie_8.jpg movie_9.jpg movie_10.jpg movie_11.jpg movie_12.jpg movie_13.jpg movie_14.jpg movie_15.jpg movie_16.jpg movie_17.jpg
    ⑤ searchbar 三级目录
    data_icon.png down_icon.png option_icon.png polygon_icon.png scan_icon.png search_icon.png star_icon.png
    ⑥ swiper 三级目录
    swiper_1.jpg swiper_2.jpg swiper_3.jpg swiper_4.jpg swiper_5.jpg swiper_6.jpg swiper_7.jpg
    ⑦ tabbar 三级目录
    cinema_a_icon.png cinema_n_icon.png find_a_icon.png find_n_icon.png home_a_icon.png home_n_icon.png mine_a_icon.png mine_n_icon.png movie_a_icon.png movie_n_icon.png

    五、common 目录

    • const.js
    export const HIT = 'hit'
    export const SOON = 'soon'
    export const BOARD ='board'
    

    相关文章

      网友评论

        本文标题:May 13,2023【微信小程序】电影购票

        本文链接:https://www.haomeiwen.com/subject/mpyssdtx.html