电子档案项目记录

一、从archivesList.vue 的 toDetail 方法进入页面
电子档案项目记录

<el-tabs v-model="activeName" class="top-tab" @tab-click="handleClick">
    <el-tab-pane label="设备标点" name="equipmentPoint">
        <EquipmentPoint v-if="activeName === 'equipmentPoint'"/>
    </el-tab-pane>
</el-tabs>

v-model的值绑定选项卡的 name值,点击的时候,activeName的值动态改变为选项卡的name值,当到哪一个tab页的时候,就渲染对应的组件

equipmentPoint组件
使用了:
<G2MapDetail </G2MapDetail>组件
里面又有三个组件,分别是:
Search、Plantu、Floor

Search组件:
电子档案项目记录
获取楼栋下拉框信息:
getLouDong()方法
传入unitId,通过findBuildByUnitId接口获取数据
因为unitId是通过archivesList.vue组件传入的,如果直接存到store里面,那么会在刷新页面的时候丢失,所以需要存入localstorage里面:localStorage.setItem("unitId", unitId);
在Search.vue组件里面的mounted方法里面:
this.$store.commit('updateShUnitId', localStorage.getItem("unitId"))存到store里面,以后要用到这个unitId,就可以直接使用:var unitId = this.$store.state.shUnitId;获取

<el-col :span="5" class="text-2">
        <label>楼栋:</label>
        <el-select v-model.trim="formInline.area" placeholder="" @change="selectTypeName">
            <el-option v-for="item in areaOpts" :key="item.buildId" :label="item.buildName" :value="item.buildId"></el-option>
        </el-select>
</el-col>

:label="item.buildName":显示的是下拉框里面的值
v-model.trim="formInline.area":显示的是输入框里面的值电子档案项目记录

点击查询按钮:触发一个searchBtn事件

searchBtn: function () {
    var that = this;
    this.$store.commit('updateZSCurrentBuildname', this.buildName);
    this.$store.commit('updateZSCurrentBuild', this.formInline.area);
    this.$store.commit('updateZSdeviceId', this.formInline.deviceId);
    this.$store.commit('updateZSdeviceTypeId', this.ZS.MONITOR.deviceQueryType);
    this.$emit("searchFloor", {  //向父组件触发一个emit事件searchFloor
        buildId: that.formInline.area,
        unitId:that.$store.state.shUnitId,
        floorId:that.$store.state.ZS.MONITOR.currentFloor,
        deviceId: that.formInline.deviceId,
        deviceTypeIds:that.ZS.MONITOR.deviceQueryType
    })
}

Floor组件:
默认会初始调用:getFloorListByBuildId,里面有一个commit,that.$store.commit('updateZSCurrentFloorObj', Math.random());
这样,会触发Plantu组件:里面的watch,然后会调用里面的
addPicToMap(picUrl, buildId, floorId)方法
主要是获取floorArr,楼层信息
使用getFloorListByBuildId方法,
当有buildId的时候【这种情况属于点击查询按钮】,直接调用getFloorInfoByUnitIdAndBuildId接口,传入unitId和buildId,获取楼层信息,floorData = data[key];填充floorArr
当没有buildId的时候【这种情况属于,刚刚打开页面的情况,没有点击搜索按钮】,先通过findBuildByUnitId接口,传入unitId,获取buildId,默认为data.data[0].buildId,第一层楼,然后在调用getFloorInfoByUnitIdAndBuildId接口获取楼层信息

Plantu组件:
初始调用addPicToMap(picUrl, buildId, floorId)方法
然后,调用loadEquipmentPoint方法
设备标点:
that.drawPoint(equip['longitude'], equip['latitude'], iconUrl, equip);
地图上有地图和设备点,设备点是标上去的,地图只是一张图片而已
picUrl就是底层图片地图

猜你喜欢

转载自blog.51cto.com/9161018/2414111