样式集-发布,发表页面完整代码及示意图

发表页面完整代码示意图

完整代码

wxml代码:

<!--pages/publish/publish.wxml-->
<view class="biaoqing" catchtap="showEmoji"><text>😊</text></view>
<view class="fabiao" catchtap="fabiao">发表</view>

<view class="emoji_block" wx:if='{{showEmoji}}'>
	<view wx:for='{{connectemoji}}' catchtap="add_biaoqing" id="{{item}}" class="emoji" wx:key=''>{{item}}</view>
</view>
<view class="page" data-weui-theme="{{theme}}">
	<view class="weui-form">
		<view class="weui-cell__bd">
			<textarea maxlength="100" value="{{ttval}}" bindinput="ttval" placeholder="写下你对产品的描述……" rows="3"></textarea>

			<video wx:if="{{videoUrl}}" src="{{videoUrl}}"></video>
			<view wx:if="{{!videoUrl}}" class="weui-uploader__bd">
				<view class="weui-uploader__files" id="uploaderFiles">
					<block wx:for="{{files}}" wx:key="*this">
						<view class="weui-uploader__file" bindtap="previewImage" id="{{item}}">
							<image class="weui-uploader__img" src="{{item}}" mode="aspectFill" />
						</view>
					</block>
				</view>
				<view class="weui-uploader__input-box">
					<view class="weui-uploader__input" bindtap="upup"></view>
				</view>
			</view>


			<!-- <view class="weui-textarea-counter"><text>0</text>/200</view> -->
			<input class="product" bindinput="productval" value="{{productName}}" placeholder="请输入产品名称,方便客户搜索" />
			<input class="numble" bindinput="phoneval" value="{{phoneNumble}}" type="numble" placeholder="请输入联系方式" />
			<view class="bbb p_r" catchtap="get_loc">
				<image class="rrr" mode="widthFix" src="/images/editright.png"></image>
				<image class="map_icon" src="/images/map.png"></image>
				<view class="weizhi">{{loc_name?loc_name:"所在位置"}}</view>
			</view>
			<view class="bbb " style="margin-top: 40rpx;">
				<picker bindchange="bindPickerChange" value="{{index}}" range="{{fenleiList}}">
					<view class="p_r">
						<image class="rrr" mode="widthFix" src="/images/editright.png"></image>
						<image class="map_icon" src="/images/img-share-order.png"></image>
						<view class="weizhi">{{fenlei?fenlei:"选择分类"}}</view>
					</view>
				</picker>
			</view>

		</view>
	</view>
</view>
<page-container show="{{container.show}}" overlay="{{container.overlay}}" position="{{container.position}}"
	round="{{container.round}}">
	<view class="containerBlock">
		<view class="containerBlockT">请先扫码关注家博慧公众号,或长按识别关注,可以正常接收工程订单信息。</view>
		<image class="containerBlockI" catchtap="seeGZHImg" src="{{GZHImg}}"></image>
		<image class="containerBlockI2"
			src="https://6d6d-mm-4t7rg-1302506477.tcb.qcloud.la/13MiniIcon/d598e69bf51fefcbf834280672ec66e.jpg"></image>

		<view class="gzhdetail">
			中国门窗工程专业采购竞标权威平台,官方审核工程订单。专业服务室内门、进户门、板材、全屋定制、木工机械等 厂家、经销商、采购商。
		</view>
	</view>
</page-container>
<block wx:if="{{!mch_id}}">
	<view class="containerBlock">
		<view class="containerBlockT" style="margin-top:50rpx;">请先扫码关注家博慧公众号,或长按识别关注,可以正常接收工程订单信息。</view>
		<image class="containerBlockI" catchtap="seeGZHImg" src="{{GZHImg}}"></image>
		<image class="containerBlockI2"
			src="https://6d6d-mm-4t7rg-1302506477.tcb.qcloud.la/13MiniIcon/d598e69bf51fefcbf834280672ec66e.jpg"></image>

		<view class="gzhdetail" style="bottom: 10rpx;">
			中国门窗工程专业采购竞标权威平台,官方审核工程订单。专业服务室内门、进户门、板材、全屋定制、木工机械等 厂家、经销商、采购商。
		</view>
		
		<button class="kefu" open-type="contact">咨询客服</button>
	</view>
