快速搭建美团外卖(第三方)微信小程序(附精选源码32套,涵盖商城团购等)

这篇具有很好参考价值的文章主要介绍了快速搭建美团外卖(第三方)微信小程序(附精选源码32套,涵盖商城团购等)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章来源地址https://www.toymoban.com/news/detail-753322.html

项目使用的技术栈

1、数据请求: [flyio.js]同时支持浏览器、小程序、Node、Weex的基于Promise的跨平台http请求库。可以让您在多个端上尽可能大限度的实现代码复用
2、css预编译器: [stylus]-基于Node.js的CSS的预处理框架
3、数据来源:[EasyMock]-为测试提供模拟数据
4、整体框架: mpvue
5、地图:腾讯地图api

主体页面主要由首页,订单,我的页面组成

tabBar: {
      color: "#272636",
      selectedColor: "#FFD161",
      backgroundColor: "#fff",
      borderStyle: "#a8a8a8",
      list: [
        {
          pagePath: "pages/home/main",
          iconPath: "static/images/home.png",
          selectedIconPath: "static/images/home-selected.png",
          color:"white",
          text: "首页"
        },
        {
          pagePath: "pages/order/main",
          iconPath: "static/images/order.png",
          selectedIconPath: "static/images/order-selected.png",
          text: "订单"
        },
        {
          pagePath: "pages/my/main",
          iconPath: "static/images/my.png",
          selectedIconPath: "static/images/my-selected.png",
          text: "我的"
        }
      ]
    }

首页预览:
美团app开发代码,Uniapp,微信小程序,小程序
美团app开发代码,Uniapp,微信小程序,小程序
美团app开发代码,Uniapp,微信小程序,小程序

首页主要代码:

<template>
   <div class="home">
    <div class="mask" v-show="isHidden" @click="mask1Cancel">
        <sortList></sortList>
        <div class="overall-sort-list">
            <div v-for="(item,index) in sortList" :key="index">
                <div class="overall-sort" @click="sortSelected">{{item.sort}}</div>
            </div> 
        </div>
    </div>
     <sprinner v-if="isShow"></sprinner>
    <search></search>
    <h-swiper></h-swiper>
        <div class="title">
            <div class="line"></div>
            <div class="text">附近商家</div>
            <div class="line"></div>
        </div>
        <div class="select">
            <div class="sort-list">
                <div class="sort" @click="onOverallTag">综合排序{{sortSelected}}
                <image src="/static/images/down.png" style="width:20rpx;height:20rpx;"/></div>
                <div :data-index="0" @click="onTapTag" class="sort " :class="{'sort-active': selected == 0}">销量最高</div>
                <div :data-index="1" @click="onTapTag" class="sort" :class="{'sort-active': selected == 1}">距离最近</div>
                <div class="sort" @click="onFilter">筛选
                    <image src="/static/images/screen.png" style="width:22rpx;height:22rpx;"/>
                </div>
            </div>
        </div>
        <scroll-view>
            <div class="restaurantsList">
                    <div class="restaurants-list" v-for="(item,index) in restaurant" :key="index" @click="toIndex">
                        <div class="restaurants-info-image"><image :src="item.src" class="restaurants-image"/></div>
                        <div class="restaurants-info">
                        <div class="restaurants-info-name">{{item.name}}</div>
                        <div class="restaurants-info-rating">
                             <star :size="24" :score="item.score"></star>
                            <div 
                            class="restaurants-info-rating-sales">月售 {{item.sales}}</div>
                        </div>
                        <div class="restaurants-info-price">
                            起送 {{item.initial_price}}| 配送 {{item.distribution_price}}
                        </div>
                    </div>
                    <div class="restaurants-distribution">
                        <span class="restaurants-distribution-time">{{item.time}} 分钟</span>
                        <span class="restaurants-distribution-distance"> {{item.distance}}</span> 
                      
                    </div>
                    </div>
            </div>
        </scroll-view>
   
   </div>
    
</template>

定位预览效果:

美团app开发代码,Uniapp,微信小程序,小程序

