微信小程序开发一个小型商城(九、意见反馈页面)

上一篇文章:微信小程序开发一个小型商城(八、个人页面)
在我的页面当中有一个页面反馈的栏目,单击进入后:一个tabs和易性标签一样的文字,下方文本输入框和上传图片按钮和提交按钮。
在这里插入图片描述
单击自定义组件事件:根据index来进行哦安短显示的是哪一个小栏目,以及下方标红的是哪一个小项。
文本输入事件:给textarea定义一个事件,并且获取其value值就是所有输入的文本。
选择图片事件与删除图片事件:在这里需要使用到图片上传一个内置api chooseImage 属性值分别有:最多可上传多少张图片、图片格式 原图/压缩、图片来源。上传成功后对图片数组进行拼接。删除图片的本质就是对图片数组当中的值进行删除,只要获取到index即可进行删除。
提交按钮单击事件:先获取文本的值,判断值的合法性即是够全部是空格,判断有没有需要上传的图片数组,验证通过后需要用到一个上传图片的api uploadFile,这个api 不支持多个文件同时上场所以只能够遍历数组挨个上传,提交给后台后,需要hideLoading即关闭弹窗,到最后使用navigateBack返回上一界面。
代码如下所示:注意在json文件当中引入tabs组件
wxml


<Tabs tabs="{{tabs}}" bindtabsItemChange="handleTabsItemChange">
    <view class="fb_main">
        <view class="fb_title"></view>
        <view class="fb_tips">
            <text >功能建议</text>
            <text >购买遇到问题</text>
            <text >性能问题</text>
            <text >其他</text>
        </view>
        <view class="fb_content">
            <textarea value="{{textValue}}" bindinput = "handleTextInput" placeholder="请描述一下问题"></textarea>
            <view class="fb_tool">
                <button bindtap = "handleimg" >+</button>
                <view class="up_img_item" wx:for="{{chooseimg}}"
                wx:key="*this" bindtap = "handleremoveimg" data-index="{{index}}"
                >
                <!--数组为简单数组的时候,使用 *this 的值作为wx:key 的值即可-->
                    <UpImg src="{{item}}"></UpImg>
                </view>
            </view>
        </view>
        <view class="form_btn_wrap"> 
            <button bindtap="handlefrom">
                <icon type="success_no_circle"color="white"></icon>
                提交
            </button>
        </view>
    </view>
</Tabs>

less

page {
  background-color: #eeeeee;
}
.fb_main {
    padding:20rpx;
    color: #666;
  .fb_tips {
      display: flex;
      flex-wrap: wrap;
    text {
        width: 30%;
        padding: 10rpx;
        background-color: #fff;
        text-align: center;
        margin:20rpx 10rpx;
    }
  }
  .fb_content {
      background-color: #fff;
      margin-top: 20rpx;
    textarea {
        padding: 10rpx;
    }
    .fb_tool {
        display: flex;
        flex-wrap: wrap;
        padding-bottom: 30rpx;
        button{
          margin: 0;
            width: 90rpx;
            height: 90rpx;
            font-size: 60rpx;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            margin-left: 20rpx;
            margin-top: 20rpx;
            color: #ccc;
        }
        .up_img_item{
          margin-left: 20rpx;
          margin-top: 20rpx;
        }
    }
  }
  .form_btn_wrap {
      margin-top: 20rpx;
      display: flex;
      justify-content: flex-end;
      button{
        margin: 0;
        width: 38%;
        color: #fff;
        background-color: var(--themeColor);
      }
  }
}

js文件