</block>

wxss

page{
  background-color: white;
}
.containerBlock{
  position: relative;
}
video{
  width: 400rpx;
  height: 280rpx;
}
.product{
  margin-bottom: 30rpx;
  border-bottom: 1px solid #f2f2f2;
  width: 540rpx;
  font-size: 32rpx;
  margin-top: 40rpx;
}
.numble{
  margin-bottom: 30rpx;
  border-bottom: 1px solid #f2f2f2;
  width: 340rpx;
  font-size: 32rpx;
  margin-top: 20rpx;
}
.upTip{
  line-height: 50rpx;
  margin-right: 30rpx;
}
.weui-form__control-area{
  margin-top: 0px;
}
.biaoqing{
  color: white;
  text-align: center;
  line-height: 60rpx;
  position: absolute;
  right: 170rpx;
  width: 60rpx;
  top: 12rpx;
  height: 60rpx;
  border-radius: 6rpx;
  z-index: 999;
  background-color: cadetblue;
}
.fabiao{
  background-color: #06C35E;
  color: white;
  text-align: center;
  line-height: 60rpx;
  position: absolute;
  right: 20rpx;
  top: 12rpx;
  width: 120rpx;
  height: 60rpx;
  border-radius: 6rpx;
  z-index: 999;
}
.emoji{
  margin-right: 20rpx;
}
.emoji_block{
  display: flex;   flex-wrap:wrap;
  width: 100%;
  position: relative;
  top: 80rpx;
  bottom:50rpx;
  padding: 10rpx;
  padding-bottom: 100rpx;
  font-size: 36rpx;
  /* background-color: #44426a; */
}
.weui-form{
  padding: 0 30px;
}
textarea{
  height: 120rpx;
  margin-top: 30rpx;
}
.kefu{
  width: 190rpx;
  position: fixed;
  bottom: 200rpx;
  right: 10rpx;
  height: 70rpx;
  line-height: 70rpx;
  color: #f2f2f2;
  background-color: rgb(9, 211, 144);
}
.bbb{
  border-top: 1px solid #f3f3f3;
  height: 110rpx;
  
  line-height: 110rpx;
  position: relative;
  border-bottom: 1px solid #f3f3f3;
}
.tips{
  margin-top: 30rpx;
}
.gzh{
  width: 250rpx;
  height: 250rpx;
  position: relative;
  left: 50%;
  margin-left: -125rpx;
}
.map_icon{
  font-size: 42rpx;
  margin-left: 50rpx;
}
.map_icon{
  width: 40rpx;
  position: relative;
  top: 35rpx;
  right: 20rpx;
  height: 45rpx;
}
.weizhi{
  position: relative;
  left: 20rpx;
  font-size: 36rpx;
}
.rrr{
  width: 36rpx;
  top: 39rpx;
  max-height: 50rpx;
  position: absolute;
  right: 40rpx;
}

js

