@@ -4,7 +4,7 @@
< div class = "top" >
< a-form style = "width: 100%;margin: 0 auto;" >
< div class = "ns-form-title" >
< div class = "title" > 2024 年济阳站碳盘查报告 < / div >
< div class = "title" > { { props . year } } 年济阳站碳盘查报告 < / div >
< div class = "standard" >
< span > 适用标准 : ISO 14064 - 1 < / span >
< a-button type = "primary" style = "margin-left: 12px;" @click ="openCategoryConfig" > 类别配置 < / a -button >
@@ -54,7 +54,7 @@
< div class = "right" >
< div style = "display:flex;" >
< 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 style = "display: flex;" v-if = "fillInPage" >
< div class = "mainLeft" >
@@ -95,6 +95,12 @@
< a-button type = "primary" @click ="downLoadVoucher" > 凭证 < / a -button >
< / template >
< 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'" >
< span >
< a @click ="edit(record)" > 编辑 < / a >
@@ -249,41 +255,40 @@
>
< a-row >
< a-col :span = "12" >
< a-form-item ref = "name" label = "数据来源" name = "dateRange " >
< a-form-item ref = "name" label = "数据来源" name = "dataSources " >
< a-select
ref = "select"
v -model :value = "editFormState.dateRange "
@change ="handleChange "
v -model :value = "editFormState.dataSources "
@change ="changeSelect "
>
< a-select-option value = "jack " > Jack < / a-select-option >
< a-select-option value = "lucy " > Lucy < / a-select-option >
< a-select-option value = "1 " > 自行推估 < / a-select-option >
< a-select-option value = "2 " > 定期量测 < / a-select-option >
< a-select-option value = "3" > 自动测量 < / a-select-option >
< / a-select >
< / a-form-item >
< / a-col >
< a-col :span = "12" >
< a-form-item ref = "name" label = "消耗量" name = "emissionFactors " >
< ns-input v -model :value = "editFormState.emissionFactors " disabled / >
< a-form-item ref = "name" label = "消耗量" name = "consumption " >
< ns-input v -model :value = "editFormState.consumption " : disabled= "canEdit" / >
< / a-form-item >
< / a-col >
< / a-row >
< a-row v-if = "automatic" >
< a -col :span = "12" >
< a-form-item ref = "name" label = "采集节点" name = "collectionNode" >
< a-tree-select
v -model :value = "editFormState.collectionNode"
:tree-line = "true"
:tree-data = "collectingNodes"
>
< / a-tree-select >
< / a-form-item >
< / a-col >
< / a-row >
< a-row >
< a-col :span = "12" >
< a-form-item ref = "name" label = "采集节点 " name = "dateRange " >
< a-select
ref = "select"
v -model :value = "editFormState.dateRange"
@change ="handleChange"
>
< a-select-option value = "jack" > Jack < / a-select-option >
< a-select-option value = "lucy" > Lucy < / a-select-option >
< / a-select >
< / a-form-item >
< / a-col >
< / a-row >
< a-row >
< a-col :span = "12" >
< a-form-item ref = "name" label = "因子值" name = "emissionFactors" >
< ns-input v -model :value = "editFormState.emissionFactors" disabled / >
< a-form-item ref = "name" label = "因子值 " name = "factorId " >
< ns-input v -model :value = "editFormState.factorId" disabled / >
< / a-form-item >
< / a-col >
< a-col :span = "12" >
@@ -300,7 +305,7 @@
rowKey = "id"
: scroll = "{ y: 400 }"
style = "margin-bottom: 10px;"
: rowSelection = "{ selectedRowKeys: selectedRowKeys, onChange: onSelectionChange, type: 'radio' }"
: rowSelection = "{ selectedRowKeys: selectedRowKeysEdit , onChange: onSelectionChangeEdit , type: 'radio' }"
:pagination = "false" >
< / a-table >
< a-pagination
@@ -333,20 +338,32 @@
< / template >
< 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 { Pagination , Modal , message } from 'ant-design-vue' ;
import type { TreeProps , TableColumnsType , UploadChangeParam } from 'ant-design-vue' ;
import { EditOutlined , PlusCircleOutlined , MinusCircleOutlined , UploadOutlined } from '@ant-design/icons-vue' ;
import * as echarts from 'echarts' ;
import { columns , voucherColumns, drawerColumns } from '../config' ;
import { voucherColumns , drawerColumns } from '../config' ;
import { energyConsumption , carbonEmissionFactorLibrary , carbonInventoryCheck } from '/@/api/carbonEmissionFactorLibrary' ;
import { group } from '/@/api/deviceManage' ;
defineOptions ( {
energyType : 'fillInPage' , // 与页面路由name一致缓存才可生效
components : {
'a-pagination' : Pagination ,
} ,
} ) ;
// 父组件id和年份
const props = defineProps ( {
reportId : {
type : Number
} ,
year : {
type : String
}
} )
console . log ( props , 'xxy' ) ;
const orgId = ref ( '' ) ;
const result = JSON . parse ( sessionStorage . getItem ( 'ORGID' ) ! ) ;
orgId . value = result ;
@@ -440,16 +457,17 @@
const categoryId = ref ( )
const onSelectL = ( selectedKey : string [ ] , info : any ) => {
selectedKeysL . value = selectedKey ;
categoryId . value = info . node . i d
categoryId . value = info . node . conI d
formState . value . categoryId = categoryId . value
getEmissionSourceTree ( )
} ;
// 获取碳盘查报告树
const selectedIds = ref ( [ ] ) ;
const getReportTree = ( ) => {
fetch ( carbonInventoryCheck . getCategoryTree ) . then ( ( res ) => {
fetch ( carbonInventoryCheck . getCategoryTree , { reportId : props . reportId , orgId : orgId . value } ). then ( ( res ) => {
gData . value = res . data
if ( res . data . length > 0 ) {
categoryId . value = res . data [ 0 ] . i d
categoryId . value = res . data [ 0 ] . conI d
formState . value . categoryId = categoryId . value
selectedIds . value = getAllIds ( gData . value ) ;
}
@@ -460,29 +478,41 @@
const getAllIds = ( nodes : TreeNode [ ] ) : number [ ] => {
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 getTableId = ref ( )
const getEmissionSourceTree = ( ) => {
fetch ( carbonInventoryCheck . getInventoryTree , { categoryId : categoryId . value } ) . then ( ( res ) => {
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 ) => {
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 selectedKeysR = ref < string [ ] > ( [ '0-0' ] ) ;
@@ -550,7 +580,8 @@
const labelCol = { span : 5 } ;
const wrapperCol = { span : 19 } ;
const formState = ref ( {
orgId : orgId . value
orgId : orgId . value ,
year : props . year
} )
// 计量单位的变量
const measurementUnit = ref ( [ ] )
@@ -628,6 +659,7 @@
}
message . success ( '操作成功!' ) ;
getEmissionSourceTree ( ) ;
getPFYTableList ( res . data . id )
} ) ;
}
} )
@@ -635,6 +667,65 @@
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 ) => {
getDictData ( )
addTreeNodeVisible . value = true ;
@@ -734,6 +825,11 @@
} )
const newTableData = ref ( [ ] )
const total = ref < number > ( )
const selectedRowKeysEdit = ref ( [ ] ) ;
const onSelectionChangeEdit = ( selectedKeys , selectedRows ) => {
selectedRowKeysEdit . value = selectedKeys ;
editFormState . value . factorId = selectedKeys
} ;
const queryParams = ref ( {
pageNum : 1 ,
pageSize : 10 ,
@@ -744,8 +840,14 @@
pageNum : 1 ,
pageSize : 999
} )
const edit = ( ) => {
const edit = ( record ) => {
getDictList ( )
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
} ;
const getNewTable = ( ) => {
@@ -754,6 +856,32 @@
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 ) => {
if ( info . file . status !== 'uploading' ) {
console . log ( info . file , info . fileList ) ;
@@ -769,8 +897,30 @@
const headers = {
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 = ( ) => {
editData . value = false
editFormState . value = {
orgId : orgId . value ,
}
selectedRowKeysEdit . value = [ ]
canEdit . value = false
automatic . value = false
} ;
// 分页器
const onChange = ( pageNumber : number , size : number ) => {
@@ -1179,6 +1329,11 @@
chartInstance = echarts . init ( tplxChart . value ) ;
chartInstance . setOption ( option ) ;
} ;
// 点击返回
const emit = defineEmits ( [ 'change-data' ] )
const changeParentData = ( ) => {
emit ( 'change-data' , true , false ) ;
} ;
< / script >
< style lang = "less" scoped >