【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(3)

本文涉及的产品
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生内存数据库 Tair,内存型 2GB
简介: 这是一篇关于微信小程序开发的文章摘要,作者介绍了如何创建一个网上花店小程序,旨在提供便捷的购花体验。小程序包含鲜花分类功能,允许用户按品种、颜色和用途筛选,确保快速找到合适的鲜花。它还提供了配送服务,保证鲜花的新鲜度。文章展示了`cash.wxml`、`cash.wxss`和`cash.js`的部分代码,用于实现分类和商品展示,以及`qin.wxml`、`qin.wxss`和`qin.js`,涉及商品详情和购买付款流程。代码示例展示了商品列表渲染和交互逻辑,包括页面跳转、数据传递和点击事件处理。文章最后提到了购买付款界面,强调了安全和便捷的支付体验。

在这里插入图片描述


👨‍💻个人主页@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏微信小程序开发

🅰

-

[video(video-SIAFbOCb-1719905431985)(type-csdn)(url-https://live.csdn.net/v/embed/405645)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/4d308d4899bf76af224a89b818236925.jpeg)(title-花店小程序)]


@[TOC]


前言
-

  在这个数字化的时代,鲜花不仅仅是情感的传递者,更是美好生活的点缀。为了让您能更便捷地选购心仪的花束,我们精心打造了这款网上花店微信小程序。
  鲜花,承载着爱与祝福,是浪漫与温馨的象征。然而,传统的花店购买方式往往受到时间和空间的限制,让您无法在第一时间将这份美好传递给重要的人。我们深知您对鲜花的热爱和对便捷服务的需求,因此致力于通过技术的力量,为您创造一个全新的购花体验。
  这个网上花店微信小程序,将汇聚来自世界各地的优质鲜花品种,以精美的图片和详细的介绍呈现在您眼前。无论您是为了庆祝生日、表达爱意,还是为了装饰家居,只需轻点屏幕,就能轻松挑选到最适合您的那束花。
  同时,我们还提供贴心的配送服务,确保每一朵鲜花都能以最鲜活的姿态送达您指定的地点。在这里,您不仅能享受到便捷的购物流程,还能感受到我们对品质和服务的执着追求。
  让我们一同开启这充满花香的数字之旅,让鲜花的美丽与温暖,随时伴您左右。

在这里插入图片描述


🎶 一、鲜花的分类


  在缤纷绚烂的鲜花世界里,每一种花都拥有独特的魅力与寓意。为了让您能够更加便捷、精准地找到心仪的那束花,我们精心打造了鲜花分类功能。
鲜花的种类繁多,从热情似火的红玫瑰到纯洁无瑕的白百合,从温馨浪漫的康乃馨到高贵典雅的郁金香,每一种花都在诉说着不同的情感与故事。
  通过我们细致的分类体系,您可以轻松按照花的品种、颜色、用途等维度进行筛选。无论是为庆祝生日挑选的多彩花束,还是为表达爱意准备的专属鲜花,亦或是为装点家居寻觅的清新盆栽,都能在瞬间找到对应的类别。
  分类功能不仅是一种便捷的工具,更是一次引导您探索鲜花世界的奇妙之旅。让您在众多的选择中,快速定位心中所想,发现更多未曾留意的美丽。

(1)cash.wxml

<!--pages/cash/cash.wxml-->
<!--分割线-->
<view class="hr"></view>
<!--输入框-->
<input placeholder="请输入鲜花名称" style="text-emphasis-color: #FF0000; width: 400rpx; height: 50rpx; display: content; position: relative; left: 204rpx; top: 0rpx"></input>
<view class="hr"></view>


<view class="shopping"><!----><!--大框架-->
  <view class="nav_left"><!--侧边栏盒子-->
    <block wx:for="{
   
   {leftitem}}" wx:key="id">
      <!--这里定义了一个变量index,并把这个变量赋值为index,这个是wx:for循环产生的下标,传到js,通过这个下标完成商品的显示-->
      <view class="nav_left_items {
   
   {count==index?'active-tag':''}}" bindtap="switchRightTab" data-index="{
   
   {index}}"><!--文字盒子-->
        {
   
   {
   
   item.name}}
      </view>
    </block>
  </view>
  <view class="nav_right"><!--右边主体部分-->
    <!--通过侧边栏的选择传到js中的index的值与js中data数据中的tag进行比较,完成商品的分类显示-->
    <view class="nav_right_goods" wx:for="{
   
   {rightitem}}" wx:key="id" wx:if="{
   
   {count==item.tag}}" bindtap="changeImage" ><!--商品详情的盒子-->
      <view bindtap="click_nav_right" data-index_two="{
   
   {index}}" class="nav">
        <image src="{
   
   {item.url}}" mode="widthFix" style="width: 180rpx;height: 180rpx;border-radius: 20rpx;"></image><!--商品图片-->
        <view class="nav_right_textandprice"><!--文字和价格的盒子-->
          <text class="nav_right_text" style="color: black;">{
   
   {
   
   item.name}}</text><!--商品文字-->
          <view class="nav_right_price"><!--商品价格-->{
   
   {
   
   item.price}}.00
          </view>
        </view>
      </view>
    </view>
  </view>
