whychdw
2025-05-13 07d36c1f6f0398f56769ce88c89dc2a87f03fa8a
src/views/dataMager/components/AddBattGroup.vue
@@ -15,6 +15,7 @@
              v-model="params.stationName1"
              placeholder="请选择省"
              @change="provinceChange"
              allow-create
              :filterable="true"
            >
              <el-option
@@ -34,6 +35,7 @@
              v-model="params.stationName2"
              placeholder="请选择市"
              @change="cityChange"
              allow-create
              :filterable="true"
            >
              <el-option
@@ -114,8 +116,10 @@
        <el-col :span="layout.span">
          <el-form-item label="设备类型" prop="fbsdeviceId">
            <el-select
              filterable
              v-model="params.fbsdeviceId"
              placeholder="请选择设备类型"
              @change="handleDevTypeChange"
            >
              <el-option
                v-for="item in devTypes"
@@ -154,9 +158,9 @@
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="电池组类型" prop="battGroupNum">
          <el-form-item label="电池组类型" prop="cellShowType">
            <el-select
              v-model="params.battGroupNum"
              v-model="params.cellShowType"
              placeholder="请选择电池类型"
            >
              <el-option
@@ -164,6 +168,22 @@
                :key="item.value"
                :label="item.label"
                :value="item.value"
              ></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="电路图类型" prop="topologyMapType">
            <el-select
              v-model="params.topologyMapType"
              placeholder="请选择电池类型"
              @change="handleMapTypeChange"
            >
              <el-option
                v-for="item in pictureTypes"
                :key="item.value"
                :label="item.label"
                :value="item.key"
              ></el-option>
            </el-select>
          </el-form-item>
@@ -270,7 +290,7 @@
          <el-form-item label="电池生产日期" prop="battProductDate">
            <el-date-picker
              v-model="params.battProductDate"
              size="small"
              size="mini"
              type="date"
              placeholder="选择日期"
              value-format="yyyy-MM-dd"
@@ -281,7 +301,7 @@
          <el-form-item label="投入使用日期" prop="battInUseDate">
            <el-date-picker
              v-model="params.battInUseDate"
              size="small"
              size="mini"
              type="date"
              placeholder="选择日期"
              value-format="yyyy-MM-dd"
@@ -308,6 +328,78 @@
        <el-col :span="layout.span">
          <el-form-item label="基站号码">
            <el-input v-model="params.stationPhone"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="验签格式">
            <el-select v-model="params.signType" placeholder="请选择">
              <el-option
                v-for="item in signTypes"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="通信端口号">
            <el-input v-model="params.commPort"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span" v-if="isDfBms">
          <el-form-item label="BMS设备ID">
            <el-select filterable size="mini" v-model="params.deviceId">
              <el-option
                v-for="(item, key) in bmsList" :key="'key'+key"
                :disabled="item.isUsed"
                :label="item.label" :value="item.id"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="交直流监控屏启用">
            <el-switch
              v-model="acdcSecuityFlag"
              active-color="#13ce66"
              inactive-color="#aaa"
              active-text="启用"
              inactive-text="关闭"
              size="mini">
            </el-switch>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span" v-if="isSzdt">
          <el-form-item label="地铁线路">
            <el-select size="mini" v-model="params.stationName9" @change="subwayLineChange">
              <el-option label="无" value=""></el-option>
              <el-option
                v-for="(item, key) in subwayLines" :key="'key'+key"
                :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span" v-if="isSzdt">
          <el-form-item label="地铁站点名称">
            <el-select size="mini" v-model="params.stationName8">
              <el-option label="无" value=""></el-option>
              <el-option
                v-for="(item, key) in subwayStations" :key="'key'+key"
                :label="item.label" :value="item.value"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="16" v-if="tabList.length">
          <el-form-item label="实时监控标签">
            <el-select v-model="tabValue" multiple placeholder="请选择">
              <el-option
                v-for="item in tabList"
                :key="item.name"
                :label="item.label"
                :value="item.name">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