// pages/publish/publish.js
const app = getApp();
const DB = wx.cloud.database()
var that;
var util = require('../../utils/helper');
var yun_file_id_arr = [];
var dynamicAddSuo = false;
var add_dynamic_ing = false;
// var yiyuan = 1 //880
// ['产品推广收费标准', '168元/20条动态', '268元/60条动态', '368元/100条动态']
var yiyuan = 16800 //880
var liangyuan = 26800 //10000
// var liangyuan = 1 //10000
var money = 0;
Page({
    data: {
        mch_id: true,
        container: {
            show: false,
            overlay: true,
            position: "bottom",
            round: true,
        },
        GZHImg: 'https://6d6d-mm-4t7rg-1302506477.tcb.qcloud.la/13MiniIcon/gzh.jpg',
        videoUrl: '', //上传视频路径
        files: [], //上传图片路径 
        fenleiList: ['门窗世界', '辅料板材', '全屋家具', '机械五金'],
        ttval: '',
        fenlei: '',
        showEmoji: false,
        connectemoji: ['😊', '😅', '😲', '😭', '😂', '😄', '😩', '😞', '😵', '😒', '😍',
            '😤', '😜', '😝', '😋', '😘', '😚', '😷', '😳', '😃', '😆', '😁', '😢', '😨',
            '😠', '😣', '😌', '😖', '😔', '😰', '😱', '😪', '😏', '😓', '👍', '🔥', '🌹', '[發]'
        ],
        emoji_list: ['emoji1i1', 'emoji2i2', 'emoji3i3', 'emoji4i4', 'emoji5i5', 'emoji6i6', 'emoji7i7', 'emoji8i8', 'emoji9i9', 'emoji10i10', 'emoji11i11', 'emoji12i12', 'emoji13i13', 'emoji14i14', 'emoji15i15', 'emoji16i16', 'emoji17i17', 'emoji18i18', 'emoji19i19', 'emoji20i20', 'emoji21i21', 'emoji22i22', 'emoji23i23', 'emoji24i24', 'emoji25i25', 'emoji26i26', 'emoji27i27', 'emoji28i28', 'emoji29i29', 'emoji30i30', 'emoji31i31', 'emoji32i32', 'emoji33i33', 'emoji34i34', 'emoji35i35', 'emoji37i37', 'emoji38i38', 'emoji39i39'],

    },
  seeGZHImg() {
    var GZHImg = this.data.GZHImg;
    wx.previewImage({
      current: GZHImg,
      urls: [GZHImg]
    })
  },
    yulan() {

        getApp().core.previewImage({
            urls: ['https://6d6d-mm-4t7rg-1302506477.tcb.qcloud.la/13MiniIcon/gzh.jpg'], // 需要预览的图片http链接列表
            current: ['https://6d6d-mm-4t7rg-1302506477.tcb.qcloud.la/13MiniIcon/gzh.jpg'],
        });
    },
    //实现小程序支付
    pay(payData) {
        //官方标准的支付方法
        wx.requestPayment({
            timeStamp: payData.timeStamp,
            nonceStr: payData.nonceStr,
            package: payData.package, //统一下单接口返回的 prepay_id 格式如:prepay_id=***
            signType: 'MD5',
            paySign: payData.paySign, //签名
            success(res) {
                console.log("支付成功", res)

                if (!that.to_login()) return;
                that.setData({
                    ['container.show']: true
                })
                var up_dynamic_num = 0;
                if (money == yiyuan) {
                    up_dynamic_num = 20
                } else
                if (money == liangyuan) {
                    up_dynamic_num = 60
                } else if (money == 30000) {
                    up_dynamic_num = 100
                }
                that.update_up_dynamic_num(up_dynamic_num, 'isplay')
            },
            fail(res) {
                console.log("支付失败", res)
            },
            complete(res) {
                console.log("支付完成", res)
            }
        })
    },
    update_up_dynamic_num(up_dynamic_num = 0, type) {
        DB.collection('user').doc(wx.getStorageSync('cloud_user')._id).update({
            data: {
                up_dynamic_num
            },
            success: function (res) {
                that.setData({
                    up_dynamic_num
                })
                that.add_dynamic();
                var title
                if (type == 'isplay') {
                    title = '恭喜您,成功购买' + up_dynamic_num + '条动态发表资格'
                } else {
                    title = '您还剩余' + up_dynamic_num + '条动态发表资格'
                }
                wx.showToast({
                    title: title,
                    icon: 'none'
                })
                console.log('up_dynamic_num', res)
            }
        })
    },
    upup() {
        wx.showModal({
            title: '提示',
            content: '请选择上传图片或者视频',
            confirmText: '上传图片',
            cancelText: '上传视频',
            success(res) {
                if (res.confirm) {
                    that.chooseImage()
                    console.log('用户点击确定')
                } else if (res.cancel) {
                    that.chooseVideo()
                    console.log('用户点击取消')
                }
            }
        })
    },
    // 上传视频 
    chooseVideo() {
        wx.chooseVideo({
            sourceType: ['album', 'camera'],
            maxDuration: 60,
            compressed: false,
            camera: 'back',
            success(res) {
                console.log(res.tempFilePath)
                var date = new Date().getTime()
                wx.showLoading({
                    title: '视频上传中···',
                })
                wx.cloud.uploadFile({
                    cloudPath: 'dynamic/' + date + '.mp4',
                    filePath: res.tempFilePath, // 文件路径
                }).then(res => {
                    wx.hideLoading({
                        success: (res) => {
                            wx.showToast({
                                title: '视频上传成功',
                            })
                        },
                    })
                    that.setData({
                        videoUrl: res.fileID,
                        files: [],
                    })
                })
            }
        })
    },
    showEmoji() {
        this.setData({
            showEmoji: true
        })
    },
    bindPickerChange: function (e) {
        console.log('picker发送选择改变,携带值为', e.detail.value)
        var fenleiList = this.data.fenleiList;
        this.setData({
            fenlei: fenleiList[e.detail.value]
        })
    },
    add_biaoqing(e) {
        let txt = this.data.ttval;
        txt = txt + e.currentTarget.id;
        this.setData({
            ttval: txt,
            showEmoji: false
        })
    },
    get_loc() {
        wx.chooseLocation({
            success: function (res) {
                console.log(res)
                that.setData({
                    loc_name: res.name,
                    address: res.address,
                    latitude: res.latitude,
                    longitude: res.longitude,
                })
            }
        })
    },
    onLoad(option) {
        that = this
        if (option.virtual_openId) {
            this.data.virtual_openId = option.virtual_openId
            this.data.name = option.name
            this.data.head = option.head
        }

        var mch_id = wx.getStorageSync('mch_id')
        var phoneNumble = wx.getStorageSync('phoneNumble') || ''
        var productName = wx.getStorageSync('productName') || ''
        this.setData({
            phoneNumble,mch_id,
            productName
        })

        getApp().request({
            url: getApp().api.user.isopenshop,
            success: (res => {
                console.log(res)
                if (res.data == 1) {
                    mch_id = res.mch_id;
                }
                wx.setStorageSync('mch_id', mch_id)
                that.setData({
                    dian_value: res.data,
                    mch_id: mch_id,
                })
                console.log('??????a')
                that.getDynamicNum()

            })
        })
    },
    getDynamicNum() {

        DB.collection('user').doc(wx.getStorageSync('cloud_user')._id).get().then(res => {
            console.log('resss', res)
            this.setData({
                cloudUserInfo: res.data,
                up_dynamic_num: res.data.up_dynamic_num
            })
        })
    },
    ttval(e) {
        console.log(e.detail.value);
        this.setData({
            ttval: e.detail.value
        })
    },
    productval(e) {
        console.log(e.detail.value);
        wx.setStorageSync('productName', e.detail.value)
        this.setData({
            productName: e.detail.value
        })
    },
    phoneval(e) {
        console.log(e.detail.value);
        wx.setStorageSync('phoneNumble', e.detail.value)
        this.setData({
            phoneNumble: e.detail.value
        })
    },
    up_img(item_idx, end_idx, promise_ress) {
        console.log("item_idx, end_idx", item_idx, end_idx);
        if (item_idx == end_idx) {
            promise_ress(true)
            return
        }
        var files = this.data.files;
        var date = new Date().getTime()
        wx.cloud.uploadFile({
            cloudPath: 'dynamic/' + date + '.png',
            filePath: files[item_idx], // 文件路径
        }).then(res => {
            yun_file_id_arr.push(res.fileID)
            console.log('yun_file_id_arr1', yun_file_id_arr)
            item_idx++;
            this.up_img(item_idx, end_idx, promise_ress)
        }).catch(error => {
            // handle error
        })
    },
    isTs(txt) {
        wx.showModal({
            title: '提示',
            content: txt,
            showCancel: false,
            success(res) {
                if (res.confirm) {
                    console.log('用户点击确定')
                } else if (res.cancel) {
                    console.log('用户点击取消')
                }
            }
        })
    },
    // 发表上传数据
    upData(type) {
        let connectemoji = this.data.connectemoji
        let txt = this.data.ttval;
        for (let i = 0; i < connectemoji.length; i++) {
            txt = txt.replace(new RegExp(connectemoji[i], 'g'), this.data.emoji_list[i])
        }
        var userInfo = wx.getStorageSync('USER_INFO')
        if (!userInfo) {
            wx.showToast({
                title: '暂未登录',
                icon: 'none'
            })
            return
        }
        if (type == 'img') {
            console.log('yun_file_id_arr2', yun_file_id_arr)
            if (yun_file_id_arr.length == 0) {
                this.isTs('请上传图片')
                return
            }
        }
        var phoneNumble = this.data.phoneNumble
        if (!phoneNumble) {
            this.isTs('请输入联系方式')
            return
        }

        var productName = this.data.productName
        if (!productName) {
            this.isTs('请输入产品名称')
            return
        }

        if (!txt) {
            this.isTs('请输入产品描述')
            return
        }
        var loc_name = this.data.loc_name
        // if (!loc_name) {
        //     this.isTs('请选择所在位置')
        //     return
        // }

        var fenlei = this.data.fenlei
        if (!fenlei) {
            this.isTs('请选择分类')
            return
        }

        var data = {
            xiangfa: txt,
            fenlei: this.data.fenlei,
            fileType: type,
            phoneNumble,
            productName,
            mch_id: wx.getStorageSync('mch_id') || "",
            name: userInfo.nickname,
            head: userInfo.avatar_url,
            time: util.formatTime(new Date()),
            createTime: new Date().getTime(),
            userId: userInfo.id,
            loc_name: loc_name,
            latitude: this.data.latitude,
            longitude: this.data.longitude,
        };
        if (this.data.virtual_openId) {
            data.virtual_openId = this.data.virtual_openId;
            data.name = this.data.name;
            data.head = this.data.head;
        }
        if (type == 'img') {
            data.yun_file_id_arr = yun_file_id_arr;
        } else {
            data.videoUrl = this.data.videoUrl
        }
        yun_file_id_arr = [];
        console.log('data', data)
        if (dynamicAddSuo) {
            wx.showToast({
                title: '请勿频繁操作',
                icon: 'none'
            })
            return
        }
        dynamicAddSuo = true
        setTimeout(() => {
            dynamicAddSuo = false
            wx.hideLoading({
                success: (res) => {},
            })
        }, 10000);
        wx.showLoading({
            title: '发表中',
        })
        DB.collection('dynamic').add({
            // data 字段表示需新增的 JSON 数据
            data: data
        }).then(res => {
            wx.hideLoading({
                success: (res) => {},
            })
            var time = new Date().getTime();
            // 一个小时可以发两条
            wx.setStorageSync('up_dynamic_time', time)
            var up_dynamic_num = wx.getStorageSync('up_dynamic_num')
            if (!up_dynamic_num && up_dynamic_num != 0) {
                wx.setStorageSync('up_dynamic_num', 2)
            } else if (up_dynamic_num) {
                up_dynamic_num -= 1;
                wx.setStorageSync('up_dynamic_num', up_dynamic_num)
            }
            console.log('up_dynamic_num发布成功', up_dynamic_num)
            console.log(res)
            if (!this.data.mch_id) {
                var up_dynamic_num_data = this.data.up_dynamic_num - 1;
                that.update_up_dynamic_num(up_dynamic_num_data)
                this.setData({
                    up_dynamic_num: up_dynamic_num_data
                })
            }
            wx.showToast({
                title: '上传完毕',
                icon: 'none'
            })
            wx.navigateBack({
                delta: 1,
            })
            // wx.redirectTo({
            //     url: '/pages/findList/findList',
            // })
        })
    },
    go_tanchuang() {
        wx.showActionSheet({
            // itemList: ['产品推广收费标准', '100元/20条动态', '300元/100条动态'],
            itemList: ['产品推广收费标准', '168元/20条动态', '268元/60条动态', '368元/100条动态'],
            success(res) {
                console.log(res.tapIndex)
                if (res.tapIndex == 0) {
                    that.fabiao()
                    return
                }
                if (res.tapIndex == 1) {
                    money = yiyuan;
                }
                if (res.tapIndex == 2) {
                    money = liangyuan;
                }
                if (res.tapIndex == 3) {
                    money = 36800;
                }
                var data = {
                    orderid: new Date().getTime() + '',
                    money: money
                }
                wx.cloud.callFunction({
                    name: "pay",
                    data: data,
                    success(res) {
                        console.log("提交成功", res.result)
                        that.pay(res.result)
                    },
                    fail(res) {
                        console.log("提交失败", res)
                    }
                })
            },
            fail(res) {
                console.log(res.errMsg)
            }
        })
    },
    to_login() {
      if (wx.getStorageSync("USER_INFO")) {
        return true
      } else {
        wx.navigateTo({
          url: '/pages/user/user'
        })
        return false
      }
    },
    // 发表
    fabiao() {
        if (wx.getStorageSync('USER_INFO').nickname=="游客"){
            wx.showModal({
                title: '温馨提示',
                content: "您目前的身份是游客,请授权后发表动态",
                confirmText: '去授权',
                success(res) {
                    if (res.confirm) {
                    console.log('用户点击确定')
                    wx.switchTab({
                        url: '/pages/my/my'
                    })
                    } else if (res.cancel) {
                    console.log('用户点击取消')
                    }
                }
            })
            return;
        }
        let type = this.data.videoUrl ? 'video' : 'img'
        console.log('yun_file_id_arr3', yun_file_id_arr)
        if (type == 'img') {
            if (this.data.files.length == 0) {
                this.isTs('请上传图片')
                return
            }
        }
        var phoneNumble = this.data.phoneNumble
        if (!phoneNumble) {
            this.isTs('请输入联系方式')
            return
        }

        var productName = this.data.productName
        if (!productName) {
            this.isTs('请输入产品名称')
            return
        }

        let txt = this.data.ttval;
        if (!txt) {
            this.isTs('请输入说明')
            return
        }
        var loc_name = this.data.loc_name
        // if (!loc_name) {
        //     this.isTs('请选择所在位置')
        //     return
        // }

        var fenlei = this.data.fenlei
        if (!fenlei) {
            this.isTs('请选择分类')
            return
        }

        
        // 虚拟用户发表
        if (this.data.virtual_openId) {
            this.add_dynamic();
            return
        }

        var time = new Date().getTime();
        // up_dynamic_time 上次上传的时间,一个小时只能传两次
        var up_dynamic_time = wx.getStorageSync('up_dynamic_time')
        if (!up_dynamic_time) {
            up_dynamic_time = time
            wx.setStorageSync('up_dynamic_time', up_dynamic_time)
        }

        // up_dynamic_num 剩余可上传的次数,一个小时只能传两次,默认值是2,0的时候就不能上传了
        var up_dynamic_num = wx.getStorageSync('up_dynamic_num')
        if (!up_dynamic_num && up_dynamic_num !== 0) {
            up_dynamic_num = 2
            wx.setStorageSync('up_dynamic_num', up_dynamic_num)
        }

        var yun_num = getApp().cloudUserInfo.up_dynamic_num || 0;

        // 是否超过了一小时,就初始化缓存
        var is_chaoguo_time = (time - up_dynamic_time > 60 * 60 * 1000);
        if (is_chaoguo_time) {
            up_dynamic_time = time
            wx.setStorageSync('up_dynamic_time', up_dynamic_time)
            up_dynamic_num = 2
            wx.setStorageSync('up_dynamic_num', up_dynamic_num)
        }

        // 是商户就直接提交
        if (this.data.mch_id) {
            if (is_chaoguo_time) {
                this.add_dynamic();
            } else {
                if (up_dynamic_num === 0) {
                    wx.showToast({
                        title: '1小时内只能发表2条动态哦',
                        icon: 'none'
                    })
                } else {
                    this.add_dynamic();
                }
            }
        } else {

            if (is_chaoguo_time) {
                if (yun_num > 0) {
                    this.add_dynamic();
                } else {
                    // 普通用户去支付购买
                    this.go_tanchuang()
                }
            } else {
                // 没超时
                if (yun_num > 0) {
                    if (up_dynamic_num === 0) {
                        wx.showToast({
                            title: '1小时内只能发表2条动态哦',
                            icon: 'none'
                        })
                    } else {
                        this.add_dynamic();
                    }
                } else {
                    // 普通用户去支付购买
                    this.go_tanchuang()
                }
            }
        }


    },
    // 发表
    add_dynamic() {
        if (add_dynamic_ing) return;
        add_dynamic_ing = true;
        setTimeout(() => {
            add_dynamic_ing = false
        }, 4000);
        console.log('111111111111111111111')
        if (this.data.files.length > 0 || this.data.videoUrl) {
            console.log('222222222222222222')
            if (this.data.videoUrl) {
                this.upData('video')
                return;
            }
            new Promise(promise_ress => {
                if (yun_file_id_arr.length > 0) {
                    promise_ress(true)
                } else {
                    this.up_img(0, this.data.files.length, promise_ress);
                }
            }).then(ress => {
                this.upData('img')
            })
        } else {
            this.isTs('请选择文件')
        }
    },
    chooseImage: function (e) {
        var that = this;
        wx.chooseImage({
            count:4,
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
            success: function (res) {
                // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
                that.setData({
                    files: that.data.files.concat(res.tempFilePaths),
                    videoUrl: ''
                });
            }
        })
    },
    previewImage: function (e) {
        wx.previewImage({
            current: e.currentTarget.id, // 当前显示图片的http链接
            urls: this.data.files // 需要预览的图片http链接列表
        })
    }
});

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter分布式性能测试

