|
|
@ -1160,6 +1160,54 @@ async function fetchData(code, market, stockName, queryText) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 检查对象是否包含有效数据的辅助函数 |
|
|
|
function hasValidData(obj) { |
|
|
|
if (!obj || typeof obj !== 'object') { |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
// 定义可以为空的数组字段 |
|
|
|
const allowedEmptyArrays = ['lowxh', 'qixh', 'topxh']; |
|
|
|
|
|
|
|
// 检查对象的所有属性值 |
|
|
|
for (const key in obj) { |
|
|
|
if (obj.hasOwnProperty(key)) { |
|
|
|
const value = obj[key]; |
|
|
|
|
|
|
|
// 如果是字符串字段 |
|
|
|
if (typeof value === 'string') { |
|
|
|
// 字符串字段必须有内容,为空则表示异常 |
|
|
|
if (value.trim() !== '') { |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
// 如果是数组字段 |
|
|
|
else if (Array.isArray(value)) { |
|
|
|
// 数组字段可以为空,但如果有内容则表示有效 |
|
|
|
if (value.length > 0) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
// 如果是数字且不为0 |
|
|
|
else if (typeof value === 'number' && value !== 0) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
// 如果是布尔值且为true |
|
|
|
else if (typeof value === 'boolean' && value === true) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
// 如果是对象且包含有效数据(递归检查) |
|
|
|
else if (typeof value === 'object' && value !== null) { |
|
|
|
if (hasValidData(value)) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
// 渲染组件图表的方法 |
|
|
|
function renderCharts(data) { |
|
|
|
console.log('开始渲染图表,数据:', data); |
|
|
@ -1172,10 +1220,17 @@ function renderCharts(data) { |
|
|
|
marketTemperature: !!(clonedData.GSWDJ && clonedData.GSWDJ.length > 0), |
|
|
|
emotionDecod: !!(clonedData.QXJMQ && clonedData.QXJMQ.length > 0), |
|
|
|
emotionalBottomRadar: !!(clonedData.QXTDLD && clonedData.QXTDLD.length > 0), |
|
|
|
emoEnergyConverter: !!(clonedData.QXNLZHQ && clonedData.QXNLZHQ.length > 0) |
|
|
|
emoEnergyConverter: !!(clonedData.QXNLZHQ && (Array.isArray(clonedData.QXNLZHQ) ? clonedData.QXNLZHQ.length > 0 : hasValidData(clonedData.QXNLZHQ))) |
|
|
|
}; |
|
|
|
|
|
|
|
console.log('图表显示状态:', chartVisibility.value); |
|
|
|
console.log('数据检查:', { |
|
|
|
GSWDJ: !!(clonedData.GSWDJ && clonedData.GSWDJ.length > 0), |
|
|
|
QXJMQ: !!(clonedData.QXJMQ && clonedData.QXJMQ.length > 0), |
|
|
|
QXTDLD: !!(clonedData.QXTDLD && clonedData.QXTDLD.length > 0), |
|
|
|
QXNLZHQ: !!(clonedData.QXNLZHQ && (Array.isArray(clonedData.QXNLZHQ) ? clonedData.QXNLZHQ.length > 0 : hasValidData(clonedData.QXNLZHQ))) |
|
|
|
}); |
|
|
|
console.log('QXNLZHQ数据详情:', clonedData.QXNLZHQ); |
|
|
|
|
|
|
|
nextTick(() => { |
|
|
|
// 增加延迟确保DOM完全更新和组件完全挂载 |
|
|
@ -1188,6 +1243,26 @@ function renderCharts(data) { |
|
|
|
emoEnergyConverterRef: !!emoEnergyConverterRef.value |
|
|
|
}); |
|
|
|
|
|
|
|
// 检查DOM元素是否存在 |
|
|
|
console.log('DOM元素检查:', { |
|
|
|
marketTemperatureDOM: !!document.querySelector('.class03'), |
|
|
|
emotionDecodDOM: !!document.querySelector('.class04'), |
|
|
|
emotionalBottomRadarDOM: !!document.querySelector('.class05'), |
|
|
|
emoEnergyConverterDOM: !!document.querySelector('.class06') |
|
|
|
}); |
|
|
|
|
|
|
|
// 检查具体的组件元素 |
|
|
|
const emoEnergyElement = document.querySelector('emo-energy-converter'); |
|
|
|
console.log('emoEnergyConverter元素:', emoEnergyElement); |
|
|
|
|
|
|
|
// 等待更长时间再次检查ref |
|
|
|
setTimeout(() => { |
|
|
|
console.log('延迟检查emoEnergyConverterRef:', !!emoEnergyConverterRef.value); |
|
|
|
if (emoEnergyConverterRef.value) { |
|
|
|
console.log('emoEnergyConverter方法:', typeof emoEnergyConverterRef.value.initQXNLZHEcharts); |
|
|
|
} |
|
|
|
}, 1000); |
|
|
|
|
|
|
|
// 渲染股市温度计图表 |
|
|
|
if (marketTemperatureRef.value && chartVisibility.value.marketTemperature) { |
|
|
|
console.log('开始渲染股市温度计图表'); |
|
|
|