前端Vue组件之仿京东拼多多领取优惠券弹出框popup 可用于电商商品详情领券场景使用

news2024/11/18 14:32:43

随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随意的进行组合。大大提升开发效率低,降低维护成本。 组件化对于任何一个业务场景复杂的前端应用以及经过多次迭代之后的产品来说都是必经之路。组件化要做的不仅仅是表面上看到的模块拆分解耦,其背后还有很多工作来支撑组件化的进行,例如结合业务特性的模块拆分策略、模块间的交互方式和构建系统等等 。 前端的组件化,其实是对项目进行自上而下的拆分,把通用的、可复用的功能以黑盒的形式封装到一个组间中,然后暴露一些开箱即用的函数和属性配置供外部组件调用,实现与业务逻辑的解耦,来达到代码间的高内聚、低耦合,实现功能模块的可配置、可复用、可扩展。

今天给大家介绍的一款组件是仿京东拼多多领取优惠券弹出框popup组件, 可用于电商商品详情领券场景使用,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13405

效果图如下:

 

format,png

format,png

format,png

# cc-defineCoupon

#### 使用方法

```使用方法

<!-- 选择优惠券弹出层 -->

<view class="mask" catchtouchmove="preventTouchMove" v-if="couponshow == true" @tap="hidecoupon"></view>

<view class="coupon" :style="'bottom:' + (couponshow == true ? '0px':'')">

<scroll-view class="scrolls" scroll-y>

<!-- colors:按钮颜色 couponList:优惠卷列表数据  @onReceive:领取或立即使用按钮事件 -->

<cc-defineCoupon colors="#fa436a" :couponList="couponList" @onReceive="onReceive"></cc-defineCoupon>

</scroll-view>

</view>

          // 打开优惠券弹框

opencoupon() {

this.couponshow = true

},

// 关闭优惠券弹框

hidecoupon() {

this.couponshow = false

},

//领取优惠券 立即使用事件

onReceive(item, index) {

console.log(item, index)

if (item.status == 1) {

// 立即使用 事件

} else {

this.couponList[index].status = 1 //领取成功

uni.showToast({

title: '领取成功',

icon: 'none'

})

}

},

```

#### HTML代码实现部分

```html

<template>

<view class="content">

<button style="margin-top: 38px;" @click="opencoupon()">弹出优惠券</button>

<!-- 选择优惠券弹出层 -->

<view class="mask" catchtouchmove="preventTouchMove" v-if="couponshow == true" @tap="hidecoupon"></view>

<view class="coupon" :style="'bottom:' + (couponshow == true ? '0px':'')">

<scroll-view class="scrolls" scroll-y>

<!-- colors:按钮颜色 couponList:优惠卷列表数据  @onReceive:领取或立即使用按钮事件 -->

<cc-defineCoupon colors="#fa436a" :couponList="couponList" @onReceive="onReceive"></cc-defineCoupon>

</scroll-view>

</view>

</view>

</template>

<script>

export default {

components: {

},

data() {

return {

couponshow: false,

couponList: [ //优惠券列表

{

money: 100,

reduce: 10,

date: '2023-05-09 2023-10-02',

id: 1,

status: 0,

condition: ['新人专享', '通用卷']

}, {

money: 100,

reduce: 20,

date: '2023-02-09 2023-10-02',

id: 2,

status: 0,

condition: ['会员专享', '通用卷']

}, {

money: 100,

reduce: 30,

date: '2023-02-09 2023-10-02',

id: 3,

status: 0,

condition: ['数码产品可用', '不可与其他产品共享']

}, {

money: 100,

reduce: 40,

date: '2023-02-09 2023-10-02',

id: 4,

status: 0,

condition: ['新人专享', '可与其他产品共享']

}, {

money: 100,

reduce: 50,

date: '2023-02-09 2023-10-02',

id: 5,

status: 0,

condition: ['新人专享', '仅在支付时使用']

}

],

}

},

methods: {

// 打开优惠券弹框

opencoupon() {

this.couponshow = true

},

// 关闭优惠券弹框

hidecoupon() {

this.couponshow = false

},

//领取优惠券 立即使用事件

onReceive(item, index) {

console.log(item, index)

if (item.status == 1) {

// 立即使用 事件

} else {

this.couponList[index].status = 1 //领取成功

uni.showToast({

title: '领取成功',

icon: 'none'

})

}

},

}

}

</script>

<style lang="scss" scoped>

.content {

display: flex;

flex-direction: column;

}

.mask {

width: 100%;

height: 100vh;

position: fixed;

top: 0;

left: 0;

background: #000;

z-index: 900;

opacity: 0.7;

}

/* 优惠券 */

.coupon {

background-color: #fff;

border-radius: 10upx 10upx 0 0;

position: fixed;

left: 0;

bottom: -1000upx;

z-index: 999;

transition: all 0.3s;

}

.scrolls {

width: 100vw;

height: 60vh;

padding-top: 10upx;

z-index: 500;

}

</style>

```

 

 

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

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

