uniapp-app/pages/upload/upload.vue
2026-01-14 17:41:42 +08:00

119 lines
2.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="content">
<view class="img-grid">
<view
v-if="tempImageList.length>0"
v-for="(img, index) in tempImageList"
:key="index"
class="img-item"
@click="preview(index)"
>
<image :src="img" mode="aspectFill" class="img" />
<view class="del" @click.stop="remove(index)">×</view>
</view>
<view v-if="tempImageList.length < maxImages" class="img-item add" @click="beforeAddImages">
<view class="plus"></view>
</view>
</view>
</view>
</template>
<script setup>
import { ref } from 'vue'
import { pathToBase64} from "image-tools";
import { getCameraPermission } from "@/utils/permission.js";
import isAndroid from "@/utils/platform.js";
const uuid=ref('');
const answer_uuid=ref('');
const maxImages = 6;
const imgList = ref([]);
const isLock=ref(false);
const tempImageList = ref([]);
const beforeAddImages=()=>{
addImages();
};
const addImages=()=>{
console.log('执行选择图片')
uni.chooseImage({
count:6,
sizeType: ['original', 'compressed'],
sourceType: ['album','camera'],
success: (res)=>{
uni.showToast({
title: '选择图片成功',
icon: 'none'
})
//console.log(res.tempFilePaths)
// tempImageList.value = [...tempImageList.value, ...res.tempFilePaths];
// for (let i = 0; i < res.tempFilePaths.length; i++) {
// pathToBase64(res.tempFilePaths[i])
// .then((base64) => {
// console.log('转base64成功')
// imgList.value.push(base64.split(',')[1]);
// })
// .catch((error) => {
// console.log('转base64失败')
// console.error(error);
// });
// }
// console.log(tempImageList.value)
// console.log(imgList.value)
},
fail: (err)=>{
console.log(err)
uni.showToast({
title: '选择图片失败:'+err.errMsg,
icon: 'none'
})
//console.log('选择图片失败:'+err.errMsg)
}
})
}
function preview(index){
uni.previewImage({
urls:tempImageList.value,
current: index
})
}
</script>
<style>
.content{
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.img-grid{
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16rpx;
}
.img-item{
position: relative;
width:150rpx;
height: 150rpx;
border-radius: 12rpx;
overflow: hidden;
background: #f0f0f0;
}
.img{ width: 100%; height: 100%; }
.add{ display:flex; align-items:center; justify-content:center;}
.plus{ font-size: 80rpx; color:#c0c0c0; line-height: 1; }
.del{
position: absolute;
top: 8rpx;
right: 8rpx;
width: 44rpx;
height: 44rpx;
border-radius: 22rpx;
background: rgba(0,0,0,.5);
color: #fff;
text-align: center;
line-height: 44rpx;
font-size: 28rpx;
}
</style>