在做后端服务器性能测试中&#xff0c;我们会经常听到分布式。哪你&#xff0c;是否了解分布式呢&#xff1f;今天&#xff0c;我们就来给大家讲讲&#xff0c;在企业实战中&#xff0c;如何使用分布式进行性能测试&#xff0c;实战过程中&#xff0c;又有哪些地方要特别注意&a…

引领安全创新 | 安全狗方案入选工信部《2023年工业和信息化领域数据安全典型案例名单》

近日&#xff0c;工业和信息化部网络安全管理局公布了2023年工业和信息化领域数据安全典型案例名单。 安全狗与厦门卫星定位应用股份有限公司、中移 (上海) 信息通信科技有限公司联合申报的智慧交通云数据安全与隐私保障典型案例也成功入选。 厦门服云信息科技有限公司&#xf…

感知器学习算法和Adaline规则

一.感知器的发展过程 感知器的发展可以追溯到20世纪50年代。它是一种简单的人工神经网络模型&#xff0c;最早由美国心理学家和计算机科学家弗兰克罗森布拉特&#xff08;Frank Rosenblatt&#xff09;于1957年提出。感知器的设计灵感来源于生物神经元的工作原理&#xff0c;旨…

Oracle全系列版本官网下载保姆及教程

Oracle全系列版本官网下载方法 下面以下载Oracle12cR2为例说明下载的整个过程。 基本步骤如下&#xff1a; 先注册一个Oracle账号并登录&#xff1b;进入到客户下载页面搜索要下载的数据库版本&#xff1b;得到Oracle下载器(Oracle_SSN_DML_xxxxx.exe)&#xff0c;注意&#xf…

