zhaohy 4 months ago
parent
commit
261ad9017d
  1. 7
      hx-ai-intelligent/src/api/IlluminationInfo.ts
  2. 4
      hx-ai-intelligent/src/api/carbonEmissionFactorLibrary.ts
  3. 2
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/carbonEmissions/index.vue
  4. 56
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/config.ts
  5. 235
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/fillInPage/index.vue
  6. 16
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/index.vue
  7. 25
      hx-ai-intelligent/src/view/equipmentControl/lightingManage/indexs.vue
  8. 227
      hx-ai-intelligent/src/view/equipmentControl/lightingManage/tabs1.vue

7
hx-ai-intelligent/src/api/IlluminationInfo.ts

@ -9,6 +9,13 @@ export enum lightingManage {
// 修改线路的可用/禁用状态 // 修改线路的可用/禁用状态
setDisable = '/carbon-smart/IlluminationInfo/revisePanel', setDisable = '/carbon-smart/IlluminationInfo/revisePanel',
// 控制面板tab页 ================================================
// 获取当前修改的内容对比数据
getChangeList = '/carbon-smart/IlluminationInfo/getLightSceneChangeInfo',
// 提交当前修改
submitChangeList = '/carbon-smart/IlluminationInfo/changeLightScene',
// 计划列表tab页 ================================================ // 计划列表tab页 ================================================
// 获得计划列表tab页的表格数据 // 获得计划列表tab页的表格数据

4
hx-ai-intelligent/src/api/carbonEmissionFactorLibrary.ts

@ -51,4 +51,8 @@ export enum carbonInventoryCheck {
create = '/carbon-smart/api/carbon/inventory/create', create = '/carbon-smart/api/carbon/inventory/create',
update = '/carbon-smart/api/carbon/inventory/update', update = '/carbon-smart/api/carbon/inventory/update',
del = '/carbon-smart/api/carbon/inventory/del', del = '/carbon-smart/api/carbon/inventory/del',
// 获取排放源表格数据
findUnitById = '/carbon-smartapi/carbon/inventory/findById',
getDetailsList = '/carbon-smart/api/carbon/inventory/details/getDetailsList',
updateTable = '/carbon-smart/api/carbon/inventory/details/update',
} }

2
hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/carbonEmissions/index.vue

