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 {