he wei
15 小时以前 011aab07af85ba820b9f96a02c249b7ba26c8d26
src/views/realtime/tabs/system.vue
@@ -18,15 +18,17 @@
import {
   getHalfHourBattDevData,
   getHalfHourPwrHisAcinData,
   getHalfHourPwrHisDcoutData,
   getBattDevData100,
   getPwrHisAcinData100,
   getPwrHisDcoutData100,
  getPwrHeartParam,
} from "@/api/realtime";
import {
  stopDis,
  restart,
} from '@/api/control';
const props = defineProps({
   data: {
@@ -137,6 +139,7 @@
      if (!n) return;
      nextTick(() => {
      getHeartParam();
         // getAcinData();
         // getDevData();
         // getDcoutData();
@@ -182,6 +185,7 @@
const startIdx = ref(0);
// 半小时的数据条数 1秒一笔计
// 改为100笔 可配置 三个属性可以设置不同
const counter = 30 * 60;
let xLabels1 = ref([]);
@@ -296,7 +300,7 @@
}
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;
@@ -305,7 +309,7 @@
}
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;
@@ -314,7 +318,7 @@
}
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) {
@@ -508,8 +512,8 @@
   // 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();
@@ -517,6 +521,46 @@
   // 蓄电池信息
   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'] },
  ],
};
// 取前半小时数据 更新图表
@@ -554,24 +598,46 @@
   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>
@@ -648,28 +714,11 @@
      <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>
@@ -677,28 +726,11 @@
      <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"
@@ -713,25 +745,7 @@
      <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>
@@ -815,12 +829,28 @@
        </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>