@ -66,7 +66,7 @@
}; };
} }
const rowSpan = getRowSpan('cnValue', record, data.value); const rowSpan = getRowSpan('cnValue', record, data.value);
if (rowIndex != 0 && data.value[rowIndex - 1].name == record.name) { if (rowIndex != 0 && data.value[rowIndex - 1].cnValue == record.cnValue) {
return { return {
rowSpan: 0, rowSpan: 0,
colSpan: 0, colSpan: 0,

56
hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/config.ts

@ -1,59 +1,3 @@
// 填报页表头
export const columns = [
{
title: '日期',
dataIndex: 'name',
key: 'name',
width: 100,
fixed: 'left',
},
{
title: '消耗量',
children: [
{
title: '数据来源',
dataIndex: 'companyAddress',
key: 'companyAddress',
width: 200,
},
{
title: '数值',
dataIndex: 'companyName',
key: 'companyName',
},
],
},
{
title: '碳排因子',
children: [
{
title: '数据来源',
dataIndex: 'companyAddress',
key: 'companyAddress',
width: 200,
},
{
title: '数值',
dataIndex: 'companyName',
key: 'companyName',
},
],
},
{
title: '排放量',
dataIndex: 'gender',
key: 'gender',
width: 80,
fixed: 'right',
},
{
title: '操作',
dataIndex: 'action',
key: 'action',
width: 80,
fixed: 'right',
},
];
// 凭证弹窗表头 // 凭证弹窗表头
export const voucherColumns = [ export const voucherColumns = [
{ {

235
hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/fillInPage/index.vue

@ -4,7 +4,7 @@
<div class="top"> <div class="top">
<a-form style="width: 100%;margin: 0 auto;"> <a-form style="width: 100%;margin: 0 auto;">
<div class="ns-form-title"> <div class="ns-form-title">
<div class="title">2024年济阳站碳盘查报告</div> <div class="title">{{props.year}}年济阳站碳盘查报告</div>
<div class="standard"> <div class="standard">
<span>适用标准ISO 14064-1</span> <span>适用标准ISO 14064-1</span>
<a-button type="primary" style="margin-left: 12px;" @click="openCategoryConfig">类别配置</a-button> <a-button type="primary" style="margin-left: 12px;" @click="openCategoryConfig">类别配置</a-button>
@ -54,7 +54,7 @@
<div class="right"> <div class="right">
<div style="display:flex;"> <div style="display:flex;">
<div class="ns-table-title ns-title-extra-box">排放源</div> <div class="ns-table-title ns-title-extra-box">排放源</div>
<a-button type="primary" style="margin-left: 12px;">返回</a-button> <a-button type="primary" style="margin-left: 12px;" @click="changeParentData">返回</a-button>
</div> </div>
<div style="display: flex;" v-if="fillInPage"> <div style="display: flex;" v-if="fillInPage">
<div class="mainLeft"> <div class="mainLeft">
@ -95,6 +95,12 @@
<a-button type="primary" @click="downLoadVoucher">凭证</a-button> <a-button type="primary" @click="downLoadVoucher">凭证</a-button>
</template> </template>
<template #bodyCell="{ column, text, record }"> <template #bodyCell="{ column, text, record }">
<template v-if="column.dataIndex === 'dataSources'">
<span v-if="record.dataSources">{{ record.dataSources.label }}</span>
</template>
<template v-if="column.dataIndex === 'carbonSource'">
<span v-if="record.carbonSource">{{ record.carbonSource.label }}</span>
</template>
<template v-if="column.key === 'action'"> <template v-if="column.key === 'action'">
<span> <span>
<a @click="edit(record)">编辑</a> <a @click="edit(record)">编辑</a>
@ -249,41 +255,40 @@
> >
<a-row> <a-row>
<a-col :span="12"> <a-col :span="12">
<a-form-item ref="name" label="数据来源" name="dateRange"> <a-form-item ref="name" label="数据来源" name="dataSources">
<a-select <a-select
ref="select" ref="select"
v-model:value="editFormState.dateRange" v-model:value="editFormState.dataSources"
@change="handleChange" @change="changeSelect"
> >
<a-select-option value="jack">Jack</a-select-option> <a-select-option value="1">自行推估</a-select-option>
<a-select-option value="lucy">Lucy</a-select-option> <a-select-option value="2">定期量测</a-select-option>
<a-select-option value="3">自动测量</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item ref="name" label="消耗量" name="emissionFactors"> <a-form-item ref="name" label="消耗量" name="consumption">
<ns-input v-model:value="editFormState.emissionFactors" disabled /> <ns-input v-model:value="editFormState.consumption" :disabled="canEdit" />
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row v-if="automatic">
<a-col :span="12"> <a-col :span="12">
<a-form-item ref="name" label="采集节点" name="dateRange"> <a-form-item ref="name" label="采集节点" name="collectionNode">
<a-select <a-tree-select
ref="select" v-model:value="editFormState.collectionNode"
v-model:value="editFormState.dateRange" :tree-line="true"
@change="handleChange" :tree-data="collectingNodes"
> >
<a-select-option value="jack">Jack</a-select-option> </a-tree-select>
<a-select-option value="lucy">Lucy</a-select-option>
</a-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="12"> <a-col :span="12">
<a-form-item ref="name" label="因子值" name="emissionFactors"> <a-form-item ref="name" label="因子值" name="factorId">
<ns-input v-model:value="editFormState.emissionFactors" disabled /> <ns-input v-model:value="editFormState.factorId" disabled />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@ -300,7 +305,7 @@
rowKey="id" rowKey="id"
:scroll="{ y: 400 }" :scroll="{ y: 400 }"
style="margin-bottom: 10px;" style="margin-bottom: 10px;"
:rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectionChange, type: 'radio' }" :rowSelection="{ selectedRowKeys: selectedRowKeysEdit, onChange: onSelectionChangeEdit, type: 'radio' }"
:pagination="false"> :pagination="false">
</a-table> </a-table>
<a-pagination <a-pagination
@ -333,20 +338,32 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, watch, toRaw } from 'vue'; import { ref, watch, toRaw, defineEmits } from 'vue';
import { http } from '/nerv-lib/util/http'; import { http } from '/nerv-lib/util/http';
import { Pagination, Modal, message } from 'ant-design-vue'; import { Pagination, Modal, message } from 'ant-design-vue';
import type { TreeProps,TableColumnsType,UploadChangeParam } from 'ant-design-vue'; import type { TreeProps,TableColumnsType,UploadChangeParam } from 'ant-design-vue';
import { EditOutlined,PlusCircleOutlined,MinusCircleOutlined,UploadOutlined } from '@ant-design/icons-vue'; import { EditOutlined,PlusCircleOutlined,MinusCircleOutlined,UploadOutlined } from '@ant-design/icons-vue';
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import { columns,voucherColumns,drawerColumns } from '../config'; import { voucherColumns,drawerColumns } from '../config';
import { energyConsumption,carbonEmissionFactorLibrary,carbonInventoryCheck } from '/@/api/carbonEmissionFactorLibrary'; import { energyConsumption,carbonEmissionFactorLibrary,carbonInventoryCheck } from '/@/api/carbonEmissionFactorLibrary';
import { group } from '/@/api/deviceManage';
defineOptions({ defineOptions({
energyType: 'fillInPage', // name energyType: 'fillInPage', // name
components: { components: {
'a-pagination': Pagination, 'a-pagination': Pagination,
}, },
}); });
// id
const props = defineProps({
reportId: {
type: Number
},
year: {
type: String
}
})
console.log(props,'xxy');
const orgId = ref(''); const orgId = ref('');
const result = JSON.parse(sessionStorage.getItem('ORGID')!); const result = JSON.parse(sessionStorage.getItem('ORGID')!);
orgId.value = result; orgId.value = result;
@ -440,16 +457,17 @@
const categoryId = ref() const categoryId = ref()
const onSelectL = (selectedKey: string[], info: any) => { const onSelectL = (selectedKey: string[], info: any) => {
selectedKeysL.value = selectedKey; selectedKeysL.value = selectedKey;
categoryId.value = info.node.id categoryId.value = info.node.conId
formState.value.categoryId = categoryId.value formState.value.categoryId = categoryId.value
getEmissionSourceTree()
}; };
// //
const selectedIds = ref([]); const selectedIds = ref([]);
const getReportTree = () => { const getReportTree = () => {
fetch(carbonInventoryCheck.getCategoryTree).then((res) => { fetch(carbonInventoryCheck.getCategoryTree,{reportId:props.reportId,orgId:orgId.value}).then((res) => {
gData.value = res.data gData.value = res.data
if(res.data.length > 0){ if(res.data.length > 0){
categoryId.value = res.data[0].id categoryId.value = res.data[0].conId
formState.value.categoryId = categoryId.value formState.value.categoryId = categoryId.value
selectedIds.value = getAllIds(gData.value); selectedIds.value = getAllIds(gData.value);
} }
@ -460,29 +478,41 @@
const getAllIds = (nodes: TreeNode[]): number[] => { const getAllIds = (nodes: TreeNode[]): number[] => {
return nodes.flatMap(node => [node.id, ...(node.children ? getAllIds(node.children) : [])]); return nodes.flatMap(node => [node.id, ...(node.children ? getAllIds(node.children) : [])]);
}; };
//
const data = [...Array(12)].map((_, i) => ({
key: i,
name: 'John Brown',
age: i + 1,
street: 'Lake Park',
building: 'C',
number: 2035,
companyAddress: 'Lake Street 42',
companyName: 'SoftLake Co',
gender: 'M',
}));
// //
const treeData = ref<TreeProps['treeData']>(genData); const treeData = ref<TreeProps['treeData']>(genData);
// //
const getTableId = ref()
const getEmissionSourceTree = () => { const getEmissionSourceTree = () => {
fetch(carbonInventoryCheck.getInventoryTree, { categoryId: categoryId.value }).then((res) => { fetch(carbonInventoryCheck.getInventoryTree, { categoryId: categoryId.value }).then((res) => {
treeData.value = res.data treeData.value = res.data
getTableId.value = res.data[0].id
if(res.data.length != 0){
getPFYTableList(getTableId.value)
getTableHeardUnit(getTableId.value)
}else{
data.value = []
columns.value[1].title = '消耗量'
columns.value[2].title = '碳排因子'
columns.value[3].title = '排放量'
}
}); });
}; };
// //
const onSelectR = (selectedKey: string[], info: any) => { const onSelectR = (selectedKey: string[], info: any) => {
selectedKeysR.value = selectedKey; selectedKeysR.value = selectedKey;
getTableId.value = info.selectedNodes[0].id
getPFYTableList(getTableId.value)
getTableHeardUnit(getTableId.value)
};
//
const getTableHeardUnit = (id) => {
fetch(carbonInventoryCheck.findUnitById, { id: id }).then((res) => {
if (res.data) {
columns.value[1].title = '消耗量【' + res.data.unit + '】'
columns.value[2].title = '碳排因子【' + res.data.carbonEmission + '】'
columns.value[3].title = '排放量【' + res.data.carbonUnits + '】'
}
});
}; };
const expandedKeysR = ref<string[]>([]); const expandedKeysR = ref<string[]>([]);
const selectedKeysR = ref<string[]>(['0-0']); const selectedKeysR = ref<string[]>(['0-0']);
@ -550,7 +580,8 @@
const labelCol = { span: 5 }; const labelCol = { span: 5 };
const wrapperCol = { span: 19 }; const wrapperCol = { span: 19 };
const formState = ref({ const formState = ref({
orgId: orgId.value orgId: orgId.value,
year: props.year
}) })
// //
const measurementUnit = ref([]) const measurementUnit = ref([])
@ -628,6 +659,7 @@
} }
message.success('操作成功!'); message.success('操作成功!');
getEmissionSourceTree(); getEmissionSourceTree();
getPFYTableList(res.data.id)
}); });
} }
}) })
@ -635,6 +667,65 @@
console.log('error', error); console.log('error', error);
}); });
}; };
//
const data = ref([])
//
const columns = ref([
{
title: '日期',
dataIndex: 'acquisitionDate',
key: 'acquisitionDate',
},
{
title: '消耗量',
children: [
{
title: '数据来源',
dataIndex: 'dataSources',
key: 'dataSources',
},
{
title: '数值',
dataIndex: 'consumption',
key: 'consumption',
},
],
},
{
title: '碳排因子',
children: [
{
title: '数据来源',
dataIndex: 'carbonSource',
key: 'carbonSource',
},
{
title: '数值',
dataIndex: 'emissionFactors',
key: 'emissionFactors',
},
],
},
{
title: '排放量',
dataIndex: 'emissions',
key: 'emissions',
fixed: 'right',
},
{
title: '操作',
dataIndex: 'action',
key: 'action',
width: 80,
fixed: 'right',
}
]);
// table
const getPFYTableList = (id) => {
fetch(carbonInventoryCheck.getDetailsList , {inventoryId:id}).then((res) => {
data.value = res.data
});
};
const editUnit = (data) => { const editUnit = (data) => {
getDictData() getDictData()
addTreeNodeVisible.value = true; addTreeNodeVisible.value = true;
@ -734,6 +825,11 @@
}) })
const newTableData = ref([]) const newTableData = ref([])
const total = ref<number>() const total = ref<number>()
const selectedRowKeysEdit = ref([]);
const onSelectionChangeEdit = (selectedKeys, selectedRows) => {
selectedRowKeysEdit.value = selectedKeys;
editFormState.value.factorId = selectedKeys
};
const queryParams = ref({ const queryParams = ref({
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
@ -744,8 +840,14 @@
pageNum: 1, pageNum: 1,
pageSize: 999 pageSize: 999
}) })
const edit = () => { const edit = (record) => {
getDictList()
getNewTable() getNewTable()
editFormState.value.id = record.id
editFormState.value.dataSources = record.dataSources.value
editFormState.value.consumption = record.emissions
editFormState.value.collectionNode = record.carbonSource.value
editFormState.value.factorId = record.emissionFactors
editData.value = true editData.value = true
}; };
const getNewTable = () => { const getNewTable = () => {
@ -754,6 +856,32 @@
total.value = res.data.total total.value = res.data.total
}); });
}; };
//
const canEdit = ref(false);
const automatic = ref(false);
const changeSelect = (value) => {
if(value === '3'){
canEdit.value = true
automatic.value = true
}
};
//
const collectingNodes = ref<TreeSelectProps['treeData']>([]);
const getDictList = () => {
//
fetch(group.queryDeviceGroupTree, { energyType: 'ELECTRICITY_USAGE',orgId: orgId.value }).then((res) => {
collectingNodes.value = res.data
collectingNodes.value = collectingNodes.value.map(item => ({
value: item.id,
label: item.pointName,
children: item.children ? item.children.map(child => ({
value: child.id,
label: child.pointName
})) : []
}));
});
};
//
const handleChange = (info: UploadChangeParam) => { const handleChange = (info: UploadChangeParam) => {
if (info.file.status !== 'uploading') { if (info.file.status !== 'uploading') {
console.log(info.file, info.fileList); console.log(info.file, info.fileList);
@ -769,8 +897,30 @@
const headers = { const headers = {
authorization: 'authorization-text', authorization: 'authorization-text',
}; };
//
const submitEditData = () => {
editFormRef.value
.validate()
.then(() => {
console.log('values', editFormState, toRaw(editFormState));
editFormState.value.factorId = editFormState.value.factorId.join(',')
fetch(carbonInventoryCheck.updateTable, editFormState.value).then((res) => {
editData.value = false
getPFYTableList(getTableId.value)
})
})
.catch(error => {
console.log('error', error);
});
};
const onCloseEditData = () => { const onCloseEditData = () => {
editData.value = false editData.value = false
editFormState.value = {
orgId: orgId.value,
}
selectedRowKeysEdit.value = []
canEdit.value = false
automatic.value = false
}; };
// //
const onChange = (pageNumber: number,size: number) => { const onChange = (pageNumber: number,size: number) => {
@ -1179,6 +1329,11 @@
chartInstance = echarts.init(tplxChart.value); chartInstance = echarts.init(tplxChart.value);
chartInstance.setOption(option); chartInstance.setOption(option);
}; };
//
const emit = defineEmits(['change-data'])
const changeParentData = () => {
emit('change-data', true,false);
};
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

16
hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/index.vue

@ -5,7 +5,7 @@
</div> </div>
<!-- 填报页 --> <!-- 填报页 -->
<div v-if="fillInPage"> <div v-if="fillInPage">
<fillIn /> <fillIn :reportId="reportId" :year="year" @change-data="updateData" />
</div> </div>
<!-- 新增报告弹窗 --> <!-- 新增报告弹窗 -->
<a-drawer <a-drawer
@ -61,8 +61,8 @@
return http.post(api, params); return http.post(api, params);
}; };
// //
const isMainPage = ref(false); const isMainPage = ref(true);
const fillInPage = ref(true); const fillInPage = ref(false);
// //
const visible = ref(false); const visible = ref(false);
const formState = ref({}) const formState = ref({})
@ -104,6 +104,8 @@
// //
const data = ref([]); const data = ref([]);
const mainRef = ref(); const mainRef = ref();
const reportId = ref();
const year = ref();
const tableConfig = ref({ const tableConfig = ref({
title: '数据库', title: '数据库',
api: carbonInventoryCheck.carbonInventoryList, api: carbonInventoryCheck.carbonInventoryList,
@ -172,6 +174,8 @@
handle: (record: any) => { handle: (record: any) => {
isMainPage.value = false isMainPage.value = false
fillInPage.value = true fillInPage.value = true
reportId.value = record.id
year.value = record.reportYear
}, },
}, },
{ {
@ -217,7 +221,11 @@
}, },
rowKey: 'id', rowKey: 'id',
}); });
// //
const updateData = (newDataOne,newDataTwo) => {
isMainPage.value = newDataOne
fillInPage.value = newDataTwo
};
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