使用微信接口进行定位

 getWXLocation(success, fail, complete) {
        wx.getLocation({
            type: 'gcj02',
            success: success,
            fail: fail,
            complete: complete
        });
    },

获取location参数

getLocationParam(location) {
        if (typeof location == 'string') {
            var locationArr = location.split(',');
            if (locationArr.length === 2) {
                location = {
                    latitude: location.split(',')[0],
                    longitude: location.split(',')[1]
                };
            } else {
                location = {};
            }
        }
        return location;
    },

处理用户参数是否传入坐标进行不同的处理

locationProcess(param, locationsuccess, locationfail, locationcomplete) {
        var that = this;
        locationfail = locationfail || function (res) {
            res.statusCode = ERROR_CONF.WX_ERR_CODE;
            param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
        };
        locationcomplete = locationcomplete || function (res) {
            if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {
                param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
            }
        };
        if (!param.location) {
            that.getWXLocation(locationsuccess, locationfail, locationcomplete);
        } else if (that.checkLocation(param)) {
            var location = Utils.getLocationParam(param.location);
            locationsuccess(location);
        }
    }

POI周边检索

 search(options) {
        var that = this;
        options = options || {};

        Utils.polyfillParam(options);

        if (!Utils.checkKeyword(options)) {
            return;
        }

        var requestParam = {
            keyword: options.keyword,
            orderby: options.orderby || '_distance',
            page_size: options.page_size || 10,
            page_index: options.page_index || 1,
            output: 'json',
            key: that.key
        };

        if (options.address_format) {
            requestParam.address_format = options.address_format;
        }

        if (options.filter) {
            requestParam.filter = options.filter;
        }

        var distance = options.distance || "1000";
        var auto_extend = options.auto_extend || 1;

        var locationsuccess = function (result) {
            requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend +")";
            wx.request(Utils.buildWxRequestConfig(options, {
                url: URL_SEARCH,
                data: requestParam
            }));
        }
        Utils.locationProcess(options, locationsuccess);
    }

sug模糊检索

getSuggestion(options) {
        var that = this;
        options = options || {};
        Utils.polyfillParam(options);

        if (!Utils.checkKeyword(options)) {
            return;
        }

        var requestParam = {
            keyword: options.keyword,
            region: options.region || '全国',
            region_fix: options.region_fix || 0,
            policy: options.policy || 0,
            output: 'json',
            key: that.key
        };
        wx.request(Utils.buildWxRequestConfig(options, {
            url: URL_SUGGESTION,
            data: requestParam
        }));
    }

逆地址解析

reverseGeocoder(options) {
        var that = this;
        options = options || {};
        Utils.polyfillParam(options);
        var requestParam = {
            coord_type: options.coord_type || 5,
            get_poi: options.get_poi || 0,
            output: 'json',
            key: that.key
        };
        if (options.poi_options) {
            requestParam.poi_options = options.poi_options
        }

        var locationsuccess = function (result) {
            requestParam.location = result.latitude + ',' + result.longitude;
            wx.request(Utils.buildWxRequestConfig(options, {
                url: URL_GET_GEOCODER,
                data: requestParam
            }));
        };
        Utils.locationProcess(options, locationsuccess);
    }

地址解析

geocoder(options) {
        var that = this;
        options = options || {};
        Utils.polyfillParam(options);

        if (Utils.checkParamKeyEmpty(options, 'address')) {
            return;
        }

        var requestParam = {
            address: options.address,
            output: 'json',
            key: that.key
        };

        wx.request(Utils.buildWxRequestConfig(options, {
            url: URL_GET_GEOCODER,
            data: requestParam
        }));
    }

获取城市列表

 getCityList(options) {
        var that = this;
        options = options || {};
        Utils.polyfillParam(options);
        var requestParam = {
            output: 'json',
            key: that.key
        };

        wx.request(Utils.buildWxRequestConfig(options, {
            url: URL_CITY_LIST,
            data: requestParam
        }));
    }

获取对应城市ID的区县列表

