Commit 78ceab9205cf00c17d62901acfd5c18aacddd189
1 parent
203c834f
定时时间统一设置1H
添加滑块
Showing
44 changed files
with
497 additions
and
125 deletions
config/dev.env.js
| 1 | 'use strict' | 1 | 'use strict' |
| 2 | const merge = require('webpack-merge') | 2 | const merge = require('webpack-merge') |
| 3 | const prodEnv = require('./prod.env') | 3 | const prodEnv = require('./prod.env') |
| 4 | +const isDev = false; | ||
| 5 | +const ipAddresses = isDev?"weberp.xlyprint.cn":"127.0.0.1:8080"; | ||
| 6 | + //window.location.host; | ||
| 4 | 7 | ||
| 5 | module.exports = merge(prodEnv, { | 8 | module.exports = merge(prodEnv, { |
| 6 | NODE_ENV: '"development"', | 9 | NODE_ENV: '"development"', |
| 7 | -// BASE_API: '"http://127.0.0.1:8080/xlyReport"', | ||
| 8 | - BASE_API: '"http://weberp.xlyprint.cn/xlyReport"', | 10 | + BASE_API: '"http://'+ipAddresses+'/xlyReport"', |
| 11 | +// BASE_API: '"http://weberp.xlyprint.cn/xlyReport"', | ||
| 9 | //API_WS: '"ws://127.0.0.1:8080/api/websocket"' | 12 | //API_WS: '"ws://127.0.0.1:8080/api/websocket"' |
| 10 | }) | 13 | }) |
package.json
| @@ -24,6 +24,7 @@ | @@ -24,6 +24,7 @@ | ||
| 24 | "element-ui": "^2.9.2", | 24 | "element-ui": "^2.9.2", |
| 25 | "js-cookie": "2.2.0", | 25 | "js-cookie": "2.2.0", |
| 26 | "jsbarcode": "^3.11.4", | 26 | "jsbarcode": "^3.11.4", |
| 27 | + "loading-view-vue": "^1.0.3", | ||
| 27 | "miment": "^0.0.9", | 28 | "miment": "^0.0.9", |
| 28 | "moment": "^2.29.1", | 29 | "moment": "^2.29.1", |
| 29 | "monaco-editor": "^0.20.0", | 30 | "monaco-editor": "^0.20.0", |
src/utils/request.js
| @@ -5,7 +5,7 @@ import { getToken } from '@/utils/auth' | @@ -5,7 +5,7 @@ import { getToken } from '@/utils/auth' | ||
| 5 | // 创建axios实例 | 5 | // 创建axios实例 |
| 6 | const service = axios.create({ | 6 | const service = axios.create({ |
| 7 | baseURL: process.env.BASE_API, // api 的 base_url | 7 | baseURL: process.env.BASE_API, // api 的 base_url |
| 8 | - timeout: 60000 // 请求超时时间 | 8 | + timeout: 20000 // 请求超时时间 |
| 9 | }) | 9 | }) |
| 10 | 10 | ||
| 11 | // request拦截器 | 11 | // request拦截器 |
src/views/bigscreenDesigner/designer/index.vue
| @@ -316,6 +316,10 @@ import { mapMutations } from 'vuex'; | @@ -316,6 +316,10 @@ import { mapMutations } from 'vuex'; | ||
| 316 | import process from "process"; | 316 | import process from "process"; |
| 317 | import { debounce } from '@/utils/debounce'; // 引入防抖函数 | 317 | import { debounce } from '@/utils/debounce'; // 引入防抖函数 |
| 318 | 318 | ||
| 319 | +import loadingViewerVue from 'loading-view-vue' | ||
| 320 | +import Vue from "vue"; | ||
| 321 | +Vue.use(loadingViewerVue,{mode:"5"}); | ||
| 322 | + | ||
| 319 | export default { | 323 | export default { |
| 320 | name: "Login", | 324 | name: "Login", |
| 321 | components: { | 325 | components: { |
| @@ -694,7 +698,10 @@ export default { | @@ -694,7 +698,10 @@ export default { | ||
| 694 | widgets: this.widgets, | 698 | widgets: this.widgets, |
| 695 | }; | 699 | }; |
| 696 | // console.log(screenData); | 700 | // console.log(screenData); |
| 701 | + //loading | ||
| 702 | + this.$showLoading(); | ||
| 697 | const { code, data } = await insertDashboard(screenData); | 703 | const { code, data } = await insertDashboard(screenData); |
| 704 | + this.$hideLoading(); | ||
| 698 | if (code == "200") { | 705 | if (code == "200") { |
| 699 | this.$message.success("保存成功!"); | 706 | this.$message.success("保存成功!"); |
| 700 | } | 707 | } |
src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-compare.js
| @@ -700,7 +700,7 @@ export const widgetBarCompare = { | @@ -700,7 +700,7 @@ export const widgetBarCompare = { | ||
| 700 | name: 'refreshTime', | 700 | name: 'refreshTime', |
| 701 | relactiveDom: 'dataType', | 701 | relactiveDom: 'dataType', |
| 702 | relactiveDomValue: 'dynamicData', | 702 | relactiveDomValue: 'dynamicData', |
| 703 | - value: 5000 | 703 | + value: 3600000 |
| 704 | }, | 704 | }, |
| 705 | { | 705 | { |
| 706 | type: 'el-button', | 706 | type: 'el-button', |
| @@ -732,7 +732,7 @@ export const widgetBarCompare = { | @@ -732,7 +732,7 @@ export const widgetBarCompare = { | ||
| 732 | relactiveDom: 'dataType', | 732 | relactiveDom: 'dataType', |
| 733 | relactiveDomValue: 'dynamicData', | 733 | relactiveDomValue: 'dynamicData', |
| 734 | chartType: 'widget-stackchart', | 734 | chartType: 'widget-stackchart', |
| 735 | - dictKey: 'STACK_PROPERTIES', | 735 | + dictKey: 'COMPARE_PROPERTIES', |
| 736 | value: '', | 736 | value: '', |
| 737 | }, | 737 | }, |
| 738 | ], | 738 | ], |
src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-stack.js
| @@ -659,7 +659,7 @@ export const widgetBarStack = { | @@ -659,7 +659,7 @@ export const widgetBarStack = { | ||
| 659 | name: 'refreshTime', | 659 | name: 'refreshTime', |
| 660 | relactiveDom: 'dataType', | 660 | relactiveDom: 'dataType', |
| 661 | relactiveDomValue: 'dynamicData', | 661 | relactiveDomValue: 'dynamicData', |
| 662 | - value: 5000 | 662 | + value: 3600000 |
| 663 | }, | 663 | }, |
| 664 | { | 664 | { |
| 665 | type: 'el-button', | 665 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-barchart.js
| @@ -581,7 +581,7 @@ export const widgetBarchart = { | @@ -581,7 +581,7 @@ export const widgetBarchart = { | ||
| 581 | name: 'refreshTime', | 581 | name: 'refreshTime', |
| 582 | relactiveDom: 'dataType', | 582 | relactiveDom: 'dataType', |
| 583 | relactiveDomValue: 'dynamicData', | 583 | relactiveDomValue: 'dynamicData', |
| 584 | - value: 5000 | 584 | + value: 3600000 |
| 585 | }, | 585 | }, |
| 586 | { | 586 | { |
| 587 | type: 'el-button', | 587 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-capsule-chart.js
| @@ -84,7 +84,7 @@ export const widgetCapsuleChart = { | @@ -84,7 +84,7 @@ export const widgetCapsuleChart = { | ||
| 84 | name: 'refreshTime', | 84 | name: 'refreshTime', |
| 85 | relactiveDom: 'dataType', | 85 | relactiveDom: 'dataType', |
| 86 | relactiveDomValue: 'dynamicData', | 86 | relactiveDomValue: 'dynamicData', |
| 87 | - value: 5000 | 87 | + value: 3600000 |
| 88 | }, | 88 | }, |
| 89 | { | 89 | { |
| 90 | type: 'el-button', | 90 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-gradient-barchart.js
| @@ -582,7 +582,7 @@ export const widgetGradientBarchart = { | @@ -582,7 +582,7 @@ export const widgetGradientBarchart = { | ||
| 582 | name: 'refreshTime', | 582 | name: 'refreshTime', |
| 583 | relactiveDom: 'dataType', | 583 | relactiveDom: 'dataType', |
| 584 | relactiveDomValue: 'dynamicData', | 584 | relactiveDomValue: 'dynamicData', |
| 585 | - value: 5000 | 585 | + value: 3600000 |
| 586 | }, | 586 | }, |
| 587 | { | 587 | { |
| 588 | type: 'el-button', | 588 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/barlineCharts/widget-bar-line-stack.js
| @@ -871,7 +871,7 @@ export const widgetBarLineStack = { | @@ -871,7 +871,7 @@ export const widgetBarLineStack = { | ||
| 871 | name: 'refreshTime', | 871 | name: 'refreshTime', |
| 872 | relactiveDom: 'dataType', | 872 | relactiveDom: 'dataType', |
| 873 | relactiveDomValue: 'dynamicData', | 873 | relactiveDomValue: 'dynamicData', |
| 874 | - value: 5000 | 874 | + value: 3600000 |
| 875 | }, | 875 | }, |
| 876 | { | 876 | { |
| 877 | type: 'el-button', | 877 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/barlineCharts/widget-barlinechart.js
| @@ -895,7 +895,7 @@ export const widgetBarlinechart = { | @@ -895,7 +895,7 @@ export const widgetBarlinechart = { | ||
| 895 | name: 'refreshTime', | 895 | name: 'refreshTime', |
| 896 | relactiveDom: 'dataType', | 896 | relactiveDom: 'dataType', |
| 897 | relactiveDomValue: 'dynamicData', | 897 | relactiveDomValue: 'dynamicData', |
| 898 | - value: 5000 | 898 | + value: 3600000 |
| 899 | }, | 899 | }, |
| 900 | { | 900 | { |
| 901 | type: 'el-button', | 901 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/barlineCharts/widget-more-bar-line.js
| @@ -887,7 +887,7 @@ export const widgetMoreBarLine = { | @@ -887,7 +887,7 @@ export const widgetMoreBarLine = { | ||
| 887 | name: 'refreshTime', | 887 | name: 'refreshTime', |
| 888 | relactiveDom: 'dataType', | 888 | relactiveDom: 'dataType', |
| 889 | relactiveDomValue: 'dynamicData', | 889 | relactiveDomValue: 'dynamicData', |
| 890 | - value: 5000 | 890 | + value: 3600000 |
| 891 | }, | 891 | }, |
| 892 | { | 892 | { |
| 893 | type: 'el-button', | 893 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/funnelCharts/widget-conical-column-chart.js
| @@ -102,7 +102,7 @@ export const widgetConicalColumnChart = { | @@ -102,7 +102,7 @@ export const widgetConicalColumnChart = { | ||
| 102 | name: 'refreshTime', | 102 | name: 'refreshTime', |
| 103 | relactiveDom: 'dataType', | 103 | relactiveDom: 'dataType', |
| 104 | relactiveDomValue: 'dynamicData', | 104 | relactiveDomValue: 'dynamicData', |
| 105 | - value: 5000 | 105 | + value: 3600000 |
| 106 | }, | 106 | }, |
| 107 | { | 107 | { |
| 108 | type: 'el-button', | 108 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/funnelCharts/widget-funnel.js
| @@ -342,7 +342,7 @@ export const widgetFunnel = { | @@ -342,7 +342,7 @@ export const widgetFunnel = { | ||
| 342 | name: 'refreshTime', | 342 | name: 'refreshTime', |
| 343 | relactiveDom: 'dataType', | 343 | relactiveDom: 'dataType', |
| 344 | relactiveDomValue: 'dynamicData', | 344 | relactiveDomValue: 'dynamicData', |
| 345 | - value: 5000 | 345 | + value: 3600000 |
| 346 | }, | 346 | }, |
| 347 | { | 347 | { |
| 348 | type: 'el-button', | 348 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/heatmap/widget-heatmap.js
| @@ -578,7 +578,7 @@ export const widgetHeatmap = { | @@ -578,7 +578,7 @@ export const widgetHeatmap = { | ||
| 578 | name: 'refreshTime', | 578 | name: 'refreshTime', |
| 579 | relactiveDom: 'dataType', | 579 | relactiveDom: 'dataType', |
| 580 | relactiveDomValue: 'dynamicData', | 580 | relactiveDomValue: 'dynamicData', |
| 581 | - value: 5000 | 581 | + value: 3600000 |
| 582 | }, | 582 | }, |
| 583 | { | 583 | { |
| 584 | type: 'el-button', | 584 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/lineCharts/widget-line-compare.js
| @@ -736,7 +736,7 @@ export const widgetLineCompare = { | @@ -736,7 +736,7 @@ export const widgetLineCompare = { | ||
| 736 | name: 'marginBottom', | 736 | name: 'marginBottom', |
| 737 | required: false, | 737 | required: false, |
| 738 | placeholder: '', | 738 | placeholder: '', |
| 739 | - value: 40, | 739 | + value: 10, |
| 740 | }, | 740 | }, |
| 741 | ], | 741 | ], |
| 742 | }, | 742 | }, |
| @@ -781,7 +781,7 @@ export const widgetLineCompare = { | @@ -781,7 +781,7 @@ export const widgetLineCompare = { | ||
| 781 | name: 'refreshTime', | 781 | name: 'refreshTime', |
| 782 | relactiveDom: 'dataType', | 782 | relactiveDom: 'dataType', |
| 783 | relactiveDomValue: 'dynamicData', | 783 | relactiveDomValue: 'dynamicData', |
| 784 | - value: 5000 | 784 | + value: 3600000 |
| 785 | }, | 785 | }, |
| 786 | { | 786 | { |
| 787 | type: 'el-button', | 787 | type: 'el-button', |
| @@ -813,7 +813,7 @@ export const widgetLineCompare = { | @@ -813,7 +813,7 @@ export const widgetLineCompare = { | ||
| 813 | relactiveDom: 'dataType', | 813 | relactiveDom: 'dataType', |
| 814 | relactiveDomValue: 'dynamicData', | 814 | relactiveDomValue: 'dynamicData', |
| 815 | chartType: 'widget-stackchart', | 815 | chartType: 'widget-stackchart', |
| 816 | - dictKey: 'STACK_PROPERTIES', | 816 | + dictKey: 'COMPARE_PROPERTIES', |
| 817 | value: '', | 817 | value: '', |
| 818 | }, | 818 | }, |
| 819 | ], | 819 | ], |
src/views/bigscreenDesigner/designer/tools/configure/lineCharts/widget-line-stack.js
| @@ -646,8 +646,85 @@ export const widgetLineStack = { | @@ -646,8 +646,85 @@ export const widgetLineStack = { | ||
| 646 | name: 'marginBottom', | 646 | name: 'marginBottom', |
| 647 | required: false, | 647 | required: false, |
| 648 | placeholder: '', | 648 | placeholder: '', |
| 649 | - value: 10, | 649 | + value: 15, |
| 650 | + }, | ||
| 651 | + ], | ||
| 652 | + }, | ||
| 653 | + { | ||
| 654 | + name: '底部滑块设置', | ||
| 655 | + list: [ | ||
| 656 | + { | ||
| 657 | + type: 'el-switch', | ||
| 658 | + label: '显示', | ||
| 659 | + name: 'isShowZoom', | ||
| 660 | + require: false, | ||
| 661 | + placeholder: '', | ||
| 662 | + value: false, | ||
| 650 | }, | 663 | }, |
| 664 | + { | ||
| 665 | + type: 'el-slider', | ||
| 666 | + label: '起始位置%', | ||
| 667 | + name: 'startZoom', | ||
| 668 | + required: false, | ||
| 669 | + placeholder: '', | ||
| 670 | + value: 80, | ||
| 671 | + }, | ||
| 672 | + { | ||
| 673 | + type: 'el-slider', | ||
| 674 | + label: '结束位置%', | ||
| 675 | + name: 'endZoom', | ||
| 676 | + required: false, | ||
| 677 | + placeholder: '', | ||
| 678 | + value: 100, | ||
| 679 | + }, | ||
| 680 | + { | ||
| 681 | + type: 'vue-color', | ||
| 682 | + label: '边框颜色', | ||
| 683 | + name: 'borderColorZoom', | ||
| 684 | + required: false, | ||
| 685 | + placeholder: '', | ||
| 686 | + value: '#05a8ee' | ||
| 687 | + }, | ||
| 688 | + // { | ||
| 689 | + // type: 'el-input-number', | ||
| 690 | + // label: '边框弧度', | ||
| 691 | + // name: 'borderRadiusZoom', | ||
| 692 | + // required: false, | ||
| 693 | + // placeholder: '', | ||
| 694 | + // value: 10, | ||
| 695 | + // }, | ||
| 696 | + { | ||
| 697 | + type: 'vue-color', | ||
| 698 | + label: '边框背景', | ||
| 699 | + name: 'backgroundColorZoom', | ||
| 700 | + required: false, | ||
| 701 | + placeholder: '', | ||
| 702 | + value: '#fff' | ||
| 703 | + }, | ||
| 704 | + { | ||
| 705 | + type: 'el-input-number', | ||
| 706 | + label: '边框高度', | ||
| 707 | + name: 'heightZoom', | ||
| 708 | + required: false, | ||
| 709 | + placeholder: '', | ||
| 710 | + value: '12' | ||
| 711 | + }, | ||
| 712 | + { | ||
| 713 | + type: 'el-input-number', | ||
| 714 | + label: '距离左边距离%', | ||
| 715 | + name: 'bottomLeft', | ||
| 716 | + required: false, | ||
| 717 | + placeholder: '', | ||
| 718 | + value: 12 | ||
| 719 | + }, | ||
| 720 | + { | ||
| 721 | + type: 'el-input-number', | ||
| 722 | + label: '距离底部距离', | ||
| 723 | + name: 'bottomZoom', | ||
| 724 | + required: false, | ||
| 725 | + placeholder: '', | ||
| 726 | + value: 5 | ||
| 727 | + } | ||
| 651 | ], | 728 | ], |
| 652 | }, | 729 | }, |
| 653 | { | 730 | { |
| @@ -658,7 +735,7 @@ export const widgetLineStack = { | @@ -658,7 +735,7 @@ export const widgetLineStack = { | ||
| 658 | label: '', | 735 | label: '', |
| 659 | name: 'customColor', | 736 | name: 'customColor', |
| 660 | required: false, | 737 | required: false, |
| 661 | - value: [{ color: '#ff7f50' }, { color: '#87cefa' }, { color: '#da70d6' }, { color: '#32cd32' }, { color: '#6495ed' }], | 738 | + value: [{ color: '#05a8ee' }, { color: '#87cefa' }, { color: '#da70d6' }, { color: '#3247cd' }, { color: '#6495ed' }], |
| 662 | }, | 739 | }, |
| 663 | ], | 740 | ], |
| 664 | }, | 741 | }, |
| @@ -691,7 +768,7 @@ export const widgetLineStack = { | @@ -691,7 +768,7 @@ export const widgetLineStack = { | ||
| 691 | name: 'refreshTime', | 768 | name: 'refreshTime', |
| 692 | relactiveDom: 'dataType', | 769 | relactiveDom: 'dataType', |
| 693 | relactiveDomValue: 'dynamicData', | 770 | relactiveDomValue: 'dynamicData', |
| 694 | - value: 5000 | 771 | + value: 3600000 |
| 695 | }, | 772 | }, |
| 696 | { | 773 | { |
| 697 | type: 'el-button', | 774 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/lineCharts/widget-linechart.js
| @@ -452,6 +452,22 @@ export const widgetLinechart = { | @@ -452,6 +452,22 @@ export const widgetLinechart = { | ||
| 452 | placeholder: '', | 452 | placeholder: '', |
| 453 | value: '#fff', | 453 | value: '#fff', |
| 454 | }, | 454 | }, |
| 455 | + // { | ||
| 456 | + // type: 'el-switch', | ||
| 457 | + // label: '虚线分割显示', | ||
| 458 | + // name: 'isShowSplitLinexX', | ||
| 459 | + // require: false, | ||
| 460 | + // placeholder: '', | ||
| 461 | + // value: false, | ||
| 462 | + // }, | ||
| 463 | + // { | ||
| 464 | + // type: 'vue-color', | ||
| 465 | + // label: '虚线分割颜色', | ||
| 466 | + // name: 'splitLineColorYColor', | ||
| 467 | + // required: false, | ||
| 468 | + // placeholder: '', | ||
| 469 | + // value: '#333', | ||
| 470 | + // }, | ||
| 455 | { | 471 | { |
| 456 | type: 'el-input-number', | 472 | type: 'el-input-number', |
| 457 | label: '分割线宽度', | 473 | label: '分割线宽度', |
| @@ -559,8 +575,85 @@ export const widgetLinechart = { | @@ -559,8 +575,85 @@ export const widgetLinechart = { | ||
| 559 | name: 'marginBottom', | 575 | name: 'marginBottom', |
| 560 | required: false, | 576 | required: false, |
| 561 | placeholder: '', | 577 | placeholder: '', |
| 562 | - value: 10, | 578 | + value: 15, |
| 579 | + }, | ||
| 580 | + ], | ||
| 581 | + }, | ||
| 582 | + { | ||
| 583 | + name: '底部滑块设置', | ||
| 584 | + list: [ | ||
| 585 | + { | ||
| 586 | + type: 'el-switch', | ||
| 587 | + label: '显示', | ||
| 588 | + name: 'isShowZoom', | ||
| 589 | + require: false, | ||
| 590 | + placeholder: '', | ||
| 591 | + value: false, | ||
| 563 | }, | 592 | }, |
| 593 | + { | ||
| 594 | + type: 'el-slider', | ||
| 595 | + label: '起始位置%', | ||
| 596 | + name: 'startZoom', | ||
| 597 | + required: false, | ||
| 598 | + placeholder: '', | ||
| 599 | + value: 80, | ||
| 600 | + }, | ||
| 601 | + { | ||
| 602 | + type: 'el-slider', | ||
| 603 | + label: '结束位置%', | ||
| 604 | + name: 'endZoom', | ||
| 605 | + required: false, | ||
| 606 | + placeholder: '', | ||
| 607 | + value: 100, | ||
| 608 | + }, | ||
| 609 | + { | ||
| 610 | + type: 'vue-color', | ||
| 611 | + label: '边框颜色', | ||
| 612 | + name: 'borderColorZoom', | ||
| 613 | + required: false, | ||
| 614 | + placeholder: '', | ||
| 615 | + value: '#05a8ee' | ||
| 616 | + }, | ||
| 617 | + // { | ||
| 618 | + // type: 'el-input-number', | ||
| 619 | + // label: '边框弧度', | ||
| 620 | + // name: 'borderRadiusZoom', | ||
| 621 | + // required: false, | ||
| 622 | + // placeholder: '', | ||
| 623 | + // value: 10, | ||
| 624 | + // }, | ||
| 625 | + { | ||
| 626 | + type: 'vue-color', | ||
| 627 | + label: '边框背景', | ||
| 628 | + name: 'backgroundColorZoom', | ||
| 629 | + required: false, | ||
| 630 | + placeholder: '', | ||
| 631 | + value: '#fff' | ||
| 632 | + }, | ||
| 633 | + { | ||
| 634 | + type: 'el-input-number', | ||
| 635 | + label: '边框高度', | ||
| 636 | + name: 'heightZoom', | ||
| 637 | + required: false, | ||
| 638 | + placeholder: '', | ||
| 639 | + value: '12' | ||
| 640 | + }, | ||
| 641 | + { | ||
| 642 | + type: 'el-input-number', | ||
| 643 | + label: '距离左边距离px', | ||
| 644 | + name: 'bottomLeft', | ||
| 645 | + required: false, | ||
| 646 | + placeholder: '', | ||
| 647 | + value: 50 | ||
| 648 | + }, | ||
| 649 | + { | ||
| 650 | + type: 'el-input-number', | ||
| 651 | + label: '距离底部距离', | ||
| 652 | + name: 'bottomZoom', | ||
| 653 | + required: false, | ||
| 654 | + placeholder: '', | ||
| 655 | + value: 5 | ||
| 656 | + } | ||
| 564 | ], | 657 | ], |
| 565 | }, | 658 | }, |
| 566 | { | 659 | { |
| @@ -604,7 +697,7 @@ export const widgetLinechart = { | @@ -604,7 +697,7 @@ export const widgetLinechart = { | ||
| 604 | name: 'refreshTime', | 697 | name: 'refreshTime', |
| 605 | relactiveDom: 'dataType', | 698 | relactiveDom: 'dataType', |
| 606 | relactiveDomValue: 'dynamicData', | 699 | relactiveDomValue: 'dynamicData', |
| 607 | - value: 5000 | 700 | + value: 3600000 |
| 608 | }, | 701 | }, |
| 609 | { | 702 | { |
| 610 | type: 'el-button', | 703 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/mapCharts/widget-airbubble-map.js
| @@ -314,7 +314,7 @@ export const widgetAirbubbleMap = { | @@ -314,7 +314,7 @@ export const widgetAirbubbleMap = { | ||
| 314 | name: 'refreshTime', | 314 | name: 'refreshTime', |
| 315 | relactiveDom: 'dataType', | 315 | relactiveDom: 'dataType', |
| 316 | relactiveDomValue: 'dynamicData', | 316 | relactiveDomValue: 'dynamicData', |
| 317 | - value: 5000 | 317 | + value: 3600000 |
| 318 | }, | 318 | }, |
| 319 | { | 319 | { |
| 320 | type: 'el-button', | 320 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/mapCharts/widget-line-map.js
| @@ -391,7 +391,7 @@ export const widgetLineMap = { | @@ -391,7 +391,7 @@ export const widgetLineMap = { | ||
| 391 | name: 'refreshTime', | 391 | name: 'refreshTime', |
| 392 | relactiveDom: 'dataType', | 392 | relactiveDom: 'dataType', |
| 393 | relactiveDomValue: 'dynamicData', | 393 | relactiveDomValue: 'dynamicData', |
| 394 | - value: 5000 | 394 | + value: 3600000 |
| 395 | }, | 395 | }, |
| 396 | { | 396 | { |
| 397 | type: 'el-button', | 397 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/percentCharts/widget-gauge.js
| @@ -310,7 +310,7 @@ export const widgetGauge = { | @@ -310,7 +310,7 @@ export const widgetGauge = { | ||
| 310 | name: 'refreshTime', | 310 | name: 'refreshTime', |
| 311 | relactiveDom: 'dataType', | 311 | relactiveDom: 'dataType', |
| 312 | relactiveDomValue: 'dynamicData', | 312 | relactiveDomValue: 'dynamicData', |
| 313 | - value: 5000 | 313 | + value: 3600000 |
| 314 | }, | 314 | }, |
| 315 | { | 315 | { |
| 316 | type: 'el-button', | 316 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/percentCharts/widget-pie-percentage.js
| @@ -187,7 +187,7 @@ export const widgetPiePercentage = { | @@ -187,7 +187,7 @@ export const widgetPiePercentage = { | ||
| 187 | name: 'refreshTime', | 187 | name: 'refreshTime', |
| 188 | relactiveDom: 'dataType', | 188 | relactiveDom: 'dataType', |
| 189 | relactiveDomValue: 'dynamicData', | 189 | relactiveDomValue: 'dynamicData', |
| 190 | - value: 5000 | 190 | + value: 3600000 |
| 191 | }, | 191 | }, |
| 192 | { | 192 | { |
| 193 | type: 'el-button', | 193 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/pieCharts/widget-active-ring-chart.js
| @@ -169,7 +169,7 @@ export const widgetActiveRingChart= { | @@ -169,7 +169,7 @@ export const widgetActiveRingChart= { | ||
| 169 | name: 'refreshTime', | 169 | name: 'refreshTime', |
| 170 | relactiveDom: 'dataType', | 170 | relactiveDom: 'dataType', |
| 171 | relactiveDomValue: 'dynamicData', | 171 | relactiveDomValue: 'dynamicData', |
| 172 | - value: 5000 | 172 | + value: 3600000 |
| 173 | }, | 173 | }, |
| 174 | { | 174 | { |
| 175 | type: 'el-button', | 175 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/pieCharts/widget-pie-nightingale.js
| @@ -394,7 +394,7 @@ export const widgetPieNightingale = { | @@ -394,7 +394,7 @@ export const widgetPieNightingale = { | ||
| 394 | name: 'refreshTime', | 394 | name: 'refreshTime', |
| 395 | relactiveDom: 'dataType', | 395 | relactiveDom: 'dataType', |
| 396 | relactiveDomValue: 'dynamicData', | 396 | relactiveDomValue: 'dynamicData', |
| 397 | - value: 5000 | 397 | + value: 3600000 |
| 398 | }, | 398 | }, |
| 399 | { | 399 | { |
| 400 | type: 'el-button', | 400 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/pieCharts/widget-piechart.js
| @@ -392,7 +392,7 @@ export const widgetPiechart = { | @@ -392,7 +392,7 @@ export const widgetPiechart = { | ||
| 392 | name: 'refreshTime', | 392 | name: 'refreshTime', |
| 393 | relactiveDom: 'dataType', | 393 | relactiveDom: 'dataType', |
| 394 | relactiveDomValue: 'dynamicData', | 394 | relactiveDomValue: 'dynamicData', |
| 395 | - value: 5000 | 395 | + value: 3600000 |
| 396 | }, | 396 | }, |
| 397 | { | 397 | { |
| 398 | type: 'el-button', | 398 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/radarCharts/widget-radar.js
| @@ -512,7 +512,7 @@ export const widgetRadar = { | @@ -512,7 +512,7 @@ export const widgetRadar = { | ||
| 512 | name: 'refreshTime', | 512 | name: 'refreshTime', |
| 513 | relactiveDom: 'dataType', | 513 | relactiveDom: 'dataType', |
| 514 | relactiveDomValue: 'dynamicData', | 514 | relactiveDomValue: 'dynamicData', |
| 515 | - value: 5000 | 515 | + value: 3600000 |
| 516 | }, | 516 | }, |
| 517 | { | 517 | { |
| 518 | type: 'el-button', | 518 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/table/widget-rotate-ranking.js
| @@ -98,7 +98,7 @@ export const widgetRotateRanking= { | @@ -98,7 +98,7 @@ export const widgetRotateRanking= { | ||
| 98 | name: 'refreshTime', | 98 | name: 'refreshTime', |
| 99 | relactiveDom: 'dataType', | 99 | relactiveDom: 'dataType', |
| 100 | relactiveDomValue: 'dynamicData', | 100 | relactiveDomValue: 'dynamicData', |
| 101 | - value: 30000 | 101 | + value: 3600000 |
| 102 | }, | 102 | }, |
| 103 | { | 103 | { |
| 104 | type: 'el-button', | 104 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/table/widget-scroll-ranking-board.js
| @@ -98,7 +98,7 @@ export const widgetScrollRankingBoard= { | @@ -98,7 +98,7 @@ export const widgetScrollRankingBoard= { | ||
| 98 | name: 'refreshTime', | 98 | name: 'refreshTime', |
| 99 | relactiveDom: 'dataType', | 99 | relactiveDom: 'dataType', |
| 100 | relactiveDomValue: 'dynamicData', | 100 | relactiveDomValue: 'dynamicData', |
| 101 | - value: 30000 | 101 | + value: 3600000 |
| 102 | }, | 102 | }, |
| 103 | { | 103 | { |
| 104 | type: 'el-button', | 104 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/table/widget-table.js
| @@ -229,7 +229,7 @@ export const widgetTable = { | @@ -229,7 +229,7 @@ export const widgetTable = { | ||
| 229 | name: 'refreshTime', | 229 | name: 'refreshTime', |
| 230 | relactiveDom: 'dataType', | 230 | relactiveDom: 'dataType', |
| 231 | relactiveDomValue: 'dynamicData', | 231 | relactiveDomValue: 'dynamicData', |
| 232 | - value: 30000 | 232 | + value: 3600000 |
| 233 | }, | 233 | }, |
| 234 | { | 234 | { |
| 235 | type: 'el-button', | 235 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/configure/wordcloudCharts/widget-word-cloud.js
| @@ -244,7 +244,7 @@ export const widgetWordCloud = { | @@ -244,7 +244,7 @@ export const widgetWordCloud = { | ||
| 244 | name: 'refreshTime', | 244 | name: 'refreshTime', |
| 245 | relactiveDom: 'dataType', | 245 | relactiveDom: 'dataType', |
| 246 | relactiveDomValue: 'dynamicData', | 246 | relactiveDomValue: 'dynamicData', |
| 247 | - value: 60000 | 247 | + value: 3600000 |
| 248 | }, | 248 | }, |
| 249 | { | 249 | { |
| 250 | type: 'el-button', | 250 | type: 'el-button', |
src/views/bigscreenDesigner/designer/tools/index.js
| @@ -83,7 +83,7 @@ const screenConfig = { | @@ -83,7 +83,7 @@ const screenConfig = { | ||
| 83 | name: 'refreshTime', | 83 | name: 'refreshTime', |
| 84 | relactiveDom: 'dataType', | 84 | relactiveDom: 'dataType', |
| 85 | relactiveDomValue: 'dynamicData', | 85 | relactiveDomValue: 'dynamicData', |
| 86 | - value: 600000 | 86 | + value: 3600000 |
| 87 | }, | 87 | }, |
| 88 | { | 88 | { |
| 89 | type: 'el-button', | 89 | type: 'el-button', |
src/views/bigscreenDesigner/designer/widget/bar/widgetBarCompareChart.vue
| @@ -7,7 +7,6 @@ | @@ -7,7 +7,6 @@ | ||
| 7 | <script> | 7 | <script> |
| 8 | export default { | 8 | export default { |
| 9 | name: "WidgetBarCompareChart", | 9 | name: "WidgetBarCompareChart", |
| 10 | - //参考 https://www.makeapie.com/editor.html?c=xrJwcCF3NZ | ||
| 11 | components: {}, | 10 | components: {}, |
| 12 | props: { | 11 | props: { |
| 13 | value: Object, | 12 | value: Object, |
src/views/bigscreenDesigner/designer/widget/barline/widgetMoreBarLineChart.vue
src/views/bigscreenDesigner/designer/widget/div/widgetSvg.vue
| @@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
| 3 | --> | 3 | --> |
| 4 | <template> | 4 | <template> |
| 5 | <div id="formStr" :class="['div_Style']" | 5 | <div id="formStr" :class="['div_Style']" |
| 6 | - :style="styleColor" v-html="showText"> | 6 | + :style="styleColor" v-html="showText" v-if="isRouterAlive"> |
| 7 | </div> | 7 | </div> |
| 8 | </template> | 8 | </template> |
| 9 | <script> | 9 | <script> |
| @@ -23,10 +23,16 @@ export default { | @@ -23,10 +23,16 @@ export default { | ||
| 23 | svgData:[], | 23 | svgData:[], |
| 24 | optionsData: {}, | 24 | optionsData: {}, |
| 25 | optionsSetUp: {}, | 25 | optionsSetUp: {}, |
| 26 | + flagInter: null, | ||
| 27 | + isRouterAlive:true, | ||
| 28 | + showText:'' | ||
| 26 | }; | 29 | }; |
| 27 | }, | 30 | }, |
| 31 | + beforeDestroy() { | ||
| 32 | + clearInterval(this.flagInter); | ||
| 33 | + }, | ||
| 28 | computed: { | 34 | computed: { |
| 29 | - ...mapState('dataSource', ['staticData']), | 35 | + ...mapState('dataSource', ['staticData','staticRefreshTime']), |
| 30 | transStyle() { | 36 | transStyle() { |
| 31 | return this.objToOne(this.options); | 37 | return this.objToOne(this.options); |
| 32 | }, | 38 | }, |
| @@ -39,23 +45,10 @@ export default { | @@ -39,23 +45,10 @@ export default { | ||
| 39 | top: this.transStyle.top + "px", | 45 | top: this.transStyle.top + "px", |
| 40 | right: this.transStyle.right + "px" | 46 | right: this.transStyle.right + "px" |
| 41 | }; | 47 | }; |
| 48 | + const svg=this.getShowText(); | ||
| 49 | + this.showText=svg; | ||
| 42 | return styleColor; | 50 | return styleColor; |
| 43 | }, | 51 | }, |
| 44 | - showText() { | ||
| 45 | - const {text, slectedDataType} = this.transStyle; | ||
| 46 | - const key = this.staticData[slectedDataType] || text; | ||
| 47 | - const dataSvg = this.value.setup.dynamicAddSvg; | ||
| 48 | - for (let i = 0; i < dataSvg.length; i++) { | ||
| 49 | - if(dataSvg[i].key==key){ | ||
| 50 | - /** 控制svg图片拖动,原理在于设置svg的viewbox属性,viewbox的第一个参数控制左右位置,第二个参数设置上下位置 */ | ||
| 51 | - /** 控制svg图片放大缩小,原理在于设置svg的viewbox属性,viewbox的第三个参数控制左右大小,第四个参数设置上下大小 */ | ||
| 52 | - //设置svg 自适应 添加属性 viewBox="0,0,640,480" | ||
| 53 | - let svg = dataSvg[i].value; | ||
| 54 | - return svg; | ||
| 55 | - } | ||
| 56 | - } | ||
| 57 | - return ""; | ||
| 58 | - }, | ||
| 59 | }, | 52 | }, |
| 60 | watch: { | 53 | watch: { |
| 61 | value: { | 54 | value: { |
| @@ -71,20 +64,56 @@ export default { | @@ -71,20 +64,56 @@ export default { | ||
| 71 | mounted() { | 64 | mounted() { |
| 72 | this.options = this.value; | 65 | this.options = this.value; |
| 73 | this.optionsData = this.value.data; | 66 | this.optionsData = this.value.data; |
| 67 | + this.setSvgValue(); | ||
| 74 | }, | 68 | }, |
| 75 | methods: { | 69 | methods: { |
| 76 | initData() { | 70 | initData() { |
| 77 | this.handlerSvgData(); | 71 | this.handlerSvgData(); |
| 78 | }, | 72 | }, |
| 73 | + // vue hack 之强制刷新组件 | ||
| 74 | + reload(){ | ||
| 75 | + this.isRouterAlive=false; | ||
| 76 | + this.$nextTick(function(){ | ||
| 77 | + this.isRouterAlive=true; | ||
| 78 | + }) | ||
| 79 | + }, | ||
| 79 | handlerSvgData(){ | 80 | handlerSvgData(){ |
| 80 | const data = this.optionsSetUp.dynamicAddSvg; | 81 | const data = this.optionsSetUp.dynamicAddSvg; |
| 81 | this.svgData = data; | 82 | this.svgData = data; |
| 82 | }, | 83 | }, |
| 83 | - getSvgValue(key){ | ||
| 84 | - const data = this.optionsSetUp.dynamicAddSvg; | ||
| 85 | - for (let i = 0; i < data.length; i++) { | ||
| 86 | - if(data[i].key==key){ | ||
| 87 | - return data[i].value; | 84 | + //初始化设置SVG值 |
| 85 | + setSvgValue(){ | ||
| 86 | + const {slectedDataType} = this.transStyle; | ||
| 87 | + if(this.isNotBlank(slectedDataType)){ | ||
| 88 | + const refreshTime = this.staticRefreshTime || 300000; | ||
| 89 | + this.dynamicDataFn(refreshTime); | ||
| 90 | + } | ||
| 91 | + }, | ||
| 92 | + dynamicDataFn(refreshTime) { | ||
| 93 | + if (this.ispreview) { | ||
| 94 | + this.flagInter = setInterval(() => { | ||
| 95 | + this.getEchartData(); | ||
| 96 | + }, refreshTime); | ||
| 97 | + } else { | ||
| 98 | + this.getEchartData(); | ||
| 99 | + } | ||
| 100 | + }, | ||
| 101 | + getEchartData() { | ||
| 102 | + const svg = this.getShowText(); | ||
| 103 | + this.showText=svg; | ||
| 104 | + this.reload(); | ||
| 105 | + }, | ||
| 106 | + getShowText() { | ||
| 107 | + const {text, slectedDataType} = this.transStyle; | ||
| 108 | + const key = this.staticData[slectedDataType] || text; | ||
| 109 | + const dataSvg = this.value.setup.dynamicAddSvg; | ||
| 110 | + for (let i = 0; i < dataSvg.length; i++) { | ||
| 111 | + if(dataSvg[i].key==key){ | ||
| 112 | + /** 控制svg图片拖动,原理在于设置svg的viewbox属性,viewbox的第一个参数控制左右位置,第二个参数设置上下位置 */ | ||
| 113 | + /** 控制svg图片放大缩小,原理在于设置svg的viewbox属性,viewbox的第三个参数控制左右大小,第四个参数设置上下大小 */ | ||
| 114 | + //设置svg 自适应 添加属性 viewBox="0,0,640,480" | ||
| 115 | + let svg = dataSvg[i].value; | ||
| 116 | + return svg; | ||
| 88 | } | 117 | } |
| 89 | } | 118 | } |
| 90 | return ""; | 119 | return ""; |
src/views/bigscreenDesigner/designer/widget/line/widgetLineCompareChart.vue
| @@ -7,7 +7,6 @@ | @@ -7,7 +7,6 @@ | ||
| 7 | <script> | 7 | <script> |
| 8 | export default { | 8 | export default { |
| 9 | name: "WidgetBarCompareChart", | 9 | name: "WidgetBarCompareChart", |
| 10 | - //参考 https://www.makeapie.com/editor.html?c=xOjLyozu2W | ||
| 11 | components: {}, | 10 | components: {}, |
| 12 | props: { | 11 | props: { |
| 13 | value: Object, | 12 | value: Object, |
src/views/bigscreenDesigner/designer/widget/line/widgetLineStackChart.vue
| 1 | +<!-- 折线堆叠图 json--> | ||
| 1 | <template> | 2 | <template> |
| 2 | <div :style="styleObj"> | 3 | <div :style="styleObj"> |
| 3 | <v-chart :options="options" autoresize/> | 4 | <v-chart :options="options" autoresize/> |
| @@ -51,7 +52,8 @@ export default { | @@ -51,7 +52,8 @@ export default { | ||
| 51 | barBorderRadius: null | 52 | barBorderRadius: null |
| 52 | } | 53 | } |
| 53 | } | 54 | } |
| 54 | - ] | 55 | + ], |
| 56 | + dataZoom:[] | ||
| 55 | }, | 57 | }, |
| 56 | optionsStyle: {}, // 样式 | 58 | optionsStyle: {}, // 样式 |
| 57 | optionsData: {}, // 数据 | 59 | optionsData: {}, // 数据 |
| @@ -99,6 +101,7 @@ export default { | @@ -99,6 +101,7 @@ export default { | ||
| 99 | this.setOptionsTooltip(); | 101 | this.setOptionsTooltip(); |
| 100 | this.setOptionsMargin(); | 102 | this.setOptionsMargin(); |
| 101 | this.setOptionsLegend(); | 103 | this.setOptionsLegend(); |
| 104 | + this.setOptionsDataZoom(); | ||
| 102 | this.setOptionsData(); | 105 | this.setOptionsData(); |
| 103 | }, | 106 | }, |
| 104 | // 标题修改 | 107 | // 标题修改 |
| @@ -268,6 +271,27 @@ export default { | @@ -268,6 +271,27 @@ export default { | ||
| 268 | }; | 271 | }; |
| 269 | legend.itemWidth = optionsSetup.legendWidth; | 272 | legend.itemWidth = optionsSetup.legendWidth; |
| 270 | }, | 273 | }, |
| 274 | + //下方滑块设置 | ||
| 275 | + setOptionsDataZoom() { | ||
| 276 | + const optionsSetup = this.optionsSetup; | ||
| 277 | + const dataZoom ={}; | ||
| 278 | + const dataZoomList =[]; | ||
| 279 | + dataZoom.type= 'slider'; | ||
| 280 | + dataZoom.show= optionsSetup.isShowZoom;//显示滚动条 | ||
| 281 | + dataZoom.zoomLock=false;//锁定滚动条缩放,(固定滚动条长度) | ||
| 282 | + dataZoom.left=optionsSetup.bottomLeft+'%';//离左边的百分比距离 | ||
| 283 | + dataZoom.bottom=optionsSetup.bottomZoom;//距离底部距离 | ||
| 284 | + dataZoom.start=optionsSetup.startZoom;//开始位置 | ||
| 285 | + dataZoom.end=optionsSetup.endZoom;//结束位置 | ||
| 286 | + dataZoom.showDataShadow=true; //屏蔽折线图,true为显示折线图 | ||
| 287 | + // dataZoom.barBorderRadius=optionsSetup.borderRadiusZoom; | ||
| 288 | + dataZoom.borderColor=optionsSetup.borderColorZoom; | ||
| 289 | + dataZoom.height=optionsSetup.heightZoom; | ||
| 290 | + dataZoom.backgroundColor=optionsSetup.backgroundColorZoom; | ||
| 291 | + dataZoomList.push(dataZoom); | ||
| 292 | + this.options.dataZoom=dataZoomList; | ||
| 293 | + this.options={...this.options}; | ||
| 294 | + }, | ||
| 271 | // 图例名称设置 | 295 | // 图例名称设置 |
| 272 | setOptionsLegendName(name) { | 296 | setOptionsLegendName(name) { |
| 273 | const optionsSetup = this.optionsSetup; | 297 | const optionsSetup = this.optionsSetup; |
src/views/bigscreenDesigner/designer/widget/line/widgetLinechart.vue
| @@ -25,7 +25,8 @@ export default { | @@ -25,7 +25,8 @@ export default { | ||
| 25 | }, | 25 | }, |
| 26 | tooltip: { | 26 | tooltip: { |
| 27 | trigger: "item", | 27 | trigger: "item", |
| 28 | - formatter: "{a} <br/>{b} : {c}%" | 28 | + formatter: "{a} <br/>{b} : {c}%", |
| 29 | + borderRadius: 8, //边框圆角 | ||
| 29 | }, | 30 | }, |
| 30 | legend: { | 31 | legend: { |
| 31 | textStyle: { | 32 | textStyle: { |
| @@ -51,10 +52,25 @@ export default { | @@ -51,10 +52,25 @@ export default { | ||
| 51 | } | 52 | } |
| 52 | } | 53 | } |
| 53 | }, | 54 | }, |
| 55 | + dataZoom: [], | ||
| 54 | series: [ | 56 | series: [ |
| 55 | { | 57 | { |
| 56 | data: [], | 58 | data: [], |
| 57 | - type: "line" | 59 | + type: "line", |
| 60 | + // markLine: { | ||
| 61 | + // silent: true, | ||
| 62 | + // lineStyle: { | ||
| 63 | + // color: '#333' | ||
| 64 | + // }, | ||
| 65 | + // data: [ | ||
| 66 | + // { | ||
| 67 | + // yAxis: 1000 | ||
| 68 | + // }, | ||
| 69 | + // { | ||
| 70 | + // yAxis: 2000 | ||
| 71 | + // } | ||
| 72 | + // ] | ||
| 73 | + // }, | ||
| 58 | } | 74 | } |
| 59 | ] | 75 | ] |
| 60 | }, | 76 | }, |
| @@ -101,6 +117,7 @@ export default { | @@ -101,6 +117,7 @@ export default { | ||
| 101 | this.setOptionsTitle(); | 117 | this.setOptionsTitle(); |
| 102 | this.setOptionsX(); | 118 | this.setOptionsX(); |
| 103 | this.setOptionsY(); | 119 | this.setOptionsY(); |
| 120 | + this.setOptionsDataZoom(); | ||
| 104 | this.setOptionsTop(); | 121 | this.setOptionsTop(); |
| 105 | this.setOptionsTooltip(); | 122 | this.setOptionsTooltip(); |
| 106 | this.setOptionsData(); | 123 | this.setOptionsData(); |
| @@ -252,6 +269,27 @@ export default { | @@ -252,6 +269,27 @@ export default { | ||
| 252 | } | 269 | } |
| 253 | this.options.series = series; | 270 | this.options.series = series; |
| 254 | }, | 271 | }, |
| 272 | + //下方滑块设置 | ||
| 273 | + setOptionsDataZoom() { | ||
| 274 | + const optionsSetup = this.optionsSetup; | ||
| 275 | + const dataZoom ={}; | ||
| 276 | + const dataZoomList =[]; | ||
| 277 | + dataZoom.type= 'slider'; | ||
| 278 | + dataZoom.show= optionsSetup.isShowZoom;//显示滚动条 | ||
| 279 | + dataZoom.zoomLock=false;//锁定滚动条缩放,(固定滚动条长度) | ||
| 280 | + dataZoom.left=optionsSetup.bottomLeft+'px';//离左边的百分比距离 | ||
| 281 | + dataZoom.bottom=optionsSetup.bottomZoom;//距离底部距离 | ||
| 282 | + dataZoom.start=optionsSetup.startZoom;//开始位置 | ||
| 283 | + dataZoom.end=optionsSetup.endZoom;//结束位置 | ||
| 284 | + dataZoom.showDataShadow=true; //屏蔽折线图,true为显示折线图 | ||
| 285 | + // dataZoom.barBorderRadius=optionsSetup.borderRadiusZoom; | ||
| 286 | + dataZoom.borderColor=optionsSetup.borderColorZoom; | ||
| 287 | + dataZoom.height=optionsSetup.heightZoom; | ||
| 288 | + dataZoom.backgroundColor=optionsSetup.backgroundColorZoom; | ||
| 289 | + dataZoomList.push(dataZoom); | ||
| 290 | + this.options.dataZoom=dataZoomList; | ||
| 291 | + this.options={...this.options}; | ||
| 292 | + }, | ||
| 255 | // tooltip 设置 | 293 | // tooltip 设置 |
| 256 | setOptionsTooltip() { | 294 | setOptionsTooltip() { |
| 257 | const optionsSetup = this.optionsSetup; | 295 | const optionsSetup = this.optionsSetup; |
| @@ -351,4 +389,7 @@ export default { | @@ -351,4 +389,7 @@ export default { | ||
| 351 | height: 100%; | 389 | height: 100%; |
| 352 | overflow: hidden; | 390 | overflow: hidden; |
| 353 | } | 391 | } |
| 392 | +.echarts-slider-handle { | ||
| 393 | + border-radius: 8px; | ||
| 394 | +} | ||
| 354 | </style> | 395 | </style> |
src/views/bigscreenDesigner/designer/widget/percent/widgetProgress.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="progress" :style="styleColor"> | 2 | <div class="progress" :style="styleColor"> |
| 3 | - <el-progress class="progress-content" :percentage="dataList.percentage" :strokeWidth="dataList.strokeWidth" | ||
| 4 | - :showText="dataList.showText" :textInside="dataList.textInside" :color="dataList.color"></el-progress> | 3 | + <el-progress class="progress-content" :strokeWidth="dataList.strokeWidth" |
| 4 | + :showText="dataList.showText" :textInside="dataList.textInside" :color="dataList.color" :percentage="dataList.percentage" v-if="isRouterAlive" ></el-progress> | ||
| 5 | </div> | 5 | </div> |
| 6 | </template> | 6 | </template> |
| 7 | <script> | 7 | <script> |
| @@ -13,15 +13,29 @@ export default { | @@ -13,15 +13,29 @@ export default { | ||
| 13 | value: Object, | 13 | value: Object, |
| 14 | ispreview: Boolean | 14 | ispreview: Boolean |
| 15 | }, | 15 | }, |
| 16 | + created() { | ||
| 17 | + this.options = this.value; | ||
| 18 | + }, | ||
| 19 | + provide(){ | ||
| 20 | + return{ | ||
| 21 | + reload:this.reload | ||
| 22 | + } | ||
| 23 | + }, | ||
| 16 | data() { | 24 | data() { |
| 17 | return { | 25 | return { |
| 18 | - options: {} | 26 | + options: {}, |
| 27 | + flagInter: null, | ||
| 28 | + isRouterAlive:true | ||
| 19 | }; | 29 | }; |
| 20 | }, | 30 | }, |
| 31 | + beforeDestroy() { | ||
| 32 | + clearInterval(this.flagInter); | ||
| 33 | + }, | ||
| 21 | computed: { | 34 | computed: { |
| 22 | - ...mapState('dataSource', ['staticData']), | 35 | + ...mapState('dataSource', ['staticData','staticRefreshTime']), |
| 23 | transStyle() { | 36 | transStyle() { |
| 24 | - return this.objToOne(this.options); | 37 | + const obj = this.objToOne(this.options); |
| 38 | + return obj; | ||
| 25 | }, | 39 | }, |
| 26 | styleColor() { | 40 | styleColor() { |
| 27 | let result = { | 41 | let result = { |
| @@ -58,19 +72,19 @@ export default { | @@ -58,19 +72,19 @@ export default { | ||
| 58 | strokeWidth: this.transStyle.strokeWidth || 6, | 72 | strokeWidth: this.transStyle.strokeWidth || 6, |
| 59 | showText: this.transStyle.showText, | 73 | showText: this.transStyle.showText, |
| 60 | textInside: this.transStyle.textInside, | 74 | textInside: this.transStyle.textInside, |
| 61 | - color: this.transStyle.color, | ||
| 62 | - percentage: 0 | 75 | + color : this.transStyle.color, |
| 76 | + percentage : 40 | ||
| 63 | }; | 77 | }; |
| 64 | - const percentage = this.staticData[this.transStyle.slectedDataType]; | ||
| 65 | - const slectedDataColor = this.staticData[this.transStyle.slectedDataColor]; | ||
| 66 | - if (percentage) { | ||
| 67 | - result.percentage = parseInt(percentage); | 78 | + let percentage = this.getShowText(); |
| 79 | + const slectedDataColor = this.getColor(); | ||
| 80 | + if (this.isNotNull(percentage)) { | ||
| 81 | + let percentageValue = parseInt(percentage); | ||
| 82 | + percentage = (percentageValue>100)?100:percentageValue; | ||
| 83 | + result.percentage= percentage; | ||
| 68 | }else{ | 84 | }else{ |
| 69 | result.percentage =0; | 85 | result.percentage =0; |
| 70 | } | 86 | } |
| 71 | - if (slectedDataColor) { | ||
| 72 | - result.color = slectedDataColor; | ||
| 73 | - } | 87 | + result.color = slectedDataColor; |
| 74 | return result; | 88 | return result; |
| 75 | } | 89 | } |
| 76 | }, | 90 | }, |
| @@ -78,15 +92,60 @@ export default { | @@ -78,15 +92,60 @@ export default { | ||
| 78 | value: { | 92 | value: { |
| 79 | handler(val) { | 93 | handler(val) { |
| 80 | this.options = val; | 94 | this.options = val; |
| 95 | + this.setOptionsData(); | ||
| 81 | }, | 96 | }, |
| 82 | deep: true | 97 | deep: true |
| 83 | } | 98 | } |
| 84 | }, | 99 | }, |
| 85 | - created() { | ||
| 86 | - this.options = this.value; | 100 | + mounted() { |
| 101 | + this.setOptionsData(); | ||
| 87 | }, | 102 | }, |
| 88 | - mounted() { }, | ||
| 89 | - methods: {} | 103 | + methods: { |
| 104 | + // 数据解析 | ||
| 105 | + setOptionsData() { | ||
| 106 | + const {slectedDataType} = this.transStyle; | ||
| 107 | + if(this.isNotBlank(slectedDataType)){ | ||
| 108 | + const refreshTime = this.staticRefreshTime || 300000; | ||
| 109 | + this.dynamicDataFn(refreshTime); | ||
| 110 | + } | ||
| 111 | + }, | ||
| 112 | + dynamicDataFn(refreshTime) { | ||
| 113 | + if (this.ispreview) { | ||
| 114 | + this.flagInter = setInterval(() => { | ||
| 115 | + this.getEchartData(); | ||
| 116 | + }, refreshTime); | ||
| 117 | + } else { | ||
| 118 | + this.getEchartData(); | ||
| 119 | + } | ||
| 120 | + }, | ||
| 121 | + getEchartData() { | ||
| 122 | + this.setShowText(); | ||
| 123 | + | ||
| 124 | + }, | ||
| 125 | + setShowText() { | ||
| 126 | + let val = this.getShowText(); | ||
| 127 | + val=this.isBlank(val)?0:(parseInt(val)>100)?100:parseInt(val); | ||
| 128 | + const color = this.getColor(); | ||
| 129 | + this.dataList.percentage = val; | ||
| 130 | + this.dataList.color = color; | ||
| 131 | + this.reload(); | ||
| 132 | + }, | ||
| 133 | + // vue hack 之强制刷新组件 | ||
| 134 | + reload(){ | ||
| 135 | + this.isRouterAlive=false; | ||
| 136 | + this.$nextTick(function(){ | ||
| 137 | + this.isRouterAlive=true; | ||
| 138 | + }) | ||
| 139 | + }, | ||
| 140 | + getShowText() { | ||
| 141 | + const {slectedDataType} = this.transStyle; | ||
| 142 | + return this.staticData[slectedDataType] || 0; | ||
| 143 | + }, | ||
| 144 | + getColor() { | ||
| 145 | + const {slectedDataColor} = this.transStyle; | ||
| 146 | + return this.staticData[slectedDataColor] || this.transStyle.color; | ||
| 147 | + }, | ||
| 148 | + } | ||
| 90 | }; | 149 | }; |
| 91 | </script> | 150 | </script> |
| 92 | 151 |
src/views/bigscreenDesigner/designer/widget/text/widgetDigitalFlopSingle.vue
| @@ -9,12 +9,6 @@ | @@ -9,12 +9,6 @@ | ||
| 9 | > | 9 | > |
| 10 | <dv-digital-flop :config="dataValue"></dv-digital-flop> | 10 | <dv-digital-flop :config="dataValue"></dv-digital-flop> |
| 11 | </div> | 11 | </div> |
| 12 | - | ||
| 13 | -<!-- //遍历数字插入--> | ||
| 14 | -<!-- <div :style="cardClass()"><dv-digital-flop :config="options.data"></dv-digital-flop></div>--> | ||
| 15 | -<!-- <div :style="cardClass()">3</div>--> | ||
| 16 | -<!-- <div :style="cardClass2()">,</div>--> | ||
| 17 | -<!-- <div :style="cardClass()">7</div>--> | ||
| 18 | </div> | 12 | </div> |
| 19 | </div> | 13 | </div> |
| 20 | </template> | 14 | </template> |
src/views/bigscreenDesigner/designer/widget/text/widgetMarquee.vue
| 1 | <template> | 1 | <template> |
| 2 | <div class="text" :style="styleColor"> | 2 | <div class="text" :style="styleColor"> |
| 3 | - <marquee behavior="" :direction="styleColor.direction">{{ | ||
| 4 | - showText | ||
| 5 | - }}</marquee> | 3 | + <marquee behavior="" :direction="styleColor.direction" v-if="isRouterAlive" v-html="showText" ></marquee> |
| 6 | </div> | 4 | </div> |
| 7 | </template> | 5 | </template> |
| 8 | 6 | ||
| @@ -14,16 +12,26 @@ export default { | @@ -14,16 +12,26 @@ export default { | ||
| 14 | components: {}, | 12 | components: {}, |
| 15 | props: { | 13 | props: { |
| 16 | value: Object, | 14 | value: Object, |
| 17 | - ispreview: Boolean | 15 | + ispreview: Boolean, |
| 16 | + }, | ||
| 17 | + beforeDestroy() { | ||
| 18 | + clearInterval(this.flagInter); | ||
| 18 | }, | 19 | }, |
| 19 | data() { | 20 | data() { |
| 20 | return { | 21 | return { |
| 21 | - options: {} | 22 | + options: {}, |
| 23 | + flagInter: null, | ||
| 24 | + isRouterAlive:true, | ||
| 25 | + showText:'' | ||
| 22 | }; | 26 | }; |
| 23 | }, | 27 | }, |
| 24 | computed: { | 28 | computed: { |
| 25 | - ...mapState('dataSource', ['staticData']), | 29 | + ...mapState('dataSource', ['staticData','staticRefreshTime']), |
| 26 | transStyle() { | 30 | transStyle() { |
| 31 | + const obj = this.objToOne(this.options); | ||
| 32 | + const {text, slectedDataType} = obj; | ||
| 33 | + const val = this.staticData[slectedDataType] || text; | ||
| 34 | + this.showText = val; | ||
| 27 | return this.objToOne(this.options); | 35 | return this.objToOne(this.options); |
| 28 | }, | 36 | }, |
| 29 | styleColor() { | 37 | styleColor() { |
| @@ -48,10 +56,6 @@ export default { | @@ -48,10 +56,6 @@ export default { | ||
| 48 | isBehavior() { | 56 | isBehavior() { |
| 49 | return this.styleColor.marqueeSet ? "start()" : "stop()"; | 57 | return this.styleColor.marqueeSet ? "start()" : "stop()"; |
| 50 | }, | 58 | }, |
| 51 | - showText() { | ||
| 52 | - const {text, slectedDataType} = this.transStyle; | ||
| 53 | - return this.staticData[slectedDataType] || text; | ||
| 54 | - } | ||
| 55 | }, | 59 | }, |
| 56 | watch: { | 60 | watch: { |
| 57 | value: { | 61 | value: { |
| @@ -71,28 +75,39 @@ export default { | @@ -71,28 +75,39 @@ export default { | ||
| 71 | methods: { | 75 | methods: { |
| 72 | // 数据解析 | 76 | // 数据解析 |
| 73 | setOptionsData() { | 77 | setOptionsData() { |
| 74 | - const optionsData = this.optionsData; // 数据类型 静态 or 动态 | ||
| 75 | - if (optionsData.dataType == "dynamicData") { | ||
| 76 | - this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime); | ||
| 77 | - } else {}; | 78 | + const {slectedDataType} = this.transStyle; |
| 79 | + if(this.isNotBlank(slectedDataType)){ | ||
| 80 | + const refreshTime = this.staticRefreshTime || 300000; | ||
| 81 | + this.dynamicDataFn(refreshTime); | ||
| 82 | + } | ||
| 83 | + }, | ||
| 84 | + setShowTextRolad(){ | ||
| 85 | + this.setShowText(); | ||
| 86 | + this.reload(); | ||
| 87 | + }, | ||
| 88 | + setShowText() { | ||
| 89 | + const {text, slectedDataType} = this.transStyle; | ||
| 90 | + const val = this.staticData[slectedDataType] || text; | ||
| 91 | + this.showText = val; | ||
| 92 | + }, | ||
| 93 | + // vue hack 之强制刷新组件 | ||
| 94 | + reload(){ | ||
| 95 | + this.isRouterAlive=false; | ||
| 96 | + this.$nextTick(function(){ | ||
| 97 | + this.isRouterAlive=true; | ||
| 98 | + }) | ||
| 78 | }, | 99 | }, |
| 79 | - dynamicDataFn(val, refreshTime) { | ||
| 80 | - if (!val) return; | 100 | + dynamicDataFn(refreshTime) { |
| 81 | if (this.ispreview) { | 101 | if (this.ispreview) { |
| 82 | - this.getEchartData(val); | ||
| 83 | this.flagInter = setInterval(() => { | 102 | this.flagInter = setInterval(() => { |
| 84 | - this.getEchartData(val); | 103 | + this.getEchartData(); |
| 85 | }, refreshTime); | 104 | }, refreshTime); |
| 86 | } else { | 105 | } else { |
| 87 | - this.getEchartData(val); | 106 | + this.getEchartData(); |
| 88 | } | 107 | } |
| 89 | }, | 108 | }, |
| 90 | - getEchartData(val) { | ||
| 91 | - const data = this.queryEchartsData(val); | ||
| 92 | - data.then(res => { | ||
| 93 | - this.styleColor.text = res[0].value; | ||
| 94 | - this.$forceUpdate(); | ||
| 95 | - }); | 109 | + getEchartData() { |
| 110 | + this.setShowTextRolad(); | ||
| 96 | } | 111 | } |
| 97 | } | 112 | } |
| 98 | }; | 113 | }; |
src/views/bigscreenDesigner/designer/widget/text/widgetStatus.vue
src/views/bigscreenDesigner/designer/widget/text/widgetText.vue
| @@ -31,11 +31,11 @@ export default { | @@ -31,11 +31,11 @@ export default { | ||
| 31 | computed: { | 31 | computed: { |
| 32 | ...mapState('dataSource', ['staticData','staticRefreshTime']), | 32 | ...mapState('dataSource', ['staticData','staticRefreshTime']), |
| 33 | transStyle() { | 33 | transStyle() { |
| 34 | - const obj = this.objToOne(this.options); | ||
| 35 | - const {text, slectedDataType} = obj; | ||
| 36 | - const val = this.staticData[slectedDataType] || text; | ||
| 37 | - this.showText = val; | ||
| 38 | - return obj; | 34 | + const obj = this.objToOne(this.options); |
| 35 | + const {text, slectedDataType} = obj; | ||
| 36 | + const val = this.staticData[slectedDataType] || text; | ||
| 37 | + this.showText = val; | ||
| 38 | + return obj; | ||
| 39 | }, | 39 | }, |
| 40 | styleColor() { | 40 | styleColor() { |
| 41 | return { | 41 | return { |
| @@ -61,7 +61,6 @@ export default { | @@ -61,7 +61,6 @@ export default { | ||
| 61 | this.options = val; | 61 | this.options = val; |
| 62 | this.optionsData = val.data; | 62 | this.optionsData = val.data; |
| 63 | this.setOptionsData(); | 63 | this.setOptionsData(); |
| 64 | - this.setShowText(); | ||
| 65 | }, | 64 | }, |
| 66 | deep: true | 65 | deep: true |
| 67 | }, | 66 | }, |
| @@ -69,6 +68,7 @@ export default { | @@ -69,6 +68,7 @@ export default { | ||
| 69 | mounted() { | 68 | mounted() { |
| 70 | this.options = this.value; | 69 | this.options = this.value; |
| 71 | this.optionsData = this.value.data; | 70 | this.optionsData = this.value.data; |
| 71 | + //设置定时器 | ||
| 72 | this.setOptionsData(); | 72 | this.setOptionsData(); |
| 73 | }, | 73 | }, |
| 74 | methods: { | 74 | methods: { |
src/views/bigscreenDesigner/designer/widget/text/widgetWaterLevelPond.vue
| @@ -36,7 +36,7 @@ export default { | @@ -36,7 +36,7 @@ export default { | ||
| 36 | }; | 36 | }; |
| 37 | }, | 37 | }, |
| 38 | computed: { | 38 | computed: { |
| 39 | - ...mapState('dataSource', ['staticData']), | 39 | + ...mapState('dataSource', ['staticData','staticRefreshTime']), |
| 40 | styleObj() { | 40 | styleObj() { |
| 41 | return { | 41 | return { |
| 42 | position: this.ispreview ? "absolute" : "static", | 42 | position: this.ispreview ? "absolute" : "static", |
| @@ -68,13 +68,12 @@ export default { | @@ -68,13 +68,12 @@ export default { | ||
| 68 | methods: { | 68 | methods: { |
| 69 | // 修改图标options属性 | 69 | // 修改图标options属性 |
| 70 | editorOptions() { | 70 | editorOptions() { |
| 71 | - //水位位置 | ||
| 72 | - this.showText(); | ||
| 73 | //颜色值修改 | 71 | //颜色值修改 |
| 74 | this.setOptionsColor(); | 72 | this.setOptionsColor(); |
| 75 | //数据修改 | 73 | //数据修改 |
| 76 | this.setOptionsData(); | 74 | this.setOptionsData(); |
| 77 | - | 75 | + //水位位置 |
| 76 | + this.showText(); | ||
| 78 | }, | 77 | }, |
| 79 | // 颜色修改 | 78 | // 颜色修改 |
| 80 | setOptionsColor() { | 79 | setOptionsColor() { |
| @@ -90,10 +89,23 @@ export default { | @@ -90,10 +89,23 @@ export default { | ||
| 90 | }, | 89 | }, |
| 91 | //水位位置 | 90 | //水位位置 |
| 92 | showText() { | 91 | showText() { |
| 92 | + const {slectedDataType} = this.optionsSetup; | ||
| 93 | + let dataArray = this.getShowText(); | ||
| 94 | + if(this.isNotBlank(slectedDataType)){ | ||
| 95 | + const refreshTime = this.staticRefreshTime || 300000; | ||
| 96 | + this.dynamicDataFn(refreshTime); | ||
| 97 | + }else{ | ||
| 98 | + this.setShowText(dataArray); | ||
| 99 | + } | ||
| 100 | + }, | ||
| 101 | + getShowText() { | ||
| 93 | const {slectedDataType,waterLevelPondDataText} = this.optionsSetup; | 102 | const {slectedDataType,waterLevelPondDataText} = this.optionsSetup; |
| 94 | let datav = this.staticData[slectedDataType] || waterLevelPondDataText; | 103 | let datav = this.staticData[slectedDataType] || waterLevelPondDataText; |
| 95 | - let dataArray = datav.toString().split(","); | 104 | + return this.isNotBlank(datav)?datav.toString().split(","):[0]; |
| 105 | + }, | ||
| 106 | + setShowText(dataArray) { | ||
| 96 | this.options.data = dataArray; | 107 | this.options.data = dataArray; |
| 108 | + this.options={...this.options}; | ||
| 97 | }, | 109 | }, |
| 98 | // 数据修改 | 110 | // 数据修改 |
| 99 | setOptionsData() { | 111 | setOptionsData() { |
| @@ -104,9 +116,21 @@ export default { | @@ -104,9 +116,21 @@ export default { | ||
| 104 | this.options.waveOpacity= waveOpacity/100;//波浪透明度 | 116 | this.options.waveOpacity= waveOpacity/100;//波浪透明度 |
| 105 | this.options.formatter = optionsSetup.formatter; | 117 | this.options.formatter = optionsSetup.formatter; |
| 106 | this.options.waveNum = optionsSetup.waveNum;//波浪数量 | 118 | this.options.waveNum = optionsSetup.waveNum;//波浪数量 |
| 107 | - this.options={...this.options}; | ||
| 108 | }, | 119 | }, |
| 109 | - | 120 | + //定时动态数据获取 |
| 121 | + dynamicDataFn(refreshTime) { | ||
| 122 | + if (this.ispreview) { | ||
| 123 | + this.flagInter = setInterval(() => { | ||
| 124 | + this.getEchartData(); | ||
| 125 | + }, refreshTime); | ||
| 126 | + } else { | ||
| 127 | + this.getEchartData(); | ||
| 128 | + } | ||
| 129 | + }, | ||
| 130 | + getEchartData() { | ||
| 131 | + const dataArray = this.getShowText(); | ||
| 132 | + this.setShowText(dataArray); | ||
| 133 | + } | ||
| 110 | } | 134 | } |
| 111 | }; | 135 | }; |
| 112 | 136 |
src/views/bigscreenDesigner/viewer/index.vue
| @@ -18,6 +18,9 @@ | @@ -18,6 +18,9 @@ | ||
| 18 | import widget from "../designer/widget/temp"; | 18 | import widget from "../designer/widget/temp"; |
| 19 | import { detailDashboard } from "@/api/bigscreen"; | 19 | import { detailDashboard } from "@/api/bigscreen"; |
| 20 | import { mapMutations } from 'vuex'; | 20 | import { mapMutations } from 'vuex'; |
| 21 | +import loadingViewerVue from 'loading-view-vue' | ||
| 22 | +import Vue from "vue"; | ||
| 23 | +Vue.use(loadingViewerVue,{mode:"5"}); | ||
| 21 | export default { | 24 | export default { |
| 22 | name: "Login", | 25 | name: "Login", |
| 23 | components: { | 26 | components: { |
| @@ -37,7 +40,9 @@ export default { | @@ -37,7 +40,9 @@ export default { | ||
| 37 | ...mapMutations('dataSource', ['SET_STATIC_DATA','SET_REFRESHTIME']), | 40 | ...mapMutations('dataSource', ['SET_STATIC_DATA','SET_REFRESHTIME']), |
| 38 | async getData() { | 41 | async getData() { |
| 39 | const reportCode = this.$route.query.reportCode; | 42 | const reportCode = this.$route.query.reportCode; |
| 43 | + this.$showLoading(); | ||
| 40 | const { code, data } = await detailDashboard(reportCode); | 44 | const { code, data } = await detailDashboard(reportCode); |
| 45 | + this.$hideLoading(); | ||
| 41 | if (code != 200) return; | 46 | if (code != 200) return; |
| 42 | const equipment = document.body.clientWidth; | 47 | const equipment = document.body.clientWidth; |
| 43 | const ratioEquipment = equipment / data.dashboard.width; | 48 | const ratioEquipment = equipment / data.dashboard.width; |