首页 > 小程序教程 > 微信小程序开发在线快速提问咨询页面设计与制作(支持图片上传)

微信小程序开发在线快速提问咨询页面设计与制作(支持图片上传)

上一篇 下一篇
今天我们来做在线咨询快速提问在线留言页面制作与设计,支持用户上传图片。制作好以后效果图如下:


一、wxml页面代码如下:
<!--输入文本域  -->
<view class="text-box">
    <textarea placeholder="您好,请详细描述你的问题..." placeholder-style="color:#666;font-size:30rpx; "  value="{{textareaVal}}"    bindinput="textareaFn"></textarea>
</view>
<!--上传图片  -->
<view class="upload-img">
  <view  class="imgs-style" wx:for="{{arrimg}}" wx:key="{{arrimg}}">
        <view class="close" bindtap="closeImgFn"  id="{{index}}">
                <image src="/images/close.png"></image>
         </view>
       <image src="{{item}}" data-id="{{index}}"></image>
    </view>
    <image   src="/images/upload.png" bindtap="chooseimage" bindtouchstart=""></image>
    
    <text>{{index}}/{{len}}</text>
</view>
<!--温馨提示  -->
<view class="prompt">
<text>温馨提示:</text>
<text>建议详细描述事情经过和需要解决的问题,问题越详细,律师回复质量越高。</text>
<text>如有证据请点击上方上传图片。</text>
</view>
<!-- 下一步-->
<view class="next-step" bindtap="submitFn"><text>下一步</text></view>

二、样式wxss页面代码如下:
.text-box {
    display: flex;
    padding: 15rpx;
}
.text-box textarea{
    padding: 15rpx;
    flex: 1;
    border:1rpx solid #ccc;
    font-size: 30rpx;
}
.upload-img {
      display: flex;
      padding: 15rpx;
      justify-content: flex-end;
      align-items:center;
}
.upload-img image {
    height: 150rpx;
    width: 150rpx;
    margin-left: 15rpx;
}
.upload-img  .imgs-style {
    display: flex;
     justify-content: center;
     align-items:center;
     position: relative;
}
.upload-img  .imgs-style .close{
    position: absolute;
    top: 0;
    right: 0;
}
.upload-img  .imgs-style .close image{
    height: 45rpx;
    width: 45rpx;
}
.upload-img  text{
    padding-left: 15rpx;
}
.prompt {
    padding: 15rpx;
}
.prompt text{
    font-size: 30rpx;
    color: #333;
    display: block;
    line-height: 50rpx;
}
.prompt text:first-child {
    color: #d92a2a;
}
.next-step {
    margin-top: 50rpx;
    display: flex;
    padding: 0 15rpx;
}
.next-step text{
    font-size: 36rpx;
    height: 80rpx;
    background: #4395FF;
    display: flex;
    justify-content: center;
    flex: 1;
    align-items:center;
    color: #fff;
}
.sound-recording text {
    background: #1AAD16;
}

三、测试数据js代码如下,包含上传图片js功能:
var Utils = require("../../utils/util.js");

const ctx = wx.createCanvasContext('myCanvas'); // 压缩图片

var datalist = {
    textareaFocus:true,                              // 文本域的自动调取键盘
    textareaVal: "",                                     // 文本域的val
    arrimg:[],           // 上传img的attr     => 页面显示的img                  
    len:4,              // 上传的img的最大的length
    index: 0,         // 上传完成的个数
    successArr:[],      // 存储上传返回的img的url =>发送的数据
    questions:{},        // 提交数据存储到本地的josn
    bool: true,  // 是否通过上传的权限
    mun:0,
    tempFilePath:""
}

