uniapp实现一个订单下多个商品的评论

article/2025/10/13 15:37:07

1.先来看需求分析,一个订单下的多个商品的评论说明了在一个订单中点击评论按钮直接跳转到评论页面中,同时渲染订单下的三个商品,如下图所示:

 

 并且要实现在不同的商品评论下输入的评论内容互不影响,这就对第一次做该业务的人来说有点小困难,反正当时我是头都大了。但是别急,没你想象中的那么困难,在我实现了该功能之后其实也就在我原有代码的基础上做了一点点修改。下面来看一下思路:

1.对订单商品信息数据循环并且添加新新的字段,评论内容需要什么类型的字段就添加什么类型的字段。在我的需求中评论需要的是---文字内容和图片,所以就设置了一个字符串类型的字段和一个数组类型的字段用来存储输入的图片。

that.goodsData = resthat.goodsData.forEach((item,index)=>{that.$set(item,'content','');that.$set(item,'imgs',[]);that.$set(item,'upimgs',[])that.$set(item,'rateValue','')
})

2.循环订单商品信息数据,并将新增的字段作为数据字段绑定给输入的内容和图片

<scroll-view scroll-y="true" ><view class="" v-for="(items,index) in goodsData" :key="index" @tap="Tap(index)"><view class="goods-content"><image class="store-image" :src="items.imgUrl" mode=""></image><view class="goods-text"><text>{{items.goods_name}}</text><uni-rate v-model="items.rateValue" @change="onChange" /></view></view><textarea name="" v-model="items.content" id="" cols="30" rows="10" class="review-content" placeholder="输入您的感受,可以帮助到其他小伙伴哦~"></textarea><view class="uni-uploader-body"><view class="" style="color: #ccc; font-size: 26rpx;margin-left: 20rpx;"><text>最多上传3张图片</text></view><view class="uni-uploader__files"><block v-for="(image,id) in items.imgs" :key="id"><view class="uni-uploader__file" style="position: relative;"><!-- 删除的图标以及删除的 delimage方法传递的参数 --><uni-icons @tap="delimage(index,id)" class="del" size="20" type="clear"></uni-icons><image ref="files" class="uni-uploader__img" :src="image" :data-src="image" @tap="previewImage(index,id)"></image></view></block><view v-show="imageList.length < 3" class="uni-uploader__input-box"><view class="uni-uploader__input" @tap="chooseImage(items,index)"></view></view></view></view><Lines/></view></scroll-view>

3.在上传请求上传后端时,循环商品信息数据并且将其内需要上传的数据赋值给一个新对象内的值,最后将这个对象作为数据传递到后端,待后端解析写入数据库

