update pay function
This commit is contained in:
@@ -105,6 +105,68 @@ const ConceptTimelineModal = ({
|
||||
const [selectedNews, setSelectedNews] = useState(null);
|
||||
const [isNewsModalOpen, setIsNewsModalOpen] = useState(false);
|
||||
|
||||
// 辅助函数:格式化日期显示(包含年份)
|
||||
const formatDateDisplay = (dateStr) => {
|
||||
const date = new Date(dateStr);
|
||||
const today = new Date();
|
||||
const diffTime = today - date;
|
||||
const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
|
||||
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
const formatted = `${year}-${month}-${day}`;
|
||||
|
||||
if (diffDays === 0) return `今天 ${formatted}`;
|
||||
if (diffDays === 1) return `昨天 ${formatted}`;
|
||||
if (diffDays < 7) return `${diffDays}天前 ${formatted}`;
|
||||
if (diffDays < 30) return `${Math.floor(diffDays / 7)}周前 ${formatted}`;
|
||||
if (diffDays < 365) return `${Math.floor(diffDays / 30)}月前 ${formatted}`;
|
||||
return formatted;
|
||||
};
|
||||
|
||||
// 辅助函数:格式化完整时间(YYYY-MM-DD HH:mm)
|
||||
const formatDateTime = (dateTimeStr) => {
|
||||
if (!dateTimeStr) return '-';
|
||||
const normalized = typeof dateTimeStr === 'string' ? dateTimeStr.replace(' ', 'T') : dateTimeStr;
|
||||
const dt = new Date(normalized);
|
||||
if (isNaN(dt.getTime())) return '-';
|
||||
const y = dt.getFullYear();
|
||||
const m = String(dt.getMonth() + 1).padStart(2, '0');
|
||||
const d = String(dt.getDate()).padStart(2, '0');
|
||||
const hh = String(dt.getHours()).padStart(2, '0');
|
||||
const mm = String(dt.getMinutes()).padStart(2, '0');
|
||||
return `${y}-${m}-${d} ${hh}:${mm}`;
|
||||
};
|
||||
|
||||
// 辅助函数:获取涨跌幅颜色和图标
|
||||
const getPriceInfo = (price) => {
|
||||
if (!price || price.avg_change_pct === null) {
|
||||
return { color: 'gray', icon: null, text: '无数据' };
|
||||
}
|
||||
|
||||
const value = price.avg_change_pct;
|
||||
if (value > 0) {
|
||||
return {
|
||||
color: 'red',
|
||||
icon: FaArrowUp,
|
||||
text: `+${value.toFixed(2)}%`
|
||||
};
|
||||
} else if (value < 0) {
|
||||
return {
|
||||
color: 'green',
|
||||
icon: FaArrowDown,
|
||||
text: `${value.toFixed(2)}%`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
color: 'gray',
|
||||
icon: null,
|
||||
text: '0.00%'
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
// 转换时间轴数据为日历事件格式
|
||||
const calendarEvents = useMemo(() => {
|
||||
return timelineData.map(item => {
|
||||
@@ -170,68 +232,6 @@ const ConceptTimelineModal = ({
|
||||
}
|
||||
};
|
||||
|
||||
// 辅助函数:格式化日期显示(包含年份)
|
||||
const formatDateDisplay = (dateStr) => {
|
||||
const date = new Date(dateStr);
|
||||
const today = new Date();
|
||||
const diffTime = today - date;
|
||||
const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
|
||||
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
const formatted = `${year}-${month}-${day}`;
|
||||
|
||||
if (diffDays === 0) return `今天 ${formatted}`;
|
||||
if (diffDays === 1) return `昨天 ${formatted}`;
|
||||
if (diffDays < 7) return `${diffDays}天前 ${formatted}`;
|
||||
if (diffDays < 30) return `${Math.floor(diffDays / 7)}周前 ${formatted}`;
|
||||
if (diffDays < 365) return `${Math.floor(diffDays / 30)}月前 ${formatted}`;
|
||||
return formatted;
|
||||
};
|
||||
|
||||
// 辅助函数:格式化完整时间(YYYY-MM-DD HH:mm)
|
||||
const formatDateTime = (dateTimeStr) => {
|
||||
if (!dateTimeStr) return '-';
|
||||
const normalized = typeof dateTimeStr === 'string' ? dateTimeStr.replace(' ', 'T') : dateTimeStr;
|
||||
const dt = new Date(normalized);
|
||||
if (isNaN(dt.getTime())) return '-';
|
||||
const y = dt.getFullYear();
|
||||
const m = String(dt.getMonth() + 1).padStart(2, '0');
|
||||
const d = String(dt.getDate()).padStart(2, '0');
|
||||
const hh = String(dt.getHours()).padStart(2, '0');
|
||||
const mm = String(dt.getMinutes()).padStart(2, '0');
|
||||
return `${y}-${m}-${d} ${hh}:${mm}`;
|
||||
};
|
||||
|
||||
// 辅助函数:获取涨跌幅颜色和图标
|
||||
const getPriceInfo = (price) => {
|
||||
if (!price || price.avg_change_pct === null) {
|
||||
return { color: 'gray', icon: null, text: '无数据' };
|
||||
}
|
||||
|
||||
const value = price.avg_change_pct;
|
||||
if (value > 0) {
|
||||
return {
|
||||
color: 'red',
|
||||
icon: FaArrowUp,
|
||||
text: `+${value.toFixed(2)}%`
|
||||
};
|
||||
} else if (value < 0) {
|
||||
return {
|
||||
color: 'green',
|
||||
icon: FaArrowDown,
|
||||
text: `${value.toFixed(2)}%`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
color: 'gray',
|
||||
icon: null,
|
||||
text: '0.00%'
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
// 获取时间轴数据
|
||||
const fetchTimelineData = async () => {
|
||||
setLoading(true);
|
||||
|
||||
Reference in New Issue
Block a user