交友盲盒完整版——详细源码分享

news2024/11/29 12:40:35

现在目前比较火热的一款app交友盲盒是通过uniapp+springboot技术来制作的,原理其实很简单,大家一看便知。

大家自行下载到手机里面去使用即可,不支持ios手机

演示地址:https://share.weiyun.com/l3ovztce

下面就是给大家分享源码了,实现原理就是前端像后端发请求拿到数据渲染页面就这么简单

首页页面: 

<template>
	<view class="content">
		<view class="top">
			<image src="../../static/bg.png" mode="widthFix"></image>
		</view>
		<view class="subject">
			<view class="left">
				<view class="imgman">
					<image src="../../static/man.png" mode=""></image>
				</view>
				<view class="chair">

				</view>
				<view class="man">
					男生盒子
				</view>
				<view class="enter" @click="enterman">
					放入男生纸条
				</view>
				<view class="out" @click="outman">
					取出男生纸条
				</view>
			</view>
			<view class="right">
				<view class="imgwuman">
					<image src="../../static/wuman.png" mode=""></image>
				</view>
				<view class="chair">

				</view>
				<view class="man">
					女生盒子
				</view>
				<view class="enter" @click="wumen">
					放入女生纸条
				</view>
				<view class="out" @click="outmen">
					取出女生纸条
				</view>
			</view>
		</view>
		<view class="sub">
			我的纸条
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: 'Hello'
			}
		},
		onLoad() {

		},
		methods: {
			wumen() {
				uni.navigateTo({
					url: "/pages/index/from/from"
				})
			},
			outmen() {
				uni.navigateTo({
					url: "/pages/index/from/from1"
				})
			},
			enterman() {
				uni.navigateTo({
					url: "/pages/index/from/from2"
				})
			},
			outman() {
				uni.navigateTo({
					url: "/pages/index/from/from3"
				})
			}
		}
	}
</script>

<style scoped lang="scss">
	.imgwuman {
		image {
			width: 800rpx;
			height: 800rpx;
		}

		position: absolute;
		top: -78%;
		left: -68%;
	}

	.imgman {
		image {
			width: 800rpx;
			height: 800rpx;
		}

		position: absolute;
		top: -78%;
		left: -65%;
	}

	.top {
		width: 100%;
		height: 300rpx;
		/* background-color: pink; */
		border-radius: 50rpx;
		box-sizing: border-box;
	}

	.top image {
		box-sizing: border-box;
		width: 100%;
		height: 100%;
	}

	.subject {
		height: 600rpx;
		margin-top: 10%;
		// background-color: aliceblue;
		display: flex;
		justify-content: center;
		align-items: center;
	}

	.subject .left {
		position: relative;
		width: 45%;
		height: 550rpx;
		background-color: #119DFC;
		margin-right: 30rpx;
	}

	.subject .left {
		border-radius: 20rpx;

		.chair {
			width: 200rpx;
			height: 30rpx;
			border-radius: 50rpx;
			background-color: #fff;
			margin: 50rpx auto;
		}

		.man {
			font-size: 50rpx;
			font-family: "宋体";
			text-align: center;
			color: #fff;
		}
	}

	.subject .right {
		position: relative;
		border-radius: 20rpx;
		width: 45%;
		height: 550rpx;
		background-color: #FF538F;
	}

	.subject .right {
		border-radius: 20rpx;

		.chair {
			width: 200rpx;
			height: 30rpx;
			border-radius: 50rpx;
			background-color: #fff;
			margin: 50rpx auto;
		}

		.man {
			font-size: 50rpx;
			font-family: "宋体";
			text-align: center;
			color: #fff;
		}
	}

	.enter,
	.out {
		position: relative;
		z-index: 9;
		width: 300rpx;
		height: 100rpx;
		background-color: #000;
		color: #fff;
		text-align: center;
		border-radius: 15rpx;
		margin: 0 auto;
		margin-top: 18%;
		line-height: 100rpx;
	}

	.sub {
		width: 90%;
		height: 100rpx;
		background-color: #FA91A8;
		margin: 0 auto;
		margin-top: 5%;
		border-radius: 50rpx;
		text-align: center;
		line-height: 100rpx;
	}
</style>

男生放入卡片页面:

