一维表转二维表完成
This commit is contained in:
@@ -126,12 +126,33 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
formatTable(data, isShowIndex, rowNum) {
|
formatTable(data, isShowIndex, rowNum) {
|
||||||
|
const tableStyle = {
|
||||||
|
headerBGC: 'transparent',
|
||||||
|
evenRowBGC: 'transparent',
|
||||||
|
oddRowBGC: 'rgba(0, 133, 255, 0.2)',
|
||||||
|
headerHeight: 42,
|
||||||
|
align: 'center'
|
||||||
|
}
|
||||||
if (!data.length) {
|
if (!data.length) {
|
||||||
return {
|
return {
|
||||||
header: [],
|
header: [],
|
||||||
data: []
|
data: []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (this.data.tableConfig) {
|
||||||
|
const {x, y} = this.data.tableConfig, dataMap = {}
|
||||||
|
const header = [...new Set(Object.entries(data.find(e => e.row == x) || null)?.filter(e => e[0] != 'row').map(e => e[1]) || [])],
|
||||||
|
rows = [...new Set(Object.entries(data.find(e => e.row == y) || null)?.filter(e => e[0] != 'row').map(e => e[1]) || [])]
|
||||||
|
data.map(e => Object.keys(e).map(k => k != 'row' && (dataMap[k] = (dataMap[k] || "") + "#" + e[k])))
|
||||||
|
const tableData = Object.values(dataMap).map(e => e.split("#"))
|
||||||
|
return {
|
||||||
|
...tableStyle,
|
||||||
|
header: ["", ...header],
|
||||||
|
data: rows.map(y => [y, ...header.map(x => {
|
||||||
|
return tableData.find(m => m.includes(x) && m.includes(y)).at(-1)
|
||||||
|
})])
|
||||||
|
}
|
||||||
|
}
|
||||||
let rows = []
|
let rows = []
|
||||||
const header = data.map(v => {
|
const header = data.map(v => {
|
||||||
return v[Object.keys(v)[0]]
|
return v[Object.keys(v)[0]]
|
||||||
@@ -148,10 +169,7 @@ export default {
|
|||||||
return v[item]
|
return v[item]
|
||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
headerBGC: 'transparent',
|
...tableStyle,
|
||||||
evenRowBGC: 'transparent',
|
|
||||||
oddRowBGC: 'rgba(0, 133, 255, 0.2)',
|
|
||||||
headerHeight: 42,
|
|
||||||
rowNum: rowNum || 7,
|
rowNum: rowNum || 7,
|
||||||
index: isShowIndex === '1',
|
index: isShowIndex === '1',
|
||||||
waitTime: 8000,
|
waitTime: 8000,
|
||||||
|
|||||||
@@ -54,7 +54,13 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="layout-config__group" v-else>
|
<div class="layout-config__group" v-else>
|
||||||
<h2>基础设置</h2>
|
<h2>基础设置</h2>
|
||||||
<datasource-picker :options="options" :instance="instance" @input="v=>$emit('change',v)"/>
|
<datasource-picker :options="options" :instance="instance" @input="$emit('change',options)"/>
|
||||||
|
</div>
|
||||||
|
<div class="layout-config__group" v-if="isTable">
|
||||||
|
<h2>表格设置</h2>
|
||||||
|
<code-editor v-model="json" theme="github" width="100%" height="440"
|
||||||
|
placeholder="参照dvScrollBoard设置表格"
|
||||||
|
@change="v=>options.tableConfig=JSON.parse(v)"/>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="options.dataType!='staticData'&&options.type=='monitor'&&['cmcc','slw'].includes(options.monitorType)"
|
<div v-if="options.dataType!='staticData'&&options.type=='monitor'&&['cmcc','slw'].includes(options.monitorType)"
|
||||||
class="layout-config__group">
|
class="layout-config__group">
|
||||||
@@ -159,6 +165,7 @@ export default {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
markers: v => v.options.staticData?.markers || [],
|
markers: v => v.options.staticData?.markers || [],
|
||||||
|
isTable: v => v.options.type == 'table'
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
DatasourcePicker,
|
DatasourcePicker,
|
||||||
@@ -173,6 +180,8 @@ export default {
|
|||||||
const values = this.$copy(this.options)
|
const values = this.$copy(this.options)
|
||||||
values.staticData = {markers: this.$copy(this.options.staticData)}
|
values.staticData = {markers: this.$copy(this.options.staticData)}
|
||||||
this.$emit("change", values)
|
this.$emit("change", values)
|
||||||
|
} else if (this.isTable) {
|
||||||
|
this.json = JSON.stringify(this.options.tableConfig)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ export default {
|
|||||||
dataLang: v => v.options.dataType == 'htmlData' ? 'html' : 'json',
|
dataLang: v => v.options.dataType == 'htmlData' ? 'html' : 'json',
|
||||||
source: {
|
source: {
|
||||||
set(v) {
|
set(v) {
|
||||||
console.log(v)
|
|
||||||
this.$emit("input", v)
|
this.$emit("input", v)
|
||||||
},
|
},
|
||||||
get() {
|
get() {
|
||||||
|
|||||||
Reference in New Issue
Block a user