uniapp封装门票等票务样式

news2024/11/17 23:31:47

先看效果图
在这里插入图片描述

ticketpage组件引用后,根据父级背景颜色改变镂空的颜色,空组件只有中间镂空的样式,上面是插槽heaer,下面内容是插槽content,可以自定义自己的内容和样式。我实现的最终效果是用的uview组件,如果复现需要项目引入。可以替换中间的虚线为背景图等适合自己的样式

组件代码:

<template>
    <view class="ticket-page">
        <view class="header">
            <slot name="header">header</slot>
        </view>
        <view class="line">
            <view class="middle">
                <view class="dashed"></view>
            </view>
        </view>
        <view class="content">
            <slot name="content">content</slot>
        </view>
    </view>
</template>

<script>
export default {
    // import引入的组件需要注入到对象中才能使用
    components: {},
    mixins: [],
    props: {
        bgColor: {
            default: '#F6F6F6',
        },
    },
    data() {
        // 这里存放数据
        return {
            dashed: '-',
        };
    },
    // 挂载方法
    mounted() {},
    // 方法集合
    methods: {},
    // 监听属性 类似于data概念
    computed: {},
    // 监控data中的数据变化
    watch: {},
    // 生命周期 - 创建完成(可以访问当前this实例)
    onLoad(options) {},
    // 生命周期 - 页面展示(不可以访问DOM元素)
    onShow() {},
    // 生命周期 - 挂载完成(可以访问DOM元素)
    onReady() {},
    onHide() {}, // 生命周期 - 监听页面隐藏
    // 生命周期 - 上拉加载更多
    //onReachBottom() {
    //  if (this.hotelParasm.pageNum * this.hotelParasm.pageSize >= this.total) {
    //  this.loadStatus = 'nomore' return;
    //  if (this.isloading) return;
    //if (this.isloading) return;
    //此处判断,上锁,防止重复请求
    //  if (!this.isloading) {
    //      this.hotelParasm.pageNum += 1
    //          this.gethotelList();
    //      }
    //},
    // 生命周期 - 下拉刷新数据
    //onPullDownRefresh() {
    //},
    onUnload() {}, // 生命周期 - 监听页面卸载
};
</script>
<style lang="scss" scoped>
.ticket-page {
    width: 690rpx;
    box-sizing: border-box;

    .header {
        min-height: 100rpx;
        background-color: white;
        border-radius: 15rpx 15rpx 0 0;
    }
    .line {
        width: 690rpx;
        display: flex;
        justify-content: flex-start;
        height: 30rpx;
        align-items: center;
        box-sizing: border-box;
        background: radial-gradient(circle at 0 50%, transparent 0.4rem, #fff 0.45rem) top left,
            radial-gradient(circle at 100% 50%, transparent 0.4rem, #fff 0.45rem) top right;
        background-size: 51% 100%;
        background-repeat: no-repeat;
        padding-left: 15rpx;
        padding-right: 15rpx;

        .middle {
            width: 660rpx;
            display: flex;
            justify-content: flex-start;
            align-items: center;
            box-sizing: border-box;
            background-color: white;
            overflow: hidden;
            .dashed {
                width: 100%;
                border: 1rpx dashed #cdcdcd;
            }
        }
    }

    .content {
        min-height: 100rpx;
        background-color: white;
        border-radius: 0 0 15rpx 15rpx;
    }
}
</style>

组件使用:

   <ticketpage>
                <template slot="header">
                    <view class="header">
                        <view class="title">巫山小三峡·小小三峡景区</view>
                        <view class="date">
                            <text class="iconfont icon-rili"></text>
                            <text>2023-6-16至2023-7-16</text>
                        </view>
                    </view>
                </template>
                <template #content>
                    <view class="content">
                        <u-cell :border="false">
                            <view slot="title" class="cell-title">购买数量</view>
                            <u-number-box slot="right-icon" @change="handleBuyNum" :integer="true" v-model="buyNum" step="1" :min="0" :max="10">
                                <view slot="minus" class="minus">
                                    <u-icon name="minus" size="12" color="#fff"></u-icon>
                                </view>
                                <text class="ipt" slot="input">{{ buyNum }}</text>
                                <view slot="plus" class="plus">
                                    <u-icon name="plus" color="#fff" size="12"></u-icon>
                                </view>
                            </u-number-box>
                        </u-cell>
                        <view style="padding: 0 30rpx 30rpx; box-sizing: border-box">
                            <view class="prompt">可在使用范围日期内任选一天游玩</view>
                            <view class="prompt">
                                <text style="color: #ff6100">条件退款 | </text>
                                <text style="color: #ff6100; margin-right: 30rpx">无需换票</text>
                                <text style="color: #666666">购买须知 ></text>
                            </view>
                        </view>
                    </view>
                </template>
            </ticketpage>
  <style lang="scss" scoped>
.buy-ticket {
    width: 100%;
    .home {
        background-color: #f1f1f1;
        padding: 30rpx;
        box-sizing: border-box;
        font-size: 24rpx;
        .header {
            padding: 30rpx;
            box-sizing: border-box;
            .title {
                font-size: 32rpx;
                font-weight: bold;
            }
            .date {
                width: 100%;
                background-color: #f7f8fa;
                color: #666;
                padding: 20rpx;
                box-sizing: border-box;
                margin-top: 20rpx;
            }
        }
        .content {
            box-sizing: border-box;
            .ipt {
                display: inline-block;
                width: 40rpx;
                height: 40rpx;
                border-radius: 10rpx;
                text-align: center;
                font-weight: bold;
                // background-color: #cdcdcd;
                margin: 0 6rpx;
                color: #333;
            }
            .cell-title {
                font-size: 32rpx;
                font-weight: bold;
            }
            .plus {
                min-width: 40rpx;
                height: 40rpx;
                display: flex;
                justify-content: center;
                align-items: center;
                border-radius: 4rpx;
                background-color: $red;
                border-radius: 6rpx;
            }
            .minus {
                width: 40rpx;
                height: 40rpx;
                display: flex;
                justify-content: center;
                align-items: center;
                border-radius: 4rpx;
                background-color: #cdcdcd;
                border-radius: 10rpx;
            }
            .prompt {
                height: 40rpx;
                line-height: 40rpx;
                color: #666666;
            }
        }
    }
}
</style>

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

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

相关文章

pytorch量化库使用(2)

FX Graph Mode量化模式 训练后量化有多种量化类型&#xff08;仅权重、动态和静态&#xff09;&#xff0c;配置通过qconfig_mapping &#xff08; prepare_fx函数的参数&#xff09;完成。 FXPTQ API 示例&#xff1a; import torch from torch.ao.quantization import (ge…

ACL2023 | 赔了?引入GPT-3大模型到智能客服,竟要赔钱?

作者 | 小戏、Python 关于大模型的商业落地&#xff0c;一个非常容易想到的场景就是智能客服&#xff0c;作为不止是大模型也是 NLP 领域的一个最主要的应用场景&#xff0c;由于人工客服的高昂成本&#xff0c;AI 客服伴随着模型技术的发展也逐步走进我们的生活&#xff0c;在…

vue iview table Tooltip内容过多闪屏解决

vue的项目&#xff0c;框架是iview 客户反应&#xff0c;指令描述的内容有几百个字&#xff0c;鼠标悬浮&#xff0c;浏览器开始闪烁 解决思路是加宽度限制&#xff0c;滚动&#xff0c; 后面发现像是transfer属性的bug&#xff0c;触碰浏览器底部&#xff0c;距离不够造成 …

重新理解 RocketMQ Commit Log 存储协议

最近突然感觉&#xff1a;很多软件、硬件在设计上是有 root reason 的&#xff0c;不是 by desgin 如此&#xff0c;而是解决了那时、那个场景的那个需求。一旦了解后&#xff0c;就会感觉在和设计者对话&#xff0c;了解他们的思路&#xff0c;学习他们的方法&#xff0c;思维…

C#可视化 国产热剧信息查询(具体做法及全部代码)

目录 题目&#xff1a; 做法&#xff1a; 代码部分&#xff1a; DBHelper类 From1主窗体代码 题目&#xff1a; 1. 首次打开页面&#xff0c;展示所有汽车信息列表&#xff0c;如图 1 所示。 2.双击第二行右边内容全部发生改变 数据库设计及内容 做法&#xff1a; 首先设置d…

React hooks文档笔记(五)useEffect——解决异步操作竞争问题

1.开发环境下组件加载两次&#xff1f; 非bug&#xff0c;重新安装组件仅在开发过程中发生&#xff0c;帮助找到需要清理的效果。在生产环境中只会加载一次。 React 将在 Effect 下次运行之前以及卸载期间调用您的清理函数。return () > {}; 2. &#x1f330;订阅事件情况…

Python连接MySQL数据库(简单便捷)

&#x1f412;&#xff0c;本文中&#xff0c;使用到的工具有&#xff1a;Pycharm&#xff0c;Anaconda&#xff0c;MySQL 5.5&#xff0c;spyder(Anaconda) 什么是 PyMySQL&#xff1f; PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库&#xff0c;Python2 中则…

Java 语言基础练习题

Java 语言基础练习题 Key Point ●包的基本语法 ●Java 语言中的标识符&#xff0c;命名规范 ●八种基本类型 ●基本操作符 ●if 语句和switch 语句 练习 1.&#xff08;标识符命名&#xff09;下面几个变量中&#xff0c;那些是对的&#xff1f;那些是错的&#xff1f;错的请…

C++学习 程序控制结构

程序控制结构 以某种顺序执行的一系列动作&#xff0c;用于解决某个问题。包括 顺序结构、选择结构、循环结构。 顺序结构 按照顺序正常执行。前几篇文章的代码都是顺序结构的体现。 选择结构 执行满足条件的语句。 if 结构&#xff1a;if (表达式){} 表达式为真则执行&…

Linux历史及环境搭建(VMware搭建CentOS7环境)

Linux历史及环境搭建 1.Linux历史1.1 UNIX发展的历史1.2 Linux发展历史1.2.1 开源1.2.2 官网1.2.3 发行版本 2.VMware配置CentOS7环境2.1 CentOS下载2.2 配置环境2.3 切换国内阿里源2.4 无图形化界面开机 结语 1.Linux历史 在这里简要介绍Linux的发展史。要说 Linux&#xff0…

机器学习李宏毅学习笔记36

文章目录 前言Meta learning应用总结 前言 Meta learning&#xff08;二&#xff09;应用方向 Meta learning应用 回顾gradient descen Θ0&#xff08;initial的参数&#xff09;是可以训练的&#xff0c;一个好的初始化参数和普通的是有很大差距的。可以通过一些训练的任务…

Python通过私信消息提取博主的赠书活动地址

文章目录 前言背景设计开发1.引入模块2.获取私信内容3.根据文本提取url的方法4.获取包含‘书’的url5.程序入口 效果总结最后 前言 博主空空star主页空空star的主页 大家好&#xff0c;我是空空star&#xff0c;本篇给大家分享一下《通过私信消息提取博主的赠书活动地址》。 背…

通用策略04丨ORB魔改框架+自适应动量过滤模板

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 大家好&#xff0c;今天我们分享2023年度第4期通用策略——ORB魔改框架自适应动量过滤模板。 本期策略是2023年通用系列第4篇。本期主要内容有对ORB原版的逻辑魔改&#xff0c;其次我们将跨日周期均线过…

现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?

停机迁移方案 最 low 的方案&#xff0c;就是很简单&#xff0c;大家伙儿凌晨 12 点开始运维&#xff0c;网站或者 app 挂 个公告&#xff0c;说 0 点到早上 6 点进行运维&#xff0c;无法访问。 接着到 0 点停机&#xff0c;系统停掉&#xff0c;没有流量写入了&#xff0c;…

设计一个高流量高并发的系统需要关注哪些点

1、设计原则 1.1、系统设计原则 在设计一个系统之前&#xff0c;我们先要有一个统一且清晰的认知&#xff1a;不要想着一下就能设计出完美的系统&#xff0c;好的系统是迭代出来的。不要复杂化&#xff0c;要先解决核心问题。但是要有先行的规划&#xff0c;对现有的问题有方…

字符与代表数据的转化

目的 在与设备交互当中&#xff0c;大都以十六进制的数进行交互。 而显示给用户时&#xff0c;是以字符的形式显示。 这中间就需要字符与其所代表的数值的转化&#xff0c;比如&#xff1a; ‘0F’---->0x0F 这怎么实现呢&#xff0c;一个是字符&#xff0c;另一个是数字&a…

Apache seatunnel集群部署

跳转到安装目录 cd /opt/soft/seatunnel 1.设置环境变量 export SEATUNNEL_HOME/opt/soft/seatunnel export PATH$PATH:$SEATUNNEL_HOME/bin 启动服务端 ./bin/seatunnel-cluster.sh -d 启动客户端 ./bin/seatunnel.sh --config ./config/kafka2gbase_udf.conf 这样就启…

Vue3 数字滚动插件 vue-countup-v3

文章目录 介绍效果安装属性事件配置项完整样例 介绍 vue-countup-v3 插件是一个基于 Vue3 的数字动画插件&#xff0c;用于在网站或应用程序中创建带有数字动画效果的计数器。通过该插件&#xff0c;我们可以轻松地实现数字的递增或递减动画&#xff0c;并自定义其样式和动画效…

软件测试职业发展的7个阶段,哪个都吃香!

首先谈谈我在软件测试行业的亲身经历&#xff1a;我的一位同事曾经很认真地问过我一个问题&#xff0c;他说他现在从事软件测试工作已经4年了&#xff0c;但是他不知道现在的工作和自己在工作3年时有什么不同&#xff0c;他想旁观者清&#xff0c;也许我能回答他的问题。此外他…

手写vue-diff算法(一)

Vue初始化流程 1.Vue流程图 Vue流程图&#xff1a; Vue的初始化流程&#xff0c;默认会创建一个Vue实例&#xff0c;执行初始化、挂载、模板编译操作&#xff0c;模板被编译成为render函数&#xff1b;在render函数初始化时会执行取值操作&#xff0c;从而进入getter方法对当…