|
|
@ -6,15 +6,20 @@
|
|
|
|
!-->
|
|
|
|
!-->
|
|
|
|
<template>
|
|
|
|
<template>
|
|
|
|
<div class="layout">
|
|
|
|
<div class="layout">
|
|
|
|
<div v-if="toolIsShow" class="layout-left" :style="{ width: widthLeftForTools + 'px' }">
|
|
|
|
<div v-if="toolIsShow"
|
|
|
|
<el-tabs type="border-card" :stretch="true">
|
|
|
|
class="layout-left"
|
|
|
|
|
|
|
|
:style="{ width: widthLeftForTools + 'px' }">
|
|
|
|
|
|
|
|
<el-tabs type="border-card"
|
|
|
|
|
|
|
|
:stretch="true">
|
|
|
|
<!-- 左侧组件栏-->
|
|
|
|
<!-- 左侧组件栏-->
|
|
|
|
<el-tab-pane label="工具栏">
|
|
|
|
<el-tab-pane label="工具栏">
|
|
|
|
<!-- <el-divider content-position="center">html</el-divider>-->
|
|
|
|
<!-- <el-divider content-position="center">html</el-divider>-->
|
|
|
|
<draggable v-for="widget in widgetTools" :key="widget.code" @end="(evt) => widgetOnDragged(evt, widget.code)">
|
|
|
|
<draggable v-for="widget in widgetTools"
|
|
|
|
|
|
|
|
:key="widget.code"
|
|
|
|
|
|
|
|
@end="(evt) => widgetOnDragged(evt, widget.code)">
|
|
|
|
<div class="tools-item">
|
|
|
|
<div class="tools-item">
|
|
|
|
<span class="tools-item-icon">
|
|
|
|
<span class="tools-item-icon">
|
|
|
|
<svg-icon :icon-class="widget.icon" />
|
|
|
|
<!-- <svg-icon :icon-class="widget.icon" /> -->1
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<span class="tools-item-text">{{ widget.label }}</span>
|
|
|
|
<span class="tools-item-text">{{ widget.label }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
@ -22,9 +27,11 @@
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tab-pane>
|
|
|
|
<!-- 左侧图层-->
|
|
|
|
<!-- 左侧图层-->
|
|
|
|
<el-tab-pane label="图层">
|
|
|
|
<el-tab-pane label="图层">
|
|
|
|
<div v-for="(item, index) in layerWidget" :key="index" class="tools-item">
|
|
|
|
<div v-for="(item, index) in layerWidget"
|
|
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
|
|
class="tools-item">
|
|
|
|
<span class="tools-item-icon">
|
|
|
|
<span class="tools-item-icon">
|
|
|
|
<svg-icon :icon-class="item.icon" />
|
|
|
|
<!-- <svg-icon :icon-class="item.icon" /> -->2
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<span class="tools-item-text">{{ item.label }}</span>
|
|
|
|
<span class="tools-item-text">{{ item.label }}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
@ -32,48 +39,90 @@
|
|
|
|
</el-tabs>
|
|
|
|
</el-tabs>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="layout-left-fold" :style="{ width: widthLeftForToolsHideButton + 'px' }" @click="toolIsShow = !toolIsShow">
|
|
|
|
<div class="layout-left-fold"
|
|
|
|
|
|
|
|
:style="{ width: widthLeftForToolsHideButton + 'px' }"
|
|
|
|
|
|
|
|
@click="toolIsShow = !toolIsShow">
|
|
|
|
<i class="iconfont iconfold" />
|
|
|
|
<i class="iconfont iconfold" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="layout-middle" :style="{ width: middleWidth + 'px', height: middleHeight + 'px' }">
|
|
|
|
<div class="layout-middle"
|
|
|
|
|
|
|
|
:style="{ width: middleWidth + 'px', height: middleHeight + 'px' }">
|
|
|
|
<div class="top-button">
|
|
|
|
<div class="top-button">
|
|
|
|
<span class="btn">
|
|
|
|
<span class="btn">
|
|
|
|
<el-tooltip class="item" effect="dark" content="保存" placement="bottom">
|
|
|
|
<el-tooltip class="item"
|
|
|
|
<svg-icon icon-class="report" @click="saveData" />
|
|
|
|
effect="dark"
|
|
|
|
|
|
|
|
content="保存"
|
|
|
|
|
|
|
|
placement="bottom">
|
|
|
|
|
|
|
|
<!-- <svg-icon icon-class="report" @click="saveData" /> -->3
|
|
|
|
</el-tooltip>
|
|
|
|
</el-tooltip>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<span class="btn">
|
|
|
|
<span class="btn">
|
|
|
|
<el-tooltip class="item" effect="dark" content="预览" placement="bottom">
|
|
|
|
<el-tooltip class="item"
|
|
|
|
<svg-icon icon-class="eye-open" @click="viewScreen" />
|
|
|
|
effect="dark"
|
|
|
|
|
|
|
|
content="预览"
|
|
|
|
|
|
|
|
placement="bottom">
|
|
|
|
|
|
|
|
<!-- <svg-icon icon-class="eye-open" @click="viewScreen" /> -->4
|
|
|
|
</el-tooltip>
|
|
|
|
</el-tooltip>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="workbench-container" :style="{ width: bigscreenWidthInWorkbench + 'px', height: bigscreenHeightInWorkbench + 'px' }">
|
|
|
|
<div class="workbench-container"
|
|
|
|
<vue-ruler-tool v-model="dashboard.presetLine" class="vueRuler" :step-length="50" :parent="true" :position="'relative'" :is-scale-revise="true" :visible.sync="dashboard.presetLineVisible">
|
|
|
|
:style="{ width: bigscreenWidthInWorkbench + 'px', height: bigscreenHeightInWorkbench + 'px' }">
|
|
|
|
<div id="workbench" class="workbench" :style="{ transform: workbenchTransform, width: bigscreenWidth + 'px', height: bigscreenHeight + 'px', 'background-color': dashboard.backgroundColor, 'background-image': 'url(' + dashboard.backgroundImage + ')', 'background-position': '0% 0%', 'background-size': '100% 100%', 'background-repeat': 'initial', 'background-attachment': 'initial', 'background-origin': 'initial', 'background-clip': 'initial' }" @click="setOptionsOnClickScreen">
|
|
|
|
<vue-ruler-tool v-model="dashboard.presetLine"
|
|
|
|
<widget v-for="(widget, index) in widgets" :key="index" v-model="widget.value" :index="index" :type="widget.type" :bigscreen="{ bigscreenWidth, bigscreenHeight }" @onActivated="setOptionsOnClickWidget" @contextmenu.prevent.native="rightClick($event, index)" />
|
|
|
|
class="vueRuler"
|
|
|
|
|
|
|
|
:step-length="50"
|
|
|
|
|
|
|
|
:parent="true"
|
|
|
|
|
|
|
|
:position="'relative'"
|
|
|
|
|
|
|
|
:is-scale-revise="true"
|
|
|
|
|
|
|
|
:visible.sync="dashboard.presetLineVisible">
|
|
|
|
|
|
|
|
<div id="workbench"
|
|
|
|
|
|
|
|
class="workbench"
|
|
|
|
|
|
|
|
:style="{ transform: workbenchTransform, width: bigscreenWidth + 'px', height: bigscreenHeight + 'px', 'background-color': dashboard.backgroundColor, 'background-image': 'url(' + dashboard.backgroundImage + ')', 'background-position': '0% 0%', 'background-size': '100% 100%', 'background-repeat': 'initial', 'background-attachment': 'initial', 'background-origin': 'initial', 'background-clip': 'initial' }"
|
|
|
|
|
|
|
|
@click="setOptionsOnClickScreen">
|
|
|
|
|
|
|
|
<widget v-for="(widget, index) in widgets"
|
|
|
|
|
|
|
|
:key="index"
|
|
|
|
|
|
|
|
v-model="widget.value"
|
|
|
|
|
|
|
|
:index="index"
|
|
|
|
|
|
|
|
:type="widget.type"
|
|
|
|
|
|
|
|
:bigscreen="{ bigscreenWidth, bigscreenHeight }"
|
|
|
|
|
|
|
|
@onActivated="setOptionsOnClickWidget"
|
|
|
|
|
|
|
|
@contextmenu.prevent.native="rightClick($event, index)" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</vue-ruler-tool>
|
|
|
|
</vue-ruler-tool>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="layout-right" :style="{ width: widthLeftForOptions + 'px' }">
|
|
|
|
<div class="layout-right"
|
|
|
|
<el-tabs v-model="activeName" type="border-card" :stretch="true">
|
|
|
|
:style="{ width: widthLeftForOptions + 'px' }">
|
|
|
|
<el-tab-pane v-if="isNotNull(widgetOptions.setup) || isNotNull(widgetOptions.collapse)" name="first" label="配置">
|
|
|
|
<el-tabs v-model="activeName"
|
|
|
|
<dynamicForm ref="formData" :options="widgetOptions.setup" @onChanged="(val) => widgetValueChanged('setup', val)" />
|
|
|
|
type="border-card"
|
|
|
|
<dynamicCollapseForm v-if="widgetOptions.collapse && widgetOptions.collapse.length > 0" ref="formData" :options="widgetOptions.collapse" @onChanged="(val) => widgetValueChanged('collapse', val)" />
|
|
|
|
:stretch="true">
|
|
|
|
|
|
|
|
<el-tab-pane v-if="isNotNull(widgetOptions.setup) || isNotNull(widgetOptions.collapse)"
|
|
|
|
|
|
|
|
name="first"
|
|
|
|
|
|
|
|
label="配置">
|
|
|
|
|
|
|
|
<dynamicForm ref="formData"
|
|
|
|
|
|
|
|
:options="widgetOptions.setup"
|
|
|
|
|
|
|
|
@onChanged="(val) => widgetValueChanged('setup', val)" />
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tab-pane>
|
|
|
|
<el-tab-pane v-if="isNotNull(widgetOptions.data)" name="second" label="数据">
|
|
|
|
<el-tab-pane v-if="isNotNull(widgetOptions.data)"
|
|
|
|
<dynamicForm ref="formData" :options="widgetOptions.data" @onChanged="(val) => widgetValueChanged('data', val)" />
|
|
|
|
name="second"
|
|
|
|
|
|
|
|
label="数据">
|
|
|
|
|
|
|
|
<dynamicForm ref="formData"
|
|
|
|
|
|
|
|
:options="widgetOptions.data"
|
|
|
|
|
|
|
|
@onChanged="(val) => widgetValueChanged('data', val)" />
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tab-pane>
|
|
|
|
<el-tab-pane v-if="isNotNull(widgetOptions.position)" name="third" label="坐标">
|
|
|
|
<el-tab-pane v-if="isNotNull(widgetOptions.position)"
|
|
|
|
<dynamicForm ref="formData" :options="widgetOptions.position" @onChanged="(val) => widgetValueChanged('position', val)" />
|
|
|
|
name="third"
|
|
|
|
|
|
|
|
label="坐标">
|
|
|
|
|
|
|
|
<dynamicForm ref="formData"
|
|
|
|
|
|
|
|
:options="widgetOptions.position"
|
|
|
|
|
|
|
|
@onChanged="(val) => widgetValueChanged('position', val)" />
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tabs>
|
|
|
|
</el-tabs>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<content-menu :visible.sync="visibleContentMenu" :style-obj="styleObj" @deletelayer="deletelayer" />
|
|
|
|
<content-menu :visible.sync="visibleContentMenu"
|
|
|
|
|
|
|
|
:style-obj="styleObj"
|
|
|
|
|
|
|
|
@deletelayer="deletelayer" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
@ -82,7 +131,6 @@ import { insertDashboard, detailDashboard } from '@/api/bigscreen'
|
|
|
|
import { widgetTools, getToolByCode } from './tools'
|
|
|
|
import { widgetTools, getToolByCode } from './tools'
|
|
|
|
import widget from './widget/widget.vue'
|
|
|
|
import widget from './widget/widget.vue'
|
|
|
|
import dynamicForm from './form/dynamicForm.vue'
|
|
|
|
import dynamicForm from './form/dynamicForm.vue'
|
|
|
|
import dynamicCollapseForm from './form/dynamicCollapseForm.vue'
|
|
|
|
|
|
|
|
import draggable from 'vuedraggable'
|
|
|
|
import draggable from 'vuedraggable'
|
|
|
|
import VueRulerTool from 'vue-ruler-tool' // 大屏设计页面的标尺插件
|
|
|
|
import VueRulerTool from 'vue-ruler-tool' // 大屏设计页面的标尺插件
|
|
|
|
import contentMenu from './form/contentMenu'
|
|
|
|
import contentMenu from './form/contentMenu'
|
|
|
@ -93,7 +141,6 @@ export default {
|
|
|
|
VueRulerTool,
|
|
|
|
VueRulerTool,
|
|
|
|
widget,
|
|
|
|
widget,
|
|
|
|
dynamicForm,
|
|
|
|
dynamicForm,
|
|
|
|
dynamicCollapseForm,
|
|
|
|
|
|
|
|
contentMenu,
|
|
|
|
contentMenu,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
data () {
|
|
|
|
data () {
|
|
|
@ -147,7 +194,6 @@ export default {
|
|
|
|
// 当前激活组件右侧配置属性
|
|
|
|
// 当前激活组件右侧配置属性
|
|
|
|
widgetOptions: {
|
|
|
|
widgetOptions: {
|
|
|
|
setup: [], // 配置
|
|
|
|
setup: [], // 配置
|
|
|
|
collapse: [],
|
|
|
|
|
|
|
|
data: [], // 数据
|
|
|
|
data: [], // 数据
|
|
|
|
position: [], // 坐标
|
|
|
|
position: [], // 坐标
|
|
|
|
},
|
|
|
|
},
|
|
|
@ -238,6 +284,7 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handleInitEchartsData (data) {
|
|
|
|
handleInitEchartsData (data) {
|
|
|
|
|
|
|
|
console.log(data)
|
|
|
|
const widgets = data.dashboard.widgets
|
|
|
|
const widgets = data.dashboard.widgets
|
|
|
|
const widgetsData = []
|
|
|
|
const widgetsData = []
|
|
|
|
for (let i = 0; i < widgets.length; i++) {
|
|
|
|
for (let i = 0; i < widgets.length; i++) {
|
|
|
@ -281,17 +328,17 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// collapse
|
|
|
|
// // collapse
|
|
|
|
for (const key in data.collapse) {
|
|
|
|
// for (const key in data.collapse) {
|
|
|
|
for (let i = 0; i < option.collapse.length; i++) {
|
|
|
|
// for (let i = 0; i < option.collapse.length; i++) {
|
|
|
|
const itemList = option.collapse[i].list
|
|
|
|
// const itemList = option.collapse[i].list
|
|
|
|
for (let j = 0; j < itemList.length; j++) {
|
|
|
|
// for (let j = 0; j < itemList.length; j++) {
|
|
|
|
if (key == itemList[j].name) {
|
|
|
|
// if (key == itemList[j].name) {
|
|
|
|
itemList[j].value = data.collapse[key]
|
|
|
|
// itemList[j].value = data.collapse[key]
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
return option
|
|
|
|
return option
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 保存数据
|
|
|
|
// 保存数据
|
|
|
@ -311,14 +358,15 @@ export default {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
widgets: this.widgets,
|
|
|
|
widgets: this.widgets,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log(this.dashboard)
|
|
|
|
|
|
|
|
console.log(screenData)
|
|
|
|
|
|
|
|
const { code, data } = await insertDashboard(screenData)
|
|
|
|
const { code, data } = await insertDashboard(screenData)
|
|
|
|
if (code != '200') return
|
|
|
|
if (code != '200') return
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 预览
|
|
|
|
// 预览
|
|
|
|
viewScreen () {
|
|
|
|
viewScreen () {
|
|
|
|
var routeUrl = this.$router.resolve({ path: '/report/bigscreen/viewer', query: { reportCode: this.$route.query.reportCode }})
|
|
|
|
var routeUrl = this.$router.resolve({
|
|
|
|
|
|
|
|
path: '/report/bigscreen/viewer',
|
|
|
|
|
|
|
|
query: { reportCode: this.$route.query.reportCode },
|
|
|
|
|
|
|
|
})
|
|
|
|
window.open(routeUrl.href, '_blank')
|
|
|
|
window.open(routeUrl.href, '_blank')
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 在缩放模式下的大小
|
|
|
|
// 在缩放模式下的大小
|
|
|
@ -344,13 +392,11 @@ export default {
|
|
|
|
|
|
|
|
|
|
|
|
// 复制一个组件
|
|
|
|
// 复制一个组件
|
|
|
|
var tool = getToolByCode(widgetType)
|
|
|
|
var tool = getToolByCode(widgetType)
|
|
|
|
|
|
|
|
|
|
|
|
var widgetJson = {
|
|
|
|
var widgetJson = {
|
|
|
|
type: widgetType,
|
|
|
|
type: widgetType,
|
|
|
|
value: {
|
|
|
|
value: {
|
|
|
|
setup: {},
|
|
|
|
setup: {},
|
|
|
|
data: {},
|
|
|
|
data: {},
|
|
|
|
collapse: {},
|
|
|
|
|
|
|
|
position: {
|
|
|
|
position: {
|
|
|
|
width: 0,
|
|
|
|
width: 0,
|
|
|
|
height: 0,
|
|
|
|
height: 0,
|
|
|
@ -361,14 +407,10 @@ export default {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
options: tool.options,
|
|
|
|
options: tool.options,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 处理默认值
|
|
|
|
// 处理默认值
|
|
|
|
const widgetJsonValue = this.handleDefaultValue(widgetJson)
|
|
|
|
const widgetJsonValue = this.handleDefaultValue(widgetJson)
|
|
|
|
|
|
|
|
|
|
|
|
// 将选中的复制组件,放到工作区中去
|
|
|
|
// 将选中的复制组件,放到工作区中去
|
|
|
|
|
|
|
|
|
|
|
|
this.widgets.push(this.deepClone(widgetJsonValue))
|
|
|
|
this.widgets.push(this.deepClone(widgetJsonValue))
|
|
|
|
console.log(this.widgets)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 激活新组件的配置属性
|
|
|
|
// 激活新组件的配置属性
|
|
|
|
this.setOptionsOnClickWidget(this.widgets.length - 1)
|
|
|
|
this.setOptionsOnClickWidget(this.widgets.length - 1)
|
|
|
@ -382,8 +424,15 @@ export default {
|
|
|
|
// setup 处理
|
|
|
|
// setup 处理
|
|
|
|
for (let i = 0; i < widgetJson.options.setup.length; i++) {
|
|
|
|
for (let i = 0; i < widgetJson.options.setup.length; i++) {
|
|
|
|
const item = widgetJson.options.setup[i]
|
|
|
|
const item = widgetJson.options.setup[i]
|
|
|
|
if (item.value) {
|
|
|
|
if (Object.prototype.toString.call(item) == '[object Object]') {
|
|
|
|
widgetJson.value.setup[item.name] = item.value
|
|
|
|
widgetJson.value.setup[item.name] = item.value
|
|
|
|
|
|
|
|
} else if (Object.prototype.toString.call(item) == '[object Array]') {
|
|
|
|
|
|
|
|
for (let j = 0; j < item.length; j++) {
|
|
|
|
|
|
|
|
const list = item[j].list
|
|
|
|
|
|
|
|
list.forEach((el) => {
|
|
|
|
|
|
|
|
widgetJson.value.setup[el.name] = el.value
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// position
|
|
|
|
// position
|
|
|
@ -393,18 +442,6 @@ export default {
|
|
|
|
widgetJson.value.position[item.name] = item.value
|
|
|
|
widgetJson.value.position[item.name] = item.value
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// collapse 处理
|
|
|
|
|
|
|
|
if (widgetJson.options.collapse && widgetJson.options.collapse.length > 0) {
|
|
|
|
|
|
|
|
for (let i = 0; i < widgetJson.options.collapse.length; i++) {
|
|
|
|
|
|
|
|
const itemList = widgetJson.options.collapse[i].list
|
|
|
|
|
|
|
|
for (let j = 0; j < itemList.length; j++) {
|
|
|
|
|
|
|
|
const itemChildList = itemList[j]
|
|
|
|
|
|
|
|
if (itemChildList.value) {
|
|
|
|
|
|
|
|
widgetJson.value.collapse[itemChildList.name] = itemChildList.value
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// data 处理
|
|
|
|
// data 处理
|
|
|
|
if (widgetJson.options.data && widgetJson.options.data.length > 0) {
|
|
|
|
if (widgetJson.options.data && widgetJson.options.data.length > 0) {
|
|
|
|
for (let i = 0; i < widgetJson.options.data.length; i++) {
|
|
|
|
for (let i = 0; i < widgetJson.options.data.length; i++) {
|
|
|
@ -437,6 +474,7 @@ export default {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
this.widgetIndex = index
|
|
|
|
this.widgetIndex = index
|
|
|
|
|
|
|
|
console.log(this.deepClone(this.widgets[index]['options']))
|
|
|
|
this.widgetOptions = this.deepClone(this.widgets[index]['options'])
|
|
|
|
this.widgetOptions = this.deepClone(this.widgets[index]['options'])
|
|
|
|
return
|
|
|
|
return
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -456,17 +494,16 @@ export default {
|
|
|
|
position: {}
|
|
|
|
position: {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}]*/
|
|
|
|
}]*/
|
|
|
|
|
|
|
|
|
|
|
|
if (this.screenCode == 'screen') {
|
|
|
|
if (this.screenCode == 'screen') {
|
|
|
|
this.dashboard = this.deepClone(val)
|
|
|
|
this.dashboard = this.deepClone(val)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < this.widgets.length; i++) {
|
|
|
|
for (let i = 0; i < this.widgets.length; i++) {
|
|
|
|
if (this.widgetIndex == i) {
|
|
|
|
if (this.widgetIndex == i) {
|
|
|
|
this.widgets[i].value[key] = this.deepClone(val)
|
|
|
|
this.widgets[i].value[key] = this.deepClone(val)
|
|
|
|
this.setDefaultValue(this.widgets[i].options[key], key, val)
|
|
|
|
this.setDefaultValue(this.widgets[i].options[key], val)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// console.log(this.widgets)
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
rightClick (event, index) {
|
|
|
|
rightClick (event, index) {
|
|
|
|
this.rightClickIndex = index
|
|
|
|
this.rightClickIndex = index
|
|
|
@ -485,30 +522,28 @@ export default {
|
|
|
|
deletelayer () {
|
|
|
|
deletelayer () {
|
|
|
|
this.widgets.splice(this.rightClickIndex, 1)
|
|
|
|
this.widgets.splice(this.rightClickIndex, 1)
|
|
|
|
},
|
|
|
|
},
|
|
|
|
setDefaultValue(options, type, val) {
|
|
|
|
setDefaultValue (options, val) {
|
|
|
|
// type: setup、collapse、data、position
|
|
|
|
for (let i = 0; i < options.length; i++) {
|
|
|
|
const optionsArr = options
|
|
|
|
if (Object.prototype.toString.call(options[i]) == '[object Object]') {
|
|
|
|
if (type == 'collapse') {
|
|
|
|
|
|
|
|
for (let i = 0; i < optionsArr.length; i++) {
|
|
|
|
|
|
|
|
const list = optionsArr[i].list
|
|
|
|
|
|
|
|
for (let j = 0; j < list.length; j++) {
|
|
|
|
|
|
|
|
for (const k in val) {
|
|
|
|
for (const k in val) {
|
|
|
|
if (list[j].name == k) {
|
|
|
|
if (options[i].name == k) {
|
|
|
|
list[j].value = val[k]
|
|
|
|
options[i].value = val[k]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (Object.prototype.toString.call(options[i]) == '[object Array]') {
|
|
|
|
}
|
|
|
|
for (let j = 0; j < options[i].length; j++) {
|
|
|
|
} else {
|
|
|
|
const list = options[i][j].list
|
|
|
|
for (let i = 0; i < optionsArr.length; i++) {
|
|
|
|
for (let z = 0; z < list.length; z++) {
|
|
|
|
for (const k in val) {
|
|
|
|
for (const k in val) {
|
|
|
|
if (optionsArr[i].name == k) {
|
|
|
|
if (list[z].name == k) {
|
|
|
|
optionsArr[i].value = val[k]
|
|
|
|
list[z].value = val[k]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|