From df981c2f129e53ca94e445c09928c16d9db4de05 Mon Sep 17 00:00:00 2001
From: wangfukang <15630117759@163.com>
Date: Mon, 18 May 2026 17:08:55 +0800
Subject: [PATCH 1/2] 1
---
package1/ieBrowser/chat.vue | 574 ++++++--
package1/ieBrowser/chatList.vue | 340 ++---
package1/ieBrowser/companion.vue | 79 ++
package1/ieBrowser/fate.vue | 72 +
package1/ieBrowser/friends.vue | 437 ++++---
package1/ieBrowser/index.vue | 2096 ++++++++++++++++++++++++------
package1/ieBrowser/match.vue | 106 ++
package1/ieBrowser/matching.vue | 103 ++
package1/ieBrowser/messages.vue | 75 ++
package1/ieBrowser/mode.vue | 119 ++
package1/ieBrowser/settings.vue | 66 +
package1/ieBrowser/splash.vue | 54 +
package1/ieBrowser/universe.vue | 87 ++
13 files changed, 3337 insertions(+), 871 deletions(-)
create mode 100644 package1/ieBrowser/companion.vue
create mode 100644 package1/ieBrowser/fate.vue
create mode 100644 package1/ieBrowser/match.vue
create mode 100644 package1/ieBrowser/matching.vue
create mode 100644 package1/ieBrowser/messages.vue
create mode 100644 package1/ieBrowser/mode.vue
create mode 100644 package1/ieBrowser/settings.vue
create mode 100644 package1/ieBrowser/splash.vue
create mode 100644 package1/ieBrowser/universe.vue
diff --git a/package1/ieBrowser/chat.vue b/package1/ieBrowser/chat.vue
index 1f5a13f..a13bd3f 100644
--- a/package1/ieBrowser/chat.vue
+++ b/package1/ieBrowser/chat.vue
@@ -1,41 +1,74 @@
-
+
+
+
‹
-
- 奶茶研究员
- 同校 · 90% 匹配 · 在线
+
+ {{ companion.name }}
+ {{ roomModeText }} · {{ countdownText }} 后自然结束
- ···
+ ···
-
- 今日破冰问题
- 如果校园里突然多了一个隐藏副本,你希望它是什么?
+
+
+ FM
+
+ 深夜电台陪伴中
+ 你们已经安静陪伴了 {{ silentMinutes }} 分钟
+
+
+
+
+
+ 沉默陪伴模式
+ {{ companion.prompt }}
+
+ {{ countdownText }}
+
+
+
+
+ {{ item }}
+
+ 你们被放进同一个频道。不说话也算陪伴。
+ 对方删掉了一句话
- E
- 你好,你也是重度米线爱好者吗?
+ {{ companion.avatar }}
+ {{ companion.firstMessage }}
- 对啊!但我更想知道哪家汤底最稳。
+ 我在,刚好也想安静一会。
+ 对方正在犹豫输入
- E
- 那我们可以开一个“北门米线测评局”。
+ {{ companion.avatar }}
+ 那就不用急着聊,先一起待 15 分钟。
-
- 今晚 6 点?我可以带拍照技能。
+
+
+
+
+ {{ item }}
- +
-
- ☺
- 发送
+
+ 发送
+
+
+
+
+ 安全与退出
+ 举报不适内容
+ 拉黑这个对象
+ 提前结束陪伴
+
@@ -46,17 +79,117 @@
return {
menuButtonInfo: {
top: 24
+ },
+ roomMode: 'i',
+ secondsLeft: 15 * 60,
+ timer: null,
+ draft: '',
+ showSafety: false,
+ presenceActions: ['我在', '听着呢', '慢慢说', '抱一下空气'],
+ silentModes: ['一起听歌', '一起倒计时', '一起自习', '一起失眠'],
+ companions: {
+ i: {
+ name: '月台旁的影子',
+ avatar: '月',
+ prompt: '如果今晚可以把一个念头放在操场边,你想放什么?',
+ firstMessage: '我刚从图书馆出来,路上风有点凉。'
+ },
+ e: {
+ name: '便利店灯光',
+ avatar: '光',
+ prompt: '今晚聊一个不重要的小事,越轻越好。',
+ firstMessage: '我刚买了夜宵,突然很想知道大家今晚都在干嘛。'
+ }
}
}
},
- onLoad() {
+ computed: {
+ companion() {
+ return this.companions[this.roomMode] || this.companions.i
+ },
+ roomModeText() {
+ return this.roomMode === 'i' ? '安静陪伴' : '轻轻热闹'
+ },
+ silentMinutes() {
+ return Math.max(1, 15 - Math.ceil(this.secondsLeft / 60))
+ },
+ countdownText() {
+ const minutes = String(Math.floor(this.secondsLeft / 60)).padStart(2, '0')
+ const seconds = String(this.secondsLeft % 60).padStart(2, '0')
+ return `${minutes}:${seconds}`
+ }
+ },
+ onLoad(options) {
if (uni.getMenuButtonBoundingClientRect) {
this.menuButtonInfo = uni.getMenuButtonBoundingClientRect()
}
+ if (options && options.mode) {
+ this.roomMode = options.mode
+ }
+ this.startTimer()
+ },
+ onUnload() {
+ this.clearTimer()
},
methods: {
+ startTimer() {
+ this.clearTimer()
+ this.timer = setInterval(() => {
+ if (this.secondsLeft <= 0) {
+ this.finishRoom()
+ return
+ }
+ this.secondsLeft -= 1
+ }, 1000)
+ },
+ clearTimer() {
+ if (this.timer) {
+ clearInterval(this.timer)
+ this.timer = null
+ }
+ },
+ sendPresence(text) {
+ uni.showToast({
+ title: `已发送:${text}`,
+ icon: 'none'
+ })
+ },
+ sendMessage() {
+ if (!this.draft.trim()) {
+ uni.showToast({
+ title: '也可以先不说话',
+ icon: 'none'
+ })
+ return
+ }
+ this.draft = ''
+ uni.showToast({
+ title: '已轻轻送出',
+ icon: 'none'
+ })
+ },
+ report() {
+ this.showSafety = false
+ uni.showToast({
+ title: '已收到举报',
+ icon: 'none'
+ })
+ },
+ block() {
+ this.showSafety = false
+ uni.showToast({
+ title: '已拉黑',
+ icon: 'none'
+ })
+ },
+ finishRoom() {
+ this.clearTimer()
+ uni.redirectTo({
+ url: '/package1/ieBrowser/chatList'
+ })
+ },
back() {
- uni.navigateBack()
+ uni.redirectTo({ url: '/package1/ieBrowser/index' })
}
}
}
@@ -64,79 +197,256 @@
diff --git a/package1/ieBrowser/chatList.vue b/package1/ieBrowser/chatList.vue
index 65e4bc8..55e91f3 100644
--- a/package1/ieBrowser/chatList.vue
+++ b/package1/ieBrowser/chatList.vue
@@ -1,39 +1,47 @@
-
+
+
‹
- 聊天记录
- 同校
+ 感受记录
+ 仅自己可见
- 今天有 5 个新话题
- 别让有趣的人掉进已读不回
+ Tonight Archive
+ 今晚被轻轻接住了 2 次
+ 这里不保存完整聊天,只留下当时的情绪温度。
- 聊
+ 月
-
- 全部
- 找搭子
- 新朋友
+
+ 结束后,你现在感觉
+
+
+ {{ item }}
+
+
-
- {{ item.type.toUpperCase() }}
-
-
- {{ item.name }}
- {{ item.time }}
-
- {{ item.message }}
-
- {{ item.scene }}
- {{ item.status }}
+
+
+ {{ item.type }}
+
+ {{ item.name }}
+ {{ item.time }} · {{ item.duration }}
- {{ item.unread }}
+ {{ item.feeling }}
+
+ {{ tag }}
+
+
+
+
+ 不是消息列表,也不是社交关系。只是给夜晚留一点柔软的痕迹。
@@ -45,30 +53,29 @@
menuButtonInfo: {
top: 24
},
- chats: [{
- name: '橘子汽水',
- type: 'e',
- time: '刚刚',
- message: '北门那家米线你去过吗?我想找个试吃搭子',
- scene: '饭搭子',
- status: '正在输入',
- unread: 2
- }, {
- name: '凌晨两点半',
+ currentFeeling: '轻了一点',
+ feelings: ['轻了一点', '还是安静', '被听见了', '想睡了'],
+ records: [{
type: 'i',
- time: '14:20',
- message: '电影社今晚放映,可以一起坐后排安静看。',
- scene: '电影搭子',
- status: '同频 88%',
- unread: 0
+ name: '月台旁的影子',
+ time: '23:18',
+ duration: '15 分钟',
+ feeling: '对方没有催我讲话,沉默变得没那么尴尬。',
+ tags: ['安静陪伴', '想安静', '半匿名']
+ }, {
+ type: 'e',
+ name: '便利店灯光',
+ time: '21:42',
+ duration: '12 分钟',
+ feeling: '聊了一个很小的夜宵话题,心情被拉亮了一点。',
+ tags: ['轻轻热闹', '想说话', '限时']
}, {
- name: 'DChuo',
type: 'i',
+ name: '耳机里的风',
time: '昨天',
- message: '明天图书馆三楼还有位置吗?',
- scene: '自习搭子',
- status: '已互关',
- unread: 1
+ duration: '15 分钟',
+ feeling: '像有人坐在旁边,不需要解释为什么低落。',
+ tags: ['慢回复', '听着呢', '低压力']
}]
}
},
@@ -79,12 +86,7 @@
},
methods: {
back() {
- uni.navigateBack()
- },
- goChat() {
- uni.navigateTo({
- url: '/package1/ieBrowser/chat'
- })
+ uni.redirectTo({ url: '/package1/ieBrowser/index' })
}
}
}
@@ -92,26 +94,44 @@
diff --git a/package1/ieBrowser/companion.vue b/package1/ieBrowser/companion.vue
new file mode 100644
index 0000000..4bd3fec
--- /dev/null
+++ b/package1/ieBrowser/companion.vue
@@ -0,0 +1,79 @@
+
+
+
+
+ ‹
+ 人格卡
+
+
+ 半匿名陪伴对象
+
+ {{ companion.avatar }}
+ {{ companion.name }}
+ {{ companion.state }}
+ {{ companion.quote }}
+
+ {{ modeText }}
+ 限时 15 分钟
+ 不留完整记录
+
+
+
+ 轻轻划过
+ 进入陪伴房间
+
+
+
+
+
+
+
diff --git a/package1/ieBrowser/fate.vue b/package1/ieBrowser/fate.vue
new file mode 100644
index 0000000..206cd30
--- /dev/null
+++ b/package1/ieBrowser/fate.vue
@@ -0,0 +1,72 @@
+
+
+
+
+ ‹
+ 今日缘分
+
+
+
+ 今天的 3 次轻连接
+ 它们不会变成关系压力,只留下一点情绪轨迹。
+
+
+
+
+ {{ item.type }}
+
+
+ {{ item.name }}
+ {{ item.time }}
+
+ {{ item.feeling }}
+ 24 小时内可再遇见一次
+
+
+
+
+
+
+
+
+
diff --git a/package1/ieBrowser/friends.vue b/package1/ieBrowser/friends.vue
index 3868112..37adf0f 100644
--- a/package1/ieBrowser/friends.vue
+++ b/package1/ieBrowser/friends.vue
@@ -1,43 +1,57 @@
-
+
+
+
‹
- 好友列表
- +
+ 我的夜间档案
+ Safe
- 我的社交雷达
- 已连接 28 位同校同学,今天有 6 位正在找搭子
-
-
-
-
+ 夜
+ 半匿名漂流者
+ 不经营人设,不展示粉丝。这里只记录你更喜欢怎样被陪伴。
+
+
+ 3
+ 今日机会
+
+
+ 15m
+ 默认限时
+
+
+ 0
+ 公开资料
+
-
- 全部好友
- 饭搭子
- 学习搭子
+
+ 此刻偏好
+
+
+ {{ item.title }}
+ {{ item.desc }}
+
+
-
-
- {{ friend.type.toUpperCase() }}
-
-
-
-
- {{ friend.name }}
- {{ friend.type.toUpperCase() }}人
-
- {{ friend.status }}
-
- {{ tag }}
+
+ 安全设置
+
+
+ {{ item.title }}
+ {{ item.desc }}
+ ›
- 聊
+
+
+
+ 产品原则
+ {{ item }}
@@ -49,31 +63,35 @@
menuButtonInfo: {
top: 24
},
- friends: [{
- name: '橘子汽水',
- type: 'e',
- online: true,
- status: '正在寻找今晚饭搭子',
- tags: ['北门', '新店', '话题王']
+ preferences: [{
+ title: '更常选择 i',
+ desc: '安静、慢回复、允许沉默。'
}, {
- name: 'DChuo',
- type: 'i',
- online: true,
- status: '图书馆三楼自习中',
- tags: ['自习', '安静', '高匹配']
+ title: '夜间更活跃',
+ desc: '22:00 后更需要轻陪伴。'
}, {
- name: '奶茶研究员',
- type: 'e',
- online: false,
- status: '收藏了 12 家校园奶茶',
- tags: ['探店', '拍照', '奶茶']
+ title: '记录不留全文',
+ desc: '只保留情绪,不保存完整聊天。'
}, {
- name: '凌晨两点半',
- type: 'i',
- online: false,
- status: '想找一个电影搭子',
- tags: ['电影', '散步', '慢热']
- }]
+ title: '不开放主页',
+ desc: '没有访客、关注、粉丝和点赞。'
+ }],
+ settings: [{
+ title: '举报记录',
+ desc: '查看你提交过的安全反馈。'
+ }, {
+ title: '黑名单',
+ desc: '被拉黑对象不会再随机出现。'
+ }, {
+ title: '隐私说明',
+ desc: '半匿名资料和聊天保留规则。'
+ }],
+ principles: [
+ '不做好友列表,做轻关系保护。',
+ '不做动态广场,做当下状态入口。',
+ '不做颜值筛选,做半匿名陪伴。',
+ '不做无限聊天,做限时共处。'
+ ]
}
},
onLoad() {
@@ -82,13 +100,14 @@
}
},
methods: {
- back() {
- uni.navigateBack()
- },
- goChat() {
- uni.navigateTo({
- url: '/package1/ieBrowser/chat'
+ handleSetting(item) {
+ uni.showToast({
+ title: item.title,
+ icon: 'none'
})
+ },
+ back() {
+ uni.redirectTo({ url: '/package1/ieBrowser/index' })
}
}
}
@@ -96,26 +115,55 @@
diff --git a/package1/ieBrowser/index.vue b/package1/ieBrowser/index.vue
index 7bc4ffa..afc44ec 100644
--- a/package1/ieBrowser/index.vue
+++ b/package1/ieBrowser/index.vue
@@ -1,99 +1,100 @@
-
- ‹
- i/e 浏览器
- 好友
+
+
+
+
+
+ {{ timeLabel }}
+ 此刻有 {{ displayAwakeCount }} 个灵魂在线漂流。
+ {{ waitingCount }} 个人正在等一句话。
+
+
+ ◌
+
-
-
-
- Campus Social Lab
- 今天想做哪种人?
- 找饭搭子、学习搭子、散步搭子,也可以随机遇见一个有趣灵魂。
-
-
- I
- E
+
+
+
+
+
+ {{ item.text }}
+
+ 回复
+ 轻轻赞
-
-
- i 人频道
- 安静同频,慢热聊天
-
-
- e 人频道
- 快速组局,即刻开聊
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 有人也在等你
+ {{ currentMode === 'i' ? '安静靠近' : '轻轻热闹' }}
+
+
-
-
- 匹
- 90 秒匹配
- 随机遇见同校新朋友
-
-
- 聊
- 聊天记录
- 继续上次的话题
-
-
-
-
-
-
- 找搭子
- 按今天的心情,挑一个局
-
- 新鲜局
+
+
+ {{ displayMoodCopy }}
-
-
-
- {{ item.icon }}
- {{ item.name }}
- {{ item.count }} 人在线
+
+
+
+ {{ item.icon }}{{ item.label }}
+ {{ currentMode }} · {{ currentMode === 'i' ? '慢一点' : '亮一点' }}
-
-
-
- 可能同频的人
- 根据校园、兴趣和作息推荐
+
+
+ ⌛此刻
+ ⌁缘分
+ ◔消息
+ ♙我的
+
+
+
+
+
+ 半匿名漂流者
+ ×
- 好友列表
-
-
- {{ person.type.toUpperCase() }}
-
-
- {{ person.name }}
- {{ person.match }}% 匹配
-
-
- {{ tag }}
-
- {{ person.bio }}
+ {{ matchedPerson.avatar }}
+ {{ matchedPerson.name }}
+ {{ activeMood.label }} · {{ matchedPerson.state }}
+ {{ matchedPerson.quote }}
+
+ 轻轻划过
+ 进入限时陪伴
- 打招呼
-
-
- ×
- 有新朋友想和你打招呼!
- E
- 奶茶研究员
- 90%匹配 · 距离200m · 想找晚饭搭子
- 现在开聊
+
+
+ ◌
+ 半匿名漂流者
+ 今天更适合:{{ currentMode === 'i' ? '慢一点靠近' : '轻轻热闹一下' }}
+ 进入我的宇宙
@@ -103,448 +104,667 @@
export default {
data() {
return {
- menuButtonInfo: {
- top: 24
- },
- activeType: 'i',
+ menuButtonInfo: { top: 44 },
+ currentMood: 'quiet',
+ currentMode: 'i',
+ chancesLeft: 3,
showMatch: false,
- buddyTypes: [{
- name: '饭搭子',
- icon: '饭',
- count: 36
- }, {
- name: '自习搭子',
- icon: '习',
- count: 18
- }, {
- name: '夜跑搭子',
- icon: '跑',
- count: 12
- }, {
- name: '拍照搭子',
- icon: '拍',
- count: 9
- }],
- recommendList: [{
- name: 'DChuo',
- type: 'i',
- match: 94,
- tags: ['图书馆', '慢热', '周三有空'],
- bio: '想找一个不尬聊的自习搭子,互相监督就好。'
- }, {
- name: '橘子汽水',
- type: 'e',
- match: 91,
- tags: ['饭搭子', '新店探索', '话多'],
- bio: '今晚想试北门新开的米线,缺一个大胆试吃员。'
- }, {
- name: '凌晨两点半',
- type: 'i',
- match: 88,
- tags: ['电影', '散步', '同频'],
- bio: '喜欢听别人讲奇怪的小事,也会认真回复。'
- }]
+ now: new Date(),
+ awakeCount: 127,
+ displayAwakeCount: 0,
+ waitingCount: 49,
+ liveTimer: null,
+ countTimer: null,
+ showProfile: false,
+ activeDriftText: '',
+ displayMoodCopy: '对方没有催我讲话,沉默变得没那么尴尬。',
+ moodTypeTimer: null,
+ galaxyRotateX: -8,
+ galaxyRotateY: 18,
+ galaxyDragging: false,
+ galaxyMoved: false,
+ galaxyStartX: 0,
+ galaxyStartY: 0,
+ galaxyAutoAngle: 0,
+ galaxyTimer: null,
+ orbitPlanets: [
+ { name: 'mint', angle: 12, radiusX: 224, radiusY: 58, size: 18, speed: 1.05, color: 'rgba(169,255,231,.92)' },
+ { name: 'violet', angle: 86, radiusX: 190, radiusY: 92, size: 26, speed: .72, color: 'rgba(162,155,254,.86)' },
+ { name: 'peach', angle: 156, radiusX: 246, radiusY: 74, size: 15, speed: .9, color: 'rgba(255,184,209,.9)' },
+ { name: 'lemon', angle: 218, radiusX: 202, radiusY: 110, size: 12, speed: 1.22, color: 'rgba(255,226,139,.88)' },
+ { name: 'aqua', angle: 288, radiusX: 270, radiusY: 84, size: 22, speed: .62, color: 'rgba(132,233,255,.82)' },
+ { name: 'snow', angle: 332, radiusX: 166, radiusY: 48, size: 10, speed: 1.38, color: 'rgba(255,255,255,.95)' }
+ ],
+ matchText: "随机遇见一个人",
+ doneText: "今天先到这里",
+ moods: [{"key":"quiet","label":"想安静","icon":"◐","copy":"对方没有催我讲话,沉默变得没那么尴尬。"},{"key":"talk","label":"想说话","icon":"◒","copy":"聊了一个很小的日常话题,心情被拉亮了一点。"},{"key":"listen","label":"听着呢","icon":"◌","copy":"像有人坐在旁边,不需要解释为什么低落。"},{"key":"drift","label":"轻了一点","icon":"✦","copy":"只是给今天留一点柔软的痕迹。"}],
+ companions: {"i":[{"name":"树荫下的风","avatar":"风","state":"在校园里发呆","quote":"可以安静待 15 分钟,不用急着找话题。"},{"name":"耳机里的云","avatar":"云","state":"刚从教室出来","quote":"今天只想慢慢说两句。"}],"e":[{"name":"便利店灯光","avatar":"光","state":"想聊点不重要的","quote":"要不要交换一句今天最荒唐的小事?"},{"name":"操场散步员","avatar":"跑","state":"刚从操场回来","quote":"我可以负责开场,你负责随便接。"}]},
+ matchedPerson: {},
+ stateBubbles: [
+ { type: 'i', text: '有人刚下课,想安静走一会。', time: '2 分钟前' },
+ { type: 'e', text: '一个 e 人想聊 5 分钟废话。', time: '刚刚' },
+ { type: 'i', text: '图书馆三楼有人在发呆。', time: '8 分钟前' }
+ ],
+ quickSignals: [
+ { icon: '☁', text: '有点 emo', sub: '不想解释', mood: 'quiet' },
+ { icon: '✦', text: '太无聊了', sub: '想被拉一下', mood: 'talk' },
+ { icon: '◌', text: '只想旁听', sub: '听别人说说', mood: 'listen' }
+ ],
+ driftMessages: [
+ { type: 'i', mood: 'quiet', text: '东操现在风很舒服' },
+ { type: 'i', mood: 'listen', text: '有人在图书馆假装努力' },
+ { type: 'e', mood: 'talk', text: '谁愿意陪我散步 10 分钟' },
+ { type: 'i', mood: 'quiet', text: '刚刚有人有点低落' },
+ { type: 'e', mood: 'talk', text: '想听一个不重要的故事' },
+ { type: 'i', mood: 'drift', text: '走在路上突然有点空' }
+ ],
+ rules: [{"title":"半匿名","desc":"不展示学校、真实照片和复杂资料。"},{"title":"限时","desc":"房间自然结束,关系不会变成负担。"},{"title":"低压力","desc":"可以聊天,也可以只发一个“我在”。"}]
+ }
+ },
+ computed: {
+ activeMood() {
+ return this.moods.find(item => item.key === this.currentMood) || this.moods[0]
+ },
+ timeLabel() {
+ const hours = String(this.now.getHours()).padStart(2, '0')
+ const minutes = String(this.now.getMinutes()).padStart(2, '0')
+ return `${hours}:${minutes}`
+ },
+ galaxyStyle() {
+ return 'transform: translate(-50%, -50%);'
+ },
+ orbitPlanetStyles() {
+ return this.orbitPlanets.map((planet) => {
+ const angle = (planet.angle + this.galaxyRotateY + this.galaxyAutoAngle * planet.speed) * Math.PI / 180
+ const tilt = this.galaxyRotateX * Math.PI / 180
+ const depth = Math.sin(angle)
+ const x = Math.cos(angle) * planet.radiusX
+ const y = Math.sin(angle) * planet.radiusY * Math.cos(tilt) + Math.sin(tilt) * 20
+ const scale = 0.72 + (depth + 1) * 0.18
+ const opacity = 0.42 + (depth + 1) * 0.25
+ const blur = depth > 0 ? 0 : 1.2
+ const zIndex = Math.round(8 + (depth + 1) * 7)
+ return [
+ `width: ${planet.size}rpx`,
+ `height: ${planet.size}rpx`,
+ `background: ${planet.color}`,
+ `color: ${planet.color}`,
+ `opacity: ${opacity}`,
+ `z-index: ${zIndex}`,
+ `filter: blur(${blur}rpx)`,
+ `transform: translate(-50%, -50%) translate(${x}rpx, ${y}rpx) scale(${scale})`
+ ].join(';')
+ })
}
},
onLoad() {
if (uni.getMenuButtonBoundingClientRect) {
this.menuButtonInfo = uni.getMenuButtonBoundingClientRect()
}
+ this.pickCompanion()
+ this.animateAwakeCount(this.awakeCount)
+ this.liveTimer = setInterval(() => {
+ this.now = new Date()
+ this.awakeCount = 118 + Math.floor(Math.random() * 28)
+ this.waitingCount = 39 + Math.floor(Math.random() * 18)
+ this.animateAwakeCount(this.awakeCount)
+ }, 2600)
+ this.galaxyTimer = setInterval(() => {
+ this.galaxyAutoAngle = (this.galaxyAutoAngle + 1.2) % 360
+ }, 50)
+ this.displayMoodCopy = this.activeMood.copy
+ },
+ onUnload() {
+ if (this.liveTimer) {
+ clearInterval(this.liveTimer)
+ this.liveTimer = null
+ }
+ if (this.countTimer) {
+ clearInterval(this.countTimer)
+ this.countTimer = null
+ }
+ if (this.galaxyTimer) {
+ clearInterval(this.galaxyTimer)
+ this.galaxyTimer = null
+ }
+ if (this.moodTypeTimer) {
+ clearInterval(this.moodTypeTimer)
+ this.moodTypeTimer = null
+ }
},
methods: {
- back() {
- uni.navigateBack()
+ animateAwakeCount(target) {
+ if (this.countTimer) {
+ clearInterval(this.countTimer)
+ }
+ const start = this.displayAwakeCount
+ const diff = target - start
+ let step = 0
+ this.countTimer = setInterval(() => {
+ step += 1
+ const progress = Math.min(step / 18, 1)
+ const eased = 1 - Math.pow(1 - progress, 3)
+ this.displayAwakeCount = Math.round(start + diff * eased)
+ if (progress >= 1) {
+ clearInterval(this.countTimer)
+ this.countTimer = null
+ }
+ }, 24)
+ },
+ pickCompanion() {
+ const list = this.companions[this.currentMode]
+ this.matchedPerson = list[Math.floor(Math.random() * list.length)]
},
openMatch() {
+ if (this.chancesLeft === 0) {
+ uni.showToast({ title: this.doneText, icon: 'none' })
+ return
+ }
+ this.pickCompanion()
this.showMatch = true
},
- chooseBuddy(item) {
- uni.showToast({
- title: `已进入${item.name}`,
- icon: 'none'
- })
+ closeMatch() { this.showMatch = false },
+ toggleMode() {
+ this.currentMode = this.currentMode === 'i' ? 'e' : 'i'
+ },
+ changeMood(key) {
+ this.currentMood = key
+ this.playMoodCopy(this.activeMood.copy)
+ },
+ selectDrift(item) {
+ this.currentMood = item.mood
+ this.currentMode = item.type
+ this.playMoodCopy(this.activeMood.copy)
+ this.activeDriftText = this.activeDriftText === item.text ? '' : item.text
+ },
+ playMoodCopy(text) {
+ if (this.moodTypeTimer) {
+ clearInterval(this.moodTypeTimer)
+ this.moodTypeTimer = null
+ }
+ const chars = Array.from(text)
+ let index = 0
+ this.displayMoodCopy = ''
+ this.moodTypeTimer = setInterval(() => {
+ index += 1
+ this.displayMoodCopy = chars.slice(0, index).join('')
+ if (index >= chars.length) {
+ clearInterval(this.moodTypeTimer)
+ this.moodTypeTimer = null
+ }
+ }, 42)
+ },
+ replyDrift() {
+ uni.showToast({ title: '可以从一句话开始', icon: 'none' })
+ },
+ likeDrift() {
+ uni.showToast({ title: '已轻轻回应', icon: 'none' })
+ },
+ openProfile() {
+ this.openMatch()
+ },
+ closeProfile() {
+ this.showProfile = false
+ },
+ getGalaxyPoint(event) {
+ const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0])
+ if (!touch) return null
+ const x = touch.pageX !== undefined ? touch.pageX : touch.clientX
+ const y = touch.pageY !== undefined ? touch.pageY : touch.clientY
+ if (x === undefined || y === undefined) return null
+ return { x, y }
+ },
+ startGalaxyDrag(event) {
+ const point = this.getGalaxyPoint(event)
+ if (!point) return
+ this.galaxyDragging = true
+ this.galaxyMoved = false
+ this.galaxyStartX = point.x
+ this.galaxyStartY = point.y
+ },
+ moveGalaxyDrag(event) {
+ if (!this.galaxyDragging) return
+ const point = this.getGalaxyPoint(event)
+ if (!point) return
+ const deltaX = point.x - this.galaxyStartX
+ const deltaY = point.y - this.galaxyStartY
+ if (Math.abs(deltaX) + Math.abs(deltaY) > 4) {
+ this.galaxyMoved = true
+ }
+ this.galaxyRotateY = (this.galaxyRotateY + deltaX * 0.82) % 360
+ this.galaxyRotateX = Math.max(-48, Math.min(48, this.galaxyRotateX - deltaY * 0.28))
+ this.galaxyStartX = point.x
+ this.galaxyStartY = point.y
+ },
+ endGalaxyDrag() {
+ if (!this.galaxyDragging) return
+ this.galaxyDragging = false
+ if (!this.galaxyMoved) {
+ this.goMatch()
+ }
+ },
+ skipMatch() {
+ this.chancesLeft = Math.max(this.chancesLeft - 1, 0)
+ this.showMatch = false
+ uni.showToast({ title: "这次轻轻划过了", icon: 'none' })
},
goChat() {
- uni.navigateTo({
- url: '/package1/ieBrowser/chat'
- })
+ this.chancesLeft = Math.max(this.chancesLeft - 1, 0)
+ this.showMatch = false
+ uni.navigateTo({ url: '/package1/ieBrowser/chat?mode=' + this.currentMode + '&mood=' + this.currentMood })
},
- goChatList() {
- uni.navigateTo({
- url: '/package1/ieBrowser/chatList'
- })
+ goMatch() {
+ uni.navigateTo({ url: '/package1/ieBrowser/match?mode=' + this.currentMode + '&mood=' + this.currentMood })
},
- goFriends() {
- uni.navigateTo({
- url: '/package1/ieBrowser/friends'
- })
- }
+ goRecords() { uni.navigateTo({ url: '/package1/ieBrowser/chatList' }) },
+ goArchive() { uni.navigateTo({ url: '/package1/ieBrowser/universe' }) },
+ goFate() { uni.navigateTo({ url: '/package1/ieBrowser/fate' }) },
+ goMessages() { uni.navigateTo({ url: '/package1/ieBrowser/messages' }) },
+ goUniverse() { uni.navigateTo({ url: '/package1/ieBrowser/universe' }) }
}
}
diff --git a/package1/ieBrowser/match.vue b/package1/ieBrowser/match.vue
new file mode 100644
index 0000000..0e808b5
--- /dev/null
+++ b/package1/ieBrowser/match.vue
@@ -0,0 +1,106 @@
+
+
+
+
+ ‹
+ 随机匹配
+
+
+
+
+
+ {{ mode }}
+
+
+
+ 使用一次今日陪伴机会
+ 系统会根据你的此刻状态,随机靠近一个也想被轻轻陪伴的人。
+
+
+
+
+ 当前模式
+ {{ modeText }}
+
+
+ 剩余机会
+ 3/3
+
+
+
+ 开始调频
+ 不展示真实头像、距离和学校。连接只在限时房间里发生。
+
+
+
+
+
+
diff --git a/package1/ieBrowser/matching.vue b/package1/ieBrowser/matching.vue
new file mode 100644
index 0000000..d243e35
--- /dev/null
+++ b/package1/ieBrowser/matching.vue
@@ -0,0 +1,103 @@
+
+
+ ‹
+
+
+
+
+
+
+ 慢热
+ 失眠
+ 想散步
+ 靠近
+ 同频
+ {{ mode }}
+
+
+ 校园电波正在接近
+ {{ copyList[currentCopy] }}
+ 跳过动画
+
+
+
+
+
+
diff --git a/package1/ieBrowser/messages.vue b/package1/ieBrowser/messages.vue
new file mode 100644
index 0000000..46ccd77
--- /dev/null
+++ b/package1/ieBrowser/messages.vue
@@ -0,0 +1,75 @@
+
+
+
+
+ ‹
+ 消息
+
+
+
+ 消息
+ 这里不是聊天列表,只放未完成的陪伴。
+
+
+
+
+ 月台旁的影子
+ 限时房间还剩 08:32,可以继续回去待一会。
+
+ 进行中
+
+
+ {{ item.avatar }}
+
+ {{ item.name }}
+ {{ item.desc }}
+
+ 再遇见
+
+ 没有未完成的关系,也是一种轻松。
+
+
+
+
+
+
diff --git a/package1/ieBrowser/mode.vue b/package1/ieBrowser/mode.vue
new file mode 100644
index 0000000..8906fc0
--- /dev/null
+++ b/package1/ieBrowser/mode.vue
@@ -0,0 +1,119 @@
+
+
+
+
+ ‹
+ i/e 选择
+
+
+
+ Today Mode
+ 今天想以哪种方式被陪伴?
+ 这不是人格测试,只是此刻的社交能量。
+
+
+
+ i
+
+ 安静陪伴
+ 慢回复、少说话、允许沉默。像两个人坐在操场边。
+
+ 月光 / 耳机 / 图书馆
+
+
+
+ e
+
+ 轻轻热闹
+ 有人开场、聊点废话,把情绪拉亮一点。
+
+ 便利店 / 夜跑 / 随机话题
+
+
+ 进入此刻
+
+
+
+
+
+
diff --git a/package1/ieBrowser/settings.vue b/package1/ieBrowser/settings.vue
new file mode 100644
index 0000000..990a0d5
--- /dev/null
+++ b/package1/ieBrowser/settings.vue
@@ -0,0 +1,66 @@
+
+
+
+
+ ‹
+ 设置
+
+
+
+ {{ group.title }}
+
+
+ {{ item.name }}
+ {{ item.desc }}
+
+ ›
+
+
+
+
+
+
+
+
diff --git a/package1/ieBrowser/splash.vue b/package1/ieBrowser/splash.vue
new file mode 100644
index 0000000..fcc1bbe
--- /dev/null
+++ b/package1/ieBrowser/splash.vue
@@ -0,0 +1,54 @@
+
+
+
+ i/e Campus
+ 把此刻的频率,轻轻调近一点。
+ 已登录 · 轻触进入
+
+
+
+
+
+
diff --git a/package1/ieBrowser/universe.vue b/package1/ieBrowser/universe.vue
new file mode 100644
index 0000000..f864dab
--- /dev/null
+++ b/package1/ieBrowser/universe.vue
@@ -0,0 +1,87 @@
+
+
+
+
+ ‹
+ 我的宇宙
+
+
+
+ 夜
+ 半匿名漂流者
+ 不经营人设,不展示粉丝。这里只记录你更喜欢怎样被陪伴。
+
+
+ 3今日机会
+ 15m默认限时
+ i近期偏好
+
+
+ 情绪轨道
+
+ {{ item.day }}
+
+ {{ item.mood }}
+
+
+
+
+
+ 隐私与安全
+ 黑名单、举报记录、半匿名规则
+
+ ›
+
+
+
+
+
+
+
+
From 794aafae9dad0cc4fe2a3f97a3538158782c3cf1 Mon Sep 17 00:00:00 2001
From: wangfukang <15630117759@163.com>
Date: Mon, 18 May 2026 17:09:50 +0800
Subject: [PATCH 2/2] 1
---
pages/index/index.vue | 61 +++++++++++++++++++++++++++----------------
1 file changed, 39 insertions(+), 22 deletions(-)
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 21a2ca2..4d8f755 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1928,37 +1928,54 @@
.menu-box {
width: 95%;
- height: 200rpx;
+ height: 214rpx;
display: flex;
- align-items: center;
+ align-items: flex-end;
margin: 30rpx auto 0;
- padding: 12rpx 8rpx;
+ padding: 50rpx 8rpx 12rpx;
box-sizing: border-box;
border-radius: 38rpx;
border: 1px solid rgba(255, 255, 255, 0.9);
background:
- radial-gradient(circle at 12% 0%, rgba(255, 255, 255, 0.94) 0, rgba(255, 255, 255, 0) 160rpx),
- linear-gradient(135deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 250, 235, 0.9) 48%, rgba(239, 255, 248, 0.96) 100%);
+ radial-gradient(circle at 12% 0%, rgba(255, 255, 255, 0.94) 0, rgba(255, 255, 255, 0) 150rpx),
+ radial-gradient(circle at 92% 78%, rgba(88, 205, 122, 0.18) 0, rgba(88, 205, 122, 0) 170rpx),
+ linear-gradient(135deg, rgba(255, 255, 255, 0.96) 0%, rgba(244, 255, 241, 0.94) 50%, rgba(231, 255, 244, 0.96) 100%);
box-shadow: 0 20rpx 46rpx rgba(0, 35, 28, 0.075), inset 0 1rpx 0 rgba(255, 255, 255, 0.9);
position: relative;
z-index: 99;
overflow: hidden;
}
+ .menu-box::before {
+ content: '校园生活 · 一站搞定';
+ position: absolute;
+ left: 26rpx;
+ top: 17rpx;
+ color: #2c8b6f;
+ font-size: 22rpx;
+ font-weight: 900;
+ letter-spacing: 1rpx;
+ }
+
.menu-box::after {
- content: '';
- width: 280rpx;
- height: 160rpx;
- border-radius: 50%;
- background: linear-gradient(135deg, rgba(166, 255, 234, 0.18) 0%, rgba(166, 255, 234, 0) 74%);
+ content: '本周精选活动 >';
position: absolute;
- right: -150rpx;
- top: -92rpx;
+ right: 24rpx;
+ top: 16rpx;
+ height: 42rpx;
+ padding: 0 18rpx;
+ border-radius: 999rpx;
+ background: rgba(255, 255, 255, 0.76);
+ color: #1e6a58;
+ font-size: 22rpx;
+ font-weight: 900;
+ line-height: 42rpx;
+ box-shadow: 0 8rpx 18rpx rgba(0, 35, 28, 0.06);
}
.menu-list {
flex: 1;
- height: 100%;
+ height: 142rpx;
display: flex;
flex-direction: column;
align-items: center;
@@ -1977,8 +1994,8 @@
}
.menu-list img {
- width: 82rpx;
- height: 82rpx;
+ width: 76rpx;
+ height: 76rpx;
display: block;
margin: 0 auto;
position: relative;
@@ -2003,9 +2020,9 @@
.menu-name {
text-align: center;
- font-size: 22rpx;
+ font-size: 21rpx;
font-weight: 900;
- margin-top: 8rpx;
+ margin-top: 6rpx;
color: #183f36;
line-height: 28rpx;
position: relative;
@@ -2015,7 +2032,7 @@
}
.menu-desc {
- margin-top: 2rpx;
+ margin-top: 0;
color: rgba(18, 73, 63, 0.58);
font-size: 17rpx;
font-weight: 800;
@@ -2026,12 +2043,12 @@
}
.world-light {
- width: 104rpx;
- height: 104rpx;
+ width: 96rpx;
+ height: 96rpx;
position: absolute;
left: 50%;
- top: 18rpx;
- margin-left: -52rpx;
+ top: 10rpx;
+ margin-left: -48rpx;
border-radius: 50%;
background: radial-gradient(circle, rgba(166, 255, 234, 0.62) 0%, rgba(166, 255, 234, 0) 68%);
box-shadow: 0 0 24rpx rgba(166, 255, 234, 0.32);