uniapp 小程序 评分组件

news2025/1/11 23:43:57

效果图:
在这里插入图片描述

1、组件:starsRating.vue

<template>
	<view class="stars">
		<image @click="btnStars1" class="starsicon" :src="starsObject[0]" mode="widthFix"></image>
		<image @click="btnStars2" class="starsicon" :src="starsObject[1]" mode="widthFix"></image>
		<image @click="btnStars3" class="starsicon" :src="starsObject[2]" mode="widthFix"></image>
		<image @click="btnStars4" class="starsicon" :src="starsObject[3]" mode="widthFix"></image>
		<image @click="btnStars5" class="starsicon" :src="starsObject[4]" mode="widthFix"></image>
		<text class="txt-stars">{{starsIndex}}.0</text>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			}
		},
		components: {},
		props: {
			starsIndex: {}, // 星级评价分数
			isEditStars: {}, // 是否编辑星级评价分数
			starsObject: {} // 数组
		},
		computed: {},

		/**
		 * 生命周期函数--监听页面加载
		 */
		onLoad: function(options) {

		},

		/**
		 * 生命周期函数--监听页面初次渲染完成
		 */
		onReady: function() {},

		/**
		 * 生命周期函数--监听页面显示
		 */
		onShow: function() {

		},

		/**
		 * 生命周期函数--监听页面隐藏
		 */
		onHide: function() {},

		/**
		 * 生命周期函数--监听页面卸载
		 */
		onUnload: function() {},

		/**
		 * 页面相关事件处理函数--监听用户下拉动作
		 */
		onPullDownRefresh: function() {},

		/**
		 * 页面上拉触底事件的处理函数
		 */
		onReachBottom: function() {},
		methods: {
			btnStars1: function() {
				var _this = this
				console.log("btnStars1 = " + _this.isEditStars)
				if (_this.isEditStars) {
					_this.$emit("starsClick", 1)
				}
			},
			btnStars2: function() {
				var _this = this
				if (_this.isEditStars) {
					_this.$emit("starsClick", 2)
				}
			},
			btnStars3: function() {
				var _this = this
				if (_this.isEditStars) {
					_this.$emit("starsClick", 3)
				}
			},
			btnStars4: function() {
				var _this = this
				if (_this.isEditStars) {
					_this.$emit("starsClick", 4)
				}
			},
			btnStars5: function() {
				var _this = this
				if (_this.isEditStars) {
					_this.$emit("starsClick", 5)
				}
			}
		}
	}
</script>
<style>
	.txt-stars {
		color: #ff9900;
		font-size: 30rpx;
		margin-left: 25rpx;
	}
	
	.starsicon {
		width: 44rpx;
		height: 44rpx;
		margin-left: 11rpx;
	}
	
	.stars {
		display: flex;
		flex-direction: row;
		align-items: center;
	}
</style>

2、页面内引用:

<template>
	<view class="evaluate">
		<view class="evaluate-box">
			<view class="title">
				服务评价:
			</view>
			<view class="star-rating">
				<stars-rating :starsIndex="starsIndex" :starsObject="clicked_list" :isEditStars="true"
					@starsClick="starsClick"></stars-rating>
			</view>
		</view>
		<view class="evaluate-comment">
			<textarea class="textarea" name="" id="" cols="30" rows="10"  placeholder="填写您的评价" v-model="commentInfo"></textarea>
		</view>
		<view class="evaluate-btn">
			<button class="submit-btn" @click="toOrderDetailPage">提交</button>
		</view>
	</view>
</template>

