<template>
|
<div class="params-container">
|
<el-form
|
ref="ruleForm"
|
size="mini"
|
label-position="top"
|
:model="params"
|
:rules="rules"
|
class="params-dialog"
|
>
|
<el-form-item label="电池组名称">
|
<el-input v-model="otherParams.groupName" readonly></el-input>
|
</el-form-item>
|
<div class="table-layout">
|
<div class="table-row">
|
<div class="table-cell pr16">
|
<el-form-item label="设备ID">
|
<el-input v-model="otherParams.fbsdeviceId" readonly></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item label="单体电压" prop="monVol">
|
<el-input
|
v-model="params.monVol"
|
:disabled="workstate != 0"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item label="单体节数" prop="monCount">
|
<el-input
|
v-model="params.monCount"
|
:disabled="workstate != 0"
|
></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell pr16">
|
<el-form-item label="温度告警(℃)">
|
<el-input v-model="params.charHighTmp" :readonly="readOnly"></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item label="标称容量" prop="offlineyhCycle">
|
<el-input
|
v-model="params.offlineyhCycle"
|
:disabled="workstate != 0"
|
></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
</div>
|
<el-tabs
|
v-model="acTabs"
|
type="border-card"
|
class="flex-layout noborder"
|
@tab-click="tabClick"
|
>
|
<el-tab-pane
|
label="充电"
|
name="charge"
|
:disabled="type !== 'charge' && type !== 'activate'"
|
>
|
<div class="table-layout">
|
<div class="table-row">
|
<div class="table-cell pr16">
|
<el-form-item label="恒流阶段总数" prop="flowoverCount">
|
<el-select
|
v-model="params.flowoverCount"
|
placeholder="请选择"
|
:disabled="workstate != 0"
|
>
|
<el-option
|
v-for="item in flowOverCount"
|
:key="item"
|
:label="item"
|
:value="item"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流1阶段充电电流"
|
prop="flowoverCharcurr1"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 1" :readonly="readOnly"
|
v-model="params.flowoverCharcurr1"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流1阶段充电时长"
|
prop="flowoverChartime1"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 1" :readonly="readOnly"
|
v-model="params.flowoverChartime1"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流1阶段保护电压"
|
prop="cprotectvol1"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 1 || workstate != 0" :readonly="readOnly"
|
v-model="params.cprotectvol1"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流1阶段单体上限"
|
prop="cmonUppervol1"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 1" :readonly="readOnly"
|
v-model="params.cmonUppervol1"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item
|
label="恒流1阶段上限个数"
|
prop="cmonUppernum1"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 1" :readonly="readOnly"
|
v-model="params.cmonUppernum1"
|
></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell pr16"></div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流2阶段充电电流"
|
prop="flowoverCharcurr2"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 2" :readonly="readOnly"
|
v-model="params.flowoverCharcurr2"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流2阶段充电时长"
|
prop="flowoverChartime2"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 2" :readonly="readOnly"
|
v-model="params.flowoverChartime2"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流2阶段保护电压"
|
prop="cprotectvol2"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 2 || workstate != 0" :readonly="readOnly"
|
v-model="params.cprotectvol2"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流2阶段单体上限"
|
prop="cmonUppervol2"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 2" :readonly="readOnly"
|
v-model="params.cmonUppervol2"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item
|
label="恒流2阶段上限个数"
|
prop="cmonUppernum2"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 2" :readonly="readOnly"
|
v-model="params.cmonUppernum2"
|
></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell pr16"></div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流3阶段充电电流"
|
prop="flowoverCharcurr3"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 3" :readonly="readOnly"
|
v-model="params.flowoverCharcurr3"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流3阶段充电时长"
|
prop="flowoverChartime3"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 3" :readonly="readOnly"
|
v-model="params.flowoverChartime3"
|
></el-input>
|
</el-form-item>
|
</div>
|
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流3阶段保护电压"
|
prop="cprotectvol3"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 3 || workstate != 0" :readonly="readOnly"
|
v-model="params.cprotectvol3"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒流3阶段单体上限"
|
prop="cmonUppervol3"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 3" :readonly="readOnly"
|
v-model="params.cmonUppervol3"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item
|
label="恒流3阶段上限个数"
|
prop="cmonUppernum3"
|
>
|
<el-input
|
:disabled="params.flowoverCount < 3" :readonly="readOnly"
|
v-model="params.cmonUppernum3"
|
></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
<!-- -->
|
<div class="table-row">
|
<div class="table-cell pr16">
|
<el-form-item label="恒压阶段总数" prop="hvChargeNum">
|
<el-select v-model="params.hvChargeNum" placeholder="请选择" :disabled="workstate != 0">
|
<el-option
|
v-for="item in HVCount"
|
:key="item"
|
:label="item"
|
:value="item"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压1阶段充电电压"
|
prop="hvChargeVol1"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 1 || workstate != 0" :readonly="readOnly"
|
v-model="params.hvChargeVol1"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压1阶段充电时长"
|
prop="hvTime1"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 1" :readonly="readOnly"
|
v-model="params.hvTime1"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压1阶段保护电流"
|
prop="hvProtectcurr1"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 1" :readonly="readOnly"
|
v-model="params.hvProtectcurr1"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压1阶段单体上限"
|
prop="hvMonUppervol1"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 1" :readonly="readOnly"
|
v-model="params.hvMonUppervol1"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item
|
label="恒压1阶段上限个数"
|
prop="hvMonUppernum1"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 1" :readonly="readOnly"
|
v-model="params.hvMonUppernum1"
|
></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell pr16"></div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压2阶段充电电压"
|
prop="hvChargeVol2"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 2 || workstate != 0" :readonly="readOnly"
|
v-model="params.hvChargeVol2"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压2阶段充电时长"
|
prop="hvTime2"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 2" :readonly="readOnly"
|
v-model="params.hvTime2"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压2阶段保护电流"
|
prop="hvProtectcurr2"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 2" :readonly="readOnly"
|
v-model="params.hvProtectcurr2"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压2阶段单体上限"
|
prop="hvMonUppervol2"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 2" :readonly="readOnly"
|
v-model="params.hvMonUppervol2"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item
|
label="恒压2阶段上限个数"
|
prop="hvMonUppernum2"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 2" :readonly="readOnly"
|
v-model="params.hvMonUppernum2"
|
></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell pr16"></div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压3阶段充电电压"
|
prop="hvChargeVol3"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 3 || workstate != 0" :readonly="readOnly"
|
v-model="params.hvChargeVol3"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压3阶段充电时长"
|
prop="hvTime3"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 3" :readonly="readOnly"
|
v-model="params.hvTime3"
|
></el-input>
|
</el-form-item>
|
</div>
|
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压3阶段保护电流"
|
prop="hvProtectcurr3"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 3" :readonly="readOnly"
|
v-model="params.hvProtectcurr3"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item
|
label="恒压3阶段单体上限"
|
prop="hvMonUppervol3"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 3" :readonly="readOnly"
|
v-model="params.hvMonUppervol3"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item
|
label="恒压3阶段上限个数"
|
prop="hvMonUppernum3"
|
>
|
<el-input
|
:disabled="params.hvChargeNum < 3" :readonly="readOnly"
|
v-model="params.hvMonUppernum3"
|
></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
</div>
|
</el-tab-pane>
|
<el-tab-pane
|
label="放电"
|
name="discharge"
|
:disabled="type !== 'discharge' && type !== 'activate'"
|
>
|
<div class="table-layout">
|
<div class="table-row">
|
<div class="table-cell pr16">
|
<el-form-item label="放电模式">
|
<!-- 恒电流 功率 电阻 -->
|
<el-select
|
v-model="params.onlineVolLowAction"
|
:disabled="workstate != 0"
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="item in testType"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item label="预放电流(A)" prop="disCurr">
|
<el-input
|
v-model="params.disCurr"
|
:disabled="params.onlineVolLowAction != 0" :readonly="readOnly"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item label="预放容量(AH)" prop="disCap">
|
<el-input v-model="params.disCap" :readonly="readOnly"></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item label="小时率" prop="hourRate">
|
<el-select
|
v-model="params.hourRate"
|
@change="hourRateChanged"
|
:disabled="params.onlineVolLowAction != 0 || readOnly"
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="item in hourRate"
|
:key="item"
|
:label="item"
|
:value="item"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell pr16">
|
<el-form-item label="预放阻值(mΩ)" prop="disPreRes">
|
<el-input
|
v-model="params.disPreRes"
|
:disabled="params.onlineVolLowAction != 2" :readonly="readOnly"
|
></el-input
|
>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item label="预放功率(KW)" prop="disPower">
|
<el-input
|
v-model="params.disPower"
|
:disabled="params.onlineVolLowAction != 1" :readonly="readOnly"
|
></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item label="预放时间(分钟)" prop="disTime">
|
<el-input v-model="params.disTime" :readonly="readOnly"></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item label="组端下限(V)" prop="groupvolLow">
|
<el-input v-model="params.groupvolLow" :readonly="readOnly"></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell pr16">
|
<el-form-item label="单体下限(V)" prop="monomervolLow">
|
<el-input v-model="params.monomervolLow" :readonly="readOnly"></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item label="下限个数(个)" prop="monomerLowCount">
|
<el-input v-model="params.monomerLowCount" :readonly="readOnly"></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
</div>
|
</el-tab-pane>
|
<el-tab-pane
|
label="活化"
|
name="activate"
|
:disabled="type !== 'activate'"
|
>
|
<div class="table-layout">
|
<div class="table-row">
|
<div class="table-cell pr16">
|
<el-form-item label="活化开始">
|
<!-- 放电 充电 -->
|
<el-select
|
v-model="params.offLineYHOnceCycle"
|
:disabled="readOnly"
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="item in cycleStart"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</div>
|
</div>
|
<div class="table-row">
|
<div class="table-cell pr16">
|
<el-form-item label="循环次数(次)" prop="offLineYHTimes">
|
<el-input v-model="params.offLineYHTimes" :readonly="readOnly"></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell pr16">
|
<el-form-item label="充完静置(分钟)" prop="disWaitTime">
|
<el-input v-model="params.disWaitTime" :readonly="readOnly"></el-input>
|
</el-form-item>
|
</div>
|
<div class="table-cell">
|
<el-form-item label="放完静置(分钟)" prop="charWaitTime">
|
<el-input v-model="params.charWaitTime" :readonly="readOnly"></el-input>
|
</el-form-item>
|
</div>
|
</div>
|
</div>
|
</el-tab-pane>
|
</el-tabs>
|
<div class="form-footer">
|
<template v-if="!readOnly">
|
<three-btn :disabled="!startTestFlag" @click="startTestCheck"
|
>启动{{ typeStr }}</three-btn
|
>
|
<three-btn @click="getParams(true)">读取</three-btn>
|
<three-btn :disabled="!setTestFlag" @click="submitFrom">设定</three-btn>
|
</template>
|
<three-btn v-else @click="$emit('startok')">关闭</three-btn>
|
</div>
|
</el-form>
|
</div>
|
</template>
|
|
<script>
|
import { testVal } from "@/assets/js/tools";
|
import { const_aio } from "@/assets/js/const";
|
import { sendCmd, getParams, setParamsII } from "../js/realTimeAio";
|
import { checkUserPwd } from "@/views/login/js/api";
|
|
import config from "@/assets/js/config";
|
// import checkFace from "@/components/checkFace";
|
let rules = const_aio.dischargeRules;
|
export default {
|
name: "dischargeParams",
|
components: {
|
// checkFace
|
},
|
props: {
|
batt: {
|
type: Object,
|
default() {
|
return {};
|
},
|
},
|
type: {
|
type: String,
|
default: "charge",
|
},
|
workstate: {
|
type: Number,
|
default: 0,
|
},
|
// 只读模式 显示参数用
|
readOnly: {
|
type: Boolean,
|
default: false
|
},
|
paramData: {
|
type: Object,
|
default () {
|
return {}
|
}
|
}
|
},
|
data() {
|
let cmd = const_aio.cmd;
|
let testType = const_aio.testType;
|
let cycleStart = const_aio.cycleStart;
|
let hourRate = const_aio.HourRate;
|
let batt = this.batt;
|
|
// 单体下限数量
|
rules.MonomerLowCount.max = batt.monCount;
|
rules.MonomerLowCount.msg =
|
"取值范围" + rules.MonomerLowCount.min + "~" + rules.MonomerLowCount.max;
|
|
// 单体上限数量
|
rules.MonVolHightLimitCount.max = batt.monCount;
|
rules.MonVolHightLimitCount.msg =
|
"取值范围" +
|
rules.MonVolHightLimitCount.min +
|
"~" +
|
rules.MonVolHightLimitCount.max;
|
|
let RflowoverCharcurr = {
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.flowoverCharcurr);
|
},
|
trigger: "change",
|
};
|
let Rprotectvol = {
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.protectvol);
|
},
|
trigger: "change",
|
};
|
let RMonUppervol = {
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.MonUppervol);
|
},
|
trigger: "change",
|
};
|
let RmonUppernum = {
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.monUppernum);
|
},
|
trigger: "change",
|
};
|
|
|
return {
|
setFaceShow: false,
|
startFaceShow: false,
|
flowOverCount: const_aio.flowOverCount1,
|
HVCount: const_aio.HVCount1,
|
cmd: cmd, // 操作命令
|
startTestFlag: false, // 启动测试的状态
|
setTestFlag: false, // 设置参数的状态
|
testType: testType, // 测试类型
|
cycleStart: cycleStart, // 活化起点
|
hourRate: hourRate, // 放电小时率
|
acTabs: "activate",
|
params: {
|
hvChargeVol1: 0, // 恒压阶段1充电电压
|
hvChargeVol2: 0, // 恒压阶段2充电电压
|
hvChargeVol3: 0, // 恒压阶段3充电电压
|
hvTime1: 0, // 恒压阶段1充电时间
|
hvTime2: 0, // 恒压阶段2充电时间
|
hvTime3: 0, // 恒压阶段3充电时间
|
hvProtectcurr1: 0, // 恒压阶段1保护电流
|
hvProtectcurr2: 0, // 恒压阶段2保护电流
|
hvProtectcurr3: 0, // 恒压阶段3保护电流
|
hvMonUppervol1: 0, // 恒压阶段1单体上限
|
hvMonUppervol2: 0, // 恒压阶段2单体上限
|
hvMonUppervol3: 0, // 恒压阶段3单体上限
|
hvMonUppernum1: 0, // 恒压阶段1上限个数
|
hvMonUppernum2: 0, // 恒压阶段2上限个数
|
hvMonUppernum3: 0, // 恒压阶段3上限个数
|
cmonUppernum1: 0, // 恒流阶段1上限个数
|
cmonUppernum2: 0, // 恒流阶段2上限个数
|
cmonUppernum3: 0, // 恒流阶段3上限个数
|
cprotectvol1: 0, // 恒流阶段1保护电压
|
cprotectvol2: 0, // 恒流阶段2保护电压
|
cprotectvol3: 0, // 恒流阶段3保护电压
|
cmonUppervol1: 0, // 恒流阶段1单体上限
|
cmonUppervol2: 0, // 恒流阶段2单体上限
|
cmonUppervol3: 0, // 恒流阶段3单体上限
|
autoTestStartVol: 0, //浮充电压(V)
|
battGroupNum: 0, //电池组编号
|
charCap: 0, //充电容量(AH)(不显示)
|
charHighTmp: 0, //充电过温
|
charSotpCurr: 0, //截止电流
|
charTimeLong: 0, //充电时长
|
charWaitTime: 0, //放完静置
|
chargeCurrSet: 0, //充电电流
|
dcvolHighLimit: 0, //组端上限
|
disCap: 0, //放电容量
|
disCurr: 0, //放电电流
|
disPower: 0, //预放功率
|
disPreRes: 0, //放电阻值
|
disTime: 0, //放电时长
|
disWaitTime: 0, //充完静置
|
floatCharTimeLong: 0, //浮充时长
|
groupvolLow: 0, //组端下限
|
hourRate: 0, //放电小时率
|
monCount: 0, //单体数量
|
monVol: 0, //单体电压
|
monVolHightLimit: 0, //单体上限
|
monVolHightLimitCount: 0, //单体上限数量
|
monomerLowCount: 0, //单体下限数量
|
monomertmpHigh: 0, //放电过温
|
monomervolLow: 0, //单体下限
|
offLineYHOnceCycle: 1, //活化起点
|
offLineYHTimes: 1, //活化次数
|
offlineyhCycle: 0, //电池组标称容量
|
flowoverCount: 1, //恒流总阶段数
|
hvChargeNum: 1, //恒压总阶段数
|
flowoverCharcurr1: 0, //恒流1阶段充电电流
|
flowoverCharcurr2: 0, //恒流2阶段充电电流
|
flowoverCharcurr3: 0, //恒流3阶段充电电流
|
flowoverChartime1: 0, //恒流3阶段充电时长
|
flowoverChartime2: 0, //恒流3阶段充电时长
|
flowoverChartime3: 0, //恒流3阶段充电时长
|
offLineYHstarttime: "2000-01-01 00:00:00", //养护开始时间
|
onlinevolLow: 0, //充电电压
|
onlineVolLowAction: 0, //测试类型 0:恒电流,1:恒功率,2:恒电阻
|
testCmd: 0, //备用
|
devId: 0, //设备id
|
devIp: "127.0.0.0", //设备ip
|
opCmd: cmd.setParams, //指令
|
isFlowover: true, // 是否为恒流充电
|
},
|
ranges: {
|
groupvolLow: {
|
name: "组端电压下限",
|
unit: "V",
|
min: rules.GroupVol_Low.min,
|
max: rules.GroupVol_Low.max,
|
},
|
monomervolLow: {
|
name: "单体电压下限",
|
unit: "V",
|
min: rules.MonomerVol_Low.min,
|
max: rules.MonomerVol_Low.max,
|
},
|
},
|
rules: {
|
autoTestStartVol: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.AutoTestStartVol);
|
},
|
trigger: "change",
|
},
|
],
|
charHighTmp: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.CharHighTmp);
|
},
|
trigger: "change",
|
},
|
],
|
charSotpCurr: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.CharSotpCurr);
|
},
|
trigger: "change",
|
},
|
],
|
charWaitTime: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.CharWaitTime);
|
},
|
trigger: "change",
|
},
|
],
|
chargeCurrSet: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.ChargeCurrSet);
|
},
|
trigger: "change",
|
},
|
],
|
dcvolHighLimit: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DCVolHighLimit);
|
},
|
trigger: "change",
|
},
|
],
|
disCap: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DisCap);
|
},
|
trigger: "change",
|
},
|
],
|
disCurr: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DisCurr);
|
},
|
trigger: "change",
|
},
|
],
|
disPower: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DisPower);
|
},
|
trigger: "change",
|
},
|
],
|
disPreRes: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DisPreRes);
|
},
|
trigger: "change",
|
},
|
],
|
disTime: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DisTime);
|
},
|
trigger: "change",
|
},
|
],
|
disWaitTime: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DisWaitTime);
|
},
|
trigger: "change",
|
},
|
],
|
groupvolLow: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.GroupVol_Low);
|
},
|
trigger: "change",
|
},
|
],
|
monVolHightLimit: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.MonVolHightLimit);
|
},
|
trigger: "change",
|
},
|
],
|
monVolHightLimitCount: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.MonVolHightLimitCount);
|
},
|
trigger: "change",
|
},
|
],
|
monomerLowCount: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.MonomerLowCount);
|
},
|
trigger: "change",
|
},
|
],
|
monomervolLow: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.MonomerVol_Low);
|
},
|
trigger: "change",
|
},
|
],
|
offLineYHTimes: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.OffLineYHTimes);
|
},
|
trigger: "change",
|
},
|
],
|
onlinevolLow: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.OnLineVol_Low);
|
},
|
trigger: "change",
|
},
|
],
|
monCount: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.MonCount);
|
},
|
trigger: "change",
|
},
|
],
|
monVol: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.MonVol);
|
},
|
trigger: "change",
|
},
|
],
|
offlineyhCycle: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.OffLineYH_Cycle);
|
},
|
trigger: "change",
|
},
|
],
|
flowoverCharcurr1: [RflowoverCharcurr],
|
flowoverCharcurr2: [RflowoverCharcurr],
|
flowoverCharcurr3: [RflowoverCharcurr],
|
cprotectvol1: [Rprotectvol],
|
cprotectvol2: [Rprotectvol],
|
cprotectvol3: [Rprotectvol],
|
cmonUppervol1: [RMonUppervol],
|
cmonUppervol2: [RMonUppervol],
|
cmonUppervol3: [RMonUppervol],
|
cmonUppernum1: [RmonUppernum],
|
cmonUppernum2: [RmonUppernum],
|
cmonUppernum3: [RmonUppernum],
|
hvChargeVol1: [Rprotectvol],
|
hvChargeVol2: [Rprotectvol],
|
hvChargeVol3: [Rprotectvol],
|
hvProtectcurr1: [RflowoverCharcurr],
|
hvProtectcurr2: [RflowoverCharcurr],
|
hvProtectcurr3: [RflowoverCharcurr],
|
hvMonUppervol1: [RMonUppervol],
|
hvMonUppervol2: [RMonUppervol],
|
hvMonUppervol3: [RMonUppervol],
|
hvMonUppernum1: [RmonUppernum],
|
hvMonUppernum2: [RmonUppernum],
|
hvMonUppernum3: [RmonUppernum],
|
},
|
};
|
},
|
// watch: {
|
// "params.monCount"(n) {
|
// this.updateRulesGroupVol_low(n, this.params.monVol);
|
// },
|
// "params.monVol"(n) {
|
// this.updateRulesGroupVol_low(this.params.monCount, n);
|
// },
|
// },
|
methods: {
|
initParams() {
|
// 初始化参数
|
this.params = {
|
hvChargeVol1: 0, // 恒压阶段1充电电压
|
hvChargeVol2: 0, // 恒压阶段2充电电压
|
hvChargeVol3: 0, // 恒压阶段3充电电压
|
hvTime1: 0, // 恒压阶段1充电时间
|
hvTime2: 0, // 恒压阶段2充电时间
|
hvTime3: 0, // 恒压阶段3充电时间
|
hvProtectcurr1: 0, // 恒压阶段1保护电流
|
hvProtectcurr2: 0, // 恒压阶段2保护电流
|
hvProtectcurr3: 0, // 恒压阶段3保护电流
|
hvMonUppervol1: 0, // 恒压阶段1单体上限
|
hvMonUppervol2: 0, // 恒压阶段2单体上限
|
hvMonUppervol3: 0, // 恒压阶段3单体上限
|
hvMonUppernum1: 0, // 恒压阶段1上限个数
|
hvMonUppernum2: 0, // 恒压阶段2上限个数
|
hvMonUppernum3: 0, // 恒压阶段3上限个数
|
cmonUppernum1: 0, // 恒流阶段1上限个数
|
cmonUppernum2: 0, // 恒流阶段2上限个数
|
cmonUppernum3: 0, // 恒流阶段3上限个数
|
cprotectvol1: 0, // 恒流阶段1保护电压
|
cprotectvol2: 0, // 恒流阶段2保护电压
|
cprotectvol3: 0, // 恒流阶段3保护电压
|
cmonUppervol1: 0, // 恒流阶段1单体上限
|
cmonUppervol2: 0, // 恒流阶段2单体上限
|
cmonUppervol3: 0, // 恒流阶段3单体上限
|
autoTestStartVol: 0, //浮充电压(V)
|
battGroupNum: 0, //电池组编号
|
charCap: 0, //充电容量(AH)
|
charHighTmp: 0, //充电过温
|
charSotpCurr: 0, //截止电流
|
charTimeLong: 0, //充电时长
|
charWaitTime: 0, //放完静置
|
chargeCurrSet: 0, //充电电流
|
dcvolHighLimit: 0, //组端上限
|
disCap: 0, //放电容量
|
disCurr: 0, //放电电流
|
disPower: 0, //预放功率
|
disPreRes: 0, //放电阻值
|
disTime: 0, //放电时长
|
disWaitTime: 0, //充完静置
|
floatCharTimeLong: 0, //浮充时长
|
groupvolLow: 0, //组端下限
|
hourRate: 0, //放电小时率
|
monCount: 0, //单体数量
|
monVol: 0, //单体电压
|
monVolHightLimit: 0, //单体上限
|
monVolHightLimitCount: 0, //单体上限数量
|
monomerLowCount: 0, //单体下限数量
|
monomertmpHigh: 0, //放电过温
|
monomervolLow: 0, //单体下限
|
offLineYHOnceCycle: 1, //活化起点
|
offLineYHTimes: 1, //活化次数
|
offlineyhCycle: 0, //电池组标称容量
|
flowoverCount: 1, //恒流总阶段数
|
hvChargeNum: 1, // 恒压总阶段数
|
flowoverCharcurr1: 0, //恒流1阶段充电电流
|
flowoverCharcurr2: 0, //恒流2阶段充电电流
|
flowoverCharcurr3: 0, //恒流3阶段充电电流
|
flowoverChartime1: 0, //恒流3阶段充电时长
|
flowoverChartime2: 0, //恒流3阶段充电时长
|
flowoverChartime3: 0, //恒流3阶段充电时长
|
offLineYHstarttime: "2000-01-01 00:00:00", //养护开始时间
|
onlinevolLow: 0, //充电电压
|
onlineVolLowAction: 0, //测试类型 0:恒电流,1:恒功率,2:恒电阻
|
testCmd: 0, //备用
|
devId: 0, //设备id
|
devIp: "127.0.0.0", //设备ip
|
opCmd: const_aio.cmd.setParams, //指令
|
};
|
},
|
volInput(v) {
|
console.log("volchange", v);
|
// 修改浮充的取值范围
|
rules.AutoTestStartVol.max = v * 1;
|
rules.AutoTestStartVol.msg =
|
"取值范围" +
|
rules.AutoTestStartVol.min +
|
"~" +
|
rules.AutoTestStartVol.max;
|
|
this.rules.autoTestStartVol = [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.AutoTestStartVol);
|
},
|
trigger: "change",
|
},
|
];
|
},
|
// volChanged(v) {
|
// // 如果保护电压比恒压电压高 就把保护电压改为恒压电压
|
// if (v == v * 1 && this.params.dcvolHighLimit > v) {
|
// this.params.dcvolHighLimit = v * 1;
|
// }
|
// },
|
// 设置组端下限范围
|
// updateRulesGroupVol_low(moncount, monvolstd) {
|
// // 修改组端下限的取值范围
|
// rules.GroupVol_Low.min = (moncount * monvolstd * 0.875).toHold(1);
|
// rules.GroupVol_Low.max = (moncount * monvolstd * 1.125).toHold(1);
|
// rules.GroupVol_Low.msg =
|
// "取值范围" +
|
// rules.GroupVol_Low.min +
|
// "~" +
|
// rules.GroupVol_Low.max +
|
// "(保留一位小数)";
|
|
// this.rules.groupvolLow = [
|
// {
|
// validator(rule, value, callback) {
|
// testVal(rule, value, callback, rules.GroupVol_Low);
|
// },
|
// trigger: "change",
|
// },
|
// ];
|
// },
|
tabClick(tab) {
|
this.acTabs = tab.name;
|
},
|
// 获取参数
|
getParams(showLoad) {
|
// 定义等待框
|
let loading;
|
if (showLoad) {
|
loading = this.$layer.loading(1);
|
}
|
// 启动按钮不可点击
|
this.startTestFlag = false;
|
|
// 查询后台
|
getParams({
|
devId: this.batt.fbsdeviceId,
|
opCmd: const_aio.cmd.getParams,
|
})
|
.then((res) => {
|
res = res.data;
|
if (res.code && res.data) {
|
let fsparam = res.data2;
|
// 遍历参数属性并赋值
|
for (let key in this.params) {
|
this.params[key] = fsparam[key];
|
}
|
// 设置的命令和devId
|
this.params.opCmd = this.cmd.setParams;
|
this.$layer.msg("读取成功!");
|
// 设置按钮可点击
|
this.setTestFlag = true;
|
} else {
|
// 初始化参数
|
// this.initParams();
|
// 设置按钮不可点击
|
// TODO
|
this.setTestFlag = false;
|
this.$layer.msg("读取失败!");
|
}
|
// 关闭等待框
|
this.$layer.close(loading);
|
})
|
.catch((error) => {
|
console.log(error);
|
// 初始化参数
|
this.initParams();
|
// 设置按钮不可点击
|
this.setTestFlag = false;
|
// 关闭等待框
|
this.$layer.close(loading);
|
this.$layer.msg("读取失败,读取请求异常!");
|
});
|
},
|
// 提交表单设置参数
|
submitFrom() {
|
this.$refs.ruleForm.validate((valid) => {
|
// 校验通过
|
if (valid) {
|
// 如果两个总阶段数都为0 则提示并拒绝
|
if (!this.params.flowoverCount && !this.params.hvChargeNum) {
|
this.$layer.msg("恒流总阶段数和恒压总阶段数不能同时为0");
|
return false;
|
}
|
// 设置参数
|
this.setParamsCheck();
|
} else {
|
this.$layer.msg("存在校验未通过的数据!");
|
return false;
|
}
|
});
|
},
|
setParamsCheck() {
|
if (config.dischargeByFace.value) {
|
this.setFaceShow = true;
|
} else {
|
this.setParams(true);
|
}
|
},
|
// 设置参数
|
setParams() {
|
// 等待框
|
let loading = this.$layer.loading(1);
|
// this.params.devId = 618500001;
|
// 请求后台
|
setParamsII(this.params)
|
.then((res) => {
|
res = res.data;
|
if (res.code && res.data) {
|
// 启动按钮可点击
|
this.startTestFlag = true;
|
// 提示信息
|
this.$layer.msg("设置成功");
|
} else {
|
// 启动按钮不可点击
|
this.startTestFlag = false;
|
// 提示信息
|
this.$layer.msg("设置失败!");
|
}
|
// 关闭等待框
|
this.$layer.close(loading);
|
})
|
.catch((error) => {
|
console.log(error);
|
// 关闭等待框
|
this.$layer.close(loading);
|
// 启动按钮不可点击
|
this.startTestFlag = false;
|
// 提示信息
|
this.$layer.msg("设置失败,设置请求异常!");
|
});
|
},
|
startTestCheck() {
|
// if (config.dischargeByFace.value) {
|
// this.startFaceShow = true;
|
// } else {
|
// this.confirmStartTest();
|
// }
|
this.confirmStartTest();
|
},
|
// 确认框
|
confirmStartTest() {
|
this.$layer.prompt(
|
{
|
title: "输入启动口令,并确认",
|
formType: 2,
|
area: ["300px", "180px"],
|
},
|
(pass, index) => {
|
// 请求后台校验密码
|
checkUserPwd(pass)
|
.then((res) => {
|
res = res.data;
|
if (res.code) {
|
// 关闭弹出框
|
this.$layer.close(index);
|
this.$layer.msg("密码检测通过,启动测试");
|
// 启动测试
|
this.startTest();
|
} else {
|
this.$layer.msg("启动口令错误!");
|
}
|
})
|
.catch((error) => {
|
console.log(error);
|
this.$layer.msg("网络请求异常");
|
});
|
}
|
);
|
},
|
// 启动
|
startTest() {
|
// 等待框
|
let loading = this.$layer.loading(1);
|
let num = 0;
|
switch (this.type) {
|
case "charge":
|
num = this.cmd.startCharge;
|
break;
|
case "discharge":
|
num = this.cmd.startDisCharge;
|
break;
|
case "activate":
|
num = this.cmd.startActivate;
|
break;
|
}
|
// 请求后台
|
sendCmd({
|
opCmd: num,
|
devId: this.batt.fbsdeviceId,
|
})
|
.then((res) => {
|
res = res.data;
|
if (res.code && res.data) {
|
// 提示信息
|
this.$layer.msg("启动测试成功");
|
this.$emit("startok");
|
} else {
|
// 提示信息
|
this.$layer.msg("启动测试失败!");
|
}
|
// 关闭等待框
|
this.$layer.close(loading);
|
})
|
.catch((error) => {
|
console.log(error);
|
// 关闭等待框
|
this.$layer.close(loading);
|
// 提示信息
|
this.$layer.msg("启动测试失败,启动测试请求异常!");
|
});
|
},
|
checkValIsInObjects(val, objects) {
|
let rs = false;
|
for (let i = 0; i < objects.length; i++) {
|
let obj = objects[i];
|
if (obj.value === val) {
|
rs = true;
|
break;
|
}
|
}
|
return false;
|
},
|
setFaceSuccess() {
|
this.setFaceShow = false;
|
this.setParams();
|
},
|
startFaceSuccess() {
|
this.startFaceShow = false;
|
this.startTest();
|
},
|
hourRateChanged(v) {
|
// console.log(v, '====');
|
let curr = const_aio.GetFDCurrent(this.params.offlineyhCycle, v);
|
// console.log(curr, '====');
|
this.params.disCurr = curr;
|
},
|
},
|
computed: {
|
otherParams() {
|
let batt = this.batt;
|
let groupInfo =
|
"单体数量:" +
|
this.batt.monCount +
|
";电压(V):" +
|
this.batt.monVolStd +
|
";容量(AH):" +
|
this.batt.MonCapStd;
|
return {
|
groupName: batt.stationName + "-" + batt.battGroupName,
|
fbsdeviceId: batt.fbsdeviceId,
|
groupInfo: groupInfo,
|
groupIndexInFBSDevice: this.batt.groupIndexInFBSDevice + 1,
|
};
|
},
|
rangeLabel() {
|
let ranges = this.ranges;
|
let result = {};
|
for (let key in ranges) {
|
let item = ranges[key];
|
result[key] =
|
item.name + "(" + item.min + "~" + item.max + item.unit + ")";
|
}
|
return result;
|
},
|
typeStr() {
|
let res = "";
|
switch (this.type) {
|
case "charge":
|
res = "充电";
|
break;
|
case "discharge":
|
res = "放电";
|
break;
|
case "activate":
|
res = "活化";
|
break;
|
}
|
return res;
|
},
|
},
|
mounted() {
|
console.log("mounted");
|
this.acTabs = this.type;
|
// 获取数据
|
if (this.readOnly) {
|
this.initParams();
|
this.params = {
|
...this.params,
|
...this.paramData
|
};
|
} else {
|
this.getParams(true);
|
}
|
},
|
};
|
</script>
|
|
<style scoped>
|
.form-footer {
|
margin-top: 16px;
|
margin-bottom: 16px;
|
text-align: right;
|
}
|
|
.form-footer .three-btn {
|
margin-left: 12px;
|
}
|
.params-container {
|
padding: 0.4rem;
|
background-color: #ececec;
|
}
|
>>> .is-disabled {
|
cursor: not-allowed;
|
}
|
>>> .el-tab-pane {
|
padding-top: 0;
|
padding-bottom: 16px;
|
}
|
>>> .el-tabs--border-card > .el-tabs__header {
|
background: #4ba1fa;
|
border-color: #4ba1fa;
|
}
|
>>> .el-tabs--border-card > .el-tabs__header .el-tabs__item {
|
color: #042271;
|
}
|
>>> .el-tabs--border-card
|
> .el-tabs__header
|
.el-tabs__item:not(.is-disabled):hover {
|
color: #042271;
|
}
|
>>> .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
|
background-color: #042271;
|
border-color: #042271;
|
color: #fff;
|
}
|
>>> .el-tabs {
|
margin-top: 10px;
|
}
|
</style>
|