let that = thislet goodsArr = []this.goodsData.forEach((item)=>{let good = {headImg:that.userInfo.imgUrl, //用户头像userName:that.userInfo.userName,//用户姓名comment:item.content,//评论内容goods_id:item.shopId,//商品idorderId:item.order_id,//订单号eval_img:JSON.stringify(item.upimgs),//评论图片数组type:item.type //商品类型}goodsArr.push(good)})

全体代码

<template><view class="content"><scroll-view scroll-y="true" ><view class="" v-for="(items,index) in goodsData" :key="index" @tap="Tap(index)"><view class="goods-content"><image class="store-image" :src="items.imgUrl" mode=""></image><view class="goods-text"><text>{{items.goods_name}}</text><uni-rate v-model="items.rateValue" @change="onChange" /></view></view><textarea name="" v-model="items.content" id="" cols="30" rows="10" class="review-content" placeholder="输入您的感受,可以帮助到其他小伙伴哦~"></textarea><view class="uni-uploader-body"><view class="" style="color: #ccc; font-size: 26rpx;margin-left: 20rpx;"><text>最多上传3张图片</text></view><view class="uni-uploader__files"><block v-for="(image,id) in items.imgs" :key="id"><view class="uni-uploader__file" style="position: relative;"><!-- 删除的图标以及删除的 delimage方法传递的参数 --><uni-icons @tap="delimage(index,id)" class="del" size="20" type="clear"></uni-icons><image ref="files" class="uni-uploader__img" :src="image" :data-src="image" @tap="previewImage(index,id)"></image></view></block><view v-show="imageList.length < 3" class="uni-uploader__input-box"><view class="uni-uploader__input" @tap="chooseImage(items,index)"></view></view></view></view><Lines/></view></scroll-view><button @tap="addContent">发布评价</button></view>
</template><script>import Lines from '@/components/common/Lines.vue'import {pathToBase64,base64ToPath} from '../../js_sdk/mmmm-image-tools/index.js'import $http from '../../common/api/request.js'import {mapState} from 'vuex'import {v4 as uuidv4} from 'uuid'export default {data() {return {// 评论内容content:'',// 商品信息数据goodsData:[],// 订单页传递过来的数据--订单信息data:[],//存储图片路径用于图片展示imageList: [],//七牛云的外链qiniuBucketURLPrefix :'放上自己的云存储外链' ,//存储外链partImgUrl:[] ,// 评分}},components:{Lines},computed:{...mapState({userInfo:state=>state.user.userInfo}),},onLoad(e) {this.data = JSON.parse(e.data)this.getOrderDetialData(this.data)},methods: {Tap(index){},onChange(e) {console.log('rate发生改变:' + JSON.stringify(e))// console.log(this.rateValue);},getOrderDetialData(data){let that = this$http.request({url:'/getOrderDetialData',method:'POST',header:{token:true},data:{orderId:data.order_id}}).then((res)=>{that.goodsData = resthat.goodsData.forEach((item,index)=>{that.$set(item,'content','');that.$set(item,'imgs',[]);that.$set(item,'upimgs',[])that.$set(item,'rateValue','')})})},chooseImage(item,index){let newIndex = indexvar that = thisthat.goodsData[newIndex].upimgs = []uni.chooseImage({count:3,//最多可以选择的图片张数sizeType:['compressed'],//original原图 compressed压缩图sourceType:['album','camera'] ,//album 从相册选图,camera 使用相机// 成功则返回图片的本地文件路径列表 tempFilePathssuccess: (chooseImageRes) => {that.goodsData[index].imgs.push(...chooseImageRes.tempFilePaths)// this.imageList.push(...chooseImageRes.tempFilePaths)const tempFilePaths = chooseImageRes.tempFilePaths;that.goodsData[index].imgs.forEach((item,index)=>{$http.request({url:'/storeToken',method:'POST'}).then((res)=>{// 唯一码const uuid = uuidv4()let uploadMsg = res;let uniqueCode = uuid;let postUrl = 'http://upload-z2.qiniu.com'uni.uploadFile({url:postUrl,fileType: "image",filePath:item,name:'file',formData:{'key':uniqueCode.slice(0,10),'token':uploadMsg},// 经过escape()转转义之后的文件名和图片链接一部分一致success: (uploadFileRes) => {let key = JSON.parse(uploadFileRes.data).keylet partImgUrl = escape(uniqueCode.slice(0,10));that.goodsData[newIndex].upimgs.push({imgUrl : 'http://'+this.qiniuBucketURLPrefix + partImgUrl});},fail: (err) => {console.log('fail',err);}})}).catch((err)=>{console.log(err);})})}})},// 删除图片delimage(index,id){this.goodsData[index].imgs.splice(id,1)this.goodsData[index].upimgs.splice(id,1)},// 预览图片previewImage(index,id){uni.previewImage({urls:this.goodsData[index].imgs,//需要预览的图片连接列表current:this.goodsData[index].imgs[id]//当前显示的图片连接})},addContent(){let that = thislet goodsArr = []this.goodsData.forEach((item)=>{let good = {headImg:that.userInfo.imgUrl, //用户头像userName:that.userInfo.userName,//用户姓名comment:item.content,//评论内容goods_id:item.shopId,//商品idorderId:item.order_id,//订单号eval_img:JSON.stringify(item.upimgs),//评论图片数组type:item.type //商品类型}goodsArr.push(good)})$http.request({url:'/addContentData',method:'POST',header:{token:true},data:{goods:goodsArr}}).then((res)=>{uni.showToast({title:"评价提交成功,即将返回上一页",icon:'none'})let timer = setTimeout(()=>{uni.navigateBack({delta: 1});clearTimeout(timer)},2000)}).catch(()=>{uni.showToast({title:"请求失败",icon:'none'})})}}}
</script><style scoped>
.flex {display: flex;justify-content: center;align-items: center;
}
.content{padding: 20rpx;display: flex;flex-direction: column;align-items: flex-start;justify-content: center;margin-top: 14rpx;margin-bottom: 80rpx;
}
.review-content{display: flex;justify-content: center;align-items: center;width: 710rpx;height: 150rpx;background-color: #f8f8f8;
}
.imgSrc{width: 220rpx;height: 220rpx;border: 1rpx dashed #ccc;font-size: 20rpx;color: #ccc;margin-top: 20rpx;margin-right: 15rpx;
}
.select{display: flex;flex-wrap: wrap;justify-content: flex-start;align-items: center;
}
button{position: fixed;bottom: 0rpx;left: 0rpx;width: 100%;height: 80rpx;background-color: #00aaff;display: flex;justify-content: center;align-items: center;color: white;
}
.del{position: absolute;top: 0rpx;right: 0%;z-index: 999;
}
.goods-content{display: flex;justify-content:flex-start;align-items: center;margin-bottom: 20rpx;
}
.store-image{width: 140rpx;height: 120rpx;border-radius: 20rpx;
}
.goods-text{display: flex;flex-direction: column;justify-content: space-between;margin-left: 20rpx;
}
.uni-uploader-body {background-color: #f8f8f8;
}
</style>


http://chatgpt.dhexx.cn/article/O9lY4K3N.shtml

相关文章

【京东API】京东app获得JD商品详情原数据接口

京东是中国最大的综合型电商网站之一&#xff0c;其app端是用户购买商品的主要途径之一。为了更好地满足用户的需求&#xff0c;开发人员提供了商品原数据接口&#xff0c;让第三方开发者可以获取京东商品的详细信息。 开发背景&#xff1a; 随着移动设备用户数量的不断增加&a…

bilstm+attention机制对京东评论数据进行数据处理加情感分类(能跑通)

#此数据为京东评论数据分为两列一列为text&#xff0c;一列为target分数需要数据集私信 #1.处理数据 #导入数据处理的基础包 import numpy as np import pandas as pd #导入用于计数的包 from collections import Counter import os import requests#这里label的评分有1-5有5类…

爬取京东一万条评论-python

要求&#xff1a; 1 万条以上的京东手机评论爬取&#xff08;爬取内容为评论 score&#xff09; 浏览器部分 为了一次爬取评论更多的手机所以在选取url的时候优先筛选相应品牌评论更多的款&#xff0c;以我爬取的vivo品牌为例&#xff1a; 1.筛选评论 2.选择一款商品后点击对应…

用户评论观点抽取

1.目的&#xff1a;从用户的订单评论里&#xff0c;抽取观点&#xff0c;进行标签化&#xff0c;此标签可以用来作一些辅助决策或者填充到用户画像体系里。 其实评论挖掘的主要有两个部分&#xff0c;观点抽取和情感判断&#xff0c;主要的作用还是间接或直接引导用户购买意向…

京东API分享:获取京东商品评论接口

接口名称&#xff1a;item_review-获得JD商品评论 接口背景介绍&#xff1a; 京东是一家中国知名的综合性电商平台&#xff0c;成立于1998年。作为中国最大的B2C在线零售商之一&#xff0c;京东提供了包括电子产品、家居用品、服装配饰、食品饮料等在内的广泛商品选择。为了…

京东用户行为分析

京东用户行为分析 项目背景 京东作为传统电商巨头&#xff0c;京东商城与京东物流的发展相得益彰&#xff0c;然而各种新兴的电商模式&#xff0c;带来了千人千面的购物方式和电商平台更加激烈的竞争&#xff0c;电商平台发展初期的粗放式经营也转向了利用大数据和算法&#…

京东商城评论爬虫

一、前言 基于评论信息做情感分析模型第一步&#xff0c;收集数据。这里准备抓取京东商城的物品评论&#xff0c;大致可以分为两步。 1、获取商品id 2、获取商品评论 二、实战 接下来的代码都基于scrapy框架编写&#xff0c;请确保已经了解scrapy基础知识。 1、获取商品i…

京东商品及评论 数据采集

好吧&#xff0c;下面的爬虫是同步的&#xff0c;其实可以用协程来写&#xff0c;效率会增加很多&#xff01; 对京东的商品基本信息&#xff0c;产品参数&#xff0c;商品评论进行采集 使用BeautifulSoup解析 注意&#xff1a;由于每个产品的评论只能采集100页&#xff0c;为…

爬虫京东评论+可视化

前期工作 选取一个网站&#xff0c;最好是教育网站&#xff0c;因为教育网站很少有反爬虫机制。 在网站内打开开发者工具&#xff0c;不同的浏览器开发者工具也不同&#xff0c;但都大同小异(这里使用的是谷歌)。 在开发者工具中确定你要爬虫的部分&#xff0c;找到我们爬取数…

京东手机评论的爬取

开篇 做论文的时候&#xff0c;最多接触的就是标准的数据集&#xff0c;几乎不需要太多的结构化处理&#xff0c;下载下来就是可以直接加载使用的数据&#xff0c;课题是有关评论分析的&#xff0c;但是论文针对的都是英文数据&#xff0c;而国内电商平台其实积累了大量的评论…

京东也做社交电商了

不知道大家有没有注意到&#xff0c;这两天朋友圈好像被京东商品给刷屏了&#xff0c; 身边不少大佬朋友都通过【芬香】在朋友圈带货。 我作为一个IT技术男&#xff0c;对于新出现的事物&#xff0c;自然也去研究了一番。下面就把我了解的信息分享给大家。 1、什么是「芬香」&a…

主存与内存

计算器内存条采用的是DRAM(动态随机存储器)&#xff0c;即计算机的主存。我们通常所说的内存容量即指内存条DRAM的大小。 但是&#xff0c;严格地说&#xff0c;内存是包括主存与高速缓存(Cache&#xff0c;基于SRAM)的。可能是由于Cache相较内存条容量很小&#xff0c;毕竟内…

CPU/内存分析

一、概念理解 程序运作原理&#xff1a;一个请求发送到服务器&#xff0c;首先经过网卡&#xff0c;然后通知cpu有待处理任务&#xff0c;CPU去运行操作系统指令&#xff0c;根据请求的端口号&#xff0c;找到对应的应用程序代码&#xff0c;安排线程去处理&#xff1b;由于程…

linux服务器查看cpu和内存

一、服务器CPU情况 1 查看物理CPU个数 cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 2 查看服务器CPU内核个数 cat /proc/cpuinfo | grep "cpu cores" | uniq 3 查看虚拟机查看核数 grep processor /proc/cpuinfo|wc -l 4 查看cpu内核频…

计算机中CPU是如何与内存交互的

这篇文章主要整理了一下计算机中的内存结构&#xff0c;以及 CPU 是如何读写内存中的数据的&#xff0c;如何维护 CPU 缓存中的数据一致性。什么是虚拟内存&#xff0c;以及它存在的必要性。如有不对请多多指教。 概述 目前在计算机中&#xff0c;主要有两大存储器 SRAM 和 D…

CPU访问内存

首先我们需要一个引子&#xff0c;引子如下&#xff1a; 作为一个计算机领域的工程师&#xff0c;这里有一个问题&#xff1a;有一个10米深的水池需要测量其水深&#xff0c;并在计算机&#xff08;或者微机&#xff09;上显示测量结果&#xff0c;保留小数点后一位。请概要的设…

计算机cpu、寄存器、内存区别

1、寄存器是中央处理器内的组成部分。它跟CPU有关。寄存器是有限存贮容量的高速存贮部件&#xff0c;它们可用来暂存指令、数据和位址。在中央处理器的控制部件中&#xff0c;包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中&#xff0c;包含的…

CPU、内存、磁盘性能监控

CPU监控 网络由设备、服务器、路由器、交换机和其他网络组件组成。CPU 是网络中所有硬件设备的组成部分。它负责设备的稳定性和性能。企业严重依赖网络&#xff0c;企业硬件的处理能力决定了网络的容量。随着 CPU 功能和硬件的快速发展&#xff0c;组织必须规划其容量并监控其…

内存、CPU、硬盘

目录 内存虚拟内存 硬盘扩充内存和硬盘CPUCPU 频率CPU 高速缓存CPU三级缓存缓存行 CPU-内存的工作原理 内存 内存是外存与CPU进⾏沟通的桥梁&#xff0c;计算机中所有程序的运⾏都在内存中进行。 内存(Memory)也称内存储器和主存储器&#xff0c;它用于暂时存放CPU中的运算数据…

内存、CPU、显存、GPU

底盘中经常会出现资源、算力等词语&#xff0c;对于里面的CPU、内存、GPU、显存&#xff0c;究竟是什么&#xff0c;这里主要对此进行一个基础认识。 一、内存 内存(Memory)也被称为内存储器&#xff0c;主要用来暂时存放CPU中的运算数据及与硬盘等外部存储器交换的数据。只要…