Browse Source

对碳排管理进行优化

temp
fks-xuxinyue 3 months ago
parent
commit
117db1c400
  1. 1
      hx-ai-intelligent/src/api/carbonEmissionFactorLibrary.ts
  2. 28
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonAssets/carbonAssetsDetail/index.vue
  3. 88
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionFactorLibrary/index.vue
  4. 50
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/carbonEmissions/index.vue
  5. 2
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/config.ts
  6. 31
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/energyConsumption/index.vue
  7. 27
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/index.vue
  8. 20
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/quickCalculation/index.vue
  9. 5
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/config.ts
  10. 56
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/fillInPage/index.vue
  11. 62
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/index.vue
  12. 15
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/all/index.vue
  13. 12
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/category/categoryDeatil.vue
  14. 30
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/category/index.vue
  15. 28
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/index.vue

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

@ -12,6 +12,7 @@ export enum carbonEmissionFactorLibrary {
import = '/carbon-smart/api/carbon/emission/factor/import',
export = '/carbon-smart/api/carbon/emission/factor/export',
gasAndDatabase = '/carbon-smart/api/carbon/emission/factor/gasAndDatabase',
checkDel = '/carbon-smart/api/carbon/emission/factor/checkDel',
// 单位管理
dictionaryUnitManagement = '/carbon-smart/client/dict/dictionaryUnitManagement',
findOutermost = '/carbon-smart/client/dict/findOutermost',

28
hx-ai-intelligent/src/view/carbonEmissionManage/carbonAssets/carbonAssetsDetail/index.vue

@ -1,6 +1,6 @@
<template>
<div class="search">
<a-card style="border-radius: 12px">
<a-card>
<div class="ns-form-title">
<div class="title">查询</div>
<div class="operation">
@ -483,6 +483,7 @@
{
title: '序号',
width: 80,
align: 'center',
customRender: (text: any) => {
return text.index + 1;
},
@ -491,6 +492,7 @@
title: '资产类别',
dataIndex: 'accountType',
width: 100,
align: 'center',
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
},
@ -499,6 +501,7 @@
title: '交易方式',
dataIndex: 'transactionTypeName',
width: 100,
align: 'center',
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
},
@ -507,6 +510,7 @@
title: '交易日期',
dataIndex: 'transactionDate',
width: 100,
align: 'center',
sorter: (a, b) => a.transactionDate - b.transactionDate,
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
@ -516,6 +520,7 @@
title: '本期收入(tCO2)',
dataIndex: 'income',
width: 150,
align: 'center',
sorter: (a, b) => a.income - b.income,
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
@ -525,6 +530,7 @@
title: '本期支出(tCO2)',
dataIndex: 'expenditure',
width: 150,
align: 'center',
sorter: (a, b) => a.expenditure - b.expenditure,
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
@ -533,6 +539,7 @@
{
title: '发生金额(¥)',
width: 150,
align: 'center',
dataIndex: 'amountIncurredValue',
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
@ -541,6 +548,7 @@
{
title: '交易对象',
width: 100,
align: 'center',
dataIndex: 'tradingPartner',
customRender: (text: any) => {
return text.text !== '' ? text : '-';
@ -549,6 +557,7 @@
{
title: '更新人',
width: 100,
align: 'center',
dataIndex: 'updateUser',
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
@ -557,6 +566,7 @@
{
title: '更新时间',
width: 150,
align: 'center',
ellipsis: true,
dataIndex: 'updateTime',
customRender: (text: any) => {
@ -813,14 +823,17 @@
{
title: '统计类型',
dataIndex: 'statisticType',
align: 'center',
},
{
title: '小计',
dataIndex: 'subtotal',
align: 'center',
},
{
title: '合计',
dataIndex: 'amountTo',
align: 'center',
},
];
@ -865,21 +878,26 @@
}
.search {
height: 15%;
border-radius: 8px;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 5px 16px rgb(118 126 145 / 20%);
}
.detailTable {
width: 70%;
margin-right: 20px;
height: 100%;
background: white;
border-radius: 12px;
padding: 16px;
border-radius: 8px;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 2px 20px rgb(69 123 234 / 20%);
}
.total {
width: calc(30% - 20px);
height: 100%;
background: white;
border-radius: 12px;
padding: 16px;
border-radius: 8px;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 2px 20px rgb(69 123 234 / 20%);
}
:deep(.ns-table-search) {
display: none;

88
hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionFactorLibrary/index.vue

@ -144,12 +144,13 @@
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 16px;
">
<a-select
ref="select"
:value="unitTreeParams.id"
allowClear
style="width: 90%"
style="width: 100%"
placeholder="选择分组"
@change="handleChange">
<a-select-option v-for="(item, index) in groupData" :key="index" :value="item.id">
@ -171,13 +172,21 @@
<span>{{ data.cnValue }}</span>
</div>
<div class="actionMore">
<PlusCircleOutlined v-if="!data.parentId" @click="addUnit(data)" />
<MinusCircleOutlined style="margin-left: 6px" @click="delUnit(data)" />
<PlusCircleOutlined
v-if="!data.parentId"
style="color: #4388fb"
@click="addUnit(data)" />
<MinusCircleOutlined
style="margin-left: 6px; color: #4388fb"
@click="delUnit(data)" />
<EditOutlined
style="margin-left: 6px"
style="margin-left: 6px; color: #4388fb"
v-if="!data.parentId"
@click="editGroup(data)" />
<EditOutlined style="margin-left: 6px" v-else @click="editUnit(data)" />
<EditOutlined
style="margin-left: 6px; color: #4388fb"
v-else
@click="editUnit(data)" />
</div>
</div>
</template>
@ -424,7 +433,7 @@
const onExpand = (keys: string[]) => {
expandedKeys.value = keys;
autoExpandParent.value = false;
// autoExpandParent.value = false;
};
// watch(selectTreeDataValue, (value) => {
// const expanded = dataList
@ -458,7 +467,7 @@
mainRef.value?.nsTableRef.reload();
};
//
const addTreeNodeData = () => {
const addTreeNodeData = (data) => {
operationTree.value = '新增';
treeNodeAdd.value = true;
editTreeNode.value.type = 'create';
@ -557,6 +566,7 @@
const editTreeNode = ref({});
const onSelectKeys = ref([]);
const onSelect = (selectedKey: string[], info: any) => {
expandedKeys.value = selectedKey;
if (selectedKey.length === 1) {
if (info.selectedNodes[0].emissionName === '全部') {
onSelectKeys.value = [];
@ -771,6 +781,7 @@
{
title: 'id',
width: 50,
align: 'center',
customRender: (text: any) => {
return text.index + 1;
},
@ -778,57 +789,68 @@
{
title: '排放源',
width: 100,
align: 'center',
dataIndex: 'emissionSources',
},
{
title: '排放类型',
width: 100,
align: 'center',
dataIndex: 'emissionTypeColumn',
},
{
title: '排放气体',
width: 100,
align: 'center',
dataIndex: 'emissionGas',
},
{
title: '排放环节',
width: 100,
align: 'center',
dataIndex: 'emissionProcess',
},
{
title: '排放因子',
width: 100,
align: 'center',
dataIndex: 'emissionFactors',
},
{
title: '排放因子单位',
width: 100,
align: 'center',
dataIndex: 'emissionFactorUnits',
},
{
title: '数据来源',
width: 100,
align: 'center',
dataIndex: 'dataSources',
},
{
title: '数据库',
width: 100,
align: 'center',
dataIndex: 'carbonDatabase',
},
{
title: '参考文献',
width: 100,
align: 'center',
dataIndex: 'bibliography',
ellipsis: true,
},
{
title: '引用数量',
width: 100,
align: 'center',
dataIndex: 'numberOfReferences',
},
],
columnActions: {
title: '操作',
align: 'center',
actions: [
{
label: '编辑',
@ -875,10 +897,42 @@
{
label: '删除',
name: 'userDelete',
dynamicParams: { ids: 'id[]' },
confirm: true,
isReload: true,
api: carbonEmissionFactorLibrary.del,
// dynamicParams: { ids: 'id[]' },
// confirm: true,
// isReload: true,
// api: carbonEmissionFactorLibrary.del,
handle: (record: any) => {
fetch(carbonEmissionFactorLibrary.checkDel, { ids: [record.id] }).then((res) => {
if (res.data === '确定要删除吗?') {
Modal.confirm({
title: res.data,
icon: createVNode(ExclamationCircleOutlined),
onOk() {
fetch(carbonEmissionFactorLibrary.del, { ids: [record.id] }).then((res) => {
mainRef.value?.nsTableRef.reload();
NsMessage.success('操作成功');
});
},
onCancel() {
console.log('Cancel');
},
class: 'test',
});
} else {
Modal.confirm({
title: res.data,
icon: createVNode(ExclamationCircleOutlined),
onOk() {
console.log('OK');
},
onCancel() {
console.log('Cancel');
},
class: 'test',
});
}
});
},
},
],
},
@ -1147,7 +1201,7 @@
display: flex;
}
.left {
width: 300px;
width: 255px;
// max-height: calc(100vh - 96px);
margin-right: @ns-gap;
min-width: fit-content;
@ -1198,7 +1252,8 @@
margin-bottom: unset;
padding-bottom: unset;
border-bottom: unset;
width: 70%;
margin-bottom: 16px;
width: 255px;
height: 5vh;
display: flex;
align-items: center;
@ -1238,18 +1293,19 @@
justify-content: space-evenly;
}
.treePart {
width: 70%;
height: calc(100% - 5vh);
width: 255px;
height: 700px;
display: flex;
border: 1px solid #bfbfbf;
margin-left: 10%;
flex-direction: column;
border-radius: 12px;
overflow: auto;
padding: 16px;
align-items: center;
:deep(.ant-tree) {
height: 90%;
width: 90%;
width: 100%;
overflow: auto;
}
}

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

@ -1,11 +1,12 @@
<template>
<div>
<div style="height: 100%">
<a-table
v-if="data && data.length > 0"
:columns="column"
:data-source="data"
:bordered="true"
:pagination="false"
:scroll="{ x: 1700, y: 480 }">
:scroll="{ x: 1700 }">
<template #title>
<a-date-picker
v-model:value="selectYear"
@ -17,10 +18,28 @@
<a-button type="primary" style="margin-left: 6px" @click="clickSelect">搜索</a-button>
</span>
</template>
<template #bodyCell="{ column, text }">
<span>{{ text || '-' }}</span>
<template #bodyCell="{ column, text, record }">
<template v-if="column.dataIndex === 'averageFactorValue'">
<span v-if="record.averageFactorValue !== undefined">
{{ record.averageFactorValue + record.measurement + '/' + record.unitName }}
</span>
<span v-else>
{{ '-' }}
</span>
</template>
<span v-else>{{ text || '-' }}</span>
</template>
</a-table>
<a-empty
v-else
style="
width: 100%;
height: 100%;
justify-content: center;
display: flex;
align-items: center;
flex-direction: column;
" />
<!-- <a-pagination
:current="queryParams.pageNum"
:total="total"
@ -77,6 +96,7 @@
title: '排放类型',
dataIndex: 'cnValue',
width: 100,
align: 'center',
customCell: (record, rowIndex) => {
if (rowIndex == undefined) {
return {
@ -100,81 +120,97 @@
title: '能源种类',
dataIndex: 'energyType',
width: 100,
align: 'center',
},
{
title: '计量单位',
dataIndex: 'unitName',
dataIndex: 'measurement',
width: 100,
align: 'center',
},
{
title: '加权平均',
dataIndex: 'averageFactorValue',
width: 100,
align: 'center',
},
{
title: '全年',
dataIndex: 'carbonYearly',
width: 100,
align: 'center',
},
{
title: '1月',
dataIndex: 'jan',
width: 100,
align: 'center',
},
{
title: '2月',
dataIndex: 'feb',
width: 100,
align: 'center',
},
{
title: '3月',
dataIndex: 'mar',
width: 100,
align: 'center',
},
{
title: '4月',
dataIndex: 'apr',
width: 100,
align: 'center',
},
{
title: '5月',
dataIndex: 'may',
width: 100,
align: 'center',
},
{
title: '6月',
dataIndex: 'jun',
width: 100,
align: 'center',
},
{
title: '7月',
dataIndex: 'jul',
width: 100,
align: 'center',
},
{
title: '8月',
dataIndex: 'aug',
width: 100,
align: 'center',
},
{
title: '9月',
dataIndex: 'sep',
width: 100,
align: 'center',
},
{
title: '10月',
dataIndex: 'oct',
width: 100,
align: 'center',
},
{
title: '11月',
dataIndex: 'nov',
width: 100,
align: 'center',
},
{
title: '12月',
dataIndex: 'dece',
width: 100,
align: 'center',
},
];
//
@ -220,6 +256,10 @@
:deep(.ant-table-container) {
margin: 0px 16px;
}
:deep(.ant-table-container) {
height: 64vh;
overflow: auto;
}
// :deep(.ant-table-cell) {
// border: 1px solid #f0f0f0;
// }

2
hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/config.ts

@ -177,7 +177,7 @@ export const setFactorConfig = (orgId) => {
},
rowSelection: {
type: 'radio',
// selectedRowKeys: [],
selectedRowKeys: undefined,
},
columns: [
{

31
hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/energyConsumption/index.vue

@ -1,7 +1,7 @@
<template>
<div style="height: 100%">
<div class="table" style="height: 100%">
<ns-view-list-table v-bind="tableConfig" :model="data" ref="mainRef" :scroll="{ x: 1500 }">
<ns-view-list-table v-bind="tableConfig" :model="data" ref="mainRef" :scroll="{ x: 1600 }">
</ns-view-list-table>
</div>
<!-- 新增数据库数据 -->
@ -367,12 +367,24 @@
return text.index + 1;
},
width: 100,
align: 'center',
},
{
title: '能源种类',
dataIndex: 'energyType',
width: 100,
ellipsis: true,
align: 'center',
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
},
},
{
title: '编码',
dataIndex: 'code',
width: 100,
ellipsis: true,
align: 'center',
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
},
@ -382,6 +394,7 @@
className: 'unitName',
dataIndex: 'unitName',
width: 100,
align: 'center',
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
},
@ -390,6 +403,7 @@
title: '全年',
dataIndex: 'yearly',
width: 100,
align: 'center',
customRender: (text: any) => {
return text.text !== undefined ? text : '-';
},
@ -398,6 +412,7 @@
title: '1月',
dataIndex: 'jan',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -419,6 +434,7 @@
title: '2月',
dataIndex: 'feb',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -440,6 +456,7 @@
title: '3月',
dataIndex: 'mar',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -461,6 +478,7 @@
title: '4月',
dataIndex: 'apr',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -482,6 +500,7 @@
title: '5月',
dataIndex: 'may',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -503,6 +522,7 @@
title: '6月',
dataIndex: 'jun',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -524,6 +544,7 @@
title: '7月',
dataIndex: 'jul',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -545,6 +566,7 @@
title: '8月',
dataIndex: 'aug',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -566,6 +588,7 @@
title: '9月',
dataIndex: 'sep',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -587,6 +610,7 @@
title: '10月',
dataIndex: 'oct',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -608,6 +632,7 @@
title: '11月',
dataIndex: 'nov',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -629,6 +654,7 @@
title: '12月',
dataIndex: 'dece',
width: 100,
align: 'center',
customRender: (value) => {
let text;
let color;
@ -649,6 +675,7 @@
],
columnActions: {
title: '操作',
align: 'center',
actions: [
{
label: '编辑',
@ -904,7 +931,7 @@
const getDictList = async () => {
//
const options = await dict({ params: { dicKey: 'ENERGY_TYPE' } });
energyTypeOptions.value = options.data.data;
energyTypeOptions.value = options.data.data.filter((item) => item.cnValue !== '碳排量');
//
fetch(energyConsumption.getDicList, { grp: 'EMISSION_TYPE' }).then((res) => {
emissionTypeDic.value = res.data;

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

@ -48,23 +48,22 @@
};
</script>
<style scoped lang="less">
:deep(.ant-tabs-ink-bar) {
width: 31px !important;
height: 3px !important;
border-radius: 2px !important;
margin-left: 5%;
background: rgba(67, 136, 251, 1);
}
//table
:deep(.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn) {
font-size: 16px;
font-weight: 700;
letter-spacing: 1.33px;
line-height: 21px;
color: rgba(51, 51, 51, 1);
text-align: left;
vertical-align: top;
font-size: 14px !important;
font-weight: bolb !important;
color: #333333 !important;
}
:deep(.ant-tabs-tab-btn) {
font-size: 16px;
font-weight: 700;
letter-spacing: 1.33px;
line-height: 21px;
color: #666666;
text-align: left;
vertical-align: top;
font-size: 14px !important;
color: #666666 !important;
}
:deep(.ant-tabs-content) {
height: 100%;

20
hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/quickCalculation/index.vue

@ -37,7 +37,7 @@
}}
</span> -->
<span v-if="data.code" :title="data.energyType + data.code">
{{ truncatedName(data.energyType + data.code) }}
{{ truncatedName(data.energyType + '(' + data.code + ')') }}
</span>
<span v-else :title="data.energyType">{{ truncatedName(data.energyType) }}</span>
</template>
@ -129,7 +129,7 @@
title="选择因子"
@ok="btnClick"
@cancel="onCloseClick">
<ns-view-list-table v-bind="config" ref="setFactorRef" style="height: 500px" />
<ns-view-list-table v-bind="config" ref="setFactorRef" />
</a-modal>
</div>
</template>
@ -315,6 +315,7 @@
columns: [
{
title: '序号',
align: 'center',
customRender: (text: any) => {
return text.index + 1;
},
@ -322,36 +323,43 @@
{
title: '因子值',
dataIndex: 'emissionFactors',
align: 'center',
},
{
title: '计量单位',
className: 'carbonEmissionSuffix',
dataIndex: 'carbonEmissionSuffix',
align: 'center',
},
{
title: '启用时间',
className: 'startTime',
dataIndex: 'startTime',
align: 'center',
},
{
title: '结束时间',
className: 'endTime',
dataIndex: 'endTime',
align: 'center',
},
{
title: '数据来源',
className: 'dataSources',
dataIndex: 'dataSources',
align: 'center',
},
{
title: '更新时间',
className: 'updateTime',
dataIndex: 'updateTime',
align: 'center',
ellipsis: true,
},
],
columnActions: {
title: '操作',
align: 'center',
actions: [
{
label: '编辑',
@ -520,8 +528,8 @@
nextTick(() => {
setFactorRef.value.nsTableRef.params.emissionList = treeId.value;
setFactorRef.value.nsTableRef.treeElRef.selectedKeys = treeId.value;
setFactorRef.value.nsTableRef.rowSelection.selectedRowKeys = tableId.value;
setFactorRef.value.nsTableRef.reload();
setFactorRef.value.nsTableRef.rowSelection.selectedRowKeys = [...tableId.value];
// setFactorRef.value.nsTableRef.reload();
treeId.value = [];
tableId.value = [];
});
@ -531,7 +539,7 @@
setFactorRef.value.nsTableRef.params.emissionList = [0];
setFactorRef.value.nsTableRef.treeElRef.selectedKeys = [];
setFactorRef.value.nsTableRef.rowSelection.selectedRowKeys = undefined;
setFactorRef.value.nsTableRef.reload();
// setFactorRef.value.nsTableRef.reload();
});
}
};
@ -569,7 +577,7 @@
padding: 16px;
}
.left {
width: 300px;
width: 255px;
margin-right: @ns-gap;
min-width: fit-content;
border-radius: 8px;

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

@ -5,6 +5,7 @@ export const voucherColumns = [
{
title: '序号',
width: 80,
align: 'center',
customRender: (text: any) => {
return text.index + 1;
},
@ -13,12 +14,14 @@ export const voucherColumns = [
title: '日期',
dataIndex: 'bizName',
key: 'bizName',
align: 'center',
ellipsis: true,
},
{
title: '文件名称',
dataIndex: 'fileName',
key: 'fileName',
align: 'center',
ellipsis: true,
},
];
@ -53,7 +56,7 @@ export const setFactorConfig = (orgId) => {
icon: 'deviceType',
title: '排放分类',
},
params: { orgId},
params: { orgId },
dynamicParams: { emissionList: 'id[]' },
defaultExpandAll: true,
// checkable:true,

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

@ -2,12 +2,12 @@
<div class="main">
<div class="totalTitle">
<div class="ns-form-title">
<div class="title">{{ props.year }}年济阳站碳盘查报告</div>
<div class="standard" style="display: flex; align-items: center">
<div style="display: flex; align-items: center">
<div class="title">{{ props.year }}年济阳站碳盘查报告</div>
<img
width="11"
height="11"
style="margin-right: 5px"
style="margin-right: 5px; margin-left: 10px"
src="../../../../../src/icon/carbonInventoryCheck.svg" />
<span
style="
@ -18,16 +18,19 @@
color: rgba(67, 136, 251, 1);
text-align: left;
vertical-align: top;
">
适用标准{{ props.standard }}
"
:title="props.standard">
适用标准{{ truncatedName(props.standard) }}
</span>
</div>
<div class="standard" style="display: flex; align-items: center">
<a-button type="primary" @click="changeParentData" ghost style="margin-left: 6px">
返回
</a-button>
</div>
</div>
</div>
<div style="display: flex; height: 90%">
<div style="display: flex; height: 93%">
<div class="left">
<div class="top">
<a-form style="width: 100%; margin: 0 auto">
@ -909,38 +912,45 @@
title: '日期',
dataIndex: 'acquisitionDate',
width: 80,
align: 'center',
key: 'acquisitionDate',
},
{
title: '消耗量',
align: 'center',
children: [
{
title: '数据来源',
dataIndex: 'dataSources',
width: 100,
align: 'center',
key: 'dataSources',
},
{
title: '数值',
dataIndex: 'consumption',
width: 100,
align: 'center',
key: 'consumption',
},
],
},
{
title: '碳排因子',
align: 'center',
children: [
{
title: '数据来源',
dataIndex: 'carbonSource',
width: 100,
align: 'center',
key: 'carbonSource',
},
{
title: '数值',
dataIndex: 'emissionFactors',
width: 100,
align: 'center',
key: 'emissionFactors',
},
],
@ -949,11 +959,13 @@
title: '排放量',
dataIndex: 'emissions',
width: 100,
align: 'center',
key: 'emissions',
fixed: 'right',
},
{
title: '操作',
align: 'center',
dataIndex: 'action',
key: 'action',
width: 80,
@ -1677,6 +1689,13 @@
});
}
};
const truncatedName = (name) => {
if (name.length > 30) {
return name.substring(0, 30) + '...';
}
return name;
};
//
const emit = defineEmits(['change-data']);
const changeParentData = () => {
@ -1689,6 +1708,7 @@
background-color: #ffffff;
height: 100%;
padding: 16px;
border-radius: 8px;
}
.left {
width: 300px;
@ -1708,6 +1728,7 @@
position: relative;
height: 100%;
margin-bottom: 20px;
border-radius: 8px;
.ns-form-title {
font-weight: bold;
user-select: text;
@ -1928,4 +1949,27 @@
background: rgba(255, 255, 255, 1);
box-shadow: 0px 2px 20px rgb(69 123 234 / 20%);
}
:deep(.ant-tabs-ink-bar) {
// width: 31px !important;
height: 3px !important;
border-radius: 2px !important;
background: rgba(67, 136, 251, 1);
}
//table
:deep(.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn) {
font-size: 14px !important;
font-weight: bolb !important;
color: #333333 !important;
}
:deep(.ant-tabs-tab-btn) {
font-size: 14px !important;
color: #666666 !important;
}
:deep(.ant-tabs-content) {
height: 100%;
}
:deep(.ant-tabs-tabpane) {
height: 100%;
}
</style>

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

@ -44,7 +44,7 @@
<a-form-item ref="name" label="适用标准" name="genericStandard">
<a-input
v-model:value="formState.genericStandard"
:maxlength="20"
:maxlength="100"
@keydown="handleKeyDown"
placeholder="请输入适用标准" />
</a-form-item>
@ -172,26 +172,35 @@
spinning.value = false;
});
} else {
Modal.confirm({
title: '修改日期会导致已有数据丢失,是否继续修改?',
icon: createVNode(ExclamationCircleOutlined),
onOk() {
spinning.value = true;
fetch(carbonInventoryCheck.createOrUpdate, formState.value)
.then((res) => {
visible.value = false;
mainRef.value?.nsTableRef.reload();
spinning.value = false;
})
.catch((error) => {
message.error(error ? error : '保存失败!');
});
},
onCancel() {
console.log('Cancel');
},
class: 'test',
});
if (count.value === '0') {
spinning.value = true;
fetch(carbonInventoryCheck.createOrUpdate, formState.value).then((res) => {
visible.value = false;
mainRef.value?.nsTableRef.reload();
spinning.value = false;
});
} else {
Modal.confirm({
title: '修改日期会导致已有数据丢失,是否继续修改?',
icon: createVNode(ExclamationCircleOutlined),
onOk() {
spinning.value = true;
fetch(carbonInventoryCheck.createOrUpdate, formState.value)
.then((res) => {
visible.value = false;
mainRef.value?.nsTableRef.reload();
spinning.value = false;
})
.catch((error) => {
message.error(error ? error : '保存失败!');
});
},
onCancel() {
console.log('Cancel');
},
class: 'test',
});
}
}
}
})
@ -209,6 +218,7 @@
const year = ref();
const oldStartTime = ref();
const oldEndTime = ref();
const count = ref();
const tableConfig = ref({
title: '数据库',
api: carbonInventoryCheck.carbonInventoryList,
@ -230,6 +240,7 @@
{
title: '序号',
width: 50,
align: 'center',
customRender: (text: any) => {
return text.index + 1;
},
@ -237,37 +248,45 @@
{
title: '企业名称',
width: 130,
align: 'center',
dataIndex: 'enterpriseName',
},
{
title: '报告名称',
width: 100,
align: 'center',
dataIndex: 'reportName',
},
{
title: '报告年度',
width: 70,
align: 'center',
dataIndex: 'reportYear',
},
{
title: '适用标准',
width: 100,
align: 'center',
dataIndex: 'genericStandard',
ellipsis: true,
},
{
title: '更新人',
width: 100,
align: 'center',
dataIndex: 'updateUser',
},
{
title: '更新时间',
width: 100,
align: 'center',
dataIndex: 'updateTime',
},
],
columnActions: {
title: '操作',
width: 100,
align: 'center',
actions: [
{
label: '编辑',
@ -275,6 +294,7 @@
handle: (record: any) => {
text.value = '编辑报告';
visible.value = true;
count.value = record.count;
fetch(carbonInventoryCheck.findById, { id: record.id }).then((res) => {
formState.value = res.data;
formState.value.reportScope = [res.data.startTime, res.data.endTime];

15
hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/all/index.vue

@ -63,12 +63,14 @@
</div>
<div class="tablePart">
<a-table
v-if="data && data.length > 0"
:columns="columns"
:data-source="data"
size="middle"
bordered
:pagination="false"
:scroll="{ x: 1300, y: 300 }">
:pagination="false">
</a-table>
<a-empty v-else />
</div>
</div>
</a-spin>
@ -266,41 +268,50 @@
{
title: '序号',
width: 100,
align: 'center',
customRender: (text: any) => {
return text.index + 1;
},
},
{
title: '名称',
align: 'center',
dataIndex: 'itemizeName',
},
{
title: '年份',
dataIndex: 'year',
align: 'center',
},
{
title: '计量单位',
dataIndex: 'unitMeasurement',
align: 'center',
},
{
title: '总实际用量',
dataIndex: 'actualUsage',
align: 'center',
},
{
title: '总预算量',
dataIndex: 'budget',
align: 'center',
},
{
title: '基准值',
dataIndex: 'referenceValue',
align: 'center',
},
{
title: '节能量',
dataIndex: 'energyConservation',
align: 'center',
},
{
title: '预算达成率',
dataIndex: 'budgetAchievement',
align: 'center',
},
]);

12
hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/category/categoryDeatil.vue

@ -81,6 +81,7 @@
</a-button>
</div>
<a-table
v-if="data && data.length > 0"
:columns="columns"
:data-source="data"
rowKey="id"
@ -123,6 +124,7 @@
</a-table-summary-row>
</template>
</a-table>
<a-empty v-else />
</a-card>
</div>
</a-spin>
@ -369,46 +371,55 @@
const columns = ref([
{
title: '序号',
align: 'center',
customRender: (text: any) => {
return text.index + 1;
},
},
{
title: '日期',
align: 'center',
dataIndex: 'yearMonth',
},
{
title: Number(props.year) - 1 + '年实际用量',
dataIndex: 'lastYearActualUsage',
align: 'center',
customRender: ({ text }: { text: number }) => `${text ? text + unit.value : 0 + unit.value}`, //
},
{
title: props.year + '年实际用量',
dataIndex: 'actualUsage',
align: 'center',
customRender: ({ text }: { text: number }) => `${text ? text + unit.value : 0 + unit.value}`, //
},
{
title: '基准值',
align: 'center',
dataIndex: 'referenceValue',
customRender: ({ text }: { text: number }) => `${text ? text + unit.value : 0 + unit.value}`, //
},
{
title: '是否按去年折算',
dataIndex: 'lastYear',
align: 'center',
},
{
title: '折算率',
dataIndex: 'conversionRate',
align: 'center',
customRender: ({ text }: { text: number }) => `${text}%`, //
},
{
title: '2024年预算',
dataIndex: 'budget',
align: 'center',
customRender: ({ text }: { text: number }) => `${text ? text + unit.value : 0 + unit.value}`, //
},
{
title: '操作',
key: 'action',
align: 'center',
width: 200,
},
]);
@ -891,6 +902,7 @@
border-radius: 12px;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 2px 20px rgb(69 123 234 / 20%);
padding: 16px;
.chart {
width: 100%;
height: 65%;

30
hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/category/index.vue

@ -46,6 +46,7 @@
</div>
<div class="tablePart">
<a-table
v-if="data && data.length > 0"
:columns="columns"
:data-source="data"
bordered
@ -61,6 +62,7 @@
</template>
</template>
</a-table>
<a-empty v-else />
</div>
</div>
</a-spin>
@ -382,11 +384,21 @@
ballChartInstance = echarts.init(ballChartRef.value);
let ballData = (Number(ballValue.value) / 100).toFixed(2);
const option = {
title: {
text: selectedTime.value
? '历年' + props.energyTypeName + '分析'
: '每月' + props.energyTypeName + '分析',
x: '0',
textStyle: {
color: 'rgba(51, 51, 51, 1)',
fontSize: '16',
},
},
series: [
{
type: 'liquidFill',
radius: '78.1%',
center: ['50%', '50%'],
radius: '70%',
center: ['55%', '55%'],
color: !selectedTime.value
? ['#ecf3fe', '#c8dcfe', '#5594fa']
: ['rgba(12, 168, 126, 0.5)', 'rgba(12, 168, 126, 0.1)', 'rgba(12, 168, 126, 1)'],
@ -402,7 +414,7 @@
textStyle: {
color: !selectedTime.value ? 'rgba(68, 197, 253,1)' : 'rgba(12, 168, 126, 1)',
insideColor: '#12786f',
fontSize: Number(ballData) > 1000 ? 20 : 40,
fontSize: Number(ballData) > 100 ? 20 : 40,
},
formatter: (params) => {
// return `${(params.value * 100).toFixed(2)}%`;
@ -549,6 +561,7 @@
const columns = ref([
{
title: '序号',
align: 'center',
customRender: (text: any) => {
return text.index + 1;
},
@ -556,37 +569,45 @@
{
title: '分项名称',
dataIndex: 'itemizeName',
align: 'center',
},
{
title: '年份',
align: 'center',
dataIndex: 'year',
},
{
title: '实际用量',
dataIndex: 'actualUsage',
align: 'center',
customRender: ({ text }: { text: number }) => `${text ? text + unit.value : 0 + unit.value}`, //
},
{
title: '预算量',
dataIndex: 'budget',
align: 'center',
customRender: ({ text }: { text: number }) => `${text ? text + unit.value : 0 + unit.value}`, //
},
{
title: '基准值',
dataIndex: 'referenceValue',
align: 'center',
customRender: ({ text }: { text: number }) => `${text ? text + unit.value : 0 + unit.value}`, //
},
{
title: '节能量',
dataIndex: 'energyConservation',
align: 'center',
customRender: ({ text }: { text: number }) => `${text ? text + unit.value : 0 + unit.value}`, //
},
{
title: '预算达成率',
align: 'center',
dataIndex: 'budgetAchievement',
},
{
title: '操作',
align: 'center',
key: 'action',
},
]);
@ -693,13 +714,14 @@
background: #ffffff;
box-shadow: 0px 2px 20px rgb(69 123 234 / 20%);
border-radius: 8px;
padding: 16px;
}
.pillarChart {
width: calc(80% - 12px);
background: #ffffff;
box-shadow: 0px 2px 20px rgb(69 123 234 / 20%);
border-radius: 8px;
padding: 5px;
padding: 16px;
}
}
.tablePart {

28
hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/index.vue

@ -103,7 +103,7 @@
});
} else if (key === '5') {
tabId.value = 7;
energyType.value = 'CARBON_EMISSIONS';
energyType.value = 'HEAT_SUPPLY';
energyTypeName.value = '供热量';
nextTick(() => {
if (carbonEmissionsRef.value) {
@ -113,7 +113,7 @@
});
} else if (key === '6') {
tabId.value = 8;
energyType.value = 'HEAT_SUPPLY';
energyType.value = 'CARBON_EMISSIONS';
energyTypeName.value = '碳排量';
nextTick(() => {
if (provideHotRef.value) {
@ -124,3 +124,27 @@
}
};
</script>
<style scoped lang="less">
:deep(.ant-tabs-ink-bar) {
height: 3px !important;
border-radius: 2px !important;
background: rgba(67, 136, 251, 1);
}
//table
:deep(.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn) {
font-size: 14px !important;
font-weight: bolb !important;
color: #333333 !important;
}
:deep(.ant-tabs-tab-btn) {
font-size: 14px !important;
color: #666666 !important;
}
:deep(.ant-tabs-content) {
height: 100%;
}
:deep(.ant-tabs-tabpane) {
height: 100%;
}
</style>

Loading…
Cancel
Save