<template>
	<view class="">
		<u-form :model="form" ref="uForm">
			<u-form-item label="姓名" prop="name">
				<u-input v-model="form.name" />
			</u-form-item>
			<u-form-item label="QQ号" prop="num">
				<u-input v-model="form.num" />
			</u-form-item>
			<u-form-item label="微信" prop="intro">
				<u-input v-model="form.intro" />
			</u-form-item>
			<u-form-item label="手机" prop="phone">
				<u-input v-model="form.phone" />
			</u-form-item>
		</u-form>
		<u-button @click="submit">提交</u-button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				form: {
					name: '',
					intro: '',
					num: '',
					phone: ''
				},
				rules: {
					name: [{
						required: true,
						message: '请输入姓名',
						// 可以单个或者同时写两个触发验证方式 
						trigger: ['change', 'blur'],
					}],
					num: [{
							required: true,
							message: '请输入QQ号',
							trigger: ['change', 'blur']
						},
						{
							type: 'number',
							message: 'QQ号必须为数字',
							trigger: ['change']
						},
						{

						}
					],
					intro: [{

					}]
				}
			};
		},
		methods: {
			submit() {
				let that = this;
				this.$refs.uForm.validate(valid => {
					if (valid) {
						console.log('验证通过');
						uni.request({
							url: "http://8.130.120.38:5531/girl/add",
							method: 'POST',
							data: {
								name: that.form.name,
								qq: that.form.num,
								weixi: that.form.intro,
								phone: that.form.phone,
							},
							success: (res => {
								if (res.data.data == "添加成功") {
									uni.showToast({
										title: '添加成功',
										mask: true
									});
									that.form.name = '';
									that.form.num = '';
									that.form.intro = '';
									that.form.phone = '';
									setTimeout(() => {
										uni.switchTab({
											url: '/pages/index/index'
										});
									}, 1500);

								}
								console.log(res);
							})
						})
					} else {
						console.log('验证失败');
					}
				});
			}
		},
		// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
		onReady() {
			this.$refs.uForm.setRules(this.rules);
		}
	};
</script>

男生取出卡片页面:

<template>
	<view class="">
		<u-form :model="form" ref="uForm">
			<u-form-item label="姓名" prop="name">
				<u-input v-model="form.name" />
			</u-form-item>
			<u-form-item label="QQ号" prop="num">
				<u-input v-model="form.num" />
			</u-form-item>
			<u-form-item label="微信" prop="intro">
				<u-input v-model="form.intro" />
			</u-form-item>
			<u-form-item label="手机" prop="phone">
				<u-input v-model="form.phone" />
			</u-form-item>
		</u-form>
		<u-button @click="submit">提交</u-button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				form: {
					name: '',
					intro: '',
					num: '',
					phone: ''
				},
				rules: {
					name: [{
						required: true,
						message: '请输入姓名',
						// 可以单个或者同时写两个触发验证方式 
						trigger: ['change', 'blur'],
					}],
					num: [{
							required: true,
							message: '请输入QQ号',
							trigger: ['change', 'blur']
						},
						{
							type: 'number',
							message: 'QQ号必须为数字',
							trigger: ['change']
						},

					],
					intro: [{

					}]
				}
			};
		},
		methods: {
			submit() {
				let that = this;
				this.$refs.uForm.validate(valid => {
					if (valid) {
						console.log('验证通过');
						uni.request({
							url: "http://8.130.120.38:5531/man/add",
							method: 'POST',
							data: {
								name: that.form.name,
								qq: that.form.num,
								weixi: that.form.intro,
								phone: that.form.phone,
							},
							success: (res => {
								if (res.data.data == "添加成功") {
									uni.showToast({
										title: '添加成功',
										mask: true
									});
									that.form.name = '';
									that.form.num = '';
									that.form.intro = '';
									that.form.phone = '';
									setTimeout(() => {
										uni.switchTab({
											url: '/pages/index/index'
										});
									}, 1500);
								}
								console.log(res);
							})
						})
					} else {
						console.log('验证失败');
					}
				});
			}
		},
		// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
		onReady() {
			this.$refs.uForm.setRules(this.rules);
		}
	};
</script>

女生的取出和放入都是和男生一样的

pages.json页面设置:

