congzc 1 year ago
parent
commit
81975efc68
7 changed files with 139 additions and 18 deletions
  1. +10
    -0
      src/App.vue
  2. +38
    -0
      src/api/home.js
  3. +78
    -11
      src/pages/index/index.vue
  4. +1
    -1
      src/pages/login/index.vue
  5. +1
    -1
      src/pages/uploadPhoto/uploadPhoto.vue
  6. +1
    -0
      src/store/index.js
  7. +10
    -5
      src/store/modules/userInfo.js

+ 10
- 0
src/App.vue View File

@@ -6,6 +6,7 @@
import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
import { userInfoModules } from "@/store/modules/userInfo";
import { loginApi } from "./api/login";
import { findImageApi, findGlodApi } from "./api/home";
const userInfoModulesPinia = userInfoModules();
onLaunch(() => {
console.log("App Launch!");
@@ -60,6 +61,15 @@ onLaunch(() => {
userInfoModulesPinia.openId = res2.data.openId;
userInfoModulesPinia.token = res2.data.token;
console.log(userInfoModulesPinia.openId, "获取openid");
// 获取头像和金币
const res3 = await findImageApi();
userInfoModulesPinia.myAvatar = res3.data.image;
const res4 = await findGlodApi();
if (!res4.data) {
userInfoModulesPinia.myGlod = 0;
} else {
userInfoModulesPinia.myGlod = res4.data.coin;
}
uni.hideLoading();
if (res2.data.token) {
// uni.redirectTo({


+ 38
- 0
src/api/home.js View File

@@ -0,0 +1,38 @@
import request from "../utils/request"

/**
* @description:获取用户头像
* @param
* @return: data
*/
export function findImageApi() {
return request({
url: `/api/userDigital/findImage`,
method: 'get'
})
}

/**
* @description:查询金币数量
* @param
* @return: data
*/
export function findGlodApi() {
return request({
url: `/api/userProperty/findGlod`,
method: 'get',
})
}

/**
* @description:获取我的写真列表
* @param (pageSize, pageNum)
* @return: data
*/
export function getPhotoListApi(pageSize, pageNum) {
return request({
url: `/api/digitalAvatarPhoto/list?pageSize=${pageSize}&pageNum=${pageNum}`,
method: 'get',

})
}

+ 78
- 11
src/pages/index/index.vue View File

@@ -10,8 +10,8 @@
<view class="avatarBox">
<image
class="avatar"
src="../../assets/img/avatar.png"
mode="scaleToFill"
:src="userInfoModulesPinia.myAvatar"
mode="aspectFill"
/>
<view @click="chooseAvatar" class="changeAvatar">
<image src="../../assets/img/reset.png" mode="aspectFit" />
@@ -20,7 +20,7 @@
<!-- 金币 -->
<view class="coinBox">
我的金币:&nbsp; &nbsp;30
我的金币:&nbsp; &nbsp;{{ userInfoModulesPinia.myGlod }}
<image src="../../assets/icon/icon.png" mode="scaleToFill" />
<text @click="goBuyCoin">购买金币</text></view
>
@@ -94,7 +94,7 @@
<!-- 显示邀请列表内容 -->
<view class="InviteBox" v-show="showListActive == 3">
<scroll-view :scroll-y="true" class="showInviteList">
<view v-for="item in 9" class="InviteList">
<view v-for="item in 9" :key="item" class="InviteList">
<up-avatar :src="avatarUrl" size="50"></up-avatar>
<view class="info">
<view class="name">猕猴桃</view>
@@ -113,7 +113,7 @@
<text>金币</text>
</view>
<scroll-view :scroll-y="true" class="bottom">
<view class="OrderListItem" v-for="item in 16">
<view class="OrderListItem" v-for="item in 16" :key="item">
<view class="name">大西瓜</view>
<view class="time">2023/7/29 </view>
<view class="coin">-2金币</view>
@@ -126,13 +126,15 @@
<script setup>
//#region 导入
import { ref, reactive, computed } from "vue";
import { voiceTotalApi } from "../../api/login.js";
import { onLoad } from "@dcloudio/uni-app";
import { ref, reactive, computed, inject } from "vue";
// import App from "../../App.vue";
import { findImageApi, findGlodApi, getPhotoListApi } from "../../api/home.js";
import { userInfoModules } from "@/store/modules/userInfo";
import imageCompression from "browser-image-compression"; //压缩图片插件
//#endregion
// 定义,杂项
//#region 定义,杂项
const userInfoModulesPinia = userInfoModules();
const pageClass = computed(() => {
if (userInfoModulesPinia.platForm == 1) {
@@ -141,8 +143,9 @@ const pageClass = computed(() => {
return "page";
}
});
// console.log(userInfoModulesPinia.token, "token123123");
//#endregion
//#region 头像
const avatarUrl = ref(null);
function chooseAvatar() {
@@ -210,9 +213,72 @@ function clickTabHandle(e) {
}
//#endregion
//#region 获取写真列表
const pageSize = ref(6);
const pageNum = ref(1);
async function getPhotoList(pageSize, pageNum) {
try {
const res = await getPhotoListApi(pageSize, pageNum);
} catch (error) {}
}
//#endregion
//#region 获取图片,金币,
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"
);
const myGlod = ref(0);
const PhotoList = ref(0);
async function findImage() {
try {
const res = await findImageApi();
myAvatar.value = res.data.image;
} catch (error) {}
}
async function findGlod() {
try {
const res = await findGlodApi();
if (!res.data) {
myGlod.value = 0;
} else {
myGlod.value = res.data.coin;
}
} catch (error) {}
}
//#endregion ---------------------------
//#region 初始化和卸载
function init() {
if (userInfoModulesPinia.token == 1) {
getPhotoList(pageSize.value, pageNum.value);
} else {
setTimeout(init, 500); // 继续等待 0.5 秒后再次执行函数
}
}
onLoad(async () => {
// if (!userInfoModulesPinia.token) {
// setTimeout(() => {
// onLoad();
// }, 500);
// return;
// } else {
// console.log(userInfoModulesPinia.token);
// }
setTimeout(() => {
getPhotoList(pageSize.value, pageNum.value);
// findImage();
// findGlod();
// getPhotoList();
}, 1000);
});
//#endregion ---------------------------
//#region
//#endregion
//#endregion ---------------------------
</script>
<style lang="scss">
@@ -387,7 +453,8 @@ function clickTabHandle(e) {
width: 100%;
height: 100rpx;
padding: 10rpx 20rpx;
background-color: red;
// background-color: red;
// background-color: #393b3d;
z-index: 2;
.name {
font-weight: 900;


+ 1
- 1
src/pages/login/index.vue View File

@@ -92,7 +92,7 @@ async function getphonenumber(e) {
title: "获取成功",
});
userInfoModulesPinia.token = res2.data.token;
uni.redirectTo({
uni.switchTab({
url: "/pages/index/index",
});
} catch (error) {


+ 1
- 1
src/pages/uploadPhoto/uploadPhoto.vue View File

@@ -84,7 +84,7 @@ const userInfoModulesPinia = userInfoModules();
//#region 选择图片
const uploadState = ref(1); //上传状态
const showImgUrl = ref(null); //回显路径 压缩
const showImgUrl = ref(userInfoModulesPinia.myAvatar); //回显路径 压缩
const showImgUrl2 = ref(null); //回显路径 未压缩
const showImgData = ref(null); //上传数据
function chooseImage() {


+ 1
- 0
src/store/index.js View File

@@ -1,5 +1,6 @@
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import { findImageApi, findGlodApi } from "../api/home"
const store = createPinia();
store.use(piniaPluginPersistedstate)


+ 10
- 5
src/store/modules/userInfo.js View File

@@ -1,14 +1,19 @@
import { defineStore } from "pinia";
import { ref, reactive } from "vue";
// import { request } from "../../utils/request"
/**
* @description:用户信息持久化数据
*/
export const userInfoModules = defineStore("userInfoStore", () => {
// state
const userInfo = ref(null)
const openId = ref(null)
const token = ref(null)
const myAvatar = ref('')
const myGlod = ref(0)
/**
* @description:依托平台:(web、mp-weixin、mp-toutiao)
* @example 平台名:"web-H5",枚举值:1
@@ -28,14 +33,14 @@ export const userInfoModules = defineStore("userInfoStore", () => {
const hostSystem = ref(null)
// 登录获取用户信息
async function getUserInfo() {
// async function getMyAvatar() {
}
// }
// 退出清除用户信息
function loginOut(params) {
// async function getMyGlod(params) {
}
return { userInfo, openId, platForm, hostSystem, getUserInfo, loginOut };
// }
return { userInfo, openId, token, myAvatar, myGlod, platForm, hostSystem };
},
{
persist: true,

Loading…
Cancel
Save