whychdw
2025-05-13 07d36c1f6f0398f56769ce88c89dc2a87f03fa8a
src/views/dataMager/components/EditBattGroup.vue
@@ -158,6 +158,22 @@
          </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>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="电池组名称" prop="battGroupName">
            <el-input v-model="params.battGroupName"></el-input>
          </el-form-item>
@@ -254,7 +270,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"
@@ -265,7 +281,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"
@@ -296,14 +312,72 @@
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="验签格式">
            <el-select
              v-model="params.signType"
              placeholder="请选择">
            <el-select size="mini" v-model="params.signType" placeholder="请选择">
              <el-option
                v-for="item in signTypes"
                :key="item.value"
                :label="item.label"
                :value="item.value">
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="layout.span">
          <el-form-item label="通信端口号">
            <el-input size="mini" 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 size="mini" v-model="params.deviceId">
              <el-option
                v-for="(item, key) in bmsList" :key="'key'+key"
                :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"
              size="mini"
              active-color="#13ce66"
              inactive-color="#aaa"
              active-text="启用"
              inactive-text="关闭"
            >
            </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>
@@ -475,14 +549,17 @@
  const_province_city_county,
  const_battGroup,
  const_battery_type,
  const_61850
  const_61850,
  const_devType,
} from "@/assets/js/const";
import systemConfig from '@/assets/js/config';
import { searchProvince, searchCity, searchCounty } from "@/assets/js/api.js";
import { searchTplAll } from "../js/eletmp";
import { searchBattProducer, edit } from "../js/battGroupMager";
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: {
@@ -494,6 +571,7 @@
  data() {
    let rules = const_battGroup.rules;
    let constRules = const_rules;
    let pictureTypes = const_devType.pictureTypes;
    let batteryTypes = const_battery_type.types;
    const subRules = {
      validator(rule, value, callback) {
@@ -502,10 +580,15 @@
      trigger: "change",
    };
    return {
      clientName: systemConfig.clientName.name,
      jsonData: {},
      bmsList: [],
      tabValue: [],
      tabList: [],
      reasonVisible: false,
      updateReason: "",
      layout: {
        span: 8,
        span: 6,
        gutter: 16,
      },
      params: {
@@ -564,7 +647,13 @@
        remotemonitor: "", // 是否实现远程监控
        batttIndependentPlaced: "", // 是否独立蓄电池室放置
        junChargeVoltageValue: 0, // 均充电压设定值
        signType: 0,    // 验签格式
        signType: 0, // 验签格式
        topologyMapType: 0, // 拓扑图类型
        commPort: 102,    // 连接端口
        labelCfg: '',     // 实时监控的标签,使用,分隔的字符串
        deviceId: '',     // BMS设备ID
        stationName9: '',       // 地铁线路名称
        stationName8: '',       // 地铁站点名称
      },
      signTypes: const_61850.signTypes,
      rules: {
@@ -864,6 +953,8 @@
          value: 1,
        },
      ],
      pictureTypes: pictureTypes,
      acdcSecuityFlag: false,
    };
  },
  watch: {
@@ -872,6 +963,59 @@
    },
  },
  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 = [];
      if(this.params.labelCfg) {
        let tabValue = this.params.labelCfg.split(',');
        this.tabValue = this.sortTabList(tabValue, tabList);
      }else {
        tabList.forEach(item=>{
          this.tabValue.push(item.name);
        });
      }
    },
    handleMapTypeChange() {
      // 对于假负载带母联进行特殊处理
      if (this.params.topologyMapType === 11) {
        this.params.buscoupleState = 1;
      } else {
        this.params.buscoupleState = 0;
      }
    },
    searchProvince() {
      // 省
      // 查询后台
@@ -915,7 +1059,7 @@
    battProducerOk() {
      var value = this.battProducer.value.trim();
      if (!value) {
        this.$message.error('不能为空');
        this.$message.error("不能为空");
        return false;
      }
      // 获取选择的值
@@ -946,8 +1090,8 @@
    },
    submitFrom() {
      let { updateReason } = this;
      if ('' == updateReason.trim()) {
        this.$message.error('请填写修改原因');
      if ("" == updateReason.trim()) {
        this.$message.error("请填写修改原因");
        return false;
      }
      var tmp = {};
@@ -965,6 +1109,10 @@
        "-" +
        tmp.stationName4;
      tmp.updateReason = updateReason;
      tmp.acdcSecuityFlag = this.acdcSecuityFlag * 1;
      let tabValue = this.sortTabList(this.tabValue, this.tabList);
      tmp.labelCfg = this.tabList.length !== 0?tabValue.join(','):'';
      // 编辑机房
      this.editHome(tmp);
    },
@@ -1237,6 +1385,40 @@
    },
  },
  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");
@@ -1260,8 +1442,13 @@
      let isLithiumPack = this.isLithiumPack;
      return isLithiumPack ? "锂电池包单体个数" : "单体个数";
    },
    isDfBms() {
      // BMS
      let dev_id = this.params.fbsdeviceId;
      return regEquipType(dev_id, ["dfBms"]);
    },
  },
  mounted() {
  async mounted() {
    // 设置省市区县的数据
    this.linkagePlus.setData(const_province_city_county);
@@ -1272,9 +1459,14 @@
    this.searchbattProducer();
    this.params = extend({}, this.batt);
    this.acdcSecuityFlag = !!this.batt.acdcSecuityFlag;
    // 查询所有的电价分布图模板
    this.searchTplAll();
    this.handleDevTypeChange();
    this.jsonData = await this.getJson();
  },
};
</script>