getDistrictByCityId(options) {
        var that = this;
        options = options || {};
        Utils.polyfillParam(options);

        if (Utils.checkParamKeyEmpty(options, 'id')) {
            return;
        }

        var requestParam = {
            id: options.id || '',
            output: 'json',
            key: that.key
        };

        wx.request(Utils.buildWxRequestConfig(options, {
            url: URL_AREA_LIST,
            data: requestParam
        }));
    }

用于单起点到多终点的路线距离(非直线距离)计算:
* 支持两种距离计算方式:步行和驾车。
* 起点到终点最大限制直线距离10公里。

calculateDistance(options) {
        var that = this;
        options = options || {};
        Utils.polyfillParam(options);

        if (Utils.checkParamKeyEmpty(options, 'to')) {
            return;
        }

        var requestParam = {
            mode: options.mode || 'walking',
            to: Utils.location2query(options.to),
            output: 'json',
            key: that.key
        };

        var locationsuccess = function (result) {
            requestParam.from = result.latitude + ',' + result.longitude;
            wx.request(Utils.buildWxRequestConfig(options, {
                url: URL_DISTANCE,
                data: requestParam
            }));
        }
        if (options.from) {
            options.location = options.from;
        }
        
        Utils.locationProcess(options, locationsuccess);
    }

订单页预览

美团app开发代码,Uniapp,微信小程序,小程序
美团app开发代码,Uniapp,微信小程序,小程序
美团app开发代码,Uniapp,微信小程序,小程序
美团app开发代码,Uniapp,微信小程序,小程序

订单页主要代码

<template>
    <div class="order">
        <div class="empty" v-if="isShow">
          <div class="image">
            <image src="/static/images/orderImg.png"/>
          </div>
          <div class="order" @click="toIndex">
             <span class="text">立即下单</span>
          </div>
         
        </div>
      <scroll-view class="container" :scroll-y="true">
        <div class="orderList" v-for="(item,index) in orderList" :key="index">
          <div class="order-title">
            <div class="order-title-restaurantName">
              <span class="name">{{item.name}}</span>
             <span class="iconfont icon-icon icon"></span>
            </div>
            <div class="order-title-state">商家已接单</div>
          </div>
          <div class="order-content">
            <image class="order-content-restaurantImg" :src="item.icon"/>
            <div class="order-content-info">
              <div class="order-content-info-price">{{item.price}}</div>
              <div class="order-content-info-howToDistribute">美团小助手提供服务</div>
            </div>
          </div>
            <div class="order-desc">{{item.count}}件商品,实付<span style="font-weight:700;">{{item.count*item.price}}</span></div>
          <div class="order-footer">
            <div class="order-footer-orderAgain">再来一单</div>
            <div class="order-footer-goToComment">去评论</div>
          </div>
        </div>
      </scroll-view>
    </div>
</template>

<script>
   import util from '@/utils/util'
export default {
    data() {
        return {
             orderList:[],
             isShow: true
        }
    },
    onShow(){
       
         try {
            var value = wx.getStorageSync('selectFoods')
            if (value) {
              this.isShow = false;
              this.orderList=value;
            }
          } catch (e) {
            console.log(e)
          };

         
    },
    methods: {
      toIndex() {
          wx.switchTab({
            url: '/pages/home/main',
          })
        
      }

    }
}
</script>

