184 lines
4.1 KiB
Python
184 lines
4.1 KiB
Python
<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>
|