使用场景

举个栗子:外卖app当订单商品数量比较多时,不方便一次性展示出来。通常会展示一部分,并在页面给出一个查看更多功能。点击后即可自定义展示剩余内容,比如可以每次点击多展示N个内容,或展示所有。

实现效果

实现步骤

以下为整个页面的所有代码,涉及到的数据可以自己造一些,此处不再赘述。

vue页面

<template>
<view class="box">
<h3>订单信息</h3> <!-- 商品列表-->
<view class="productlist">
<block v-for="(item,index) in cartList" :key="index">
<view class="product" v-show="index < max">
<!-- 左边商品图片 -->
<view class="image">
<image :src="item.image" mode="aspectFill"></image>
</view>
<view class="info">
<text>{{item.name}}</text>
<text>x{{item.count}}</text>
</view>
<view class="price">
实付¥<text class="red-text">{{item.totalPrice}}</text>
</view>
</view>
</block>
<view style="text-align: center;color: #737373;" v-show="total > max" @tap="more">查看更多</view>
</view> <view class="summary">
<uni-list :border="true">
<view class="right-fixed">
合计:¥<text class="red-text">{{totalPrice}}</text>
</view>
<view class="receive">
<view>
<text>收货地址</text>
<text class="right-fixed">{{checkedAddress.address}}</text>
</view>
<view>
<text>收货人信息</text>
<text class="right-fixed">{{checkedAddress.receiver}} {{checkedAddress.contact}}</text>
</view>
<view>
<text>备注</text>
<!-- <text class="right-fixed">少放辣!</text> -->
<input type="text" name="remark" v-model="remark">
</view>
</view>
</uni-list>
</view> <button @click="pay" type="primary">立即支付</button>
</view>
</template>

JS

