新生报到移动端V1.0
This commit is contained in:
181
pages/Photo/Photo.vue
Normal file
181
pages/Photo/Photo.vue
Normal file
@@ -0,0 +1,181 @@
|
||||
<!-- 照片采集 -->
|
||||
<template>
|
||||
<view class="Photo">
|
||||
|
||||
<view class="Picture_box" @tap="choosePic">
|
||||
<text v-if="!photo" class="Picture_text">图片上传</text>
|
||||
<image v-if="photo" :src="photo" mode=""></image>
|
||||
</view>
|
||||
|
||||
<button class="Picture_button" @tap="submitOwnPhoto">上传图片</button>
|
||||
|
||||
<!-- 报错显示 -->
|
||||
<u-toast ref="uToast"></u-toast>
|
||||
<!-- 上传后加一段动画 -->
|
||||
<zero-loading v-if="loading"></zero-loading>
|
||||
<FloatBall />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
//接口:
|
||||
//本地存储接口
|
||||
//获取个人信息接口
|
||||
|
||||
//图片上传接口
|
||||
import {
|
||||
getOwnPhoto, //获取新生照片
|
||||
submitOwnPhoto //上传新生照片
|
||||
} from "@/api/photo.js";
|
||||
|
||||
import {
|
||||
isEmpty
|
||||
} from '../../api/helpFunc';
|
||||
//自定义组件
|
||||
import FloatBall from "@/pages/compoents/FloatBall.vue";
|
||||
//
|
||||
export default {
|
||||
components: {
|
||||
FloatBall
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
photo: null, //图片文件(base64编码)
|
||||
loading: false //上传动画
|
||||
}
|
||||
},
|
||||
async onLoad() {
|
||||
this.loading = true
|
||||
await this.getOwnPhoto();
|
||||
this.loading = false
|
||||
},
|
||||
methods: {
|
||||
//用户选择图片
|
||||
choosePic: async function() {
|
||||
//获取本地图片并且展示
|
||||
let that = this;
|
||||
uni.chooseImage({
|
||||
count: 1, //图片选择一张
|
||||
sizeType: ['compressed'],
|
||||
sourceType: ['album', 'camera'],
|
||||
success: (res) => {
|
||||
// 保存图片路径
|
||||
//this.photo=res.tempFilePaths[0];
|
||||
|
||||
let tempImgPath = res.tempFilePaths[0];
|
||||
|
||||
//修改图片编码
|
||||
//将图片路径转换为 Blob 对象
|
||||
fetch(tempImgPath)
|
||||
.then(response => response.blob())
|
||||
.then(blob => {
|
||||
// 修改图片编码
|
||||
let reader = new FileReader();
|
||||
reader.onload = function(event) {
|
||||
that.photo = event.target.result;
|
||||
//console.log(that.photo);
|
||||
};
|
||||
// 读取文件并将其转换为 Base64 编码
|
||||
reader.readAsDataURL(blob);
|
||||
// 读取文件并将其转换为 UTF-8 编码的文本格式
|
||||
//reader.readAsText(blob, 'UTF-8');
|
||||
})
|
||||
.catch(err => {
|
||||
this.$refs.uToast.show({
|
||||
type: 'error',
|
||||
message: '获取文件失败:' + err.message,
|
||||
duration: 1500
|
||||
});
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
this.$refs.uToast.show({
|
||||
type: 'error',
|
||||
message: '选择图片失败:' + err.message,
|
||||
duration: 1500
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
//新增图片到服务器
|
||||
async submitOwnPhoto() {
|
||||
let sdata = {
|
||||
//表单数据
|
||||
// 照片(base64编码):photo
|
||||
photo: this.photo,
|
||||
}
|
||||
//表单数据判定
|
||||
if (isEmpty(sdata.photo)) {
|
||||
this.$refs.uToast.show({
|
||||
type: 'error',
|
||||
message: '请选择图片',
|
||||
duration: 1500
|
||||
});
|
||||
return;
|
||||
}
|
||||
//动画显示
|
||||
this.loading = true;
|
||||
let res = await submitOwnPhoto(sdata);
|
||||
this.loading = false;
|
||||
if (res.code == 200) {
|
||||
this.$refs.uToast.show({
|
||||
type: "success",
|
||||
message: res.msg,
|
||||
duration: 1500,
|
||||
});
|
||||
} else {
|
||||
console.log(res.msg);
|
||||
this.$refs.uToast.show({
|
||||
type: "error",
|
||||
message: res.msg,
|
||||
duration: 1500,
|
||||
});
|
||||
}
|
||||
},
|
||||
//从服务器获得新生照片照片
|
||||
async getOwnPhoto() {
|
||||
let that = this;
|
||||
let res = await getOwnPhoto(); //连接服务器传入照片id
|
||||
if (res.code == 200) {
|
||||
if (!isEmpty(res.data)) {
|
||||
let data = {
|
||||
...res.data
|
||||
};
|
||||
that.photo = data.photo;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.Photo {
|
||||
flex: 1;
|
||||
|
||||
.Picture_box {
|
||||
height: 60vh;
|
||||
margin: 10%;
|
||||
border: 2px dashed gray;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.Picture_text {
|
||||
font-size: 45rpx;
|
||||
writing-mode: vertical-rl;
|
||||
text-orientation: upright;
|
||||
color: #c5c5c5;
|
||||
}
|
||||
|
||||
image {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.Picture_button {
|
||||
margin: 10%;
|
||||
}
|
||||
}
|
||||
</style>
|
Reference in New Issue
Block a user