mirror of
https://gitee.com/dromara/go-view.git
synced 2025-10-13 22:12:11 +08:00
feat: 空调可视化列表
This commit is contained in:
parent
d96e79ffec
commit
8cb59f3d6b
@ -14,9 +14,9 @@ export const option = {
|
|||||||
// 展示列
|
// 展示列
|
||||||
header: {
|
header: {
|
||||||
columns: [
|
columns: [
|
||||||
{key: 'node_name', title: '设备名', unit: '', show: true, width: 'auto', align: 'left', ellipsis: true},
|
{key: 'node_name', reg: '', title: '设备名', unit: '', show: true, width: 'auto', align: 'left', ellipsis: true},
|
||||||
{key: '空调功率', title: '空调功率', unit: 'kW', show: true, width: 'auto', align: 'left', ellipsis: true},
|
{key: 'col1', reg: '/功率/', title: '空调功率', unit: 'kW', show: true, width: 'auto', align: 'left', ellipsis: true},
|
||||||
{key: '用电量', title: '用电量', unit: 'kWh', show: true, width: 'auto', align: 'left', ellipsis: true},
|
{key: 'col2', reg: '/用电量/', title: '用电量', unit: 'kWh', show: true, width: 'auto', align: 'left', ellipsis: true},
|
||||||
],
|
],
|
||||||
// value: [],
|
// value: [],
|
||||||
// options: [],
|
// options: [],
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
<n-switch v-model:value="it.show" size="small"/>
|
<n-switch v-model:value="it.show" size="small"/>
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="字段名 对应设备测点名称">
|
<setting-item name="正则表达式 匹配测点名称 如/功率/" v-if="i !== 0">
|
||||||
<n-input v-model:value="it.key"/>
|
<n-input v-model:value="it.reg"/>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="列名">
|
<setting-item name="列名">
|
||||||
<n-input v-model:value="it.title"/>
|
<n-input v-model:value="it.title"/>
|
||||||
|
@ -78,7 +78,7 @@ watch(() => props.chartConfig.option.header, v => {
|
|||||||
deep: true
|
deep: true
|
||||||
})
|
})
|
||||||
|
|
||||||
let originData = ref({}) as {[k: string]: any}
|
let originData:any = ref([])
|
||||||
|
|
||||||
const customData = computed(() => {
|
const customData = computed(() => {
|
||||||
return props.chartConfig.customData as typeof cd
|
return props.chartConfig.customData as typeof cd
|
||||||
@ -86,26 +86,46 @@ const customData = computed(() => {
|
|||||||
|
|
||||||
let data = computed(() => {
|
let data = computed(() => {
|
||||||
let arr:any = []
|
let arr:any = []
|
||||||
if(!Object.keys(originData.value).length) return arr
|
// if(!Object.keys(originData.value).length) return arr
|
||||||
customData.value.ids.forEach((id: string) => {
|
// customData.value.ids.forEach((id: string) => {
|
||||||
|
// let obj: any = {}
|
||||||
|
// option.header.columns.forEach((col: any, i: number) => {
|
||||||
|
// if(i === 0) {
|
||||||
|
// obj[col.key] = originData.value[id]?.[col.key]
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// let o = originData.value[id] ? originData.value[id] : null
|
||||||
|
// if(o) {
|
||||||
|
// let arr = [
|
||||||
|
// ...Object.values(o.aic),
|
||||||
|
// ...Object.values(o.aoc),
|
||||||
|
// ...Object.values(o.dic),
|
||||||
|
// ...Object.values(o.doc),
|
||||||
|
// ]
|
||||||
|
// let t:any = arr.find((_: any) => _.node_name === col.key) || {}
|
||||||
|
// obj[col.key] = t.value
|
||||||
|
// }
|
||||||
|
// else obj[col.key] = undefined
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// arr.push(obj)
|
||||||
|
// })
|
||||||
|
if(!originData.value.length) return arr
|
||||||
|
customData.value.ids.forEach((id, i) => {
|
||||||
|
let target = originData.value[i]
|
||||||
let obj: any = {}
|
let obj: any = {}
|
||||||
option.header.columns.forEach((col: any, i: number) => {
|
option.header.columns.forEach((col: any, ci:number) => {
|
||||||
if(i === 0) {
|
if(ci === 0) {
|
||||||
obj[col.key] = originData.value[id]?.[col.key]
|
obj[col.key] = target.node_name
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let o = originData.value[id] ? originData.value[id] : null
|
const pattern = col.reg.slice(1, -1); // 移除开始和结束的斜杠
|
||||||
if(o) {
|
let t = {node_value: ''}
|
||||||
let arr = [
|
if(pattern) {
|
||||||
...Object.values(o.aic),
|
const regex = new RegExp(pattern);
|
||||||
...Object.values(o.aoc),
|
t = target.children.find((_: any) => regex.test(_.node_name)) || {}
|
||||||
...Object.values(o.dic),
|
|
||||||
...Object.values(o.doc),
|
|
||||||
]
|
|
||||||
let t:any = arr.find((_: any) => _.node_name === col.key) || {}
|
|
||||||
obj[col.key] = t.value
|
|
||||||
}
|
}
|
||||||
else obj[col.key] = undefined
|
obj[col.key] = t.node_value
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
arr.push(obj)
|
arr.push(obj)
|
||||||
@ -153,6 +173,7 @@ if (systemConfig['active_alarm_confirm_status']) {
|
|||||||
|
|
||||||
const getData = () => {
|
const getData = () => {
|
||||||
if(!customData.value.ids.filter((_: string) => _).length) {
|
if(!customData.value.ids.filter((_: string) => _).length) {
|
||||||
|
originData.value = []
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let params = {
|
let params = {
|
||||||
@ -164,10 +185,53 @@ const getData = () => {
|
|||||||
}
|
}
|
||||||
publicInterface('/dcim/dems/device_point', 'cinterface_realtime_data_get_by_uid_no_err_v2', params).then(res => {
|
publicInterface('/dcim/dems/device_point', 'cinterface_realtime_data_get_by_uid_no_err_v2', params).then(res => {
|
||||||
if (res && res.data) {
|
if (res && res.data) {
|
||||||
originData.value = res.data
|
let arr = customData.value.ids.map((id: string) => {
|
||||||
|
let obj = {
|
||||||
|
node_name: res.data[id] ? res.data[id].node_name : '',
|
||||||
|
uid: id
|
||||||
|
}
|
||||||
|
return obj
|
||||||
|
})
|
||||||
|
getDataChild(arr)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getDataChild = (parents: any) => {
|
||||||
|
let params = {
|
||||||
|
"condition": {
|
||||||
|
"dems_device_uid": '',
|
||||||
|
"node_name": "",
|
||||||
|
"signal_id": "",
|
||||||
|
"node_status": null,
|
||||||
|
"data_type": "",
|
||||||
|
"dems_device_template_id": null,
|
||||||
|
"is_major_paramenter": "",
|
||||||
|
"is_show": true,
|
||||||
|
"open_driver": true
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"page_size": 99999,
|
||||||
|
"page_number": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let arr = customData.value.ids.map(_ => {
|
||||||
|
let p = cloneDeep(params)
|
||||||
|
p.condition.dems_device_uid = _
|
||||||
|
return publicInterface('/dcim/dems/device_point', 'get_page', p)
|
||||||
|
})
|
||||||
|
Promise.all(arr).then(res => {
|
||||||
|
let data = res.map(item => {
|
||||||
|
if(item && item.errcode === '00000') return item.data.item || []
|
||||||
|
else return []
|
||||||
|
})
|
||||||
|
data.forEach((item, i) => {
|
||||||
|
parents[i].children = item
|
||||||
|
})
|
||||||
|
originData.value = parents
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
watch(() => customData.value.ids, () => {
|
watch(() => customData.value.ids, () => {
|
||||||
getData()
|
getData()
|
||||||
}, {
|
}, {
|
||||||
@ -208,7 +272,7 @@ onUnmounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
::v-deep tr{
|
:deep(tr) {
|
||||||
height: var(--lineHeight);
|
height: var(--lineHeight);
|
||||||
}
|
}
|
||||||
@include go('tables-basic') {
|
@include go('tables-basic') {
|
||||||
|
@ -1,10 +1,20 @@
|
|||||||
|
import {postMessageToParent} from "@/utils";
|
||||||
|
|
||||||
const bindEvent = (item:any) => {
|
const bindEvent = (item:any) => {
|
||||||
let obj = {}
|
let obj = {}
|
||||||
if(item?.customEvent?.click) {
|
if(item?.customEvent?.click) {
|
||||||
let {linkHead, link} = item.customEvent.click
|
let {linkHead, link, isBlank} = item.customEvent.click
|
||||||
obj = {
|
obj = {
|
||||||
click: () => {
|
click: () => {
|
||||||
if(link) window.open(`${linkHead}${link}`)
|
if(isBlank) postMessageToParent({
|
||||||
|
type: 'windowOpen',
|
||||||
|
url: `${linkHead}${link}`,
|
||||||
|
openNew: true
|
||||||
|
})
|
||||||
|
else postMessageToParent({
|
||||||
|
type: 'windowOpen',
|
||||||
|
url: `${linkHead}${link}`,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user