@@ -49,6 +49,19 @@ export function getConsumeListApi(pageSize, pageNum) { | |||||
}) | }) | ||||
} | } | ||||
/** | |||||
* @description:获取邀请记录 | |||||
* @param (pageSize, pageNum) | |||||
* @return: | |||||
*/ | |||||
export function getInviteListApi(pageSize, pageNum) { | |||||
return request({ | |||||
url: `api/userFrom/list?fromProject=5&pageSize=${pageSize}&pageNum=${pageNum}`, | |||||
method: 'get', | |||||
}) | |||||
} | |||||
/** | /** | ||||
* @description:删除写真 | * @description:删除写真 | ||||
* @param id | * @param id | ||||
@@ -1,10 +0,0 @@ | |||||
<template> | |||||
<div class="myLoading">{{ title }}</div> | |||||
</template> | |||||
<script setup> | |||||
import { ref } from "vue"; | |||||
const title = ref("myLoading"); | |||||
</script> | |||||
<style lang="scss"></style> |
@@ -30,6 +30,12 @@ | |||||
"navigationBarTitleText": "上传成功" | "navigationBarTitleText": "上传成功" | ||||
} | } | ||||
}, | }, | ||||
{ | |||||
"path": "pages/uploadPhoto/camera ", | |||||
"style": { | |||||
"navigationBarTitleText": "拍照" | |||||
} | |||||
}, | |||||
{ | { | ||||
"path": "pages/closeStyle/closeStyle", | "path": "pages/closeStyle/closeStyle", | ||||
"style": { | "style": { | ||||
@@ -2,12 +2,12 @@ | |||||
<div class="page"> | <div class="page"> | ||||
<!-- 性别tab --> | <!-- 性别tab --> | ||||
<view class="sexTab"> | <view class="sexTab"> | ||||
<view @click="sex = 1" class="sex" :class="sex == 1 ? 'sexActive' : ''" | |||||
>男</view | |||||
> | |||||
<view @click="sex = 2" class="sex" :class="sex == 2 ? 'sexActive' : ''" | <view @click="sex = 2" class="sex" :class="sex == 2 ? 'sexActive' : ''" | ||||
>女</view | >女</view | ||||
> | > | ||||
<view @click="sex = 1" class="sex" :class="sex == 1 ? 'sexActive' : ''" | |||||
>男</view | |||||
> | |||||
</view> | </view> | ||||
<u-list | <u-list | ||||
class="styleListBox" | class="styleListBox" | ||||
@@ -56,7 +56,7 @@ import { getListApi } from "../../api/closeStyle"; | |||||
//#region 列表加载 | //#region 列表加载 | ||||
const pageNum = ref(1); | const pageNum = ref(1); | ||||
const pageSize = ref(20); | const pageSize = ref(20); | ||||
const sex = ref(1); //1男2女 | |||||
const sex = ref(2); //1男2女 | |||||
const styleList = ref([]); | const styleList = ref([]); | ||||
// 得到列表 | // 得到列表 | ||||
async function getList() { | async function getList() { | ||||
@@ -158,17 +158,14 @@ async function getMyCoin() { | |||||
const avatarList = ref([ | const avatarList = ref([ | ||||
{ | { | ||||
url: userInfoModulesPinia.myAvatar, | url: userInfoModulesPinia.myAvatar, | ||||
// url: "https://suimang.oss-accelerate.aliyuncs.com/builtin/digital_avatar/girl/%E9%A3%8E%E9%87%87%E5%87%BA%E4%BC%97.jpg", | |||||
isMyAvatar: true, | isMyAvatar: true, | ||||
}, | }, | ||||
{ | { | ||||
url: "", | url: "", | ||||
// url: "https://suimang.oss-accelerate.aliyuncs.com/builtin/digital_avatar/girl/%E9%AA%8F%E9%A9%AC%E4%BD%B3%E4%BA%BA.jpg", | |||||
isMyAvatar: false, | isMyAvatar: false, | ||||
}, | }, | ||||
{ | { | ||||
url: "", | url: "", | ||||
// url: "https://suimang.oss-accelerate.aliyuncs.com/builtin/digital_avatar/girl/%E7%B4%AB%E8%96%87%E7%90%B4%E9%9F%B5.png", | |||||
isMyAvatar: false, | isMyAvatar: false, | ||||
}, | }, | ||||
]); | ]); | ||||
@@ -328,6 +325,19 @@ async function createing(id) { | |||||
? JSON.stringify(myImgList.slice(0, 2)) | ? JSON.stringify(myImgList.slice(0, 2)) | ||||
: JSON.stringify(myImgList), | : JSON.stringify(myImgList), | ||||
}; | }; | ||||
if ( | |||||
myImgList[0].length == 0 || | |||||
myImgList[1].length == 0 || | |||||
(styleData.value.mouldType == 3 && myImgList[2].length == 0) | |||||
) { | |||||
uni.showToast({ | |||||
title: "头像未上传", | |||||
icon: "none", | |||||
mask: true, | |||||
}); | |||||
return; | |||||
} | |||||
const res2 = await createPhotoApi(data); | const res2 = await createPhotoApi(data); | ||||
console.log(res2); | console.log(res2); | ||||
uni.hideLoading(); | uni.hideLoading(); | ||||
@@ -218,6 +218,7 @@ import { | |||||
findGlodApi, | findGlodApi, | ||||
getPhotoListApi, | getPhotoListApi, | ||||
getConsumeListApi, | getConsumeListApi, | ||||
getInviteListApi, | |||||
deleteApi, | deleteApi, | ||||
} from "../../api/home.js"; | } from "../../api/home.js"; | ||||
import { userInfoModules } from "@/store/modules/userInfo"; | import { userInfoModules } from "@/store/modules/userInfo"; | ||||
@@ -304,13 +305,14 @@ function clickTabHandle(e) { | |||||
return; | return; | ||||
} | } | ||||
showListActive.value = e.id; | showListActive.value = e.id; | ||||
pageNum1.value = 1; | pageNum1.value = 1; | ||||
pageNum2.value = 1; | pageNum2.value = 1; | ||||
pageNum3.value = 1; | |||||
if (e.id == 1) { | if (e.id == 1) { | ||||
getPhotoList(pageSize1.value, pageNum1.value); | getPhotoList(pageSize1.value, pageNum1.value); | ||||
} else if (e.id == 2) { | } else if (e.id == 2) { | ||||
} else if (e.id == 3) { | } else if (e.id == 3) { | ||||
getInviteList(pageSize3.value, pageNum3.value); | |||||
} else if (e.id == 4) { | } else if (e.id == 4) { | ||||
getConsumeList(pageSize2.value, pageNum2.value); | getConsumeList(pageSize2.value, pageNum2.value); | ||||
} | } | ||||
@@ -402,6 +404,39 @@ function getSymbol(type) { | |||||
} | } | ||||
//#endregion 获取图片,金币, | //#endregion 获取图片,金币, | ||||
//#region 获取消费记录 | |||||
const pageSize3 = ref(20); | |||||
const pageNum3 = ref(1); | |||||
const InviteList = ref(20); | |||||
async function getInviteList(pageSize, pageNum) { | |||||
try { | |||||
const res = await getInviteListApi(pageSize, pageNum); | |||||
InviteList.value = res.data.list; | |||||
} catch (error) {} | |||||
} | |||||
/** | |||||
* @description:触底加载更多消费记录 | |||||
*/ | |||||
async function getMoreInviteList() { | |||||
try { | |||||
pageNum2.value += 1; | |||||
const res = await getInviteListApi(pageSize3.value, pageNum3.value); | |||||
if (res.data && res.data.list && res.data.list.length == 0) { | |||||
pageNum3.value -= 1; | |||||
} | |||||
InviteList.value.push(...res.data.list); | |||||
} catch (error) { | |||||
console.log(error, "error"); | |||||
uni.showToast({ | |||||
title: "获取数据失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
} | |||||
//#endregion | |||||
const myAvatar = ref( | const myAvatar = ref( | ||||
"https://suimang.oss-accelerate.aliyuncs.com/capi/2023-08-25/03b58cd2f52c49829435addbf1ec435a.jpg?x-oss-process=image/resize,w_10000/quality,q_60" | "https://suimang.oss-accelerate.aliyuncs.com/capi/2023-08-25/03b58cd2f52c49829435addbf1ec435a.jpg?x-oss-process=image/resize,w_10000/quality,q_60" | ||||
); | ); | ||||
@@ -479,6 +514,7 @@ onLoad(async () => { | |||||
findGlod(); | findGlod(); | ||||
getPhotoList(pageSize1.value, pageNum1.value); | getPhotoList(pageSize1.value, pageNum1.value); | ||||
getConsumeList(pageSize2.value, pageNum2.value); | getConsumeList(pageSize2.value, pageNum2.value); | ||||
getInviteList(pageSize3.value, pageNum3.value); | |||||
} | } | ||||
// setTimeout(() => { | // setTimeout(() => { | ||||
// findImage(); | // findImage(); | ||||
@@ -691,12 +727,13 @@ onShareAppMessage((res) => { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
.noData { | |||||
text-align: center; | |||||
.goCreate { | |||||
color: #ff4f00; | |||||
text-decoration: underline; | |||||
} | |||||
} | |||||
.noData { | |||||
margin-top: 20rpx; | |||||
text-align: center; | |||||
.goCreate { | |||||
color: #ff4f00; | |||||
text-decoration: underline; | |||||
} | } | ||||
} | } | ||||
// 视频列表 | // 视频列表 | ||||
@@ -59,7 +59,12 @@ | |||||
<script setup> | <script setup> | ||||
//#region 导入 | //#region 导入 | ||||
import { onLoad, onShareAppMessage, onShareTimeline } from "@dcloudio/uni-app"; | |||||
import { | |||||
onLoad, | |||||
onHide, | |||||
onShareAppMessage, | |||||
onShareTimeline, | |||||
} from "@dcloudio/uni-app"; | |||||
import { BASE_URL } from "../../utils/request"; | import { BASE_URL } from "../../utils/request"; | ||||
import { ref, reactive, watch } from "vue"; | import { ref, reactive, watch } from "vue"; | ||||
import { userInfoModules } from "@/store/modules/userInfo"; | import { userInfoModules } from "@/store/modules/userInfo"; | ||||
@@ -79,9 +84,14 @@ onLoad(async (options) => { | |||||
await getSwiperList(); | await getSwiperList(); | ||||
await getSupperPhotoState(swiperList.value[0].id); | await getSupperPhotoState(swiperList.value[0].id); | ||||
}); | }); | ||||
onHide(() => { | |||||
clearTimeout(timer); | |||||
timer.value = null; | |||||
}); | |||||
const swiperList = ref([]); //轮播图 | const swiperList = ref([]); //轮播图 | ||||
const previewImageList = ref([]); //预览图片列表 | const previewImageList = ref([]); //预览图片列表 | ||||
const timer = ref(null); | |||||
async function getSwiperList() { | async function getSwiperList() { | ||||
const res = await getPhotoListApi(workId.value); | const res = await getPhotoListApi(workId.value); | ||||
createState.value = res.data.status; | createState.value = res.data.status; | ||||
@@ -96,10 +106,14 @@ async function getSwiperList() { | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||
if (createState.value != 2) { | if (createState.value != 2) { | ||||
setTimeout(() => { | |||||
timer.value = setTimeout(() => { | |||||
getSwiperList(); | getSwiperList(); | ||||
}, 3000); | }, 3000); | ||||
} else { | |||||
clearTimeout(timer); | |||||
timer.value = null; | |||||
} | } | ||||
} | } | ||||
//#endregion --------------------- | //#endregion --------------------- | ||||
@@ -428,9 +442,10 @@ async function getUserQrcode() { | |||||
} | } | ||||
.logo { | .logo { | ||||
width: 520rpx; | |||||
width: 260rpx; | |||||
margin: 90rpx; | margin: 90rpx; | ||||
animation: rotateAnimation 3s 0s infinite; | animation: rotateAnimation 3s 0s infinite; | ||||
opacity: 0.7; | |||||
} | } | ||||
@keyframes rotateAnimation { | @keyframes rotateAnimation { | ||||
0% { | 0% { | ||||
@@ -0,0 +1,106 @@ | |||||
<template> | |||||
<camera output-dimension="540" :device-position="cameraPosition"> | |||||
<cover-image | |||||
src="../../assets/img/people.png" | |||||
style="width: 100%; height: 700rpx; margin-top: 100rpx" | |||||
></cover-image> | |||||
<!-- <button type="primary" @click="takePhoto">拍照</button> --> | |||||
<view class="btnBox"> | |||||
<view class="takePhoto" style="opacity: 0">闪光灯</view> | |||||
<view class="takePhoto" @click="takePhoto">拍照</view> | |||||
<view class="device" @click="device"> | |||||
<image src="../../assets/img/reset.png" mode="scaleToFill" /> | |||||
</view> | |||||
</view> | |||||
</camera> | |||||
</template> | |||||
<script setup> | |||||
import { ref } from "vue"; | |||||
import { userInfoModules } from "@/store/modules/userInfo"; | |||||
const userInfoModulesPinia = userInfoModules(); | |||||
const cameraPosition = ref("back"); // 后置摄像头 | |||||
// const cameraFlash = ref("auto"); // 自动闪光灯 | |||||
// 翻转摄像头 | |||||
function device() { | |||||
if (cameraPosition.value == "back") { | |||||
cameraPosition.value = "front"; | |||||
} else { | |||||
cameraPosition.value = "back"; | |||||
} | |||||
} | |||||
function takePhoto() { | |||||
const ctx = uni.createCameraContext(); | |||||
ctx.takePhoto({ | |||||
quality: "high", | |||||
success: (res) => { | |||||
// 拍照成功后的回调 | |||||
// onPhotoTaken(res.tempImagePath); | |||||
userInfoModulesPinia.photoPath = res.tempImagePath; | |||||
uni.setStorageSync("action", 2); | |||||
uni.switchTab({ | |||||
url: "/pages/uploadPhoto/uploadPhoto", | |||||
}); | |||||
}, | |||||
fail: (err) => { | |||||
console.error("拍照失败", err); | |||||
}, | |||||
}); | |||||
} | |||||
// const takePhoto = () => { | |||||
// // 调用拍照方法 | |||||
// uni.takePhoto({ | |||||
// success: (res) => { | |||||
// // 拍照成功后的回调 | |||||
// // onPhotoTaken(res.tempImagePath); | |||||
// userInfoModulesPinia.photoPath = res.tempImagePath; | |||||
// uni.setStorageSync("action", 2); | |||||
// uni.switchTab({ | |||||
// url: "/pages/uploadPhoto/uploadPhoto", | |||||
// }); | |||||
// }, | |||||
// fail: (err) => { | |||||
// console.error("拍照失败", err); | |||||
// }, | |||||
// }); | |||||
// }; | |||||
const onScanCode = (e) => { | |||||
console.log("Scanned Code: ", e.detail); | |||||
}; | |||||
</script> | |||||
<style lang="scss"> | |||||
camera { | |||||
width: 100vw; | |||||
height: 100vh; | |||||
.btnBox { | |||||
width: 100%; | |||||
position: absolute; | |||||
bottom: 50rpx; | |||||
display: flex; | |||||
// flex-direction: column; | |||||
align-items: center; | |||||
justify-content: space-evenly; | |||||
.takePhoto { | |||||
width: 120rpx; | |||||
height: 120rpx; | |||||
border-radius: 60rpx; | |||||
line-height: 120rpx; | |||||
text-align: center; | |||||
background-color: #fd4e00; | |||||
color: #fff; | |||||
font-size: 40rpx; | |||||
} | |||||
.device { | |||||
image { | |||||
margin-top: 0rpx; | |||||
width: 120rpx; | |||||
height: 120rpx; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
</style> |
@@ -47,10 +47,10 @@ | |||||
<view class="grayBtn" v-if="uploadState == 4" @click="chooseImage" | <view class="grayBtn" v-if="uploadState == 4" @click="chooseImage" | ||||
>重新上传</view | >重新上传</view | ||||
> | > | ||||
<view class="free"> | |||||
<!-- <view class="free" v-if="false"> | |||||
<image src="../../assets/icon/blackBG.png" mode="aspectFit" /> | <image src="../../assets/icon/blackBG.png" mode="aspectFit" /> | ||||
<text>新用户免费制作</text> | <text>新用户免费制作</text> | ||||
</view> | |||||
</view> --> | |||||
</view> | </view> | ||||
<!-- 底部盒子 --> | <!-- 底部盒子 --> | ||||
<view class="bottomBox"> | <view class="bottomBox"> | ||||
@@ -80,6 +80,14 @@ | |||||
</view> | </view> | ||||
</view> | </view> | ||||
</view> | </view> | ||||
<!-- 摄像头 --> | |||||
<!-- <camera> | |||||
<cover-image | |||||
src="../../assets/img/people.png" | |||||
style="width: 100%; height: 700rpx; margin-top: 100rpx" | |||||
></cover-image> | |||||
<button type="primary" @click="takePhoto">拍照</button> | |||||
</camera> --> | |||||
</view> | </view> | ||||
</template> | </template> | ||||
@@ -100,9 +108,8 @@ const userInfoModulesPinia = userInfoModules(); | |||||
const uploadState = ref(1); //上传状态 | const uploadState = ref(1); //上传状态 | ||||
const showImgUrl = ref(""); //回显路径 压缩 | const showImgUrl = ref(""); //回显路径 压缩 | ||||
const showImgUrl2 = ref(null); //回显路径 未压缩 | const showImgUrl2 = ref(null); //回显路径 未压缩 | ||||
const showImgData = ref(null); //上传数据 | |||||
// 点击上传图片 | |||||
// 点击上传图片或打开相机 | |||||
function chooseImage() { | function chooseImage() { | ||||
// 检查token | // 检查token | ||||
if (!userInfoModulesPinia.token) { | if (!userInfoModulesPinia.token) { | ||||
@@ -129,7 +136,7 @@ function chooseImage() { | |||||
uploadState.value = 2; | uploadState.value = 2; | ||||
// 图片压缩 | // 图片压缩 | ||||
console.log(res.tempFiles[0].size); | console.log(res.tempFiles[0].size); | ||||
showImgUrl2.value = res.tempFiles[0]; | |||||
// showImgUrl2.value = res.tempFiles[0]; | |||||
if (userInfoModulesPinia.platForm != 1) { | if (userInfoModulesPinia.platForm != 1) { | ||||
uni.compressImage({ | uni.compressImage({ | ||||
src: res.tempFilePaths[0], | src: res.tempFilePaths[0], | ||||
@@ -150,7 +157,6 @@ function chooseImage() { | |||||
); | ); | ||||
//compressedFile是一个blob对象 | //compressedFile是一个blob对象 | ||||
showImgUrl.value = URL.createObjectURL(compressedFile); | showImgUrl.value = URL.createObjectURL(compressedFile); | ||||
showImgData.value = compressedFile; | |||||
} | } | ||||
}, | }, | ||||
fail: (err) => { | fail: (err) => { | ||||
@@ -198,11 +204,11 @@ async function toCloseStyle() { | |||||
}); | }); | ||||
uploadState.value = 3; | uploadState.value = 3; | ||||
console.log(showImgUrl.value); | console.log(showImgUrl.value); | ||||
console.log(showImgUrl2.value.path); | |||||
console.log(showImgUrl2.value); | |||||
// 百度敏感信息检测 | // 百度敏感信息检测 | ||||
uni.uploadFile({ | uni.uploadFile({ | ||||
url: BASE_URL + "api/baidu/checkPhoto", //上传图片api | url: BASE_URL + "api/baidu/checkPhoto", //上传图片api | ||||
filePath: showImgUrl2.value.path, | |||||
filePath: showImgUrl.value, | |||||
name: "file", | name: "file", | ||||
formData: { | formData: { | ||||
user: "test", | user: "test", | ||||
@@ -220,7 +226,7 @@ async function toCloseStyle() { | |||||
// 人脸识别接口 | // 人脸识别接口 | ||||
uni.uploadFile({ | uni.uploadFile({ | ||||
url: BASE_URL + "api/userDigital/checkPhoto", //上传图片api | url: BASE_URL + "api/userDigital/checkPhoto", //上传图片api | ||||
filePath: showImgUrl2.value.path, | |||||
filePath: showImgUrl.value, | |||||
name: "file", | name: "file", | ||||
formData: { | formData: { | ||||
user: "test", | user: "test", | ||||
@@ -238,7 +244,7 @@ async function toCloseStyle() { | |||||
// 上传接口 | // 上传接口 | ||||
uni.uploadFile({ | uni.uploadFile({ | ||||
url: BASE_URL + "api/upload/awsImgUpload", //上传图片api | url: BASE_URL + "api/upload/awsImgUpload", //上传图片api | ||||
filePath: showImgUrl2.value.path, | |||||
filePath: showImgUrl.value, | |||||
name: "file", | name: "file", | ||||
formData: { | formData: { | ||||
user: "test", | user: "test", | ||||
@@ -350,7 +356,9 @@ onLoad((options) => { | |||||
userInfoModulesPinia.myAvatar = | userInfoModulesPinia.myAvatar = | ||||
res3.data && res3.data.image ? res3.data.image : ""; | res3.data && res3.data.image ? res3.data.image : ""; | ||||
const res4 = await findGlodApi(); | const res4 = await findGlodApi(); | ||||
uni.setStorageSync("userId", res4.data.id); | |||||
if (res4.data) { | |||||
uni.setStorageSync("userId", res4.data.id); | |||||
} | |||||
if (!res4.data) { | if (!res4.data) { | ||||
userInfoModulesPinia.myGlod = 0; | userInfoModulesPinia.myGlod = 0; | ||||
} else { | } else { | ||||
@@ -479,6 +487,7 @@ onLoad((options) => { | |||||
}, | }, | ||||
}); | }); | ||||
} | } | ||||
// 如果是从相机页返回 | |||||
}); | }); | ||||
onShow(() => { | onShow(() => { | ||||
// 若来自我的页面的更换头像按钮,直接触发以下操作 | // 若来自我的页面的更换头像按钮,直接触发以下操作 | ||||
@@ -487,6 +496,12 @@ onShow(() => { | |||||
chooseImage(); | chooseImage(); | ||||
uni.removeStorageSync("action"); | uni.removeStorageSync("action"); | ||||
} | } | ||||
// 若来相机页拍照,直接触发以下操作 | |||||
if (uni.getStorageSync("action") == 2) { | |||||
showImgUrl.value = userInfoModulesPinia.photoPath; | |||||
toCloseStyle(); | |||||
uni.removeStorageSync("action"); | |||||
} | |||||
}); | }); | ||||
//#endregion --------------------- | //#endregion --------------------- | ||||
@@ -499,6 +514,19 @@ function goOtherPage(url) { | |||||
} | } | ||||
//#endregion --------------------- | //#endregion --------------------- | ||||
//#region 相机 | |||||
const photoPath = ref(null); | |||||
function takePhoto() { | |||||
const ctx = uni.createCameraContext(); | |||||
ctx.takePhoto({ | |||||
quality: "high", | |||||
success: (res) => { | |||||
showImgUrl.value = res.tempImagePath; | |||||
}, | |||||
}); | |||||
} | |||||
//#endregion --------------------- | |||||
//#region | //#region | ||||
//#endregion --------------------- | //#endregion --------------------- | ||||
@@ -16,6 +16,7 @@ export const userInfoModules = defineStore("userInfoStore", () => { | |||||
const myGlod = ref(0) | const myGlod = ref(0) | ||||
const wxappid = "wx75cf14e3a0d45821" | const wxappid = "wx75cf14e3a0d45821" | ||||
const dyappid = "tt2eba5807b1883f9f01" | const dyappid = "tt2eba5807b1883f9f01" | ||||
const photoPath = ref(null) //自定义相机拍照得到照片路径 | |||||
/** | /** | ||||
* @description:依托平台:(web、mp-weixin、mp-toutiao) | * @description:依托平台:(web、mp-weixin、mp-toutiao) | ||||
* @example 平台名:"web-H5",枚举值:1 | * @example 平台名:"web-H5",枚举值:1 | ||||