{
	// pages.json
	"easycom": {
		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
	},
	// "easycom": {
	// 	"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue",
	// 	"autoscan": true,
	// 	"custom": {
	// 		"^uni-(.*)": "@/components/uni-$1.vue", // 匹配components目录内的vue文件
	// 		"^vue-file-(.*)": "packageName/path/to/vue-file-$1.vue" // 匹配node_modules内的vue文件
	// 	}
	// },
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "交友盲盒"
			}
		}, {
			"path": "pages/mine/mine",
			"style": {
				"navigationBarTitleText": "个人信息",
				"enablePullDownRefresh": false
			}

		}, {
			"path": "pages/index/from/from",
			"style": {
				"navigationBarTitleText": "放入女生纸条",
				"enablePullDownRefresh": false
			}
		},
		{
			"path": "pages/index/from/from1",
			"style": {
				"navigationBarTitleText": "取出女生纸条",
				"enablePullDownRefresh": false
			}
		},
		{
			"path": "pages/index/from/from2",
			"style": {
				"navigationBarTitleText": "放入男生纸条",
				"enablePullDownRefresh": false
			}
		},
		{
			"path": "pages/index/from/from3",
			"style": {
				"navigationBarTitleText": "取出男生纸条",
				"enablePullDownRefresh": false
			}
		},
		{
			"path": "pages/getcode/getcode",
			"style": {
				"navigationBarTitleText": "取出男生信息",
				"enablePullDownRefresh": false
			}
		},
		{
			"path": "pages/getcode/getcodenv",
			"style": {
				"navigationBarTitleText": "取出女生信息",
				"enablePullDownRefresh": false
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	},
	"uniIdRouter": {},
	"tabBar": {
		"selectedColor": "#F394AA",
		"list": [{
				"text": "首页",
				"pagePath": "pages/index/index",
				"iconPath": "static/sy.png",
				"selectedIconPath": "static/syxz.png"

			},
			{
				"text": "我的",
				"pagePath": "pages/mine/mine",
				"iconPath": "static/wd.png",
				"selectedIconPath": "static/w.png"
			}
		]
	}
}

注意:代码里面使用了uview-ui框架,大家需要自己引入自己的项目哦,传送教程:https://xuqu.gitee.io/components/downloadSetting.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/991967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Maloja创建音乐收听统计数据

什么是 Maloja &#xff1f; Maloja 是简单的自托管音乐记录数据库&#xff0c;用于创建个人收听统计数据。没有推荐&#xff0c;没有社交网络&#xff0c;没有废话。Maloja 是一个跟踪您一段时间内的收听习惯的工具。 官方演示站点&#xff1a;https://maloja.krateng.ch/ 导出…

一路风景一路歌 森海塞尔MKE 200为你记录City Walk的美妙旋律

“想要切身融入并感受一个地方的生活&#xff0c;不去当地街头溜达溜达怎么行&#xff1f;”一位City Walk Vlogger这样说。 City Walk可谓是时下最潮的生活方式之一了。不仅越来越多的游客开始穿梭于城市街巷&#xff0c;探寻饱含记忆的老建筑、老街区&#xff0c;从另一种角度…

Smallest number(dfs全排列)

Smallest number - 洛谷 #include<bits/stdc.h> #define int long long using namespace std; int a[10]; string s[5]; bool vis[10]; int ans1e13;//0x3f1e9&#xff0c;所有有点不够 void dfs(int u) { // for(int i0;i<4;i) // { // printf("%d…

Arouter配置指南

Arouter实现了大型App之间的轻耦合&#xff0c;降低代码的复杂度&#xff0c;易维护。如果不使用Arouter那么项目之前的关系可能是如下&#xff1a;底层模块间相互耦合&#xff0c;工程代码复杂度高&#xff0c;不便于管理。 Arouter 引入Arouter后希望底层模块间轻耦合&…

海南开放大学——助力学习之路的智慧导航

在信息时代的今天&#xff0c;我们面临着大量的学习资源和知识碎片化的挑战。而面对这一挑战&#xff0c;海南开放大学&#xff08;广播电视大学&#xff09;以其先进的教育理念和创新的学习方式&#xff0c;为学习者提供了一个独特的学习平台&#xff0c;开启了智慧导航的学习…

10路混音播放芯片,AD按键可扩展,IO口资源丰富,WTR096A-16S

随着科技的不断进步&#xff0c;我们的生活中对于音频体验的需求也在日益增加。无论是玩具、娱乐设备还是智能家居产品&#xff0c;都需要高性能、多功能的混音播放芯片来提供卓越的音频处理和控制能力。正是在这个背景下&#xff0c;我们引入了全新的WTR096A-16S混音芯片&…

房贷利率下调一言难尽

号外&#xff1a;9.7教链内参《摩根大通研究称BTC生产成本约为1.8w刀》。 一大清早&#xff0c;打开手机&#xff0c;就收到了新华社的推送&#xff0c;说是工农中建四大行7号发了公告&#xff0c;明确了存量首套住房贷款调整的事。&#xff08;新华社2023.9.8《四家银行发布公…