<script>
	var http = require("../../utils/http.js");//公共的请求方法(在另一篇文章中已发布)
	var config = require("../../utils/config.js");//公共的请求地址(在另一篇文章中已发布)
	import starsRating from '../../components/starsRating/starsRating'
	export default {
		data() {
			return {
				starsIndex: 1, // 默认星级评价分数
				clicked_list: {}, //星级评价图标数组
				commentInfo: '',
				orderId: '',
				commentStatus: 0
			}
		},
		components: {
			starsRating
		},
		props: {},
		computed: {},

		/**
		 * 生命周期函数--监听页面加载
		 */
		onLoad: function(options) {
			this.orderId = options.orderId

			var _this = this
			_this.curShowStars(_this.starsIndex)

		},

		/**
		 * 生命周期函数--监听页面初次渲染完成
		 */
		onReady: function() {},

		/**
		 * 生命周期函数--监听页面显示
		 */
		onShow: function() {

		},

		/**
		 * 生命周期函数--监听页面隐藏
		 */
		onHide: function() {},

		/**
		 * 生命周期函数--监听页面卸载
		 */
		onUnload: function() {},

		/**
		 * 页面相关事件处理函数--监听用户下拉动作
		 */
		onPullDownRefresh: function() {},

		/**
		 * 页面上拉触底事件的处理函数
		 */
		onReachBottom: function() {

		},
		methods: {
			starsClick: function(starsNum) {
				var _this = this
				_this.starsIndex = starsNum
				_this.curShowStars(starsNum)
			},
			// 星星评价展示
			curShowStars: function(starsNum) {
				var _this = this
				if (starsNum == 1) {
					_this.clicked_list = [
						"../../static/img/stars_selected.png", "../../static/img/stars_defalt.png",
						"../../static/img/stars_defalt.png", "../../static/img/stars_defalt.png",
						"../../static/img/stars_defalt.png"
					]
				} else if (starsNum == 2) {
					_this.clicked_list = [
						"../../static/img/stars_selected.png", "../../static/img/stars_selected.png",
						"../../static/img/stars_defalt.png", "../../static/img/stars_defalt.png",
						"../../static/img/stars_defalt.png"
					]
				} else if (starsNum == 3) {
					_this.clicked_list = [
						"../../static/img/stars_selected.png", "../../static/img/stars_selected.png",
						"../../static/img/stars_selected.png", "../../static/img/stars_defalt.png",
						"../../static/img/stars_defalt.png"
					]
				} else if (starsNum == 4) {
					_this.clicked_list = [
						"../../static/img/stars_selected.png", "../../static/img/stars_selected.png",
						"../../static/img/stars_selected.png", "../../static/img/stars_selected.png",
						"../../static/img/stars_defalt.png"
					]
				} else if (starsNum == 5) {
					_this.clicked_list = [
						"../../static/img/stars_selected.png", "../../static/img/stars_selected.png",
						"../../static/img/stars_selected.png", "../../static/img/stars_selected.png",
						"../../static/img/stars_selected.png"
					]
				} else {
					_this.clicked_list = [
						"../../static/img/stars_defalt.png", "../../static/img/stars_defalt.png",
						"../../static/img/stars_defalt.png", "../../static/img/stars_defalt.png",
						"../../static/img/stars_defalt.png"
					]
					_this.starsIndex = 0
				}
			},
			/**
			 * 提交评价
			 */
			toOrderDetailPage: function(e) {
				uni.showLoading();
				var params = {
					url: "/***/evaluate",//评价接口
					method: "PUT",
					data: {
						orderId: this.orderId,
						commentStatus: 1,//评论状态 :0 未评价 1 已评价
						commentStart: this.starsIndex,//星星数
						commentContent: this.commentInfo//评论内容
					},
					callBack: res => {
						uni.hideLoading()
						uni.showModal({
							title: "提交成功",
							content: "",
							confirmText: "确定",
							showCancel: false,
							success: (res) => {
								if (res.confirm) {
									//提交成功跳转到订单列表页
									uni.reLaunch({
										url: '/pages/order/order'
									})
								}
							}
						})
					}
				};
				http.request(params);
			}
		}
	}
</script>
<style>
	page {
	background: #f8f8f8;
}

.evaluate {
	padding: 32rpx 21rpx 0rpx 21rpx;
}

.evaluate-box {
	display: flex;
	justify-content: flex-start;
	align-items: center;
}

.title {
	font-size: 32rpx;
	color: #333333;
	margin-right: 50rpx;
}

.evaluate-comment {
	width: 708rpx;
	height: 513rpx;
	border-radius: 20rpx;
	background: #FFFFFF;
	font-size: 30rpx;
	line-height: 40rpx;
	letter-spacing: 1rpx;
	color: #666666;
	margin-top: 31rpx;
}

