feat: 完善见素起名小程序功能
- 添加收藏锦囊功能,支持查看和删除收藏 - 实现积分系统,每日赠送5次灵感次数 - 添加静心阅读功能,阅读15秒可获得额外次数 - 实现灵感广场,展示用户分享的名字 - 添加字源溯源组件,长按汉字查看详情 - 优化空状态和结语卡片样式统一 - 添加音频控制(静音/风铃/雨落/古琴/白噪音/森林/溪流) - 优化名字生成逻辑,确保每次返回5个不重复名字 - 修复卡片翻转样式问题 - 移除首页动态提醒气泡
This commit is contained in:
108
miniprogram/components/charDetail/charDetail.js
Normal file
108
miniprogram/components/charDetail/charDetail.js
Normal file
@@ -0,0 +1,108 @@
|
||||
// 字源溯源弹窗组件
|
||||
Component({
|
||||
properties: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
value: false
|
||||
},
|
||||
char: {
|
||||
type: String,
|
||||
value: ''
|
||||
}
|
||||
},
|
||||
|
||||
data: {
|
||||
pinyin: '',
|
||||
radical: '',
|
||||
strokes: '',
|
||||
wuxing: '',
|
||||
meaning: '',
|
||||
imagery: '',
|
||||
poetry: '',
|
||||
loading: false
|
||||
},
|
||||
|
||||
observers: {
|
||||
'visible, char': function(visible, char) {
|
||||
if (visible && char) {
|
||||
this.loadCharDetail(char);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 加载汉字详情
|
||||
loadCharDetail(char) {
|
||||
this.setData({ loading: true });
|
||||
|
||||
// 先从本地缓存查找
|
||||
const cache = wx.getStorageSync(`char_${char}`);
|
||||
if (cache) {
|
||||
this.setData({ ...cache, loading: false });
|
||||
return;
|
||||
}
|
||||
|
||||
// 调用后端接口获取
|
||||
const apiBaseUrl = getApp().globalData.apiBaseUrl;
|
||||
wx.request({
|
||||
url: `${apiBaseUrl}/api/char/detail`,
|
||||
data: { char },
|
||||
success: (res) => {
|
||||
if (res.data && res.data.success) {
|
||||
const data = res.data.data;
|
||||
this.setData({ ...data, loading: false });
|
||||
// 缓存结果
|
||||
wx.setStorageSync(`char_${char}`, data);
|
||||
} else {
|
||||
// 使用默认数据
|
||||
this.setDefaultData(char);
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
this.setDefaultData(char);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 设置默认数据
|
||||
setDefaultData(char) {
|
||||
// 简单的拼音映射(实际应该从后端获取)
|
||||
const pinyinMap = {
|
||||
'兰': 'lán', '泽': 'zé', '芳': 'fāng', '风': 'fēng',
|
||||
'墨': 'mò', '染': 'rǎn', '清': 'qīng', '欢': 'huān',
|
||||
'素': 'sù', '简': 'jiǎn', '雅': 'yǎ', '致': 'zhì'
|
||||
};
|
||||
|
||||
this.setData({
|
||||
pinyin: pinyinMap[char] || '',
|
||||
radical: '',
|
||||
strokes: '',
|
||||
wuxing: '',
|
||||
meaning: '暂无详细解析,点击"问问 AI"获取深度分析',
|
||||
imagery: '',
|
||||
poetry: '',
|
||||
loading: false
|
||||
});
|
||||
},
|
||||
|
||||
// 点击遮罩关闭
|
||||
onMaskTap() {
|
||||
this.triggerEvent('close');
|
||||
},
|
||||
|
||||
// 阻止冒泡
|
||||
onContainerTap() {
|
||||
// 什么都不做,只是阻止冒泡
|
||||
},
|
||||
|
||||
// 点击关闭按钮
|
||||
onClose() {
|
||||
this.triggerEvent('close');
|
||||
},
|
||||
|
||||
// 问问 AI
|
||||
onAskAI() {
|
||||
this.triggerEvent('askAI', { char: this.data.char });
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user