微信小程序开发二

继续接着“微信小程序开发一”完善首页,在首页上添加商品展示区域。
在这里插入图片描述

一、修改/pages/main/main.wxml页面

添加下面代码片段,同时向/images/目录下添加图片sample1.jpg

    <view>
        <view><text>全部商品</text></view>
        <view>
          <image src="/images/sample1.jpg"></image>
        </view>
    </view>

在这里插入图片描述
为首页添加样式,调整页面布局,小程序的样式文件名与页面文件同名,只是扩展名为wxss,main.wxml的样式文件是main.wxss。
首先添加轮播图控件样式控制,可以限制轮播图片的高度和宽度

swiper {
  height: 300rpx;
}
swiper-item image {
  width: 100%;
  height: 100%;
}

默认可以使用wxml中标签名定义样式

    <swiper indicator-dots="true" autoplay="true" interval="{{interval}}" duration="{{duration}}" circular="true">
        <block wx:for="{{imgUrls}}" wx:key="{{index}}">
            <swiper-item>
                <image src="{{item}}" class="slide-image" width="100%"/>
            </swiper-item>
        </block>
    </swiper>

为总览图添加样式控制



.total-section{
  width: 100%;
  padding:10rpx 0;/*上下填充10rpx,左右填充0rpx*/
  height: 40rpx;
  color: rgb(233, 126, 114);
  text-align: center;/*文字居中*/
}

.total-image{
  width: 100%;
  height: 375rpx;
}
.total-image image{
  display: block;
  width: 100%;
  height: 100%;
}

修改wxml文件,使用定义的css样式

    <view>
        <view class="total-section"><text>全部商品</text></view>
        <view class="total-image">
          <image src="/images/sample1.jpg"></image>
        </view>
    </view>

在这里插入图片描述

二、添加商品展示区域

向/images目录下复制图片文件,同时添加商品展示代码片段

    <view>
        <view class="good-title"><text>最近新品</text></view>
        <view class="good-box">
            <view class="good-list">
                <navigator url="details/details">
                    <image src="/images/p1.jpg"></image>
                    <view class="good-text"><text>测试商品一</text></view>
                    <view class="good-text"><text>¥ 0.01</text></view>
                </navigator>
            </view>
            <view class="good-list">
                <navigator url="details/details">
                    <image src="/images/p2.jpg"></image>
                    <view class="good-text"><text>测试商品二</text></view>
                    <view class="good-text"><text>¥ 0.02</text></view>
                </navigator>
            </view>
        </view>
        <view class="good-box">
            <view class="good-list">
                <navigator url="details/details">
                    <image src="/images/p1.jpg"></image>
                    <view class="good-text"><text>测试商品三</text></view>
                    <view class="good-text"><text>¥ 0.01</text></view>
                </navigator>
            </view>
        </view>
    </view>

添加商品区域css样式控制



.good-box{
  padding:0 40rpx;/*上下填充0rpx,左右填充40rpx*/
}
.good-title{
  width: 100%;
  padding:10rpx 0;/*上下填充10rpx,左右填充0rpx*/
  height: 40rpx;
  color: rgb(233, 126, 114);
  text-align: center;/*文字居中*/
}
.good-box .good-list{
  display: inline-block;/*显示为内联块,顺序排列不换行*/
  width: 325rpx;
  height: 325rpx;
  margin:0 20rpx 20rpx 0;/*上边界0rpx,右边界20rpx,下边界20rpx,左边界0rpx*/
  border-radius: 10px;/*区域边界半径*/
  text-align: center;
  background: #f5f6f5;
}
.good-box .good-list:nth-child(2n){/*第偶数个元素*/
  margin-right: 0;
}
.good-box .good-list image{
  width: 175rpx;
  height: 175rpx;
  margin: 20rpx 0 10rpx;
}
.good-box .good-list .good-text{
  font-size: 32rpx;
}

在这里插入图片描述

三、商品区域动态化控制

商品区域通过后台服务控制,包括商品发布、商品下架、图片上传等功能,小程序需要通过HTTPS协议与后台服务交互信息。
在main.js中定义商品集合对象goodList:[],在onshow事件中通过https加载商品集合


const app = getApp()

Page({
  data: {
    imgUrls: [
      '/images/about1.jpg',
      '/images/about2.jpg',
      '/images/about3.jpg',
      '/images/about4.jpg'
    ],
    indicatorDots: false,
    autoplay: false,
    interval: 3000,
    duration: 800,
    goodList:[],
  },
  onLoad(){
  },
  onShow(){
    this.loadNewProduct();
  },
  loadNewProduct()
  {
    var self = this;
    wx.request({
      url: 'https://你的后台服务地址',
      data: {
        status: ''
      },
      success(res){
        wx.setStorageSync('goodList', JSON.stringify(res.data));
        self.setData({
          goodList: res.data
        })
      }
    })
  },
})

修改main.wxml页面,动态展示加载的商品信息


    <view>
        <view class="good-title"><text>最近新品</text></view>
        <view class="good-box">
            <block wx:for="{{goodList}}" wx:key="{{index}}">
                <view class="good-list">
                    <navigator url="details/details?prdtId={{item.id}}">
                        <image src="data:image/png;base64,{{item.imgData}}"></image>
                        <view class="good-text"><text>{{item.name}}</text></view>
                        <view class="good-text"><text>{{item.price}}</text></view>
                    </navigator>
                </view>
            </block>
        </view>
    </view>

图片数据使用后台提供Base64编码图片数据
在这里插入图片描述
请求后台服务,如果出现此错误,说明小程序后台没有添加访问域名白名单
在这里插入图片描述
登录到微信小程序后台,注册用户,创建一个小程序,设置可访问的后台域名
https://mp.weixin.qq.com/
在这里插入图片描述
在这里插入图片描述

后台服务返回商品集合对象类型为,其中imgData 为图片的Base64编码数据

package com.gf.erp.wx;

import java.math.BigDecimal;

public class WxPrdtInfo {
	private String id = null;
	private String name = null;
	private BigDecimal price = null;
	private String imgData = null;
	private String param = null;
	private String description = null;
	private String unit = null;
	private Long version = null;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public BigDecimal getPrice() {
		return price;
	}
	public void setPrice(BigDecimal price) {
		this.price = price;
	}
	public String getImgData() {
		return imgData;
	}
	public void setImgData(String imgData) {
		this.imgData = imgData;
	}
	public String getParam() {
		return param;
	}
	public void setParam(String param) {
		this.param = param;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getUnit() {
		return unit;
	}
	public void setUnit(String unit) {
		this.unit = unit;
	}
}

后台Controller方法

	@RequestMapping("/getprdt")
	public List<WxPrdtInfo> getPrdt(@RequestParam("status") String status)
	{
		status = Util.fmtStr(status);
		status = "%"+status+"%";
		List<WxProductInfo> lst = wxServ.getProductList(status);
		List<WxPrdtInfo> rtn = new ArrayList<WxPrdtInfo>();
		for(WxProductInfo pi:lst)
		{
			rtn.add(pi.copyTo());
		}
		return rtn;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值