微信小程序管理奖品(抽奖)

话不多说直接上代码

功能:
使用微信小程序vant-weapp 组件库中的upload组件以及两个input框
最后拿到的值是一个数组对象的形式


主要代码如下:
wxml

<view wx:for="{{prizes}}" wx:key="index" class="inputs"><input style="width:31%;border-radius:10rpx" value="{{item.name}}" placeholder="奖品名称" bindinput="handleInput" data-type="name" data-index="{{index}}" /><input style="width:31%;border-radius:10rpx" value="{{item.gl}}" placeholder="奖品概率" bindinput="handleInput" data-type="gl" data-index="{{index}}" /><van-uploader file-list="{{ item.fileList }}" max-count="1" bind:after-read="afterRead" deletable="{{ true }}" bind:delete="deleteImage" data-index="{{index}}" /></view>

js

data: {prizes: Array.from({ length: 8 }, () => ({name: "",gl: "",img: "",//存储图片路径fileList: [],//上传图片所用})),},
//input所绑定的事件handleInput(e) {const { index, type } = e.currentTarget.dataset;const { value } = e.detail;const prizes = this.data.prizes;prizes[index][type] = value;this.setData({ prizes });},//上传afterRead(event) {const { file } = event.detail;const { index } = event.currentTarget.dataset; console.log(file, "file");wx.uploadFile({url: "自己的路径",filePath: file.url, name: "file",formData: { user: "test" },header: {//自己的请求头,},success: (res) => {let { data } = JSON.parse(res.data);console.log(data, "data");const prizes = this.data.prizes;prizes[index].img = data.url;prizes[index].fileList.push({ url: file.url, dataUrl: file.url });this.setData({ prizes });},fail: (e) => {console.log(e, "fail");},});},//删除图片deleteImage(event) {const { index } = event.currentTarget.dataset;const prizes = this.data.prizes.slice();prizes[index].fileList = [];prizes[index].img = "";this.setData({ prizes });},

需要赋值回显的话:

onLoad(options) {let fileList = []; // 初始化 fileList 变量为空数组const prizes = [{ name: "奖品1", gl: "概率1", img: "/uploads/20231221/4a4595fbd2b102b0eea8982133b64cfc.png"},{ name: "奖品2", gl: "概率2", img: "/uploads/20231221/4a4595fbd2b102b0eea8982133b64cfc.png"},{ name: "奖品3", gl: "概率3", img: "/uploads/20231221/4a4595fbd2b102b0eea8982133b64cfc.png"},{ name: "奖品4", gl: "概率4", img: "/uploads/20231221/4a4595fbd2b102b0eea8982133b64cfc.png"},{ name: "奖品5", gl: "概率5", img: "/uploads/20231221/4a4595fbd2b102b0eea8982133b64cfc.png"},{ name: "奖品6", gl: "概率6", img: "/uploads/20231221/4a4595fbd2b102b0eea8982133b64cfc.png"},{ name: "奖品7", gl: "概率7", img: "/uploads/20231221/4a4595fbd2b102b0eea8982133b64cfc.png"},{ name: "奖品8", gl: "概率8", img: "/uploads/20231221/4a4595fbd2b102b0eea8982133b64cfc.png"},];const prizesWithFileList = prizes.map(prize => ({...prize,fileList: [ ...fileList, { url: prize.img } ]}));this.setData({ prizes:prizesWithFileList });console.log(this.data.prizes,'赋值回显');},

确认提交按钮

 handleButtonClick() {const { prizes } = this.data;//这里是把数组中的每一个对象的fileList去掉let arr = prizes.map(({ fileList, ...rest }) => rest);console.log(arr, "最终数据");const hasEmptyField = prizes.some((prize) => {return prize.name === "" || prize.gl === "" || prize.img === "";});if (hasEmptyField) {wx.showToast({title: "请填写完整后提交",icon: "none",});} else {// 执行提交事件,请求接口}
},

记得点赞关注,后续会发布更多实用文章

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

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

相关文章

【算法刷题】Day21

1. 【模板】前缀和 原题链接 题干&#xff1a; 给定一个长度为 n 的数组 有 q 次查询&#xff0c;每次有两个参数 l 和 r 算法原理&#xff1a; 1. 暴力解法 &#xff08;模拟&#xff09; 这个时间复杂度是 O(n) 2. 前缀和&#xff08;快速求出数组中某一个连续区间的和&…

Docker+PXC+Haproxy搭建高可用MySQL集群

搭建 本次搭建集群环境以5节点MySQL为例 1、安装pxc镜像 拉取pxc镜像 docker pull percona/percona-xtradb-cluster 镜像名称太长&#xff0c;修改一下&#xff1a; docker tag percona/percona-xtradb-cluster pxc 删除之前的&#xff1a; docker rmi percona/percona-xtr…

DOM是什么?

1、概述 &#xff08;1&#xff09;DOM代表文档对象模型&#xff0c;是 HTML 和 XML 文档的接口&#xff08;API&#xff09; &#xff08;2&#xff09;当浏览器第一次读取&#xff08;解析&#xff09;HTML文档时&#xff0c;会创建一个基于 HTML 文档的大对象&#xff0c;…

SpringBoot操作Redis缓存

SpringBoot操作Redis缓存 Redis有很多使用场景&#xff0c;一个使用场景就是缓存数据库的数据。Redis作为一个内存数据库&#xff0c;存取数据的速度比传 统的数据库快得多。使用Redis缓存数据库数据&#xff0c;可以减轻系统对数据库的访问压力&#xff0c;及加快查询效率等…

听GPT 讲Rust源代码--src/tools(15)

File: rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs文件的作用是实现了一个能够将输入的文本映射为标记的结构。具体来说&#xff0c;它定义和实现了几个结构体&#xff08…

【已解决】Mysql在更新的时候,需要更新的字段是其他表查询的值,这个时候update语句怎么写

Mysql在更新的时候,需要更新的字段是其他表查询的值&#xff0c;这个时候update语句怎么写&#xff1f; 例如&#xff1a;我想要更新A表中的floor字段。但是这个字段的是是根据条件在B表中查询后&#xff0c;得到的值。 这样需求的sql语句怎么写 &#xff1f; 要点&#xff…

Mysql5.7版本中,查询分组GROUP BY通过子查询中ORDER BY进行排序无效的问题解决办法

文章目录 一、场景&#xff1a;二、解决办法1、使用 having 来阻止合并2、足够大的limit3、子查询 一、场景&#xff1a; 问题描述&#xff1a;Mysql5.7版本中&#xff0c;查询分组GROUP BY通过子查询中ORDER BY进行排序无效的问题解决办法。 应用场景&#xff1a;一对多的关系…

数据库(三)超详细SQL语句入门 | SQL增删改查,重命名,字符操作,联合操作,聚合函数,嵌套子查询

文章目录 1 SQL表内类型2 SQL增删改语句2.1 创建表2.2 删除表2.3 表中添加属性2.4 添加新的元组信息2.5 删除表所有元组2.6 元组 3 查询语句4 重命名4.1 为什么用 5 字符操作5.1 寻找 6 生序降序7 联合操作7.1 并集Union7.2 交集 INTERSECT7.3 差集 EXCEPT7.4 对于空值补充 8 聚…

掀起全新的互联网直播风潮

随着科技的不断进步和智能手机的普及&#xff0c;无人直播作为一种全新的互联网直播方式&#xff0c;在近些年迅速崛起&#xff0c;并引起了广泛关注。本文将围绕手机无人直播展开探讨&#xff0c;探究其背后的原因以及对社会生活带来的影响。 首先&#xff0c;我们需要明确什…

[Angular] 笔记 5:ngClass

Angular 中的 ngClass 是什么&#xff1f; chatgpt 回答&#xff1a; 在Angular中&#xff0c;ngClass 是一个内置的指令&#xff0c;用于动态地添加或移除 HTML 元素的 CSS 类。它允许你根据条件设置一个或多个 CSS 类&#xff0c;可以是对象、数组或字符串。 使用方式&#…

一篇文章带你进阶CTF命令执行

以下的命令是为了方便以后做题时方便各位读者直接来这里复制使用&#xff0c;刚开始还请先看完这篇文章后才会懂得下面的命令 ?ceval($_GET[shy]);&shypassthru(cat flag.php); #逃逸过滤 ?cinclude%09$_GET[shy]?>&shyphp://filter/readconvert.base64-…

mysql:查看服务端没有睡眠的线程数量

使用命令show global status like Threads_running;可以查看服务端没有睡眠的线程数量。 例如&#xff1a;

使用React和ResizeObserver实现自适应ECharts图表

关键词 React ECharts ResizeObserver 摘要 在现代 Web 开发中&#xff0c;响应式布局和数据可视化是非常常见的需求。本文将介绍如何使用React、ResizeObserver和ECharts库来创建一个自适应的图表组件。 什么是ResizeObserver ResizeObserver是JavaScript的一个API&#x…

定时任务,停用用户。

1&#xff0c; <!-- 定时3.用户三个月无操作&#xff0c;停用用户 begin --> <bean id"autoStopSleepUserService" class"com.rjhc.application.sysmanage.service.impl.SysTaskScheduleServiceImpl" /> <bean id"jobDetail_…

玩转Spring状态机

说起Spring状态机&#xff0c;大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢&#xff1f;没错&#xff0c;Spring状态机就是状态模式的一种实现&#xff0c;在介绍Spring状态机之前&#xff0c;让我们来看看设计模式中的状态模式。 1. 状态模式 状态模式的定义如…

代码随想录 322. 零钱兑换

题目 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。…

[Encryptedd@mailfence.com].faust 勒索病毒肆虐:如何恢复被加密的数据文件?

导言&#xff1a; 在网络安全的战场上&#xff0c;[backupsairmail.cc].faust [Deciphermailfence.com].faust[Encrypteddmailfence.com].faust[support2022cock.li].faust [tsai.shenmailfence.com].faust勒索病毒是一种极具破坏性的恶意软件。本文91数据恢复将深入介绍该病毒…

Docker仓库

官方docker仓库使用 网址&#xff1a;https://hub.docker.com 每个注册用户都可以上传和管理自己的镜像 用户登录 上传镜像前需要登陆&#xff0c;登陆后生成~/.docker/config.json文件保存验证信息 docker login 给本地镜像打标签 上传本地镜像前必须先给上传的镜像用do…

【krita】实时绘画 入门到精通 海报+电商+装修+人物

安装插件 首先打开comfyUI&#xff0c;再打开krita&#xff0c;出现问题提示&#xff0c; 打开 cd custom_nodes 输入命令 安装控件 git clone https://github.com/Acly/comfyui-tooling-nodes.git krita基础设置 设置模型 设置lora &#xff08;可设置lora强度 增加更多…

◢Django md5加密与中间件middleware

utils文件夹是重新建立的&#xff08;与migrations同级&#xff09;&#xff0c;该文件夹下主要存放工具&#xff0c;就像static文件夹下只存放静态文件一样 加密 在utils文件夹下建立encrypt.py文件 from django.conf import settings import hashlib def md5(data_string)…