Browse Source

feat: 分组切换

main
xuziqiang 3 months ago
parent
commit
8f25d2293c
  1. 38
      hx-ai-intelligent/src/router/equipmentManage.ts
  2. 144
      hx-ai-intelligent/src/view/equipmentManage/group/config.ts
  3. 43
      hx-ai-intelligent/src/view/equipmentManage/group/index.vue
  4. 2
      lib/component/tree/tree-api.vue

38
hx-ai-intelligent/src/router/equipmentManage.ts

@ -44,25 +44,25 @@ const equipment = {
},
],
},
{
path: 'energyMapping',
name: 'EnergyMapping',
meta: { title: '能耗映射', hideChildren: true, icon: 'shebeiguanli' },
component: Base,
redirect: { name: 'EnergyMappingIndex' },
children: [
{
path: 'index',
name: 'EnergyMappingIndex',
component: () => import('/@/view/equipmentManage/energyMapping/index.vue'),
meta: {
title: '能耗映射',
keepAlive: true,
// backApi: [],
},
},
],
},
// {
// path: 'energyMapping',
// name: 'EnergyMapping',
// meta: { title: '能耗映射', hideChildren: true, icon: 'shebeiguanli' },
// component: Base,
// redirect: { name: 'EnergyMappingIndex' },
// children: [
// {
// path: 'index',
// name: 'EnergyMappingIndex',
// component: () => import('/@/view/equipmentManage/energyMapping/index.vue'),
// meta: {
// title: '能耗映射',
// keepAlive: true,
// // backApi: [],
// },
// },
// ],
// },
],
};
export default equipment;

144
hx-ai-intelligent/src/view/equipmentManage/group/config.ts

