码迷,mamicode.com
首页 > 其他好文 > 详细

电子档案项目记录

时间:2019-06-27 12:20:42      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:ntb   git   有一个   tab页   class   dna   yun   watch   build   

一、从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就是底层图片地图

picUrl从哪里来的呢?
Floor组件,里面有
that.$emit("changeFloorPic", floorData && JSON.stringify(floorData) != ‘{}‘ ? floorData : data[0]);方法,
父组件G2MapDetail.vue接收:v-on:changeFloorPic="changeFloorPic"
改变floorObj
Plantu里面使用prop接收floorObj,然后在watch里面改变地图的图片

电子档案项目记录

标签:ntb   git   有一个   tab页   class   dna   yun   watch   build   

原文地址:https://blog.51cto.com/9161018/2414111

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!