Docker之Dockerfile构建镜像

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《Docker之Dockerfile构建镜像》。&#x1f3af;&…

Shiro框架:ShiroFilterFactoryBean过滤器源码解析

目录 1.Shiro自定义拦截器SpringShiroFilter 1.1 ShiroFilterFactoryBean解析 1.1.1 实现FactoryBean接口 1.1.2 实现BeanPostProcessor接口 1.2 SpringShiroFilter解析 1.2.1 OncePerRequestFilter过滤逻辑实现 1.2.2 AbstractShiroFilter过滤逻辑实现 1.2.2.1 创建Sub…

网页测试遇到自动弹窗,Alert类无法处理?或许你该来学学这招了!

相信大家在使用selenium做网页自动化时&#xff0c;会遇到如下这样的一个场景&#xff1a; 在你使用get访问某一个网址时&#xff0c;会在页面中弹出如上图所示的弹出框。 首先想到是利用Alert类来处理它。 然而&#xff0c;很不幸&#xff0c;Alert类处理的结果就是没有结果…

矩阵快速幂算法总结

题目链接 活动 - AcWing 本课程系统讲解常用算法与数据结构的应用方式与技巧。https://www.acwing.com/problem/content/1305/ 题解 代码 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm>using namespace std;type…

如何创作出优秀的电子邮件营销(EDM)?

