diff --git a/src/resources/assets/js/util.js b/src/resources/assets/js/util.js index e81b3b329d5273bb5c643937a298cc0e8f1bf6f2..b17b6ea187cdb7dd3d786cbe701cb235c78c4b58 100644 --- a/src/resources/assets/js/util.js +++ b/src/resources/assets/js/util.js @@ -1243,5 +1243,32 @@ const methods = { } return result; }, + isValidTimeString(timeStr) { //校验时间字符串 + if(!timeStr) { + return false; + } + const parts = timeStr.split(':'); + if (parts.length === 2) { + const [h, m] = parts.map(Number); + return h >= 0 && h < 24 && m >= 0 && m < 60; + } else if (parts.length === 3) { + const [h, m, s] = parts.map(Number); + return h >= 0 && h < 24 && m >= 0 && m < 60 && s >= 0 && s; + } + return false; + }, + isValidDateTime(dateStr) { //校验日期时间字符串 + // 检查是否为Date对象实例 + if (dateStr instanceof Date) { + return !isNaN(dateStr.getTime()); + } + // 检查是否为可解析的日期字符串 + if (typeof dateStr === 'string') { + // 尝试解析为Date对象 + const date = new Date(dateStr); + return !isNaN(date.getTime()); + } + return false; + } }; export default methods; diff --git a/src/views/pages/dashboard/widget/charts/widget-base.js b/src/views/pages/dashboard/widget/charts/widget-base.js index cdc71fd09705d3a3da888f893f6e90d934375674..0854bc0d995cdecf5142b936fc119ef061323f1c 100644 --- a/src/views/pages/dashboard/widget/charts/widget-base.js +++ b/src/views/pages/dashboard/widget/charts/widget-base.js @@ -75,7 +75,7 @@ export const WidgetBase = { data.push(d); }); } - this.data = data; + this.data = data.sort((a, b) => this.changeString(a.xField) - this.changeString(b.xField)); if (!isFirstGetData) { //第一次加载由于组件还没加载完毕,所以不需要调用changeData this.changeData(); @@ -90,6 +90,19 @@ export const WidgetBase = { }, this.widget.dataInterval * 1000); } }); + }, + changeString(a) { //字符串转时间戳 + if (a) { + if (this.$utils.isValidDateTime(a)) { + return new Date(a).getTime(); + } else if (this.$utils.isValidTimeString(a)) { + const pad = num => num.toString().padStart(2, '0'); + const [h1, m1, s1 = '00'] = a.split(':').map(pad); + return `${h1}${m1}${s1}`; + } + return a.charCodeAt(0); + } + return a; } }, beforeDestroy() { diff --git a/src/views/pages/report/statement/widgets/widget-base.js b/src/views/pages/report/statement/widgets/widget-base.js index 0b9d8fa436c7834779acb428bb8fb9ab3c01c523..ac03065c3ebe6c98605a6f540669adaa80e1c00e 100644 --- a/src/views/pages/report/statement/widgets/widget-base.js +++ b/src/views/pages/report/statement/widgets/widget-base.js @@ -65,7 +65,7 @@ export const WidgetBase = { data.push(d); }); } - this.data = data; + this.data = data.sort((a, b) => this.changeString(a.xField) - this.changeString(b.xField)); if (!isFirstGetData) { //第一次加载由于组件还没加载完毕,所以不需要调用changeData this.changeData(); @@ -80,6 +80,19 @@ export const WidgetBase = { }, this.widget.dataInterval * 1000); } }); + }, + changeString(a) { //字符串转时间戳 + if (a) { + if (this.$utils.isValidDateTime(a)) { + return new Date(a).getTime(); + } else if (this.$utils.isValidTimeString(a)) { + const pad = num => num.toString().padStart(2, '0'); + const [h1, m1, s1 = '00'] = a.split(':').map(pad); + return `${h1}${m1}${s1}`; + } + return a.charCodeAt(0); + } + return a; } }, beforeDestroy() {