|
@@ -0,0 +1,855 @@
|
|
|
+<script setup>
|
|
|
+import { getTytjParams, putTytjParams, getLatestRecord, postLatestRecord } from '@/api/business/settings';
|
|
|
+import { dayjs } from 'element-plus';
|
|
|
+
|
|
|
+const { proxy } = getCurrentInstance();
|
|
|
+
|
|
|
+const form = ref({});
|
|
|
+const activeName = ref('first');
|
|
|
+
|
|
|
+// 设置参数
|
|
|
+const settingFormData = ref({});
|
|
|
+
|
|
|
+const settingFormData1 = ref({});
|
|
|
+const settingFormData2 = ref({});
|
|
|
+const settingFormData3 = ref({});
|
|
|
+
|
|
|
+const adjustmentFormData = ref({});
|
|
|
+
|
|
|
+/**
|
|
|
+ * 减法函数,解决浮点数精度问题
|
|
|
+ * @param {number} num1 - 被减数
|
|
|
+ * @param {number} num2 - 减数
|
|
|
+ * @returns {number} - 计算结果
|
|
|
+ */
|
|
|
+function subtract(num1, num2) {
|
|
|
+ // 获取两个数字的小数位数
|
|
|
+ const decimalPlaces1 = getDecimalPlaces(num1);
|
|
|
+ const decimalPlaces2 = getDecimalPlaces(num2);
|
|
|
+
|
|
|
+ // 找到最大的小数位数
|
|
|
+ const maxDecimalPlaces = Math.max(decimalPlaces1, decimalPlaces2);
|
|
|
+
|
|
|
+ // 将数字放大对应的倍数,避免浮点数问题
|
|
|
+ const factor = Math.pow(10, maxDecimalPlaces);
|
|
|
+ const intNum1 = Math.round(num1 * factor);
|
|
|
+ const intNum2 = Math.round(num2 * factor);
|
|
|
+
|
|
|
+ // 进行整数运算后,再缩小回去
|
|
|
+ return (intNum1 - intNum2) / factor;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 除法函数,解决浮点数精度问题
|
|
|
+ * @param {number} num1 - 被除数
|
|
|
+ * @param {number} num2 - 除数
|
|
|
+ * @returns {number} - 计算结果
|
|
|
+ */
|
|
|
+function divide(num1, num2) {
|
|
|
+ if (num2 === 0) {
|
|
|
+ throw new Error("除数不能为0");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取两个数字的小数位数
|
|
|
+ const decimalPlaces1 = getDecimalPlaces(num1);
|
|
|
+ const decimalPlaces2 = getDecimalPlaces(num2);
|
|
|
+
|
|
|
+ // 将数字放大对应的倍数,避免浮点数问题
|
|
|
+ const factor1 = Math.pow(10, decimalPlaces1);
|
|
|
+ const factor2 = Math.pow(10, decimalPlaces2);
|
|
|
+
|
|
|
+ // 转换为整数运算
|
|
|
+ const intNum1 = Math.round(num1 * factor1);
|
|
|
+ const intNum2 = Math.round(num2 * factor2);
|
|
|
+
|
|
|
+ // 进行整数除法后,调整小数位数
|
|
|
+ return (intNum1 / intNum2) * (factor2 / factor1);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 获取数字的小数位数
|
|
|
+ * @param {number} num - 数字
|
|
|
+ * @returns {number} - 小数位数
|
|
|
+ */
|
|
|
+function getDecimalPlaces(num) {
|
|
|
+ const str = num.toString();
|
|
|
+ if (str.includes('.')) {
|
|
|
+ return str.split('.')[1].length;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+// 更新参数配置
|
|
|
+const onUpdateParamterConfig = async () => {
|
|
|
+
|
|
|
+ if (activeName.value != 'fourth') {
|
|
|
+ const params = {};
|
|
|
+ if (activeName.value == 'first') {
|
|
|
+ Object.assign(params, settingFormData.value, settingFormData1.value);
|
|
|
+ }
|
|
|
+ if (activeName.value == 'second') {
|
|
|
+ Object.assign(params, settingFormData.value, settingFormData2.value);
|
|
|
+ }
|
|
|
+ if (activeName.value == 'third') {
|
|
|
+ Object.assign(params, settingFormData.value, settingFormData3.value);
|
|
|
+ }
|
|
|
+
|
|
|
+ await putTytjParams(params);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ const list = Object.keys(adjustmentFormData.value);
|
|
|
+
|
|
|
+ if ( !list.length ) {
|
|
|
+ return proxy.$modal.msgError("请填写设定参数");
|
|
|
+ }
|
|
|
+
|
|
|
+ if ( list.length < 60 ) {
|
|
|
+ return proxy.$modal.msgError("请填写完整的设定参数");
|
|
|
+ }
|
|
|
+
|
|
|
+ const r = adjustmentFormData.value;
|
|
|
+
|
|
|
+ const params = {
|
|
|
+ // 前端使用
|
|
|
+ originContent: JSON.stringify(adjustmentFormData.value),
|
|
|
+ // 大模型使用
|
|
|
+ handleContent: {
|
|
|
+ "setfeedback": {
|
|
|
+ "para": [
|
|
|
+ r.a1,
|
|
|
+ r.a2,
|
|
|
+ r.a3,
|
|
|
+ r.a4
|
|
|
+ ],
|
|
|
+ // "hour": r.a5,
|
|
|
+ // "max_hour": r.a6
|
|
|
+ },
|
|
|
+ "update_time": dayjs(new Date()).format('YYYY/MM/DD HH:mm:ss'),
|
|
|
+ // "auto_para": {
|
|
|
+ // "postfeedback": {
|
|
|
+ // "1": [
|
|
|
+ // {
|
|
|
+ // "low": subtract(0, r.a7),
|
|
|
+ // "hight": subtract(0, r.a8),
|
|
|
+ // "prop": subtract(0, r.a9)
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "low": subtract(0, r.a10),
|
|
|
+ // "hight": subtract(0, r.a11),
|
|
|
+ // "prop": subtract(0, r.a12)
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "low": subtract(0, r.a13),
|
|
|
+ // "hight": subtract(0, r.a14),
|
|
|
+ // "prop": subtract(0, r.a15)
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "low": subtract(0, r.a16),
|
|
|
+ // "hight": subtract(0, r.a17),
|
|
|
+ // "prop": subtract(0, r.a18)
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "low": subtract(0, r.a19),
|
|
|
+ // "hight": subtract(0, r.a20),
|
|
|
+ // "prop": subtract(0, r.a21)
|
|
|
+ // }
|
|
|
+ // ],
|
|
|
+ // "2": {
|
|
|
+ // "low": subtract(0, r.a22),
|
|
|
+ // "control_coef": r.a23
|
|
|
+ // },
|
|
|
+ // "3": [
|
|
|
+ // {
|
|
|
+ // "hight": r.a24,
|
|
|
+ // "prop": r.a25
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "low": r.a26,
|
|
|
+ // "hight": r.a27,
|
|
|
+ // "prop": r.a28
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "low": r.a29,
|
|
|
+ // "hight": r.a30,
|
|
|
+ // "prop": r.a31
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "low": r.a32,
|
|
|
+ // "prop": r.a33
|
|
|
+ // }
|
|
|
+ // ]
|
|
|
+ // },
|
|
|
+ // "prefeedback": [
|
|
|
+ // {
|
|
|
+ // "low": r.a34,
|
|
|
+ // "hight": r.a35,
|
|
|
+ // "prop": r.a36
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "low": r.a37,
|
|
|
+ // "prop": r.a38
|
|
|
+ // }
|
|
|
+ // ]
|
|
|
+ // },
|
|
|
+ // "rules": {
|
|
|
+ // "common": [
|
|
|
+ // r.a39,
|
|
|
+ // r.a40,
|
|
|
+ // r.a41
|
|
|
+ // ],
|
|
|
+ // "to_prefeedback": [
|
|
|
+ // r.a42,
|
|
|
+ // r.a43
|
|
|
+ // ],
|
|
|
+ // "postfeedback": {
|
|
|
+ // "1": {
|
|
|
+ // "down": [
|
|
|
+ // divide(subtract(0, r.a44), 100)
|
|
|
+ // ],
|
|
|
+ // "same": [
|
|
|
+ // divide(subtract(0, r.a45), 100)
|
|
|
+ // ]
|
|
|
+ // },
|
|
|
+ // "2": {
|
|
|
+ // "same": [
|
|
|
+ // r.a46
|
|
|
+ // ]
|
|
|
+ // },
|
|
|
+ // "3": {
|
|
|
+ // "up": {
|
|
|
+ // "invalid": {
|
|
|
+ // "coef": [
|
|
|
+ // divide(r.a47, 100),
|
|
|
+ // divide(subtract(0, r.a48), 100)
|
|
|
+ // ],
|
|
|
+ // "val": [
|
|
|
+ // divide(r.a49, 100),
|
|
|
+ // ]
|
|
|
+ // },
|
|
|
+ // "validate": {
|
|
|
+ // "val": [
|
|
|
+ // divide(r.a50, 100),
|
|
|
+ // divide(subtract(0, r.a51), 100)
|
|
|
+ // ]
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ // "down": {
|
|
|
+ // "invalid": {
|
|
|
+ // "coef": [
|
|
|
+ // divide(subtract(0, r.a52), 100)
|
|
|
+ // ]
|
|
|
+ // },
|
|
|
+ // "validate": {
|
|
|
+ // "val": [
|
|
|
+ // subtract(0, r.a53),
|
|
|
+ // divide(subtract(0, r.a54), 100)
|
|
|
+ // ]
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ // "downto2": r.a55,
|
|
|
+ // "same": divide(r.a56, 100)
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ // "to_postfeedback": [
|
|
|
+ // r.a57,
|
|
|
+ // r.a58
|
|
|
+ // ],
|
|
|
+ // "prefeedback": {
|
|
|
+ // "up": divide(r.a59, 100),
|
|
|
+ // "down": divide(r.a60, 100),
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const data = await postLatestRecord({...params, handleContent: JSON.stringify(params.handleContent) });
|
|
|
+ console.log( "data - SUCCESS", data );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ proxy.$modal.msgSuccess("更新配置已成功");
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ getTytjParams().then(({ data }) => {
|
|
|
+ settingFormData.value = data;
|
|
|
+
|
|
|
+ settingFormData1.value = {
|
|
|
+ kzmbplbjz: data.kzmbplbjz,
|
|
|
+ hycxsygkz: data.hycxsygkz,
|
|
|
+ xhycbjz: data.xhycbjz,
|
|
|
+ jylpybjz: data.jylpybjz,
|
|
|
+ timeVal: data.timeVal
|
|
|
+ }
|
|
|
+
|
|
|
+ settingFormData2.value = {
|
|
|
+ minJsll: data.minJsll,
|
|
|
+ maxJsll: data.maxJsll,
|
|
|
+ minJsCod: data.minJsCod,
|
|
|
+ maxJsCod: data.maxJsCod,
|
|
|
+ minAddAmount: data.minAddAmount,
|
|
|
+ maxAddAmount: data.maxAddAmount
|
|
|
+ }
|
|
|
+
|
|
|
+ settingFormData3.value = {
|
|
|
+ htfksd: data.htfksd,
|
|
|
+ kzxs: data.kzxs,
|
|
|
+ jzxs: data.jzxs,
|
|
|
+ xzxs: data.xzxs,
|
|
|
+ slfpxs: data.slfpxs,
|
|
|
+ tydl: data.tydl,
|
|
|
+ zhxs: data.zhxs,
|
|
|
+ sxps: data.sxps,
|
|
|
+ yymd: data.yymd,
|
|
|
+ zxqdll: data.zxqdll
|
|
|
+ }
|
|
|
+ })
|
|
|
+ getLatestRecord().then(({ data }) => {
|
|
|
+ const { originContent } = data;
|
|
|
+ adjustmentFormData.value = JSON.parse(originContent || "{}");
|
|
|
+ })
|
|
|
+})
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <el-card shadow="never">
|
|
|
+ <el-tabs v-model="activeName" class="demo-tabs">
|
|
|
+
|
|
|
+ <el-tab-pane label="报警值设定" name="first">
|
|
|
+ <div class="px-[20px] py-[20px]">
|
|
|
+ <el-form :model="settingFormData1" label-width="auto">
|
|
|
+ <el-form-item label="控制目标偏离报警值:">
|
|
|
+ <div>
|
|
|
+ <el-input-number v-model="settingFormData1.kzmbplbjz" style="width: 200px;">
|
|
|
+ <template #suffix><span>mg/L</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">大于设定值出发报警</p>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="好氧池硝酸盐管控值:">
|
|
|
+ <div>
|
|
|
+ <el-input-number v-model="settingFormData1.hycxsygkz" style="width: 200px;">
|
|
|
+ <template #suffix><span>mg/L</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">大于设定值出发报警</p>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="硝化异常报警值:">
|
|
|
+ <div>
|
|
|
+ <el-input-number v-model="settingFormData1.xhycbjz" style="width: 200px;">
|
|
|
+ <template #suffix><span>mg/L</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">大于设定值出发报警</p>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="加药量偏移报警值:">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-input-number v-model="settingFormData1.jylpybjz" style="width: 200px;">
|
|
|
+ <template #suffix><span>L/h</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">大于设定值触发报警</p>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-input-number v-model="settingFormData1.timeVal" style="width: 200px;">
|
|
|
+ <template #suffix><span>分</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">偏移量统计时间,建议填写5的倍数值</p>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <el-tab-pane label="数据范围设定" name="second">
|
|
|
+ <div class="px-[20px] py-[20px]">
|
|
|
+ <el-form :model="settingFormData2" label-width="auto">
|
|
|
+ <el-form-item label="进水流量:">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-input-number v-model="settingFormData2.minJsll" style="width: 200px;">
|
|
|
+ <template #suffix><span>m³/h</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">限定最小值</p>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-input-number v-model="settingFormData2.maxJsll" style="width: 200px;">
|
|
|
+ <template #suffix><span>m³/h</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">限定最大值</p>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="进水COD:">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-input-number v-model="settingFormData2.minJsCod" style="width: 200px;">
|
|
|
+ <template #suffix><span>m³/h</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">限定最小值</p>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-input-number v-model="settingFormData2.maxJsCod" style="width: 200px;">
|
|
|
+ <template #suffix><span>m³/h</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">限定最大值</p>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="投药量:">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-input-number v-model="settingFormData2.minAddAmount" style="width: 200px;">
|
|
|
+ <template #suffix><span>m³/h</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">限定最小值</p>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-input-number v-model="settingFormData2.maxAddAmount" style="width: 200px;">
|
|
|
+ <template #suffix><span>m³/h</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">限定最大值</p>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <el-tab-pane label="参数系数设定" name="third">
|
|
|
+ <div class="px-[20px] py-[20px]">
|
|
|
+ <el-form :model="settingFormData3" label-width="auto">
|
|
|
+ <el-form-item label="后反馈设定:">
|
|
|
+ <div>
|
|
|
+ <el-input-number v-model="settingFormData3.htfksd" style="width: 200px;" disabled>
|
|
|
+ <template #suffix><span>mg/L</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">智能调控</p>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="控制系数:">
|
|
|
+ <div>
|
|
|
+ <el-input-number v-model="settingFormData3.kzxs" style="width: 200px;" disabled>
|
|
|
+ <template #suffix><span>mg/L</span></template>
|
|
|
+ </el-input-number>
|
|
|
+ <p class="tips">智能调控</p>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="基准系数:">
|
|
|
+ <el-input-number v-model="settingFormData3.jzxs" style="width: 200px;"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="修正系数:">
|
|
|
+ <el-input-number v-model="settingFormData3.xzxs" style="width: 200px;"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="水量分配系数:">
|
|
|
+ <el-input-number v-model="settingFormData3.slfpxs" style="width: 200px;"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="碳源当量:">
|
|
|
+ <el-input-number v-model="settingFormData3.tydl" style="width: 200px;"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="转换系数:">
|
|
|
+ <el-input-number v-model="settingFormData3.zhxs" style="width: 200px;"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="稀释倍数:">
|
|
|
+ <el-input-number v-model="settingFormData3.sxps" style="width: 200px;"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="药剂密度:">
|
|
|
+ <el-input-number v-model="settingFormData3.yymd" style="width: 200px;"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="最小启动流量:">
|
|
|
+ <el-input-number v-model="settingFormData3.zxqdll" style="width: 200px;"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="碳氮比:">
|
|
|
+ <el-input-number v-model="settingFormData.num" style="width: 200px;"></el-input-number>
|
|
|
+ </el-form-item> -->
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <el-tab-pane label="调参逻辑设定" name="fourth" class="space-y-[10px]">
|
|
|
+ <el-card>
|
|
|
+ <template #header>
|
|
|
+ <h4 class="title">后反馈设定值取值规则参数设定</h4>
|
|
|
+ </template>
|
|
|
+ <ul class="space-y-[10px] text-[#606266] text-[14px]">
|
|
|
+ <li class="space-x-[10px] flex items-center">
|
|
|
+ <span class="w-[520px]">缺氧池硝酸盐 + 缺氧池氨氮 - 好氧池硝酸盐 < 3,后反馈设定值 =</span>
|
|
|
+ <el-input-number v-model="adjustmentFormData.a1" style="width: 200px;"></el-input-number>
|
|
|
+ </li>
|
|
|
+
|
|
|
+ <li class="space-x-[10px] flex items-center">
|
|
|
+ <span class="w-[520px]">缺氧池硝酸盐 + 缺氧池氨氮 - 好氧池硝酸盐 ≥ 3 && < 4,后反馈设定值 =</span>
|
|
|
+ <el-input-number v-model="adjustmentFormData.a2" style="width: 200px;"></el-input-number>
|
|
|
+ </li>
|
|
|
+
|
|
|
+ <li class="space-x-[10px] flex items-center">
|
|
|
+ <span class="w-[520px]">缺氧池硝酸盐 + 缺氧池氨氮 - 好氧池硝酸盐 ≥ 4 && < 5,后反馈设定值 =</span>
|
|
|
+ <el-input-number v-model="adjustmentFormData.a3" style="width: 200px;"></el-input-number>
|
|
|
+ </li>
|
|
|
+
|
|
|
+ <li class="space-x-[10px] flex items-center">
|
|
|
+ <span class="w-[520px]">缺氧池硝酸盐 + 缺氧池氨氮 - 好氧池硝酸盐 ≥ 5,后反馈设定值 =</span>
|
|
|
+ <el-input-number v-model="adjustmentFormData.a4" style="width: 200px;"></el-input-number>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-card>
|
|
|
+ <template #header>
|
|
|
+ <h4 class="title">后反馈设定值更新规则参数设定</h4>
|
|
|
+ </template>
|
|
|
+ <div class="text-[#606266] text-[14px]">
|
|
|
+ 每
|
|
|
+ <el-input-number v-model="adjustmentFormData.a5" style="width: 200px;"></el-input-number>
|
|
|
+ 小时获取一次数据, 连续
|
|
|
+ <el-input-number v-model="adjustmentFormData.a6" style="width: 200px;"></el-input-number>
|
|
|
+ 小时数据方向(均> 或 均<),更新最新一组数据的后反馈设定值为当前后反馈设定值。
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-card>
|
|
|
+ <template #header>
|
|
|
+ <h4 class="title">基础调参表参数设定</h4>
|
|
|
+ </template>
|
|
|
+ <div class="space-y-[20px]">
|
|
|
+ <el-table :data="[{}, {}, {}, {}, {}]" style="width: 100%">
|
|
|
+ <el-table-column label="后反馈档位1" align="center">
|
|
|
+ <el-table-column prop="name" label="控制区间">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.$index == 0">
|
|
|
+ <span>后反馈设定值 - </span>7
|
|
|
+ <el-input-number v-model="adjustmentFormData.a7"></el-input-number>
|
|
|
+ <span> < 好氧池硝酸盐 ≤ 后反馈设定值 - </span>8
|
|
|
+ <el-input-number v-model="adjustmentFormData.a8"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 1">
|
|
|
+ <span>后反馈设定值 - </span>10
|
|
|
+ <el-input-number v-model="adjustmentFormData.a10"></el-input-number>
|
|
|
+ <span> < 好氧池硝酸盐 ≤ 后反馈设定值 - </span>11
|
|
|
+ <el-input-number v-model="adjustmentFormData.a11"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 2">
|
|
|
+ <span>后反馈设定值 - </span>13
|
|
|
+ <el-input-number v-model="adjustmentFormData.a13"></el-input-number>
|
|
|
+ <span> < 好氧池硝酸盐 ≤ 后反馈设定值 - </span>14
|
|
|
+ <el-input-number v-model="adjustmentFormData.a14"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 3">
|
|
|
+ <span>后反馈设定值 - </span>16
|
|
|
+ <el-input-number v-model="adjustmentFormData.a16"></el-input-number>
|
|
|
+ <span> < 好氧池硝酸盐 ≤ 后反馈设定值 - </span>17
|
|
|
+ <el-input-number v-model="adjustmentFormData.a17"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 4">
|
|
|
+ <span>后反馈设定值 - </span>19
|
|
|
+ <el-input-number v-model="adjustmentFormData.a19"></el-input-number>
|
|
|
+ <span> < 好氧池硝酸盐 ≤ 后反馈设定值 - </span>20
|
|
|
+ <el-input-number v-model="adjustmentFormData.a20"></el-input-number>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name1" label="控制系数" width="300">
|
|
|
+ 基准参数*(100-减幅)/100
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name1" label="减幅" width="175">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.$index == 0">9
|
|
|
+ <el-input-number v-model="adjustmentFormData.a9"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 1">12
|
|
|
+ <el-input-number v-model="adjustmentFormData.a12"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 2">15
|
|
|
+ <el-input-number v-model="adjustmentFormData.a15"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 3">18
|
|
|
+ <el-input-number v-model="adjustmentFormData.a18"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 4">21
|
|
|
+ <el-input-number v-model="adjustmentFormData.a21"></el-input-number>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <el-table :data="[{}]" style="width: 100%">
|
|
|
+ <el-table-column label="后反馈档位2" align="center">
|
|
|
+ <el-table-column prop="name" label="控制区间">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.$index == 0">
|
|
|
+ <span>后反馈设定值 - </span>22
|
|
|
+ <el-input-number v-model="adjustmentFormData.a22"></el-input-number>
|
|
|
+ <span> < 好氧池硝酸盐 ≤ 后反馈设定值</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name1" label="控制系数" width="300">
|
|
|
+ <span class="text-[red]">基准参数</span>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name1" label="默认基准系数" width="175">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.$index == 0">23
|
|
|
+ <el-input-number v-model="adjustmentFormData.a23"></el-input-number>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <el-table :data="[{}, {}, {}, {}]" style="width: 100%">
|
|
|
+ <el-table-column label="后反馈档位3" align="center">
|
|
|
+ <el-table-column prop="name" label="控制区间">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.$index == 0">
|
|
|
+ <span>后反馈设定值 < 好氧池硝酸盐 ≤ 后反馈设定值+ </span>24
|
|
|
+ <el-input-number v-model="adjustmentFormData.a24"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 1">
|
|
|
+ <span>后反馈设定值 + </span>26
|
|
|
+ <el-input-number v-model="adjustmentFormData.a26"></el-input-number>
|
|
|
+ <span> < 好氧池硝酸盐 ≤ 后反馈设定值+ </span>27
|
|
|
+ <el-input-number v-model="adjustmentFormData.a27"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 2">
|
|
|
+ <span>后反馈设定值 + </span>29
|
|
|
+ <el-input-number v-model="adjustmentFormData.a29"></el-input-number>
|
|
|
+ <span> < 好氧池硝酸盐 ≤ 后反馈设定值+ </span>30
|
|
|
+ <el-input-number v-model="adjustmentFormData.a30"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 3">
|
|
|
+ <span>后反馈设定值 - </span>32
|
|
|
+ <el-input-number v-model="adjustmentFormData.a32"></el-input-number>
|
|
|
+ <span> < 好氧池硝酸盐 </span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name1" label="控制系数" width="300">
|
|
|
+ 基准参数*(100+增幅)/100
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name1" label="增幅" width="175">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.$index == 0">25
|
|
|
+ <el-input-number v-model="adjustmentFormData.a25"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 1">28
|
|
|
+ <el-input-number v-model="adjustmentFormData.a28"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 2">31
|
|
|
+ <el-input-number v-model="adjustmentFormData.a31"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 3">33
|
|
|
+ <el-input-number v-model="adjustmentFormData.a33"></el-input-number>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <el-table :data="[{}, {}]" style="width: 100%">
|
|
|
+ <el-table-column label="前反馈基础调参表" align="center">
|
|
|
+ <el-table-column prop="name" label="控制区间">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.$index == 0">34
|
|
|
+ <el-input-number v-model="adjustmentFormData.a34"></el-input-number>
|
|
|
+ <span>< 缺氧区出水氨氮+缺氧区出水硝酸盐 ≤ </span>35
|
|
|
+ <el-input-number v-model="adjustmentFormData.a35"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 1">37
|
|
|
+ <el-input-number v-model="adjustmentFormData.a37"></el-input-number>
|
|
|
+ <span>< 缺氧区出水氨氮+缺氧区出水硝酸盐</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name1" label="控制系数" width="300">
|
|
|
+ 基准参数*(100+增幅)/100
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="name1" label="增幅" width="175">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-if="scope.$index == 0">36
|
|
|
+ <el-input-number v-model="adjustmentFormData.a36"></el-input-number>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.$index == 1">38
|
|
|
+ <el-input-number v-model="adjustmentFormData.a38"></el-input-number>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-card>
|
|
|
+ <template #header>
|
|
|
+ <h4 class="title">控制系数限制</h4>
|
|
|
+ </template>
|
|
|
+ <div class="text-[#606266] text-[14px]">
|
|
|
+ 控制系数最大值39
|
|
|
+ <el-input-number v-model="adjustmentFormData.a39" style="width: 200px;"></el-input-number>
|
|
|
+ , 最小值40
|
|
|
+ <el-input-number v-model="adjustmentFormData.a40" style="width: 200px;"></el-input-number>
|
|
|
+ ,每41
|
|
|
+ <el-input-number v-model="adjustmentFormData.a41" style="width: 200px;"></el-input-number>
|
|
|
+ 小时获取一次数据,进行升\降档调参。
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-card>
|
|
|
+ <template #header>
|
|
|
+ <h4 class="title">后反馈调参规则参数设定</h4>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div class="content space-y-[10px]">
|
|
|
+ <div class="space-y-[10px]">
|
|
|
+ <p>
|
|
|
+ 实时监控,缺氧区出水氨氮+缺氧区出水硝酸盐 >42
|
|
|
+ <el-input-number v-model="adjustmentFormData.a42" style="width: 200px;"></el-input-number>
|
|
|
+ , 连续43
|
|
|
+ <el-input-number v-model="adjustmentFormData.a43" style="width: 200px;"></el-input-number>
|
|
|
+ 小时, 切换至前反馈调参模式
|
|
|
+ </p>
|
|
|
+ <p>|| 档位1降档调参:</p>
|
|
|
+ <p>if (当前控制系数 < 最新一组数据的控制系数 ) {</p>
|
|
|
+ <p class="pl-[20px]">
|
|
|
+ 控制系数 = 当前控制系数 调整 - 44 <el-input-number v-model="adjustmentFormData.a44"
|
|
|
+ style="width: 200px;"></el-input-number>%;
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ }else{
|
|
|
+ </p>
|
|
|
+ <p class="pl-[20px]">控制系数 = 最新一组数据的控制系数;</p>
|
|
|
+ <p>}</p>
|
|
|
+ <p>|| 档位1同档调参</p>
|
|
|
+ <p>
|
|
|
+ 控制系数 = 当前控制系数 调整 - 45<el-input-number v-model="adjustmentFormData.a45"
|
|
|
+ style="width: 200px;"></el-input-number>%。
|
|
|
+ </p>
|
|
|
+ <p>|| 档位2同档调参,控制系数不变, 控制系数在档位2并且连续46 <el-input-number v-model="adjustmentFormData.a46"
|
|
|
+ style="width: 200px;"></el-input-number>小时控制系数不变时,将基准参数调整至当前控制系数</p>
|
|
|
+ <p>|| 档位3 升档调参:</p>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="space-y-[10px]">
|
|
|
+ <p>① 无有效控制系数</p>
|
|
|
+ <p>
|
|
|
+ 条件1:当前控制系数 调整47
|
|
|
+ <el-input-number v-model="adjustmentFormData.a47" style="width: 200px;"></el-input-number>
|
|
|
+ % 与 条件2:最新一组数据的控制系数 与 条件3: 最新一组数据上一层区间的控制系数 调整 - 48
|
|
|
+ <el-input-number v-model="adjustmentFormData.a48" style="width: 200px;"></el-input-number>
|
|
|
+ %,三者比较
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ if (条件1 最大){
|
|
|
+ </p>
|
|
|
+ <p class="pl-[20px]">控制系数 = 条件1;</p>
|
|
|
+ <p> }elseif(条件2 最大){</p>
|
|
|
+ <p class="pl-[20px]">49
|
|
|
+ 控制系数 = 最新一组数据的控制系数 调整<el-input-number v-model="adjustmentFormData.a49"
|
|
|
+ style="width: 200px;"></el-input-number>% ;
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ }else{
|
|
|
+ </p>
|
|
|
+ <p class="pl-[20px]">控制系数 = 条件3;</p>
|
|
|
+ <p>}</p>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="space-y-[10px]">
|
|
|
+ <p>② 有有效控制系数</p>
|
|
|
+ <p>条件1:最新一组好氧池硝酸盐数据 与 条件2:有效控制系数硝酸盐 二者比较</p>
|
|
|
+ <p>if(条件1 最大){</p>
|
|
|
+ <p class="pl-[20px]">控制系数 = 有效控制系数 调整50<el-input-number v-model="adjustmentFormData.a50"
|
|
|
+ style="width: 200px;"></el-input-number>%;</p>
|
|
|
+ <p>}else{</p>
|
|
|
+ <p class="pl-[20px]">控制系数 = 有效控制系数 调整51 - <el-input-number v-model="adjustmentFormData.a51"
|
|
|
+ style="width: 200px;"></el-input-number>% ;</p>
|
|
|
+ <p>}</p>
|
|
|
+ <p>|| 档位3降至同档位调参:</p>
|
|
|
+ <p>① 无有效控制系数</p>52
|
|
|
+ <p>条件1:当前控制系数 调整-<el-input-number v-model="adjustmentFormData.a52" style="width: 200px;" />% 与 条件2:最新一组数据的控制系数 二者比较</p>
|
|
|
+ <p>if (条件1 最大){</p>
|
|
|
+ <p>控制系数 = 条件1 ;</p>
|
|
|
+ <p>}else{</p>
|
|
|
+ <p>控制系数 = 条件2;</p>
|
|
|
+ <p>}</p>
|
|
|
+ <p>② 有有效控制系数</p>
|
|
|
+ <p>条件1:最新一组好氧池硝酸盐数据 与 条件2:有效控制系数好氧硝酸 二者比较</p>
|
|
|
+ <p>if(条件1 最大){</p>
|
|
|
+ <p>控制系数 = 有效控制系数调整53 <el-input-number v-model="adjustmentFormData.a53" style="width: 200px;" /> % ;</p>
|
|
|
+ <p>}else{</p>
|
|
|
+ <p>控制系数 = 有效控制系数调整54 - <el-input-number v-model="adjustmentFormData.a54" style="width: 200px;" />% ;</p>
|
|
|
+ <p>}</p>
|
|
|
+ </div>
|
|
|
+ <div class="space-y-[10px]">
|
|
|
+ <p>|| 档位3降至档位2调参:</p>55
|
|
|
+ <p>条件1:当前控制*(100- <el-input-number v-model="adjustmentFormData.a55" style="width: 200px;" />* X )/100 与
|
|
|
+ 条件2:最新一组数据的控制系数 二者比较</p>
|
|
|
+ <p> if(条件1 大){</p>
|
|
|
+ <p class="pl-[20px]">控制系数 = 条件1 ;</p>
|
|
|
+ <p>}else{</p>
|
|
|
+ <p class="pl-[20px]">控制系数 = 条件2 ;</p>
|
|
|
+ <p>}</p>
|
|
|
+ <p>|| 档位3同档调参</p>56
|
|
|
+ <p>控制系数 = 当前控制系数 调整 <el-input-number v-model="adjustmentFormData.a56" style="width: 200px;" />%。</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+
|
|
|
+ <el-card>
|
|
|
+ <template #header>
|
|
|
+ <h4 class="title">前反馈调参规则参数设定</h4>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div class="content space-y-[10px] text-[14px]">
|
|
|
+ <div class="space-y-[10px]">
|
|
|
+ <p>
|
|
|
+ 实时监控,缺氧区出水氨氮+缺氧区出水硝酸盐 <57
|
|
|
+ <el-input-number v-model="adjustmentFormData.a57" style="width: 200px;"></el-input-number>
|
|
|
+ , 连续58
|
|
|
+ <el-input-number v-model="adjustmentFormData.a58" style="width: 200px;"></el-input-number>
|
|
|
+ 小时, 切换至后反馈调参模式
|
|
|
+ </p>
|
|
|
+ <p>|| 升档调参</p>
|
|
|
+ <p>条件1: 当前控制系数 调整59<el-input-number v-model="adjustmentFormData.a59"
|
|
|
+ style="width: 200px;"></el-input-number>% 与
|
|
|
+ 条件2:最新一组数据的控制系数 二者比较</p>
|
|
|
+ <p>if(条件1 大){</p>
|
|
|
+ <p class="pl-[20px]">控制系数 = 条件1 ;</p>
|
|
|
+ <p>}else{</p>
|
|
|
+ <p class="pl-[20px]">控制系数 = 条件2 ;</p>
|
|
|
+ <p>}</p>
|
|
|
+ <p>|| 同档调参</p>
|
|
|
+ <p>控制系数 = 当前控制系数 调整 60<el-input-number v-model="adjustmentFormData.a60"
|
|
|
+ style="width: 200px;"></el-input-number>%
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <div class="flex items-center justify-center pt-[30px]">
|
|
|
+ <el-button type="primary" @click="onUpdateParamterConfig">更新配置</el-button>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.tips {
|
|
|
+ font-size: 12px;
|
|
|
+ color: #999;
|
|
|
+}
|
|
|
+
|
|
|
+.title {
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+
|
|
|
+p {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #606266;
|
|
|
+}
|
|
|
+</style>
|