EDM出现的时间很早&#xff0c;是非常传统的一种推广方式。即便是其他推广方式的蓬勃兴起&#xff0c;EDM依旧深受很多行业的喜爱。主要源于它极高的性价比&#xff0c;据可靠数据&#xff0c;EDM的投资回报比达1&#xff1a;48。 那一封优秀的EDM应该是怎么样的呢&#xff1f;…

一分钟带你了解--电商控价

电商行业发展至今带来了许多机遇&#xff0c;但同时也伴随着一些挑战。品牌电商在运营过程中&#xff0c;面临着诸如乱价、低价、窜货和假货等问题&#xff0c;这些问题不仅损害了品牌的形象和价值&#xff0c;也破坏了市场秩序&#xff0c;侵害了消费者的权益。 电商控价是解…

恒温器探针样品座

恒温器探针样品座是一种用采用可移动探针完成恒温器电缆和被测样品的电学连接&#xff0c;避免了每次样品电引线的焊接&#xff0c;探针可移动&#xff0c;5mm--20mm大小的样品均可适用&#xff0c;探针可以安装6个&#xff0c;标准配置探针数量为4个。 恒温器探针样品座由T型…

深入理解 go reflect - 反射基本原理

反射概述 反射是这样一种机制&#xff0c;它是可以让我们在程序运行时&#xff08;runtime&#xff09;访问、检测和修改对象本身状态或行为的一种能力。 比如&#xff0c;从一个变量推断出其类型信息、以及存储的数据的一些信息&#xff0c;又或者获取一个对象有什么方法可以…

