whychdw
2025-05-13 07d36c1f6f0398f56769ce88c89dc2a87f03fa8a
src/views/dataMager/components/AddBattGroup.vue
@@ -116,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"
@@ -175,6 +177,7 @@
            <el-select
              v-model="params.topologyMapType"
              placeholder="请选择电池类型"
              @change="handleMapTypeChange"
            >
              <el-option
                v-for="item in pictureTypes"
@@ -336,6 +339,65 @@
                :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>
@@ -507,8 +569,9 @@
  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,
@@ -519,6 +582,8 @@
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: {
@@ -542,8 +607,13 @@
      trigger: "change",
    };
    return {
      clientName: systemConfig.clientName.name,
      jsonData: {},
      bmsList: [],
      tabValue: [],
      tabList: [],
      layout: {
        span: 8,
        span: 6,
        gutter: 16,
      },
      params: {
@@ -605,6 +675,11 @@
        signType: 0, // 验签格式
        cellShowType: 0, // 电池类型
        topologyMapType: 0, // 拓扑图类型
        commPort: 102,    // 连接端口
        labelCfg: '',     // 实时监控的标签,使用,分隔的字符串
        deviceId: '',     // BMS设备ID
        stationName9: '',       // 地铁线路名称
        stationName8: '',       // 地铁站点名称
      },
      signTypes: const_61850.signTypes,
      tmpList: [],
@@ -908,6 +983,7 @@
        },
      ],
      pictureTypes: pictureTypes,
      acdcSecuityFlag: false,
    };
  },
  watch: {
@@ -916,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() {
      // 省
      // 查询后台
@@ -1265,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];
          });
@@ -1282,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 {
@@ -1385,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)
@@ -1418,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
@@ -1436,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);
    // 初始化值
@@ -1455,6 +1647,12 @@
    // 查询所有的电价分布模板
    this.searchTplAll();
    this.handleDevTypeChange();
    this.dfBmsDevices();
    this.jsonData = await this.getJson();
  },
};
</script>
@@ -1474,7 +1672,7 @@
.form-footer .three-btn {
  margin-left: 12px;
}
>>> ::-webkit-input-placeholder {
::-webkit-input-placeholder {
  color: #666 !important;
}
</style>