当前位置: 首页 > article >正文

EP41 我的评分和我的下载公用分类列表

文件路径: E:/homework/uniappv3tswallpaper/api/apis.js

先添加相应的api。

import {
	request
} from "@/utils/requset.js"

export function apiGetBanner() {
	return request({
		url: "/homeBanner"
	})
}
export function apiGetDayRandom() {
	return request({
		url: "/randomWall"
	})
}

export function apiGetRequest(data = {}) {
	return request({
		url: '/wallNewsList',
		data
	})
}

export function apiGetClassify(data = {}) {
	return request({
		url: '/classify',
		data
	})
}

export function apiGetCLassList(data = {}) {
	return request({
		url: '/wallList',
		data
	})
}

export function apiGetSetupScore(data = {}) {
	return request({
		url: '/setupScore',
		data
	})
}

export function apiWriteDownload(data = {}) {
	return request({
		url: '/downloadWall',
		data
	})
}

export function apiGetDetailWall(data = {}) {
	return request({
		url: '/detailWall',
		data
	})
}

export function apiGetUserInfo(data = {}) {
	return request({
		url: '/userInfo',
		data
	})
}

export function apiGetUserWallList(data = {}) {
	return request({
		url: '/userWallList',
		data
	})
}

文件路径: E:/homework/uniappv3tswallpaper/pages/user/user.vue

从我的页面向分类列表页面跳转的时候传递新的参数 nametype

<template>
	<view class="userLayout pageBg" v-if="userInfo">
		<view class="" :style="{height:getNavBarHeight() + 'px'}"> </view>
		<view class="userInfo">
			<view class="avatar">
				<image src="../../common/images/preview1.jpg" mode="aspectFill"></image>
			</view>
			<view class="ip">
				{{userInfo.IP}}
			</view>
			<view class="from">
				{{userInfo.address.city || userInfo.address.province || userInfo.address.country}}
			</view>
		</view>
		<view class="section">
			<view class="list">
				<navigator url="/pages/classlist/classlist?name=我的下载&type=download">
					<view class="row">
						<view class="left">
							<uni-icons type="download-filled" size="20" color="#28b389"></uni-icons>
							<view class="text">
								我的下载
							</view>
						</view>
						<view class="right">
							<view class="text">
								{{userInfo.downloadSize}}
							</view>
							<uni-icons type="right" size="15" color="#aaa"></uni-icons>
						</view>
					</view>
				</navigator>
				<navigator url="/pages/classlist/classlist?name=我的评分&type=score">
					<view class="row">
						<view class="left">
							<uni-icons type="star-filled" size="20" color="#28b389"></uni-icons>
							<view class="text">
								我的评分
							</view>
						</view>
						<view class="right">
							<view class="text">
								{{userInfo.scoreSize}}
							</view>
							<uni-icons type="right" size="15" color="#aaa"></uni-icons>
						</view>
					</view>
				</navigator>
				<view class="row">
					<view class="left">
						<uni-icons type="chatboxes-filled" size="20" color="#28b389"></uni-icons>
						<view class="text">
							联系客服
						</view>
					</view>
					<view class="right">
						<view class="text">
						</view>
						<uni-icons type="right" size="15" color="#aaa"></uni-icons>
					</view>
					<!-- #ifdef MP -->
					<button open-type="contact">联系客服</button>
					<!-- #endif -->
					<!-- #ifndef MP -->
					<button @click="clickContact">打电话</button>
					<!-- #endif -->
				</view>
			</view>
		</view>
		<view class="section">
			<view class="list">
				<view class="row">
					<view class="left">
						<uni-icons type="notification-filled" size="20" color="#28b389"></uni-icons>
						<view class="text">
							订阅更新
						</view>
					</view>
					<view class="right">
						<view class="text">

						</view>
						<uni-icons type="right" size="15" color="#aaa"></uni-icons>
					</view>
				</view>
				<view class="row">
					<view class="left">
						<uni-icons type="flag-filled" size="20" color="#28b389"></uni-icons>
						<view class="text">
							常见问题
						</view>
					</view>
					<view class="right">
						<view class="text">

						</view>
						<uni-icons type="right" size="15" color="#aaa"></uni-icons>
					</view>
				</view>
			</view>
		</view>
	</view>
	<view class="loadingLayout" v-else>
		<view class="" :style="{height:getNavBarHeight() + 'px'}"> </view>
		<uni-load-more status="loading"></uni-load-more>
	</view>