</view>

(2)cash.wxss

/* pages/cash/cash.wxss */
.hr {
   
   

  border: 1px solid #ddbcbc;

  width: 100%;

  opacity: 0.6;

}

/*输入框样式*/

input {
   
   

  margin: 15rpx 32rpx;

  border: 1px solid #FF0000;

  border-radius: 50rpx;

  text-align: center;

  font-size: 32rpx;

}

/*布局样式*/

.content {
   
   

  display: flex;

  flex-direction: row;

}

/*大框架*/
.shopping {
   
   
  position: relative;
  width: 100%;
  height: 100%;
  background-color: #fff;
  color:     #808080;
}
/*左侧栏主盒子*/
.nav_left{
   
   
  position: fixed;
  top: 0;
  left: 0;
  display: inline-block;
  width: 25%;
  height: 100%;
  /*主盒子设置背景色为灰色*/
  background: #f5f5f5;
  text-align: center;
}
.nav_left .nav_left_items{
   
   
  height: 30px;
  line-height: 30px;
  padding: 6px 0;
  border-bottom: 1px solid #dedede;
  font-size: 14px;
}
.nav_right{
   
   
  /*右侧盒子使用了绝对定位*/
  position: absolute;
  top: 0;
  right: 0;
  flex: 1;
  width: 75%;
  height: 100%;
  padding: 10px;
  box-sizing: border-box;
  background: #fff;
}
.nav{
   
   
  display: flex;
  padding: 40rpx;
}
.nav_right_textandprice{
   
   
  display: flex;
  flex-direction: column;
  padding-left: 20rpx;
  position: relative;
}
.nav_right_price{
   
   
  color: #c00000;
  position: absolute;
  bottom: 20rpx;
}
.active-tag{
   
   
  background-color:    white;
  color: red;
  border-left: 5px solid #FF0000;
  border-radius: 5px;
}

(3)cash.js

// pages/cash/cash.js
Page({
   
   
  changeImage:function(){
   
   
wx.navigateTo({
   
   
  url: '/pages/qin/qin',
})

  },

  data: {
   
   
    //leftitem是定义左边侧边栏的选项,rightitem是定义右边商品的展示,tag主要是把商品进行一个类别的划分
    leftitem:[
      {
   
   id:1,name:"生日花束"},
      {
   
   id:2,name:"稀有鲜花"},
      {
   
   id:3,name:"绿植盆栽"},
      {
   
   id:4,name:"开业商务"},
      {
   
   id:5,name:"春夏高定"},
      {
   
   id:6,name:"时令花礼"},
      {
   
   id:7,name:"玫瑰礼盒"}
    ],
    rightitem:[
      {
   
   id:1,name:"香槟玫瑰",price:78,url:"../../images/hua/12.jpg",tag:0,},
      {
   
   id:1,name:"昆明桃红金芍",price:112,url:"../../images/hua/hau6.jpg",tag:0},
      {
   
   id:1,name:"昆明金丝竹桃",price:129,url:"../../images/hua/hua7.jpg",tag:0},
      {
   
   id:2,name:"暮光之城",price:233,url:"../../images/hua/hua10.jpg",tag:1},
      {
   
   id:2,name:"橙色亚百合",price:123,url:"../../images/hua/hau11.jpg",tag:1},
      {
   
   id:3,name:"use",price:91,url:"/images/hua/hau11.jpg",tag:2},

    ],
    count:0,//我们把前端的index值传到js中,并把它赋值给count,储存在js中,方便右边商品通过count完成与侧边栏的相同的那一类的商品展示,同时完成侧边栏的样式,保证选中的选项有与其他未选择的选项的区别
  },
  click_nav_right(event){
   
   //这个主要是完成商品分类页的数据传递到商品详情页
    var data_one=event.currentTarget.dataset.index_two//前端的右边商品定义了一个index_two这个变量,我们在js中把这个值赋值给data变量,并传递到商品详情页
    //console.log(data_one)
    wx.navigateTo({
   
   //通过这个函数,完成两个页面中数据的传递,具体的用法可以到微信的小程序文档中搜索,当然除了用这个函数,也可以通过引用全局变量的方式完成数据的传递
      url: '/pages/detail/detail?data='+data_one,
    })
  },
  switchRightTab(event){
   
   
    this.setData({
   
   
      count:event.target.dataset.index
    });//改变count原本的值,完成右侧商品的根据侧边栏的不同展示商品
  },

})

