// 字源溯源弹窗组件 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 }); } } });