zhaohy 4 months ago
parent
commit
c1aa2483ed
  1. 10
      hx-ai-intelligent/src/api/carbonEmissionFactorLibrary.ts
  2. 20
      hx-ai-intelligent/src/router/carbonEmissionManage.ts
  3. 17
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionFactorLibrary/index.vue
  4. 306
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/carbonEmissions/index copy.vue
  5. 203
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/energyConsumption/index.vue
  6. 110
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/quickCalculation/index.vue
  7. 283
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/config.ts
  8. 115
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/index.vue
  9. 45
      hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/mock.ts
  10. 11
      hx-ai-intelligent/src/view/organizationManage/departmentManage/index.vue

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

@ -9,11 +9,11 @@ export enum carbonEmissionFactorLibrary {
creat = '/carbon-smart/api/carbon/emission/type/creatOrUpdate', creat = '/carbon-smart/api/carbon/emission/type/creatOrUpdate',
delTreeNode = '/carbon-smart/api/carbon/emission/type/del', delTreeNode = '/carbon-smart/api/carbon/emission/type/del',
// 单位管理 // 单位管理
dictionaryUnitManagement = '/carbon-smart/api/carbon/emission/factor/dictionaryUnitManagement', dictionaryUnitManagement = '/carbon-smart/client/dict/dictionaryUnitManagement',
findOutermost = '/carbon-smart/api/carbon/emission/factor/findOutermost', findOutermost = '/carbon-smart/client/dict/findOutermost',
createDictionary = '/carbon-smart/api/carbon/emission/factor/createDictionary', createDictionary = '/carbon-smart/client/dict/createDictionary',
updateDictionary = '/carbon-smart/api/carbon/emission/factor/updateDictionary', updateDictionary = '/carbon-smart/client/dict/updateDictionary',
delDictionary = '/carbon-smart/api/carbon/emission/factor/delDictionary', delDictionary = '/carbon-smart/client/dict/delDictionary',
} }
// 碳排管理-碳排统计接口 // 碳排管理-碳排统计接口
export enum energyConsumption { export enum energyConsumption {

20
hx-ai-intelligent/src/router/carbonEmissionManage.ts

@ -45,6 +45,26 @@ const equipment = {
}, },
], ],
}, },
{
path: 'carbonInventoryCheck',
name: 'CarbonInventoryCheck',
meta: { title: '碳盘查', hideChildren: true, icon: 'tanpaiguanli' },
component: Base,
redirect: { name: 'CarbonInventoryCheckIndex' },
children: [
{
path: 'index',
name: 'CarbonInventoryCheckIndex',
// component: () => import('/nerv-lib/saas/view/menuManage/index.vue'),
component: () => import('/@/view/carbonEmissionManage/carbonInventoryCheck/index.vue'),
meta: {
title: '碳盘查',
keepAlive: true,
// backApi: [],
},
},
],
},
], ],
}; };
export default equipment; export default equipment;

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