结果展示:
在这里插入图片描述


🎶 二、鲜花的购买付款界面


  在这个充满花香的数字世界里,为了让您能够轻松、安全、便捷地拥有心仪的鲜花,我们精心构建了高效可靠的付款功能。
  付款,这一关键环节,不仅是交易的完成,更是信任的传递。我们深知您对每一笔消费的重视,因此致力于提供多种灵活且安全的付款方式,满足您的个性化需求。
  无论是传统的在线支付,还是便捷的移动支付,亦或是贴心的货到付款,我们都力求为您打造流畅、无忧的付款体验。每一次点击,每一次输入,都承载着您对美好生活的期待,而我们的付款功能将确保这一期待得以顺利实现。
  严密的安全防护机制,如同坚实的堡垒,守护着您的财务信息,让您在选购鲜花时毫无后顾之忧。简洁明了的操作界面,让付款过程如同鲜花绽放般自然流畅。
  让付款不再是繁琐的步骤,而是您与美丽鲜花之间的最后一道温馨桥梁,让您更快地将这份美好带回家。

(1)qin.wxml

<!--pages/qin/qin.wxml-->
<view class="detail"><!--商品详情的大框架--><!---->
  <block wx:for="{
   
   {rightitem}}" wx:key="id" wx:if="{
   
   {number==index}}"><!--这个是拿商品分类页传递过来的数据(number)与这边商品的下标(index)进行比较,展现商品分类页面选择的商品的详情-->
    <image class="shop_image" mode="widthFix" src="{
   
   {item.url}}" style="width: 750rpx;height: 400rpx;"></image><!--图片展示-->
    <view class="detail_box" style="width: 750rpx; height: 150rpx; display: flex; box-sizing: border-box">
      <view class="detail_price"><!--这个是价格和商品名字的显示-->
        <text style="color: #c00000;font-size: 34rpx;">{
   
   {
   
   item.price}}.00</text><!--价格展示-->
        <text style="font-size: 34rpx;padding-top: 20rpx;">{
   
   {
   
   item.name}}</text><!--商品名称-->
      </view>
      <view class="detail_text"><!--这个是右边的那个分享,我这里是放了一张图片进行代替,没有开发这个功能-->
        <image src="/images/nav/fen.jpg" mode="widthFix" style="width: 130rpx;width: 60rpx;padding-right: 20rpx;"></image>
      </view>
    </view>
    <view class="detail_goods"><!--这个是商品详情的分隔-->
      <text>商品详情</text>
    </view>
    <view class="detail_image"><!--这个主要做的是底部的导航,主要是通过css属性完成的简易版导航-->
      <image mode="widthFix" src="{
   
   {item.good}}" style="width: 750rpx;width: 750rpx;margin-top: 20rpx;"></image><!--商品详情-->
    </view>
  </block>
  <view class="detail_button"><!--底部的商品导航-->
    <navigator class="button_message" url=""><!--消息图标部分-->
      <image src="/images/bar/community-0.png" class="button_image"></image>
      <text class="button_text">消息</text>
    </navigator>
    <navigator class="button_message" url=""><!--购物车图标部分-->
      <image src="/images/bar/ui.png" class="button_image" bindtap="changeImage"></image>
      <text class="button_text"bindtap="gwc" >购物车</text>
    </navigator>
    <view class="button button_one" bindtap="gwc1" >加入购物车</view>
    <view class="button button_two" bindtap="zf">立即购买</view>
  </view>

</view>

(2)qin.wxss

/* pages/qin/qin.wxss */
.detail{
   
   
  background-color:#e9e9e9;
}
.detail_button{
   
   
  display: flex;
  align-items: center;
  position: fixed;
  bottom: 0;
  background-color: white;
  height: 100rpx;
  width: 100%;
}
.button_image{
   
   
  width: 50rpx;
  height: 50rpx;
}
.button_text{
   
   
  font-size: smaller;
}
.button_message{
   
   
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100rpx;
}
.button{
   
   
  flex: 1;
  text-align: center;
  padding: 20rpx;
  border-radius: 50rpx;
  margin: 0 20rpx;
}
.button_one{
   
   
  background-color: #ffa630;
}
.button_two{
   
   
  background-color: #ff2c3c;
}
.detail_box{
   
   
  display: flex;
  background-color: #fff;
  padding: 10rpx 0;
  padding-left: 20rpx;
  align-items: center;
  justify-content: space-between;
}
.detail_price{
   
   
  display: flex;
  flex-direction: column;
}
.detail_goods{
   
   
  background-color: #fff;
  line-height: 100rpx;
  text-align: center;
  font-weight: bold;
  margin-top: 20rpx;
}