相关文章

痞子衡嵌入式:从功耗测试角度了解i.MXRTxxx系列片内SRAM分区电源控制

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家介绍的是从功耗测试角度了解i.MXRTxxx系列片内SRAM分区电源控制。 我们知道配合 MCU 一起工作的存储器包含 ROM(Flash) 和 RAM 两类&#xff0c;前者主要放 RO 代码和数据&#xff0c;后者放 RW …

文件系统考古4:如何支持多个文件系统

Steve Kleiman 在 1986 年撰写了《Vnodes: An Architecture for Multiple File System Types in Sun UNIX》一文。这篇论文幅较短&#xff0c;大部分内容是数据结构的列举&#xff0c;以及 C 语言结构之间相互指向的图表。 Steve Kleiman是分布式文件系统领域的专家&#xff0c…

selenium 浏览器托管

selenium 浏览器托管&#xff0c;是启动一个浏览器&#xff0c;调试代码&#xff0c;可以运行当前调试代码&#xff0c;不用从启动浏览器开始从头执行 在谷歌浏览器chrome.exe 目录中打开cmd 输入下面目录&#xff0c;启动器浏览器 chrome.exe --remote-debugging-port9222 -…

cesium 控件 风格 白色 亮色 模式 组件变白

在要白色风格的控件的任意父级的class加上cesium-lighter即可, 如图黄色圈出来的

redis实现伪集群

主从复制配置 主从复制时只需要配置从库即可,其默认为主库模式. 打开 redis 客户端登录,使用命令 info replication 查看. 主从复制可以搭建真集群,也可以搭建伪集群 真集群就是有多台主机,每台主机 安装一个 redis.伪集群就是在一台主机上复制多份配置,修改其端口,运行多个…

ja3指纹

问题&#xff1a; 请求失效&#xff0c;带上抓包软件却可以->检测ja3浏览器指纹 方法&#xff0c;python 安装curl_cffi库 pip install curl_cffi 查看浏览器指纹 https://tls.browserleaks.com/json python 原生request 缺少两个指纹 使用curl_cffi之后 可以看到结果…

【计算机网络】第三章 数据链路层(可靠传输)

文章目录 第三章 数据链路层3.4 可靠传输3.4.1 可靠传输的基本概念3.4.2 可靠传输的实现机制——停止-等待协议3.4.2 可靠传输的实现机制——回退N桢协议3.4.3 可靠传输的实现机制——选择重传协议3.4.4 可靠传输的意义 第三章 数据链路层 3.4 可靠传输 可靠传输是指在数据通…

Java中可以使用哪些系统架构?怎样选择?

架构&#xff0c;又名软件架构&#xff0c;是有关软件整体结构与组件的抽象描述&#xff0c;用于指导大型软件系统各个方面的设计。 Java企业级的应用根据业务的复杂程度&#xff0c;通常使用的系统架构有应用架构、垂直应用架构、面向服务的架构(Service-Oriented Architectu…

