同城上门送酒小程序 uniapp用户端+vue/php后端+商家端+配送端源码

news2024/11/18 15:30:26

前端uniapp 跨平台框架

后端php + vue.js框架 php7.2

mysql数据库 mysql5.6

 

 

<template>
    <view>
        <view id="mainPage" :style="{height:MainPageHeight+'rpx'}">
            <PageHome v-show="showPage==='initIndex'" ref="initIndex"/>
            <PageVip :isVip="isVip" v-show="showPage==='initVip'" ref="initVip" />
            <PageOrder v-show="showPage==='initOrder'" ref="initOrder" />
            <PageMy v-show="showPage==='initMy'" ref="initMy" />
        </view>
        <!-- tab -->
        <TabBar ref="tabbar" @changeTab="changeTab"></TabBar>
        <!-- <Load :show="showLoad"></Load> -->
        <!-- <view v-if="authorization">
            <Authorization :show="authorization"></Authorization>
        </view> -->
        <!-- 开屏广告 -->
        <block v-if="layout.open&&layout.open[0]">
            <OpenAdv ref="openadv" :styles="layout.open[0].styles"></OpenAdv>
        </block>
        <block v-else>
            <Load :show="showLoad"></Load>
        </block>
        </block>
        <!-- 弹窗优惠券 -->
        <!-- 1、商家优惠券2、平台优惠券3、新人专享弹窗 -->
        <tcyhq type="1" @close='sjhbshow=false' :co='sjhbInfo' v-model="sjhbshow" :color='tColor'></tcyhq>
        <tcyhq type="2" @close='pthbshow=false' :co='pthbInfo' v-model="pthbshow" :color='tColor'></tcyhq>
        <tcyhq type="3" @close='xrzxshow=false' :co='xrzxInfo' v-model="xrzxshow" :color='tColor'></tcyhq>
        <block v-if="currency.yszz && currency.yszz==1">
            <yszc :value="fwxyshow" @close='fwxyshow=false'></yszc>
        </block>
    </view>
