Files
aishangjia-uniapp/sub_pages/user/base/photo/photo.vue
2023-08-04 13:14:48 +08:00

323 lines
8.4 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="page-wrap">
<view class="page-bg">
<u-navbar leftIconColor="#FFFFFF" :autoBack="true" bg-color="transparent" safeAreaInsetTop
placeholder></u-navbar>
<view class="notice">
请如实填写个人资料真实的资料会更受欢迎
</view>
<view class="title">
上传形象照
</view>
<view class="desc">
可上传工作照生活照能获得更多青睐喔~
</view>
<view class="nickname">
<button class="btn-avatar u-reset-button" @click="onChooseAvatar(0)">
<image class="btn-avatar-plus" v-if="!fileList1[0].url" src="@/static/icon/path.png" mode="widthFix"></image>
<image class="avatar-img" v-else :src="fileList1[0].url" mode="widthFix"></image>
</button>
<button class="btn-avatar u-reset-button" @click="onChooseAvatar(1)">
<image class="btn-avatar-plus" v-if="!fileList1[1].url" src="@/static/icon/path.png" mode="widthFix"></image>
<image class="avatar-img" v-else :src="fileList1[1].url" mode="widthFix"></image>
</button>
<button class="btn-avatar u-reset-button" @click="onChooseAvatar(2)">
<image class="btn-avatar-plus" v-if="!fileList1[2].url" src="@/static/icon/path.png" mode="widthFix"></image>
<image class="avatar-img" v-else :src="fileList1[2].url" mode="widthFix"></image>
</button>
</view>
<view class="tips">
<view class="tips-item">
<image src="https://file-jimei.oss-cn-shenzhen.aliyuncs.com/static/user-base/5.png" mode="aspectFill" class="tips-item-image"></image>
<view class="tips-item-text">999+喜欢</view>
<image class="tips-ft" src="@/static/user-base/y.png" mode="widthFix"></image>
</view>
<view class="tips-item">
<image src="https://file-jimei.oss-cn-shenzhen.aliyuncs.com/static/user-base/4.png" mode="aspectFill" class="tips-item-image"></image>
<view class="tips-item-text">暴露照</view>
<image class="tips-ft" src="@/static/user-base/n.png" mode="widthFix"></image>
</view>
<view class="tips-item">
<image src="https://file-jimei.oss-cn-shenzhen.aliyuncs.com/static/user-base/3.png" mode="aspectFill" class="tips-item-image"></image>
<view class="tips-item-text">模糊照</view>
<image class="tips-ft" src="@/static/user-base/n.png" mode="widthFix"></image>
</view>
<view class="tips-item">
<image src="https://file-jimei.oss-cn-shenzhen.aliyuncs.com/static/user-base/2.png" mode="aspectFill" class="tips-item-image"></image>
<view class="tips-item-text">非人物照</view>
<image class="tips-ft" src="@/static/user-base/n.png" mode="widthFix"></image>
</view>
<view class="tips-item">
<image src="https://file-jimei.oss-cn-shenzhen.aliyuncs.com/static/user-base/1.png" mode="aspectFill" class="tips-item-image"></image>
<view class="tips-item-text">网络图片</view>
<image class="tips-ft" src="@/static/user-base/n.png" mode="widthFix"></image>
</view>
</view>
<view class="btn-wrapper-pla">
</view>
<view class="btn-wrapper">
<u-button v-if="fileList1 == null || fileList1.length == 0" text="继续" color="#837C8B" shape="circle" @click="handleSubmit"></u-button>
<u-button v-else text="继续" color="linear-gradient(#95258d, #440a5f);" shape="circle" @click="handleSubmit"></u-button>
<view @click="handleSubmit" class="btn-skip">
跳过
</view>
</view>
<u-safe-bottom></u-safe-bottom>
</view>
</view>
</template>
<script>
import * as UserProfileApi from '@/api/love-user-profile.js'
import * as UploadApi from '@/api/upload'
import {
dateFormat
} from '@/utils/util.js'
export default {
data() {
return {
avatarTemp: '',
fileList1: [{url: ''},{url: ''},{url: ''}],
avatar: '',
};
},
onLoad() {
},
methods: {
async cropperOk(e) {
const res = await this.uploadFilePromise(e.path)
this.avatarTemp = ''
this.avatar = res.url
},
async onChooseAvatar({
detail
}) {
uni.chooseImage({
count: 1,
success: (res) => {
this.avatarTemp = res.tempFilePaths[0]
}
})
},
onChooseAvatar(index) {
const app = this
uni.chooseImage({
count: 1,
success: (res) => {
app.uploadFilePromise(res.tempFilePaths[0]).then(result => {
console.log('index: ',index);
console.log('app.fileList1: ',app.fileList1);
app.fileList1[index].url = result.url
})
}
})
},
handleSubmit() {
const userBase = uni.getStorageSync('UserBase') || {}
userBase.images = this.fileList1.filter(item => item.url)
if(userBase.images.length == 0){
userBase.images = [{url: userBase.avatar}]
}
uni.setStorageSync("UserBase", userBase)
this.$push('/sub_pages/user/base/nickname/nickname')
},
// 删除图片
deletePic(event) {
this[`fileList${event.name}`].splice(event.index, 1)
},
// 新增图片
async afterRead(event) {
console.log("event: ", event);
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
let lists = [].concat(event.file)
let fileListLen = this[`fileList${event.name}`].length
lists.map((item) => {
this[`fileList${event.name}`].push({
...item,
status: 'uploading',
message: '上传中'
})
})
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFilePromise(lists[i].url)
let item = this[`fileList${event.name}`][fileListLen]
this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: result.url,
thumb: result.thumbUrl
}))
fileListLen++
}
},
uploadFilePromise(url) {
return new Promise((resolve, reject) => {
UploadApi.uploadFile({
filePath: url,
fileType: 'image',
name: 'file',
header: {
Authorization: uni.getStorageSync('AccessToken')
},
}).then(result => {
setTimeout(() => {
resolve(result.data)
}, 1000)
}).catch(err => {
console.log("err: ", err);
})
// UploadApi.uploadFile()
// let a = uni.uploadFile({
// url: fileUrl + '/file/image', // 仅为示例,非真实的接口地址
// filePath: url,
// name: 'file',
// header: {
// Authorization: uni.getStorageSync('AccessToken')
// },
// formData: {
// user: 'test'
// },
// success: (res) => {
// const result = JSON.parse(res.data)
// setTimeout(() => {
// resolve(result)
// }, 1000)
// }
// });
})
},
}
}
</script>
<style lang="scss">
@import "../base.scss";
.avatar{
margin: 100rpx 0 100rpx 0;
}
.btn-avatar{
display: flex;
justify-content: center;
}
.nickname {
width: 690rpx;
margin: 160rpx auto 120rpx;
display: flex;
justify-content: center;
&-input {
background-color: #FFFFFF;
color: #FFFFFF;
}
/deep/.u-upload__wrap {
justify-content: space-between;
flex-wrap: wrap;
&::after {
content: '';
width: 200rpx;
display: block;
}
}
/deep/.u-upload__button {
background-color: rgba(#6A6A6A, .6) !important;
border-radius: 10rpx !important;
border: 4rpx rgba(#BBBBBB, .5) solid;
}
}
.tips {
display: flex;
width: 640rpx;
margin: 10rpx auto;
justify-content: space-between;
&-item {
width: 104rpx;
font-size: 24rpx;
text-align: center;
position: relative;
&-image {
width: 104rpx;
height: 104rpx;
}
&-text {
white-space: nowrap;
}
}
.tips-ft{
width: 20rpx;
position: absolute;
right: 6rpx;
top: 82rpx;
border-radius: 50%;
}
}
.btn-avatar{
display: flex;
justify-content: center;
align-items: center;
width: 320rpx;
height: 320rpx;
background: rgba(15, 0, 32, 0.5);
border: 2rpx solid rgb(151, 99, 157);
border-radius: 10rpx;
overflow: hidden;
.btn-avatar-plus{
width: 72rpx;
height: 72rpx;
}
.avatar-img{
width: 320rpx;
height: 320rpx;
border-radius: 10rpx;
}
}
.btn-skip{
font-size: 32rpx;
text-align: center;
margin-top: 64rpx;
color: #FFFFFF;
}
.btn-avatar{
display: flex;
justify-content: center;
align-items: center;
width: 200rpx;
height: 200rpx;
background: rgba(15, 0, 32, 0.5);
border: 2rpx solid rgb(151, 99, 157);
border-radius: 10rpx;
overflow: hidden;
.btn-avatar-plus{
width: 72rpx;
height: 72rpx;
}
.avatar-img{
width: 320rpx;
height: 320rpx;
border-radius: 10rpx;
}
}
</style>