- 添加收藏锦囊功能,支持查看和删除收藏 - 实现积分系统,每日赠送5次灵感次数 - 添加静心阅读功能,阅读15秒可获得额外次数 - 实现灵感广场,展示用户分享的名字 - 添加字源溯源组件,长按汉字查看详情 - 优化空状态和结语卡片样式统一 - 添加音频控制(静音/风铃/雨落/古琴/白噪音/森林/溪流) - 优化名字生成逻辑,确保每次返回5个不重复名字 - 修复卡片翻转样式问题 - 移除首页动态提醒气泡
109 lines
2.4 KiB
JavaScript
109 lines
2.4 KiB
JavaScript
// 字源溯源弹窗组件
|
|
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 });
|
|
}
|
|
}
|
|
});
|