shuinishop/components/linzq-imgUpload/linzq-imgUpload.vue

184 lines
4.1 KiB
Vue

<template>
<view>
<view class="fanku_con">
<view class="img_z">
<view class="imgadf center" @click="ongetimg()">
<image style="width: 58rpx;height: 58rpx;" src="./tupianadd.png" mode=""></image>
<text style="margin-top: 5rpx;">上传图片</text>
</view>
<view style="position: relative;" v-for="(item,index) in img_list" :key="index">
<image @click="preview(index,img_list)" style="width: 120rpx;height: 120rpx;margin-left: 20rpx;margin-bottom: 20rpx;background-color:rgba(0,0,0,0.1);border-radius: 10rpx;"
:src="item"></image>
<image class="shancs" src="./shanchus2.png" mode="" @click="selec(index)"></image>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
img_list: []
}
},
props: {
// 最多上数量 1-9
count: {
type: Number,
default: false
},
//图片上传地址
url: {
type: String,
default: ''
},
//文件对应的 key
name: {
type: String,
default: ''
},
//请求头
header: {
type: Object,
default: {}
}
},
computed: {},
methods: {
ongetimg() { //上传图片方法
var that = this
if (!that.url) {
return uni.showToast({
title: '请填写上传地址',
icon: 'none',
position: 'bottom'
});
}
uni.chooseImage({ //选中本地图片
count: that.count,
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: res => {
uni.showLoading({ //加载框
title: '加载中...'
})
const tempFilePaths = res.tempFilePaths;
res.tempFilePaths.forEach((item, index) => { //本地选中的图片组
console.log(that.url)
uni.uploadFile({ //上传图片
url: that.url, //上传接口地址
filePath: item, //一张图
name: that.name,
header: that.header,
success: res => {
if (that.img_list.length >= that.count) //限制
return uni.showToast({
title: '最多上传' + that.count + '张图片',
icon: 'none',
position: 'bottom'
});
that.img_list.push(JSON.parse(res.data).data.url); //plus数组
that.$emit('obtain_img', that.img_list)
}
});
uni.hideLoading() //关闭加载框
});
}
});
},
//删除
selec(index) {
this.img_list.splice(index, 1)
this.$emit('obtain_img', this.img_list)
},
//预览
preview(index, urls) {
console.log(index)
console.log(urls)
uni.previewImage({
urls: urls,
current: index,
longPressActions: {
itemList: ['发送给朋友', '保存图片', '收藏'],
success: function(data) {
console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
},
fail: function(err) {
console.log(err.errMsg);
}
}
});
}
}
}
</script>
<style>
page {
background-color: #181E38;
padding-top: 66rpx;
box-sizing: border-box;
}
.fanku_con {
width: 690rpx;
background: rgba(0, 0, 0, 0.1);
border-radius: 10rpx;
margin-left: 30rpx;
padding-top: 20rpx;
padding-bottom: 70rpx;
box-sizing: border-box;
}
.imgadf {
width: 120rpx;
height: 120rpx;
background-color: rgba(255, 255, 255, 0.5);
/* margin-left: 29rpx; */
margin-left: 20rpx;
border-radius: 10rpx;
margin-bottom: 20rpx;
font-size: 20rpx;
color: #666666;
flex-direction: column;
}
.img_z {
display: flex;
flex-wrap: wrap;
margin-top: 90rpx;
padding-right: 10rpx;
box-sizing: border-box;
}
.shancs {
width: 35rpx;
height: 35rpx;
position: absolute;
top: -10rpx;
right: -10rpx;
background-color: #FFFFFF;
border-radius: 100%;
}
.dianhua_on {
width: 364rpx;
height: 74rpx;
background: linear-gradient(to right, #F55C63, #F78361);
border-radius: 38rpx;
font-size: 28rpx;
color: #FFFFFF;
margin-top: 130rpx;
margin-left: 192rpx;
}
.center {
display: flex;
justify-content: center;
align-items: center;
}
</style>