Files
JianSu-Naming/miniprogram/components/charDetail/charDetail.js

109 lines
2.4 KiB
JavaScript
Raw Normal View History

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