【新版】系统架构设计师 - 案例分析 - 总览

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 架构 - 案例分析 - 总览 新旧大纲对应 旧版新版系统规划软件架构设计设计模式系统设计系统建模分布式系统设计嵌入式系统设计系统的可靠性分析与设计系统的安全性和保密性设计系统计划信息系统架构的设计理论和实…

【观察】全栈智能:破解AI落地“最后一公里”难题

《系统论》认为&#xff1a;系统是由一些相互关联、相互作用、相互影响的组织部分构成并具有某些功能的整体。从系统的角度来看&#xff0c;如果把系统分解为部分&#xff0c;单独研究一个部分&#xff0c;就算把每个部分都研究清楚了&#xff0c;也回答不了系统整体性问题。 事…

C# 共享项目的应用

概述 共享项目也可以称为共享资产项目,它允许在多个目标项目之间共享的代码。 它支持编译器指令,可以有条件地包含特定于平台的代码,以便编译为引用共享项目的项目的子集。 还有 IDE 支持,可帮助管理编译器指令并直观显示代码在每个应用程序中的外观。 什么是共享项目? …

flink的物理DataFlow图及Slot处理槽任务分配

背景 在flink中&#xff0c;有几个比较重要的概念&#xff0c;逻辑DataFlow图&#xff0c;物理DataFlow图以及处理槽执行任务&#xff0c;本文就来讲解下这几个概念 概念详解 假设有以下代码&#xff1a;数据源和统计单词算子的并行度是2&#xff0c;数据汇算子的并行度是1&…

新知同享|Cloud 开发加速创新,更加安全

谷歌在云平台中深度集成了生成式 AI 功能 帮助出海企业及开发者 轻松借力 AI 推动和实现创新 一起来看 2023 Google 开发者大会上 Google Cloud 如何加速创新&#xff0c;加强信息安全 关注 Google Cloud 的 3 个 AI 重点发展领域 了解生成式 AI 功能如何助推创意落地 精彩大会…

【动手学深度学习】--循环神经网络

文章目录 循环神经网络1.算法介绍1.1无隐状态的神经网络(多层感知机)1.2有隐状态的循环神经网络1.3基于循环神经网络的字符级语言模型1.4困惑度 2.RNN从零开始实现2.1读取数据集2.2独热编码2.3初始化模型参数2.4循环神经网络模型2.5预测2.6梯度裁剪2.7训练 3.RNN简洁实现3.1读取…

嵌入式学习笔记(21)S5PV210的时钟域详解

时钟域&#xff1a;MSYS、DSYS、PSYS 因S5PV210的时钟体系比较复杂&#xff0c;内部外设模块太多&#xff0c;因此把整个内部的时钟划分为3大块&#xff0c;叫做3个域。之所以分为3个域&#xff0c;是因为210内部的这些模块彼此工作时钟频率差异太大了&#xff0c;所以又必要把…

【力扣每日一题】2023.9.9 课程表

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一些课程的先修关系&#xff0c;也就是有些课我们需要先去学其他的课程才能学习&#xff0c;问我们是否可以学习完所有的课程。…

中科驭数携DPU系列创新产品亮相2023服贸会

9月2日至6日&#xff0c;由商务部、北京市政府主办的2023年中国国际服务贸易交易会&#xff08;简称“服贸会”&#xff09;在北京举行。在电信、计算机和信息服务专题展馆&#xff0c;中科驭数等一批国家专精特新“小巨人”携最新数据处理器DPU亮相&#xff0c;展示了多项创新…

PaddleOCR学习笔记3-通用识别服务

今天优化了下之前的初步识别服务的python代码和html代码。 采用flask paddleocr bootstrap快速搭建OCR识别服务。 代码结构如下&#xff1a; 模板页面代码文件如下&#xff1a; upload.html : <!DOCTYPE html> <html> <meta charset"utf-8"> …

Linux命令200例:free用来显示系统内存使用情况

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

通达信自定义副图换手率指标 HSL_QD

LB:VOL/((REF(VOL,1)REF(VOL,2)REF(VOL,3)REF(VOL,4)REF(VOL,5))/5); DRAWBAND(25,RGB(0,0,0),IF((20MA(LB,5)*5)<40,20MA(LB,5)*5,40),RGB(205,205,0));{量比均线}{DRAWBAND(0,RGB(66,66,66),10,RGB(66,66,66))}; {DRAWBAND(10,RGB(66,66,66),MA(IF((100*VOL/CAPITAL3)<…

【数据结构--二叉树】平衡二叉树

题目描述&#xff1a; 代码实现&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ int TreeHeight(struct TreeNode* root) {if(rootNULL)return 0;//左右子树中大的…