@ -30,6 +30,22 @@ const tableKeyMap = [
dataIndex: 'position',
},
];
const tableCalKeyMap = [
{
title: '来源企业',
dataIndex: 'id',
},
{
title: '节点编号',
dataIndex: 'deviceName',
textNumber: 8,
textEllipsis: true,
},
{
title: '节点路径',
dataIndex: 'position',
},
];
const doWnload = (url) => {
const a = document.createElement('a');
document.body.appendChild(a);
@ -41,17 +57,13 @@ const doWnload = (url) => {
};
const mockData = ref(data.listData);
export const tableConfig = (el, elGroup, elFormula) => {
return {
title: '设备台账',
// api: '/carbon_emission/device/getDeviceList',
value: mockData.value,
treeConfig: {
export const treeConfig = {
defaultExpandAll: true,
header: {
icon: 'orgLink',
title: '分组管理',
title: '能耗分组',
},
api: () => {
return new Promise((resolve) => {
setTimeout(() => {
@ -64,7 +76,7 @@ export const tableConfig = (el, elGroup, elFormula) => {
{
field: 'type',
label: '',
component: 'NsRadioGroup',
component: 'NsSelect',
autoSubmit: true,
defaultValue: 1,
componentProps: {
@ -88,7 +100,12 @@ export const tableConfig = (el, elGroup, elFormula) => {
},
],
},
},
};
export const tableConfig = (el, elGroup, elFormula) => {
return {
title: '点位信息',
// api: '/carbon_emission/device/getDeviceList',
value: mockData.value,
headerActions: [
{
@ -249,11 +266,108 @@ export const tableConfig = (el, elGroup, elFormula) => {
};
};
export const treeConfig = {
defaultExpandAll: true,
defaultSelectedKeys: ['A008'],
resultField: 'insertData',
api: () => {
return Promise.resolve(data);
export const tableConfigCal = (el, elGroup, elFormula) => {
return {
title: '点位信息',
// api: '/carbon_emission/device/getDeviceList',
value: mockData.value,
headerActions: [
{
label: '编辑',
name: 'groupEdit',
type: 'primary',
handle: (a, b) => {
el.value.toggle();
},
},
{
label: '批量删除',
name: 'groupTemDownload',
type: 'primary',
dynamicDisabled: (data: any) => {
return data.list.length === 0;
},
handle: () => {
mockData.value.splice(0, 2);
},
},
{
label: '批量导出',
name: 'groupExports',
type: 'primary',
dynamicDisabled: (data: any) => {
return data.list.length === 0;
},
extra: {
xlsxMap: tableKeyMap,
xlsxName: '分组信息YYYY-MM-DD',
},
},
{
label: '批量导入',
name: 'groupImport',
type: 'primary',
extra: {
// api: props.postImportApi, // 导入接口名
title: '设备信息', // 弹窗title
templateName: 'whiteListUser', // 所使用的文件名称
indexName: '设备id', // 匹配类型字段
message: [
{ label: '1、若必填项未填写,则不能进行导入操作' },
{ label: `2、当重复时,则更新数据。` },
{ label: '3、数据将从模版的第五行进行导入。' },
{ label: '4、文件导入勿超过5MB。' },
],
},
},
{
label: '模板下载',
name: 'groupTemDownload',
type: 'primary',
handle: () => {
// http.get('/asset/file/whiteListUser.xlsx');
doWnload('/hx-ai-intelligent/asset/file/whiteListUser.xlsx');
},
},
],
columns: tableCalKeyMap,
columnActions: {
title: '操作',
actions: [
{
label: '删除',
name: 'FeedBackDetail',
dynamicParams: ['uuid', 'appealType'],
confirm: true,
handle: () => {
mockData.value.splice(0, 1);
},
},
],
},
formConfig: {
schemas: [
{
field: 'name',
label: '设备名称',
component: 'NsInput',
componentProps: {
placeholder: '请选择公司',
},
},
{
field: 'provider',
component: 'NsInput',
componentProps: {
placeholder: '请输入节点编号',
},
},
],
},
// pagination: { pageSizeOptions: false },
rowKey: 'id',
};
};

43
hx-ai-intelligent/src/view/equipmentManage/group/index.vue

@ -2,11 +2,17 @@
<editDrawer ref="editDrawerRef" />
<editGroup ref="editGroupRef" />
<editFormula ref="editFormulaRef" />
<ns-view-list-table v-bind="config" />
<div class="groupContainer">
<div class="tree">
<ns-tree-api v-bind="treeConfig" @select="handleSelect" />
</div>
<ns-view-list-table v-show="defaultType" class="table" v-bind="config" />
<ns-view-list-table v-show="!defaultType" class="table" v-bind="configCal" />
</div>
</template>
<script lang="ts" setup>
import { createVNode, onMounted, ref } from 'vue';
import { tableConfig, treeConfig } from './config';
import { tableConfig, treeConfig, tableConfigCal } from './config';
import { useParams } from '/nerv-lib/use';
import editDrawer from './edit.vue';
import editGroup from './editGroup.vue';
@ -16,6 +22,37 @@
const editDrawerRef = ref();
const editGroupRef = ref();
const editFormulaRef = ref();
const defaultType = ref(true);
const config = tableConfig(editDrawerRef, editGroupRef, editFormulaRef);
const configCal = tableConfigCal(editDrawerRef, editGroupRef, editFormulaRef);
const handleSelect = () => {
defaultType.value = !defaultType.value;
};
</script>
<style lang="less" scoped></style>
<style lang="less" scoped>
.groupContainer {
height: 100%;
overflow-y: auto;
background-color: @ns-content-bg;
display: flex;
// gap: @ns-gap;
.tree,
.table {
background-color: @white;
border-radius: @ns-border-radius;
overflow-y: auto;
}
.tree {
margin-right: @ns-gap;
:deep(.ant-spin-nested-loading) {
width: 300px;
background-color: @white;
}
}
.table {
flex: 1;
min-width: 0;
}
}
</style>

2
lib/component/tree/tree-api.vue

@ -31,6 +31,8 @@
});
const props = defineProps(treeProps);
console.log(props);
const treeData = ref<TreeDataItem[]>([]);
const selectedKeys = ref(props.selectedKeys || []);
const { httpRequest } = useApi();

Loading…
Cancel
Save