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

2023-11-18

现在目前比较火热的一款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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

交友盲盒完整版——详细源码分享 的相关文章

随机推荐

  • BUUCTF--[第二章 web进阶]死亡ping命令

    BUUCTF 第二章 web进阶 死亡ping命令 本文只是对官方wp进行了一点修改 因为在测试过程中发现8080端口弹不回flag 在本地测试也是一样的结果 但是把端口修改成8089 其他端口应该也可以 并且nc监听方式为 nc lvp
  • C++ 之 常量成员函数

    常量成员函数 const member function 可读取类中的数据成员 但不能修改 1 声明 1 1 const 关键字 参数列表后 加 const 关键字 声明为常量成员函数 表明其不被允许修改类的数据成员 下面的类 以年 月 日
  • 【技术经验分享】计算机毕业设计Python+SparkML知识图谱新闻推荐系统 新闻数据分析 新闻爬虫 新闻大数据 新闻可视化 大数据毕业设计 大数据毕设 机器学习 深度学习

    开发技术 Python爬虫 springboot vue js SparkML SparkALS 机器学习 深度学习 协同过滤算法 说明 后端使用SpringBoot Mybatis Plus框架 前端使用Vue js Element Pl
  • Element UI 框架中Loading 区域加载的使用方法

    给自己打个小广告 有开发APP 小程序 网站 后台系统需求 或者 想学习前端的可以私信我哈 Loading 加载用于加载数据时显示动效 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img MgPFZSRk 16602
  • 怎样提升Java水平

    怎样提升Java水平 想更快更好地提高你的Java编程水平 除了在日常工作中积累经验外 你还可以在空闲时间通过学习来提高你的技术技能 首先Java 理论基础不会太差 一个Java基础理论知识都很差的Java程序员 那么你期望他的Java代码
  • docker安装rocketmq4.6.1(精简版)

    一 创建文件 mkdir p usr local rocketmq server logs usr local rocketmq server store usr local rocketmq broker logs usr local r
  • 黑白色老照片一键上色在线工具,让老照片漂亮起来

    每个人家中多少都有一些老旧的黑白照 或是当初拍照时只有拍黑白 跟彩色照片比虽然别有一番风味 但有时候还是会想看如果是彩色不知道会变怎样 会不会更好看 而这款 线上工具就能帮你实现 只要把你的黑白照上传 它就会透过 AI 技术自动帮你上色 我
  • idea中相同包不聚合

    idea中创建子包不折叠 项目场景 问题描述 原因分析 解决方案 项目场景 提示 idea使用中出现的问题 突然发现相同包不能聚合了 问题描述 提示 相同包不能聚合 突然出现很多路径相同的很多包下的文件 原因分析 提示 不小心将设置动了 解
  • 95-38-055-Buffer-UnpooledDirectByteBuf

    文章目录 1 总述 1 1 局部图 1 2 概述 1 总述 1 1 局部图 1 2 概述 Netty的UnpooledDirectByteBuf在NIO的DirectByteBuf上采用组合的方式进行了封装 屏蔽了对程序员不友好的地方 并使
  • 如何使用js创建一个构造函数及重写toString的方法

    在js中使用function可以创建一个函数 也可用创建一个构造函数 这个构造函数可用于实例化对象 代码如下
  • 解析Java-throw抛出异常详细过程

    首先 我们知道Java有3种抛出异常的形式 throw 执行的时候一定抛出某种异常对象 throws 出现异常的可能性 不一定会发生 系统自动抛出异常 throw用在一个语句抛出异常的时候 throw an instance of exce
  • MySQL最常用的二种存储引擎MyISAM和InnoDB的介绍

    1 MyISAM 默认表类型 它是基于传统的ISAM类型 ISAM是Indexed Sequential Access Method 有索引的顺序访问方法 的缩写 它是存储记录和文件的标准方法 不是事务安全的 而且不支持外键 如果执行大量的
  • 轻松拿结果-第二部分 同力 -第五章 用制度保障业绩

    第五章 用制度保障业绩 制度的保障 体现的是管理者的监管能力 也是守护胜利果实的有力保障 只有铁的纪律 才能拿到铁的结果 商场如战场 在公司您们就是带兵打仗的将军 有一个销售员踢球时伤到了腿 在他休息的两个月里 业绩却没有落下一点 都是整个
  • html5 悬停边框,Html,css:在悬停时更改行的边框颜色(Html,css: Change a row's border colow on hover)...

    Html css 在悬停时更改行的边框颜色 Html css Change a row s border colow on hover 我正在使用DataTables 我试图在行悬停时将行的顶部和底部边框更改为红色 以下没有改变颜色 tab
  • 消息的顺序消费

    首先 需要保证顺序的消息要发送到同一个messagequeue中 其次 一个messagequeue只能被一个消费者消费 这点是由消息队列的分配机制来保证的 最后 一个消费者内部对一个mq的消费要保证是有序的 我们要做到生产者 messag
  • 强化学习笔记(5)-回合策略梯度算法

    以下为阅读 强化学习 原理与python实现 这本书第七章的学习笔记 在之前学习到的强度学习方法中 都是通过学习最优价值函数来获得最优策略 现在换一个角度来思考 我们可以通过用含参函数来近似最优策略 并在迭代中更新参数值 这就是策略梯度算法
  • C#、C++、Java、Python选择哪个好?

    一个好的程序员不能把自己绑定在一种语言上 不能把自己就定义为JAVA程序员 C 程序员 等等 语言没有高下之分 只有适用的场景 好的程序员 应该有很快学会一种新的语言 并解决实际问题的能力 在我二十年的程序生涯中 有过不止一次 因为项目 一
  • Oracle服务器性能全面调整攻略

    Oracle服务器性能全面调整攻略 Oracle服务器是高度可调的数据库系统 它提供了许多特性 正确地设置和调整可以有效提高系统性能 因此 对系统进行调整是数据库管理员的主要责任 由于应用设计人员很少或根本不会给数据库管理人员提供必要的信息
  • flink学习42:tableAPI的join、union、排序、插入操作

    连接 内连接 外连接 集合操作 union 获取交集 获取差集 in 操作 排序操作 插入操作
  • 交友盲盒完整版——详细源码分享

    现在目前比较火热的一款app交友盲盒是通过uniapp springboot技术来制作的 原理其实很简单 大家一看便知 大家自行下载到手机里面去使用即可 不支持ios手机 演示地址 https share weiyun com l3ovzt