(3)qin.js

// pages/qin/qin.js
Page({
   
   
  gwc:function(e){
   
   
    wx.switchTab({
   
   
      url: '/pages/gou/gou',
    })
  },
  /**
   * 页面的初始数据
   */
  data: {
   
   //数据的定义
    rightitem:[
      {
   
   id:1,name:"香槟玫瑰",price:78,url:"../../images/hua/12.jpg",tag:0},
      {
   
   id:1,name:"昆明桃红金芍",price:112,url:"../../images/hua/hau6.jpg",tag:0},
      {
   
   id:1,name:"昆明金丝竹桃",price:129,url:"../../images/hua/hua7.jpg",tag:0},
      {
   
   id:2,name:"暮光之城",price:233,url:"../../images/hua/hua10.jpg",tag:1},
      {
   
   id:2,name:"橙色亚百合",price:123,url:"../../images/hua/hau11.jpg",tag:1},
      {
   
   id:3,name:"use",price:91,url:"/images/hua/hau11.jpg",tag:2},

    ],
    number:0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad:function(options) {
   
   //接收商品分类页面传递的data值(传递的是index_two这个值,我们把这个值赋值给了data这个变量,所以这个吧接收到的是data)
    var data_two=options.data
    this.setData({
   
   
      number:data_two//把商品分类页面传递的值复制给number,方便wxml页面的调用
    });

  },
  gwc1(){
   
   
      wx.showToast({
   
   
        title: '添加购物车成功',
      })},
      zf(){
   
   
        wx.showToast({
   
   
          title: '支付成功',
        }) 
}
})

运行结果:
在这里插入图片描述

结束语🥇

以上就是微信小程序之列表渲染
持续更新微信小程序教程,欢迎大家订阅系列专栏🔥微信小程序
你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

目录
相关文章
|
3天前
|
小程序 JavaScript
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
本文介绍了使用 Taro 和 Vue 创建轮播组件的两种方法:一是通过 `&lt;swiper&gt;` 实现,二是利用 Nut UI 的 `&lt;nut-swiper&gt;` 组件实现。
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
|
3天前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
本文介绍了Taro中`useShareAppMessage`的使用方法,需在页面配置`enableShareAppMessage: true`并重新编译。
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
|
3天前
|
小程序 数据安全/隐私保护
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
在 `src/http` 目录下创建 `request.ts` 文件,并配置 Taro 的网络请求方法 `Taro.request`,支持多种 HTTP 方法并处理数据加密。
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
|
3天前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
本文介绍如何在Taro项目中使用Nut UI的`&lt;nut-uploader/&gt;`组件实现图片上传功能,并通过示例代码展示了自定义上传逻辑的方法。
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
|
3天前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
本文介绍如何在Taro项目中配置深色模式。通过在`src/app.config.ts`设置`darkmode`选项和在`theme.json`中定义主题变量,可以实现跟随系统主题的界面风格切换。
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
|
3天前
|
小程序 开发者
Taro@3.x+Vue@3.x+TS开发微信小程序,使用自定义tabBar
本文介绍了如何在Taro项目中实现自定义tabBar。首先,在`app.config.ts`中设置`custom: true`并配置`tabBar`。
Taro@3.x+Vue@3.x+TS开发微信小程序,使用自定义tabBar
|
9天前
|
小程序 JavaScript 前端开发
微信小程序开发时数据是否是双向数据绑定的
微信小程序开发时数据是否是双向数据绑定的
|
9天前
|
小程序 JavaScript Java
微信小程序的后端开发需要使用什么语言?
【8月更文挑战第22天】微信小程序的后端开发需要使用什么语言?
161 65
|
12天前
|
JSON 小程序 JavaScript
超详细微信小程序开发学习笔记,看完你也可以动手做微信小程序项目
这篇文章是一份全面的微信小程序开发学习笔记,涵盖了从小程序介绍、环境搭建、项目创建、开发者工具使用、文件结构、配置文件、模板语法、事件绑定、样式规范、组件使用、自定义组件开发到小程序生命周期管理等多个方面的详细教程和指南。
|
13天前
|
小程序
微信小程序开发---购物商城系统。【详细业务需求描述+实现效果】
这篇文章详细介绍了作者开发的微信小程序购物商城系统,包括功能列表、项目结构、具体页面展示和部分源码,涵盖了从首页、商品分类、商品列表、商品详情、购物车、支付、订单查询、个人中心到商品收藏和意见反馈等多个页面的实现效果和业务需求描述。
微信小程序开发---购物商城系统。【详细业务需求描述+实现效果】
下一篇
云函数