@ -707,16 +707,17 @@
{ {
field: 'emissionProcess', field: 'emissionProcess',
label: '排放环节', label: '排放环节',
component: 'NsSelect', component: 'NsInput',
componentProps: { componentProps: {
allowClear: true, // allowClear: true,
placeholder: '请选择排放环节', placeholder: '请选择排放环节',
options: [ maxLength: 30,
{ // options: [
label: '消费环节', // {
value: 0, // label: '',
} // value: 0,
], // }
// ],
}, },
}, },
{ {

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

@ -0,0 +1,306 @@
<template>
<div>
<!-- <a-table
:columns="column"
:data-source="data"
bordered
:pagination="false"
:scroll="{ x: 2000 }">
<template #title>
<a-date-picker v-model:value="selectYear" picker="year" @change="changeYearData" valueFormat="YYYY" />
</template>
</a-table> -->
<ns-view-list-table v-bind="tableConfig" :model="data" ref="mainRef" />
<!-- <a-pagination
:current="queryParams.pageNum"
:total="total"
:page-size="queryParams.pageSize"
style="display: flex;justify-content: center;margin-top: 16px;"
:show-size-changer="true"
:show-quick-jumper="true"
@change="onChange" /> -->
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { http } from '/nerv-lib/util/http';
import { Pagination } from 'ant-design-vue';
import dayjs, { Dayjs } from 'dayjs';
import { carbonEmission } from '/@/api/carbonEmissionFactorLibrary';
defineOptions({
energyType: 'CarbonEmissions', // name
components: {
'a-pagination': Pagination,
},
});
const orgId = ref('');
const result = JSON.parse(sessionStorage.getItem('ORGID')!);
orgId.value = result;
const fetch = (api, params = { orgId } ) => {
return http.post(api, params);
};
const data = ref([]);
const selectYear = ref<Dayjs>(dayjs( new Date().getFullYear().toString()));
const total = ref<number>()
const queryParams = ref({
pageNum: 1,
pageSize: 10,
year: selectYear.value.format('YYYY'),
orgId: orgId.value
})
//
// const changeYearData = () => {
// queryParams.value.year = selectYear.value
// getTableList()
// }
//
const mainRef = ref();
const column: TableColumnsType [] = [
{
title: '排放类型',
dataIndex: 'cnValue',
customCell: (record, rowIndex) => {
if (rowIndex == undefined) {
return {
rowSpan: 0,
colSpan: 0,
};
}
const rowSpan = getRowSpan('cnValue', record, data.value);
if (rowIndex != 0 && data.value[rowIndex - 1].name == record.name) {
return {
rowSpan: 0,
colSpan: 0,
};
}
return {
rowSpan: rowSpan,
};
},
},
{
title: '能源种类',
dataIndex: 'energyType',
},
{
title: '计量单位',
dataIndex: 'unit',
},
{
title: '加权平均',
dataIndex: 'averageFactorValue',
},
{
title: '全年',
dataIndex: 'carbonYearly',
},
{
title: '1月',
dataIndex: 'jan',
},
{
title: '2月',
dataIndex: 'feb',
},
{
title: '3月',
dataIndex: 'mar',
},
{
title: '4月',
dataIndex: 'apr',
},
{
title: '5月',
dataIndex: 'may',
},
{
title: '6月',
dataIndex: 'jun',
},
{
title: '7月',
dataIndex: 'jul',
},
{
title: '8月',
dataIndex: 'aug',
},
{
title: '9月',
dataIndex: 'sep',
},
{
title: '10月',
dataIndex: 'oct',
},
{
title: '11月',
dataIndex: 'nov',
},
{
title: '12月',
dataIndex: 'dec',
},
];
const year = ref(selectYear.value.format('YYYY'))
const tableConfig = ref({
title: '碳排统计',
api: carbonEmission.carbonEmissionStatistics,
params: {
orgId,
year
},
columns: [
{
title: '排放类型',
dataIndex: 'cnValue',
customCell: (record, rowIndex) => {
if (rowIndex == undefined) {
return {
rowSpan: 0,
colSpan: 0,
};
}
const rowSpan = getRowSpan('cnValue', record, data.value);
if (rowIndex != 0 && data.value[rowIndex - 1].name == record.name) {
return {
rowSpan: 0,
colSpan: 0,
};
}
return {
rowSpan: rowSpan,
};
},
},
{
title: '能源种类',
dataIndex: 'energyType',
},
{
title: '计量单位',
dataIndex: 'unit',
},
{
title: '加权平均',
dataIndex: 'averageFactorValue',
},
{
title: '全年',
dataIndex: 'carbonYearly',
},
{
title: '1月',
dataIndex: 'jan',
},
{
title: '2月',
dataIndex: 'feb',
},
{
title: '3月',
dataIndex: 'mar',
},
{
title: '4月',
dataIndex: 'apr',
},
{
title: '5月',
dataIndex: 'may',
},
{
title: '6月',
dataIndex: 'jun',
},
{
title: '7月',
dataIndex: 'jul',
},
{
title: '8月',
dataIndex: 'aug',
},
{
title: '9月',
dataIndex: 'sep',
},
{
title: '10月',
dataIndex: 'oct',
},
{
title: '11月',
dataIndex: 'nov',
},
{
title: '12月',
dataIndex: 'dec',
},
],
formConfig: {
schemas: [
{
field: 'year',
label: '年份',
component: 'NsDatePicker',
componentProps: {
picker: 'year',
valueFormat: 'YYYY',
defaultValue: selectYear.value.format('YYYY'),
},
},
],
params: {},
},
rowKey: 'id',
});
//
const getRowSpan = (dataIndex: string, record: any, data: any, dependents: string[] = []) => {
let rowSpan = 1;
for (let i = data.indexOf(record) + 1; i < data.length; i++) {
let shouldMerge = true;
for (const dependent of dependents) {
if (data[i][dependent] !== record[dependent]) {
shouldMerge = false;
break;
}
}
if (shouldMerge && data[i][dataIndex] === record[dataIndex]) {
rowSpan++;
} else {
break;
}
}
return rowSpan;
};
//
// const getTableList = () => {
// fetch(carbonEmission.carbonEmissionStatistics , queryParams.value).then((res) => {
// data.value = res.data.records
// total.value = res.data.total
// });
// };
//
// const onChange = (pageNumber: number,size: number) => {
// queryParams.value.pageNum = pageNumber;
// queryParams.value.pageSize = size;
// getTableList()
// };
</script>
<style scoped lang="less">
::v-deep .ant-table-title{
display: flex;
}
::v-deep .ant-table-container{
padding: 0px 16px;
}
</style>
<style scoped>
th.column-money,
td.column-money {
text-align: right !important;
}
</style>

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

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<a-table <!-- <a-table
:columns="tableColumns" :columns="tableColumns"
:data-source="data" :data-source="data"
bordered bordered
@ -26,15 +26,16 @@
<a-button type="primary">凭证下载</a-button> <a-button type="primary">凭证下载</a-button>
</div> </div>
</template> </template>
</a-table> </a-table> -->
<a-pagination <ns-view-list-table v-bind="tableConfig" :model="data" ref="mainRef" :scroll="{ x: 1500}" />
<!-- <a-pagination
:current="queryParams.pageNum" :current="queryParams.pageNum"
:total="total" :total="total"
:page-size="queryParams.pageSize" :page-size="queryParams.pageSize"
style="display: flex;justify-content: center;margin-top: 16px;" style="display: flex;justify-content: center;margin-top: 16px;"
:show-size-changer="true" :show-size-changer="true"
:show-quick-jumper="true" :show-quick-jumper="true"
@change="onChange" /> @change="onChange" /> -->
<!-- 新增数据库数据 --> <!-- 新增数据库数据 -->
<a-drawer <a-drawer
:width="500" :width="500"
@ -158,6 +159,7 @@
import { Pagination,message,Modal } from 'ant-design-vue'; import { Pagination,message,Modal } from 'ant-design-vue';
import { InboxOutlined } from '@ant-design/icons-vue'; import { InboxOutlined } from '@ant-design/icons-vue';
import type { CascaderProps,TreeSelectProps,UploadChangeParam } from 'ant-design-vue'; import type { CascaderProps,TreeSelectProps,UploadChangeParam } from 'ant-design-vue';
import { NsMessage } from '/nerv-lib/component';
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { Dayjs } from 'dayjs';
import { http } from '/nerv-lib/util/http'; import { http } from '/nerv-lib/util/http';
import { tableColumns } from '../config'; import { tableColumns } from '../config';
@ -229,19 +231,182 @@
queryParams.value.year = selectYear.value queryParams.value.year = selectYear.value
getTableList() getTableList()
} }
const mainRef = ref();
const year = selectYear.value.format('YYYY')
const tableConfig = ref({
title: '能耗统计',
api: energyConsumption.pageList,
params: queryParams.value,
headerActions: [
{
label: '新增',
name: 'userAdd',
type: 'primary',
handle: () => {
getDictList()
visible.value = true
},
},
{
label: '导入',
type: 'primary',
name: 'userImport',
handle: () => {},
},
{
label: '导出',
type: 'primary',
name: 'userExports',
},
{
label: '模板下载',
type: 'primary',
name: 'userExports',
},
{
label: '上传凭证',
type: 'primary',
handle: () => {
openUpload.value = true;
},
},
{
label: '凭证下载',
type: 'primary',
name: 'userExports',
},
],
columns: [
{
title: '序号',
customRender: (text: any) => {
return text.index + 1;
},
},
{
title: '能源种类',
dataIndex: 'energyType',
},
{
title: '计量单位',
className: 'unit',
dataIndex: 'unit',
},
{
title: '全年',
dataIndex: 'yearly',
},
{
title: '1月',
dataIndex: 'jan',
// customRender: ({ text, record }) => ({
// children: text,
// attrs: {
// style: record.janFlag === 1 ? 'color: red' : 'color: blue'
// }
// })
},
{
title: '2月',
dataIndex: 'feb',
},
{
title: '3月',
dataIndex: 'mar',
},
{
title: '4月',
dataIndex: 'apr',
},
{
title: '5月',
dataIndex: 'may',
},
{
title: '6月',
dataIndex: 'jun',
},
{
title: '7月',
dataIndex: 'jul',
},
{
title: '8月',
dataIndex: 'aug',
},
{
title: '9月',
dataIndex: 'sep',
},
{
title: '10月',
dataIndex: 'oct',
},
{
title: '11月',
dataIndex: 'nov',
},
{
title: '12月',
dataIndex: 'dec',
},
],
columnActions: {
title: '操作',
actions: [
{
label: '编辑',
name: 'userEdit',
handle: (record: any) => {
getDictList()
visible.value = true
fetch(energyConsumption.findById , {id : record.id }).then((res) => {
if(res.data.unit){
res.data.unit = res.data.unit.split(',')
}
formState.value = res.data
});
},
},
{
label: '删除',
name: 'userDelete',
dynamicParams: { id: 'id' },
confirm: true,
isReload: true,
api: energyConsumption.del,
},
],
},
formConfig: {
schemas: [
{
field: 'year',
label: '年份',
component: 'NsDatePicker',
componentProps: {
picker: 'year',
valueFormat: 'YYYY',
defaultValue: selectYear.value.format('YYYY'),
},
},
],
params: {},
},
rowKey: 'id',
});
// //
const getTableList = () => { const getTableList = () => {
fetch(energyConsumption.pageList , queryParams.value).then((res) => { fetch(energyConsumption.pageList , queryParams.value).then((res) => {
data.value = res.data.records data.value = res.data.records
total.value = res.data.total
}); });
}; };
getTableList()
// //
const onChange = (pageNumber: number,size: number) => { const onChange = (pageNumber: number,size: number) => {
queryParams.value.pageNum = pageNumber; queryParams.value.pageNum = pageNumber;
queryParams.value.pageSize = size; queryParams.value.pageSize = size;
getTableList() mainRef.value?.nsTableRef.reload();
}; };
// //
const changeRadio = (e) => { const changeRadio = (e) => {
@ -263,23 +428,20 @@
if(formState.value.id){ if(formState.value.id){
fetch(energyConsumption.update , formState.value).then((res) => { fetch(energyConsumption.update , formState.value).then((res) => {
visible.value = false visible.value = false
formState.value = {}
message.success('操作成功!'); message.success('操作成功!');
getTableList() mainRef.value?.nsTableRef.reload();
}); });
}else{ }else{
fetch(energyConsumption.creat , formState.value).then((res) => { fetch(energyConsumption.creat , formState.value).then((res) => {
if(res.data === '新增数据已存在'){ if(res.data === '新增数据已存在'){
visible.value = false visible.value = false
queryParams.value = formState.value NsMessage.warning(res.data);
queryParams.value.pageNum = 1,
queryParams.value.pageSize = 10,
queryParams.value.orgId = orgId.value,
queryParams.value.year = selectYear.value.format('YYYY')
getTableList()
}else{ }else{
visible.value = false visible.value = false
formState.value = {}
message.success('操作成功!'); message.success('操作成功!');
getTableList() mainRef.value?.nsTableRef.reload();
} }
}); });
} }
@ -298,10 +460,10 @@
fetch(carbonEmissionFactorLibrary.dictionaryUnitManagement, { grp: 'MEASUREMENT_UNIT'}).then((res) => { fetch(carbonEmissionFactorLibrary.dictionaryUnitManagement, { grp: 'MEASUREMENT_UNIT'}).then((res) => {
measurementUnit.value = res.data measurementUnit.value = res.data
measurementUnit.value = measurementUnit.value.map(item => ({ measurementUnit.value = measurementUnit.value.map(item => ({
value: item.cnValue, value: item.id,
label: item.cnValue, label: item.cnValue,
children: item.children ? item.children.map(child => ({ children: item.children ? item.children.map(child => ({
value: child.cnValue, value: child.id,
label: child.cnValue label: child.cnValue
})) : [] })) : []
})); }));
@ -310,10 +472,10 @@
fetch(group.queryDeviceGroupTree, { energyType: 'ELECTRICITY_USAGE',orgId: orgId.value }).then((res) => { fetch(group.queryDeviceGroupTree, { energyType: 'ELECTRICITY_USAGE',orgId: orgId.value }).then((res) => {
treeData.value = res.data treeData.value = res.data
treeData.value = treeData.value.map(item => ({ treeData.value = treeData.value.map(item => ({
value: item.pointName, value: item.id,
label: item.pointName, label: item.pointName,
children: item.children ? item.children.map(child => ({ children: item.children ? item.children.map(child => ({
value: child.pointName, value: child.id,
label: child.pointName label: child.pointName
})) : [] })) : []
})); }));
@ -346,7 +508,7 @@
onOk() { onOk() {
fetch(energyConsumption.del , {id : record.id }).then((res) => { fetch(energyConsumption.del , {id : record.id }).then((res) => {
message.success('操作成功!'); message.success('操作成功!');
getTableList() mainRef.value?.nsTableRef.reload();
}); });
}, },
onCancel() { onCancel() {
@ -357,6 +519,7 @@
// //
const onClose = () => { const onClose = () => {
visible.value = false; visible.value = false;
formState.value = {}
formRef.value.resetFields(); formRef.value.resetFields();
}; };
// //

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

@ -39,7 +39,7 @@
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<a-table <!-- <a-table
:columns="columns" :columns="columns"
:data-source="tableData" :data-source="tableData"
bordered bordered
@ -59,7 +59,8 @@
<a-button type="primary" @click="addNewData">新增</a-button> <a-button type="primary" @click="addNewData">新增</a-button>
</div> </div>
</template> </template>
</a-table> </a-table> -->
<ns-view-list-table v-bind="tableConfig" :model="tableData" ref="mainRef" />
<a-pagination <a-pagination
:current="queryParams.pageNum" :current="queryParams.pageNum"
:total="total" :total="total"
@ -139,6 +140,7 @@
const fetch = (api, params = { orgId } ) => { const fetch = (api, params = { orgId } ) => {
return http.post(api, params); return http.post(api, params);
}; };
const mainRef = ref();
// //
const x = 3; const x = 3;
const y = 2; const y = 2;
@ -209,12 +211,13 @@
autoExpandParent.value = false; autoExpandParent.value = false;
}; };
// //
const energyType = ref()
const onSelect = (selectedKey: string[], info: any) => { const onSelect = (selectedKey: string[], info: any) => {
selectedKeys.value = selectedKey; selectedKeys.value = selectedKey;
if(info.selected){ if(info.selected){
queryParams.value.energyType = info.node.id energyType.value = info.node.id
statsId.value = info.node.id statsId.value = info.node.id
getTableList() mainRef.value?.nsTableRef.reload();
} }
}; };
@ -239,10 +242,9 @@
const getTreeData = () => { const getTreeData = () => {
fetch(quickCalculation.carbonQuickTree).then((res) => { fetch(quickCalculation.carbonQuickTree).then((res) => {
gData.value = res.data gData.value = res.data
debugger energyType.value = gData.value[0].children[0].id
queryParams.value.energyType = gData.value[0].children[0].id
statsId.value = gData.value[0].children[0].id statsId.value = gData.value[0].children[0].id
getTableList() mainRef.value?.nsTableRef.reload();
}); });
}; };
getTreeData() getTreeData()
@ -254,6 +256,90 @@
orgId: orgId.value orgId: orgId.value
}) })
const tableData = ref([]); const tableData = ref([]);
const tableConfig = ref({
title: '排放因子库',
api: quickCalculation.queryCarbonEmissionPage,
params: {
orgId,
energyType
},
headerActions: [
{
label: '新增',
name: 'userAdd',
type: 'primary',
handle: () => {
visible.value = true
getNewTable()
},
},
],
columns: [
{
title: '序号',
customRender: (text: any) => {
return text.index + 1;
},
},
{
title: '因子值',
dataIndex: 'emissionFactors',
},
{
title: '计量单位',
className: 'carbonEmissionSuffix',
dataIndex: 'carbonEmissionSuffix',
},
{
title: '更新时间',
className: 'updateTime',
dataIndex: 'updateTime',
},
{
title: '启用时间',
className: 'startTime',
dataIndex: 'startTime',
},
{
title: '结束时间',
className: 'endTime',
dataIndex: 'endTime',
},
{
title: '数据来源',
className: 'dataSources',
dataIndex: 'dataSources',
},
],
columnActions: {
title: '操作',
actions: [
{
label: '编辑',
name: 'userEdit',
handle: (record: any) => {
selectedRowKeys.value = [record.carbonId];
formState.value.id = record.id
formState.value.emissionFactors = record.emissionFactors
formState.value.dateRange = [record.startTime, record.endTime];
formState.value.carbonId = record.carbonId
visible.value = true
getNewTable()
},
},
{
label: '删除',
name: 'userDelete',
dynamicParams: { id: 'id' },
confirm: true,
isReload: true,
api: quickCalculation.del,
},
],
},
rowKey: 'id',
});
// //
const getTableList = () => { const getTableList = () => {
fetch(quickCalculation.queryCarbonEmissionPage,queryParams.value).then((res) => { fetch(quickCalculation.queryCarbonEmissionPage,queryParams.value).then((res) => {
@ -265,7 +351,7 @@
const onChange = (pageNumber: number,size: number) => { const onChange = (pageNumber: number,size: number) => {
queryParams.value.pageNum = pageNumber; queryParams.value.pageNum = pageNumber;
queryParams.value.pageSize = size; queryParams.value.pageSize = size;
getTableList() mainRef.value?.nsTableRef.reload();
}; };
// / // /
const formRef = ref(); const formRef = ref();
@ -321,14 +407,13 @@
formState.value.startTime = formState.value.dateRange[0] formState.value.startTime = formState.value.dateRange[0]
formState.value.endTime = formState.value.dateRange[1] formState.value.endTime = formState.value.dateRange[1]
console.log('values', formState, toRaw(formState)); console.log('values', formState, toRaw(formState));
debugger
if(formState.value.id){ if(formState.value.id){
fetch(quickCalculation.update,formState.value).then((res) => { fetch(quickCalculation.update,formState.value).then((res) => {
visible.value = false visible.value = false
selectedRowKeys.value = []; selectedRowKeys.value = [];
formState.value = {} formState.value = {}
formRef.value.resetFields(); formRef.value.resetFields();
getTableList() mainRef.value?.nsTableRef.reload();
}); });
}else{ }else{
fetch(quickCalculation.creat,formState.value).then((res) => { fetch(quickCalculation.creat,formState.value).then((res) => {
@ -336,7 +421,7 @@
selectedRowKeys.value = []; selectedRowKeys.value = [];
formState.value = {} formState.value = {}
formRef.value.resetFields(); formRef.value.resetFields();
getTableList() mainRef.value?.nsTableRef.reload();
}); });
} }
}) })
@ -408,6 +493,9 @@
::v-deep .ant-table-container{ ::v-deep .ant-table-container{
padding: 0px 16px; padding: 0px 16px;
} }
:deep(.ns-table-main) {
margin-top: unset !important;
}
.top { .top {
overflow: auto; overflow: auto;
} }

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

@ -0,0 +1,283 @@
import { ref } from 'vue';
import { http } from '/nerv-lib/util';
import { origanizemanage } from '/@/api/origanizemanage';
import { carbonEmissionFactorLibrary } from '/@/api/carbonEmissionFactorLibrary';
export const formConfig = (disabled) => {
return ref([
{
field: 'fields',
component: 'NsChildForm',
componentProps: {
schemas: [
{
label: '排放源',
field: 'emissionSources',
component: 'NsInput',
componentProps: {
placeholder: '请输入排放源',
maxLength: 20,
},
rules: [
{
required: true,
message: '请输入排放源',
},
],
},
{
field: 'emissionType',
label: '排放分类',
component: 'NsCascader',
fieldMap: ['emissionType'],
componentProps: {
placeholder: '请选择排放分类',
api: carbonEmissionFactorLibrary.getCarbonFactorTree,
fieldNames: { label: 'emissionName', value: 'id' },
showSearch: true,
},
rules: [
{
required: true,
message: '请选择排放分类',
},
],
},
{
field: 'emissionGas',
label: '排放气体',
component: 'NsSelect',
componentProps: {
allowClear: true,
placeholder: '请选择排放气体',
options: [
{
label: 'CO2',
value: 'CO2',
},
{
label: 'CO2e',
value: 'CO2e',
},
{
label: 'SF6',
value:'SF6',
},
{
label: 'CH4',
value: 'CH4',
},
{
label: 'PFCs',
value: 'PFCs',
},
{
label: 'HFCs',
value: 'HFCs',
},
],
},
rules: [
{
required: true,
message: '请选择排放气体',
},
],
},
// {
// field: 'emissionProcess',
// label: '排放环节',
// component: 'NsSelectApi',
// componentProps: {
// api: carbonEmissionFactorLibrary.getEmissionProcess,
// params: {
// emissionType: sessionStorage.getItem('checkedTreeNode'),
// },
// resultField: 'data',
// labelField: 'emissionProcess',
// valueField: 'emissionProcess',
// immediate: true,
// autoSelectFirst: false,
// filterOption:false,
// showSearch:true,
// autoClearSearchValue:false
// },
// },
{
label: '排放环节',
field: 'emissionProcess',
component: 'NsInput',
componentProps: {
placeholder: '请输入排放环节',
maxLength: 20,
},
rules: [
{
required: true,
message: '请输入排放环节',
},
],
},
{
label: '排放因子',
field: 'emissionFactors',
component: 'NsInputNumber',
componentProps: {
placeholder: '请输入排放因子值',
maxLength: 20,
},
rules: [
{
required: true,
message: '请输入排放因子值',
trigger: 'change',
},
],
},
{
field: 'carbonEmissionPrefix',
label: '碳排前缀',
component: 'NsSelect',
componentProps: {
disabled: true,
allowClear: true,
defaultValue: 't',
placeholder: '请选择碳排前缀',
options: [
{
label: 'g',
value: 'g',
},
{
label: 'kg',
value: 'kg',
},
{
label: 't',
value: 't',
},
],
},
rules: [
{
required: true,
message: '请选择碳排前缀',
},
],
},
{
label: '碳排后缀',
field: 'carbonEmissionSuffix',
component: 'NsInput',
componentProps: {
placeholder: '请输入碳排后缀',
maxLength: 20,
},
rules: [
{
required: true,
message: '请输入碳排后缀',
},
],
},
{
label: '已引用数',
field: 'numberOfReferences',
component: 'NsInput',
componentProps: {
defaultValue: 10,
disabled: true,
maxLength: 20,
},
},
{
label: '参考文献',
field: 'reference',
component: 'NsTextarea',
componentProps: {
placeholder: '请输入参考文献',
maxLength: 20,
},
},
],
},
},
]);
};
const options = ref([]);
const getUserPerList = (transform, params = {}) => {
return http.post(origanizemanage.queryUserPerList, { ...params }).then((res) => {
return res.data?.map((item) => {
item = { ...item, ...transform(item) };
return item;
});
});
};
export const formConfig2 = (casData: any) => {
return ref([
{
field: 'information',
component: 'NsCascader',
componentProps: {
placeholder: '请选择',
displayRender: ({ labels, selectedOptions }: any) => {
console.log(labels, selectedOptions);
casData.value = selectedOptions.map(({ label, value }) => {
return { label, value };
});
return labels.join('/');
},
loadData: (selectedOptions, options) => {
console.log(selectedOptions, options, 'selectedOptions, options');
const targetOption = selectedOptions[selectedOptions.length - 1];
let transForm, params;
// load options lazily
if (!selectedOptions.length) {
transForm = (data) => {
data['label'] = data.orgName;
data['value'] = data.orgId;
data['isLeaf'] = false;
data['level'] = 1;
return data;
};
getUserPerList(transForm).then((res) => {
options.value = [...res];
});
}
const id = targetOption?.value;
const level = targetOption?.level;
if (targetOption) {
targetOption.loading = true;
}
if (level === 1) {
transForm = (data) => {
data['label'] = data.deptName;
data['value'] = data.deptId;
data['isLeaf'] = false;
data['level'] = 2;
return data;
};
params = { orgId: id };
} else if (level === 2) {
transForm = (data) => {
data['label'] = data.roleName;
data['value'] = data.roleId;
data['level'] = 3;
return data;
};
params = { deptId: id };
}
if (targetOption) {
getUserPerList(transForm, { ...params }).then((res) => {
targetOption.loading = false;
targetOption.children = [...res];
});
}
},
},
},
]);
};

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

@ -0,0 +1,115 @@
<template>
<ns-view-list-table v-bind="tableConfig" :model="data" ref="mainRef" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { http } from '/nerv-lib/util/http';
import { carbonEmissionFactorLibrary } from '/@/api/carbonEmissionFactorLibrary';
defineOptions({ name: 'CarbonInventoryCheck' });
const orgId = ref('');
const result = JSON.parse(sessionStorage.getItem('ORGID')!);
orgId.value = result;
const fetch = (api, params = { orgId }) => {
return http.post(api, params);
};
const tableConfig = ref({
title: '数据库',
api: carbonEmissionFactorLibrary.getTableList,
params: {
orgId
},
headerActions: [
{
label: '新增',
name: 'userAdd',
type: 'primary',
handle: () => {
},
},
],
columns: [
{
title: '序号',
customRender: (text: any) => {
return text.index + 1;
},
},
{
title: '企业名称',
dataIndex: 'emissionSources',
},
{
title: '报告名称',
dataIndex: 'emissionTypeColumn',
},
{
title: '报告年度',
dataIndex: 'emissionGas',
},
{
title: '适用标准',
dataIndex: 'emissionProcess',
},
{
title: '更新人',
dataIndex: 'emissionFactors',
},
{
title: '更新时间',
dataIndex: 'emissionFactorUnits',
},
],
columnActions: {
title: '操作',
actions: [
{
label: '编辑',
name: 'userEdit',
handle: (record: any) => {
},
},
{
label: '填报',
name: 'fillIn',
handle: (record: any) => {
},
},
{
label: '下载',
name: 'download',
handle: (record: any) => {
},
},
{
label: '删除',
name: 'userDelete',
dynamicParams: { ids: 'id[]' },
confirm: true,
isReload: true,
api: carbonEmissionFactorLibrary.del,
},
],
},
formConfig: {
schemas: [
{
field: 'emissionSources',
label: '报告名称',
component: 'NsInput',
componentProps: {
placeholder: '请输入报告名称',
maxLength: 30,
},
},
],
params: {},
},
rowKey: 'id',
});
</script>
<style lang="less" scoped>
</style>

45
hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/mock.ts

@ -0,0 +1,45 @@
import { ref } from 'vue';
import { origanizemanage } from '/@/api/origanizemanage';
import { http } from '/nerv-lib/saas';
export const mockData = ref([
{
id: 3,
zhanghao: 'axb',
name: '张三',
sex: '男',
phone: '123456789',
email: '1234567889',
relation: '1',
role: '1',
status: '1',
},
]);
export const mockData2 = ref([
{
information: '铁路局1/产品部1/产品总监1',
},
]);
export const treeData = ref([
{
title: '铁路总局',
key: '0-0',
children: [
{ title: '济阳站', key: '0-0-0' },
{ title: '临沂站', key: '0-0-1' },
],
},
]);
export const treeData2 = [
{
title: '全部',
key: '0-0',
children: [
{ title: '产品部', key: '0-0-0' },
{ title: '运维部', key: '0-0-1' },
],
},
];

11
hx-ai-intelligent/src/view/organizationManage/departmentManage/index.vue

@ -495,11 +495,13 @@
formData.value = {}; formData.value = {};
opMap.type = ''; opMap.type = '';
opMap.fuc = ''; opMap.fuc = '';
disabled.value = true;
}; };
const clearRoleData = () => { const clearRoleData = () => {
roleFormData.value = {}; roleFormData.value = {};
opMap.type = ''; opMap.type = '';
opMap.fuc = ''; opMap.fuc = '';
roleDisabled.value = true;
}; };
// //
@ -623,7 +625,8 @@
// tab // tab
roleActiveKey.value = 1; roleActiveKey.value = 1;
//
clearDeptData();
const { selected } = info; const { selected } = info;
if (!selectedKeys?.length) return; if (!selectedKeys?.length) return;
@ -633,6 +636,7 @@
// //
if (!selectRef.value.hasOwnProperty('own') && !selectRef.value.hasOwnProperty('orgInfo')) { if (!selectRef.value.hasOwnProperty('own') && !selectRef.value.hasOwnProperty('orgInfo')) {
// //
formRef.value?.reset();
formData.value = cloneDeep(info.node.dataRef.deptInfo); formData.value = cloneDeep(info.node.dataRef.deptInfo);
} else { } else {
activeKey.value = 1; activeKey.value = 1;
@ -672,10 +676,13 @@
const SelectUserTree = (selectedKeys: any, info: any) => { const SelectUserTree = (selectedKeys: any, info: any) => {
const { selected } = info; const { selected } = info;
// roleDisabled.value = !selected; // roleDisabled.value = !selected;
//
clearRoleData();
if (!selectedKeys?.length) return; if (!selectedKeys?.length) return;
roleTreeSelectedKeys.value = [info.node.key]; roleTreeSelectedKeys.value = [info.node.key];
selectRoleRef.value = info.node.dataRef; selectRoleRef.value = info.node.dataRef;
formRoleRef.value?.reset();
roleFormData.value = cloneDeep(info.node.dataRef); roleFormData.value = cloneDeep(info.node.dataRef);
roleCheckedKeys.value = []; roleCheckedKeys.value = [];
if (selectRoleRef.value?.proleId) { if (selectRoleRef.value?.proleId) {

Loading…
Cancel
Save