2026-04-16 11:25:29 +08:00
|
|
|
Page({
|
|
|
|
|
data: {
|
2026-04-17 15:34:51 +08:00
|
|
|
keyword: '',
|
|
|
|
|
surname: '',
|
|
|
|
|
activeMode: 'baby',
|
|
|
|
|
isGenerating: false,
|
|
|
|
|
modes: [
|
|
|
|
|
{ key: 'baby', label: '宝宝' },
|
|
|
|
|
{ key: 'persona', label: '人设' },
|
|
|
|
|
{ key: 'classic', label: '拾遗' }
|
|
|
|
|
]
|
2026-04-16 11:25:29 +08:00
|
|
|
},
|
|
|
|
|
|
2026-04-18 16:56:31 +08:00
|
|
|
onLoad(options) {
|
2026-04-17 15:34:51 +08:00
|
|
|
// 页面加载时检查是否需要重置状态
|
2026-04-18 16:56:31 +08:00
|
|
|
// 处理从其他页面传入的参数
|
|
|
|
|
if (options.keyword) {
|
|
|
|
|
this.setData({
|
|
|
|
|
keyword: decodeURIComponent(options.keyword)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (options.mode) {
|
|
|
|
|
this.setData({
|
|
|
|
|
activeMode: options.mode
|
|
|
|
|
});
|
|
|
|
|
}
|
2026-04-17 15:34:51 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
onShow() {
|
|
|
|
|
// 每次显示页面时重置生成状态
|
|
|
|
|
this.setData({
|
|
|
|
|
isGenerating: false
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-18 16:56:31 +08:00
|
|
|
// 跳转到灵感广场
|
|
|
|
|
goToSquare() {
|
|
|
|
|
wx.navigateTo({
|
|
|
|
|
url: '/pages/square/square'
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-17 15:34:51 +08:00
|
|
|
// 选择模式
|
|
|
|
|
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
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-17 15:34:51 +08:00
|
|
|
// 开始生成(带水墨动画)
|
|
|
|
|
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({
|
2026-04-17 15:34:51 +08:00
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-17 15:34:51 +08:00
|
|
|
// 触发水墨动画
|
|
|
|
|
this.setData({
|
|
|
|
|
isGenerating: true
|
2026-04-16 11:25:29 +08:00
|
|
|
});
|
2026-04-17 15:34:51 +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)}`;
|
|
|
|
|
}
|
2026-04-18 16:56:31 +08:00
|
|
|
|
2026-04-17 15:34:51 +08:00
|
|
|
wx.navigateTo({
|
|
|
|
|
url: url
|
|
|
|
|
});
|
|
|
|
|
}, 1000);
|
2026-04-16 11:25:29 +08:00
|
|
|
}
|
2026-04-17 15:34:51 +08:00
|
|
|
});
|