From ee5dc225d9a7fc073baccbea93314f3dad325e82 Mon Sep 17 00:00:00 2001 From: qianbao Date: Thu, 1 Dec 2022 23:56:16 +0800 Subject: [PATCH] 1、添加胶状柱行图 2、动态文本添加取全局数据源 3、添加装饰图 --- src/mixins/common.js | 26 +++++++++++++++++++++++++- src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-capsule-chart.js | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/bigscreenDesigner/designer/tools/configure/div/widget-border-box.js | 8 ++++---- src/views/bigscreenDesigner/designer/tools/configure/div/widget-decoration.js | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/bigscreenDesigner/designer/tools/configure/texts/widget-marquee.js | 9 +++++++++ src/views/bigscreenDesigner/designer/tools/configure/texts/widget-text.js | 2 +- src/views/bigscreenDesigner/designer/tools/main.js | 4 ++++ src/views/bigscreenDesigner/designer/widget/bar/widgetCapsuleChart.vue | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/bigscreenDesigner/designer/widget/div/widgetBorderBox.vue | 1 - src/views/bigscreenDesigner/designer/widget/div/widgetDecoration.vue | 220 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/bigscreenDesigner/designer/widget/temp.vue | 4 ++++ src/views/bigscreenDesigner/designer/widget/text/widgetMarquee.vue | 9 ++++++++- src/views/bigscreenDesigner/designer/widget/text/widgetText.vue | 8 -------- src/views/bigscreenDesigner/designer/widget/widget.vue | 4 ++++ 14 files changed, 692 insertions(+), 16 deletions(-) create mode 100644 src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-capsule-chart.js create mode 100644 src/views/bigscreenDesigner/designer/tools/configure/div/widget-decoration.js create mode 100644 src/views/bigscreenDesigner/designer/widget/bar/widgetCapsuleChart.vue create mode 100644 src/views/bigscreenDesigner/designer/widget/div/widgetDecoration.vue diff --git a/src/mixins/common.js b/src/mixins/common.js index 092caba..f3037c1 100644 --- a/src/mixins/common.js +++ b/src/mixins/common.js @@ -58,6 +58,30 @@ export default { } return false }, + isBlankObj (val) { + if (typeof val === 'undefined') { + return true + } + if (val == null || val === '' || val =={} || val.length==0) { + return true + } + return false + }, + isNotBlankObj (val) { + return !this.isBlankObj(val); + }, + isBlankArray (val) { + if (typeof val === 'undefined') { + return true + } + if (val == null || val === '' || val ==[] || val.length==0) { + return true + } + return false + }, + isNotBlankArray (val) { + return !this.isBlankArray(val); + }, // 封装定制删除数组中的值 contains (a, obj) { let i = a.length @@ -272,7 +296,7 @@ export default { return { top: top, left: left } }, objToOne (obj) { - console.log(obj) + // console.log(obj) let tmpData = {} for (let index in obj) { if (typeof obj[index] == 'object' && !this.isArrayFn(obj[index])) { diff --git a/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-capsule-chart.js b/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-capsule-chart.js new file mode 100644 index 0000000..4c307ba --- /dev/null +++ b/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-capsule-chart.js @@ -0,0 +1,148 @@ +/* + * @Descripttion: DIV图层次 + */ +export const widgetCapsuleChart = { + code: 'widget-capsule-chart', + type: 'barChart', + tabName: '柱状图', + label: '胶囊柱图', + icon: 'iconzhuxiantu', + options: { + // 配置 + setup: [ + { + type: 'el-input-text', + label: '图层名称', + name: 'layerName', + required: false, + placeholder: '', + value: '胶囊柱图', + }, + { + type: 'el-input-text', + label: '单位', + name: 'unit', + required: false, + placeholder: '', + value: '个', + }, + { + type: 'el-switch', + label: '显示数值', + name: 'showValue', + required: false, + placeholder: '', + value: true, + }, + { + type: 'vue-color', + label: '背景颜色', + name: 'background', + required: false, + placeholder: '', + value: '' + }, + [{ + name: '自定义配色', + list: [ + { + type: 'customColor', + label: '', + name: 'customColor', + required: false, + //'#e062ae', '#fb7293', '#e690d1', '#32c5e9', '#96bfff' + value: [{ color: '#e062ae' }, { color: '#fb7293' }, { color: '#e690d1' }, { color: '#32c5e9' }, { color: '#96bfff' }], + }, + ], + }], + ], + + // 数据 + data: [ + { + type: 'el-radio-group', + label: '数据类型', + name: 'dataType', + require: false, + placeholder: '', + selectValue: true, + selectOptions: [ + { + code: 'staticData', + name: '静态数据', + }, + { + code: 'dynamicData', + name: '动态数据', + }, + ], + value: 'staticData', + }, + { + type: 'el-input-number', + label: '刷新时间(毫秒)', + name: 'refreshTime', + relactiveDom: 'dataType', + relactiveDomValue: 'dynamicData', + value: 5000 + }, + { + type: 'el-button', + label: '静态数据', + name: 'staticData', + required: false, + placeholder: '', + relactiveDom: 'dataType', + relactiveDomValue: 'staticData', + value: [{ value: 1048, name: "搜索引擎" }, { value: 735, name: "直接访问" }, { value: 580, name: "邮件营销" }, { value: 484, name: "联盟广告" }, { value: 300, name: "视频广告" }] + }, + { + type: 'dycustComponents', + label: '', + name: 'dynamicData', + required: false, + placeholder: '', + relactiveDom: 'dataType', + relactiveDomValue: 'dynamicData', + chartType: 'widget-capsule-chart', + dictKey: 'STACK_PROPERTIES', + value: '', + }, + ], + // 坐标 + position: [ + { + type: 'el-input-number', + label: '左边距', + name: 'left', + required: false, + placeholder: '', + value: 50, + }, + { + type: 'el-input-number', + label: '上边距', + name: 'top', + required: false, + placeholder: '', + value: 50, + }, + { + type: 'el-input-number', + label: '宽度', + name: 'width', + required: false, + placeholder: '该容器在1920px大屏中的宽度', + value: 800, + }, + { + type: 'el-input-number', + label: '高度', + name: 'height', + required: false, + placeholder: '该容器在1080px大屏中的高度', + value: 600, + }, + ], + } +} diff --git a/src/views/bigscreenDesigner/designer/tools/configure/div/widget-border-box.js b/src/views/bigscreenDesigner/designer/tools/configure/div/widget-border-box.js index 14eb3cc..52e9dfb 100644 --- a/src/views/bigscreenDesigner/designer/tools/configure/div/widget-border-box.js +++ b/src/views/bigscreenDesigner/designer/tools/configure/div/widget-border-box.js @@ -108,7 +108,7 @@ export const widgetBorderBox = { name: 'left', required: false, placeholder: '', - value: 0, + value: 10, }, { type: 'el-input-number', @@ -116,7 +116,7 @@ export const widgetBorderBox = { name: 'top', required: false, placeholder: '', - value: 0, + value: 10, }, { type: 'el-input-number', @@ -124,7 +124,7 @@ export const widgetBorderBox = { name: 'width', required: false, placeholder: '该容器在1920px大屏中的宽度', - value: 1000, + value: 500, }, { type: 'el-input-number', @@ -132,7 +132,7 @@ export const widgetBorderBox = { name: 'height', required: false, placeholder: '该容器在1080px大屏中的高度', - value: 600, + value: 350, }, ], } diff --git a/src/views/bigscreenDesigner/designer/tools/configure/div/widget-decoration.js b/src/views/bigscreenDesigner/designer/tools/configure/div/widget-decoration.js new file mode 100644 index 0000000..6583731 --- /dev/null +++ b/src/views/bigscreenDesigner/designer/tools/configure/div/widget-decoration.js @@ -0,0 +1,139 @@ +/* + * @Descripttion: DIV图层次 + */ +export const widgetDecoration = { + code: 'widget-decoration', + type: 'html', + tabName: '图层', + label: '装饰', + icon: 'icontupian1', + options: { + // 配置 + setup: [ + { + type: 'el-input-text', + label: '图层名称', + name: 'layerName', + required: false, + placeholder: '', + value: '装饰', + }, + { + type: 'el-select', + label: '装饰类型', + name: 'divType', + required: false, + placeholder: '', + onChange:"handleChange", + selectOptions: [ + {code: 'dvDecoration1', name: '边框1'}, + {code: 'dvDecoration2', name: '边框2'}, + {code: 'dvDecoration3', name: '边框3'}, + {code: 'dvDecoration4', name: '边框4'}, + {code: 'dvDecoration5', name: '边框5'}, + {code: 'dvDecoration6', name: '边框6'}, + {code: 'dvDecoration7', name: '边框7'}, + {code: 'dvDecoration8', name: '边框8'}, + {code: 'dvDecoration9', name: '边框9'}, + {code: 'dvDecoration10', name: '边框10'}, + {code: 'dvDecoration11', name: '边框11'}, + {code: 'dvDecoration12', name: '边框12'}, + ], + value: 'dvDecoration1' + }, + { + type: 'vue-color', + label: '颜色(主)', + name: 'colorOne', + required: false, + placeholder: '', + value: '', + }, + { + type: 'vue-color', + label: '颜色(次)', + name: 'colorTwo', + required: false, + placeholder: '', + value: '', + }, + { + type: 'el-input-number', + label: '单次动画(秒)', + name: 'dur', + required: false, + placeholder: '', + value: 3, + }, + { + type: 'el-switch', + label: '反向', + name: 'reverse', + require: false, + placeholder: '', + value: false, + }, + { + type: 'el-input-text', + label: '内容', + name: 'title', + require: false, + placeholder: '', + value: '', + }, + { + type: 'el-input-number', + label: '扫描动画(秒)', + name: 'scanDur', + required: false, + placeholder: '', + value: 3, + }, + { + type: 'el-input-number', + label: '光晕动画(秒)', + name: 'haloDur', + required: false, + placeholder: '', + value: 2, + }, + ], + // 数据 + data: [], + // 坐标 + position: [ + { + type: 'el-input-number', + label: '左边距', + name: 'left', + required: false, + placeholder: '', + value: 20, + }, + { + type: 'el-input-number', + label: '上边距', + name: 'top', + required: false, + placeholder: '', + value: 20, + }, + { + type: 'el-input-number', + label: '宽度', + name: 'width', + required: false, + placeholder: '该容器在1920px大屏中的宽度', + value: 300, + }, + { + type: 'el-input-number', + label: '高度', + name: 'height', + required: false, + placeholder: '该容器在1080px大屏中的高度', + value: 40, + }, + ], + } +} diff --git a/src/views/bigscreenDesigner/designer/tools/configure/texts/widget-marquee.js b/src/views/bigscreenDesigner/designer/tools/configure/texts/widget-marquee.js index bbaed19..14e683c 100644 --- a/src/views/bigscreenDesigner/designer/tools/configure/texts/widget-marquee.js +++ b/src/views/bigscreenDesigner/designer/tools/configure/texts/widget-marquee.js @@ -32,6 +32,15 @@ export const widgetMarquee = { value: '滚动文本', }, { + type: 'el-select-static', + label: '主数据源数据', + name: 'slectedDataType', + require: false, + placeholder: '', + selectOptions: [], + value: '', + }, + { type: 'el-input-number', label: '字体字号', name: 'fontSize', diff --git a/src/views/bigscreenDesigner/designer/tools/configure/texts/widget-text.js b/src/views/bigscreenDesigner/designer/tools/configure/texts/widget-text.js index 3858ff0..3364079 100644 --- a/src/views/bigscreenDesigner/designer/tools/configure/texts/widget-text.js +++ b/src/views/bigscreenDesigner/designer/tools/configure/texts/widget-text.js @@ -33,7 +33,7 @@ export const widgetText = { }, { type: 'el-select-static', - label: '全局静态数据选择', + label: '主数据源数据', name: 'slectedDataType', require: false, placeholder: '', diff --git a/src/views/bigscreenDesigner/designer/tools/main.js b/src/views/bigscreenDesigner/designer/tools/main.js index 2948ed2..cf60961 100644 --- a/src/views/bigscreenDesigner/designer/tools/main.js +++ b/src/views/bigscreenDesigner/designer/tools/main.js @@ -8,6 +8,8 @@ */ // import { widgetDiv } from "./configure/div/widget-div" import { widgetBorderBox } from "./configure/div/widget-border-box"; +import { widgetDecoration } from "./configure/div/widget-decoration"; +import { widgetCapsuleChart} from "./configure/barCharts/widget-capsule-chart"; import { widgetImage } from "./configure/div/widget-image" import { widgetSliders } from "./configure/div/widget-slider" import { widgetText } from "./configure/texts/widget-text" @@ -45,6 +47,8 @@ import { widgetProgress } from "./configure/percentCharts/widget-progress"; export const widgetTool = [ //图层 widgetBorderBox, + widgetDecoration, + widgetCapsuleChart, // widgetDiv, widgetImage, widgetSliders, diff --git a/src/views/bigscreenDesigner/designer/widget/bar/widgetCapsuleChart.vue b/src/views/bigscreenDesigner/designer/widget/bar/widgetCapsuleChart.vue new file mode 100644 index 0000000..a789688 --- /dev/null +++ b/src/views/bigscreenDesigner/designer/widget/bar/widgetCapsuleChart.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/bigscreenDesigner/designer/widget/div/widgetBorderBox.vue b/src/views/bigscreenDesigner/designer/widget/div/widgetBorderBox.vue index ad4528b..9e1506d 100644 --- a/src/views/bigscreenDesigner/designer/widget/div/widgetBorderBox.vue +++ b/src/views/bigscreenDesigner/designer/widget/div/widgetBorderBox.vue @@ -114,7 +114,6 @@ export default { handler(val) { this.options = val; this.optionsData = val.data; - this.setOptionsData(); }, deep: true, }, diff --git a/src/views/bigscreenDesigner/designer/widget/div/widgetDecoration.vue b/src/views/bigscreenDesigner/designer/widget/div/widgetDecoration.vue new file mode 100644 index 0000000..738daad --- /dev/null +++ b/src/views/bigscreenDesigner/designer/widget/div/widgetDecoration.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/src/views/bigscreenDesigner/designer/widget/temp.vue b/src/views/bigscreenDesigner/designer/widget/temp.vue index 9efaac9..50b61e2 100644 --- a/src/views/bigscreenDesigner/designer/widget/temp.vue +++ b/src/views/bigscreenDesigner/designer/widget/temp.vue @@ -45,6 +45,8 @@ import widgetDecorate from "./decorate/decorate.vue"; // import widgetDiv from "./div/widgetDiv.vue"; import widgetBorderBox from "./div/widgetBorderBox.vue"; import widgetProgress from "./percent/widgetProgress"; +import widgetDecoration from "./div/widgetDecoration.vue"; +import widgetCapsuleCart from "./bar/widgetCapsuleChart.vue"; export default { name: "WidgetTemp", @@ -82,6 +84,8 @@ export default { widgetRadar, widgetBarLineStackChart, widgetBorderBox, + widgetDecoration, + widgetCapsuleCart, widgetProgress }, model: { diff --git a/src/views/bigscreenDesigner/designer/widget/text/widgetMarquee.vue b/src/views/bigscreenDesigner/designer/widget/text/widgetMarquee.vue index 4c9ea4c..bc4bb51 100644 --- a/src/views/bigscreenDesigner/designer/widget/text/widgetMarquee.vue +++ b/src/views/bigscreenDesigner/designer/widget/text/widgetMarquee.vue @@ -1,12 +1,14 @@