diff --git a/psdc-ui/src/api/emonitor/api.js b/psdc-ui/src/api/emonitor/api.js index 701cc15..687bfaa 100644 --- a/psdc-ui/src/api/emonitor/api.js +++ b/psdc-ui/src/api/emonitor/api.js @@ -137,4 +137,9 @@ export function setKey2(data) { //模型测试 export function modelTest(data) { return request.post('system/model/getReport',data) -} \ No newline at end of file +} + +//建筑供暖设备列表 +export function getDevList() { + return request.get('system/model/selAllDevices') +} diff --git a/psdc-ui/src/layout/components/Sidebar/Logo.vue b/psdc-ui/src/layout/components/Sidebar/Logo.vue index 49a7b47..c334af6 100644 --- a/psdc-ui/src/layout/components/Sidebar/Logo.vue +++ b/psdc-ui/src/layout/components/Sidebar/Logo.vue @@ -1,11 +1,11 @@ <template> <div class="sidebar-logo-container" :class="{ 'collapse': collapse }" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }"> <transition name="sidebarLogoFade"> - <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/"> + <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/bigview"> <img v-if="logo" :src="logo" class="sidebar-logo" /> <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1> </router-link> - <router-link v-else key="expand" class="sidebar-logo-link" to="/"> + <router-link v-else key="expand" class="sidebar-logo-link" to="/bigview"> <img v-if="logo" :src="logo" class="sidebar-logo" /> <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }}</h1> </router-link> diff --git a/psdc-ui/src/views/system/model/index.vue b/psdc-ui/src/views/system/model/index.vue index 0348c89..23903eb 100644 --- a/psdc-ui/src/views/system/model/index.vue +++ b/psdc-ui/src/views/system/model/index.vue @@ -1,110 +1,27 @@ <template> <div class="bod"> <div class="inp"> - <div class="til">替代前项目信息</div> - <el-form :model="addForm" ref="ruleForm1" :rules="rules" label-width="88px"> - <el-row> - <el-col :span="5"> - <el-form-item label="设备类型:" prop="devType" label-width="140px"> - <el-select v-model="addForm.devType"> - <el-option v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="设备细类:" prop="devSubType" label-width="190px"> - <el-select v-model="addForm.devSubType"> - <el-option v-for="item in options1" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="技术类型:" prop="devTechType" label-width="190px"> - <el-select v-model="addForm.devTechType"> - <el-option v-for="item in options2" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="设备功率(kW):" prop="devPower" label-width="290px"> - <el-input v-model="addForm.devPower" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="设备单价(万元):" prop="devPrice" label-width="142px"> - <el-input v-model="addForm.devPrice"/> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="电替代设备年人工费用(万元):" prop="devSubstituteLaborCost" label-width="250px"> - <el-input v-model="addForm.devSubstituteLaborCost"/> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="原设备的人工费用(万元):" prop="laborCost" label-width="220px"> - <el-input v-model="addForm.laborCost"/> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="单台电设备参考的可供暖面积(万平方米):" prop="devReferenceArea" label-width="300px"> - <el-input v-model="addForm.devReferenceArea"/> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="设备使用年限(年):" prop="devServiceLife" label-width="160px"> - <el-input v-model="addForm.devServiceLife"/> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="设备年运行时长(小时):" label-width="190px"> - <el-input v-model="addForm.devAnnualOperationTime"/> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="热效率:" prop="heatEfficiency" label-width="190px"> - <el-input v-model="addForm.heatEfficiency"/> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="备注:" label-width="290px"> - <el-input v-model="addForm.remarkInfo"/> - </el-form-item> - </el-col> - </el-row> - </el-form> <div class="til">配电信息</div> <el-form :model="addForm" ref="ruleForm2" :rules="rules" label-width="88px"> <el-row> - <el-col :span="5"> - <el-form-item label="电源形式:" prop="sceneName" label-width="140px"> - <el-select v-model="test1"> - <el-option v-for="item in options3" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> +<!-- <el-col :span="5">--> +<!-- <el-form-item label="电源形式:" prop="sceneName" label-width="140px">--> +<!-- <el-select v-model="test1">--> +<!-- <el-option v-for="item in options3"--> +<!-- :key="item.value"--> +<!-- :label="item.label"--> +<!-- :value="item.label">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="6">--> +<!-- <el-form-item label="变压器合同总容量(kVA):" prop="sceneName" label-width="190px">--> +<!-- <el-input v-model="test2"/>--> +<!-- </el-form-item>--> +<!-- </el-col>--> <el-col :span="6"> - <el-form-item label="变压器合同总容量(kVA):" prop="sceneName" label-width="190px"> - <el-input v-model="test2"/> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="变压器运行总容量(kVA):" prop="runCapacity" label-width="190px"> + <el-form-item label="变压器运行总容量(kVA):" prop="runCapacity" label-width="230px"> <el-input v-model="addForm.runCapacity"/> </el-form-item> </el-col> @@ -115,20 +32,20 @@ </el-col> </el-row> </el-form> - <div class="til">产品库</div> + <div class="til">替代前项目信息</div> <el-form :model="addForm" ref="ruleForm3" :rules="rules" label-width="88px"> <el-row> - <el-col :span="5"> - <el-form-item label="建筑类型:" prop="sceneName" label-width="140px"> - <el-select v-model="test3"> - <el-option v-for="item in options4" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> +<!-- <el-col :span="5">--> +<!-- <el-form-item label="建筑类型:" prop="sceneName" label-width="140px">--> +<!-- <el-select v-model="test3">--> +<!-- <el-option v-for="item in options4"--> +<!-- :key="item.value"--> +<!-- :label="item.label"--> +<!-- :value="item.label">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> +<!-- </el-col>--> <el-col :span="6"> <el-form-item label="建筑面积(平方米):" prop="heatingArea" label-width="190px"> <el-input v-model="addForm.heatingArea" > @@ -136,121 +53,122 @@ </el-input> </el-form-item> </el-col> - <el-col :span="6"> - <el-form-item label="年采暖时间(天):" prop="days" label-width="190px"> + <el-col :span="7"> + <el-form-item label="年采暖时间(天):" prop="days" label-width="270px"> <el-input v-model="addForm.days"> </el-input> </el-form-item> </el-col> - <el-col :span="7"> - <el-form-item label="供暖末端形式:" prop="sceneName" label-width="290px"> - <el-select v-model="test4"> - <el-option v-for="item in options5" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="蒸汽/生活热水需求:" prop="sceneName" label-width="142px"> - <el-select v-model="test5"> - <el-option v-for="item in options6" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> +<!-- <el-col :span="7">--> +<!-- <el-form-item label="供暖末端形式:" prop="sceneName" label-width="290px">--> +<!-- <el-select v-model="test4">--> +<!-- <el-option v-for="item in options5"--> +<!-- :key="item.value"--> +<!-- :label="item.label"--> +<!-- :value="item.label">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="5">--> +<!-- <el-form-item label="蒸汽/生活热水需求:" prop="sceneName" label-width="142px">--> +<!-- <el-select v-model="test5">--> +<!-- <el-option v-for="item in options6"--> +<!-- :key="item.value"--> +<!-- :label="item.label"--> +<!-- :value="item.label">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="6">--> +<!-- <el-form-item label="每小时最大需求量(吨):" prop="sceneName" label-width="220px">--> +<!-- <el-input v-model="test6"/>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="6">--> +<!-- <el-form-item label="是否有供冷需求:" prop="sceneName" label-width="220px">--> +<!-- <el-select v-model="test7">--> +<!-- <el-option v-for="item in options6"--> +<!-- :key="item.value"--> +<!-- :label="item.label"--> +<!-- :value="item.label">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="7">--> +<!-- <el-form-item label="年供冷时间(天):" prop="sceneName" label-width="290px">--> +<!-- <el-input v-model="test8"/>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="5">--> +<!-- <el-form-item label="供冷末端形式:" prop="sceneName" label-width="143px">--> +<!-- <el-select v-model="test9">--> +<!-- <el-option v-for="item in options5"--> +<!-- :key="item.value"--> +<!-- :label="item.label"--> +<!-- :value="item.label">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="6">--> +<!-- <el-form-item label="原设备类型:" prop="sceneName" label-width="190px">--> +<!-- <el-select v-model="test10">--> +<!-- <el-option v-for="item in options"--> +<!-- :key="item.value"--> +<!-- :label="item.label"--> +<!-- :value="item.label">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="6">--> +<!-- <el-form-item label="台数:" prop="sceneName" label-width="190px">--> +<!-- <el-input v-model="test11"/>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="7">--> +<!-- <el-form-item label="功能:" prop="sceneName" label-width="290px">--> +<!-- <el-select v-model="test12">--> +<!-- <el-option v-for="item in options7"--> +<!-- :key="item.value"--> +<!-- :label="item.label"--> +<!-- :value="item.label">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="5">--> +<!-- <el-form-item label="能源类型:" prop="sceneName" label-width="140px">--> +<!-- <el-select v-model="test13">--> +<!-- <el-option v-for="item in options8"--> +<!-- :key="item.value"--> +<!-- :label="item.label"--> +<!-- :value="item.label">--> +<!-- </el-option>--> +<!-- </el-select>--> +<!-- </el-form-item>--> +<!-- </el-col>--> <el-col :span="6"> - <el-form-item label="每小时最大需求量(吨):" prop="sceneName" label-width="220px"> - <el-input v-model="test6"/> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="是否有供冷需求:" prop="sceneName" label-width="220px"> - <el-select v-model="test7"> - <el-option v-for="item in options6" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="年供冷时间(天):" prop="sceneName" label-width="290px"> - <el-input v-model="test8"/> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="供冷末端形式:" prop="sceneName" label-width="143px"> - <el-select v-model="test9"> - <el-option v-for="item in options5" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="原设备类型:" prop="sceneName" label-width="190px"> - <el-select v-model="test10"> - <el-option v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="台数:" prop="sceneName" label-width="190px"> - <el-input v-model="test11"/> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="功能:" prop="sceneName" label-width="290px"> - <el-select v-model="test12"> - <el-option v-for="item in options7" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="能源类型:" prop="sceneName" label-width="140px"> - <el-select v-model="test13"> - <el-option v-for="item in options8" - :key="item.value" - :label="item.label" - :value="item.label"> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="上年运行费用(万元):" prop="lastYearFee" label-width="190px"> + <el-form-item label="上年运行费用(元):" prop="lastYearFee" label-width="190px"> <el-input v-model="addForm.lastYearFee"/> </el-form-item> </el-col> - <el-col :span="6"> - <el-form-item label="模型编码:" prop="hotMedium" label-width="190px"> - <el-input v-model="addForm.hotMedium"/> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="场景编码:" prop="type" label-width="290px"> - <el-input v-model="addForm.type"/> - </el-form-item> - </el-col> - <el-col :span="7"> - <el-form-item label="密钥:" prop="key" label-width="140px"> +<!-- <el-col :span="6">--> +<!-- <el-form-item label="模型编码:" prop="" label-width="190px">--> +<!-- <el-input v-model="addForm.hotMedium"/>--> +<!-- </el-form-item>--> +<!-- </el-col>--> +<!-- <el-col :span="7">--> +<!-- <el-form-item label="场景编码:" prop="" label-width="290px">--> +<!-- <el-input v-model="addForm.type"/>--> +<!-- </el-form-item>--> +<!-- </el-col>--> + <el-divider></el-divider> + <el-col :span="8"> + <el-form-item label="密钥:" prop="key" label-width="110px"> <el-input v-model="addForm.key"/> </el-form-item> </el-col> @@ -284,7 +202,7 @@ </div> <div class="result" v-if="show1"> <div class="til"> - 最佳方案:方案一 + 最佳方案:{{result.planName}} </div> <div class="info"> <div class="card"> @@ -294,17 +212,17 @@ <el-form :model="result" label-width="140px"> <el-row> <el-col :span="4" style="margin-left: 70px"> - <el-form-item label="初次投资费用(万元):" prop="sceneName"> + <el-form-item label="初次投资费用(元):" prop="sceneName"> <el-input v-model="result.startCost" placeholder=""/> </el-form-item> </el-col> <el-col :span="4"> - <el-form-item label="年运行费用(万元):" prop="sceneName"> + <el-form-item label="年运行费用(元):" prop="sceneName"> <el-input v-model="result.yearRunCost" placeholder=""/> </el-form-item> </el-col> <el-col :span="4"> - <el-form-item label="年总费用(万元):" prop="sceneName"> + <el-form-item label="年总费用(元):" prop="sceneName"> <el-input v-model="result.yearCost" placeholder=""/> </el-form-item> </el-col> @@ -353,7 +271,7 @@ </el-form-item> </el-col> <el-col :span="4"> - <el-form-item label="总价(万元):" prop="sceneName"> + <el-form-item label="总价(元):" prop="sceneName"> <el-input v-model="result.devCost" placeholder=""/> </el-form-item> </el-col> @@ -386,13 +304,25 @@ </div> </div> </div> + <div class="inp"> + <div class="til">产品库</div> + <el-form :model="addForm" ref="ruleForm1" :rules="rules" label-width="88px"> + <el-row> + <el-col :span="4.5" v-for="(item,index) in options" :key="index"> + <el-form-item :label="item.devTechType" prop="" label-width="300px"> + </el-form-item> + </el-col> + </el-row> + </el-form> + </div> + </div> </template> <script setup> import {ElMessage, ElMessageBox} from 'element-plus' import {ref, reactive, watch, onMounted} from "vue"; -import {modelTest,} from '../../../api/emonitor/api' +import {modelTest,getDevList} from '../../../api/emonitor/api' const open = ref(true) const arr = ref([1]) const point = ref(3.7) @@ -414,11 +344,51 @@ const test13 = ref(null) const role1 = ref(false) const role2 = ref(false) const role3 = ref(false) + +onMounted(()=>{ + getDevList().then((res)=>{ + options.value=res.data + }) +}) + +const devSpecList = ref([ + { + "devType": '', + "heatEfficiency":'', + "devTechType": '', + "devSubstituteLaborCost":'', + "devReferenceArea":'', + "devPower":'' , + "devSubType": '', + "devPrice":'' , + "devServiceLife":'', + "laborCost":'' , + "id": "1" +} +]) +function addDev (){ + devSpecList.value.push({ + "devType": '', + "heatEfficiency":'', + "devTechType": '', + "devSubstituteLaborCost":'', + "devReferenceArea":'', + "devPower":'' , + "devSubType": '', + "devPrice":'' , + "devServiceLife":'', + "laborCost":'' , + "id": "1" + }) +} +function delDev (){ + devSpecList.value.pop() +} const options = ref([{ label: '电锅炉', value: 1 }, {label: '热泵', value: 2}]) const options3 = ref([{ - label: '转变', value: 1 + label: '专变', value: 1 }, {label: '公变', value: 2}]) const options4 = ref([{ label: '机关', value: 1}, @@ -468,6 +438,7 @@ const options2 = ref([ {label: '高温蒸汽热泵', value: 11}, ]) const ruleForm1 = ref({ + key: '', devType: '', devSubType: '', devTechType: '', @@ -491,11 +462,10 @@ const ruleForm3 = ref({ lastYearFee: '', hotMedium: '', type: '', - key: '', }) const rules = reactive({ devType: [ - { required: true, message: '请选择设备类型', trigger: 'change' }, + { required: true, message: '请选择产品库', trigger: 'change' }, ], devSubType: [ { required: true, message: '请选择设备细类', trigger: 'change' }, @@ -664,21 +634,6 @@ const submitForm = () => { console.log('表单验证通过') modelTest( { - "devSpecList": [ - { - "devType": addForm.devType, - "heatEfficiency":addForm.heatEfficiency, - "devTechType": addForm.devTechType, - "devSubstituteLaborCost":addForm.devSubstituteLaborCost, - "devReferenceArea":addForm.devReferenceArea, - "devPower":addForm.devPower , - "devSubType": addForm.devSubType, - "devPrice":addForm.devPrice , - "devServiceLife":addForm.devServiceLife, - "laborCost":addForm.laborCost , - "id": "1" - } - ], "param": { "electricityPrice": "20.26", "hotDevicePower": "20.26", @@ -700,13 +655,27 @@ const submitForm = () => { } ).then((res)=>{ console.log(res) - for(let i in res.report.matchedDeviceList) - { - res.report.matchedDeviceList[i].rat = res.report.matchedDeviceList[i].rating/20 + if(res.report==null){ + ElMessage({ + message: '产品库至少需要两种不同类型的设备!', + type: 'error', + }) + }else{ + for(let i in res.report.matchedDeviceList) + { + res.report.matchedDeviceList[i].rat = res.report.matchedDeviceList[i].rating/20 + } + let num = res.report.matchedDeviceList.reduce((prev, curr) => { + return curr.rat > prev.rat ? curr : prev; + }); + res.report.planName = num.planName + res.report.environment = "本次改造方案减排"+res.report.calculate+"吨" + result.value=res.report + show1.value = true } - result.value=res.report - show1.value = true + }) + }else{ console.log('表表单验证失败') } @@ -736,6 +705,21 @@ function cancel() { addForm.lastYearNeed = null addForm.runCapacity = null addForm.key = null + devSpecList.value=[ + { + "devType": '', + "heatEfficiency":'', + "devTechType": '', + "devSubstituteLaborCost":'', + "devReferenceArea":'', + "devPower":'' , + "devSubType": '', + "devPrice":'' , + "devServiceLife":'', + "laborCost":'' , + "id": "1" + } + ] }; </script>