<style lang="stylus" scoped>
  .empty
    display flex
    flex-direction column
    justify-content center
    align-items center
    margin-top 25%
    .order
      height 68rpx
      width 240rpx
      background-color #ffd300
      text-align center
      margin-top 40rpx
      line-height 68rpx
      border-radius 5rpx

  .container
    height: 100%
    .orderList
      width 100%
      padding 15rpx
      border 100rpx 0
      border-style solid
      border-color #ECECEC
      .order-title
        width 100%
        height 70rpx
        line-height 70rpx
        border-bottom 1rpx solid #ECECEC
        .order-title-restaurantName
          width 200rpx
          float left
          height 100%
          font-size 30rpx
          .name 
            padding-right 10rpx
          .icon
            color #b4b4b4
        .order-title-state
          width 200rpx
          float right
          color #ffc648
          margin-right -15rpx
          font-size 28rpx
      .order-content
        height 250rpx
        display flex
        align-items center
        .order-content-restaurantImg
          width 125rpx
          height 125rpx
        .order-content-info
          font-size 25rpx
          flex 1
          display flex
          flex-direction column
          .order-content-info-price,.order-content-info-howToDistribute
            height 42rpx
            line-height 42rpx
            margin-left 30rpx
          .order-content-info-price
            color: red
            font-size: 30rpx
      .order-desc
        float right 
        font-size 30rpx
        width 335rpx
        margin-bottom 40rpx
        line-height 30rpx
        margin-right 10rpx
      .order-footer
        width 100%
        height 90rpx
        display flex
        justify-content flex-end
        font-size 28rpx
        .order-footer-goToComment,.order-footer-orderAgain
          margin-top 15rpx
          margin-right: 40rpx
          height 70rpx
          line-height 70rpx
          width 200rpx
          text-align center
          border 1rpx solid #ECECEC
        .order-footer-orderAgain
          margin-right 20rpx
        .order-footer-goToComment
          background #FFD161
        
</style>

精选32套源码目录:

IT之家小程序版客户端(使用 Mpvue 开发,兼容 Web)ithome-lite-master.zip

mpvue 仿网易严选mpvue-shop-master.zip

mpvue-音乐播放器mpvue-music-master.zip

mpvue性能测试与体验miniweibo-master.zip

mpvue改造的日历.zip

mpvue框架仿滴滴出行didi-master.zip

mpVue高仿美团小程序教程mpvue-meituan-master.zip

uni APP自动更新并安装.vue

uni-app nvue沉浸式状态栏(线性渐变色).vue

uni-app 二维码生成器分享wxqrcode.zip

uni-app 侧边导航分类,适合商品分类页面uni-app-left-navigation-master.zip

uni-app 自定义底部导航栏uni-app-bottom-navigation-master.zip

uni-app全局变量的几种实现方式.zip

uni-app的markdown富文本编辑器插件uniapp-markdown-master.zip

uni-app自定义导航栏title-custom.zip

uniapp聊天实例,支持图片,语音,表情.zip

uniapp选择器,包含一级,二级级联,三级级联uniapp-picker-master.zip

vue-mpvue-ChatRobot聊天机器人vue-mpvue-ChatRobot-master.zip

【小程序】CNode社区mpvue-cnode-master.zip

【插件、图表】7种图表漂亮丰富uniCharts.zip

一款播课类小程序, 基于 mpvue 构建mp-podcast-mpvue-master.zip

云档新版小程序端,基于mpvue开发cloud-doc-v2-master.zip

仿uc浏览器列表.vue

仿扎克新闻mpZAKER-master.zip

仿网易云UImusic播放器mpvue-music-master.zip

仿追书神器的小说阅读器小程序wx-book-master.zip

参照米家APP布局和样式,编写的一款智能家居小程序smart-home-master.zip

商城实例mpvue-xbyjShop-master.zip

基于 mpvue 实现豆瓣电影微信小程序mpvue-douban-master.zip

基于mpvue的优酷mpvue-youku-master.zip

校园助手示例SHUhelper-master.zip

类似mui中的chat(聊天窗口)实现uniapp-chat-master.zip

美团外卖(第三方)开源程序mpvue-master.zip

美食搜索mpvue-FG-master.zip

豆瓣平分mpvue-douban-pingfen-master.zip

顶部tabbar.vue

源码截图:
美团app开发代码,Uniapp,微信小程序,小程序

说明

如果本项目对您有帮助,欢迎 “点赞,关注” 支持一下 谢谢~

源码获取关注公众号「码农园区」,回复 【uniapp源码】
美团app开发代码,Uniapp,微信小程序,小程序

