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

话不多说直接上代码

功能:

使用微信小程序vant-weapp 组件库中的upload组件以及两个input框

最后拿到的值是一个数组对象的形式

主要代码如下:

wxml

html 复制代码
<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

javascript 复制代码
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 });
  },

需要赋值回显的话:

javascript 复制代码
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,'赋值回显');
  },

确认提交按钮

javascript 复制代码
 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 {
    // 执行提交事件,请求接口
  }
},

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

相关推荐
2601_953720828 小时前
【计算机毕业设计】基于微信小程序的拼车服务系统设计与实现
微信小程序·小程序·课程设计
乐启国际旅行社有限公司9 小时前
文旅小程序性能优化:分包加载+地图视口懒加载解决景区卡顿与包超限
性能优化·小程序
FungLeo9 小时前
Taro 4 微信小程序:RootPortal CSS 变量继承问题与自建 PagePortal 解决方案
微信小程序·taro·css 变量
万岳科技系统开发21 小时前
校园跑腿外卖搭建助力高校周边商家拓展线上业务
大数据·人工智能·小程序
微三云 - 廖会灵 (私域系统开发)1 天前
消费返物业费平台搭建:美家时代商业模式拆解与系统开发选型指南
小程序·系统架构
greenbbLV1 天前
中小公司积分商城选型:SaaS与私有化方案对比解析
大数据·前端·小程序
2501_915909062 天前
iOS 应用反调试技详解术 检测调试器的原理与防护实践
android·ios·小程序·https·uni-app·iphone·webview
00后程序员张2 天前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone
海纳百川·纳海川2 天前
租房行业数字化:换个思路解决“老问题”
大数据·微信小程序·小程序
上海云盾-小余3 天前
CC 高频请求 + DDoS 流量攻击实战防御:全链路 WAF 流量清洗部署完整流程
网络·爬虫·安全·小程序·ddos