<script>
import {
mapState,
mapMutations
} from 'vuex' import {guid} from '../../util/util.js' export default {
data(){
return{
max: 3, //默认展示几条数据
remark: ''
}
},
components: { },
computed: {
...mapState(['cartList']),
...mapState({
checkedAddress: state => state.checkedAddr,
orderShopInfo: state => state.orderShopInfo
}),
// 计算所有商品总数量
totalCount() {
return this.cartList.reduce((total, item) => {
return total + item.count
}, 0)
},
// 所有商品累积的总价
totalPrice() {
let amount = this.cartList.reduce((total, item) => {
return total + item.totalPrice
}, 0)
// 加上配送费
return (Math.round((amount+this.orderShopInfo.physical) * 10) / 10).toFixed(1)
},
// 商品个数
total(){
return this.cartList.length
} },
methods: {
more() {
console.log(this.max)
this.max = this.total; //每次点击加1条
},
pay() {
let that = this
uni.showModal({
title: '提示',
content: '确定支付订单?',
success: function (res) {
if (res.confirm) {
// 遍历购物车中商品信息
let items = [];
that.cartList.forEach((item)=>{
let e = {
product_id: item.gid,
product_name: item.name,
image: item.image,
qty: item.count,
amount: item.totalPrice
} items.push(e)
}) //console.log(JSON.stringify(items)) let mydate = new Date();
// 构建订单实体
let order = {
userid: that.$store.state.loginUser._id,
order_no: 'sa'+guid(),
shop_id: that.orderShopInfo._id,
shop_name: that.orderShopInfo.shop,
shop_image: that.orderShopInfo.logo,
total_qty: that.totalCount,
total_amount: that.totalPrice,
deliver_fee: that.orderShopInfo.physical,
address: that.checkedAddress.address,
receiver: that.checkedAddress.receiver,
contact: that.checkedAddress.contact,
remark: that.remark,
order_time: mydate.toLocaleDateString()+' '+mydate.toLocaleTimeString(),
items: items
} console.log(order); // 提交订单
that.$post('/addOrder', JSON.stringify(order)).then(res => {
// 清空购物车
that.$store.commit('clearCart')
uni.showToast({
title:'添加成功!',
duration:1000
})
setTimeout(function () {
uni.switchTab({
url:'/pages/order/order'
})
}, 1000); })
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
}
</script>

CSS

<style lang="scss" scoped>
$base-color: red;
.red-text{
color: $base-color;
}
.box {
padding: 10px;
color: #898989;
} .productlist {
justify-content: space-between;
margin: 30upx 0;
color: #898989; .product {
height: 110px;
display: flex;
} .product .image {
width: 100px !important;
height: 100px !important;
overflow: hidden;
} .product .image image {
width: 100%;
height: 100%;
border-radius: 10upx;
overflow: hidden;
} .product .info {
width: 300upx;
line-height: 100px;
padding-left: 10px;
} .product .price {
position: fixed;
right: 20px;
line-height: 100px;
}
} .summary{
view{
padding: 5px;
}
.receive{
margin-top: 30px;
}
} // 右对齐
.right-fixed{
position: fixed;
right: 20px;
}
</style>

uniapp实现点击加载更多的更多相关文章

  1. tableView中的“点击加载更多”点击不到

    假设当前的tableView是_tableView,则可以这样设置 _tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); 该属性用于设置当 ...

  2. android ListView的上部下拉刷新下部点击加载更多具体实现及拓展

    android ListView的上部下拉刷新下部点击加载更多具体实现及拓展 ListView下拉刷新,上拉自动加载更多 下拉刷新以及加载更多

  3. ajax点击加载更多数据图片(预加载)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. js点击加载更多可以增加几条数据的显示

      <div class="list"> <div class="one"> <div class="img" ...

  5. jQuery+php+Ajax文章列表点击加载更多功能

    jQuery+php+Ajax实现的一个简单实用的文章列表点击加载更多功能,点击加载更多按钮,文章列表加载更多数据,加载中有loading动画效果. js部分: <script type=&qu ...

  6. Vue——轻松实现vue底部点击加载更多

    前言 需求总是不断改变的,好吧,今天就把vue如何实现逐步加载更多和分布加载更多说下,默认你知道如何去请求数据的哈 一次请求 页面 使用slice来进行限制展现从0,a的数据 <div v-fo ...

  7. Spring+Hibernate+struts2+JPA 注解+跨域//完成手机端点击加载更多 下拉加载更多

    一.使用IDEA新建一个maven项目(student) 1.1.0编写pom文件,添加项目所需要的包 <?xml version="1.0" encoding=" ...

  8. PHP+Ajax点击加载更多列表数据实例

    一款简单实用的PHP+Ajax点击加载更多列表数据实例,实现原理:通过“更多”按钮向服务端发送Ajax请求,PHP根据分页参数查询将最新的几条记录,数据以JSON形式返回,前台Query解析JSON数 ...

  9. PHP+Ajax点击加载更多内容 -这个效果好,速度快,只能点击更多加载,不能滚动自动加载

    这个效果好,速度快,只能点击更多加载,不能滚动自动加载 一.HTML部分 <div id="more"> <div class="single_item ...

  10. Jquery点击加载更多

    一.点击加载更多有点像分页获取数据类似,下面是本人写的一个简单的小例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

随机推荐

  1. java - 正确关闭流

    package stream; import java.io.*; public class FileReaderTest { public static void main(String[] arg ...

  2. 让vs自动提示没有using的类

    默认情况下,没有using的类,敲代码时没有智能提示,需要在[工具]->[选项]中开启

  3. vocode-markdown导出pdf插件

    1. 背景 在vocode中编辑markdown格式文本文件,并将其导出为pdf格式文件 2. 插件 在 vscode的扩展市场中搜索插件"Markdown PDF" 并安装 选中 ...

  4. Intel 移动CPU天梯榜

    Intel酷睿i9-13980HX 2023 2121 Intel酷睿i9-13900HX 2023 2051 Intel酷睿i9-13950HX 2023 2005 4 + Intel酷睿i9-12 ...

  5. [转帖]configure: error: cannot guess build type;you must specify one

    该问题一般出现在国产平台,从错误描述来看,意思是:无法猜测build类型,你必须指定一个. 解决办法: 1. 在系统/usr路径下搜索 config.guess 和 config.sub 这两个文件. ...

  6. [转帖]vCenter使用 VMCA 续订证书:续订证书时发生意外错误

    https://www.dinghui.org/vcenter-sts-certificate.html 起因:有一处客户vCenter告警:STS签名证书即将过期. 处理办法:系统管理-证书-证书管 ...

  7. 如何从0开始搭建 Vue 组件库

    作者:京东零售 陈艳春 前言: 组件设计是通过对功能及视觉表达中元素的拆解.归纳.重组,并基于可被复用的目的,形成规范化的组件,通过多维度组合来构建整个设计方案,將这些组件整理在一起,便形成组件库.本 ...

  8. JS遍历树形数据

    树形数据结构遍历某个key值 深度优先遍历(DFS) let tree = [{ id: '1', name: '节点1', children: [{ id: '1-1', name: '节点1-1' ...

  9. 【APP 逆向百例】Frida 初体验,root 检测与加密字符串定位

    声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...

  10. Gorm 应用开发时区问题与unique唯一索引字段数据冲突问题

    目录 一.定义表模型时区问题 1.1 time.Time 与int64 1.2 优势 二.unique唯一索引字段数据冲突问题 一.定义表模型时区问题 1.1 time.Time 与int64 一般情 ...