Merge branch 'temp' of http://123.60.103.97:3000/xuziqiang/SaaS-lib into temp
@@ -5,4 +5,5 @@ export enum energyAlarmApi {
|
||||
getCodeList = `${BASE_URL}/api/AlarmEnergyConsumptionLog/selectErrorCodeList `, //能碳告警 列表
|
||||
getSelectAlarmEnergyConsumptionLogStatusProcess = `${BASE_URL}/api/AlarmEnergyConsumptionLogStatusProcess/selectAlarmEnergyConsumptionLogStatusProcess`, //能碳告警 状态 没有创建工单log接口
|
||||
noCreatOrUpdateLog = `${BASE_URL}/api/AlarmEnergyConsumptionLogStatusProcess/creatOrUpdate`, //能碳告警 状态 没有创建工单 添加 修改状态log
|
||||
getEnergyGraph = `${BASE_URL}/energy/trigger/getEnergyGraph`, //能碳告警 状态 echarts图
|
||||
}
|
||||
|
||||
@@ -5,4 +5,5 @@ export enum equipmentAlarmApi {
|
||||
getCodeList = `${BASE_URL}/api/AlarmEquipmentLog/selectErrorCodeList`, //设备告警 列表
|
||||
getSelectAlarmEquipmentLogStatusProcess = `${BASE_URL}/api/AlarmEquipmentLogStatusProcess/selectAlarmEquipmentLogStatusProcess`, //设备告警 状态 没有创建工单log接口
|
||||
noCreatOrUpdateLog = `${BASE_URL}/api/AlarmEquipmentLogStatusProcess/creatOrUpdate`, //设备告警 状态 没有创建工单 添加 修改状态log
|
||||
getDeviceGraph = `${BASE_URL}/equipment/trigger/getDeviceGraph`, //设备告警 echats图
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ const prefix = '/carbon-smart/api';
|
||||
// 通风系统相关接口
|
||||
export enum ventilating {
|
||||
//传感器获取数据
|
||||
getSensorData = prefix + '/multiFuncSensorCtrl/getDeviceState',
|
||||
getSensorData = prefix + '/sensorCtrl/getMultiFuncSensorState',
|
||||
// 排风扇相关 =============================================
|
||||
// 获得排风扇系统的树形结构
|
||||
getTree1 = prefix + '/ventilatingFanCtrl/getCtrlPanelTree',
|
||||
|
||||
@@ -103,7 +103,7 @@ const equipmentControl = {
|
||||
{
|
||||
path: 'airConditionControlSystem',
|
||||
name: 'airConditionControlSystem',
|
||||
meta: { title: '空调系统群控', hideChildren: true, icon: 'shebeiqunkong' },
|
||||
meta: { title: '空调系统', hideChildren: true, icon: 'shebeiqunkong' },
|
||||
component: Base,
|
||||
redirect: { name: 'airConditionControlSystemIndex' },
|
||||
children: [
|
||||
@@ -112,13 +112,32 @@ const equipmentControl = {
|
||||
name: 'airConditionControlSystemIndex',
|
||||
component: () => import('/@/view/equipmentControl/airConditionControlSystem/index.vue'),
|
||||
meta: {
|
||||
title: '空调系统群控',
|
||||
title: '空调系统',
|
||||
keepAlive: false,
|
||||
// backApi: [],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
// {
|
||||
// path: 'waterSystem',
|
||||
// name: 'waterSystem',
|
||||
// meta: { title: '给排水系统', hideChildren: true, icon: 'shebeiqunkong' },
|
||||
// component: Base,
|
||||
// redirect: { name: 'waternControlSystemIndex' },
|
||||
// children: [
|
||||
// {
|
||||
// path: 'index',
|
||||
// name: 'waternControlSystemIndex',
|
||||
// component: () => import('/@/view/equipmentControl/waterSystem/index.vue'),
|
||||
// meta: {
|
||||
// title: '给排水系统',
|
||||
// keepAlive: false,
|
||||
// // backApi: [],
|
||||
// },
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
{
|
||||
path: 'planToAdd',
|
||||
name: 'planToAdd',
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
import { http } from '/nerv-lib/util';
|
||||
|
||||
//搜索存储 拼凑树的搜索类型
|
||||
const dataList: TreeProps['treeData'] = [];
|
||||
let dataList: TreeProps['treeData'] = [];
|
||||
const generateList = (data: TreeProps['treeData']) => {
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
const node = data[i];
|
||||
@@ -84,19 +84,23 @@
|
||||
const getParentKey = (
|
||||
key: string | number,
|
||||
tree: TreeProps['treeData'],
|
||||
): string | number | undefined => {
|
||||
let parentKey;
|
||||
for (let i = 0; i < tree.length; i++) {
|
||||
const node = tree[i];
|
||||
parents: (string | number)[] = [],
|
||||
): (string | number)[] | undefined => {
|
||||
for (const node of tree) {
|
||||
if (node.children) {
|
||||
if (node.children.some((item) => item.key === key)) {
|
||||
parentKey = node.key;
|
||||
} else if (getParentKey(key, node.children)) {
|
||||
parentKey = getParentKey(key, node.children);
|
||||
// 找到目标节点的直接父节点
|
||||
return [...parents, node.key];
|
||||
}
|
||||
|
||||
// 递归检查子节点的子节点
|
||||
const result = getParentKey(key, node.children, [...parents, node.key]);
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
return parentKey;
|
||||
return undefined;
|
||||
};
|
||||
export default defineComponent({
|
||||
setup(props, { emit }) {
|
||||
@@ -172,6 +176,7 @@
|
||||
getDepartList({ orgId: orgId.value }).then((res) => {
|
||||
deptTreeData.value = res;
|
||||
selectedKeys.value = [orgId.value];
|
||||
dataList = [];
|
||||
generateList(deptTreeData.value);
|
||||
});
|
||||
};
|
||||
@@ -304,7 +309,11 @@
|
||||
return null;
|
||||
})
|
||||
.filter((item, i, self) => item && self.indexOf(item) === i);
|
||||
expandedKeys.value = expanded;
|
||||
let selctky = [];
|
||||
expanded.forEach((item) => {
|
||||
selctky.push(...item);
|
||||
});
|
||||
expandedKeys.value = selctky;
|
||||
searchValue.value = value;
|
||||
autoExpandParent.value = true;
|
||||
});
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item label="错误码">{{ infoObject.errorCode }}</a-descriptions-item>
|
||||
<a-descriptions-item label="告警描述">
|
||||
<div style="color: #2778ff">{{ infoObject.alarmTitle }}</div>
|
||||
<div style="color: rgba(255, 118, 54, 1)">{{ infoObject.alarmTitle }}</div>
|
||||
{{ infoObject.abnormalDescription }}</a-descriptions-item
|
||||
>
|
||||
<a-descriptions-item label="监测点位">
|
||||
@@ -56,6 +56,9 @@
|
||||
});
|
||||
import { ref } from 'vue';
|
||||
import * as echarts from 'echarts';
|
||||
import { energyAlarmApi } from '/@/api/alarmManagement/energyAlarm';
|
||||
import { http } from '/nerv-lib/util';
|
||||
import { message } from 'ant-design-vue';
|
||||
|
||||
let chartInstance: echarts.ECharts | null = null;
|
||||
const graphChart = ref(null);
|
||||
@@ -94,19 +97,21 @@
|
||||
const toggle = (data: any) => {
|
||||
infoObject.value = data;
|
||||
visible.value = true;
|
||||
setTimeout(() => {
|
||||
getChatr();
|
||||
}, 500);
|
||||
// setTimeout(() => {
|
||||
// getChatr();
|
||||
// }, 500);
|
||||
http.get(energyAlarmApi.getEnergyGraph, { logId: infoObject.value.id }).then((res: any) => {
|
||||
if (res.msg === 'success') {
|
||||
const data = res.data;
|
||||
if (data.length > 0) {
|
||||
getChatr(data[0]);
|
||||
}
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
});
|
||||
};
|
||||
const getChatr = () => {
|
||||
let dayData = [];
|
||||
let energyAlarm: any = [];
|
||||
|
||||
// Extend data for 30 days
|
||||
for (let i = 1; i < 30; i++) {
|
||||
dayData.push(`3/${i}`);
|
||||
energyAlarm.push(Math.floor(Math.random() * 250));
|
||||
}
|
||||
const getChatr = (data) => {
|
||||
if (chartInstance) {
|
||||
chartInstance.dispose();
|
||||
}
|
||||
@@ -182,7 +187,7 @@
|
||||
return value;
|
||||
},
|
||||
},
|
||||
data: dayData,
|
||||
data: data.dateList,
|
||||
},
|
||||
],
|
||||
yAxis: [
|
||||
@@ -342,7 +347,7 @@
|
||||
shadowBlur: 20,
|
||||
},
|
||||
},
|
||||
data: energyAlarm,
|
||||
data: data.data,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -54,6 +54,9 @@
|
||||
});
|
||||
import { ref } from 'vue';
|
||||
import * as echarts from 'echarts';
|
||||
import { equipmentAlarmApi } from '/@/api/alarmManagement/equipmentAlarm';
|
||||
import { http } from '/nerv-lib/util';
|
||||
import { message } from 'ant-design-vue';
|
||||
|
||||
let chartInstance: echarts.ECharts | null = null;
|
||||
const graphChart = ref(null);
|
||||
@@ -92,20 +95,23 @@
|
||||
const toggle = (data: any) => {
|
||||
infoObject.value = data;
|
||||
visible.value = true;
|
||||
setTimeout(() => {
|
||||
//获取数据 echarts图展示
|
||||
getChatr();
|
||||
}, 500);
|
||||
// setTimeout(() => {
|
||||
// //获取数据 echarts图展示
|
||||
// getChatr();
|
||||
// }, 500);
|
||||
http.get(equipmentAlarmApi.getDeviceGraph, { logId: infoObject.value.id }).then((res: any) => {
|
||||
if (res.msg === 'success') {
|
||||
console.log(res.data, '数据');
|
||||
const data = res.data;
|
||||
if (data.length > 0) {
|
||||
getChatr(data[0]);
|
||||
}
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
});
|
||||
};
|
||||
const getChatr = () => {
|
||||
let dayData = [];
|
||||
let energyAlarm: any = [];
|
||||
|
||||
// Extend data for 30 days
|
||||
for (let i = 1; i < 30; i++) {
|
||||
dayData.push(`3/${i}`);
|
||||
energyAlarm.push(Math.floor(Math.random() * 250));
|
||||
}
|
||||
const getChatr = (data: any) => {
|
||||
if (chartInstance) {
|
||||
chartInstance.dispose();
|
||||
}
|
||||
@@ -128,7 +134,7 @@
|
||||
},
|
||||
formatter: function (params: any) {
|
||||
let res =
|
||||
params[0].marker + ' ' + params[0].seriesName + ' : ' + params[0].data + 'V';
|
||||
params[0].marker + ' ' + params[0].seriesName + ' : ' + params[0].data + 'V';
|
||||
return res;
|
||||
},
|
||||
},
|
||||
@@ -182,7 +188,7 @@
|
||||
return value;
|
||||
},
|
||||
},
|
||||
data: dayData,
|
||||
data: data.dateList,
|
||||
},
|
||||
],
|
||||
yAxis: [
|
||||
@@ -342,7 +348,7 @@
|
||||
shadowBlur: 20,
|
||||
},
|
||||
},
|
||||
data: energyAlarm,
|
||||
data: data.data,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -73,9 +73,10 @@
|
||||
</div>
|
||||
<a-table :columns="totalColumns" :data-source="totalData" bordered :pagination="false">
|
||||
<template #bodyCell="{ column, text }">
|
||||
<template v-if="column.dataIndex === 'name'">
|
||||
<span>{{ text || '-' }}</span>
|
||||
<!-- <template v-if="column.dataIndex === 'name'">
|
||||
<a>{{ text }}</a>
|
||||
</template>
|
||||
</template> -->
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
@@ -391,6 +392,7 @@
|
||||
api: carbonAssets.import, // 导入接口名
|
||||
params: {
|
||||
orgId,
|
||||
year,
|
||||
},
|
||||
title: '碳资产', // 弹窗title
|
||||
templateName: 'carbonAssets', // 所使用的文件名称
|
||||
@@ -413,6 +415,7 @@
|
||||
pageSize: 999,
|
||||
year: queryParams.value.year,
|
||||
ids: selectedRowKeys.value,
|
||||
accountType: props.parentId,
|
||||
});
|
||||
const config = {
|
||||
responseType: 'blob',
|
||||
@@ -674,6 +677,7 @@
|
||||
.validate()
|
||||
.then(() => {
|
||||
console.log('values', formState, toRaw(formState));
|
||||
formState.value.orgId = orgId.value;
|
||||
if (formState.value.transactionType) {
|
||||
formState.value.transactionType = formState.value.transactionType.join(',').split(',')[1];
|
||||
}
|
||||
@@ -699,7 +703,8 @@
|
||||
message.success('操作成功!');
|
||||
visible.value = false;
|
||||
delIds.value = [];
|
||||
getDetailList();
|
||||
// getDetailList();
|
||||
mainRef.value?.nsTableRef.reload();
|
||||
getTotalTable();
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -709,7 +714,8 @@
|
||||
message.success('操作成功!');
|
||||
visible.value = false;
|
||||
delIds.value = [];
|
||||
getDetailList();
|
||||
// getDetailList();
|
||||
mainRef.value?.nsTableRef.reload();
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
@@ -2,26 +2,27 @@
|
||||
<div class="mainContant" v-if="homePage">
|
||||
<a-card class="card" v-if="nationwide" style="margin-right: 1%; margin-bottom: 1%">
|
||||
<div class="top" style="background: rgba(252, 139, 78, 0.05)">
|
||||
<div class="moneyImg"
|
||||
><img width="68px" height="68px" src="../../../../src/icon/carbonAssetsMoney-1.svg"
|
||||
/></div>
|
||||
<div class="moneyImg"><img width="68" height="68" src="../../../../src/icon/carbonAssetsMoney-1.svg" /></div>
|
||||
<div class="moneyTitle">全国碳账户估值(CNY)</div>
|
||||
<div class="moneyTotal" style="color: rgba(229, 102, 22, 1)">{{
|
||||
nationwide.valuation
|
||||
}}</div>
|
||||
<div class="moneyDetail">
|
||||
<div class="detailClick" @click="viewDetail(1)" style="border: 1px solid rgba(229, 102, 22, 1);">
|
||||
<div
|
||||
class="detailClick"
|
||||
@click="viewDetail(1)"
|
||||
style="border: 1px solid rgba(229, 102, 22, 1)">
|
||||
<img
|
||||
width="20px"
|
||||
height="20px"
|
||||
width="20"
|
||||
height="20"
|
||||
src="../../../../src/icon/carbonAssetsToDetail-1.svg"
|
||||
alt="" />
|
||||
<span style="color: rgba(229, 102, 22, 1);">交易明细</span>
|
||||
<span style="color: rgba(229, 102, 22, 1)">交易明细</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="title">
|
||||
<img width="24px" height="24px" src="../../../../src/icon/carbonAssetsTitle-1.svg" />
|
||||
<img width="24" height="24" src="../../../../src/icon/carbonAssetsTitle-1.svg" />
|
||||
<span>全国碳账户余额</span>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
@@ -29,23 +30,23 @@
|
||||
<div class="money">{{ nationwide.opening }}</div>
|
||||
<div class="moneyType">期初余额(tCO2)</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<div class="calculation TLCard">
|
||||
<div class="money">{{ nationwide.income }}</div>
|
||||
<div class="moneyType">
|
||||
<img width="20px" height="17px" src="../../../../src/icon/carbonAssetsIncrease.svg" />
|
||||
<img width="20" height="17" src="../../../../src/icon/carbonAssetsIncrease.svg" />
|
||||
增加(tCO2)
|
||||
</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsReduce.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsReduce.svg" />
|
||||
<div class="calculation TLCard">
|
||||
<div class="money">{{ nationwide.expenditure }}</div>
|
||||
<div class="moneyType">
|
||||
<img width="20px" height="17px" src="../../../../src/icon/carbonAssetsLower.svg" />
|
||||
<img width="20" height="17" src="../../../../src/icon/carbonAssetsLower.svg" />
|
||||
减少(tCO2)
|
||||
</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsEqual.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsEqual.svg" />
|
||||
<div class="calculation TLCard">
|
||||
<div class="money">{{ nationwide.period }}</div>
|
||||
<div class="moneyType">期末余额(tCO2)</div>
|
||||
@@ -55,23 +56,26 @@
|
||||
<a-card class="card" v-if="place" style="margin-bottom: 1%">
|
||||
<div class="top" style="background: rgba(234, 71, 54, 0.05)">
|
||||
<div class="moneyImg"
|
||||
><img width="68px" height="68px" src="../../../../src/icon/carbonAssetsMoney-2.svg"
|
||||
><img width="68" height="68" src="../../../../src/icon/carbonAssetsMoney-2.svg"
|
||||
/></div>
|
||||
<div class="moneyTitle">地方碳账户估值(CNY)</div>
|
||||
<div class="moneyTotal" style="color: rgba(229, 102, 22, 1)">{{ place.valuation }}</div>
|
||||
<div class="moneyDetail">
|
||||
<div class="detailClick" @click="viewDetail(2)" style="border: 1px solid rgba(230, 51, 44, 1);">
|
||||
<div
|
||||
class="detailClick"
|
||||
@click="viewDetail(2)"
|
||||
style="border: 1px solid rgba(230, 51, 44, 1)">
|
||||
<img
|
||||
width="20px"
|
||||
height="20px"
|
||||
width="20"
|
||||
height="20"
|
||||
src="../../../../src/icon/carbonAssetsToDetail-2.svg"
|
||||
alt="" />
|
||||
<span style="color: rgba(230, 51, 44, 1);">交易明细</span>
|
||||
<span style="color: rgba(230, 51, 44, 1)">交易明细</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="title">
|
||||
<img width="24px" height="24px" src="../../../../src/icon/carbonAssetsTitle-2.svg" />
|
||||
<img width="24" height="24" src="../../../../src/icon/carbonAssetsTitle-2.svg" />
|
||||
<span>地方碳账户余额</span>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
@@ -79,23 +83,23 @@
|
||||
<div class="money">{{ place.opening }}</div>
|
||||
<div class="moneyType">期初余额(tCO2)</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<div class="calculation TRCard">
|
||||
<div class="money">{{ place.income }}</div>
|
||||
<div class="moneyType">
|
||||
<img width="20px" height="17px" src="../../../../src/icon/carbonAssetsIncrease.svg" />
|
||||
<img width="20" height="17" src="../../../../src/icon/carbonAssetsIncrease.svg" />
|
||||
增加(tCO2)
|
||||
</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsReduce.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsReduce.svg" />
|
||||
<div class="calculation TRCard">
|
||||
<div class="money">{{ place.expenditure }}</div>
|
||||
<div class="moneyType">
|
||||
<img width="20px" height="17px" src="../../../../src/icon/carbonAssetsLower.svg" />
|
||||
<img width="20" height="17" src="../../../../src/icon/carbonAssetsLower.svg" />
|
||||
减少(tCO2)
|
||||
</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsEqual.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsEqual.svg" />
|
||||
<div class="calculation TRCard">
|
||||
<div class="money">{{ place.period }}</div>
|
||||
<div class="moneyType">期末余额(tCO2)</div>
|
||||
@@ -105,23 +109,26 @@
|
||||
<a-card class="card" v-if="ccer" style="margin-right: 1%">
|
||||
<div class="top" style="background: rgba(65, 163, 224, 0.05)">
|
||||
<div class="moneyImg"
|
||||
><img width="68px" height="68px" src="../../../../src/icon/carbonAssetsMoney-3.svg"
|
||||
><img width="68" height="68" src="../../../../src/icon/carbonAssetsMoney-3.svg"
|
||||
/></div>
|
||||
<div class="moneyTitle">CCER资产估值(CNY)</div>
|
||||
<div class="moneyTotal" style="color: rgba(229, 102, 22, 1)">{{ ccer.valuation }}</div>
|
||||
<div class="moneyDetail" >
|
||||
<div class="detailClick" @click="viewDetail(3)" style="border: 1px solid rgba(56, 157, 220, 1);">
|
||||
<div class="moneyDetail">
|
||||
<div
|
||||
class="detailClick"
|
||||
@click="viewDetail(3)"
|
||||
style="border: 1px solid rgba(56, 157, 220, 1)">
|
||||
<img
|
||||
width="20px"
|
||||
height="20px"
|
||||
width="20"
|
||||
height="20"
|
||||
src="../../../../src/icon/carbonAssetsToDetail-3.svg"
|
||||
alt="" />
|
||||
<span style="color: rgba(56, 157, 220, 1);">交易明细</span>
|
||||
<span style="color: rgba(56, 157, 220, 1)">交易明细</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="title">
|
||||
<img width="24px" height="24px" src="../../../../src/icon/carbonAssetsTitle-3.svg" />
|
||||
<img width="24" height="24" src="../../../../src/icon/carbonAssetsTitle-3.svg" />
|
||||
<span>全国碳账户余额</span>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
@@ -129,23 +136,23 @@
|
||||
<div class="money">{{ ccer.opening }}</div>
|
||||
<div class="moneyType">期初余额(tCO2)</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<div class="calculation BLCard">
|
||||
<div class="money">{{ ccer.income }}</div>
|
||||
<div class="moneyType">
|
||||
<img width="20px" height="17px" src="../../../../src/icon/carbonAssetsIncrease.svg" />
|
||||
<img width="20" height="17" src="../../../../src/icon/carbonAssetsIncrease.svg" />
|
||||
增加(tCO2)
|
||||
</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsReduce.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsReduce.svg" />
|
||||
<div class="calculation BLCard">
|
||||
<div class="money">{{ ccer.expenditure }}</div>
|
||||
<div class="moneyType">
|
||||
<img width="20px" height="17px" src="../../../../src/icon/carbonAssetsLower.svg" />
|
||||
<img width="20" height="17" src="../../../../src/icon/carbonAssetsLower.svg" />
|
||||
减少(tCO2)
|
||||
</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsEqual.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsEqual.svg" />
|
||||
<div class="calculation BLCard">
|
||||
<div class="money">{{ ccer.period }}</div>
|
||||
<div class="moneyType">期末余额(tCO2)</div>
|
||||
@@ -155,15 +162,15 @@
|
||||
<a-card class="card" v-if="whole">
|
||||
<div class="top" style="background: rgba(37, 192, 150, 0.05)">
|
||||
<div class="moneyImg"
|
||||
><img width="68px" height="68px" src="../../../../src/icon/carbonAssetsMoney-4.svg"
|
||||
><img width="68" height="68" src="../../../../src/icon/carbonAssetsMoney-4.svg"
|
||||
/></div>
|
||||
<div class="moneyTitle">碳资产总估值(CNY)</div>
|
||||
<div class="moneyTotal" style="color: rgba(229, 102, 22, 1)">{{ whole.whole }}</div>
|
||||
</div>
|
||||
<div class="title" style="justify-content: center">
|
||||
<img
|
||||
width="17px"
|
||||
height="17px"
|
||||
width="17"
|
||||
height="17"
|
||||
style="transform: rotate(90deg)"
|
||||
src="../../../../src/icon/carbonAssetsEqual.svg" />
|
||||
</div>
|
||||
@@ -172,12 +179,12 @@
|
||||
<div class="money">{{ whole.nationwide }}</div>
|
||||
<div class="moneyType">全国碳账户资产估值</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<div class="BRCard">
|
||||
<div class="money">{{ whole.place }}</div>
|
||||
<div class="moneyType">地方碳账户资产估值</div>
|
||||
</div>
|
||||
<img width="17px" height="17px" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<img width="17" height="17" src="../../../../src/icon/carbonAssetsAdd.svg" />
|
||||
<div class="BRCard">
|
||||
<div class="money">{{ whole.ccer }}</div>
|
||||
<div class="moneyType">CCER碳资产估值</div>
|
||||
|
||||
@@ -38,41 +38,37 @@
|
||||
<template #title="data">
|
||||
<div class="treeRow">
|
||||
<div>
|
||||
<span
|
||||
v-if="
|
||||
data.emissionName &&
|
||||
selectTreeDataValue &&
|
||||
data.emissionName.indexOf(selectTreeDataValue) > -1
|
||||
">
|
||||
{{
|
||||
data.emissionName.substring(0, data.emissionName.indexOf(selectTreeDataValue))
|
||||
}}
|
||||
<span style="color: #f50">{{ selectTreeDataValue }}</span>
|
||||
{{
|
||||
data.emissionName.substring(
|
||||
data.emissionName.indexOf(selectTreeDataValue) + selectTreeDataValue.length,
|
||||
)
|
||||
}}
|
||||
</span>
|
||||
<span v-else>{{ data.emissionName }}</span>
|
||||
<span>{{ data.emissionName }}</span>
|
||||
</div>
|
||||
<a-dropdown>
|
||||
<ns-icon name="actionMore" size="14" class="actionMore" />
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
<a-menu-item @click="editTreeNodeData(data)">编辑</a-menu-item>
|
||||
<a-menu-item @click="addTreeNodeData">新增子节点</a-menu-item>
|
||||
<a-menu-item
|
||||
v-if="!data.isFirst && data.emissionName !== '未分类'"
|
||||
@click="moveNode(data, 'up')"
|
||||
>上移</a-menu-item
|
||||
<a-menu-item v-if="data.emissionName !== '全部'" @click="editTreeNodeData(data)"
|
||||
>编辑</a-menu-item
|
||||
>
|
||||
<a-menu-item @click="addTreeNodeData"> 新增子节点 </a-menu-item>
|
||||
<a-menu-item
|
||||
v-if="!data.isEnd && data.emissionName !== '未分类'"
|
||||
@click="moveNode(data, 'down')"
|
||||
>下移</a-menu-item
|
||||
v-if="
|
||||
!data.isFirst &&
|
||||
data.emissionName !== '未分类' &&
|
||||
data.emissionName !== '全部'
|
||||
"
|
||||
@click="moveNode(data, 'up')">
|
||||
上移
|
||||
</a-menu-item>
|
||||
<a-menu-item
|
||||
v-if="
|
||||
!data.isEnd &&
|
||||
data.emissionName !== '未分类' &&
|
||||
data.emissionName !== '全部'
|
||||
"
|
||||
@click="moveNode(data, 'down')">
|
||||
下移
|
||||
</a-menu-item>
|
||||
<a-menu-item v-if="data.emissionName !== '全部'" @click="deleteTreeNode(data)"
|
||||
>删除</a-menu-item
|
||||
>
|
||||
<a-menu-item @click="deleteTreeNode(data)">删除</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
@@ -311,6 +307,7 @@
|
||||
},
|
||||
];
|
||||
const checkedTreeNodeKeys = ref<string[]>();
|
||||
const selectedKeys = ref<string[]>();
|
||||
|
||||
// const generateData = (_level: number, _preKey?: string, _tns?: TreeProps['treeData']) => {
|
||||
// const preKey = _preKey || '0';
|
||||
@@ -565,7 +562,10 @@
|
||||
// 被选中的树节点
|
||||
const editTreeNode = ref({});
|
||||
const onSelectKeys = ref([]);
|
||||
const onSelect = (selectedKeys: string[], info: any) => {
|
||||
const onSelect = (selectedKey: string[], info: any) => {
|
||||
if (selectedKey.length === 1) {
|
||||
selectedKeys.value = selectedKey;
|
||||
}
|
||||
if (info.selected) {
|
||||
// showOperation.value = true;
|
||||
editTreeNode.value = {
|
||||
@@ -575,7 +575,7 @@
|
||||
sortNumber: info.selectedNodes[0].sortNumber,
|
||||
parentEmissionId: info.selectedNodes[0].parentEmissionId,
|
||||
};
|
||||
onSelectKeys.value.push(info.selectedNodes[0].id);
|
||||
onSelectKeys.value = [info.selectedNodes[0].id];
|
||||
emissionList.value = [...onSelectKeys.value, ...checkedIds.value];
|
||||
mainRef.value?.nsTableRef.reload();
|
||||
} else {
|
||||
@@ -766,49 +766,60 @@
|
||||
columns: [
|
||||
{
|
||||
title: 'id',
|
||||
width: 50,
|
||||
customRender: (text: any) => {
|
||||
return text.index + 1;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '排放源',
|
||||
width: 100,
|
||||
dataIndex: 'emissionSources',
|
||||
},
|
||||
{
|
||||
title: '排放类型',
|
||||
width: 100,
|
||||
dataIndex: 'emissionTypeColumn',
|
||||
},
|
||||
{
|
||||
title: '排放气体',
|
||||
width: 100,
|
||||
dataIndex: 'emissionGas',
|
||||
},
|
||||
{
|
||||
title: '排放环节',
|
||||
width: 100,
|
||||
dataIndex: 'emissionProcess',
|
||||
},
|
||||
{
|
||||
title: '排放因子',
|
||||
width: 100,
|
||||
dataIndex: 'emissionFactors',
|
||||
},
|
||||
{
|
||||
title: '排放因子单位',
|
||||
width: 100,
|
||||
dataIndex: 'emissionFactorUnits',
|
||||
},
|
||||
{
|
||||
title: '数据来源',
|
||||
width: 100,
|
||||
dataIndex: 'dataSources',
|
||||
},
|
||||
{
|
||||
title: '数据库',
|
||||
width: 100,
|
||||
dataIndex: 'carbonDatabase',
|
||||
},
|
||||
{
|
||||
title: '参考文献',
|
||||
width: 100,
|
||||
dataIndex: 'bibliography',
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: '引用数量',
|
||||
width: 100,
|
||||
dataIndex: 'numberOfReferences',
|
||||
},
|
||||
],
|
||||
@@ -1224,13 +1235,17 @@
|
||||
}
|
||||
.treePart {
|
||||
width: 70%;
|
||||
height: 100%;
|
||||
height: calc(100% - 5vh);
|
||||
display: flex;
|
||||
border: 1px solid #bfbfbf;
|
||||
margin-left: 10%;
|
||||
flex-direction: column;
|
||||
border-radius: 12px;
|
||||
overflow: auto;
|
||||
:deep(.ant-tree) {
|
||||
height: 90%;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
.actionMore {
|
||||
display: none;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
:data-source="data"
|
||||
:bordered="true"
|
||||
:pagination="false"
|
||||
:scroll="{ x: 2000, y: 480 }">
|
||||
:scroll="{ x: 1700, y: 480 }">
|
||||
<template #title>
|
||||
<a-date-picker v-model:value="selectYear" picker="year" valueFormat="YYYY" />
|
||||
<span style="margin-left: 30px">
|
||||
@@ -14,14 +14,14 @@
|
||||
</span>
|
||||
</template>
|
||||
</a-table>
|
||||
<a-pagination
|
||||
<!-- <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" />
|
||||
@change="onChange" /> -->
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
@@ -67,7 +67,7 @@
|
||||
{
|
||||
title: '排放类型',
|
||||
dataIndex: 'cnValue',
|
||||
width: 130,
|
||||
width: 100,
|
||||
customCell: (record, rowIndex) => {
|
||||
if (rowIndex == undefined) {
|
||||
return {
|
||||
@@ -90,82 +90,82 @@
|
||||
{
|
||||
title: '能源种类',
|
||||
dataIndex: 'energyType',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '计量单位',
|
||||
dataIndex: 'unitName',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '加权平均',
|
||||
dataIndex: 'averageFactorValue',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '全年',
|
||||
dataIndex: 'carbonYearly',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '1月',
|
||||
dataIndex: 'jan',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '2月',
|
||||
dataIndex: 'feb',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '3月',
|
||||
dataIndex: 'mar',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '4月',
|
||||
dataIndex: 'apr',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '5月',
|
||||
dataIndex: 'may',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '6月',
|
||||
dataIndex: 'jun',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '7月',
|
||||
dataIndex: 'jul',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '8月',
|
||||
dataIndex: 'aug',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '9月',
|
||||
dataIndex: 'sep',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '10月',
|
||||
dataIndex: 'oct',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '11月',
|
||||
dataIndex: 'nov',
|
||||
width: 80,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '12月',
|
||||
dataIndex: 'dec',
|
||||
width: 80,
|
||||
dataIndex: 'dece',
|
||||
width: 100,
|
||||
},
|
||||
];
|
||||
// 合并单元格
|
||||
@@ -209,7 +209,7 @@
|
||||
display: flex;
|
||||
}
|
||||
:deep(.ant-table-container) {
|
||||
padding: 0px 16px;
|
||||
margin: 0px 16px;
|
||||
}
|
||||
// :deep(.ant-table-cell) {
|
||||
// border: 1px solid #f0f0f0;
|
||||
@@ -223,4 +223,9 @@
|
||||
td.column-money {
|
||||
text-align: right !important;
|
||||
}
|
||||
.custom-cell {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 8px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -71,7 +71,7 @@ export const tableColumns = [
|
||||
},
|
||||
{
|
||||
title: '12月',
|
||||
dataIndex: 'dec',
|
||||
dataIndex: 'dece',
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
|
||||
@@ -360,7 +360,11 @@
|
||||
label: '凭证下载',
|
||||
type: 'primary',
|
||||
handle: () => {
|
||||
fetch(energyConsumption.voucherDownloadList, { bizType: 3 }).then((res) => {
|
||||
fetch(energyConsumption.voucherDownloadList, {
|
||||
bizType: 3,
|
||||
orgId: orgId.value,
|
||||
year: tableConfig.value.params.year,
|
||||
}).then((res) => {
|
||||
downLoadData.value = res.data;
|
||||
});
|
||||
downLoadVisible.value = true;
|
||||
@@ -406,7 +410,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.jan ? value.record.jan : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -427,7 +431,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.feb ? value.record.feb : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -448,7 +452,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.mar ? value.record.mar : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -469,7 +473,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.apr ? value.record.apr : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -490,7 +494,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.may ? value.record.may : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -511,7 +515,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.jun ? value.record.jun : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -532,7 +536,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.jul ? value.record.jul : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -553,7 +557,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.aug ? value.record.aug : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -574,7 +578,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.sep ? value.record.sep : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -595,7 +599,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.oct ? value.record.oct : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -616,7 +620,7 @@
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.nov ? value.record.nov : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -625,19 +629,19 @@
|
||||
},
|
||||
{
|
||||
title: '12月',
|
||||
dataIndex: 'dec',
|
||||
dataIndex: 'dece',
|
||||
width: 100,
|
||||
customRender: (value) => {
|
||||
let text;
|
||||
let color;
|
||||
switch (value.record.decFlag) {
|
||||
case 1:
|
||||
text = value.record.dec ? value.record.dec : '';
|
||||
text = value.record.dece ? value.record.dece : '';
|
||||
color = 'rgba(243, 97, 99, 1)';
|
||||
break;
|
||||
case 0:
|
||||
text = value.record.dec ? value.record.dec : '';
|
||||
color = 'rgba(57, 215, 287, 1)';
|
||||
text = value.record.dece ? value.record.dece : '';
|
||||
color = 'rgba(57, 215, 187, 1)';
|
||||
break;
|
||||
}
|
||||
// 使用内联样式设置颜色
|
||||
@@ -659,6 +663,7 @@
|
||||
if (res.data.emissionType) {
|
||||
res.data.emissionType = Number(res.data.emissionType);
|
||||
}
|
||||
changeEnergyType(res.data.energyConsumptionType);
|
||||
if (res.data.unit) {
|
||||
let selectDevice = ref([Number(res.data.unit)]);
|
||||
findParentIds(measurementUnit.value, res.data.unit, selectDevice.value);
|
||||
@@ -773,6 +778,7 @@
|
||||
mainRef.value?.nsTableRef.reload();
|
||||
};
|
||||
const changeEnergyType = (value) => {
|
||||
formState.value.collectionNode = '';
|
||||
// 获取自动采集节点的数据
|
||||
fetch(group.queryDeviceGroupTree, { energyType: value, orgId: orgId.value }).then((res) => {
|
||||
treeData.value = res.data;
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<div class="title">{{ props.year }}年济阳站碳盘查报告</div>
|
||||
<div class="standard" style="display: flex; align-items: center">
|
||||
<img
|
||||
width="11px"
|
||||
height="11px"
|
||||
width="11"
|
||||
height="11"
|
||||
style="margin-right: 5px"
|
||||
src="../../../../../src/icon/carbonInventoryCheck.svg" />
|
||||
<span
|
||||
@@ -19,7 +19,7 @@
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
">
|
||||
适用标准:ISO 14064-1
|
||||
适用标准:{{ props.standard }}
|
||||
</span>
|
||||
<a-button type="primary" @click="changeParentData" ghost style="margin-left: 6px">
|
||||
返回
|
||||
@@ -328,7 +328,7 @@
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-form-item ref="name" label="消耗量" name="consumption">
|
||||
<ns-input
|
||||
<ns-input-number
|
||||
v-model:value="editFormState.consumption"
|
||||
:maxlength="20"
|
||||
@keydown="handleKeyDown"
|
||||
@@ -482,6 +482,9 @@
|
||||
endTime: {
|
||||
type: String,
|
||||
},
|
||||
standard: {
|
||||
type: String,
|
||||
},
|
||||
});
|
||||
const activeKey = ref('1');
|
||||
const orgId = ref('');
|
||||
@@ -641,16 +644,18 @@
|
||||
}
|
||||
} else {
|
||||
selectedKeysR.value = ['0-0-0'];
|
||||
getTableId.value = res.data[0].children[0].id;
|
||||
bizId.value = res.data[0].children[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 = '排放量';
|
||||
if (res.data[0].children.length > 0) {
|
||||
getTableId.value = res.data[0].children[0].id;
|
||||
bizId.value = res.data[0].children[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 = '排放量';
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -658,10 +663,12 @@
|
||||
// 排放源树中被选中的树节点
|
||||
const onSelectR = (selectedKey: string[], info: any) => {
|
||||
selectedKeysR.value = selectedKey;
|
||||
getTableId.value = info.selectedNodes[0].id;
|
||||
bizId.value = info.selectedNodes[0].id;
|
||||
getPFYTableList(getTableId.value);
|
||||
getTableHeardUnit(getTableId.value);
|
||||
if (info.selectedNodes[0].emissionSource !== '全部') {
|
||||
getTableId.value = info.selectedNodes[0].id;
|
||||
bizId.value = info.selectedNodes[0].id;
|
||||
getPFYTableList(getTableId.value);
|
||||
getTableHeardUnit(getTableId.value);
|
||||
}
|
||||
};
|
||||
// 获取表头单位
|
||||
const getTableHeardUnit = (id) => {
|
||||
@@ -815,16 +822,17 @@
|
||||
.validate()
|
||||
.then(() => {
|
||||
console.log('values', formState, toRaw(formState));
|
||||
if (formState.value.unitId) {
|
||||
formState.value.unitId = formState.value.unitId.join(',').split(',')[1];
|
||||
const addformState = JSON.parse(JSON.stringify(formState.value));
|
||||
if (addformState.unitId) {
|
||||
addformState.unitId = addformState.unitId.join(',').split(',')[1];
|
||||
}
|
||||
if (formState.value.carbonEmissionUnits) {
|
||||
formState.value.carbonEmissionUnits = formState.value.carbonEmissionUnits
|
||||
if (addformState.carbonEmissionUnits) {
|
||||
addformState.carbonEmissionUnits = addformState.carbonEmissionUnits
|
||||
.join(',')
|
||||
.split(',')[1];
|
||||
}
|
||||
if (formState.value.id) {
|
||||
fetch(carbonInventoryCheck.update, formState.value).then((res) => {
|
||||
if (addformState.id) {
|
||||
fetch(carbonInventoryCheck.update, addformState).then((res) => {
|
||||
addTreeNodeVisible.value = false;
|
||||
formState.value = {
|
||||
orgId: orgId.value,
|
||||
@@ -837,20 +845,25 @@
|
||||
getEmissionSourceTree();
|
||||
});
|
||||
} else {
|
||||
fetch(carbonInventoryCheck.create, formState.value).then((res) => {
|
||||
if (addformState.categoryId) {
|
||||
fetch(carbonInventoryCheck.create, addformState).then((res) => {
|
||||
addTreeNodeVisible.value = false;
|
||||
formState.value = {
|
||||
orgId: orgId.value,
|
||||
year: props.year,
|
||||
startTime: props.startTime,
|
||||
endTime: props.endTime,
|
||||
categoryId: categoryId.value,
|
||||
};
|
||||
message.success('操作成功!');
|
||||
changeSelectedKeys.value = true;
|
||||
getEmissionSourceTree();
|
||||
getPFYTableList(res.data.id);
|
||||
});
|
||||
} else {
|
||||
message.warning('请选择能源类别');
|
||||
addTreeNodeVisible.value = false;
|
||||
formState.value = {
|
||||
orgId: orgId.value,
|
||||
year: props.year,
|
||||
startTime: props.startTime,
|
||||
endTime: props.endTime,
|
||||
categoryId: categoryId.value,
|
||||
};
|
||||
message.success('操作成功!');
|
||||
changeSelectedKeys.value = true;
|
||||
getEmissionSourceTree();
|
||||
getPFYTableList(res.data.id);
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -1266,10 +1279,10 @@
|
||||
fetch(carbonInventoryCheck.carbonFlowDirection, queryFlowDirection.value).then((res) => {
|
||||
console.log(res);
|
||||
linksData.value = res.data[0];
|
||||
if (linksData.value[0].value !== 0) {
|
||||
showChart.value = true;
|
||||
} else {
|
||||
if (linksData.value[0].value === 0 || linksData.value[0].value === undefined) {
|
||||
showChart.value = false;
|
||||
} else {
|
||||
showChart.value = true;
|
||||
}
|
||||
datalist.value = res.data[1];
|
||||
drawEcharts();
|
||||
@@ -1487,11 +1500,13 @@
|
||||
colorStops: [
|
||||
{
|
||||
offset: 1,
|
||||
color: Color[d], // 0% 处的颜色
|
||||
// color: Color[d], // 0% 处的颜色
|
||||
color: Color[d % Color.length],
|
||||
},
|
||||
{
|
||||
offset: 0,
|
||||
color: Color1[d], // 100% 处的颜色
|
||||
// color: Color1[d], // 100% 处的颜色
|
||||
color: Color1[d % Color1.length],
|
||||
},
|
||||
],
|
||||
global: false, // 缺省为 false
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
:year="year"
|
||||
:startTime="startTime"
|
||||
:endTime="endTime"
|
||||
:standard="standard"
|
||||
@change-data="updateData" />
|
||||
</div>
|
||||
<!-- 新增报告弹窗 -->
|
||||
@@ -23,46 +24,48 @@
|
||||
<div class="ns-form-title"
|
||||
><div class="title">{{ text }}</div></div
|
||||
>
|
||||
<a-form
|
||||
ref="formRef"
|
||||
:model="formState"
|
||||
:rules="rules"
|
||||
:label-col="labelCol"
|
||||
:wrapper-col="wrapperCol">
|
||||
<a-form-item ref="name" label="报告名称" name="reportName">
|
||||
<a-input
|
||||
v-model:value="formState.reportName"
|
||||
:maxlength="15"
|
||||
@keydown="handleKeyDown"
|
||||
placeholder="请输入报告名称" />
|
||||
</a-form-item>
|
||||
<a-form-item ref="name" label="报告年度" name="reportYear">
|
||||
<a-date-picker v-model:value="formState.reportYear" picker="year" valueFormat="YYYY" />
|
||||
</a-form-item>
|
||||
<a-form-item ref="name" label="适用标准" name="genericStandard">
|
||||
<a-input
|
||||
v-model:value="formState.genericStandard"
|
||||
:maxlength="20"
|
||||
@keydown="handleKeyDown"
|
||||
placeholder="请输入适用标准" />
|
||||
</a-form-item>
|
||||
<a-form-item label="报告周期" name="reportPeriod">
|
||||
<a-select
|
||||
v-model:value="formState.reportPeriod"
|
||||
placeholder="请选择报告周期"
|
||||
@change="selectChange">
|
||||
<a-select-option value="1">年度</a-select-option>
|
||||
<a-select-option value="2">月度</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item ref="name" label="报告范围" name="reportScope">
|
||||
<a-range-picker
|
||||
v-model:value="formState.reportScope"
|
||||
picker="month"
|
||||
:disabledDate="disabledDate"
|
||||
valueFormat="YYYY-MM" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
<a-spin :spinning="spinning">
|
||||
<a-form
|
||||
ref="formRef"
|
||||
:model="formState"
|
||||
:rules="rules"
|
||||
:label-col="labelCol"
|
||||
:wrapper-col="wrapperCol">
|
||||
<a-form-item ref="name" label="报告名称" name="reportName">
|
||||
<a-input
|
||||
v-model:value="formState.reportName"
|
||||
:maxlength="15"
|
||||
@keydown="handleKeyDown"
|
||||
placeholder="请输入报告名称" />
|
||||
</a-form-item>
|
||||
<a-form-item ref="name" label="报告年度" name="reportYear">
|
||||
<a-date-picker v-model:value="formState.reportYear" picker="year" valueFormat="YYYY" />
|
||||
</a-form-item>
|
||||
<a-form-item ref="name" label="适用标准" name="genericStandard">
|
||||
<a-input
|
||||
v-model:value="formState.genericStandard"
|
||||
:maxlength="20"
|
||||
@keydown="handleKeyDown"
|
||||
placeholder="请输入适用标准" />
|
||||
</a-form-item>
|
||||
<a-form-item label="报告周期" name="reportPeriod">
|
||||
<a-select
|
||||
v-model:value="formState.reportPeriod"
|
||||
placeholder="请选择报告周期"
|
||||
@change="selectChange">
|
||||
<a-select-option value="1">年度</a-select-option>
|
||||
<a-select-option value="2">月度</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item ref="name" label="报告范围" name="reportScope">
|
||||
<a-range-picker
|
||||
v-model:value="formState.reportScope"
|
||||
picker="month"
|
||||
:disabledDate="disabledDate"
|
||||
valueFormat="YYYY-MM" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-spin>
|
||||
<template #footer>
|
||||
<a-button style="margin-right: 8px" @click="onClose">取消</a-button>
|
||||
<a-button type="primary" @click="onSubmit">确定</a-button>
|
||||
@@ -121,8 +124,10 @@
|
||||
event.preventDefault();
|
||||
}
|
||||
};
|
||||
const spinning = ref(false);
|
||||
// 点击确定提交
|
||||
const onSubmit = () => {
|
||||
spinning.value = true;
|
||||
formRef.value
|
||||
.validate()
|
||||
.then(() => {
|
||||
@@ -133,6 +138,7 @@
|
||||
fetch(carbonInventoryCheck.createOrUpdate, formState.value).then((res) => {
|
||||
visible.value = false;
|
||||
mainRef.value?.nsTableRef.reload();
|
||||
spinning.value = false;
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -145,6 +151,7 @@
|
||||
const reportId = ref();
|
||||
const startTime = ref();
|
||||
const endTime = ref();
|
||||
const standard = ref();
|
||||
const year = ref();
|
||||
const tableConfig = ref({
|
||||
title: '数据库',
|
||||
@@ -220,6 +227,7 @@
|
||||
year.value = record.reportYear;
|
||||
startTime.value = record.startTime;
|
||||
endTime.value = record.endTime;
|
||||
standard.value = record.genericStandard;
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@@ -96,6 +96,28 @@
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
<!-- <template #summary>
|
||||
<a-table-summary-row>
|
||||
<a-table-summary-cell></a-table-summary-cell>
|
||||
<a-table-summary-cell>合计</a-table-summary-cell>
|
||||
<a-table-summary-cell></a-table-summary-cell>
|
||||
<a-table-summary-cell>
|
||||
<a-typography-text type="danger">{{ 111 }}</a-typography-text>
|
||||
</a-table-summary-cell>
|
||||
<a-table-summary-cell>
|
||||
<a-typography-text>{{ 222 }}</a-typography-text>
|
||||
</a-table-summary-cell>
|
||||
<a-table-summary-cell>
|
||||
<a-typography-text>{{ 222 }}</a-typography-text>
|
||||
</a-table-summary-cell>
|
||||
<a-table-summary-cell></a-table-summary-cell>
|
||||
<a-table-summary-cell></a-table-summary-cell>
|
||||
<a-table-summary-cell>
|
||||
<a-typography-text>{{ 222 }}</a-typography-text>
|
||||
</a-table-summary-cell>
|
||||
<a-table-summary-cell></a-table-summary-cell>
|
||||
</a-table-summary-row>
|
||||
</template> -->
|
||||
</a-table>
|
||||
</a-card>
|
||||
</div>
|
||||
@@ -769,7 +791,7 @@
|
||||
}
|
||||
.contant {
|
||||
width: 100%;
|
||||
height: calc(100% - 5vh);
|
||||
height: calc(95% - 5vh);
|
||||
overflow: auto;
|
||||
.chartsPart {
|
||||
width: 100%;
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
selectedTime.value = false;
|
||||
getMonthData();
|
||||
getBallQuery.value.yearAndMonth = 'month';
|
||||
getMonthPillarData();
|
||||
// getMonthPillarData();
|
||||
};
|
||||
const changeToYear = () => {
|
||||
monthStyles.value = 'background: #transparent';
|
||||
@@ -167,7 +167,7 @@
|
||||
selectedTime.value = true;
|
||||
getYearData();
|
||||
getBallQuery.value.yearAndMonth = 'year';
|
||||
getYearPillarData();
|
||||
// getYearPillarData();
|
||||
};
|
||||
// echarts图
|
||||
const pillarChartRef = ref(null);
|
||||
@@ -514,7 +514,6 @@
|
||||
getBallQuery.value.year = selectYearValue.value;
|
||||
addTreeNode.value.year = selectYearValue.value;
|
||||
getYearData();
|
||||
getYearPillarData();
|
||||
};
|
||||
const getYearData = () => {
|
||||
fetch(carbonPlanning.searchListByYear, yearQueryParams.value).then((res) => {
|
||||
@@ -522,6 +521,9 @@
|
||||
res.data.forEach((item) => {
|
||||
treeCheckedKeys.value.push(item.itemizeId.toString());
|
||||
});
|
||||
addTreeNode.value.itemizeIds = treeCheckedKeys.value;
|
||||
getPillarQuery.value.itemizeIds = treeCheckedKeys.value;
|
||||
getYearPillarData();
|
||||
});
|
||||
};
|
||||
// 获取月数据
|
||||
@@ -536,11 +538,11 @@
|
||||
getPillarQuery.value.selectedMonth = selectMonthValue.value;
|
||||
getBallQuery.value.yearMonth = selectMonthValue.value;
|
||||
getMonthData();
|
||||
getMonthPillarData();
|
||||
};
|
||||
const getMonthData = () => {
|
||||
fetch(carbonPlanning.searchListByMonth, monthQueryParams.value).then((res) => {
|
||||
data.value = res.data;
|
||||
getMonthPillarData();
|
||||
});
|
||||
};
|
||||
defineExpose({
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%; height: 160px"></div>
|
||||
<div style="width: 100%; height: 50px"></div>
|
||||
<div class="button-box">
|
||||
<button class="cancel" @click="logModalVisible = false">关闭</button>
|
||||
</div>
|
||||
|
||||
@@ -107,6 +107,8 @@
|
||||
children: 'childList',
|
||||
},
|
||||
formConfig: {
|
||||
callList: true, // 刷新列表
|
||||
defaultSelection: true, //树默认选择第一个
|
||||
schemas: [
|
||||
{
|
||||
field: 'ctrlType',
|
||||
@@ -220,9 +222,9 @@
|
||||
rowKey: 'uuid',
|
||||
};
|
||||
//刷新列表
|
||||
setTimeout(() => {
|
||||
mainRef.value?.nsTableRef.reload();
|
||||
}, 1);
|
||||
// setTimeout(() => {
|
||||
// mainRef.value?.nsTableRef.reload();
|
||||
// }, 1);
|
||||
};
|
||||
|
||||
//创建页面调用方法
|
||||
|
||||
@@ -62,13 +62,22 @@
|
||||
}}</span></div
|
||||
>
|
||||
</div>
|
||||
<div class="btn-item">
|
||||
<div class="left"> 亮度 </div>
|
||||
<div class="btn-item" v-if="props.type != 5">
|
||||
<div class="left"> 运行模式 </div>
|
||||
<div class="right">
|
||||
<!-- 由于数字0也会被判为false,故只判断undefined 和 null -->
|
||||
<span>{{ item.brightnessBefore != null ? item.brightnessBefore : '--' }}</span>
|
||||
<span>{{
|
||||
item.runModeBefore.label != null ? item.runModeBefore.label : '--'
|
||||
}}</span>
|
||||
<img src="/asset/image/bulbLogo/22406.png" alt="" />
|
||||
<span>{{ item.brightnessAfter != null ? item.brightnessAfter : '--' }}</span>
|
||||
<span>{{ item.runModeAfter.label != null ? item.runModeAfter.label : '--' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-item" v-if="props.type == 5">
|
||||
<div class="left"> 开窗幅度 </div>
|
||||
<div class="right">
|
||||
<span>{{ item.openPercentBefore != null ? item.openPercentBefore : '--' }}</span>
|
||||
<img src="/asset/image/bulbLogo/22406.png" alt="" />
|
||||
<span>{{ item.openPercentAfter != null ? item.openPercentAfter : '--' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-item">
|
||||
@@ -80,12 +89,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-item">
|
||||
<div class="left"> 色温 </div>
|
||||
<div class="left"> 开启状态 </div>
|
||||
<div class="right">
|
||||
<span>{{ item.colorBefore != null ? item.colorBefore : '--' }}</span>
|
||||
<span>{{
|
||||
item.switchStatusBefore.label != null ? item.switchStatusBefore.label : '--'
|
||||
}}</span>
|
||||
<img src="/asset/image/bulbLogo/22406.png" alt="" />
|
||||
<span>
|
||||
{{ item.colorAfter != null ? item.colorAfter : '--' }}
|
||||
{{ item.switchStatusAfter.label != null ? item.switchStatusAfter.label : '--' }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 26 KiB |
@@ -10,6 +10,7 @@
|
||||
placeholder="请选择设备类型"
|
||||
v-model:value="value"
|
||||
style="width: 100%"
|
||||
:treeDefaultExpandedKeys="firstKey"
|
||||
:tree-line="treeLine && { showLeafIcon }"
|
||||
:tree-data="treeData1"
|
||||
@change="changeDeviceType" />
|
||||
@@ -123,10 +124,13 @@
|
||||
orgId.value = result;
|
||||
|
||||
const treeData1 = ref<TreeSelectProps['treeData']>([]);
|
||||
const firstKey = ref<String[]>([]);
|
||||
|
||||
http.post(device.queryDeviceTree, { orgId: orgId.value }).then((res) => {
|
||||
treeData1.value = formatTreeData(res.data);
|
||||
|
||||
if (treeData1.value && treeData1.value.length > 0) {
|
||||
firstKey.value = [treeData1.value[0].value];
|
||||
}
|
||||
// if (treeData1.value && treeData1.value.length > 0) {
|
||||
// if (treeData1.value[0].children) {
|
||||
// value.value = treeData1.value[0].children[0].value;
|
||||
@@ -401,6 +405,7 @@
|
||||
treeLoading,
|
||||
select,
|
||||
divWidth,
|
||||
firstKey,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -48,6 +48,22 @@
|
||||
"></div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<div
|
||||
v-show="!haveData"
|
||||
style="
|
||||
height: 80%;
|
||||
width: 98%;
|
||||
position: absolute;
|
||||
border-radius: 10px;
|
||||
z-index: 5;
|
||||
top: 20%;
|
||||
background: #ffffff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
">
|
||||
<a-empty />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
@@ -59,6 +75,7 @@
|
||||
export default defineComponent({
|
||||
name: 'AnalysisGraph',
|
||||
setup() {
|
||||
let haveData = ref(false);
|
||||
const mode = ref<String>('1');
|
||||
let data = ref<any[]>([]);
|
||||
interface PageData {
|
||||
@@ -112,6 +129,13 @@
|
||||
// 深度拷贝
|
||||
let dataList = JSON.parse(JSON.stringify(pageData.analysisGraphList));
|
||||
// let dataList = pageData.analysisGraphList;
|
||||
|
||||
if (dataList && dataList.length > 0) {
|
||||
haveData.value = true;
|
||||
} else {
|
||||
haveData.value = false;
|
||||
return;
|
||||
}
|
||||
dataList.forEach((item) => {
|
||||
if (item.yoyValue < 0) {
|
||||
item.yoyLabel = { position: 'right' };
|
||||
@@ -552,6 +576,7 @@
|
||||
downloadChart,
|
||||
mode,
|
||||
changeMode,
|
||||
haveData,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
let chartInstance: echarts.ECharts | null = null;
|
||||
|
||||
let haveData = ref(true);
|
||||
let haveData = ref(false);
|
||||
const draw = () => {
|
||||
data.value = pageData.graphGraphList;
|
||||
if (data.value && data.value.length > 0) {
|
||||
|
||||
@@ -121,6 +121,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { message } from 'ant-design-vue';
|
||||
import type { TreeSelectProps, SelectProps } from 'ant-design-vue';
|
||||
import { defineComponent, ref, onMounted, inject, onUnmounted } from 'vue';
|
||||
import dayjs, { Dayjs } from 'dayjs';
|
||||
@@ -276,9 +277,24 @@
|
||||
keyV = key;
|
||||
}
|
||||
if (activeKey.value == '1') {
|
||||
getSelectGraph(keyV);
|
||||
if (checkedKeys.value.length == 0) {
|
||||
message.warning(mode.value == '0' ? '请先选择设备!' : '请先选择节点!');
|
||||
pageData.graphTableList = [];
|
||||
pageData.graphTableColumns = [];
|
||||
pageData.graphGraphList = [];
|
||||
return;
|
||||
} else {
|
||||
getSelectGraph(keyV);
|
||||
}
|
||||
} else {
|
||||
getSelectAnalyse(keyV);
|
||||
if (checkedKeys.value.length == 0) {
|
||||
message.warning(mode.value == '0' ? '请先选择设备!' : '请先选择节点!');
|
||||
pageData.analysisTableList = [];
|
||||
pageData.analysisGraphList = [];
|
||||
return;
|
||||
} else {
|
||||
getSelectAnalyse(keyV);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -293,7 +309,12 @@
|
||||
// return;
|
||||
// }
|
||||
}
|
||||
|
||||
if (checkedKeys.value.length == 0) {
|
||||
pageData.graphTableList = [];
|
||||
pageData.graphTableColumns = [];
|
||||
pageData.graphGraphList = [];
|
||||
return;
|
||||
}
|
||||
let startTime = '';
|
||||
let endTime = '';
|
||||
if (startDate.value && endDate.value) {
|
||||
@@ -369,6 +390,11 @@
|
||||
// return;
|
||||
// }
|
||||
}
|
||||
if (checkedKeys.value.length == 0) {
|
||||
pageData.analysisTableList = [];
|
||||
pageData.analysisGraphList = [];
|
||||
return;
|
||||
}
|
||||
let startTime = '';
|
||||
let endTime = '';
|
||||
if (startDateAnalyse.value != endDateAnalyse.value) {
|
||||
@@ -460,8 +486,8 @@
|
||||
let a: TreeSelectProps['treeData'] = [{ title: label, key: val, children: records }];
|
||||
treeData2.value = a;
|
||||
expandedKeys.value = [val];
|
||||
checkedKeys.value.push(records[0].deviceCode, records[1].deviceCode);
|
||||
getSelect(null);
|
||||
// checkedKeys.value.push(records[0].deviceCode, records[1].deviceCode);
|
||||
// getSelect(null);
|
||||
})
|
||||
.finally(() => {
|
||||
treeLoading.value = false;
|
||||
@@ -478,10 +504,11 @@
|
||||
treeData2.value = formatTreeData(res.data);
|
||||
|
||||
expandedKeys.value = getAllKeys(treeData2.value);
|
||||
if (treeData2.value?.length >= 2) {
|
||||
checkedKeys.value.push(treeData2.value[0].key, treeData2.value[1].key);
|
||||
getSelect(null);
|
||||
}
|
||||
// if (treeData2.value?.length >= 2) {
|
||||
// checkedKeys.value.push(treeData2.value[0].key, treeData2.value[1].key);
|
||||
// getSelect(null);
|
||||
// }
|
||||
// getSelect(null);
|
||||
})
|
||||
.finally(() => {
|
||||
treeLoading.value = false;
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
// } else if (frequencyValue.value == '4') {
|
||||
// dateTypeValue.value = 'year';
|
||||
// }
|
||||
dateRange.value = undefined;
|
||||
// dateRange.value = undefined;
|
||||
};
|
||||
// 获取表格数据
|
||||
const getTableList = () => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<a-input-number>
|
||||
<a-input-number @keydown="handleKeyDown">
|
||||
<template #[item]="data" v-for="item in Object.keys($slots)" :key="item">
|
||||
<slot :name="item" v-bind="data || {}"> </slot>
|
||||
</template>
|
||||
@@ -10,7 +10,15 @@
|
||||
export default defineComponent({
|
||||
name: 'NsInputNumber',
|
||||
setup() {
|
||||
return {};
|
||||
const handleKeyDown = (event: KeyboardEvent) => {
|
||||
// Check if the pressed key is a space
|
||||
if (event.code === 'Space') {
|
||||
event.preventDefault();
|
||||
}
|
||||
};
|
||||
return {
|
||||
handleKeyDown,
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -1,11 +1,22 @@
|
||||
<template>
|
||||
<a-textarea />
|
||||
<a-textarea @keydown="handleKeyDown" />
|
||||
</template>
|
||||
<script lang="ts">
|
||||
import { defineComponent } from 'vue';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'NsTextarea',
|
||||
setup() {
|
||||
const handleKeyDown = (event: KeyboardEvent) => {
|
||||
// Check if the pressed key is a space
|
||||
if (event.code === 'Space') {
|
||||
event.preventDefault();
|
||||
}
|
||||
};
|
||||
return {
|
||||
handleKeyDown,
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
<style lang="less" scoped></style>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<!-- todo drag -->
|
||||
|
||||
<div class="ns-part-tree" v-if="!isEmpty(treeConfig)">
|
||||
<ns-tree-api v-bind="getTreeBindValue" @select="treeSelect" />
|
||||
<ns-tree-api v-bind="getTreeBindValue" @reload="reload" @select="treeSelect" />
|
||||
</div>
|
||||
<div class="ns-part-table">
|
||||
<a-spin :spinning="tableState.loading">
|
||||
@@ -204,7 +204,7 @@
|
||||
import { useTableSession } from '/nerv-lib/component/table/use-table-session';
|
||||
import { useTableColumn } from '/nerv-lib/component/table/use-table-column';
|
||||
import { useNavigate } from '/nerv-lib/use/use-navigate';
|
||||
import { object } from 'vue-types';
|
||||
import { object } from 'vue-types';
|
||||
export default defineComponent({
|
||||
name: 'NsTable',
|
||||
components: {
|
||||
@@ -357,7 +357,6 @@ import { object } from 'vue-types';
|
||||
}
|
||||
|
||||
const tableChangeEvent = (pagination: Props, filters: [], sorter: any) => {
|
||||
|
||||
if (sorter?.field) {
|
||||
if (sorter.order) {
|
||||
orderRef.value = {
|
||||
@@ -482,12 +481,11 @@ import { object } from 'vue-types';
|
||||
};
|
||||
} else {
|
||||
//判断是否是系统菜单页面过来,是的话修改分页总数dyfadd
|
||||
if(props.tableTitle=='系统菜单'){
|
||||
if (props.tableTitle == '系统菜单') {
|
||||
pageParams = {};
|
||||
// [props.paramsPageField]: defaultPageRef.value, // 后端0 开始
|
||||
// [props.paramsPageSizeField]:999,
|
||||
|
||||
}else{
|
||||
} else {
|
||||
pageParams = {
|
||||
[props.paramsPageField]: defaultPageRef.value, // 后端0 开始
|
||||
[props.paramsPageSizeField]:
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
defineOptions({
|
||||
name: 'NsTreeApi',
|
||||
});
|
||||
const emit = defineEmits(['update:treeData', 'select']);
|
||||
const emit = defineEmits(['update:treeData', 'select', 'reload']);
|
||||
// const model = defineModel('treeData');
|
||||
|
||||
const formElRef = ref();
|
||||
@@ -73,6 +73,15 @@
|
||||
const formFinish = debounce((data: object) => {
|
||||
// selectedKeys.value = [];
|
||||
getData(data);
|
||||
// formConfig.value.schemas.forEach((item: any) => {
|
||||
// if (item.callList) {
|
||||
// emit('reload');
|
||||
// }
|
||||
// });
|
||||
//只刷新列表
|
||||
if (formConfig.value.callList && !formConfig.value.defaultSelection) {
|
||||
emit('reload');
|
||||
}
|
||||
}, 200);
|
||||
|
||||
const handleSelect = (keys: any, selectedRows: any) => {
|
||||
@@ -109,6 +118,20 @@
|
||||
})
|
||||
.then((res) => {
|
||||
treeData.value = transform(get(res, resultField));
|
||||
//默认选择第一个 并刷新列表
|
||||
selectedKeys.value = [];
|
||||
if (formConfig.value.callList && formConfig.value.defaultSelection) {
|
||||
handleSelect([treeData.value[0].id], {
|
||||
selected: true,
|
||||
event: 'select',
|
||||
selectedNodes: treeData.value,
|
||||
node: {
|
||||
...treeData.value[0],
|
||||
dataRef: { ...treeData.value[0] },
|
||||
},
|
||||
});
|
||||
// 默认选择第一个
|
||||
}
|
||||
emit('update:treeData', treeData.value);
|
||||
// model.value = treeData.value;
|
||||
})
|
||||
|
||||