feat(energyManagement): 添加水电气树接口
This commit is contained in:
@@ -1,10 +1,9 @@
|
|||||||
import type { MeterInfoVO, MeterInfoForm, MeterInfoQuery } from './model';
|
import type { MeterInfoVO, MeterInfoForm, MeterInfoQuery } from './model'
|
||||||
|
|
||||||
import type { ID, IDS } from '#/api/common';
|
import type { ID, IDS, PageResult, TreeNode } from '#/api/common';
|
||||||
import type { PageResult } from '#/api/common';
|
|
||||||
|
|
||||||
import { commonExport } from '#/api/helper';
|
import { commonExport } from '#/api/helper'
|
||||||
import { requestClient } from '#/api/request';
|
import { requestClient } from '#/api/request'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询水电气列表
|
* 查询水电气列表
|
||||||
@@ -12,7 +11,7 @@ import { requestClient } from '#/api/request';
|
|||||||
* @returns 水电气列表
|
* @returns 水电气列表
|
||||||
*/
|
*/
|
||||||
export function meterInfoList(params?: MeterInfoQuery) {
|
export function meterInfoList(params?: MeterInfoQuery) {
|
||||||
return requestClient.get<PageResult<MeterInfoVO>>('/property/meterInfo/list', { params });
|
return requestClient.get<PageResult<MeterInfoVO>>('/property/meterInfo/list', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -21,7 +20,7 @@ export function meterInfoList(params?: MeterInfoQuery) {
|
|||||||
* @returns 水电气列表
|
* @returns 水电气列表
|
||||||
*/
|
*/
|
||||||
export function meterInfoExport(params?: MeterInfoQuery) {
|
export function meterInfoExport(params?: MeterInfoQuery) {
|
||||||
return commonExport('/property/meterInfo/export', params ?? {});
|
return commonExport('/property/meterInfo/export', params ?? {})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,7 +29,7 @@ export function meterInfoExport(params?: MeterInfoQuery) {
|
|||||||
* @returns 水电气详情
|
* @returns 水电气详情
|
||||||
*/
|
*/
|
||||||
export function meterInfoInfo(id: ID) {
|
export function meterInfoInfo(id: ID) {
|
||||||
return requestClient.get<MeterInfoVO>(`/property/meterInfo/${id}`);
|
return requestClient.get<MeterInfoVO>(`/property/meterInfo/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,7 +38,7 @@ export function meterInfoInfo(id: ID) {
|
|||||||
* @returns void
|
* @returns void
|
||||||
*/
|
*/
|
||||||
export function meterInfoAdd(data: MeterInfoForm) {
|
export function meterInfoAdd(data: MeterInfoForm) {
|
||||||
return requestClient.postWithMsg<void>('/property/meterInfo', data);
|
return requestClient.postWithMsg<void>('/property/meterInfo', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,7 +47,7 @@ export function meterInfoAdd(data: MeterInfoForm) {
|
|||||||
* @returns void
|
* @returns void
|
||||||
*/
|
*/
|
||||||
export function meterInfoUpdate(data: MeterInfoForm) {
|
export function meterInfoUpdate(data: MeterInfoForm) {
|
||||||
return requestClient.putWithMsg<void>('/property/meterInfo', data);
|
return requestClient.putWithMsg<void>('/property/meterInfo', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,5 +56,14 @@ export function meterInfoUpdate(data: MeterInfoForm) {
|
|||||||
* @returns void
|
* @returns void
|
||||||
*/
|
*/
|
||||||
export function meterInfoRemove(id: ID | IDS) {
|
export function meterInfoRemove(id: ID | IDS) {
|
||||||
return requestClient.deleteWithMsg<void>(`/property/meterInfo/${id}`);
|
return requestClient.deleteWithMsg<void>(`/property/meterInfo/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询水电气树
|
||||||
|
* @param level
|
||||||
|
* @returns 水电气树
|
||||||
|
*/
|
||||||
|
export function queryTree(meterType: number | string) {
|
||||||
|
return requestClient.get<TreeNode<Number>[]>(`/property/meterInfo/tree/${meterType}`)
|
||||||
|
}
|
@@ -4,8 +4,8 @@ import type { PropType } from 'vue'
|
|||||||
import { onMounted, ref } from 'vue'
|
import { onMounted, ref } from 'vue'
|
||||||
import { handleNode } from '@vben/utils'
|
import { handleNode } from '@vben/utils'
|
||||||
import { Empty, Skeleton, Tree } from 'ant-design-vue'
|
import { Empty, Skeleton, Tree } from 'ant-design-vue'
|
||||||
import { communityTree } from "#/api/property/community"
|
import { queryTree } from "#/api/property/energyManagement/meterInfo"
|
||||||
import type { CommunityVO } from "#/api/property/community/model"
|
import type { TreeNode } from '#/api/common'
|
||||||
|
|
||||||
defineOptions({ inheritAttrs: false })
|
defineOptions({ inheritAttrs: false })
|
||||||
|
|
||||||
@@ -31,26 +31,31 @@ const searchValue = defineModel('searchValue', {
|
|||||||
default: '',
|
default: '',
|
||||||
})
|
})
|
||||||
|
|
||||||
type TreeArray = CommunityVO[]
|
const treeArray = ref<TreeNode[]>([])
|
||||||
const treeArray = ref<TreeArray>([])
|
|
||||||
/** 骨架屏加载 */
|
/** 骨架屏加载 */
|
||||||
const showTreeSkeleton = ref<boolean>(true)
|
const showTreeSkeleton = ref<boolean>(true)
|
||||||
|
|
||||||
async function loadTree() {
|
async function loadTree() {
|
||||||
showTreeSkeleton.value = true
|
showTreeSkeleton.value = true
|
||||||
searchValue.value = ''
|
searchValue.value = ''
|
||||||
selectFloorId.value = []
|
const ret = await queryTree(1)
|
||||||
const ret = await communityTree(3)
|
handleNode(ret, 3)
|
||||||
const splitStr = '/'
|
|
||||||
handleNode(ret, 'label', splitStr, function (node: any) {
|
|
||||||
if (node.level != 3) {
|
|
||||||
node.disabled = true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
treeArray.value = ret
|
treeArray.value = ret
|
||||||
showTreeSkeleton.value = false
|
showTreeSkeleton.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleNode(nodes: any[], level: number) {
|
||||||
|
nodes.forEach((node) => {
|
||||||
|
node.key = node.id
|
||||||
|
if (node.level < level) {
|
||||||
|
node.disabled = true
|
||||||
|
}
|
||||||
|
if (node.children) {
|
||||||
|
handleNode(node.children, level)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(loadTree);
|
onMounted(loadTree);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -59,8 +64,7 @@ onMounted(loadTree);
|
|||||||
<Skeleton :loading="showTreeSkeleton" :paragraph="{ rows: 8 }" active class="p-[8px] flex-1 min-h-0">
|
<Skeleton :loading="showTreeSkeleton" :paragraph="{ rows: 8 }" active class="p-[8px] flex-1 min-h-0">
|
||||||
<div class="bg-background flex h-full flex-col overflow-y-auto rounded-lg">
|
<div class="bg-background flex h-full flex-col overflow-y-auto rounded-lg">
|
||||||
<div class="h-full overflow-x-hidden px-[8px]">
|
<div class="h-full overflow-x-hidden px-[8px]">
|
||||||
<Tree v-bind="$attrs" v-if="treeArray.length > 0" v-model:selected-keys="selectFloorId"
|
<Tree v-bind="$attrs" v-if="treeArray.length > 0" :show-line="{ showLeafIcon: false }" :tree-data="treeArray"
|
||||||
:field-names="{ title: 'label', key: 'id' }" :show-line="{ showLeafIcon: false }" :tree-data="treeArray"
|
|
||||||
:virtual="false" default-expand-all @select="$emit('select')">
|
:virtual="false" default-expand-all @select="$emit('select')">
|
||||||
<template #title="{ label }">
|
<template #title="{ label }">
|
||||||
<span v-if="label.indexOf(searchValue) > -1">
|
<span v-if="label.indexOf(searchValue) > -1">
|
||||||
|
@@ -257,7 +257,7 @@ function handleSelectFloor() {
|
|||||||
<template>
|
<template>
|
||||||
<Page :auto-content-height="true">
|
<Page :auto-content-height="true">
|
||||||
<div class="flex h-full gap-[8px]">
|
<div class="flex h-full gap-[8px]">
|
||||||
<FloorTree class="w-[260px]" @select="handleSelectFloor" v-model:select-floor-id="selectFloorId"></FloorTree>
|
<FloorTree class="w-[260px]"></FloorTree>
|
||||||
<div class="flex-1 overflow-hidden">
|
<div class="flex-1 overflow-hidden">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="comparison-section-container">
|
<div class="comparison-section-container">
|
||||||
|
Reference in New Issue
Block a user