Commit 6a0b895bba10d3bb532be30ecd3ac8c06741cabc
1 parent
cb49f9fc
1、添加动态图片组件 线性添加是否从0开始功能
Showing
9 changed files
with
506 additions
and
2 deletions
src/views/bigscreenDesigner/designer/components/dynamicAddPicAdress.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div> | ||
| 3 | + <el-button | ||
| 4 | + type="primary" | ||
| 5 | + size="small" | ||
| 6 | + icon="el-icon-plus" | ||
| 7 | + plain | ||
| 8 | + @click="handleAddClick" | ||
| 9 | + >新增</el-button | ||
| 10 | + > | ||
| 11 | + <el-table :data="formData" style="width: 100%"> | ||
| 12 | + <el-table-column prop="name" label="名称" width="130" /> | ||
| 13 | + <el-table-column prop="key" label="判断值" width="70" /> | ||
| 14 | + <el-table-column label="操作" width="100"> | ||
| 15 | + <template slot-scope="scope"> | ||
| 16 | + <div class="button-group"> | ||
| 17 | + <el-button | ||
| 18 | + @click="handleEditorClick(scope.$index, scope.row)" | ||
| 19 | + type="text" | ||
| 20 | + size="small" | ||
| 21 | + >编辑</el-button | ||
| 22 | + > | ||
| 23 | + <el-button | ||
| 24 | + type="text" | ||
| 25 | + size="small" | ||
| 26 | + @click="handleDeleteClick(scope.$index, scope.row)" | ||
| 27 | + >删除</el-button | ||
| 28 | + > | ||
| 29 | + </div> | ||
| 30 | + </template> | ||
| 31 | + </el-table-column> | ||
| 32 | + </el-table> | ||
| 33 | + | ||
| 34 | + <el-dialog | ||
| 35 | + title="新增" | ||
| 36 | + :visible.sync="dialogVisible" | ||
| 37 | + width="30%" | ||
| 38 | + :before-close="handleClose" | ||
| 39 | + > | ||
| 40 | + <el-form :model="rowFormData" label-width="70px"> | ||
| 41 | + <el-form-item label="名称:"> | ||
| 42 | + <el-input | ||
| 43 | + v-model.trim="rowFormData['name']" | ||
| 44 | + placeholder="请输入名称" | ||
| 45 | + size="mini" | ||
| 46 | + > | ||
| 47 | + </el-input> | ||
| 48 | + </el-form-item> | ||
| 49 | + <el-form-item label="判断值:" label-width="70px"> | ||
| 50 | + <el-input | ||
| 51 | + v-model.trim="rowFormData['key']" | ||
| 52 | + placeholder="请输入判断值" | ||
| 53 | + size="mini" | ||
| 54 | + > | ||
| 55 | + </el-input> | ||
| 56 | + </el-form-item> | ||
| 57 | + <el-form-item label="图片地址:"> | ||
| 58 | + <el-input | ||
| 59 | + v-model.trim="rowFormData['value']" | ||
| 60 | + placeholder="请输入已上传的图片地址" | ||
| 61 | + size="mini" | ||
| 62 | + > | ||
| 63 | + </el-input> | ||
| 64 | + </el-form-item> | ||
| 65 | + </el-form> | ||
| 66 | + <span slot="footer" class="dialog-footer"> | ||
| 67 | + <el-button size="mini" @click="dialogVisible = false">取 消</el-button> | ||
| 68 | + <el-button size="mini" type="primary" @click="handleSaveClick" | ||
| 69 | + >确 定</el-button | ||
| 70 | + > | ||
| 71 | + </span> | ||
| 72 | + </el-dialog> | ||
| 73 | + </div> | ||
| 74 | +</template> | ||
| 75 | +<script> | ||
| 76 | +export default { | ||
| 77 | + model: { | ||
| 78 | + prop: "formData", | ||
| 79 | + event: "input" | ||
| 80 | + }, | ||
| 81 | + props: { | ||
| 82 | + formData: Array | ||
| 83 | + }, | ||
| 84 | + data() { | ||
| 85 | + return { | ||
| 86 | + dialogVisible: false, | ||
| 87 | + rowFormData: { | ||
| 88 | + name: "", | ||
| 89 | + key: "", | ||
| 90 | + value:"" | ||
| 91 | + }, | ||
| 92 | + flag: true, // true 新增, false 编辑 | ||
| 93 | + indexEditor: -1, // 编辑第几个数据 | ||
| 94 | + tableData: [] | ||
| 95 | + }; | ||
| 96 | + }, | ||
| 97 | + methods: { | ||
| 98 | + // 新增 | ||
| 99 | + handleAddClick() { | ||
| 100 | + this.rowFormData = {}; | ||
| 101 | + this.flag = true; | ||
| 102 | + this.dialogVisible = true; | ||
| 103 | + }, | ||
| 104 | + // 编辑 | ||
| 105 | + handleEditorClick(index, row) { | ||
| 106 | + this.flag = false; | ||
| 107 | + this.rowFormData = this.deepClone(row); | ||
| 108 | + this.indexEditor = index; | ||
| 109 | + this.dialogVisible = true; | ||
| 110 | + }, | ||
| 111 | + // 关闭 | ||
| 112 | + handleClose() { | ||
| 113 | + this.dialogVisible = false; | ||
| 114 | + }, | ||
| 115 | + // 保存 | ||
| 116 | + handleSaveClick() { | ||
| 117 | + if (this.flag) { | ||
| 118 | + // 新增 | ||
| 119 | + this.formData.push(this.rowFormData); | ||
| 120 | + this.dialogVisible = false; | ||
| 121 | + } else { | ||
| 122 | + // 编辑 | ||
| 123 | + this.formData[this.indexEditor] = this.rowFormData; | ||
| 124 | + this.$set(this.formData, this.indexEditor, this.rowFormData); | ||
| 125 | + this.dialogVisible = false; | ||
| 126 | + } | ||
| 127 | + this.$emit("input", this.formData); | ||
| 128 | + this.$emit("change", this.formData); | ||
| 129 | + }, | ||
| 130 | + // 删除 | ||
| 131 | + handleDeleteClick(index) { | ||
| 132 | + this.formData.splice(index, 1); | ||
| 133 | + this.$emit("input", this.formData); | ||
| 134 | + this.$emit("change", this.formData); | ||
| 135 | + } | ||
| 136 | + } | ||
| 137 | +}; | ||
| 138 | +</script> | ||
| 139 | +<style lang="scss" scoped> | ||
| 140 | +/deep/::-webkit-scrollbar-track-piece { | ||
| 141 | + background-color: transparent; | ||
| 142 | +} | ||
| 143 | +/deep/ .el-table__body-wrapper::-webkit-scrollbar { | ||
| 144 | + width: 0; // 横向滚动条 | ||
| 145 | + height: 8px; // 纵向滚动条 必写 | ||
| 146 | +} | ||
| 147 | +// 滚动条的滑块 | ||
| 148 | +/deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb { | ||
| 149 | + border-radius: 5px; | ||
| 150 | + background-color: rgba(144, 146, 152, 0.3); | ||
| 151 | +} | ||
| 152 | +/deep/.el-table, | ||
| 153 | +/deep/.el-table__expanded-cell, | ||
| 154 | +/deep/.el-table th, | ||
| 155 | +/deep/.el-table tr { | ||
| 156 | + background-color: transparent !important; | ||
| 157 | + color: #859094 !important; | ||
| 158 | + font-size: 12px !important; | ||
| 159 | +} | ||
| 160 | +/deep/.el-table td, | ||
| 161 | +/deep/.el-table th.is-leaf { | ||
| 162 | + border-bottom: none; | ||
| 163 | + line-height: 26px; | ||
| 164 | +} | ||
| 165 | +/deep/.el-table tbody tr:hover { | ||
| 166 | + background-color: #263445 !important; | ||
| 167 | +} | ||
| 168 | +/deep/.el-table tbody tr:hover > td { | ||
| 169 | + background-color: #263445 !important; | ||
| 170 | +} | ||
| 171 | +/deep/.el-table::before { | ||
| 172 | + height: 0; | ||
| 173 | +} | ||
| 174 | +.button-group .el-button { | ||
| 175 | + padding: 0; | ||
| 176 | +} | ||
| 177 | +</style> |
src/views/bigscreenDesigner/designer/components/dynamicForm.vue
| @@ -183,6 +183,12 @@ | @@ -183,6 +183,12 @@ | ||
| 183 | :chart-type="item.chartType" | 183 | :chart-type="item.chartType" |
| 184 | @change="changed($event, item.name)" | 184 | @change="changed($event, item.name)" |
| 185 | /> | 185 | /> |
| 186 | + <dynamic-add-pic-adress | ||
| 187 | + v-if="item.type == 'dynamic-add-pic-adress' && inputShow[item.name]" | ||
| 188 | + v-model="formData[item.name]" | ||
| 189 | + :chart-type="item.chartType" | ||
| 190 | + @change="changed($event, item.name)" | ||
| 191 | + /> | ||
| 186 | <dynamic-add-radar | 192 | <dynamic-add-radar |
| 187 | v-if="item.type == 'dynamic-add-radar' && inputShow[item.name]" | 193 | v-if="item.type == 'dynamic-add-radar' && inputShow[item.name]" |
| 188 | v-model="formData[item.name]" | 194 | v-model="formData[item.name]" |
| @@ -324,6 +330,7 @@ import CustomUploadNew from "./customUploadNew"; | @@ -324,6 +330,7 @@ import CustomUploadNew from "./customUploadNew"; | ||
| 324 | import DatasourceSelect from "./datasourceSelect"; | 330 | import DatasourceSelect from "./datasourceSelect"; |
| 325 | import CustomUploadMulti from "./customUploadMulti"; | 331 | import CustomUploadMulti from "./customUploadMulti"; |
| 326 | import dynamicAddSvg from "./dynamicAddSvg.vue"; | 332 | import dynamicAddSvg from "./dynamicAddSvg.vue"; |
| 333 | +import dynamicAddPicAdress from "./dynamicAddPicAdress"; | ||
| 327 | import { mapState } from 'vuex'; | 334 | import { mapState } from 'vuex'; |
| 328 | export default { | 335 | export default { |
| 329 | name: "DynamicForm", | 336 | name: "DynamicForm", |
| @@ -338,7 +345,8 @@ export default { | @@ -338,7 +345,8 @@ export default { | ||
| 338 | CustomUploadNew, | 345 | CustomUploadNew, |
| 339 | CustomUploadMulti, | 346 | CustomUploadMulti, |
| 340 | DatasourceSelect, | 347 | DatasourceSelect, |
| 341 | - dynamicAddSvg | 348 | + dynamicAddSvg, |
| 349 | + dynamicAddPicAdress | ||
| 342 | }, | 350 | }, |
| 343 | model: { | 351 | model: { |
| 344 | prop: "value", | 352 | prop: "value", |
src/views/bigscreenDesigner/designer/tools/configure/div/widget-dt-image.js
0 → 100644
| 1 | +/* | ||
| 2 | + * @Descripttion: 图片json | ||
| 3 | + */ | ||
| 4 | +export const widgetDtImage = { | ||
| 5 | + code: 'widget-dt-image', | ||
| 6 | + type: 'html', | ||
| 7 | + tabName: '图层', | ||
| 8 | + label: '动态图片', | ||
| 9 | + icon: 'icontupian', | ||
| 10 | + options: { | ||
| 11 | + // 配置 | ||
| 12 | + setup: [ | ||
| 13 | + { | ||
| 14 | + type: 'el-input-text', | ||
| 15 | + label: '图层名称', | ||
| 16 | + name: 'layerName', | ||
| 17 | + required: false, | ||
| 18 | + placeholder: '', | ||
| 19 | + value: '动态图片', | ||
| 20 | + }, | ||
| 21 | + { | ||
| 22 | + type: 'el-switch', | ||
| 23 | + label: '开启旋转', | ||
| 24 | + name: 'startRotate', | ||
| 25 | + required: false, | ||
| 26 | + placeholder: '', | ||
| 27 | + value: false, | ||
| 28 | + }, | ||
| 29 | + { | ||
| 30 | + type: 'el-slider', | ||
| 31 | + label: '旋转速度', | ||
| 32 | + name: 'rotationSpeed', | ||
| 33 | + required: false, | ||
| 34 | + placeholder: '', | ||
| 35 | + value: 70 | ||
| 36 | + }, | ||
| 37 | + { | ||
| 38 | + type: 'el-slider', | ||
| 39 | + label: '透明度', | ||
| 40 | + name: 'transparency', | ||
| 41 | + required: false, | ||
| 42 | + placeholder: '', | ||
| 43 | + value: 100 | ||
| 44 | + }, | ||
| 45 | + { | ||
| 46 | + type: 'el-input-number', | ||
| 47 | + label: '圆角', | ||
| 48 | + name: 'borderRadius', | ||
| 49 | + required: false, | ||
| 50 | + placeholder: '', | ||
| 51 | + value: '0' | ||
| 52 | + }, | ||
| 53 | + { | ||
| 54 | + type: 'custom-upload-new', | ||
| 55 | + label: '参考地址', | ||
| 56 | + name: 'imageAdress', | ||
| 57 | + required: false, | ||
| 58 | + placeholder: '', | ||
| 59 | + value: '', | ||
| 60 | + }, | ||
| 61 | + { | ||
| 62 | + type: 'vue-color', | ||
| 63 | + label: '背景颜色', | ||
| 64 | + name: 'background', | ||
| 65 | + required: false, | ||
| 66 | + placeholder: '', | ||
| 67 | + }, | ||
| 68 | + { | ||
| 69 | + type: 'el-input-text', | ||
| 70 | + label: '判断值', | ||
| 71 | + name: 'textPic', | ||
| 72 | + required: false, | ||
| 73 | + placeholder: '', | ||
| 74 | + value: 'block', | ||
| 75 | + }, | ||
| 76 | + { | ||
| 77 | + type: 'el-select-static', | ||
| 78 | + label: '主数据源数据', | ||
| 79 | + name: 'slectedDataType', | ||
| 80 | + require: false, | ||
| 81 | + placeholder: '', | ||
| 82 | + selectOptions: [], | ||
| 83 | + value: '', | ||
| 84 | + }, | ||
| 85 | + { | ||
| 86 | + type: 'dynamic-add-pic-adress', | ||
| 87 | + label: '', | ||
| 88 | + name: 'dynamicAddPicAdress', | ||
| 89 | + required: false, | ||
| 90 | + placeholder: '', | ||
| 91 | + value: [ | ||
| 92 | + {name: '图片1', key: 'block', value: ''} | ||
| 93 | + ] | ||
| 94 | + }, | ||
| 95 | + | ||
| 96 | + ], | ||
| 97 | + // 数据 | ||
| 98 | + data: [], | ||
| 99 | + // 坐标 | ||
| 100 | + position: [ | ||
| 101 | + { | ||
| 102 | + type: 'el-input-number', | ||
| 103 | + label: '左边距', | ||
| 104 | + name: 'left', | ||
| 105 | + required: false, | ||
| 106 | + placeholder: '', | ||
| 107 | + value: 0, | ||
| 108 | + }, | ||
| 109 | + { | ||
| 110 | + type: 'el-input-number', | ||
| 111 | + label: '上边距', | ||
| 112 | + name: 'top', | ||
| 113 | + required: false, | ||
| 114 | + placeholder: '', | ||
| 115 | + value: 0, | ||
| 116 | + }, | ||
| 117 | + { | ||
| 118 | + type: 'el-input-number', | ||
| 119 | + label: '宽度', | ||
| 120 | + name: 'width', | ||
| 121 | + required: false, | ||
| 122 | + placeholder: '该容器在1920px大屏中的宽度', | ||
| 123 | + value: 300, | ||
| 124 | + }, | ||
| 125 | + { | ||
| 126 | + type: 'el-input-number', | ||
| 127 | + label: '高度', | ||
| 128 | + name: 'height', | ||
| 129 | + required: false, | ||
| 130 | + placeholder: '该容器在1080px大屏中的高度', | ||
| 131 | + value: 200, | ||
| 132 | + }, | ||
| 133 | + ], | ||
| 134 | + } | ||
| 135 | +} |
src/views/bigscreenDesigner/designer/tools/configure/lineCharts/widget-line-stack.js
| @@ -47,6 +47,14 @@ export const widgetLineStack = { | @@ -47,6 +47,14 @@ export const widgetLineStack = { | ||
| 47 | value: true, | 47 | value: true, |
| 48 | }, | 48 | }, |
| 49 | { | 49 | { |
| 50 | + type: 'el-switch', | ||
| 51 | + label: '0开始', | ||
| 52 | + name: 'zeroStart', | ||
| 53 | + required: false, | ||
| 54 | + placeholder: '', | ||
| 55 | + value: false, | ||
| 56 | + }, | ||
| 57 | + { | ||
| 50 | type: 'el-slider', | 58 | type: 'el-slider', |
| 51 | label: '点大小', | 59 | label: '点大小', |
| 52 | name: 'pointSize', | 60 | name: 'pointSize', |
src/views/bigscreenDesigner/designer/tools/main.js
| @@ -3,6 +3,7 @@ import { widgetBorderBox } from "./configure/div/widget-border-box"; | @@ -3,6 +3,7 @@ import { widgetBorderBox } from "./configure/div/widget-border-box"; | ||
| 3 | import { widgetDecoration } from "./configure/div/widget-decoration"; | 3 | import { widgetDecoration } from "./configure/div/widget-decoration"; |
| 4 | import { widgetCapsuleChart} from "./configure/barCharts/widget-capsule-chart"; | 4 | import { widgetCapsuleChart} from "./configure/barCharts/widget-capsule-chart"; |
| 5 | import { widgetImage } from "./configure/div/widget-image" | 5 | import { widgetImage } from "./configure/div/widget-image" |
| 6 | +import { widgetDtImage } from "./configure/div/widget-dt-image" | ||
| 6 | import { widgetSliders } from "./configure/div/widget-slider" | 7 | import { widgetSliders } from "./configure/div/widget-slider" |
| 7 | import { widgetText } from "./configure/texts/widget-text" | 8 | import { widgetText } from "./configure/texts/widget-text" |
| 8 | import { widgetMarquee } from "./configure/texts/widget-marquee" | 9 | import { widgetMarquee } from "./configure/texts/widget-marquee" |
| @@ -52,6 +53,7 @@ export const widgetTool = [ | @@ -52,6 +53,7 @@ export const widgetTool = [ | ||
| 52 | widgetDecoration, | 53 | widgetDecoration, |
| 53 | // widgetDiv, | 54 | // widgetDiv, |
| 54 | widgetImage, | 55 | widgetImage, |
| 56 | + widgetDtImage, | ||
| 55 | widgetSliders, | 57 | widgetSliders, |
| 56 | // type=html类型的组件 | 58 | // type=html类型的组件 |
| 57 | widgetText, | 59 | widgetText, |
src/views/bigscreenDesigner/designer/widget/div/widgetDtImage.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div class="imagebox" :style="styleColor" v-if="isRouterAlive"> | ||
| 3 | +<!-- <div class="bg" v-if="!imgStyle.imageAdress"></div>--> | ||
| 4 | + <div v-if="imageAdressShow"> | ||
| 5 | + <img :class="transStyle.startRotate ? 'startImg' : ''" :style="imgStyle" :src="imageAdress" alt="" /> | ||
| 6 | + </div> | ||
| 7 | + </div> | ||
| 8 | +</template> | ||
| 9 | +<script> | ||
| 10 | +import {mapState} from "vuex"; | ||
| 11 | +export default { | ||
| 12 | + name: "WidgetDtImage", | ||
| 13 | + components: {}, | ||
| 14 | + props: { | ||
| 15 | + value: Object, | ||
| 16 | + ispreview: Boolean | ||
| 17 | + }, | ||
| 18 | + data() { | ||
| 19 | + return { | ||
| 20 | + options: {}, | ||
| 21 | + optionsData: {}, | ||
| 22 | + optionsSetUp: {}, | ||
| 23 | + picData:[], | ||
| 24 | + imageAdress:'', | ||
| 25 | + imageAdressShow:true, | ||
| 26 | + isRouterAlive:false, | ||
| 27 | + flagInter: null, | ||
| 28 | + }; | ||
| 29 | + }, | ||
| 30 | + computed: { | ||
| 31 | + ...mapState('dataSource', ['staticData','staticRefreshTime']), | ||
| 32 | + transStyle() { | ||
| 33 | + return this.objToOne(this.options); | ||
| 34 | + }, | ||
| 35 | + styleColor() { | ||
| 36 | + return { | ||
| 37 | + position: this.ispreview ? "absolute" : "static", | ||
| 38 | + background: this.transStyle.background, | ||
| 39 | + "text-align": this.transStyle.textAlign, | ||
| 40 | + width: this.transStyle.width + "px", | ||
| 41 | + height: this.transStyle.height + "px", | ||
| 42 | + left: this.transStyle.left + "px", | ||
| 43 | + top: this.transStyle.top + "px", | ||
| 44 | + right: this.transStyle.right + "px", | ||
| 45 | + "border-radius": this.transStyle.borderRadius + 'px' | ||
| 46 | + }; | ||
| 47 | + }, | ||
| 48 | + imgStyle() { | ||
| 49 | + return { | ||
| 50 | + width: this.transStyle.width + "px", | ||
| 51 | + height: this.transStyle.height + "px", | ||
| 52 | + "border-radius": this.transStyle.borderRadius + "px", | ||
| 53 | + opacity: this.transStyle.transparency / 100, | ||
| 54 | + animation: this.transStyle.startRotate ? "turn " + (101 - this.transStyle.rotationSpeed) / 10 + "s linear infinite" : "none" | ||
| 55 | + }; | ||
| 56 | + } | ||
| 57 | + }, | ||
| 58 | + watch: { | ||
| 59 | + value: { | ||
| 60 | + handler(val) { | ||
| 61 | + this.options = val; | ||
| 62 | + this.optionsData = val.data; | ||
| 63 | + this.optionsSetUp = val.setup; | ||
| 64 | + this.initData(); | ||
| 65 | + }, | ||
| 66 | + deep: true | ||
| 67 | + } | ||
| 68 | + }, | ||
| 69 | + created() { | ||
| 70 | + this.options = this.value; | ||
| 71 | + }, | ||
| 72 | + mounted() { | ||
| 73 | + this.options = this.value; | ||
| 74 | + this.optionsData = this.value.data; | ||
| 75 | + this.setPicValue(); | ||
| 76 | + }, | ||
| 77 | + methods: { | ||
| 78 | + // vue hack 之强制刷新组件 | ||
| 79 | + reload(){ | ||
| 80 | + this.isRouterAlive=false; | ||
| 81 | + this.$nextTick(function(){ | ||
| 82 | + this.isRouterAlive=true; | ||
| 83 | + }) | ||
| 84 | + }, | ||
| 85 | + initData() { | ||
| 86 | + this.handlerPicData(); | ||
| 87 | + }, | ||
| 88 | + handlerPicData(){ | ||
| 89 | + this.setPicValue(); | ||
| 90 | + }, | ||
| 91 | + //初始化设置pic值 | ||
| 92 | + setPicValue(){ | ||
| 93 | + const {slectedDataType} = this.transStyle; | ||
| 94 | + if(this.isNotBlank(slectedDataType)){ | ||
| 95 | + const refreshTime = this.staticRefreshTime || 300000; | ||
| 96 | + this.dynamicDataFn(refreshTime); | ||
| 97 | + }else{ | ||
| 98 | + this.getEchartData(); | ||
| 99 | + } | ||
| 100 | + }, | ||
| 101 | + dynamicDataFn(refreshTime) { | ||
| 102 | + if (this.ispreview) { | ||
| 103 | + this.flagInter = setInterval(() => { | ||
| 104 | + this.getEchartData(); | ||
| 105 | + }, refreshTime); | ||
| 106 | + } else { | ||
| 107 | + this.getEchartData(); | ||
| 108 | + } | ||
| 109 | + }, | ||
| 110 | + getEchartData() { | ||
| 111 | + this.imageAdress=this.getShowPic(); | ||
| 112 | + this.imageAdressShow = this.isNotBlank(this.imageAdress); | ||
| 113 | + // console.log("this.imageAdress",this.imageAdress, this.imageAdressShow) | ||
| 114 | + this.reload(); | ||
| 115 | + }, | ||
| 116 | + getShowPic() { | ||
| 117 | + const {textPic, slectedDataType} = this.transStyle; | ||
| 118 | + const key = this.staticData[slectedDataType] || textPic; | ||
| 119 | + const dataPic = this.value.setup.dynamicAddPicAdress; | ||
| 120 | + // if(this.isBlank(key) || this.isBlankArray(dataPic)){ | ||
| 121 | + // return this.transStyle.imageAdress; | ||
| 122 | + // } | ||
| 123 | + for (let i = 0; i < dataPic.length; i++) { | ||
| 124 | + if(dataPic[i].key==key){ | ||
| 125 | + /** 控制svg图片拖动,原理在于设置svg的viewbox属性,viewbox的第一个参数控制左右位置,第二个参数设置上下位置 */ | ||
| 126 | + /** 控制svg图片放大缩小,原理在于设置svg的viewbox属性,viewbox的第三个参数控制左右大小,第四个参数设置上下大小 */ | ||
| 127 | + //设置svg 自适应 添加属性 viewBox="0,0,640,480" | ||
| 128 | + const pic = dataPic[i].value; | ||
| 129 | + return pic; | ||
| 130 | + } | ||
| 131 | + } | ||
| 132 | + return null; | ||
| 133 | + }, | ||
| 134 | + } | ||
| 135 | +}; | ||
| 136 | +</script> | ||
| 137 | + | ||
| 138 | +<style scoped lang="scss"> | ||
| 139 | +.imagebox { | ||
| 140 | + width: 100%; | ||
| 141 | + height: 100%; | ||
| 142 | + overflow: hidden; | ||
| 143 | + position: relative; | ||
| 144 | + | ||
| 145 | + .bg { | ||
| 146 | + position: absolute; | ||
| 147 | + width: 100%; | ||
| 148 | + height: 100%; | ||
| 149 | + top: 0; | ||
| 150 | + left: 0; | ||
| 151 | + background: url(data:image/png;base64,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) no-repeat; | ||
| 152 | + background-size: 100% 100%; | ||
| 153 | + } | ||
| 154 | +} | ||
| 155 | + | ||
| 156 | + | ||
| 157 | +.imagebox img { | ||
| 158 | + width: 100%; | ||
| 159 | + height: 100%; | ||
| 160 | +} | ||
| 161 | + | ||
| 162 | +.startImg { | ||
| 163 | + animation: turn 1s linear infinite; | ||
| 164 | +} | ||
| 165 | +</style> |
src/views/bigscreenDesigner/designer/widget/line/widgetLineStackChart.vue
| @@ -135,6 +135,7 @@ export default { | @@ -135,6 +135,7 @@ export default { | ||
| 135 | show: optionsSetup.hideX, | 135 | show: optionsSetup.hideX, |
| 136 | // 坐标轴名称 | 136 | // 坐标轴名称 |
| 137 | name: optionsSetup.nameX, | 137 | name: optionsSetup.nameX, |
| 138 | + boundaryGap:false, | ||
| 138 | nameTextStyle: { | 139 | nameTextStyle: { |
| 139 | color: optionsSetup.nameColorX, | 140 | color: optionsSetup.nameColorX, |
| 140 | fontSize: optionsSetup.nameFontSizeX | 141 | fontSize: optionsSetup.nameFontSizeX |
| @@ -369,7 +370,10 @@ export default { | @@ -369,7 +370,10 @@ export default { | ||
| 369 | xAxisList = this.setUnique(xAxisList); | 370 | xAxisList = this.setUnique(xAxisList); |
| 370 | yAxisList = this.setUnique(yAxisList); | 371 | yAxisList = this.setUnique(yAxisList); |
| 371 | for (const i in yAxisList) { | 372 | for (const i in yAxisList) { |
| 372 | - const data = new Array(xAxisList.length).fill(0); | 373 | + let data = []; |
| 374 | + if(optionsSetup.zeroStart){ | ||
| 375 | + data = new Array(xAxisList.length).fill(0); | ||
| 376 | + } | ||
| 373 | for (const j in xAxisList) { | 377 | for (const j in xAxisList) { |
| 374 | for (const k in val) { | 378 | for (const k in val) { |
| 375 | if (val[k].name == yAxisList[i]) { | 379 | if (val[k].name == yAxisList[i]) { |
| @@ -379,6 +383,7 @@ export default { | @@ -379,6 +383,7 @@ export default { | ||
| 379 | } | 383 | } |
| 380 | } | 384 | } |
| 381 | } | 385 | } |
| 386 | + // console.log(data); | ||
| 382 | series.push({ | 387 | series.push({ |
| 383 | name: yAxisList[i], | 388 | name: yAxisList[i], |
| 384 | type: "line", | 389 | type: "line", |
src/views/bigscreenDesigner/designer/widget/temp.vue
| @@ -10,6 +10,7 @@ import widgetText from "./text/widgetText.vue"; | @@ -10,6 +10,7 @@ import widgetText from "./text/widgetText.vue"; | ||
| 10 | import WidgetMarquee from "./text/widgetMarquee.vue"; | 10 | import WidgetMarquee from "./text/widgetMarquee.vue"; |
| 11 | import widgetTime from "./text/widgetTime.vue"; | 11 | import widgetTime from "./text/widgetTime.vue"; |
| 12 | import widgetImage from "./div/widgetImage.vue"; | 12 | import widgetImage from "./div/widgetImage.vue"; |
| 13 | +import widgetDtImage from "./div/widgetDtImage"; | ||
| 13 | import widgetSlider from "./div/widgetSlider.vue"; | 14 | import widgetSlider from "./div/widgetSlider.vue"; |
| 14 | import widgetVideo from "./video/widgetVideo.vue"; | 15 | import widgetVideo from "./video/widgetVideo.vue"; |
| 15 | import WidgetIframe from "./text/widgetIframe.vue"; | 16 | import WidgetIframe from "./text/widgetIframe.vue"; |
| @@ -58,6 +59,7 @@ export default { | @@ -58,6 +59,7 @@ export default { | ||
| 58 | WidgetMarquee, | 59 | WidgetMarquee, |
| 59 | widgetTime, | 60 | widgetTime, |
| 60 | widgetImage, | 61 | widgetImage, |
| 62 | + widgetDtImage, | ||
| 61 | widgetSlider, | 63 | widgetSlider, |
| 62 | widgetVideo, | 64 | widgetVideo, |
| 63 | WidgetIframe, | 65 | WidgetIframe, |
src/views/bigscreenDesigner/designer/widget/widget.vue
| @@ -47,6 +47,7 @@ import widgetHeatmap from "./heatmap/widgetHeatmap"; | @@ -47,6 +47,7 @@ import widgetHeatmap from "./heatmap/widgetHeatmap"; | ||
| 47 | import widgetRadar from "./radar/widgetRadar"; | 47 | import widgetRadar from "./radar/widgetRadar"; |
| 48 | import widgetBarLineStackChart from "./barline/widgetBarLineStackChart"; | 48 | import widgetBarLineStackChart from "./barline/widgetBarLineStackChart"; |
| 49 | import widgetImage from "./div/widgetImage.vue"; | 49 | import widgetImage from "./div/widgetImage.vue"; |
| 50 | +import widgetDtImage from "./div/widgetDtImage"; | ||
| 50 | import widgetSlider from "./div/widgetSlider.vue"; | 51 | import widgetSlider from "./div/widgetSlider.vue"; |
| 51 | import widgetBorderBox from "./div/widgetBorderBox.vue"; | 52 | import widgetBorderBox from "./div/widgetBorderBox.vue"; |
| 52 | import widgetDecoration from "./div/widgetDecoration.vue"; | 53 | import widgetDecoration from "./div/widgetDecoration.vue"; |
| @@ -72,6 +73,7 @@ export default { | @@ -72,6 +73,7 @@ export default { | ||
| 72 | WidgetMarquee, | 73 | WidgetMarquee, |
| 73 | widgetTime, | 74 | widgetTime, |
| 74 | widgetImage, | 75 | widgetImage, |
| 76 | + widgetDtImage, | ||
| 75 | widgetSlider, | 77 | widgetSlider, |
| 76 | widgetVideo, | 78 | widgetVideo, |
| 77 | WidgetIframe, | 79 | WidgetIframe, |