</template>
<script>
    import {
        mapState,
        mapActions
    } from 'vuex'
    import utils from '@/common/utils.js'
    import PageHome from './component/PageHome.vue'
    import PageVip from './component/PageVip.vue'
    import PageOrder from './component/PageOrder.vue'
    import PageMy from './component/PageMy.vue'
    import Authorization from "@/components/Authorization.vue"
    import OpenAdv from "@/components/OpenAdv.vue"
    import TabBar from "@/components/TabBar.vue"
    import tcyhq from '@/components/template/tcyhq.vue'
    import yszc from './component/yszc.vue'
    
    export default {
        components: {
            PageHome,
            PageVip,
            PageOrder,
            PageMy,
            Authorization,
            OpenAdv,
            TabBar,
            tcyhq,
            yszc
        },
        data() {
            return {
                showPage:'',
                custom:true,
                animationIndex:false,  // 动画效果开关
                animationVip:false, // 动画效果开关
                animationOrder:false, // 动画效果开关
                animationMy:false, // 动画效果开关
                // 是否初次加载 
                initIndex:false,  
                initVip:false, 
                initOrder:false, 
                initMy:false, 
                navBarHeight:0,
                isVip:false,
                showLoad:true,
                authorization:true, //用户协议
                sjhbInfo: '',
                sjhbshow: false,
                pthbInfo: '',
                pthbshow: false,
                xrzxInfo: '',
                xrzxshow: false,
                fwxyshow: false,
            };
        },
        async onLoad(options) {
            this.query = options
            if (options && options.scene) {
                this.storeId = ''
                this.ldxId = decodeURIComponent(options.scene).split(',')[0]
                this.ldxType = decodeURIComponent(options.scene).split(',')[1]
            } 
            await this.init(options.changeTab)
            if(!uni.getStorageSync('isYszc')){
                this.fwxyshow = true
            }
            //console.log('yszz',uni.getStorageSync('isYszc'),this.currency)
            // this.go('navigateTo',`/yb_o2ov2/my/integral/integral-mall`)
            // this.changeTab({name:{id:'payVip'},category:'平台首页'})
        },
        onShow() {
            if (this.uId) {
                this.refreshUser({
                    nomask: 1,
                    get: 1,
                    now: 1,
                })
            }
        },
        onReady() {
        
        },
        onTabItemTap : function(e) {
            console.log(e);
            // e的返回格式为json对象: {"index":0,"text":"首页","pagePath":"pages/index/index"}
        },
        computed: {
            ...mapState({
                pxToRpxRate:state=>state.systemInfo.pxToRpxRate,
                MainPageHeight:state=>state.systemInfo.MainPageHeight,
                layout:state=>state.layout.index.body,
                storeSet: state => state.config.storeSet,
                currency: state => state.config.currency,
                user: state => state.user,
            })
        },
        watch:{
        },
        methods: {
            ...mapActions(["setSystemInfo","getConfig"]),
            async init(changeTab){
                this.showLoad = true
                // 获取平台系统设置
                this.getSystem()
                // 获取手机屏幕px转化rpx比
                this.GetPxToRpxRate()
                // 判断是否登录 在此后的请求 全部加上userID
                this.getLoginInfo({
                    inviteId: this.ldxId,
                    type: this.ldxType
                })
                // 获取支付 订单 外卖配置
                await this.setConfig()
                //获取首页拖拽布局
                await this.getLayout()
                // 获取定位信息 用于加载店铺信息
                await this.getLocInfo()
                // 加载首页
                if(this.storeSet.storeModel==='1'){
                    this.go('redirectTo',`/yb_o2ov2/home/store?storeId=${this.storeSet.selectStore}`)
                    return
                }
                if(changeTab){//从其他页面跳转过来
                    this.changeTab(JSON.parse(changeTab))
                }else{
                    await this.$refs.tabbar.changeTab(0)
                }
                this.showLoad = false
                if(this.$refs.openadv){
                    this.$refs.openadv.open = true
                }
                setTimeout(() => {
                    this.addFwjl({
                        storeId: this.storeSet.selectStore,
                        origin: '1'
                    })
                }, 1000)
                this.getXrzx()
                
            },
            async setConfig(){
                 this.getConfig({
                    name: 'payConfig',
                    api: this.api.config,
                    data: { ident: 'payConfig' }
                })
                 this.getConfig({
                    name:'orderSet',
                    api:this.api.orderSet,
                    data:{}
                })
                await this.getConfig({
                    name:'currency',
                    api:this.api.config,
                    data:{ident: 'currency'}
                })
                await this.getConfig({
                    name: 'storeSet',
                    api: this.api.config,
                    data: { ident: 'storeSet' }
                })
            },
            async GetPxToRpxRate(){
                if(!this.pxToRpxRate){
                    await this.setSystemInfo()
                }
            },
            async changeTab(urlItem){
                
                //每个页面需要一个init函数 用来做初始化
                let _this = this
                async function load(init){
                    _this.showPage = init
                    // 无init方法的组件不执行
                    if(_this[init]) return
                    // 初次加载页面
                    if(!_this.$refs[init].init) return
                    await _this.$refs[init].init()
                }
                if(urlItem.category !== '平台首页') return this.goUrl(urlItem)
                //点击初始化 需要第一次点击后加载页面请求 TODO
                let homeUrl = this.layout.menu[0].styles.imgUrl
                
                let tabIndex = ''
                switch(urlItem.name.id){
                    case 'index': //首页
                        tabIndex = homeUrl.findIndex(t=>t.url.name.id===urlItem.name.id)
                        await load('initIndex')
                        break;
                    case 'payVip'://月卡
                        tabIndex = homeUrl.findIndex(t=>t.url.name.id===urlItem.name.id)
                        await load('initVip')
                        // console.log(this.user.isVip)
                        this.isVip = this.user.isVip
                        break;
                    case 'myOrder'://订单
                        tabIndex = homeUrl.findIndex(t=>t.url.name.id===urlItem.name.id)
                        await load('initOrder')
                        break;
                    case 'member'://个人中心
                        tabIndex = homeUrl.findIndex(t=>t.url.name.id===urlItem.name.id)
                        await load('initMy')
                        break;
                }
                this.$refs.tabbar.animationIndex = tabIndex
            },
            async getXrzx() {
                let res = await this.util.request({
                    'url': this.api.sytchj,
                    'data':{
                        couponType:1
                    }
                })
                if (res.data.newCoupon) {
                    this.xrzxInfo = res.data.newCoupon.data
                    setTimeout(() => {
                        this.xrzxshow = true
                    }, 1000)
                }
                if (res.data.windowCoupons) {
                    if(res.data.windowCoupons.couponType=='1'){
                        this.pthbInfo = res.data.windowCoupons
                        setTimeout(() => {
                            this.pthbshow = true
                        }, 2000)
                    }else if(res.data.windowCoupons.couponType=='2'){
                        this.sjhbInfo = res.data.windowCoupons
                        setTimeout(() => {
                            this.sjhbshow = true
                        }, 2000)
                    }
                }
            },
        },
        onShareAppMessage() {
            // let p = `yb_o2o/index/index?userId=${this.uId}`
            return this.util.mpShare({
                t: this.system.forwardTitle,
                i: this.getImgS(this.system.forwardIcon),
                // p,
            })
        },
        onShareTimeline(e) {
            // console.log("点击分享pyq", e)
            return {
                title: this.system.shareTitle,
                imageUrl: this.getImgS(this.system.shareIcon),
            }
        },
    };