@@ -477,17 +569,21 @@
  searchCounty,
  getExistStations,
} from "@/assets/js/api.js";
import systemConfig from '@/assets/js/config';
import { searchTplAll } from "../js/eletmp";
import { searchBattProducer, add, getMaxIp } from "../js/battGroupMager";
import { searchBattProducer, add, getMaxIp, dfBmsDevicesAPI } from "../js/battGroupMager";
import {
  const_province_city_county,
  const_battGroup,
  const_devType,
  const_battery_type,
  const_61850,
} from "@/assets/js/const";
import const_rules from "@/assets/js/const/const_rules";
import getDevIp from "@/assets/js/tools/getDevIp";
import getTabList from "@/assets/js/tools/getTabList";
export default {
  props: {
@@ -502,6 +598,7 @@
    let rules = const_battGroup.rules;
    let constRules = const_rules;
    let devTypes = const_devType.batt;
    let pictureTypes = const_devType.pictureTypes;
    let batteryTypes = const_battery_type.types;
    const subRules = {
      validator(rule, value, callback) {
@@ -510,8 +607,13 @@
      trigger: "change",
    };
    return {
      clientName: systemConfig.clientName.name,
      jsonData: {},
      bmsList: [],
      tabValue: [],
      tabList: [],
      layout: {
        span: 8,
        span: 6,
        gutter: 16,
      },
      params: {
@@ -570,7 +672,16 @@
        remotemonitor: "", // 是否实现远程监控
        batttIndependentPlaced: "", // 是否独立蓄电池室放置
        junChargeVoltageValue: 0, // 均充电压设定值
        signType: 0, // 验签格式
        cellShowType: 0, // 电池类型
        topologyMapType: 0, // 拓扑图类型
        commPort: 102,    // 连接端口
        labelCfg: '',     // 实时监控的标签,使用,分隔的字符串
        deviceId: '',     // BMS设备ID
        stationName9: '',       // 地铁线路名称
        stationName8: '',       // 地铁站点名称
      },
      signTypes: const_61850.signTypes,
      tmpList: [],
      rules: {
        stationName1: [
@@ -871,6 +982,8 @@
          value: 1,
        },
      ],
      pictureTypes: pictureTypes,
      acdcSecuityFlag: false,
    };
  },
  watch: {
@@ -879,6 +992,54 @@
    },
  },
  methods: {
    async getJson() {
      const dynamicPath = `mapJson/subway/suzhou1.json`;
      try {
        const response = await fetch(dynamicPath);
        if (!response.ok) {
          throw new Error(`HTTP error! status: ${response.status}`);
        }
        const data = await response.json();
        // console.log("data", data, "=============");
        // this.defaultData = data.l;
        return data;
      } catch (error) {
        console.error("加载 JSON 出错:", error);
      }
    },
    subwayLineChange() {
      this.params.stationName8 = "";
    },
    sortTabList(tabValue, tabList) {
      let result = [];
      for(let i=0; i<tabList.length; i++) {
        for(let j=0; j<tabValue.length;j++) {
          if(tabList[i].name === tabValue[j]) {
            result.push(tabValue[j]);
            break;
          }
        }
      }
      return result;
    },
    handleDevTypeChange() {
      let tabList = getTabList(this.params.fbsdeviceId);
      this.tabList = tabList;
      this.tabValue = [];
      tabList.forEach(item=>{
        this.tabValue.push(item.name);
      });
    },
    handleMapTypeChange() {
      // 对于假负载带母联进行特殊处理
      if (this.params.topologyMapType === 11) {
        this.params.buscoupleState = 1;
      } else {
        this.params.buscoupleState = 0;
      }
    },
    searchProvince() {
      // 省
      // 查询后台
@@ -1213,7 +1374,7 @@
    battProducerOk() {
      var value = this.battProducer.value.trim();
      if (!value) {
        this.$message.error('不能为空');
        this.$message.error("不能为空");
        return false;
      }
      // 获取选择的值
@@ -1228,10 +1389,16 @@
    },
    // 提交表单设置参数
    submitFrom() {
      // 对于东峰BMS设备提前做校验
      if(this.isDfBms && !this.params.deviceId) {
        this.$layer.msg("请选择BMS设备ID");
        return;
      }
      this.$refs.ruleForm.validate((valid) => {
        // 校验通过
        if (valid) {
          var tmp = {};
          let tmp = {};
          Object.keys(this.params).forEach((key, value) => {
            tmp[key] = this.params[key];
          });
@@ -1245,6 +1412,10 @@
            tmp.stationName3 +
            "-" +
            tmp.stationName4;
          tmp.acdcSecuityFlag = this.acdcSecuityFlag * 1;
          let tabValue = this.sortTabList(this.tabValue, this.tabList);
          tmp.labelCfg = this.tabList.length !== 0?tabValue.join(','):'';
          // 添加机房
          this.addHome(tmp);
        } else {
@@ -1348,6 +1519,25 @@
        this.params.tmpId = 0;
      }
    },
    dfBmsDevices() {
      dfBmsDevicesAPI()
        .then((res) => {
          res = res.data;
          console.log(res);
          if (res.code) {
            this.bmsList = res.data.map(item=>{
              item.label=item.deviceName;
              item.value = item.deviceId;
              return item;
            });
          }else {
            this.bmsList = [];
          }
        }).catch((error) => {
          this.bmsList = [];
          console.log(error);
        });
    },
    autoComputeIp() {
      let loading = this.$layer.loading();
      getMaxIp(this.params.fbsdeviceId)
@@ -1381,13 +1571,47 @@
    },
  },
  computed: {
    isSzdt() {
      return this.clientName === "szdt";
    },
    subwayLines() {
      let jsonData = this.jsonData;
      let list = [];
      if(jsonData.l) {
        list = jsonData.l.map(item=>{
          return {
            label: item.ln,
            value: item.ln,
          }
        })
      }
      return list;
    },
    subwayStations() {
      let list = [];
      let jsonData = this.jsonData;
      if(jsonData.l) {
        for(let i=0; i<jsonData.l.length; i++) {
          let itemData = jsonData.l[i];
          if(itemData.ln === this.params.stationName9) {
            list = itemData.st.map(item=>{
              return {
                label: item.n,
                value: item.n
              }
            })
          }
        }
      }
      return list;
    },
    isInversion() {
      let dev_id = this.params.fbsdeviceId;
      return regEquipType(dev_id, "BTS9120");
      return regEquipType(dev_id, ["BTS9120", 'fbo6187']);
    },
    isHasBuscouple() {
      let dev_id = this.params.fbsdeviceId;
      return regEquipType(dev_id,["BTS9120", "BTS9110"]);
      return regEquipType(dev_id, ["BTS9120", "BTS9110", 'fbo6187']);
    },
    isLithium() {
      // 锂电BTS
@@ -1399,12 +1623,17 @@
      let dev_id = this.params.fbsdeviceId;
      return regEquipType(dev_id, ["lithiumPack"]);
    },
    isDfBms() {
      // BMS
      let dev_id = this.params.fbsdeviceId;
      return regEquipType(dev_id, ["dfBms"]);
    },
    monCountText() {
      let isLithiumPack = this.isLithiumPack;
      return isLithiumPack ? "锂电池包单体个数" : "单体个数";
    },
  },
  mounted() {
  async mounted() {
    // 设置省市区县的数据
    this.linkagePlus.setData(const_province_city_county);
    // 初始化值
@@ -1418,6 +1647,12 @@
    // 查询所有的电价分布模板
    this.searchTplAll();
    this.handleDevTypeChange();
    this.dfBmsDevices();
    this.jsonData = await this.getJson();
  },
};
</script>
@@ -1437,7 +1672,7 @@
.form-footer .three-btn {
  margin-left: 12px;
}
>>> ::-webkit-input-placeholder {
::-webkit-input-placeholder {
  color: #666 !important;
}
</style>