25
hx-ai-intelligent/src/view/equipmentControl/lightingManage/indexs.vue

@ -42,6 +42,7 @@
v-model:visible="visible" v-model:visible="visible"
class="drawer-item" class="drawer-item"
width="496" width="496"
:forceRender="preload"
placement="right" placement="right"
:body-style="{ background: 'rgba(0, 0, 0)', opacity: 0.8 }" :body-style="{ background: 'rgba(0, 0, 0)', opacity: 0.8 }"
:closable="false" :closable="false"
@ -54,7 +55,6 @@
@changeArea="changeArea" @changeArea="changeArea"
@reset="reset" @reset="reset"
:treeData="treeData" :treeData="treeData"
:nowArea="nowArea"
></tabs1> ></tabs1>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="2" tab="计划列表" force-render> <a-tab-pane key="2" tab="计划列表" force-render>
@ -93,6 +93,10 @@ onMounted(() => {
getAllArea() getAllArea()
}) })
// flagref
const preload = ref(false)
// ===================================================== // =====================================================
// //
@ -109,13 +113,12 @@ const changeFloor = (area: any) => {
treeData.value[0].selected = true treeData.value[0].selected = true
} }
// ===================================================== // =====================================================
// //
const treeData = ref([]) const treeData = ref([])
// id // -
const nowArea = ref('1')
// -
const area = ref(['1']) const area = ref(['1'])
// 线 - // 线 -
const bulbs = ref([ const bulbs = ref([
@ -182,15 +185,18 @@ const changeArea = (result: any) => {
} }
// //
const changeThisArea = (result: any) => { const changeThisArea = (result: any) => {
tabs1Ref.value.changeCancel()
console.log(result, 'changeThisArea') console.log(result, 'changeThisArea')
// //
reset() reset()
let level1 = result[0]; let level1 = result[0];
area.value.length = 0 area.value.length = 0
//
if (result.length === 1) { if (result.length === 1) {
result[0].selected = true result[0].selected = true
area.value.push(result[0].id) area.value.push(result[0].id)
//
tabs1Ref.value.changeArea(result[0])
// + 线
} else if (result.length === 2) { } else if (result.length === 2) {
// //
if (!level1) { if (!level1) {
@ -199,8 +205,10 @@ const changeThisArea = (result: any) => {
// true // true
level1.selected = result[1].selected = true level1.selected = result[1].selected = true
area.value.splice(0, 0, level1.id, result[1].id) area.value.splice(0, 0, level1.id, result[1].id)
//
tabs1Ref.value.changeArea(result[0])
tabs1Ref.value.changeLine(result[1])
} }
nowArea.value = level1.id
} }
// //
const reset = () => { const reset = () => {
@ -220,6 +228,7 @@ const computedClass = (string: string) => {
} }
} }
//
const getAllArea = () => { const getAllArea = () => {
http.get(lightingManage.getArea, { projectId: 'HLlmTZp8' }).then(res => { http.get(lightingManage.getArea, { projectId: 'HLlmTZp8' }).then(res => {
const data = res.data const data = res.data
@ -242,7 +251,10 @@ const getAllArea = () => {
}) })
}) })
}) })
// 线 1-1
treeData.value = data[0].childList treeData.value = data[0].childList
//
preload.value = true
}) })
} }
@ -256,6 +268,7 @@ let visible = ref(false);
const toggleDrawer = () => { const toggleDrawer = () => {
visible.value = !visible.value; visible.value = !visible.value;
}; };
// tab1
const tabs1Ref = ref() const tabs1Ref = ref()
</script> </script>