</script>
<style lang="scss" scoped>
    #mainPage{
        overflow: hidden;
    }
</style>
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/695743.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

序列到序列学习

将最后时刻的隐藏状态传给解码器。特定的“”表示序列开始词元&#xff0c;表示开始翻译。将此次翻译的结果作为下一次的输入&#xff0c;并将隐藏状态传递给下一时刻。最后可以拿到整个语言句子的输出。 将编码器最后一次的隐藏状态与解码器的第一次的输入&#xff0c;放在一…

工具篇9--Window 虚拟机安装

文章目录 前言一、虚拟机是什么&#xff1f;二、虚拟机安装1.下载虚拟机软件&#xff1a;2.下载centos 系统镜像&#xff1a;3.虚拟机安装&#xff1a;3.1 关闭杀毒软件&#xff1a;3.2 重启后继续安装&#xff1a;3.3 修改vm 安装的位置&#xff1a;3.4 勾掉用户体验后下一步完…

PostgreSQL Log 日志模块详解

本文讲的是操作日志&#xff0c;非 WAL 日志。 文章目录 背景日志模块原理Syslogger 核心模块日志消息通信日志轮转问题一问题二问题三问题四问题五 存在的问题刷盘性能日志轮转 参考资料 背景 PG 的日志模块是一个相对独立的模块&#xff0c;主要功能就是打印用户的操作日志以…

【MATLAB第46期】基于MATLAB的改进模糊卷积神经网络IFCNN分类预测模型

【MATLAB第46期】基于MATLAB的改进模糊卷积神经网络IFCNN多分类预测模型 一、展示效果 二、思路 在正常CNN卷积神经网络训练阶段之后&#xff0c;使用进化算法&#xff08;蜜蜂算法&#xff09;拟合深度学习权重和偏差。 本文案例数据中&#xff0c; 用深度模型进行4分类预测…

vmware安装centos将home磁盘合并至root下

使用vmware安装centos后&#xff0c;发现分的盘60G&#xff0c;其中有17G分到了home盘&#xff0c;现在想只用一个盘进行统一管理&#xff0c;于是将home盘删除掉&#xff0c;再合并到root盘下&#xff0c;这里是直接删除掉home,没有备份数据&#xff0c;步骤如下&#xff1a; …

时间表R(t) 和 学习曲线learning curve

import numpy as np import matplotlib.pyplot as plt# 设置参数 a1 2 a2 0.1 a3 0.1 a4 1 T 10# 生成曲线数据 t np.linspace(0, 20, 1000) y np.exp(-a2 * t**a1) a3 * (t / T)**a4# 绘制曲线 plt.plot(t, y) plt.xlabel(t) plt.ylabel(R(t)) plt.title(Evolution of…

亚马逊云科技发起“可持续发展伙伴计划” ,实现降本增效、安全合规的上云价值

6月27日&#xff0c;“2023亚马逊云科技中国峰会”在上海世博中心盛大启幕&#xff01; 在与全球客户的交流中&#xff0c;亚马逊云科技发现很多企业都在三个方面不断创建未雨绸缪&#xff1a;首先&#xff0c;降本增效&#xff1b;其次&#xff0c;保证业务安全合规&#xff…

vscode如何创建自定义快捷键模板(typescript React示例)