// pages/feedback/index.js
Page({
  data: {
    tabs: [
      {
        id: 0,
        value: "体验问题",
        isActive: true,
      },
      {
        id: 1,
        value: "商品、商家投诉",
        isActive: false,
      },
    ],
    //文本的值
    textValue: "",
    //被选中的图片数组
    chooseimg: [],
    //上传后的图片数组
    upLoadImg: "",
  },
  onShow: function () {},
  //单击自定义组件事件
  handleTabsItemChange(e) {
    //console.log(e)
    //获取索引值
    const { index } = e.detail;
    let { tabs } = this.data;
    tabs.forEach((v, i) =>
      i === index ? (v.isActive = true) : (v.isActive = false)
    );
    this.setData({
      tabs,
    });
  },
  //选择图片事件
  handleimg(e) {
    console.log(e);
    //调用api
    wx.chooseImage({
      count: 9, //最多可选择几张照片
      sizeType: ["original", "compressed"], //图片格式 原图/压缩
      sourceType: ["album", "camera"], //图片来源
      success: (result) => {
        console.log(result);
        this.setData({
          //图片数组进行拼接
          chooseimg: [...this.data.chooseimg, ...result.tempFilePaths],
        });
      },
      fail: () => {},
      complete: () => {},
    });
  },
  //删除图片元素
  handleremoveimg(e) {
    console.log(e);
    //获取传递过来的索引值
    const { index } = e.currentTarget.dataset;
    //获取图片数组
    let { chooseimg } = this.data;
    //删除元素
    chooseimg.splice(index, 1);
    //将修改后的值重新赋值
    this.setData({
      chooseimg,
    });
  },
  //文本输入
  handleTextInput(e) {
    this.setData({
      textValue: e.detail.value,
    });
  },
  //提交按钮单击事件
  handlefrom(e) {
    //获取文本的值
    const { textValue, chooseimg } = this.data;
    //验证合法性
    if (!textValue.trim()) {
      //不合法
      wx.showToast({
        title: "输入有误",
        icon: "none",
        mask: true,
      });
      return;
    }
    //显示正在上传中
    wx.showLoading({
      title: "正在上传中",
      mask: true,
    });
    //判断有没有需要上传的图片数组
    if (chooseimg.length != 0) {
      //遍历数组
      chooseimg.forEach((v, i) => {
        //验证通过,上传图片==》图片服务器 api
        wx.uploadFile({
          //不支持多个文件同时上场==》遍历数组 挨个上传
          //url: 'https://images.ac.cn/Home/Index/UploadAction/',
          url: "https://imgchr.com/", //图片上传到哪里
          filePath: v, //路径
          name: "file", //图片名称
          formData: {}, //文本信息
          success: (result) => {
            console.log(result);
            //let url = HTML.parse(result.data).url;
            //this.upLoadImg.push(url)
            if (i === chooseimg.length - 1) {
              console.log("提交给后台,将回到上一界面");
              //关闭弹窗
              wx.hideLoading();
              //重置页面
              this.setData({
                textValue: "",
                chooseimg: [],
              });
              //返回上一个页面
              wx.navigateBack({
                delta: 1,
              });
            }
          },
        });
        wx.getNetworkType({
          success: (result) => {
            console.log(result)
          },
          fail: () => {},
          complete: () => {}
        });
      });
    } else {
      wx.hideLoading();
      console.log("只提交了文本");
      wx.navigateBack({
        delta: 1,
      });
    }
  },
});

感谢你的预览,文章持续更新中…
下一篇文章:微信小程序开发一个小型商城(十、搜索商品页面页面)

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue PC商城源码是一个基于Vue.js框架开发的电子商务平台的源代码。它提供了一个完整的前端界面和交互逻辑,用于构建一个功能丰富、美观、易用的网上商城。 首先,Vue PC商城源码通过使用Vue.js框架,实现了组件化开发的思想。它将一个网上商城的各个功能模块分解为独立的组件,通过组件间的嵌套和通信,构建起一个完整的商城系统。这样的架构可以更好地实现代码的复用和维护,提高开发效率。 其次,Vue PC商城源码提供了丰富的商城功能。比如,它包括了用户注册、登录、购物车、商品列表、商品详情、下单支付等功能。用户可以通过注册登录账号,浏览商城中的商品,选择加入购物车,然后结算下单支付。同时,商家可以发布商品、管理库存和订单等。 此外,Vue PC商城源码还注重用户体验和页面设计。它使用了现代化的UI组件库,如Element UI或Vuetify,来构建美观、易用的界面。并且可以根据商城的需求进行定制化和样式的修改。 最后,Vue PC商城源码还支持前后端分离的开发模式。它使用了RESTful API来与后端服务器进行数据交互,实现前后端的解耦。这样的架构可以更好地实现并行开发和团队分工合作。 综上所述,Vue PC商城源码是一个基于Vue.js框架开发的电子商务平台的源代码。它提供了丰富的商城功能,注重用户体验和页面设计,支持前后端分离的开发模式。通过使用它,开发者可以快速搭建一个高效、美观、易用的网上商城

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Modify_QmQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值