227
hx-ai-intelligent/src/view/equipmentControl/lightingManage/tabs1.vue

@ -13,7 +13,7 @@
<div class="area"> <div class="area">
<template v-if="!showAllButtonsArea"> <template v-if="!showAllButtonsArea">
<button v-for="(button, index) in limitedButtons1" :key="index" <button v-for="(button, index) in limitedButtons1" :key="index"
:class="{ btn: true, selected: button.selected }" @click="selectButton(button)"> :class="{ btn: true, selected: button.selected }" @click="changeArea(button)">
{{ button.name }} {{ button.name }}
</button> </button>
<div style="margin-top: 10px"> <div style="margin-top: 10px">
@ -22,7 +22,7 @@
</template> </template>
<template v-else> <template v-else>
<button v-for="(button, index) in props.treeData" :key="index" :class="{ btn: true, selected: button.selected }" <button v-for="(button, index) in props.treeData" :key="index" :class="{ btn: true, selected: button.selected }"
@click="selectButton(button)"> @click="changeArea(button)">
{{ button.name }} {{ button.name }}
</button> </button>
<div style="margin-top: 10px"> <div style="margin-top: 10px">
@ -53,7 +53,7 @@
<div class="btnArea"> <div class="btnArea">
<template v-if="!showAllButtons"> <template v-if="!showAllButtons">
<button v-for="(button, index) in limitedButtons2" :key="index" <button v-for="(button, index) in limitedButtons2" :key="index"
:class="{ btn: true, selected: button.selected }" class="zmhlbtn" @click="toggleSelection(button)"> :class="{ btn: true, selected: button.selected }" class="zmhlbtn" @click="changeLine(button)">
<stop-outlined v-if="button.ctrlStatus" /> <stop-outlined v-if="button.ctrlStatus" />
{{ button.name }} {{ button.name }}
</button> </button>
@ -63,7 +63,7 @@
</template> </template>
<template v-else> <template v-else>
<button v-for="(button, index) in buttons2" :key="index" <button v-for="(button, index) in buttons2" :key="index"
:class="{ btn: true, selected: button.selected }" class="zmhlbtn" @click="toggleSelection(button)"> :class="{ btn: true, selected: button.selected }" class="zmhlbtn" @click="changeLine(button)">
<stop-outlined v-if="button.ctrlStatus" /> <stop-outlined v-if="button.ctrlStatus" />
{{ button.name }} {{ button.name }}
</button> </button>
@ -91,26 +91,26 @@
</div> </div>
<!-- 控制场景部分 --> <!-- 控制场景部分 -->
<div> <div>
<div class="control-scene-area" v-show="thisButton2.mode.value == '3'"> <div class="control-scene-area" v-show="thisButton2.mode.value == 3">
<div class="control-scene-tab"></div> <div class="control-scene-tab"></div>
<span class="control-scene-text"> 控制场景 </span> <span class="control-scene-text"> 控制场景 </span>
</div> </div>
<!-- 控制场景按钮部分 --> <!-- 控制场景按钮部分 -->
<div class="control-scene-btn-area" v-show="thisButton2.mode.value == '3'"> <div class="control-scene-btn-area" v-show="thisButton2.mode.value == 3">
<button v-for="(button4, index) in controlScene" :key="index" <button v-for="(button4, index) in controlScene" :key="index"
:class="{ btn: true, selected: thisButton2.mode.value == button4.value }" @click="selectButton4(button4)"> :class="{ btn: true, selected: thisButton2.scene.value == button4.value }" @click="selectButton4(button4)">
{{ button4.label }} {{ button4.label }}
</button> </button>
</div> </div>
</div> </div>
<!-- 底部按钮区 --> <!-- 底部按钮区 -->
<div class="bottom"> <div class="bottom">
<a-popconfirm <a-popconfirm
title="刷新将会取消已作出的修改" title="刷新将会取消已作出的修改"
ok-text="确定" ok-text="确定"
cancel-text="取消" cancel-text="取消"
@confirm="changeConfirm" @confirm="changeConfirm"
@cancel="changeCancel" @cancel="changeCancel"
> >
<button class="flushed">刷新</button> <button class="flushed">刷新</button>
</a-popconfirm> </a-popconfirm>
@ -186,7 +186,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, computed, onMounted, watch } from 'vue'; import { ref, computed, onMounted } from 'vue';
import { import {
DownOutlined, DownOutlined,
UpOutlined, UpOutlined,
@ -201,47 +201,25 @@ import { getAllEnum } from '/@/api/index'
// ========================================================================= // =========================================================================
onMounted(() => { onMounted(() => {
// //
setArea(0) setArea()
// //
getEnum(['IlluminationMode', 'IlluminationScene']) getEnum(['IlluminationMode', 'IlluminationScene'])
}) })
//
//
const getEnum = (arr: any) => { const getEnum = (arr: any) => {
getAllEnum({ params: arr }).then(res => { getAllEnum({ params: arr }).then(res => {
const data = res.data const data = res.data
controlMode.value = data.IlluminationMode //
controlScene.value = data.IlluminationScene controlMode.value = data.IlluminationMode
//
controlScene.value = data.IlluminationScene
}) })
} }
// 线 // 1-1 线
const setArea = (isHandle: number) => { const setArea = () => {
const data = props.treeData.find((item: any) => { const data = props.treeData[0]
return item.id == props.nowArea
})
//
data.selected = true
//
selectedButton.value = props.nowArea
//
buttons2.value = data.childList buttons2.value = data.childList
//
if (isHandle) {
// 线childrenselectedtrue
const button2 = data.childList.find((item: any) => {
return item.selected == true
})
// 线
if (button2) {
thisButton2.value = button2;
console.log(button2,'2222222222')
} else {
resetMode()
}
}
} }
// =================================================================== // ===================================================================
@ -251,10 +229,6 @@ const props = defineProps({
treeData: { treeData: {
type: Array, type: Array,
default: [] default: []
},
// ID
nowArea: {
type: String,
} }
}); });
// //
@ -263,12 +237,6 @@ const props = defineProps({
* @method reset 用于重置按钮区 * @method reset 用于重置按钮区
*/ */
const emit = defineEmits(['changeArea','reset']); const emit = defineEmits(['changeArea','reset']);
//
watch(() => props.nowArea, () => {
setArea(1)
// 线
handleButton.value = ''
})
// ======================================================================= // =======================================================================
@ -283,15 +251,22 @@ const togglePlan = () => {
const showAllButtonsArea = ref(false); const showAllButtonsArea = ref(false);
// 1 // 1
const selectedButton = ref<string | undefined>('1'); const selectedButton = ref<string | undefined>('1');
// -
const selectButton = (button: any) => { //
const changeArea = (button: any) => {
// //
selectedButton.value = button.id; selectedButton.value = button.id;
initMenu(1) // 线
button.selected = true
buttons2.value = button.childList buttons2.value = button.childList
//
emit('reset')
//
button.selected = true
//
emit('changeArea', button.id); emit('changeArea', button.id);
// 线 -
resetMode() resetMode()
// -
handleButton.value = '' handleButton.value = ''
}; };
// 8 // 8
@ -335,7 +310,9 @@ const selectAll = () => {
button.selected = false; button.selected = false;
}); });
singleSelection.value = !singleSelection.value; singleSelection.value = !singleSelection.value;
// 线 -
resetMode() resetMode()
//
emit('changeArea', [selectedButton.value]) emit('changeArea', [selectedButton.value])
}; };
@ -346,7 +323,11 @@ const toggleAllSelection = () => {
let arr = [selectedButton.value] let arr = [selectedButton.value]
// //
if (selectAllCheckbox.value) { if (selectAllCheckbox.value) {
buttons2.value.forEach((item) => { buttons2.value.forEach((item, index) => {
// 线-
if (index == 0) {
thisButton2.value = item
}
item.selected = true; item.selected = true;
arr.push(item.id) arr.push(item.id)
}); });
@ -355,12 +336,24 @@ const toggleAllSelection = () => {
buttons2.value.forEach((item) => { buttons2.value.forEach((item) => {
item.selected = false; item.selected = false;
}); });
// -
resetMode()
} }
emit('changeArea', arr) emit('changeArea', arr)
}; };
// 线
const thisButton2 = ref({
code: '',
mode: {
value: -1
},
scene: {
value: -1
}
})
// //
const toggleSelection = (button: any) => { const changeLine = (button: any) => {
// ID/ // ID/
handleButton.value = button.id handleButton.value = button.id
// / // /
@ -373,13 +366,13 @@ const toggleSelection = (button: any) => {
// //
let level1 = selectedButton.value let level1 = selectedButton.value
let level2 = button.id let level2 = button.id
// false // false
if (singleSelection.value) { if (singleSelection.value) {
buttons2.value.forEach(item => { buttons2.value.forEach(item => {
item.selected = false; item.selected = false;
}); });
emit('changeArea', [level1, level2])
button.selected = !button.selected; button.selected = !button.selected;
emit('changeArea', [level1, level2])
} else { } else {
// //
button.selected = !button.selected; button.selected = !button.selected;
@ -396,7 +389,7 @@ const toggleSelection = (button: any) => {
// //
thisButton2.value = button thisButton2.value = button
} else { } else {
// //
resetMode() resetMode()
} }
console.log(thisButton2,'button') console.log(thisButton2,'button')
@ -411,28 +404,17 @@ const limitedButtons2 = computed(() => buttons2.value.slice(0, 8));
// ==================================================================== // ====================================================================
const thisButton2 = ref({
code: '',
mode: {
value: '0'
}
})
// - // -
const selectButton3 = (button3) => { const selectButton3 = (button3) => {
let checked = thisButton2.value.mode let checked = thisButton2.value.mode
console.log(button3.value,'---', checked.value) console.log(button3.value,'---', checked.value)
// //
if (checked.value === button3.value) { if (checked.value === button3.value) {
return return
} }
checked.value = button3.value checked.value = button3.value
selectedButton4.value = null; //
}; };
const diff = () => {
console.log(thisButton2)
}
// ===================================================================== // =====================================================================
// //
@ -443,13 +425,63 @@ const controlScene = ref([])
const selectedButton4 = ref(null); const selectedButton4 = ref(null);
// - // -
const selectButton4 = (button4) => { const selectButton4 = (button4) => {
selectedButton4.value = button4.label; // 线
const data = thisButton2.value
//
let before = data.scene.value
//
let after = button4.value
//
if (before === after) {
return
//
} else {
thisButton2.value.scene.value = after
//
const result = changeList.value.find((item, index) => {
item.index = index
return item.deviceGroup == data.code
})
//
if (result) {
//
if (after == result.before) {
changeList.value.splice(result.index, 1)
// after
} else {
result.scene = after
// flag
delete result.index
}
//
} else {
changeList.value.push({
// 线
deviceGroup: data.code,
deviceGroupName: data.name,
//
region: data.pcode,
regionName: '',
//
before: before,
//
scene: after
})
}
console.log(changeList.value, 'changeList')
}
thisButton2.value.scene.value = after
console.log(thisButton2,'222222')
console.log(button4,'44444')
}; };
// ======================================================================== // ========================================================================
//
const changeList: any = ref([])
// //
const submitArray = ref([]) const submitList = ref([])
const cxList = ref([ const cxList = ref([
{ {
id: '1', id: '1',
@ -489,7 +521,7 @@ const cxList = ref([
}, },
]); ]);
// //
const delBtn = (id: any) => { const delBtn = () => {
cxList.value.pop(); cxList.value.pop();
console.log(cxList.value.length); console.log(cxList.value.length);
@ -501,19 +533,6 @@ const delBtn = (id: any) => {
// ======================================================================== // ========================================================================
const isLoading = ref(false) const isLoading = ref(false)
// 5
const initMenu = (tier: number) => {
// 1 = -
if (tier == 1) {
emit('reset')
//
selectedButton4.value = null;
} else if (tier == 2) {
//
selectedButton4.value = null;
}
}
// //
const refresh = () => { const refresh = () => {
// //
@ -532,7 +551,16 @@ const refresh = () => {
// //
const executeVisible = ref<boolean>(false); const executeVisible = ref<boolean>(false);
const showModal = () => { const showModal = () => {
http.post(lightingManage.getChangeList, { infoList: changeList.value, projectId: 'HLlmTZp8' }).then(res => {
if (res.msg === 'success') {
isLoading.value = true
console.log(res)
} else {
isLoading.value = false
}
})
executeVisible.value = true; executeVisible.value = true;
}; };
// //
@ -549,13 +577,20 @@ const resetMode = () => {
thisButton2.value = { thisButton2.value = {
code: '', code: '',
mode: { mode: {
value: '0' value: -1
},
scene: {
value: -1
} }
} }
} }
//
defineExpose({ defineExpose({
changeCancel //
changeArea,
// 线
changeLine
}); });
</script> </script>

Loading…
Cancel
Save