Files
JianSu-Naming/miniprogram/pages/home/home.js

117 lines
2.3 KiB
JavaScript
Raw Normal View History

2026-04-16 11:25:29 +08:00
Page({
data: {
keyword: '',
surname: '',
activeMode: 'baby',
isGenerating: false,
modes: [
{ key: 'baby', label: '宝宝' },
{ key: 'persona', label: '人设' },
{ key: 'classic', label: '拾遗' }
]
2026-04-16 11:25:29 +08:00
},
onLoad(options) {
// 页面加载时检查是否需要重置状态
// 处理从其他页面传入的参数
if (options.keyword) {
this.setData({
keyword: decodeURIComponent(options.keyword)
});
}
if (options.mode) {
this.setData({
activeMode: options.mode
});
}
},
onShow() {
// 每次显示页面时重置生成状态
this.setData({
isGenerating: false
});
},
// 跳转到灵感广场
goToSquare() {
wx.navigateTo({
url: '/pages/square/square'
});
},
// 选择模式
selectMode(e) {
const mode = e.currentTarget.dataset.mode;
this.setData({
activeMode: mode
});
},
// 姓氏输入
onSurnameInput(e) {
this.setData({
surname: e.detail.value
});
},
// 关键词输入
2026-04-16 11:25:29 +08:00
onInput(e) {
this.setData({
keyword: e.detail.value
});
},
// 开始生成(带水墨动画)
startGenerate() {
const { keyword, surname, activeMode } = this.data;
// 非空校验
if (!keyword.trim()) {
const placeholderMap = {
'baby': '请输入期待',
'persona': '请输入人设',
'classic': '请输入关键词'
};
2026-04-16 11:25:29 +08:00
wx.showToast({
title: placeholderMap[activeMode] || '请输入内容',
icon: 'none'
});
return;
}
// 宝宝模式需要姓氏
if (activeMode === 'baby' && !surname.trim()) {
wx.showToast({
title: '请输入姓氏',
2026-04-16 11:25:29 +08:00
icon: 'none'
});
return;
}
// 触发水墨动画
this.setData({
isGenerating: true
2026-04-16 11:25:29 +08:00
});
// 播放水滴声
getApp().playAudio('inkDrop');
// 触觉反馈
wx.vibrateShort({ type: 'light' });
// 延迟 1000ms 后跳转,确保仪式感完整
setTimeout(() => {
// 构建跳转 URL
let url = `/pages/index/index?keyword=${encodeURIComponent(keyword)}&mode=${activeMode}`;
if (activeMode === 'baby' && surname) {
url += `&surname=${encodeURIComponent(surname)}`;
}
wx.navigateTo({
url: url
});
}, 1000);
2026-04-16 11:25:29 +08:00
}
});