diff --git a/src/components/Charts/BarChart.vue b/src/components/Charts/BarChart.vue new file mode 100644 index 0000000..8b860ce --- /dev/null +++ b/src/components/Charts/BarChart.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/src/components/Charts/Keyboard.vue b/src/components/Charts/Keyboard.vue new file mode 100644 index 0000000..e8e95bc --- /dev/null +++ b/src/components/Charts/Keyboard.vue @@ -0,0 +1,155 @@ + + + diff --git a/src/components/Charts/LineChart.vue b/src/components/Charts/LineChart.vue new file mode 100644 index 0000000..3a4e26b --- /dev/null +++ b/src/components/Charts/LineChart.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/components/Charts/LineMarker.vue b/src/components/Charts/LineMarker.vue new file mode 100644 index 0000000..6737fa4 --- /dev/null +++ b/src/components/Charts/LineMarker.vue @@ -0,0 +1,227 @@ + + + diff --git a/src/components/Charts/MixChart.vue b/src/components/Charts/MixChart.vue new file mode 100644 index 0000000..0173888 --- /dev/null +++ b/src/components/Charts/MixChart.vue @@ -0,0 +1,248 @@ + + + diff --git a/src/components/Charts/PieChart.vue b/src/components/Charts/PieChart.vue new file mode 100644 index 0000000..cc359db --- /dev/null +++ b/src/components/Charts/PieChart.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/components/Charts/ScatterChart.vue b/src/components/Charts/ScatterChart.vue new file mode 100644 index 0000000..b24fbf3 --- /dev/null +++ b/src/components/Charts/ScatterChart.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/src/components/Charts/mixins/resize.js b/src/components/Charts/mixins/resize.js new file mode 100644 index 0000000..a037465 --- /dev/null +++ b/src/components/Charts/mixins/resize.js @@ -0,0 +1,64 @@ +/* + * @Author: gtz + * @Date: 2021-11-22 16:15:52 + * @LastEditors: gtz + * @LastEditTime: 2021-11-22 19:17:01 + * @Description: file content + * @FilePath: \mt-qj-wms-ui\src\components\Charts\mixins\resize.js + */ +import { debounce } from '@/utils' + +export default { + data () { + return { + $_sidebarElm: null, + $_resizeHandler: null + } + }, + mounted () { + this.initListener() + }, + activated () { + if (!this.$_resizeHandler) { + // avoid duplication init + this.initListener() + } + + // when keep-alive chart activated, auto resize + this.resize() + }, + beforeDestroy () { + this.destroyListener() + }, + deactivated () { + this.destroyListener() + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_sidebarResizeHandler (e) { + if (e.propertyName === 'width') { + this.$_resizeHandler() + } + }, + initListener () { + this.$_resizeHandler = debounce(() => { + this.resize() + }, 100) + window.addEventListener('resize', this.$_resizeHandler) + + this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] + this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + }, + destroyListener () { + window.removeEventListener('resize', this.$_resizeHandler) + this.$_resizeHandler = null + + this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + }, + resize () { + const { chart } = this + chart && chart.resize() + } + } +} diff --git a/src/utils/index.js b/src/utils/index.js index 024c562..ffaded8 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,3 +1,11 @@ +/* + * @Author: gtz + * @Date: 2021-11-19 10:10:52 + * @LastEditors: gtz + * @LastEditTime: 2021-11-22 19:21:31 + * @Description: file content + * @FilePath: \mt-qj-wms-ui\src\utils\index.js + */ import Vue from 'vue' import router from '@/router' import store from '@/store' @@ -19,6 +27,43 @@ export function isAuth (key) { return JSON.parse(sessionStorage.getItem('permissions') || '[]').indexOf(key) !== -1 || false } +/** + * @param {Function} func + * @param {number} wait + * @param {boolean} immediate + * @return {*} + */ +export function debounce (func, wait, immediate) { + let timeout, args, context, timestamp, result + const later = function () { + // 据上一次触发时间间隔 + const last = +new Date() - timestamp + // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait + if (last < wait && last > 0) { + timeout = setTimeout(later, wait - last) + } else { + timeout = null + // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用 + if (!immediate) { + result = func.apply(context, args) + if (!timeout) context = args = null + } + } + } + return function (...args) { + context = this + timestamp = +new Date() + const callNow = immediate && !timeout + // 如果延时不存在,重新设定延时 + if (!timeout) timeout = setTimeout(later, wait) + if (callNow) { + result = func.apply(context, args) + context = args = null + } + return result + } +} + /** * 树形数据转换 * @param {*} data diff --git a/src/views/energy/electric.vue b/src/views/energy/electric.vue index 4e73f0f..87003b4 100644 --- a/src/views/energy/electric.vue +++ b/src/views/energy/electric.vue @@ -1,7 +1,31 @@ + + + + + + +