textarea {
	padding: 32rpx 37rpx 32rpx 37rpx;
}

.evaluate-btn {
	position: fixed;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 120rpx;
	background: #FFFFFF;
	border: 1rpx solid #E4E4E4;
	padding-top: 16rpx;
	box-sizing: border-box;
}

.submit-btn {
	width: 710rpx;
	height: 88rpx;
	line-height: 88rpx;
	border-radius: 60rpx;
	background: #3DB86D;
	text-align: center;
	color: #fff;
	font-size: 32rpx;
}

</style>

3、星星图片
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Stream API将对象中的某一字段取出转换为list或数组

List<DevicePartMaintain> devicePartMaintainList devicePartMaintainMapper.selectDevicePartMaintainByMitId(mitId);所有id转换为List 要使用Stream流获取devicePartMaintainList中所有的id&#xff0c;您可以使用stream()方法将列表转换为流&#xff0c;然后使用…

从C语言到C++_28(红黑树RedBlackTree)概念+插入接口实现

目录 1. 红黑树的引入和简介 2. 红黑树的性质和定义 3. 红黑树的插入 3.1 调整情况一 3.2 调整情况二 3.2.1 调整情况二中的单旋变色 3.2.2 调整情况二中的双旋变色 3.3 调整情况三 3.4 红黑树插入完整代码 4. 红黑树的验证和完整代码 4.1 验证是不是搜索树&#xf…

Pytorch个人学习记录总结 07

目录 神经网络-非线性激活 神经网络-线形层及其他层介绍 神经网络-非线性激活 官方文档地址&#xff1a;torch.nn — PyTorch 2.0 documentation 常用的&#xff1a;Sigmoid、ReLU、LeakyReLU等。 作用&#xff1a;为模型引入非线性特征&#xff0c;这样才能在训练过程中…

【0基础学习python】顺序结构+条件语句+循环结构(文章后面有人生重开模拟器的相关逻辑和简单实现)

1.顺序语句 默认情况下&#xff0c;python的代码执行顺序是按照从上到下的顺序&#xff0c;依次执行的。 print(1) print(2) print(3)执行的结果一定为 1 2 3 &#xff0c;而不会出现 3 2 1 或者 1 3 2等&#xff0c;这种按照顺序执行的代码&#xff0c;我们称为顺序语句。 …

C++第六讲

思维导图 顺序栈定义成模板类 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/22 16:23.--------------------------------- */ #include<iostream>using namespace std;template<typename T> class my_stack { private:T *p…

Unity进阶--声音管理器学习笔记

