<template>
|
<el-form
|
ref="ruleForm"
|
size="mini"
|
label-position="top"
|
:model="params"
|
:rules="rules"
|
class="params-dialog"
|
>
|
<el-row :gutter="row.gutter">
|
<el-col :span="row.span">
|
<el-form-item :label="rangeLabel.testCurr" prop="testCurr">
|
<el-input v-model="params.testCurr"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="row.span">
|
<el-form-item label="放电小时率">
|
<el-input v-model="params.hourRate"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="row.span">
|
<el-form-item label="放电容量(0~60000AH)" prop="disCap">
|
<el-input v-model="params.disCap"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="row.span">
|
<el-form-item label="放电时长(0~5940分钟)" prop="disTime">
|
<el-input v-model="params.disTime" ></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="row.span">
|
<el-form-item :label="rangeLabel.monVoLowLimit" prop="monVoLowLimit">
|
<el-input
|
v-model="params.monVoLowLimit"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="row.span">
|
<el-form-item
|
:label="rangeLabel.groupVolLowLimit"
|
prop="groupVolLowLimit"
|
>
|
<el-input
|
v-model="params.groupVolLowLimit"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="row.span">
|
<el-form-item label="单体下限数量" prop="monVolLowCount">
|
<el-input
|
v-model="params.monVolLowCount"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="row.span">
|
<el-form-item label="在线电压低处理">
|
<el-select
|
v-model="params.onlineVolLowAction"
|
placeholder="请选择"
|
>
|
<el-option label="停止测试" :value="0"></el-option>
|
<el-option label="继续测试" :value="1"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="row.span">
|
<el-form-item label="升压上限(V)">
|
<el-input
|
v-model="params.dcvolHighLimit"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
|
<el-col :span="row.span">
|
<el-form-item label="充电电流(A)">
|
<el-input v-model="params.charCurr"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="row.span">
|
<el-form-item label="单体温度上限(℃)">
|
<el-input
|
v-model="params.monTmpHighLimit"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<div class="form-footer">
|
<gradient-btn
|
size="sm"
|
:disabled="!hasPermission || !startTestFlag || !canStart"
|
@click="startTestCheck"
|
>启动测试</gradient-btn
|
>
|
<gradient-btn
|
size="sm"
|
:disabled="!hasPermission"
|
@click="getParam(true)"
|
>读取</gradient-btn
|
>
|
<gradient-btn
|
size="sm"
|
:disabled="!hasPermission || !setTestFlag"
|
@click="submitFrom"
|
>设定</gradient-btn
|
>
|
</div>
|
</el-form>
|
</template>
|
|
<script>
|
import testVal from "@/assets/js/testVal";
|
import const_9100 from "../js/const_9100";
|
import gradientBtn from "@/components/gradientBtn.vue";
|
import { getParam, setParam, control as start } from "../js/apis";
|
|
export default {
|
name: "",
|
components: {
|
gradientBtn,
|
},
|
props: {
|
canStart: {
|
type: Boolean,
|
required: true,
|
}
|
},
|
data() {
|
let cmd = const_9100.cmd;
|
let logList = const_9100.logList;
|
let rules = const_9100.dischargeRules;
|
|
return {
|
row: {
|
gutter: 16,
|
span: 8,
|
},
|
logList,
|
cmd: cmd, // 操作命令
|
startTestFlag: false, // 启动测试的状态
|
setTestFlag: false, // 设置参数的状态
|
params: {
|
num: 0,
|
opCmd: 0,
|
testCurr: 0.0,
|
disTime: 0.0,
|
disCap: 0,
|
monVolLowCount: 0,
|
groupVolLowLimit: 0.0,
|
monVoLowLimit: 0.0,
|
monTmpHighLimit: 0.0,
|
hourRate: 0,
|
battGroupNum: 0,
|
onlinevolLowaction: 0,
|
dcvolHighlimit: 0.0,
|
charCurr: 0.0,
|
logList: null,
|
},
|
ranges: {
|
groupVolLowLimit: {
|
name: "组端电压下限",
|
unit: "V",
|
min: rules.GroupVol_Low.min,
|
max: rules.GroupVol_Low.max,
|
},
|
monVoLowLimit: {
|
name: "单体电压下限",
|
unit: "V",
|
min: rules.MonomerVol_Low.min,
|
max: rules.MonomerVol_Low.max,
|
},
|
testCurr: {
|
name: "放电电流",
|
unit: "A",
|
min: rules.DisCurr.min,
|
max: rules.DisCurr.max,
|
},
|
},
|
rules: {
|
testCurr: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DisCurr);
|
},
|
trigger: "change",
|
},
|
],
|
disCap: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DisCap);
|
},
|
trigger: "change",
|
},
|
],
|
disTime: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.DisTime);
|
},
|
trigger: "change",
|
},
|
],
|
monVoLowLimit: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.MonomerVol_Low);
|
},
|
trigger: "change",
|
},
|
],
|
groupVolLowLimit: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.GroupVol_Low);
|
},
|
trigger: "change",
|
},
|
],
|
chargeVolt: [
|
{
|
validator(rule, value, callback) {
|
testVal(rule, value, callback, rules.chargeVolt_Low);
|
},
|
trigger: "change",
|
},
|
],
|
},
|
};
|
},
|
methods: {
|
initParams() {
|
// 初始化参数
|
this.params = {
|
num: 0,
|
opCmd: 0,
|
testCurr: 0.0,
|
disTime: 0.0,
|
disCap: 0,
|
monVolLowCount: 0,
|
groupVolLowLimit: 0.0,
|
monVoLowLimit: 0.0,
|
monTmpHighLimit: 0.0,
|
hourRate: 0,
|
battGroupNum: 0,
|
onlinevolLowaction: 0,
|
dcvolHighlimit: 0.0,
|
charCurr: 0.0,
|
logList: null,
|
};
|
},
|
// 获取参数
|
getParam(showLoad) {
|
// 定义等待框
|
let loading;
|
if (showLoad) {
|
loading = this.$layer.loading(1);
|
}
|
// 启动按钮不可点击
|
this.startTestFlag = false;
|
// 查询后台
|
getParam()
|
.then((res) => {
|
let { code, data, data2, msg } = res.data;
|
if (code && data) {
|
this.params = {
|
...this.params,
|
...data2,
|
};
|
|
this.$layer.msg("读取成功!");
|
// 设置按钮可点击
|
this.setTestFlag = true;
|
} else {
|
// 初始化参数
|
this.initParams();
|
// 设置按钮不可点击
|
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) {
|
// 设置参数
|
this.setParamsCheck();
|
} else {
|
this.$layer.msg("存在校验未通过的数据!");
|
return false;
|
}
|
});
|
},
|
setParamsCheck() {
|
this.setParam(true);
|
},
|
// 设置参数
|
setParam() {
|
// 等待框
|
let loading = this.$layer.loading(1);
|
let logList = this.logList.map((v) => {
|
return {
|
param: v.param,
|
paramCn: v.paramCn,
|
value: v.option
|
? v.option[this.params[v.param]]
|
: this.params[v.param],
|
};
|
});
|
let param = {
|
...this.params,
|
opCmd: this.cmd.setParam,
|
logList,
|
};
|
// 请求后台
|
setParam(param)
|
.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() {
|
this.startTest();
|
},
|
// 启动
|
startTest() {
|
// 等待框
|
let loading = this.$layer.loading(1);
|
// 请求后台
|
start(this.cmd.startDis)
|
.then((res) => {
|
let {code,data,msg} = res.data;
|
if (code && data) {
|
// 提示信息
|
this.$layer.msg("操作成功!");
|
} 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();
|
},
|
},
|
computed: {
|
otherParams() {
|
let 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;
|
},
|
hasPermission() {
|
return this.$store.state.user.downloadFlag == 1;
|
},
|
},
|
mounted() {
|
this.getParam(true);
|
},
|
};
|
</script>
|
|
<style scoped>
|
.form-footer {
|
color: #ffffff;
|
display: flex;
|
justify-content: flex-end;
|
}
|
</style>
|