| @@ -1,5 +1,10 @@ | |||||
| # Suimang-wxapp | # Suimang-wxapp | ||||
| setStorageSync 键名 | |||||
| userId --用户id,用于邀请分享功能 | |||||
| loginAwardCoin --注册奖励金币 | |||||
| inviteAwardCoin --邀请奖励金币 | |||||
| plat --根据平台不同来返回的值,用于发送请求 1为微信,2为抖音 | |||||
| wx-"appid": "wx75cf14e3a0d45821", | wx-"appid": "wx75cf14e3a0d45821", | ||||
| @@ -19,8 +19,10 @@ onLaunch(() => { | |||||
| if (res.uniPlatform == "web") { | if (res.uniPlatform == "web") { | ||||
| uniPlatform = 1; | uniPlatform = 1; | ||||
| } else if (res.uniPlatform == "mp-weixin") { | } else if (res.uniPlatform == "mp-weixin") { | ||||
| uni.setStorageSync("plat", 1); | |||||
| uniPlatform = 2; | uniPlatform = 2; | ||||
| } else if (res.uniPlatform == "mp-toutiao") { | } else if (res.uniPlatform == "mp-toutiao") { | ||||
| uni.setStorageSync("plat", 2); | |||||
| uniPlatform = 3; | uniPlatform = 3; | ||||
| } | } | ||||
| if (res.osName == "windows") { | if (res.osName == "windows") { | ||||
| @@ -42,7 +44,7 @@ onLaunch(() => { | |||||
| }, | }, | ||||
| }); | }); | ||||
| uni.setStorageSync("userId", "114514"); | |||||
| // uni.setStorageSync("userId", "114514"); | |||||
| const updateManager = uni.getUpdateManager(); | const updateManager = uni.getUpdateManager(); | ||||
| @@ -52,3 +52,15 @@ export function getUserQrcodeApi(data) { | |||||
| data | data | ||||
| }) | }) | ||||
| } | } | ||||
| /** | |||||
| * @description:获取订阅消息模版id | |||||
| * @param | |||||
| * @return: data | |||||
| */ | |||||
| export function getTemplateMsgApi() { | |||||
| return request({ | |||||
| url: `api/templateMsg/list?projectType=5&plat=${uni.getStorageSync("plat")}&type=1`, | |||||
| method: 'get', | |||||
| }) | |||||
| } | |||||
| @@ -27,4 +27,29 @@ export function addImageApi(data) { | |||||
| method: 'post', | method: 'post', | ||||
| data | data | ||||
| }); | }); | ||||
| } | |||||
| /** | |||||
| * @description:获取登陆,注册送多少金币的接口 | |||||
| * @param "projectType":5,//智像固定5 "type":1-注册,2-邀请 | |||||
| * @return: data | |||||
| */ | |||||
| export function getProjectConfigApi(data) { | |||||
| return request({ | |||||
| url: `api/glodConfig/getProjectConfig`, | |||||
| method: 'post', | |||||
| data | |||||
| }) | |||||
| } | |||||
| /** | |||||
| * @description:获取照片生成次数,判断是不是首次生成 | |||||
| * @param "projectType":5,//智像固定5 "type":1-注册,2-邀请 | |||||
| * @return: data | |||||
| */ | |||||
| export function getCountApi() { | |||||
| return request({ | |||||
| url: `api/digitalAvatarPhoto/getCount`, | |||||
| method: 'get', | |||||
| }) | |||||
| } | } | ||||
| @@ -0,0 +1,225 @@ | |||||
| <template> | |||||
| <div class="page"> | |||||
| <!-- 性别tab --> | |||||
| <view class="sexTab"> | |||||
| <view @click="sex = 2" class="sex" :class="sex == 2 ? 'sexActive' : ''" | |||||
| >女</view | |||||
| > | |||||
| <view @click="sex = 1" class="sex" :class="sex == 1 ? 'sexActive' : ''" | |||||
| >男</view | |||||
| > | |||||
| </view> | |||||
| <u-list | |||||
| class="styleListBox" | |||||
| @scrolltolower="scrolltolower" | |||||
| lowerThreshold="100" | |||||
| > | |||||
| <u-list-item class="glodYBox"> | |||||
| <u-list-item | |||||
| v-for="item in styleList" | |||||
| :key="item.id" | |||||
| class="styleListBoxItme" | |||||
| > | |||||
| <view class="styleInfo" @click="createPhoto(item)"> | |||||
| <image :src="item.coverImg" mode="aspectFit" /> | |||||
| <text class="name">{{ item.title }}</text> | |||||
| <text class="single">{{ peopleNum(item.mouldType) }}</text> | |||||
| </view> | |||||
| </u-list-item> | |||||
| </u-list-item> | |||||
| </u-list> | |||||
| </div> | |||||
| </template> | |||||
| <script setup> | |||||
| //#region 导入 | |||||
| import { onPullDownRefresh } from "@dcloudio/uni-app"; | |||||
| import { ref, reactive, watch } from "vue"; | |||||
| import { getListApi } from "../../api/closeStyle"; | |||||
| //#endregion | |||||
| //#region 页面下拉刷新 | |||||
| // onPullDownRefresh(async () => { | |||||
| // uni.showLoading({ | |||||
| // title: "加载中...", | |||||
| // mask: true, | |||||
| // }); | |||||
| // pageNum.value = 1; | |||||
| // pageSize.value = 8; | |||||
| // styleList.value = []; | |||||
| // await getList(); | |||||
| // uni.hideLoading(); | |||||
| // uni.stopPullDownRefresh(); | |||||
| // }); | |||||
| //#endregion | |||||
| //#region 列表加载 | |||||
| const pageNum = ref(1); | |||||
| const pageSize = ref(20); | |||||
| const sex = ref(2); //1男2女 | |||||
| const styleList = ref([]); | |||||
| // 得到列表 | |||||
| async function getList() { | |||||
| try { | |||||
| uni.showLoading({ | |||||
| title: "加载中...", | |||||
| mask: true, | |||||
| }); | |||||
| const res = await getListApi(pageNum.value, pageSize.value, sex.value); | |||||
| styleList.value = res.data.list; | |||||
| uni.hideLoading(); | |||||
| } catch (error) { | |||||
| uni.hideLoading(); | |||||
| uni.showToast({ | |||||
| title: "获取列表失败,请重试", | |||||
| icon: "none", | |||||
| }); | |||||
| } | |||||
| } | |||||
| // 监听性别tab变化 | |||||
| watch( | |||||
| () => sex.value, | |||||
| (sex) => { | |||||
| pageNum.value = 1; | |||||
| pageSize.value = 20; | |||||
| getList(); | |||||
| } | |||||
| ); | |||||
| getList(); | |||||
| // 触底加载更多 | |||||
| const scrolltolower = async () => { | |||||
| try { | |||||
| uni.showLoading({ | |||||
| title: "加载中...", | |||||
| mask: true, | |||||
| }); | |||||
| pageNum.value += 1; | |||||
| const res = await getListApi(pageNum.value, pageSize.value, sex.value); | |||||
| styleList.value.push(...res.data.list); | |||||
| setTimeout(function () { | |||||
| uni.hideLoading(); | |||||
| }, 500); | |||||
| if (res.data.list.length == 0) { | |||||
| pageNum.value -= 1; | |||||
| uni.showToast({ | |||||
| title: "已加载全部内容", | |||||
| icon: "none", | |||||
| }); | |||||
| } | |||||
| } catch (error) { | |||||
| setTimeout(function () { | |||||
| uni.hideLoading(); | |||||
| }, 500); | |||||
| uni.showToast({ | |||||
| title: "获取数据失败,请重试", | |||||
| icon: "none", | |||||
| }); | |||||
| } | |||||
| }; | |||||
| // 处理单人双人多人 | |||||
| function peopleNum(num) { | |||||
| if (num == 1) { | |||||
| return "单人"; | |||||
| } else if (num == 2) { | |||||
| return "双人"; | |||||
| } else if (num == 3) { | |||||
| return "三人"; | |||||
| } | |||||
| } | |||||
| //#endregion --------------------- | |||||
| //#region 点击图片 | |||||
| function createPhoto(item) { | |||||
| if (item.mouldType == 1) { | |||||
| uni.navigateTo({ | |||||
| url: `/pages/closeStyle/goCreatePhoto?id=${item.id}`, | |||||
| }); | |||||
| } else { | |||||
| uni.navigateTo({ | |||||
| url: `/pages/closeStyle/multiplayer?id=${item.id}`, | |||||
| }); | |||||
| } | |||||
| } | |||||
| //#endregion --------------------- | |||||
| </script> | |||||
| <style lang="scss"> | |||||
| .page { | |||||
| background-color: #222527; | |||||
| } | |||||
| .sexTab { | |||||
| margin: 20rpx 0; | |||||
| width: 100%; | |||||
| height: 60rpx; | |||||
| display: flex; | |||||
| justify-content: space-evenly; | |||||
| line-height: 54rpx; | |||||
| text-align: center; | |||||
| .sex { | |||||
| border-radius: 20rpx; | |||||
| border: 2rpx solid #ccc; | |||||
| width: 40%; | |||||
| } | |||||
| .sexActive { | |||||
| color: #ff4f00; | |||||
| border: 2rpx solid #ff4f00; | |||||
| transition: all 0.3s; | |||||
| } | |||||
| } | |||||
| .u-list { | |||||
| overflow: hidden; | |||||
| height: calc(100vh - 200rpx) !important; | |||||
| width: 650rpx; | |||||
| .glodYBox { | |||||
| display: flex !important; | |||||
| flex-direction: row !important; | |||||
| flex-wrap: wrap !important; | |||||
| justify-content: space-between !important; | |||||
| } | |||||
| .u-list-item { | |||||
| display: flex !important; | |||||
| flex-direction: row !important; | |||||
| flex-wrap: wrap !important; | |||||
| justify-content: space-between !important; | |||||
| } | |||||
| .styleInfo { | |||||
| position: relative; | |||||
| display: flex !important; | |||||
| flex-wrap: wrap !important; | |||||
| width: 300rpx; | |||||
| height: 480rpx; | |||||
| margin-bottom: 50rpx; | |||||
| border-radius: 24rpx; | |||||
| overflow: hidden; | |||||
| image { | |||||
| width: 300rpx; | |||||
| height: 400rpx; | |||||
| } | |||||
| .name { | |||||
| background-color: #393b3d; | |||||
| width: 100%; | |||||
| height: 80rpx; | |||||
| text-align: center; | |||||
| line-height: 80rpx; | |||||
| font-size: 30rpx; | |||||
| font-weight: bold; | |||||
| } | |||||
| .single { | |||||
| position: absolute; | |||||
| top: 11rpx; | |||||
| right: 13rpx; | |||||
| width: 72rpx; | |||||
| height: 41rpx; | |||||
| text-align: center; | |||||
| line-height: 41rpx; | |||||
| background: rgba(0, 0, 0, 0.4); | |||||
| font-size: 22rpx; | |||||
| // opacity: 0.4; | |||||
| border-radius: 12rpx; | |||||
| } | |||||
| } | |||||
| } | |||||
| </style> | |||||
| @@ -1,14 +1,22 @@ | |||||
| <template> | <template> | ||||
| <div class="page"> | <div class="page"> | ||||
| <!-- 性别tab --> | <!-- 性别tab --> | ||||
| <view class="sexTab"> | |||||
| <!-- <view class="sexTab"> | |||||
| <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 @click="sex = 1" class="sex" :class="sex == 1 ? 'sexActive' : ''" | ||||
| >男</view | >男</view | ||||
| > | > | ||||
| </view> | |||||
| </view> --> | |||||
| <u-tabs | |||||
| :list="tabList" | |||||
| lineWidth="70" | |||||
| lineColor="#ff4f00" | |||||
| :activeStyle="{ color: '#ff4f00' }" | |||||
| :inactiveStyle="{ color: '#fff' }" | |||||
| @click="chooseTab" | |||||
| ></u-tabs> | |||||
| <u-list | <u-list | ||||
| class="styleListBox" | class="styleListBox" | ||||
| @scrolltolower="scrolltolower" | @scrolltolower="scrolltolower" | ||||
| @@ -143,32 +151,53 @@ function createPhoto(item) { | |||||
| } | } | ||||
| } | } | ||||
| //#endregion --------------------- | //#endregion --------------------- | ||||
| //#region tab栏 | |||||
| const tabList = ref([ | |||||
| { name: "女", id: 2 }, | |||||
| { name: "男", id: 1 }, | |||||
| // { name: "多人", id: 3 }, | |||||
| // { name: "电影明星", id: 4 }, | |||||
| // { name: "体育", id: 5 }, | |||||
| ]); | |||||
| function chooseTab(item) { | |||||
| sex.value = item.id; | |||||
| } | |||||
| //#endregion | |||||
| </script> | </script> | ||||
| <style lang="scss"> | <style lang="scss"> | ||||
| .page { | .page { | ||||
| background-color: #222527; | background-color: #222527; | ||||
| } | } | ||||
| .sexTab { | |||||
| margin: 20rpx 0; | |||||
| width: 100%; | |||||
| height: 60rpx; | |||||
| display: flex; | |||||
| justify-content: space-evenly; | |||||
| line-height: 54rpx; | |||||
| text-align: center; | |||||
| .sex { | |||||
| border-radius: 20rpx; | |||||
| border: 2rpx solid #ccc; | |||||
| width: 40%; | |||||
| } | |||||
| .sexActive { | |||||
| color: #ff4f00; | |||||
| border: 2rpx solid #ff4f00; | |||||
| transition: all 0.3s; | |||||
| // .sexTab { | |||||
| // margin: 20rpx 0; | |||||
| // width: 100%; | |||||
| // height: 60rpx; | |||||
| // display: flex; | |||||
| // justify-content: space-evenly; | |||||
| // line-height: 54rpx; | |||||
| // text-align: center; | |||||
| // .sex { | |||||
| // border-radius: 20rpx; | |||||
| // border: 2rpx solid #ccc; | |||||
| // width: 40%; | |||||
| // } | |||||
| // .sexActive { | |||||
| // color: #ff4f00; | |||||
| // border: 2rpx solid #ff4f00; | |||||
| // transition: all 0.3s; | |||||
| // } | |||||
| // } | |||||
| .u-tabs { | |||||
| max-width: 100%; | |||||
| color: #fff !important; | |||||
| margin-bottom: 30rpx; | |||||
| .u-tabs__wrapper__nav__item { | |||||
| width: 200rpx; | |||||
| height: 90rpx !important; | |||||
| } | } | ||||
| } | } | ||||
| .u-list { | .u-list { | ||||
| overflow: hidden; | overflow: hidden; | ||||
| height: calc(100vh - 200rpx) !important; | height: calc(100vh - 200rpx) !important; | ||||
| @@ -147,17 +147,23 @@ | |||||
| class="InviteBox" | class="InviteBox" | ||||
| v-show="showListActive == 3 && userInfoModulesPinia.token" | v-show="showListActive == 3 && userInfoModulesPinia.token" | ||||
| > | > | ||||
| <scroll-view :scroll-y="true" class="showInviteList"> | |||||
| <view v-for="item in 9" :key="item" class="InviteList"> | |||||
| <scroll-view | |||||
| :scroll-y="true" | |||||
| class="showInviteList" | |||||
| @scrolltolower="getMoreInviteList" | |||||
| > | |||||
| <view v-for="item in InviteList" :key="item.id" class="InviteList"> | |||||
| <up-avatar :src="avatarUrl" size="50"></up-avatar> | <up-avatar :src="avatarUrl" size="50"></up-avatar> | ||||
| <view class="info"> | <view class="info"> | ||||
| <view class="name">猕猴桃</view> | |||||
| <view class="time">2023/7/29</view> | |||||
| <view class="name">{{ item.userPhone }}</view> | |||||
| <view class="time">{{ | |||||
| dayjs(item.createDate).format("YYYY-MM-DD HH:mm:ss") | |||||
| }}</view> | |||||
| </view> | </view> | ||||
| <view class="getCoin"> 金币+2 </view> | |||||
| <view class="getCoin"> +{{ item.goldNum }}金币 </view> | |||||
| </view> | </view> | ||||
| </scroll-view> | </scroll-view> | ||||
| <view class="inviteBtn">继续邀请好友</view> | |||||
| <button open-type="share" class="inviteBtn">继续邀请好友</button> | |||||
| </view> | </view> | ||||
| <!-- 显示消费列表内容 --> | <!-- 显示消费列表内容 --> | ||||
| <view | <view | ||||
| @@ -296,7 +302,7 @@ function goCloseStyle() { | |||||
| const tabList = ref([ | const tabList = ref([ | ||||
| { name: "我的写真", id: 1 }, | { name: "我的写真", id: 1 }, | ||||
| // { name: "我的视频", id: 2 }, | // { name: "我的视频", id: 2 }, | ||||
| // { name: "我的邀请", id: 3 }, | |||||
| { name: "我的邀请", id: 3 }, | |||||
| { name: "消费记录", id: 4 }, | { name: "消费记录", id: 4 }, | ||||
| ]); | ]); | ||||
| const showListActive = ref(1); | const showListActive = ref(1); | ||||
| @@ -404,7 +410,7 @@ function getSymbol(type) { | |||||
| } | } | ||||
| //#endregion 获取图片,金币, | //#endregion 获取图片,金币, | ||||
| //#region 获取消费记录 | |||||
| //#region 获取邀请记录 | |||||
| const pageSize3 = ref(20); | const pageSize3 = ref(20); | ||||
| const pageNum3 = ref(1); | const pageNum3 = ref(1); | ||||
| const InviteList = ref(20); | const InviteList = ref(20); | ||||
| @@ -416,11 +422,11 @@ async function getInviteList(pageSize, pageNum) { | |||||
| } | } | ||||
| /** | /** | ||||
| * @description:触底加载更多消费记录 | |||||
| * @description:触底加载更多邀请记录 | |||||
| */ | */ | ||||
| async function getMoreInviteList() { | async function getMoreInviteList() { | ||||
| try { | try { | ||||
| pageNum2.value += 1; | |||||
| pageNum3.value += 1; | |||||
| const res = await getInviteListApi(pageSize3.value, pageNum3.value); | const res = await getInviteListApi(pageSize3.value, pageNum3.value); | ||||
| if (res.data && res.data.list && res.data.list.length == 0) { | if (res.data && res.data.list && res.data.list.length == 0) { | ||||
| pageNum3.value -= 1; | pageNum3.value -= 1; | ||||
| @@ -825,6 +831,7 @@ onShareAppMessage((res) => { | |||||
| line-height: 100rpx; | line-height: 100rpx; | ||||
| text-align: center; | text-align: center; | ||||
| font-size: 30rpx; | font-size: 30rpx; | ||||
| color: #fff; | |||||
| background-color: rgba(255, 79, 0, 1); | background-color: rgba(255, 79, 0, 1); | ||||
| border-radius: 50rpx; | border-radius: 50rpx; | ||||
| } | } | ||||
| @@ -910,11 +917,23 @@ onShareAppMessage((res) => { | |||||
| padding: 0 50rpx; | padding: 0 50rpx; | ||||
| height: 65rpx; | height: 65rpx; | ||||
| line-height: 65rpx; | line-height: 65rpx; | ||||
| text-align: center; | |||||
| .name, | .name, | ||||
| .coin { | .coin { | ||||
| width: 25%; | |||||
| font-weight: 900; | font-weight: 900; | ||||
| white-space: nowrap; | |||||
| overflow: hidden; | |||||
| text-overflow: ellipsis; | |||||
| } | |||||
| .name { | |||||
| text-align: start; | |||||
| } | |||||
| .coin { | |||||
| text-align: end; | |||||
| } | } | ||||
| .time { | .time { | ||||
| flex: 1; | |||||
| font-weight: 100; | font-weight: 100; | ||||
| } | } | ||||
| } | } | ||||
| @@ -152,6 +152,7 @@ | |||||
| //#region 导入 | //#region 导入 | ||||
| import { ref, reactive, computed } from "vue"; | import { ref, reactive, computed } from "vue"; | ||||
| import { onLoad } from "@dcloudio/uni-app"; | import { onLoad } from "@dcloudio/uni-app"; | ||||
| import { findImageApi, findGlodApi } from "../../api/home"; | |||||
| import { | import { | ||||
| loginApi, | loginApi, | ||||
| loginPhoneApi, | loginPhoneApi, | ||||
| @@ -481,6 +482,10 @@ onLoad((options) => { | |||||
| icon: "none", | icon: "none", | ||||
| }); | }); | ||||
| } | } | ||||
| // 已有token时直接登录 | |||||
| if (uni.getStorageSync("token")) { | |||||
| uni.switchTab({ url: "/pages/uploadPhoto/uploadPhoto" }); | |||||
| } | |||||
| if (userInfoModulesPinia.platForm == 2) { | if (userInfoModulesPinia.platForm == 2) { | ||||
| uni.login({ | uni.login({ | ||||
| @@ -500,20 +505,26 @@ onLoad((options) => { | |||||
| userInfoModulesPinia.openId = res2.data.openId; | userInfoModulesPinia.openId = res2.data.openId; | ||||
| if (res2.data.token) { | if (res2.data.token) { | ||||
| userInfoModulesPinia.token = res2.data.token; | userInfoModulesPinia.token = res2.data.token; | ||||
| // uni.setStorageSync("token", userInfoModulesPinia.token); | |||||
| uni.setStorageSync("token", userInfoModulesPinia.token); | |||||
| console.log(userInfoModulesPinia.openId, "获取openid"); | console.log(userInfoModulesPinia.openId, "获取openid"); | ||||
| // 获取头像和金币 | // 获取头像和金币 | ||||
| // const res3 = await findImageApi(); | |||||
| // userInfoModulesPinia.myAvatar = | |||||
| // res3.data && res3.data.image ? res3.data.image : ""; | |||||
| // const res4 = await findGlodApi(); | |||||
| // if (!res4.data) { | |||||
| // userInfoModulesPinia.myGlod = 0; | |||||
| // } else { | |||||
| // userInfoModulesPinia.myGlod = res4.data.digitalAvatarResidueGlod | |||||
| // ? res4.data.digitalAvatarResidueGlod | |||||
| // : 0; | |||||
| // } | |||||
| const res3 = await findImageApi(); | |||||
| if (res3.data) { | |||||
| uni.setStorageSync("userId", res3.data.id); | |||||
| } | |||||
| userInfoModulesPinia.myAvatar = | |||||
| res3.data && res3.data.image ? res3.data.image : ""; | |||||
| const res4 = await findGlodApi(); | |||||
| if (res4.data) { | |||||
| uni.setStorageSync("userId", res4.data.id); | |||||
| } | |||||
| if (!res4.data) { | |||||
| userInfoModulesPinia.myGlod = 0; | |||||
| } else { | |||||
| userInfoModulesPinia.myGlod = res4.data.digitalAvatarResidueGlod | |||||
| ? res4.data.digitalAvatarResidueGlod | |||||
| : 0; | |||||
| } | |||||
| uni.hideLoading(); | uni.hideLoading(); | ||||
| if (res2.data.token) { | if (res2.data.token) { | ||||
| getPrivacySetting(1); | getPrivacySetting(1); | ||||
| @@ -20,7 +20,18 @@ | |||||
| mode="aspectFit" | mode="aspectFit" | ||||
| /> | /> | ||||
| <view v-if="createState == 2" class="checkMore">左右滑动查看更多</view> | <view v-if="createState == 2" class="checkMore">左右滑动查看更多</view> | ||||
| <view v-if="createState != 2" class="wait">生成中,请稍后...</view> | |||||
| <view | |||||
| v-if="createState != 2 && userInfoModulesPinia.platForm == 2" | |||||
| class="wait" | |||||
| >生成中,请稍后...</view | |||||
| > | |||||
| <view | |||||
| @click="subscribe" | |||||
| v-if="createState != 2" | |||||
| style="text-decoration: underline; color: #ff4f00" | |||||
| class="wait" | |||||
| >做好后通知我</view | |||||
| > | |||||
| <!-- <view class="uploadBtn grayBtn"> | <!-- <view class="uploadBtn grayBtn"> | ||||
| <text>我要让照片说话</text> | <text>我要让照片说话</text> | ||||
| <view class="free"> | <view class="free"> | ||||
| @@ -40,7 +51,7 @@ | |||||
| <!-- 底部 --> | <!-- 底部 --> | ||||
| <view class="bottomBox"> | <view class="bottomBox"> | ||||
| <view v-if="createState == 2" class="tips"> | <view v-if="createState == 2" class="tips"> | ||||
| <text>邀请好友可获得2枚金币</text> | |||||
| <text>邀请好友可获得{{ loginAwardCoin }}枚金币</text> | |||||
| </view> | </view> | ||||
| <button open-type="share" class="shareBtn">分享</button> | <button open-type="share" class="shareBtn">分享</button> | ||||
| <view v-if="createState == 2" class="shareBtn" @click="getUserQrcode" | <view v-if="createState == 2" class="shareBtn" @click="getUserQrcode" | ||||
| @@ -66,6 +77,7 @@ import { | |||||
| onShareTimeline, | onShareTimeline, | ||||
| } from "@dcloudio/uni-app"; | } from "@dcloudio/uni-app"; | ||||
| import { BASE_URL } from "../../utils/request"; | import { BASE_URL } from "../../utils/request"; | ||||
| import { findGlodApi } from "../../api/home"; | |||||
| import { ref, reactive, watch } from "vue"; | import { ref, reactive, watch } from "vue"; | ||||
| import { userInfoModules } from "@/store/modules/userInfo"; | import { userInfoModules } from "@/store/modules/userInfo"; | ||||
| import { | import { | ||||
| @@ -73,16 +85,28 @@ import { | |||||
| photoSupperApi, | photoSupperApi, | ||||
| getSupperPhotoStateApi, | getSupperPhotoStateApi, | ||||
| getUserQrcodeApi, | getUserQrcodeApi, | ||||
| getTemplateMsgApi, | |||||
| } from "../../api/lookPhoto.js"; | } from "../../api/lookPhoto.js"; | ||||
| //#endregion | //#endregion | ||||
| const userInfoModulesPinia = userInfoModules(); | const userInfoModulesPinia = userInfoModules(); | ||||
| //#region 轮播图 | //#region 轮播图 | ||||
| const createState = ref(null); //制作状态:1生成中,2完成,3失败 | |||||
| const createState = ref(1); //制作状态:1生成中,2完成,3失败 | |||||
| const workId = ref(null); //作品id | const workId = ref(null); //作品id | ||||
| const loginAwardCoin = uni.getStorageSync("loginAwardCoin"); | |||||
| onLoad(async (options) => { | onLoad(async (options) => { | ||||
| workId.value = options.id; | workId.value = options.id; | ||||
| await getTemplateMsg(); | |||||
| await getSwiperList(); | await getSwiperList(); | ||||
| await getSupperPhotoState(swiperList.value[0].id); | await getSupperPhotoState(swiperList.value[0].id); | ||||
| // 重新获取金币 | |||||
| const res4 = await findGlodApi(); | |||||
| if (!res4.data) { | |||||
| userInfoModulesPinia.myGlod = 0; | |||||
| } else { | |||||
| userInfoModulesPinia.myGlod = res4.data.digitalAvatarResidueGlod | |||||
| ? res4.data.digitalAvatarResidueGlod | |||||
| : 0; | |||||
| } | |||||
| }); | }); | ||||
| onHide(() => { | onHide(() => { | ||||
| clearTimeout(timer); | clearTimeout(timer); | ||||
| @@ -107,7 +131,7 @@ async function getSwiperList() { | |||||
| }); | }); | ||||
| } | } | ||||
| if (createState.value != 2) { | |||||
| if (res.data.status != 2) { | |||||
| timer.value = setTimeout(() => { | timer.value = setTimeout(() => { | ||||
| getSwiperList(); | getSwiperList(); | ||||
| }, 3000); | }, 3000); | ||||
| @@ -405,6 +429,77 @@ async function getUserQrcode() { | |||||
| //#endregion --------------------- | //#endregion --------------------- | ||||
| //#region 订阅消息 | |||||
| const templateId = ref([]); | |||||
| async function getTemplateMsg() { | |||||
| try { | |||||
| const res = await getTemplateMsgApi(); | |||||
| if (res.data) { | |||||
| res.data.forEach((item) => { | |||||
| templateId.value.push(item.templateId); | |||||
| }); | |||||
| } | |||||
| } catch (error) { | |||||
| console.log("获取订阅消息模版失败", error); | |||||
| } | |||||
| } | |||||
| function subscribe() { | |||||
| uni.requestSubscribeMessage({ | |||||
| //此处填写刚才申请模板的模板ID | |||||
| tmplIds: templateId.value, | |||||
| success(res) { | |||||
| console.log(res); | |||||
| let failFlag = true; | |||||
| templateId.value.forEach((item) => { | |||||
| if (res[item] == "accept") { | |||||
| uni.showToast({ | |||||
| title: "订阅成功", | |||||
| icon: "success", | |||||
| }); | |||||
| failFlag = false; | |||||
| } | |||||
| }); | |||||
| if (failFlag) { | |||||
| // uni.showToast({ | |||||
| // duration: 5000, | |||||
| // title: "订阅失败 ,您可以在小程序设置->通知管理 \n 中重新启用订阅功能", | |||||
| // icon: "none", | |||||
| // }); | |||||
| uni.showModal({ | |||||
| title: "提示", | |||||
| content: | |||||
| "订阅失败 ,您可以在 \n 小程序设置->通知管理 \n 中重新启用订阅功能", | |||||
| confirmText: "确定", | |||||
| showCancel: false, | |||||
| }); | |||||
| } | |||||
| // if (res[templateId[0]] == "accept") { | |||||
| // uni.showToast({ | |||||
| // title: "订阅成功", | |||||
| // icon: "success", | |||||
| // }); | |||||
| // // 用户允许订阅 | |||||
| // } else { | |||||
| // uni.showToast({ | |||||
| // title: "订阅失败", | |||||
| // icon: "none", | |||||
| // }); | |||||
| // // 用户拒绝订阅 | |||||
| // } | |||||
| }, | |||||
| fail(err) { | |||||
| console.error("订阅消息失败", err); | |||||
| uni.showToast({ | |||||
| title: "订阅失败", | |||||
| icon: "none", | |||||
| }); | |||||
| }, | |||||
| }); | |||||
| } | |||||
| //#endregion --------------------- | |||||
| //#region | //#region | ||||
| //#endregion --------------------- | //#endregion --------------------- | ||||
| @@ -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" v-if="false"> | |||||
| <view class="free" v-if="countNum == 0"> | |||||
| <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"> | ||||
| @@ -97,10 +97,15 @@ import { ref, reactive, nextTick } from "vue"; | |||||
| import { BASE_URL } from "../../utils/request"; | import { BASE_URL } from "../../utils/request"; | ||||
| import { onLoad, onShow } from "@dcloudio/uni-app"; | import { onLoad, onShow } from "@dcloudio/uni-app"; | ||||
| import { loginApi } from "../../api/login"; | import { loginApi } from "../../api/login"; | ||||
| import { addImageApi } from "../../api/uploadphoto.js"; | |||||
| import { | |||||
| addImageApi, | |||||
| getProjectConfigApi, | |||||
| getCountApi, | |||||
| } from "../../api/uploadphoto.js"; | |||||
| import { userInfoModules } from "@/store/modules/userInfo"; | import { userInfoModules } from "@/store/modules/userInfo"; | ||||
| import imageCompression from "browser-image-compression"; //压缩图片插件 | import imageCompression from "browser-image-compression"; //压缩图片插件 | ||||
| import { findImageApi, findGlodApi } from "../../api/home"; | import { findImageApi, findGlodApi } from "../../api/home"; | ||||
| //#endregion | //#endregion | ||||
| const userInfoModulesPinia = userInfoModules(); | const userInfoModulesPinia = userInfoModules(); | ||||
| @@ -348,11 +353,13 @@ onLoad((options) => { | |||||
| userInfoModulesPinia.openId = res2.data.openId; | userInfoModulesPinia.openId = res2.data.openId; | ||||
| if (res2.data.token) { | if (res2.data.token) { | ||||
| userInfoModulesPinia.token = res2.data.token; | userInfoModulesPinia.token = res2.data.token; | ||||
| // uni.setStorageSync("token", userInfoModulesPinia.token); | |||||
| uni.setStorageSync("token", userInfoModulesPinia.token); | |||||
| console.log(userInfoModulesPinia.openId, "获取openid"); | console.log(userInfoModulesPinia.openId, "获取openid"); | ||||
| // 获取头像和金币 | // 获取头像和金币 | ||||
| const res3 = await findImageApi(); | const res3 = await findImageApi(); | ||||
| if (res3.data) { | |||||
| uni.setStorageSync("userId", res3.data.id); | |||||
| } | |||||
| 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(); | ||||
| @@ -366,6 +373,7 @@ onLoad((options) => { | |||||
| ? res4.data.digitalAvatarResidueGlod | ? res4.data.digitalAvatarResidueGlod | ||||
| : 0; | : 0; | ||||
| } | } | ||||
| uni.hideLoading(); | uni.hideLoading(); | ||||
| if (res2.data.token) { | if (res2.data.token) { | ||||
| // uni.redirectTo({ | // uni.redirectTo({ | ||||
| @@ -487,6 +495,7 @@ onLoad((options) => { | |||||
| }, | }, | ||||
| }); | }); | ||||
| } | } | ||||
| // 如果是从相机页返回 | // 如果是从相机页返回 | ||||
| }); | }); | ||||
| onShow(() => { | onShow(() => { | ||||
| @@ -502,6 +511,7 @@ onShow(() => { | |||||
| toCloseStyle(); | toCloseStyle(); | ||||
| uni.removeStorageSync("action"); | uni.removeStorageSync("action"); | ||||
| } | } | ||||
| getCount(); | |||||
| }); | }); | ||||
| //#endregion --------------------- | //#endregion --------------------- | ||||
| @@ -527,6 +537,45 @@ function takePhoto() { | |||||
| } | } | ||||
| //#endregion --------------------- | //#endregion --------------------- | ||||
| //#region 获取邀请 注册等奖励金币数量 | |||||
| async function getProjectConfig() { | |||||
| const data1 = { | |||||
| projectType: 5, | |||||
| type: 1, | |||||
| }; | |||||
| const data2 = { | |||||
| projectType: 5, | |||||
| type: 2, | |||||
| }; | |||||
| try { | |||||
| const res1 = await getProjectConfigApi(data1); | |||||
| uni.setStorageSync("loginAwardCoin", res1.data.glodNum); | |||||
| const res2 = await getProjectConfigApi(data2); | |||||
| uni.setStorageSync("inviteAwardCoin", res2.data.glodNum); | |||||
| } catch (error) { | |||||
| console.log("获取邀请 注册等奖励金币数量失败", error); | |||||
| } | |||||
| } | |||||
| getProjectConfig(); | |||||
| //#endregion --------------------- | |||||
| //#region 是否首次生成 | |||||
| const countNum = ref(0); | |||||
| async function getCount() { | |||||
| try { | |||||
| const res = await getCountApi(); | |||||
| if (res.data) { | |||||
| countNum.value = res.data; | |||||
| } else { | |||||
| countNum.value = 0; | |||||
| } | |||||
| } catch (error) { | |||||
| console.log("是否首次生成", error); | |||||
| } | |||||
| } | |||||
| //#endregion --------------------- | |||||
| //#region | //#region | ||||
| //#endregion --------------------- | //#endregion --------------------- | ||||
| @@ -15,10 +15,12 @@ const request = (requestObj) => { | |||||
| data: requestObj.data, | data: requestObj.data, | ||||
| header: { | header: { | ||||
| // Authorization: userInfoModulesPinia.token, | // Authorization: userInfoModulesPinia.token, | ||||
| token: userInfoModulesPinia.token, | |||||
| // token: userInfoModulesPinia.token, | |||||
| token: uni.getStorageSync("token"), | |||||
| }, | }, | ||||
| success: (res) => { | success: (res) => { | ||||
| if (res.data.code == 1052) { | if (res.data.code == 1052) { | ||||
| uni.setStorageSync("token", null) | |||||
| uni.reLaunch({ | uni.reLaunch({ | ||||
| url: "/pages/login/index?type=tokenFfalse", | url: "/pages/login/index?type=tokenFfalse", | ||||
| }); | }); | ||||