到了这里,关于快速搭建美团外卖(第三方)微信小程序(附精选源码32套,涵盖商城团购等)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 - 使用第三方字体

    在微信小程序中,我们可以通过引入第三方字体来实现更加个性化和独特的文字效果。本文将详细介绍如何引入并使用第三方字体。 步骤一:选择字体文件 首先,我们需要选择一个适合的第三方字体文件。可以在网络上搜索并下载免费的字体文件,也可以购买商业字体。确

    2024年02月03日
    浏览(65)
  • 微信小程序第三方插件申请

    记录下小程序申请插件的页面,之前自己找了很久,方便后续使用 1. 先找到自己需要的第三方插件的appid 2. 登录微信公众平台后台(mp.weixin.qq.com) 3. 打开小程序插件页面          https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=插件appid         如小程序直播的页面就是:http

    2024年02月09日
    浏览(49)
  • app第三方支付,微信小程序支付

    最近公司开发一个app,需要从app跳转到小程序去微信支付,当时在网上看了好长时间没有看到适合自己的,在这里记录一下,也方便自己以后可以再复习一下,毕竟本人脑子不太好使,只能记下来。 app跳转页面携带参数到小程序 小程序接收参数,拉起微信支付

    2024年02月16日
    浏览(69)
  • 微信小程序跳转第三方页面

    使用web-view,官方说明web-view 承载网页的容器。会自动铺满整个小程序页面, 个人类型的小程序暂不支持使用 具体实现思路: 1、首先需要配置小程序的公众平台当中的开发管理选项的业务域名,具体看官方指引 2、在小程序当中新建一个页面文件来单独存放web-view组件,sr

    2024年02月11日
    浏览(63)
  • 微信小程序使用 npm 安装第三方包

    微信小程序支持使用 npm 安装第三方包。 在小程序根目录下执行 npm install 第三方包名 安装 npm 包。 点击开发者工具中的菜单栏: 工具 -- 构建 npm 完成构建。 就可以使用 npm 包了。

    2024年02月11日
    浏览(66)
  • 微信小程序使用第三方ui组件库

    第三方的ui组件有很多,本篇文章主要介绍Vant Weapp。 https://vant-contrib.gitee.io/vant-weapp/#/quickstart 先在微信开发者工具终端通过命令安装vant weapp: 通过 npm 安装 npm i @vant/weapp -S --production 通过 yarn 安装 yarn add @vant/weapp --production 安装 0.x 版本 npm i vant-weapp -S --production 安装vant weap

    2024年02月12日
    浏览(61)
  • 微信小程序使用webview打开第三方地址

    1、在page下创建一个webview目录文件包含index.js index.wxml,配置好路由 2、index.js 3、index.wxml 4、跳转 (地址后拼接参数需要转码) 注意:webview页面的title 取得是第三方地址的title标签的内容,且webview页面不支持自定义标题

    2024年02月10日
    浏览(62)
  • uniapp微信小程序引入第三方广告插件

      以Slime广告插件为例。 一、微信小程序后台申请相关插件   二、manifest.json文件 三、pages.json文件 四、要使用该插件的vue页面 引用插件后就可以使用插件的相关方法。 附:Slime插件文档 Slime | 小程序插件 | 微信公众平台

    2024年02月11日
    浏览(67)
  • 如何为微信小程序添加第三方支付功能

    随着微信小程序的普及和应用,越来越多的商家希望在小程序中接入第三方支付功能,以提高用户购买体验和支付安全性。本文将详细介绍如何为微信小程序添加第三方支付功能,并提供具体的开发流程及注意事项。 一、什么是第三方支付 第三方支付平台是指一种网上支付

    2024年02月07日
    浏览(69)
  • 微信小程序跳转第三方H5的方法

    使用web-view标签进行跳转 首先建立一个新的页面,这个页面就是为了第三方H5页面准备的。 在index.wxml中,写以下代码 在index.js中,写一下代码 在需要点击跳转第三方页面的地方,js文件中用以下代码实现跳转 以上代码就实现了跳转第三方链接/H5页面 项目中大部分时候,需要

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包