Page({
data:datalist,
onLoad: function (options) {
    // 页面初始化 options为页面跳转所带来的参数
    Utils.removeStorage("tw");
},
submitFn: function () {   // 提交数据
    Utils.setStorage("Reset", "/pages/questions/questions");
    var _this = this;
    // 获取到  textarea的val
    var textareaVal = this.data.textareaVal;
    // 获取到上传成功返回的img的src the list
    var imgsList = this.data.successArr;
    // 获取到本地存储的数据
    var questions = _this.data.questions;
    // 提交的数据 不为空的话 那么就存储到本地

    if (textareaVal.trim() != "") {

    questions.textareaVal = textareaVal;
    questions.url = imgsList;
    Utils.setStorage("tw", questions);

    var value = wx.getStorageSync('login');
        if (value != "") {
            
            wx.navigateTo({
                    url: '/pages/questions/questions'
            })
        } else {
        
            wx.redirectTo({
                url: '/pages/forgot_password/forgot_password'
            })
        }
    }else{
        Utils.showModal("问题不能空");
        return false
    }
},
textareaFn: function (ev) {        // 输入动态获取textarea的value
    this.setData({
        textareaVal: ev.detail.value
    })
},
chooseimage:function(e){
    this.chooseImageFn();   // 上传的fn
},
chooseImageFn:function(){   // 上传的fn
    var _this = this;
    var len = _this.data.len;   // 获取data的上传的总个数
    var mun = _this.data.index;  // 获取data的上传完成的个数
    var arr = _this.data.arrimg;         // 获取data的img的list 
    var suArr = _this.data.successArr; // 存储上传返回的img的src

    // 调取手机的上传
    wx.chooseImage({
        count: 1,
        sizeType: ['compressed'],
        sourceType: ['album', 'camera'],
        success: function (res) {       // 成功
            console.log(res)
            var tempFilePaths = res.tempFilePaths[0].toString();
            len == mun ? mun = 4 : mun++;
            if (_this.data.index <= 3) {// 上传之前的验证个数
                arr.push(tempFilePaths);
                _this.setData({
                    arrimg: arr,
                    index: mun
                })
                wx.uploadFile({   // 上传
                    url: Utils.url + '/index.php/upload?server=1',
                    filePath: arr[arr.length - 1],
                    name: 'file',
                    formData: {
                        'user': 'test'
                    },
                    success: function (res) {
                        // 返回上传完成的img的src
                        var path = Utils.url + JSON.parse(res.data).data.path;
                        suArr.push(path);
                        _this.setData({
                            successArr: suArr
                        })
                    }
                })
            }
        }
    })
},
closeImgFn:function(e){
    var doId = e.currentTarget.id;      // 对应的img的唯一id
    var doarrimg = this.data.arrimg;    // 页面显示的img the list    
    var doindex = this.data.index;   // 上传显示的个数
    var suArr = this.data.successArr;      // 发送的img的list的数组
    doarrimg.splice(doarrimg[doId], 1);     // 删除当前的下标的数组
    suArr.splice(suArr[doId], 1); 
    doindex --;       // 删除一个上传的个数就递减
    this.setData({
        arrimg: doarrimg,
        index: doindex,
        successArr: suArr
    })
},
getSetting:function(){  // 请求权限
    var _this = this ;
    wx.getSetting({
        success(res) {
            if (res.authSetting["scope.record"]) {
                if (_this.data.bool) {
                    wx.startRecord({
                        success: function (res) {
                            var tempFilePath = res.tempFilePath;
                            _this.setData({
                                tempFilePath: tempFilePath
                            })
                        }
                    })
                    _this.setData({
                        bool: false
                    })
                } else {
                    wx.stopRecord()
                    _this.setData({
                        bool: true
                    })
                }

            }
        }
    })
}
});
以上就是微信小程序开发在线快速提问咨询页面设计与制作(支持图片上传)的文章教程,希望对大家有帮助!

模板简介:该模板名称为【微信小程序开发在线快速提问咨询页面设计与制作(支持图片上传)】,大小是,文档格式为.,推荐使用打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【小程序教程】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 24,617次
  • 使用软件
  • 文件格式
  • 文件大小
  • 上传时间 05-15
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信公众平台 响应式 微信图片 html5 企业网站 微信模板 微信文章 自适应 单页式简历模板 微信素材
您可能会喜欢的其他模板