</template>

<script setup>
	import {
		getNavBarHeight
	} from "@/utils/system.js"
	import {
		apiGetUserInfo
	} from "@/api/apis.js"
	import {
		ref
	} from "vue";

	const userInfo = ref(null)

	const clickContact = () => {
		uni.makePhoneCall({
			phoneNumber: '114' //仅为示例
		});
	}

	const getUerInfo = () => {
		apiGetUserInfo().then(res => {
			userInfo.value = res.data
			// console.log(userInfo.value)
		})
	}

	getUerInfo()
</script>

<style lang="scss" scoped>
	.userLayout {
		.userInfo {
			display: flex;
			flex-direction: column;
			flex-wrap: nowrap;
			align-content: center;
			justify-content: center;
			align-items: center;
			padding: 50rpx 0;

			.avatar {
				height: 160rpx;
				width: 160rpx;
				border-radius: 50%;
				overflow: hidden;

				image {
					height: 100%;
					width: 100%;
				}
			}

			.ip {
				font-size: 44rpx;
				color: #333;
				padding: 20rpx 0 5rpx;
			}

			.from {
				font-size: 28rpx;
				color: #aaa;
			}

		}
	}

	.section {
		width: 690rpx;
		margin: 50rpx auto;
		border: 1rpx solid #eee;
		border-radius: 10rpx;
		border-shadow: 0 0 30rpx rgba(0, 0, 0, 0.2);

		.list {
			.row {
				display: flex;
				flex-direction: row;
				flex-wrap: nowrap;
				align-content: center;
				justify-content: space-between;
				align-items: center;
				padding: 0 30rpx;
				height: 100rpx;
				border-bottom: 1px solid #eee;
				position: relative;
				background: white;

				:last-child {
					border-bottom: 0;
				}

				.left {
					display: flex;
					flex-direction: row;
					flex-wrap: nowrap;
					align-content: center;
					align-items: center;

					.text {
						padding-left: 20rpx;
						color: #666
					}
				}

				.right {
					display: flex;
					flex-direction: row;
					flex-wrap: nowrap;
					align-content: center;
					align-items: center;

					.text {
						padding-left: 20rpx;
						color: #666
					}
				}

				button {
					position: absolute;
					top: 0%;
					left: 0%;
					height: 100%;
					width: 100%;
					opacity: 0
				}
			}
		}
	}
</style>

文件路径: E:/homework/uniappv3tswallpaper/pages/classlist/classlist.vue

接收新的参数,在获取列表信息的时候根据已有参数是 id 还是 type 来区分发起不同的请求。

<template>
	<view class="classlist">
		<view class="loadingLayout" v-if="!classList.length && !noData">
			<uni-load-more status="loading"></uni-load-more>
		</view>
		<view class="content">
			<navigator :url="'/pages/preview/preview?id='+item._id" class="item" v-for="item in classList"
				:key="item._id">
				<image :src="item.smallPicurl" mode="aspectFill"></image>
			</navigator>
		</view>
		<view class="loadingLayout" v-if="classList.length || noData">
			<uni-load-more :status="noData? 'nomre':'loading'"></uni-load-more>
		</view>
	</view>
</template>

