From fee68de5515d8e3130ab89398f76f99de9870911 Mon Sep 17 00:00:00 2001 From: Raod <1130305001@qq.com> Date: Mon, 28 Jun 2021 17:56:14 +0800 Subject: [PATCH 1/6] WidgetGradientColorBarchart --- .../views/report/bigscreen/designer/tools.js | 550 ++++++------------ .../bar/widgetGradientColorBarchart.vue | 42 +- 2 files changed, 208 insertions(+), 384 deletions(-) diff --git a/report-ui/src/views/report/bigscreen/designer/tools.js b/report-ui/src/views/report/bigscreen/designer/tools.js index 9442d7c8..2febb36f 100644 --- a/report-ui/src/views/report/bigscreen/designer/tools.js +++ b/report-ui/src/views/report/bigscreen/designer/tools.js @@ -1506,14 +1506,6 @@ const widgetTools = [ placeholder: '', value: '柱状图', }, - { - type: 'el-switch', - label: '竖展示', - name: 'verticalShow', - required: false, - placeholder: '', - value: false, - }, { type: 'vue-color', label: '背景颜色', @@ -1523,35 +1515,6 @@ const widgetTools = [ value: '' }, [ - // { - // name: '柱体设置', - // list: [ - // { - // type: 'el-slider', - // label: '最大宽度', - // name: 'maxWidth', - // required: false, - // placeholder: '', - // value: 10, - // }, - // { - // type: 'el-slider', - // label: '圆角', - // name: 'radius', - // require: false, - // placeholder: '', - // value: 5, - // }, - // { - // type: 'el-slider', - // label: '最小高度', - // name: 'minHeight', - // require: false, - // placeholder: '', - // value: 0, - // }, - // ], - // }, { name: '标题设置', list: [ @@ -1654,325 +1617,200 @@ const widgetTools = [ }, ], }, - // { - // name: 'X轴设置', - // list: [ - // { - // type: 'el-input-text', - // label: '名称', - // name: 'xName', - // required: false, - // placeholder: '', - // value: '' - // }, - // { - // type: 'el-switch', - // label: '显示', - // name: 'hideX', - // required: false, - // placeholder: '', - // value: true, - // }, - // { - // type: 'vue-color', - // label: '坐标名颜色', - // name: 'xNameColor', - // required: false, - // placeholder: '', - // value: '#fff' - // }, - // { - // type: 'el-input-number', - // label: '字体大小', - // name: 'xNameFontSize', - // required: false, - // placeholder: '', - // value: 12 - // }, - // { - // type: 'el-slider', - // label: '文字角度', - // name: 'textAngle', - // required: false, - // placeholder: '', - // value: 0 - // }, - // { - // type: 'el-input-number', - // label: '文字间隔', - // name: 'textInterval', - // required: false, - // placeholder: '', - // value: '' - // }, - // { - // type: 'el-switch', - // label: '轴反转', - // name: 'reversalX', - // required: false, - // placeholder: '', - // value: '' - // }, - // { - // type: 'vue-color', - // label: '颜色', - // name: 'Xcolor', - // required: false, - // placeholder: '', - // value: '#fff', - // }, - // { - // type: 'el-input-number', - // label: '字号', - // name: 'fontSizeX', - // required: false, - // placeholder: '', - // value: 12, - // }, - // ], - // }, - // { - // name: 'Y轴设置', - // list: [ - // { - // type: 'el-input-text', - // label: '名称', - // name: 'textNameY', - // require: false, - // placeholder: '', - // value: '' - // }, - // { - // type: 'el-switch', - // label: '显示', - // name: 'isShowY', - // require: false, - // placeholder: '', - // value: true, - // }, - // { - // type: 'vue-color', - // label: '坐标名颜色', - // name: 'NameColorY', - // required: false, - // placeholder: '', - // value: '#fff', - // }, - // { - // type: 'el-input-number', - // label: '字体大小', - // name: 'NameFontSizeY', - // required: false, - // placeholder: '', - // value: 12, - // }, - // { - // type: 'el-switch', - // label: '轴反转', - // name: 'reversalY', - // required: false, - // placeholder: '', - // value: false - // }, - // { - // type: 'vue-color', - // label: '颜色', - // name: 'colorY', - // required: false, - // placeholder: '', - // value: '#fff', - // }, - // { - // type: 'el-input-number', - // label: '字号', - // name: 'fontSizeY', - // required: false, - // placeholder: '', - // value: 12, - // }, - // ], - // }, - // { - // name: '数值设定', - // list: [ - // { - // type: 'el-switch', - // label: '显示', - // name: 'isShow', - // required: false, - // placeholder: '', - // value: false - // }, - // { - // type: 'el-input-number', - // label: '字体大小', - // name: 'fontSize', - // required: false, - // placeholder: '', - // value: 14 - // }, - // { - // type: 'vue-color', - // label: '字体颜色', - // name: 'subTextColor', - // required: false, - // placeholder: '', - // value: '#fff' - // }, - // { - // type: 'el-select', - // label: '字体粗细', - // name: 'fontWeight', - // required: false, - // placeholder: '', - // selectOptions: [ - // { code: 'normal', name: '正常' }, - // { code: 'bold', name: '粗体' }, - // { code: 'bolder', name: '特粗体' }, - // { code: 'lighter', name: '细体' } - // ], - // value: 'normal' - // }, - // ], - // }, - // { - // name: '提示语设置', - // list: [ - // { - // type: 'el-input-number', - // label: '字体大小', - // name: 'fontSize', - // required: false, - // placeholder: '', - // }, - // { - // type: 'vue-color', - // label: '字体颜色', - // name: 'lineColor', - // required: false, - // placeholder: '', - // }, - // ], - // }, - // { - // name: '坐标轴边距设置', - // list: [ - // { - // type: 'el-slider', - // label: '左边距(像素)', - // name: 'marginLeft', - // required: false, - // placeholder: '', - // value: 10, - // }, { - // type: 'el-slider', - // label: '顶边距(像素)', - // name: 'marginTop', - // required: false, - // placeholder: '', - // value: 50, - // }, { - // type: 'el-slider', - // label: '右边距(像素)', - // name: 'marginRight', - // required: false, - // placeholder: '', - // value: 40, - // }, { - // type: 'el-slider', - // label: '底边距(像素)', - // name: 'marginBottom', - // required: false, - // placeholder: '', - // value: 10, - // }, - // ], - // }, - // { - // name: '图例操作', - // list: [ - // { - // type: 'el-switch', - // label: '图例', - // name: 'isShowLegend', - // required: false, - // placeholder: '', - // value: true, - // }, - // { - // type: 'vue-color', - // label: '字体颜色', - // name: 'lengedColor', - // required: false, - // placeholder: '', - // value: '#fff', - // }, - // { - // type: 'el-input-number', - // label: '字体大小', - // name: 'lengedFontSize', - // required: false, - // placeholder: '', - // value: 16, - // }, - // { - // type: 'el-input-number', - // label: '图例宽度', - // name: 'lengedWidth', - // required: false, - // placeholder: '', - // value: 15, - // }, - // { - // type: 'el-select', - // label: '横向位置', - // name: 'lateralPosition', - // required: false, - // placeholder: '', - // selectOptions: [ - // { code: 'left', name: '左对齐' }, - // { code: 'right', name: '右对齐' }, - // ], - // value: '' - // }, - // { - // type: 'el-select', - // label: '纵向位置', - // name: 'longitudinalPosition', - // required: false, - // placeholder: '', - // selectOptions: [ - // { code: 'top', name: '顶部' }, - // { code: 'bottom', name: '底部' }, - // ], - // value: '' - // }, - // { - // type: 'el-select', - // label: '布局前置', - // name: 'layoutFront', - // required: false, - // placeholder: '', - // selectOptions: [ - // { code: 'vertical', name: '竖排' }, - // { code: 'horizontal', name: '横排' }, - // ], - // value: '' - // }, - // ], - // }, - // { - // name: '自定义配色', - // list: [ - // { - // type: 'customColor', - // label: '', - // name: 'customColor', - // required: false, - // value: [{ color: '#ff7f50' }, { color: '#87cefa' }, { color: '#da70d6' }, { color: '#32cd32' }, { color: '#6495ed' }], - // }, - // ], - // }, + { + name: 'X轴设置', + list: [ + { + type: 'el-input-text', + label: '名称', + name: 'xName', + required: false, + placeholder: '', + value: '' + }, + { + type: 'el-switch', + label: '显示', + name: 'hideX', + required: false, + placeholder: '', + value: true, + }, + { + type: 'vue-color', + label: '坐标名颜色', + name: 'xNameColor', + required: false, + placeholder: '', + value: '#fff' + }, + { + type: 'el-input-number', + label: '字体大小', + name: 'xNameFontSize', + required: false, + placeholder: '', + value: 12 + }, + { + type: 'el-slider', + label: '文字角度', + name: 'textAngle', + required: false, + placeholder: '', + value: 0 + }, + { + type: 'el-input-number', + label: '文字间隔', + name: 'textInterval', + required: false, + placeholder: '', + value: '' + }, + { + type: 'el-switch', + label: '轴反转', + name: 'reversalX', + required: false, + placeholder: '', + value: '' + }, + { + type: 'vue-color', + label: '颜色', + name: 'Xcolor', + required: false, + placeholder: '', + value: '#fff', + }, + { + type: 'el-input-number', + label: '字号', + name: 'fontSizeX', + required: false, + placeholder: '', + value: 12, + }, + ], + }, + { + name: 'Y轴设置', + list: [ + { + type: 'el-input-text', + label: '名称', + name: 'textNameY', + require: false, + placeholder: '', + value: '' + }, + { + type: 'el-switch', + label: '显示', + name: 'isShowY', + require: false, + placeholder: '', + value: true, + }, + { + type: 'vue-color', + label: '坐标名颜色', + name: 'NameColorY', + required: false, + placeholder: '', + value: '#fff', + }, + { + type: 'el-input-number', + label: '字体大小', + name: 'NameFontSizeY', + required: false, + placeholder: '', + value: 12, + }, + { + type: 'el-switch', + label: '轴反转', + name: 'reversalY', + required: false, + placeholder: '', + value: false + }, + { + type: 'vue-color', + label: '颜色', + name: 'colorY', + required: false, + placeholder: '', + value: '#fff', + }, + { + type: 'el-input-number', + label: '字号', + name: 'fontSizeY', + required: false, + placeholder: '', + value: 12, + }, + ], + }, + { + name: '坐标轴边距设置', + list: [ + { + type: 'el-slider', + label: '左边距(像素)', + name: 'marginLeft', + required: false, + placeholder: '', + value: 10, + }, { + type: 'el-slider', + label: '顶边距(像素)', + name: 'marginTop', + required: false, + placeholder: '', + value: 50, + }, { + type: 'el-slider', + label: '右边距(像素)', + name: 'marginRight', + required: false, + placeholder: '', + value: 40, + }, { + type: 'el-slider', + label: '底边距(像素)', + name: 'marginBottom', + required: false, + placeholder: '', + value: 10, + }, + ], + }, + { + name: '渐变色', + list: [ + { + type: 'vue-color', + label: '0%处', + name: 'barStart', + required: false, + placeholder: '', + value: '#00F4FFFF' + }, + { + type: 'vue-color', + label: '100%处', + name: 'barEnd', + required: false, + placeholder: '', + value: '#004DA7FF' + }, + + ], + }, ], ], // 数据 diff --git a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue index 195c5181..e88f76a2 100644 --- a/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue +++ b/report-ui/src/views/report/bigscreen/designer/widget/bar/widgetGradientColorBarchart.vue @@ -16,7 +16,7 @@ data() { return { options: { - backgroundColor: '#00265f', + // backgroundColor: '#00265f', "title": { "text": "政策补贴额度", x: "center", @@ -176,13 +176,13 @@ // 修改图标options属性 editorOptions() { this.setOptionsTitle() - // this.setOptionsX() - // this.setOptionsY() + this.setOptionsX() + this.setOptionsY() // this.setOptionsTop() // this.setOptionsTooltip() - // this.setOptionsMargin() + this.setOptionsMargin() // this.setOptionsLegend() - // this.setOptionsColor() + this.setOptionsColor() this.setOptionsData() }, // 标题修改 @@ -331,29 +331,17 @@ } legend.itemWidth = optionsCollapse.lengedWidth }, - // 图例颜色修改 + // 渐变色 setOptionsColor() { const optionsCollapse = this.optionsSetup - const customColor = optionsCollapse.customColor - if (!customColor) return - const arrColor = [] - for (let i = 0; i < customColor.length; i++) { - arrColor.push(customColor[i].color) - } - const itemStyle = { - normal: { - color: (params) => { - return arrColor[params.dataIndex] - }, - barBorderRadius: optionsCollapse.radius, - }, - } - for (const key in this.options.series) { - if (this.options.series[key].type == 'bar') { - this.options.series[key].itemStyle = itemStyle - } - } - this.options = Object.assign({}, this.options) + const barStart = {} + barStart['offset'] = 0 + barStart['color'] = optionsCollapse.barStart + const barEnd = {} + barStart['offset'] = 1 + barStart['color'] = optionsCollapse.barEnd + // this.options.series[0].itemStyle.normal.color = new echarts.graphic.LinearGradient(0, 0, 0, 1,[ barStart, barEnd], false) + }, // 数据解析 setOptionsData() { @@ -419,8 +407,6 @@ .echarts { width: 100%; height: 100%; - min-width: 200px; - min-height: 200px; overflow: hidden; } From 13b17e3b6eb1d1498c8458310cae350f2921a5f6 Mon Sep 17 00:00:00 2001 From: qianlishi <1432731663@qq.com> Date: Mon, 28 Jun 2021 17:58:30 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=20=E5=9B=BE=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- report-ui/src/components/Dictionary/index.vue | 55 ++-- .../designer/form/customColorComponents.vue | 15 +- .../designer/form/dynamicComponents.vue | 246 ++++++++++-------- .../bigscreen/designer/form/dynamicForm.vue | 7 +- .../views/report/bigscreen/designer/index.vue | 61 +++-- 5 files changed, 220 insertions(+), 164 deletions(-) diff --git a/report-ui/src/components/Dictionary/index.vue b/report-ui/src/components/Dictionary/index.vue index 911775f2..4814d6f0 100644 --- a/report-ui/src/components/Dictionary/index.vue +++ b/report-ui/src/components/Dictionary/index.vue @@ -6,57 +6,68 @@ */ !--> diff --git a/report-ui/src/views/report/bigscreen/designer/form/dynamicForm.vue b/report-ui/src/views/report/bigscreen/designer/form/dynamicForm.vue index ddc80007..da137c85 100644 --- a/report-ui/src/views/report/bigscreen/designer/form/dynamicForm.vue +++ b/report-ui/src/views/report/bigscreen/designer/form/dynamicForm.vue @@ -104,6 +104,7 @@ 编辑 @@ -123,7 +125,7 @@ :bigscreen="{ bigscreenWidth, bigscreenHeight }" @onActivated="setOptionsOnClickWidget" @contextmenu.prevent.native="rightClick($event, index)" - @click.prevent.native="widgetsClick(index)" + @mousedown.prevent.native="widgetsClick(index)" /> @@ -197,6 +199,7 @@ export default { }, data() { return { + layerWidget: [], widgetTools: widgetTools, // 左侧工具栏的组件图标,将js变量加入到当前作用域 widthLeftForTools: 200, // 左侧工具栏宽度 widthLeftForToolsHideButton: 15, // 左侧工具栏折叠按钮宽度 @@ -292,13 +295,14 @@ export default { }, bigscreenHeightInWorkbench() { return this.getPXUnderScale(this.bigscreenHeight); - }, - layerWidget() { - const layerWidgetArr = []; - for (let i = 0; i < this.widgets.length; i++) { - layerWidgetArr.push(getToolByCode(this.widgets[i].type)); - } - return layerWidgetArr; + } + }, + watch: { + widgets: { + handler(val) { + this.handlerLayerWidget(val); + }, + deep: true } }, mounted() { @@ -310,6 +314,22 @@ export default { this.widgets = []; }, methods: { + handlerLayerWidget(val) { + const layerWidgetArr = []; + for (let i = 0; i < val.length; i++) { + console.log(getToolByCode(val[i].type)); + const obj = {}; + obj.icon = getToolByCode(val[i].type).icon; + const options = val[i].options["setup"]; + options.forEach(el => { + if (el.name == "layerName") { + obj.label = el.value; + } + }); + layerWidgetArr.push(obj); + } + this.layerWidget = layerWidgetArr; + }, async initEchartData() { const reportCode = this.$route.query.reportCode; const { code, data } = await detailDashboard(reportCode); @@ -512,7 +532,10 @@ export default { } return widgetJson; }, - + layerClick(index) { + this.widgetIndex = index; + this.widgetsClick(index); + }, // 如果是点击大屏设计器中的底层,加载大屏底层属性 setOptionsOnClickScreen() { this.screenCode = "screen"; @@ -523,6 +546,10 @@ export default { // 如果是点击某个组件,获取该组件的配置项 setOptionsOnClickWidget(obj) { + if (typeof obj == "number") { + this.widgetOptions = this.deepClone(this.widgets[obj]["options"]); + return; + } if (obj.index < 0 || obj.index >= this.widgets.length) { return; } @@ -536,7 +563,6 @@ export default { } } }); - console.log(this.widgets); }, widgetsClick(index) { const draggableArr = this.$refs.widgets; @@ -547,9 +573,9 @@ export default { this.$refs.widgets[i].$refs.draggable.setActive(false); } } + this.setOptionsOnClickWidget(index); }, handleMouseDown() { - console.log(1); const draggableArr = this.$refs.widgets; for (let i = 0; i < draggableArr.length; i++) { this.$refs.widgets[i].$refs.draggable.setActive(false); @@ -557,15 +583,6 @@ export default { }, // 将当前选中的组件,右侧属性值更新 widgetValueChanged(key, val) { - /* 更新指定 this.widgets 中第 this.widgetIndex 个组件的value - widgets: [{ - type: 'widget-text', - value: { - setup:{}, - data: {}, - position: {} - } - }]*/ if (this.screenCode == "screen") { this.dashboard = this.deepClone(val); } @@ -624,6 +641,10 @@ export default {