map和set使用讲解

map的使用 map的介绍 map是C STL&#xff08;标准模板库&#xff09;中的一个关联容器。 它提供了一种有序的键值对存储方式&#xff0c;其中每个元素都由一个键和一个值组成。 map中的元素根据键的值自动进行排序&#xff0c;并且通过键快速访问对应的值。 map使用红黑树数…

SD-WAN解决跨国公司海外工厂网络安全问题

在跨境业务蓬勃发展的今天&#xff0c;越来越多的大型企业出于人力成本的考虑&#xff0c;在人力成本较低的发展中国家建立工厂。然而&#xff0c;传统基于路由器的网络架构已无法为这些跨国企业提供可靠的安全网络。那么&#xff0c;如何解决跨国企业海外工厂的网络难题呢&…

Structured_Streaming和Kafka整合

结构化编程模型 输出终端/位置 默认情况下&#xff0c;Spark的结构化流支持多种输出方案&#xff1a; 1- console sink: 将结果数据输出到控制台。主要是用在测试中&#xff0c;并且支持3种输出模式 2- File sink: 输出到文件。将结果数据输出到某个目录下&#xff0c;形成文…

数据绑定,defineProperty,v-on,事件处理

目录​​​​​​​ v-bind单向数据绑定 defineProperty 是v-on的简写 事件处理 v-bind单向数据绑定 从name绑定到v-bind到value单向数据绑定&#xff1a; <input type"text" :value"name"> <input type "text" v-model"na…