在外远程访问NAS威联通(QNAP) - 免费内网穿透

文章目录 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 转载自cpolar极点云文章&#xff1a;无需公网IP&#xff0c;在外远程访问NAS威联通QNAP【内…

1688按关键字搜索工厂数据,商品详情页数据的采集

item_search_factory-按关键字搜索工厂数据 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;​注册​Key获取appsecret和appkey&#xff1b;​secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中…

认知网络原理

目录 一、网络发展史 1.1、独立模式 1.2、网络互连 1.3、局域网 二、网络通信 2.1、IP地址 2.2、端口号 三、认识协议 3.1、五元组 3.2、协议分层 3.3、分层的作用 3.4、OSI七层模型 3.5、TCP/IP五层&#xff08;或四层&#xff09;模型 3.6、网络设备所在分…

【快应用】快应用学习之页面周期函数onBackPress无法触发?

【关键词】 onBackPress、退出提示 【问题背景】 在学习和调试快应用的过程中&#xff0c;我在子页面中的onBackPress()函数中定制了退出的一个弹框提醒&#xff0c;将它作为组件引入父页面中&#xff0c;弹框却无法触发&#xff1f; 问题代码如下&#xff1a; 子页面 <t…

集合处理常用Stream流

集合处理常用Stream流 1、Stream API介绍2、List集合常用Stream方法 stream流经常使用&#xff0c;但是遇到一些流操作时&#xff0c;会一下想不到用哪种&#xff0c;这里总结一下&#xff0c;方便自己或者读者查找 1、Stream API介绍 Stream API是Java 8引入的一项重要特性&a…

B. Nastya and Scoreboard(剪枝记忆化搜索)

Problem - 1340B - Codeforces Denis,在买了花和糖果之后&#xff08;你将在下一个任务中了解这个故事&#xff09;&#xff0c;与Nastya约会&#xff0c;向她表白要成为一对。现在&#xff0c;他们坐在咖啡馆里&#xff0c;最后... Denis请她答应在一起&#xff0c;但是... Na…

文盘 Rust -- tokio 绑定 cpu 实践

tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢&#xff1f;这次我们来聊聊这个话题。 首先我们先写一段简单的多任务程序。 use tokio::runtime; pub fn main() {let rt runtime::Builder::new_mu…

第48步 深度学习图像识别:RegNet建模(Pytorch)

基于WIN10的64位系统演示 一、写在前面 &#xff08;1&#xff09;RegNet RegNet (Regulated Networks) 是一种由 Facebook AI 的研究者们在 2020 年提出的神经网络架构&#xff0c;旨在探索网络架构设计的各种可能性&#xff0c;并找出最优的网络设计规则。RegNet 的核心理…

vue3ts分离头部变量单独一个ts

这里要说下 博主 vue^3.2.47 typescript^5.0.2 群有小伙伴说之前版本是不支持&#xff0c;所以你对下版本是不是比博主的版本低。 主要是页面代码太多&#xff0c;你看下面 然后博主就想着组合式开发 怎么把页面变干净点&#xff1a; 1、vue的就处理逻辑 2、ts就单纯定义…

vc++ 弹出打开、保存对话框功能(COM组件使用详解)

文章目录 前言一、原理二、代码封装三、使用示例C/C++实战入门到精通 https://blog.csdn.net/weixin_50964512/article/details/125710864 前言 很多应用都会有选择打开文件、或者选择保存文件的功能,这种情况下一般都是弹出一个对话框让用户自己选择。 这并不需要自己…

如何使用Scrum工具进行敏捷项目管理?

敏捷开发是一种轻量级的软件开发方式。 敏捷是一种通过创造变化和响应变化在不确定和混乱的环境中取得成功的能力。 敏捷开发是为了快速响应市场变化、通过自组织、跨职能团队 运用适合他们自身环境的实践进行演进得出解决方案。 所有符合敏捷宣言和敏捷开发十二项原则的方…