<script setup>
	import {
		ref
	} from 'vue'
	import {
		apiGetCLassList,
		apiGetUserWallList
	} from '@/api/apis.js'
	import {
		onLoad,
		onUnload,
		onReachBottom,
		onShareAppMessage,
		onShareTimeline
	} from '@dcloudio/uni-app'

	const queryParams = {
		pageNum: 1,
		pageSize: 12
	}
	const noData = ref(false)

	onLoad(e => {
		// console.log(e)
		let {
			id = null, name = null, type = null
		} = e;
		uni.setNavigationBarTitle({
			title: name
		})
		queryParams.classid = id
		queryParams.type = type
		queryParams.name = name


		getClassList()

	})

	// 触底获取新数据
	onReachBottom(() => {
		if (noData.value) {
			return
		}
		queryParams.pageNum++
		getClassList()
	})

	// 定义列表参数
	const classList = ref([])

	// 发请求获取数据
	const getClassList = async () => {
		let res
		if (queryParams.classid) {
			res = await apiGetCLassList(queryParams)
			console.log(11)
		}
		if (queryParams.type) {
			res = await apiGetUserWallList(queryParams)
			console.log(22)
		}
		console.log(queryParams, res)

		classList.value = [...classList.value, ...res.data]
		uni.setStorageSync("storageClassList", classList.value)
		if (queryParams.pageSize > res.data.length) {
			noData.value = true
		}
	}

	// 分享给好友
	onShareAppMessage((e) => {
		return {
			title: "壁纸小程序-好友" + queryParams.name,
			path: "/pages/classlist/classlist?id=" + queryParams.classid + "&name=" + queryParams.name
		}
	})
	// 分享到朋友圈
	onShareTimeline(() => {
		return {
			title: "壁纸小程序-朋友圈" + queryParams.name,
			query: "id=" + queryParams.classid + "&name=" + queryParams.name
		}
	})

	// 离开页面
	onUnload(() => {
		uni.removeStorageSync("storageClassList")
	})
</script>

<style lang="scss">
	.classlist {
		.content {
			display: grid;
			grid-template-columns: repeat(3, 1fr);
			gap: 5px;
			padding: 5rpx;

			.item {
				height: 440rpx;
				width: 100%;

				image {
					height: 100%;
					width: 100%;
					display: block;
				}
			}
		}
	}
</style>

http://www.kler.cn/a/325881.html

相关文章:

  • Java-异步方法@Async+自定义分布式锁注解Redission例子
  • C++线程基础使用方法
  • 无人机在森林中的应用!
  • Java基础-集合
  • 【开源免费】基于SpringBoot+Vue.JS购物推荐网站(JAVA毕业设计)
  • 笔记|M芯片MAC (arm64) docker上使用 export / import / commit 构建amd64镜像
  • C++游戏开发详解:从入门到实践
  • 解决 Sqoop 导入 Hive 时时间字段精度丢失问题
  • 字母象形:十分有趣的单词扩展逻辑
  • Linux基础(四):文件权限与目录配置
  • vulhub Jboss 漏洞攻略
  • 华为OD真题机试-英文输入法(Java)
  • MySQL9个连接:left join、inner join等
  • RabbitMQ常用管理命令及管理后台
  • 深度学习推理的技术实现与优化策略
  • 达梦数据库导入导出统计信息
  • 【tower-boot 系列】开源RocketMQ和阿里云rockerMq 4.x和5.x集成 (一)
  • C#中实现压缩包(如ZIP)的解压功能
  • 源2.0全面适配百度PaddleNLP,大模型开发开箱即用
  • 弹射型蜂群巡飞无人机技术详解
  • 光电开关应用设计讨论
  • 0x09 瑞友 应用虚拟化系统 GetBSAppUrl SQL注入漏洞 - 复现
  • 【学习笔记】手写 Tomcat 七
  • MySQL 8 临时关闭缓存
  • 安卓主板_MTK4G/5G音视频记录仪整机及方案定制
  • Python酷库之旅-第三方库Pandas(127)