From 87cb8242044f16546fcccb36e66e69920c8558ca Mon Sep 17 00:00:00 2001 From: "liu.tao3" Date: Tue, 5 Sep 2023 09:14:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=B8=9A=E5=8A=A1=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0g2plot=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packages/BigScreenDesign/index.vue | 2 +- .../packages/BizComponent/Preview.vue | 23 +- .../BizComponent/config/defaultG2Config.js | 511 ++++++++++++++++++ data-room-ui/packages/BizComponent/index.vue | 91 +++- .../packages/RemoteComponents/index.vue | 4 + 5 files changed, 610 insertions(+), 21 deletions(-) create mode 100644 data-room-ui/packages/BizComponent/config/defaultG2Config.js diff --git a/data-room-ui/packages/BigScreenDesign/index.vue b/data-room-ui/packages/BigScreenDesign/index.vue index 44e556aa..05746a48 100644 --- a/data-room-ui/packages/BigScreenDesign/index.vue +++ b/data-room-ui/packages/BigScreenDesign/index.vue @@ -407,7 +407,7 @@ export default { }, // 自定义属性更新 updateSetting (config) { - if (config.type === 'map' || config.type === 'video' || config.type === 'flyMap') { + if (config.type === 'map'|| config.type==='remoteComponent' || config.type === 'video' || config.type === 'flyMap') { config.key = new Date().getTime() } this.changeChartConfig(cloneDeep(config)) diff --git a/data-room-ui/packages/BizComponent/Preview.vue b/data-room-ui/packages/BizComponent/Preview.vue index a7657734..3b4404d4 100644 --- a/data-room-ui/packages/BizComponent/Preview.vue +++ b/data-room-ui/packages/BizComponent/Preview.vue @@ -14,6 +14,8 @@ + +` + +// 配置 片段 +export const defaultG2SettingContent = ` +// 这是一个配置案例 +// 组件备注名称 +const title = 'g2案例' + +// 右侧配置项 +const setting = [ + { + label: '维度', + // 设置组件类型, select / input / colorPicker + type: 'select', + // 字段 + field: 'xField', + optionField: 'xField', // 对应options中的字段 + // 是否多选 + multiple: false, + // 绑定的值 + value: '', + // tab页。 data: 数据, custom: 自定义 + tabName: 'data' + }, + { + label: '指标', + // 设置组件类型 + type: 'select', + // 字段 + field: 'yField', + // 对应options中的字段 + optionField: 'yField', + // 是否多选 + multiple: false, + value: '', + tabName: 'data' + }, + /** 样式配置 **/ + // 图表 graph + { + label: '曲线宽度', + type: 'inputNumber', + field: 'lineStyle_lineWidth', + optionField: 'lineStyle.lineWidth', + value: 2, + tabName: 'custom', + groupName: 'graph' + }, + { + label: '曲线颜色', + type: 'gradual', + field: 'lineStyle_stroke', + optionField: 'lineStyle.stroke', + value: 'l(0) 0:#5F92F9 1:#62FF00', + tabName: 'custom', + groupName: 'graph' + }, + // 网格线 grid + { + label: '虚线', + type: 'switch', + field: 'yAxis_grid_line_style_lineDash', + optionField: 'yAxis.grid.line.style.lineDash', + value: 0, + active: 5, + inactive: 0, + tabName: 'custom', + groupName: 'grid' + }, + { + label: '宽度', + type: 'inputNumber', + field: 'yAxis_grid_line_style_lineWidth', + optionField: 'yAxis.grid.line.style.lineWidth', + value: 1, + tabName: 'custom', + groupName: 'grid' + }, + { + label: '颜色', + type: 'colorPicker', + field: 'yAxis_grid_line_style_stroke', + optionField: 'yAxis.grid.line.style.stroke', + value: '#d0d0d0', + tabName: 'custom', + groupName: 'grid' + }, + // 图例 legend + // X轴 xAxis + { + label: '标题', + type: 'input', + field: 'xAxis_title_text', + optionField: 'xAxis.title.text', + value: '', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标题位置', + type: 'select', + field: 'xAxis_title_position', + optionField: 'xAxis.title.position', + value: 'end', + tabName: 'custom', + options: [ + { + label: '左', + value: 'start' + }, + { + label: '中', + value: 'center' + }, + { + label: '右', + value: 'end' + }], + groupName: 'xAxis' + }, + { + label: '标题字体大小', + type: 'inputNumber', + field: 'xAxis_title_style_fontSize', + optionField: 'xAxis.title.style.fontSize', + value: 12, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标题颜色', + type: 'colorPicker', + field: 'xAxis_title_style_fill', + optionField: 'xAxis.title.style.fill', + // 是否多选 + multiple: false, + value: '#8C8C8C', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签大小', + type: 'inputNumber', + field: 'xAxis_label_style_fontSize', + optionField: 'xAxis.label.style.fontSize', + value: 12, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签颜色', + type: 'colorPicker', + field: 'xAxis_label_style_fill', + optionField: 'xAxis.label.style.fill', + // 是否多选 + multiple: false, + value: '#8C8C8C', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '轴线宽度', + type: 'inputNumber', + field: 'xAxis_line_style_lineWidth', + optionField: 'xAxis.line.style.lineWidth', + value: 1, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '轴线颜色', + type: 'colorPicker', + field: 'xAxis_line_style_stroke', + optionField: 'xAxis.line.style.stroke', + // 是否多选 + multiple: false, + value: '#d0d0d0', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '刻度线宽度', + type: 'inputNumber', + field: 'xAxis_tickLine_style_lineWidth', + optionField: 'xAxis.tickLine.style.lineWidth', + value: 1, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '刻度线颜色', + type: 'colorPicker', + field: 'xAxis_tickLine_style_stroke', + optionField: 'xAxis.tickLine.style.stroke', + // 是否多选 + multiple: false, + value: '#d0d0d0', + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签过多时旋转', + type: 'switch', + field: 'xAxis_label_autoRotate', + optionField: 'xAxis.label.autoRotate', + value: false, + active: true, + inactive: false, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签过多时隐藏', + type: 'switch', + field: 'xAxis_label_autoHide', + optionField: 'xAxis.label.autoHide', + value: false, + active: true, + inactive: false, + tabName: 'custom', + groupName: 'xAxis' + }, + { + label: '标签过长时省略', + type: 'switch', + field: 'xAxis_label_autoEllipsis', + optionField: 'xAxis.label.autoEllipsis', + value: false, + active: true, + inactive: false, + tabName: 'custom', + groupName: 'xAxis' + }, + // Y轴 yAxis + { + label: '标题', + type: 'input', + field: 'yAxis_title_text', + optionField: 'yAxis.title.text', + value: '', + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '标题位置', + type: 'select', + field: 'yAxis_title_position', + optionField: 'yAxis.title.position', + value: 'end', + tabName: 'custom', + options: [ + { + label: '上', + value: 'end' + }, + { + label: '中', + value: 'center' + }, + { + label: '下', + value: 'start' + }], + groupName: 'yAxis' + }, + { + label: '标题字体大小', + type: 'inputNumber', + field: 'yAxis_title_style_fontSize', + optionField: 'yAxis.title.style.fontSize', + value: 12, + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '标题颜色', + type: 'colorPicker', + field: 'yAxis_title_style_fill', + optionField: 'yAxis.title.style.fill', + // 是否多选 + multiple: false, + value: '#8C8C8C', + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '显示标签', + type: 'switch', + field: 'yAxis_label_style_opacity', + optionField: 'yAxis.label.style.opacity', + value: 1, + active: 1, + inactive: 0, + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '标签字体大小', + type: 'inputNumber', + field: 'yAxis_label_style_fontSize', + optionField: 'yAxis.label.style.fontSize', + value: 12, + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '标签字体颜色', + type: 'colorPicker', + field: 'yAxis_label_style_fill', + optionField: 'yAxis.label.style.fill', + // 是否多选 + multiple: false, + value: '#8C8C8C', + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '轴线宽度', + type: 'inputNumber', + field: 'yAxis_line_lineWidth', + optionField: 'yAxis.line.style.lineWidth', + value: 0, + tabName: 'custom', + groupName: 'yAxis' + }, + { + label: '轴线颜色', + type: 'colorPicker', + field: 'yAxis_line_stroke', + optionField: 'yAxis.line.style.stroke', + // 是否多选 + multiple: false, + value: '#d0d0d0', + tabName: 'custom', + groupName: 'yAxis' + }, + // 边距 padding + { + label: '图表边距', + type: 'padding', + field: 'appendPadding', + optionField: 'appendPadding', + value: [16, 16, 16, 16], + tabName: 'custom', + groupName: 'padding' + } +] + +// 模拟数据 +const data = [ + { Date: '2010-01', scales: 1998 }, + { Date: '2010-02', scales: 1850 }, + { Date: '2010-03', scales: 1720 }, + { Date: '2010-04', scales: 1818 }, + { Date: '2010-05', scales: 1920 }, + { Date: '2010-06', scales: 1802 }, + { Date: '2010-07', scales: 1945 }, + { Date: '2010-08', scales: 1856 }, + { Date: '2010-09', scales: 2107 }, + { Date: '2010-10', scales: 2140 } +] + +const option = { + // 数据将要放入到哪个字段中 + dataKey: 'data', + data, + color: '', + appendPadding: [16, 16, 16, 16], // 设置图标的边距 + xField: 'Date', + yField: 'scales', + smooth: true, + lineStyle: { + lineWidth: 2, + stroke: 'l(0) 0:#5F92F9 1:#62FF00' + }, + xAxis: { + title: { + text: '', + position: 'end', + style: { + fill: '#8C8C8C', + fontSize: 12 + } + }, + label: { + autoRotate: false, + autoHide: false, + autoEllipsis: true, + style: { + fill: '#8C8C8C', + fontSize: 12 + } + }, + line: { + style: { + stroke: '#d0d0d0', + lineWidth: 1 + } + }, + tickLine: { + style: { + stroke: '#d0d0d0', + lineWidth: 1 + } + } + }, + yAxis: { + title: { + text: '', + position: 'end', + autoRotate: false, + // rotation: Math.PI / 2, + style: { + fill: '#8C8C8C', + fontSize: 12 + } + }, + grid: { + line: { + style: { + stroke: '#d0d0d0', + lineWidth: 1, + lineDash: [4, 5], + strokeOpacity: 0.7 + } + } + }, + label: { + style: { + fill: '#8C8C8C', + fontSize: 12, + opacity: 1 + } + }, + line: { + style: { + stroke: '#d0d0d0', + lineWidth: 0 + } + } + } +} + +export default { + title, + option, + setting +} + +` diff --git a/data-room-ui/packages/BizComponent/index.vue b/data-room-ui/packages/BizComponent/index.vue index 3da4900f..f5a56380 100644 --- a/data-room-ui/packages/BizComponent/index.vue +++ b/data-room-ui/packages/BizComponent/index.vue @@ -13,12 +13,7 @@
- - 生成图片 - +
-
- VUE组件 +
+
组件模板
+
+ echarts组件 +
+
+ G2Plot组件 +
+
+ 原生组件 +
@@ -84,6 +88,14 @@
效果预览
+
+ + 生成图片 + +
{ + this.changeTemp(val) + }).catch((action) => { + + }) + }, upload (type) { this.currentContentType = type this.$refs[`${this.currentContentType}File`].click() @@ -426,6 +462,28 @@ export default { justify-content: space-between; height: 40px; + .code-tab-left { + height: 100%; + width: 450px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + .code-tab-btn{ + width: 90px; + cursor: pointer; + } + .code-tab { + font-size: 14px; + align-items: center; + justify-content: center; + width: 120px; + height: 100%; + color: var(--bs-el-title); + background: var(--bs-background-1); + } + } + .code-tab { font-size: 14px; display: flex; @@ -458,13 +516,20 @@ export default { position: relative; .code-tab-header{ height: 40px; + display: flex; + flex-direction: row; + align-items: center; background-color: var(--bs-background-2); - line-height: 40px; - .code-tab{ + .code-tab { + font-size: 14px; + align-items: center; + justify-content: center; + display: flex; width: 120px; - height:40px; - text-align: center; - background-color: var(--bs-background-1); + margin-right: 20px; + height: 100%; + color: var(--bs-el-title); + background: var(--bs-background-1); } } } diff --git a/data-room-ui/packages/RemoteComponents/index.vue b/data-room-ui/packages/RemoteComponents/index.vue index dffecb5c..59a32094 100644 --- a/data-room-ui/packages/RemoteComponents/index.vue +++ b/data-room-ui/packages/RemoteComponents/index.vue @@ -16,6 +16,8 @@ import linkageMixins from 'data-room-ui/js/mixins/linkageMixins' import commonMixins from 'data-room-ui/js/mixins/commonMixins' import remoteVueLoader from 'remote-vue-loader' +import * as g2Plot from '@antv/g2plot' +import * as _echarts from 'echarts' import { mapMutations, mapState } from 'vuex' import innerRemoteComponents, { getRemoteComponents } from 'data-room-ui/RemoteComponents/remoteComponentsList' import { getBizComponentInfo } from 'data-room-ui/js/api/bigScreenApi' @@ -90,6 +92,8 @@ export default { }, async chartInit () { let config = this.config + config.g2Plots=g2Plot + config.echarts=_echarts // key和code相等,说明是一进来刷新,调用list接口 if (this.config.code === this.config.key || this.isPreview) { // 改变样式