【Spring】SpringBoot 统一功能处理

文章目录 前言1. 拦截器1.1 什么是拦截器1.2 拦截器的使用1.2.1 自定义拦截器1.2.2 注册配置拦截器 1.3 拦截器详解1.3.1 拦截路径1.3.2 拦截器执行流程1.3.3 适配器模式 2. 统一数据返回格式3. 统一异常处理 前言 在日常使用 Spring 框架进行开发的时候&#xff0c;对于一些板…

什么是Java泛型?泛型在Java中应用场景

目录 一、什么是Java泛型 二、泛型类 三、泛型接口 四、泛型方法 一、什么是Java泛型 Java泛型是一种在编译时进行类型检查和类型安全的机制。它允许编写能够操作多种类型的代码&#xff0c;而不需要进行类型转换或使用Object类型。通过在定义类、接口或方法时使用泛型参数…

Arduino快速上手esp8266方案开发

认识ESP8266 ESP8266 是 Espressif Systems 生产的 Wi-Fi 片上系统 (SoC)。它非常适合物联网和家庭自动化项目&#xff0c;目前有非常高的市场普及率&#xff0c;还有更加高端的同时支持wifi和蓝牙的双核心芯片ESP32&#xff0c;可以在乐鑫官网查看完整的芯片列表。 ESP8266芯…

克服大模型(LLM)部署障碍,全面理解LLM当前状态

近日&#xff0c;CMU Catalyst 团队推出了一篇关于高效 LLM 推理的综述&#xff0c;覆盖了 300 余篇相关论文&#xff0c;从 MLSys 的研究视角介绍了算法创新和系统优化两个方面的相关进展。 在人工智能&#xff08;AI&#xff09;的快速发展背景下&#xff0c;大语言模型&…