From 377043e9c8f053aa570db1d1b3870b0c526985d8 Mon Sep 17 00:00:00 2001
From: gtz217 <535262213@qq.com>
Date: Mon, 22 Nov 2021 19:36:28 +0800
Subject: [PATCH] add chart
---
src/components/Charts/BarChart.vue | 153 +++++++++++++++
src/components/Charts/Keyboard.vue | 155 ++++++++++++++++
src/components/Charts/LineChart.vue | 152 +++++++++++++++
src/components/Charts/LineMarker.vue | 227 ++++++++++++++++++++++
src/components/Charts/MixChart.vue | 248 +++++++++++++++++++++++++
src/components/Charts/PieChart.vue | 127 +++++++++++++
src/components/Charts/ScatterChart.vue | 186 +++++++++++++++++++
src/components/Charts/mixins/resize.js | 64 +++++++
src/utils/index.js | 45 +++++
src/views/energy/electric.vue | 28 ++-
10 files changed, 1383 insertions(+), 2 deletions(-)
create mode 100644 src/components/Charts/BarChart.vue
create mode 100644 src/components/Charts/Keyboard.vue
create mode 100644 src/components/Charts/LineChart.vue
create mode 100644 src/components/Charts/LineMarker.vue
create mode 100644 src/components/Charts/MixChart.vue
create mode 100644 src/components/Charts/PieChart.vue
create mode 100644 src/components/Charts/ScatterChart.vue
create mode 100644 src/components/Charts/mixins/resize.js
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 @@
+
+
+
+
+
+
+
+
+
+
+