Uniapp矩阵评分组件

uniapp矩阵评分组件支持自定义图标、选择颜色、评分等级。

<template><view style="width: 100%;overflow: hidden;"><view class="flex-sub flex-table flex  flex-direction-column":style="{ '--table-border-color': tableBorderColor }"><view class="flex  items-stretch"><view class="td td0 justify-center align-center"></view><view class="td td1 justify-center align-center" v-for="(item, index) in columns">{{ item[labelName]}}</view></view><view class="flex items-stretch" v-for="(rowitem, rowindex) in rows"><view class="td td0 flex justify-center align-center">{{ rowitem[labelName] }}</view><view class="td td1 flex  justify-center align-center" @click="change(rowitem[valueName],colitem[valueName])"v-for="(colitem, colindex) in columns"><text :class="icon" :style="getStyle(rowitem[valueName],colitem[valueName],colindex)"></text></view></view></view></view></template><script>import Emitter from "../../libs/util/emitter.js";export default {mixins: [Emitter],emits: ["update:modelValue", "change"],props: {// 通过双向绑定控制组件的弹出与收起// 绑定的值value: {type: Array,default: []},// 通过双向绑定控制组件的弹出与收起// 绑定的值modelValue: {type: Array,default: []},tableBorderColor: {type: String,default: '#ebeef5',},icon: {type: String,default: 'diy-icon-starfill'},iconColor: {type: String,default: '#eee'},selectIconColor: {type: String,default: '#07c160'},initRate: {type: Number,default: 0},iconSize: {type: String,default: '24px'},disabled: {type: Boolean,default: false},// 自定义value属性名valueName: {type: String,default: 'value'},// 自定义label属性名labelName: {type: String,default: 'label'},// 行数据rows: {type: Array,default () {return [{value: '1',label: "矩阵行一"},{value: '2',label: "矩阵行二"},{value: '3',label: "矩阵行三"},];}},// 列数据columns: {type: Array,default () {return [{value: '1',label: "1"},{value: '2',label: "2"},{value: '3',label: "3"},{value: '4',label: "4"},{value: '5',label: "5"},];}},},data() {return {uForm: {inputAlign: "",clearable: ""}};},computed: {valueCom() {// #ifndef VUE3return this.value;// #endif// #ifdef VUE3return this.modelValue;// #endif}},mounted() {let parent = this.$u.$parent.call(this, 'u-form');if (parent) {Object.keys(this.uForm).map(key => {this.uForm[key] = parent[key];});}},methods: {getStyle(row, col, index) {let style = {fontSize: this.iconSize}const values = this.valueComlet rowItem = values.find(item => {return item['row'] == row})if (rowItem) {let dataColIndex = this.columns.findIndex(item => {return item[this.valueName] == rowItem['col']})if (dataColIndex >= index) {style['color'] = this.selectIconColor} else {style['color'] = this.iconColor}} else {style['color'] = this.iconColor}return style;},change(row, col) {const values = JSON.parse(JSON.stringify(this.valueCom))let index = values.findIndex(item => {return item['row'] == row})if (index >= 0) {let rowItem = values[index]if (rowItem.col == col) {values.splice(index, 1)} else {rowItem.col = col}} else {let rowItem = {row,col}values.push(rowItem);}console.log(values)this.$emit("update:modelValue", values);this.$emit("change", values);this.dispatch("u-form-item", "onFieldChange", values);}}};
</script>
<style scoped lang="scss">.flex-table {--table-border-color: #ebeef5;border-top: 1px solid var(--table-border-color);border-left: 1px solid var(--table-border-color);.td {border-bottom: 1px solid var(--table-border-color);border-right: 1px solid var(--table-border-color);text-align: center;padding: 5px;min-height: 60rpx;line-height: 60rpx;}.td0 {min-width: 80px;flex: 1}.td1 {flex: 1}}
</style>

使用代码 

<template><view class="container container23285"><u-form-item class="diygw-col-24 matrixrate-clz" label="矩阵评分" labelPosition="top" prop="matrixrate"><diy-matrixrate iconColor="#eee" :rows="matrixrateRowDatas" :columns="matrixrateColumnDatas" v-model="matrixrate"></diy-matrixrate></u-form-item><view class="clearfix"></view></view>
</template><script>export default {data() {return {//用户全局信息userInfo: {},//页面传参globalOption: {},//自定义全局变量globalData: {},matrixrateRowDatas: [{ label: '矩阵行一', value: '1' },{ label: '矩阵行二', value: '2' },{ label: '矩阵行三', value: '3' }],matrixrateColumnDatas: [{ label: '1', value: '1' },{ label: '2', value: '2' },{ label: '3', value: '3' },{ label: '4', value: '4' },{ label: '5', value: '5' }],matrixrate: []};},onBackPress() {//官方限制不支持在onBackPress使用asyncconst backPress = async () => {console.log(1111);await this.dataApi();};backPress();//请根据需求返回true/false},onShow() {this.setCurrentPage(this);},onLoad(option) {this.setCurrentPage(this);if (option) {this.setData({globalOption: this.getOption(option)});}this.init();},methods: {async init() {}}};
</script><style lang="scss" scoped>.container23285 {padding-left: 0px;padding-right: 0px;}.container23285 {}
</style>

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

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

相关文章

数据结构-插入排序+希尔排序+选择排序

目录 1.插入排序 插入排序的时间复杂度&#xff1a; 2.希尔排序 希尔排序的时间复杂度&#xff1a; 3.选择排序 选择排序的时间复杂度&#xff1a; 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的…

PHP排序sort()、asort() 和 ksort() 的区别及用法

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

Amazon EC2的出现,是时代的选择了它,还是它选择了时代

目录 Amazon EC2简介 友商云服务器对比&#xff08;Amazon VS Tencent&#xff09; 友商云服务器对比&#xff08;Amazon VS Alibaba&#xff09; Amazon 云服务器的绝对优势 Amazon EC2功能 Amazon EC2 Linux 实例入门 启动实例 连接到的实例 清除的实例 终止的实例…

【Linux】一

本文使用的是云服务器来获取Linux环境 (使用虚拟机同样可以学习使用命令), 并且介绍了常用的Linux 命令. 获取Linux环境 使用xshell连接到云服务器 1.新建会话 输入主机号(云服务器的外网ip) 2.输入用户名/密码 centos的用户名:root 密码就是在后台设置的 3.成功进入 ~描…

盛元广通开放实训室管理系统2.0

开放实训室管理系统是一种基于网络和数据库的实训室信息管理系统&#xff0c;旨在提高实训室的管理水平&#xff0c;实现实训资源的优化配置和高效利用。该系统通常包括用户管理、设备管理、课程管理、考核管理等功能模块&#xff0c;能够实现实训室的预约、设备借用、课程安排…

PDF/X、PDF/A、PDF/E:有什么区别,为什么有这么多格式?

PDF 是一种通用文件格式&#xff0c;允许用户演示和共享文档&#xff0c;无论软件、硬件或操作系统如何。多年来&#xff0c;已经创建了多种 PDF 子类型来满足各个行业的不同需求。让我们看看一些最流行的格式&#xff1a;PDF/X、PDF/A 和 PDF/E。 FastReport .net下载 PDF/X …

如何远程控制别人电脑进行技术支持?

怎么提供远程技术支持&#xff1f; “我朋友的电脑出了一些问题&#xff0c;问我是否可以远程控制他的电脑帮他解决。请问有什么办法能快速的远程控制别人的电脑进行故障排除呢&#xff1f;” 当电脑出问题时&#xff0c;多数情况下会采用电话沟通进行解决&#…

Nuxt3框架全局引用外部JS/CSS文件的相关配置方法

全局引入外部文件方法&#xff1a; 找到根目录下的nuxt.config.ts配置文件&#xff1b;然后如上图所示&#xff0c;在defineNuxtConfig配置对象下app选项节点下&#xff0c;head对象中即可配置全局需要的JS或CSS文件&#xff1b; // https://nuxt.com/docs/api/configuration/…

BetterDisplay Pro for Mac(显示器校准软件)

BetterDisplay Pro是一款由waydabber开发的Mac平台上的显示器校准软件&#xff0c;可以帮助用户调整显示器的颜色和亮度&#xff0c;以获得更加真实、清晰和舒适的视觉体验。 以下是BetterDisplay Pro的主要特点&#xff1a; - 显示器校准&#xff1a;可以根据不同的需求和环境…

计算机系统的层次结构和性能指标

目录 五层结构三个级别语言 计算机性能指标CPU性能指标系统整体的性能指标 五层结构 三个级别语言 编译程序&#xff1a;将高级语言编写的源程序全部语句一次全部翻译成机器语言程序&#xff0c;而后再执行机器语言程序&#xff08;只需翻译一次&#xff09; 解释程序&#xff…

分布式与微服务 —— 初始

前言 距今微服务的提出已经过去快十个春秋&#xff0c;网络上的博文讲微服务也是一抓一大把&#xff0c;但是荔枝仍然觉得还是有必要自己梳理一下整个知识体系。在这篇文章中&#xff0c;荔枝将会以一个初学者的角度来切入&#xff0c;从分布式系统和微服务架构引入&#xff0c…

idea项目中java类名出现带 j 小红点,如何解决?

目录 一、问题描述 二、问题解决方案 1、寻找异常问题 2、解决方案 2.1常规操作方法 2.2 快速操作方法 一、问题描述 一打开idea的java项目&#xff0c;发现所有的文件边上都有带J的大红点 虽然&#xff0c;在 git bash 中进行编译时无异常。 但是视觉上给人的感受就是…

没收到Win11 23H2正式版的推送怎么升级到23H2

没收到Win11 23H2正式版的推送怎么升级到23H2&#xff1f;用户反映自己没有收到Win11 23H2正式版的更新推送&#xff0c;又想升级为23H2版本。接下来小编给大家详细介绍不同的升级方法&#xff0c;帮助更多的用户完成Win11 23H2系统的更新&#xff0c;升级后就能体验到Win11 23…

利用API连接抖音外卖与电商平台和营销系统,实现无代码开发的集成

利用API连接抖音外卖和电商平台 抖音来客&#xff0c;作为抖音生活服务商家经营平台&#xff0c;为商家提供一站式经营服务&#xff0c;其中包括入驻、上品、经营和履约等功能。商家可以通过API调用&#xff0c;实现电商平台和抖音外卖的连接&#xff0c;从而优化运营效率。例…

spark性能调优 | 内存优化

目录 我们先了解一下有哪些内存温馨提示RDD示范(spark版本2.1.1)RDD进行优化Df和Ds进行示范 我们先了解一下有哪些内存 1.storage内存 存储数据&#xff0c;缓存 可预估2.shuffle内存 计算join groupby 不可预估spark1.6之前 静态管理的&#xff0c;spark1.6之…

Vue网页中使用PDF.js弹窗显示pdf文档所有内容

本文中使用的PDF.js组件版本为3.11.174&#xff08;最新版使用上会有所不同&#xff09;&#xff0c;引入文件如下&#xff1a; 首先页面定义一个隐藏的弹窗块&#xff08;此处用ElementUI的Dialog组件&#xff09; <el-dialog ref"dialogPDF" :title"pdffi…

5分钟带你了解什么是敏捷测试?难点显而易见!

随着敏捷开发模式的普及&#xff0c;越来越多的测试同仁也开始了敏捷测试。那么究竟什么是敏捷测试&#xff1f;敏捷测试与传统测试的主要区别是什么&#xff1f;敏捷测试的难点又是什么&#xff1f;本文会对这三个问题进行讲解。注意&#xff1a;本文只是讲解敏捷测试概念相关…

linux基本指令总结--文件和目录

前言&#xff1a; 想要学好Linux操作系统&#xff0c;理解并熟悉一些基本的指令是必要的&#xff0c;下面我将整理出关于文件和目录操作的一些基本指令和用法&#xff0c;我的linux环境部署在服务器端&#xff0c;使用xshell软件进行远程操作。 本章指令整合&#xff1a; ls查…

企业怎样申请SSL证书?

对于很多企业而言&#xff0c;使用SSL证书加密网站已经显得尤为重要&#xff0c;这不仅仅是关乎企业的网站安全&#xff0c;同时也关系着企业的形象以及用户的信赖。既然使用https协议已经众多企业认可&#xff0c;那么我们该如何给自己的网站申请以及安装SSL证书&#xff1f; …

“智能与未来”2024世亚国际智能机器人展会(简称:世亚智博会)

随着科技的不断发展&#xff0c;智能机器人已经成为了当今社会的热门话题。无论是工业生产、医疗护理、家庭服务等领域&#xff0c;智能机器人都发挥着越来越重要的作用。而世亚智博会作为智能机器人领域的专业展会之一&#xff0c;旨在为全球的智能机器人产业提供一个展示、交…