| | |
| | | |
| | | |
| | | import { |
| | | getHalfHourBattDevData, |
| | | getHalfHourPwrHisAcinData, |
| | | getHalfHourPwrHisDcoutData, |
| | | getBattDevData100, |
| | | getPwrHisAcinData100, |
| | | getPwrHisDcoutData100, |
| | | getPwrHeartParam, |
| | | } from "@/api/realtime"; |
| | | |
| | | import { |
| | | stopDis, |
| | | restart, |
| | | } from '@/api/control'; |
| | | |
| | | |
| | | const props = defineProps({ |
| | | data: { |
| | |
| | | if (!n) return; |
| | | |
| | | nextTick(() => { |
| | | getHeartParam(); |
| | | // getAcinData(); |
| | | // getDevData(); |
| | | // getDcoutData(); |
| | |
| | | const startIdx = ref(0); |
| | | |
| | | // 半小时的数据条数 1秒一笔计 |
| | | // 改为100笔 可配置 三个属性可以设置不同 |
| | | const counter = 30 * 60; |
| | | |
| | | let xLabels1 = ref([]); |
| | |
| | | } |
| | | |
| | | async function getAcinData() { |
| | | let { code, data, data2 } = await getHalfHourPwrHisAcinData(props.powerId, show_num.acin); |
| | | let { code, data, data2 } = await getPwrHisAcinData100(props.powerId); |
| | | let list = []; |
| | | if (code && data) { |
| | | list = data2; |
| | |
| | | } |
| | | |
| | | async function getDevData() { |
| | | let { code, data, data2 } = await getHalfHourBattDevData(props.battgroupId, show_num.dev); |
| | | let { code, data, data2 } = await getBattDevData100(props.battgroupId, props.powerId); |
| | | let list = []; |
| | | if (code && data) { |
| | | list = data2; |
| | |
| | | } |
| | | |
| | | async function getDcoutData() { |
| | | let { code, data, data2, data3 } = await getHalfHourPwrHisDcoutData(props.powerId, show_num.dcout); |
| | | let { code, data, data2, data3 } = await getPwrHisDcoutData100(props.powerId); |
| | | let list = []; |
| | | let cfg = []; |
| | | if (code && data) { |
| | |
| | | // let num = Math.ceil(counter / show_num['dev']); |
| | | // TODO battRtstate 缺少loadCurr |
| | | let devObj = props.data.battRtstate; |
| | | xLabels1.value.shift(); |
| | | xLabels1.value.push(devObj.recordDatetime); |
| | | xLabels2.value.shift(); |
| | | xLabels2.value.push(devObj.recDatetime); |
| | | chartData['dev'].shift(); |
| | | chartData['dev'].push(devObj); |
| | | updateChart2(); |
| | |
| | | // 蓄电池信息 |
| | | battInfo.value = props.data.sticRtdata; |
| | | } |
| | | |
| | | const configVisible = ref(false); |
| | | const formRef = ref(); |
| | | const form1 = reactive({ |
| | | time: 5, |
| | | count: 100, |
| | | }); |
| | | |
| | | function validatorTime(rule, value, callback) { |
| | | if(/^\d+$/.test(value)) { |
| | | if(value<1 || value>30) { |
| | | callback(new Error('范围1~30')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }else { |
| | | callback(new Error('请输入整数')); |
| | | } |
| | | } |
| | | |
| | | function validatorCount(rule, value, callback) { |
| | | if(/^\d+$/.test(value)) { |
| | | if (value<50 || value>200) { |
| | | callback(new Error('范围50~200')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }else { |
| | | callback(new Error('请输入整数')); |
| | | } |
| | | } |
| | | |
| | | const rules = { |
| | | time: [{ required: true, message: '请输入时间', trigger: ['blur', 'change'] }, |
| | | { validator: validatorTime, trigger: ['blur', 'change'] }, |
| | | ], |
| | | count: [{ required: true, message: '请输入条数', trigger: ['blur', 'change'] }, |
| | | { validator: validatorCount, trigger: ['blur', 'change'] }, |
| | | ], |
| | | }; |
| | | |
| | | // 取前半小时数据 更新图表 |
| | | |
| | |
| | | hrParamVisible.value = true; |
| | | } |
| | | |
| | | const config = ref({}); |
| | | |
| | | async function getHeartParam() { |
| | | let res = await getPwrHeartParam(props.powerId); |
| | | let { code, data, data2 } = res.data; |
| | | let cfg = {}; |
| | | if (code && data) { |
| | | cfg = data2; |
| | | } |
| | | config.value = cfg; |
| | | } |
| | | |
| | | const configTitle = ref(''); |
| | | function setConfig(type) { |
| | | switch(type) { |
| | | case 0: |
| | | configTitle.value = '设置交流输入采集参数'; |
| | | form1.time = config.value.acinInterverCfg || 5; |
| | | form1.count = config.value.acinCountCfg || 100; |
| | | break; |
| | | case 1: |
| | | configTitle.value = '设置直流输出采集参数'; |
| | | form1.time = config.value.acoutInterverCfg || 5; |
| | | form1.count = config.value.acoutCountCfg || 100; |
| | | break; |
| | | case 2: |
| | | configTitle.value = '设置核容设备采集参数'; |
| | | form1.time = config.value.hrInterverCfg || 5; |
| | | form1.count = config.value.hrCountCfg || 100; |
| | | break; |
| | | } |
| | | configVisible.value = true; |
| | | } |
| | | |
| | | function updateConfig() { |
| | | configVisible.value = false; |
| | | } |
| | | |
| | | onMounted(async () => { |
| | | numChange('acin'); |
| | | numChange('dcout'); |
| | | numChange('dev'); |
| | | |
| | | // await getAcinData(); |
| | | // await getDevData(); |
| | | // await getDcoutData(); |
| | | |
| | | // if (chart1.value) { |
| | | // chart1.value.updateChart(['04:12', '04:13', '04:14'], { |
| | | // '设备温度': [100, 200, 220], |
| | | // '组端电流': [100, 200, 220], |
| | | // '组端电压': [100, 200, 220], |
| | | // '负载电流': [100, 200, 220], |
| | | // }); |
| | | // } |
| | | }); |
| | | </script> |
| | | |
| | |
| | | <div class="card-item"> |
| | | <card title="交流输入"> |
| | | <template #tools> |
| | | <div class="page-filter"> |
| | | <div class="label">粒度</div> |
| | | <div class="value"> |
| | | <el-select |
| | | v-model="show_num['acin']" |
| | | size="small" |
| | | style="width: 50px" |
| | | @change="numChange('acin')" |
| | | > |
| | | <el-option |
| | | v-for="(n, i) in 10" |
| | | :key="'list0_' + i" |
| | | :label="'x' + n" |
| | | :value="n" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <el-radio-group class="tab-idx" v-model="tabIdx0" size="small"> |
| | | <el-radio-button label="电流" :value="0" /> |
| | | <el-radio-button label="电压" :value="1" /> |
| | | </el-radio-group> |
| | | <svg-icon class-name="btn-setting" icon-class="setting" @click="setConfig(0)"></svg-icon> |
| | | </template> |
| | | <line-chart ref="chart0"></line-chart> |
| | | </card> |
| | |
| | | <div class="card-item"> |
| | | <card title="直流输出"> |
| | | <template #tools> |
| | | <div class="page-filter"> |
| | | <div class="label">粒度</div> |
| | | <div class="value"> |
| | | <el-select |
| | | v-model="show_num['dcout']" |
| | | size="small" |
| | | style="width: 50px" |
| | | @change="numChange('dcout')" |
| | | > |
| | | <el-option |
| | | v-for="(n, i) in 10" |
| | | :key="'list0_' + i" |
| | | :label="'x' + n" |
| | | :value="n" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <el-radio-group class="tab-idx" v-model="tabIdx1" size="small"> |
| | | <el-radio-button label="电流" :value="0" /> |
| | | <el-radio-button label="电压" :value="1" /> |
| | | </el-radio-group> |
| | | <svg-icon class-name="btn-setting" icon-class="setting" @click="setConfig(1)"></svg-icon> |
| | | </template> |
| | | <line-chart3 |
| | | ref="chart1" |
| | |
| | | <div class="card-item"> |
| | | <card title="核容设备信息"> |
| | | <template #tools> |
| | | <div class="page-filter"> |
| | | <div class="label">粒度</div> |
| | | <div class="value"> |
| | | <el-select |
| | | v-model="show_num['dev']" |
| | | size="small" |
| | | style="width: 50px" |
| | | @change="numChange('dev')" |
| | | > |
| | | <el-option |
| | | v-for="(n, i) in 10" |
| | | :key="'list0_' + i" |
| | | :label="'x' + n" |
| | | :value="n" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <!-- <svg-icon class-name="btn-setting" icon-class="setting"></svg-icon> --> |
| | | <svg-icon class-name="btn-setting" icon-class="setting" @click="setConfig(2)"></svg-icon> |
| | | </template> |
| | | <line-chart2 ref="chart2"></line-chart2> |
| | | </card> |
| | |
| | | </card> |
| | | </div> |
| | | </div> |
| | | <!-- 设置间隔参数 --> |
| | | <el-dialog v-model="configVisible" draggable :title="configTitle" width="560"> |
| | | <el-form ref="formRef" :model="form1" :rules="rules" label-width="10em"> |
| | | <el-form-item label="间隔时间(分)" prop="time"> |
| | | <el-input v-model="form1.time"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="数据笔数" prop="count"> |
| | | <el-input v-model="form1.count"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <el-button @click="configVisible = false">关闭</el-button> |
| | | <!-- <el-button type="primary" @click="getConfig">读取</el-button> --> |
| | | <el-button type="primary" @click="updateConfig">设定</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | <!-- 设置核容参数 --> |
| | | <el-dialog v-model="hrParamVisible" :title="hrParamTitle" width="960"> |
| | | <el-dialog v-model="hrParamVisible" draggable :title="hrParamTitle" width="960"> |
| | | <hr-params :devId="devId" v-model:visible="hrParamVisible" :battgroupId="battgroupId"></hr-params> |
| | | </el-dialog> |
| | | <!-- 设置设备告警参数 --> |
| | | <el-dialog v-model="devAlmVisible" title="设备告警参数" width="960"> |
| | | <el-dialog v-model="devAlmVisible" draggable title="设备告警参数" width="960"> |
| | | <dev-alarm-params :devId="devId" v-model:visible="devAlmVisible"></dev-alarm-params> |
| | | </el-dialog> |
| | | </div> |