文章目录 声音管理器 using System.Collections; using System.Collections.Generic; using UnityEngine;public class AudioManager : MyrSingletonBase<AudioManager> {//环境音private AudioSource enPlayer;//音效private AudioSource sePlayer;//音乐private Audio…

IDEA使用AWS CodeWhisperer

IDEA使用AWS CodeWhisperer 首先在IDEA的插件市场中下载AWS Toolkit&#xff1a; 这里我使用的IDEA是2023.1&#xff0c;就是在ToolWindows里把AWS Toolkit面板调出来&#xff1a; 连接&#xff1a; 打开的网页中粘贴上面提过的代码。进入注册流程。 注册完成后返回IDEA&am…

自动驾驶感知系统-毫米波雷达

毫米波雷达就是电磁波&#xff0c;雷达通过发射无线电信号并接收反射信号来测定车辆与物体间的距离&#xff0c;其频率通常介于10~300GHz之间。与厘米波导引头相比&#xff0c;毫米波导引头体积小&#xff0c;质量轻&#xff0c;空间分辨率高&#xff1b;与红外、激光、电视等光…

Vue--插槽

一、插槽-默认插槽 1.作用 让组件内部的一些 结构 支持 自定义 2.需求 将需要多次显示的对话框,封装成一个组件 3.问题 组件的内容部分&#xff0c;不希望写死&#xff0c;希望能使用的时候自定义。怎么办 4.插槽的基本语法 组件内需要定制的结构部分&#xff0c;改用**…

STM32 HAL库定时器输入捕获+更新中断

STM32 HAL库定时器输入捕获更新中断 &#x1f4cd;相关参考&#xff1a;https://www.cnblogs.com/kevin-nancy/p/12569377.html#4621839&#x1f4cc;相关篇《STM32 HAL库定时器输入捕获SlaveMode脉宽测量》 ✨高级定时器的输入捕获功能在脉宽信号测量方面是非常方便的。尤其时…

代码随想录算法训练营第二十一天 | 读PDF复习环节1

读PDF复习环节1 本博客的内容只是做一个大概的记录&#xff0c;整个PDF看下来&#xff0c;内容上是不如代码随想录网站上的文章全面的&#xff0c;并且PDF中有些地方的描述&#xff0c;是很让我疑惑的&#xff0c;在困扰我很久后&#xff0c;无意间发现&#xff0c;其网站上的讲…

JavaEE——Spring中存取Bean的注解

目录 一、存储Bean对象 1、定义 2、存储方式 &#xff08;1&#xff09;、类注解 【1】、Controller&#xff08;控制器存储&#xff09; 【2】、Service&#xff08;服务存储&#xff09; 【3】、Repository&#xff08;仓库存储&#xff09; 【4】、Component&#xf…

创造型模式-原型模式(场景体验-》方案解决===代码图解)

创造型模式-原型模式 创建重复对象-场景体验解决方案&#xff08;原型模式&#xff09;原型模式定义 创建重复对象-场景体验 今天来一个大客户&#xff0c;他要求帮他下100个订单。每个订单除了用户ID&#xff0c;和用户名不同之外&#xff0c;其他个人信息完全相同。 订单类 …

DASCTF 2023 0X401七月暑期挑战赛RE题解

比赛期间没有什么时间&#xff0c;赛后做的题。 TCP 这题最难&#xff0c;耗时最久&#xff0c;好像做出来的人不多。 程序开始有个初始化随机数的过程&#xff0c;数据写入qword_5060开始的48个字节。 这里是主函数&#xff0c;连接到服务器以后&#xff0c;先接收32个字节…

c函数学习

函数的概念 函数是c语言的功能单位&#xff0c;实现一个功能可以封装一个函数来实现。定义函数的时候一切以功能为目的&#xff0c;根据功能去定义函数的参数和返回值 函数的分类 从定义角度分类&#xff1a;库函数&#xff08;c库实现的&#xff09;&#xff0c;自定义函数&…

springboot集成

maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency><groupId>org.apache.commons</groupId><artifactId>…

小程序中vant-weapp时间选择使用方法

一、选择单个时间点&#xff1a; wxml&#xff1a; <van-celltitle"选择预约时间"value"{{ time }}"bind:click"onDisplay"/><van-calendarshow"{{ show }}"bind:close"onClose"bind:confirm"onConfirm"…

数学建模学习(3):综合评价类问题整体解析及分析步骤

一、评价类算法的简介 对物体进行评价&#xff0c;用具体的分值评价它们的优劣 选这两人其中之一当男朋友&#xff0c;你会选谁&#xff1f; 不同维度的权重会产生不同的结果 所以找到每个维度的权重是最核心的问题 0.25 二、评价前的数据处理 供应商ID 可靠性 指标2 指…

Redis应用(2)——Redis的项目应用(一):验证码 ---> UUID到雪花ID JMeter高并发测试 下载安装使用

目录 引出Redis的项目应用&#xff08;一&#xff09;&#xff1a;验证码1.整体流程2.雪花ID1&#xff09;UUID&#xff08;Universally Unique Identifier&#xff0c;通用唯一识别码&#xff09;2&#xff09;Twitter 的雪花算法&#xff08;SnowFlake&#xff09; 雪花ID优缺…

Jenkins常用管理功能配置 - 插件管理

Jenkins插件介绍 Jenkins是一个流行的开源持续集成/持续交付(CI/CD)工具&#xff0c;它有大量的插件来扩展其功能。这些插件可以用于构建、测试、部署和监控软件项目。下面是一些常用的Jenkins插件及其简单介绍和使用方法&#xff1a; 1. Git插件&#xff1a;允许Jenkins从Gi…