1.vs面板左下角设置-配置用户代码片段 2. 弹出搜索框中输入typescript会出来2个选项&#xff0c;选择第二个react 3.在代码片段中添加自己的快捷键设置片段&#xff08;用$TM_FILENAME_BASE$1可以获取当前文件的名称&#xff09; {// Place your snippets for typescriptreact…

python基础案例题(进制转换、字符串加密的实现、猜拳游戏、多种方法计算π)

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用: Python 3.8 Pycharm 专业版 1.进制转换 功能&#xff1a;获取十进制整数的二进制串&#xff0c;相当于内置函数bin。 算法分析&#xff1a; 对2辗转相除&#xff0c;直到商为0 每次所得余数逆序即可 流程图…

playerdemo开源项目win运行详细配置

playerdemo开源项目win运行详细配置 在项目同目录建立文件夹lib 一、下载ffmpeg 下载32位的ffmpeg&#xff0c;放在lib/ffmpeg路径下 二、下载sdl2 下载sdl2也放在 lib/sdl2路径下 三、配置 .pro文件 win32 { LIBS -L$$PWD/lib/SDL2/lib/x86 \-L$$PWD/lib/ffmpeg-4.2.…

springboot增加logback日志记录ip

1、增加logback配置文件&#xff1a; public class IPLogConfig extends ClassicConverter {Overridepublic String convert(ILoggingEvent event) {RequestAttributes requestAttributes RequestContextHolder.getRequestAttributes();if (requestAttributes null) {return…

could not read ok from ADB Server

ADB不能连接&#xff1a; D:\adb\platform-tools>adb.exe devices * daemon not running; starting now at tcp:5037 could not read ok from ADB Server * failed to start daemon adb.exe: failed to check server version: cannot connect to daemon关闭防火墙可以解决。…

星辰秘典:揭示Python项目的宇宙奥秘——宇宙星空模拟器

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;html css js&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;你好&#x…

Unity | HDRP高清渲染管线学习笔记:Post-processing后处理效果

目录 一、后处理效果顺序 二、16个后处理效果 1. Tonemapping&#xff08;色调映射&#xff09; 2.White Balance&#xff08;白平衡&#xff09; 3. Bloom&#xff08;泛光&#xff09; 3.1 Quality 3.2 Bloom 3.2.1 Threshold&#xff08;临界值&#xff09; 3.2.2 I…

为什么 Java 是我心中的 TOP 1

博主介绍&#xff1a; ✌博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家✌ Java知识图谱点击链接&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; &#x1f495;&#x1f495; 感兴趣的同学可以收…

10张读书笔记思维导图|让你告别书荒

又到了2023年下半年了&#xff0c;很多朋友又开始计划新一轮的读书计划&#xff0c;可是不知道读什么&#xff1f;也不知道怎么读&#xff1f; 今天小P就给大家分享30张思维导图读书笔记&#xff0c;让你在读书之前先了解书里讲了什么&#xff1f;帮你快速筛选自己喜欢的且有用…

47从零开始学Java之详解final修饰符、常量、常量方法与常量类

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 壹哥之前跟大家说过&#xff0c;在面向对象中&#xff0c;有abstract、static和final 这3个核心修饰符…

使用XLSX.utils.sheet_to_json()解析excel,给空的单元格赋值为空字符串

前言 今天用到XLSX来解析excel文件&#xff0c;调用XLSX.utils.sheet_to_json(worksheet)&#xff0c;发现如果单元格为空的话&#xff0c;解析出来的结果&#xff0c;就会缺少相应的key&#xff08;如图所示&#xff09;。但是我想要单元格为空的话&#xff0c;值就默认给空字…

BUUCTF刷题之路--ez_pz_hackover_20161

检查开启的保护&#xff1a; 32位程序&#xff0c;没有开启保护。看到这大概率猜到是可以利用shellcode。接着IDA查看下逻辑&#xff1a; 主函数&#xff1a; header函数&#xff1a; chall函数&#xff1a; 大致讲解下程序逻辑。首先会要求你输入一个名字。存入s这个缓冲区中。…

Redis7【④ 事务 管道】

1. Redis事务 Redis 事务&#xff08;Transaction&#xff09;是一组 Redis 命令的集合&#xff0c;这些命令被当作一个整体&#xff0c;按顺序地串行化执行&#xff0c;而不会被其他命令插入。 Redis 事务使用 MULTI、EXEC、WATCH、DISCARD 和 UNWATCH 这些命令来实现。 1.1…