|
@@ -2,17 +2,26 @@
|
|
|
<el-dialog title="批量关联资产" :visible.sync="dialog.linkAssets" width="700px">
|
|
|
<el-row>
|
|
|
<span class="condition-title">设备类型:</span>
|
|
|
- <el-select v-model="deviceType" filterable size="small" @change="handleChangeDevice" style="width:250px;">
|
|
|
+ <el-select v-model="deviceType" filterable size="small" @change="handleChangeDevice" style="width:350px;">
|
|
|
<el-option v-for="item in deviceTypeList" :key="item.Category" :label="item.CategoryName" :value="item.Category"></el-option>
|
|
|
</el-select>
|
|
|
</el-row>
|
|
|
<el-row style="margin-top:30px;">
|
|
|
<span class="condition-title">建筑楼层:</span>
|
|
|
- <el-cascader :options="bfoptions" v-model="buildFloor" filterable size="small" @change="handleChangeBf" style="width:250px;"></el-cascader>
|
|
|
+ <el-cascader :options="bfoptions" v-model="buildFloor" filterable size="small" @change="handleChangeBf" style="width:350px;"></el-cascader>
|
|
|
</el-row>
|
|
|
- <el-row style="margin-top:30px;" v-if="spaceShow">
|
|
|
- <span class="condition-title">分区类型空间实例:</span>
|
|
|
- <el-cascader v-model="space" filterable clearable collapse-tags size="small" :options="spaceList" :props="props" @active-item-change='handleChangeSpaceItem' style="width:250px;"></el-cascader>
|
|
|
+ <el-row style="margin-top:30px;" v-show="spaceShow">
|
|
|
+ <span class="condition-title">分区类型:</span>
|
|
|
+ <el-select v-model="zone" filterable size="small" @change="handleChangeZone" style="width:350px;">
|
|
|
+ <el-option v-for="item in zoneList" :key="item.Code" :label="item.Name" :value="item.Code"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-row>
|
|
|
+ <el-row style="margin-top:30px;" v-show="spaceShow && zone != 'all' && zone != 'noKnow'">
|
|
|
+ <span class="condition-title">空间实例:</span>
|
|
|
+ <el-select v-model="space" multiple filterable collapse-tags style="width:350px;" placeholder="请选择">
|
|
|
+ <el-option v-for="item in spaceList" :key="item.value" :label="item.label" :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
</el-row>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
<el-button @click="handleClickClose">取 消</el-button>
|
|
@@ -45,14 +54,11 @@ export default {
|
|
|
buildFloor: ['all'], //选择的建筑楼层
|
|
|
deviceTypeList: [], //未关联资产的设备或部件列表
|
|
|
deviceType: '', //选择的设备类型
|
|
|
+ zone: 'all', //空间分区
|
|
|
+ zoneList: [], //空间分区列表
|
|
|
spaceList: [], //空间实例列表
|
|
|
space: [], //选择的空间实例
|
|
|
- spaceShow: false,
|
|
|
- props: {
|
|
|
- multiple: true,
|
|
|
- children: 'children'
|
|
|
- }, //多选级联配置
|
|
|
-
|
|
|
+ spaceShow: false
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
@@ -153,84 +159,77 @@ export default {
|
|
|
Projection: [ "Code", "Name" ]
|
|
|
}
|
|
|
queryDictionaryHead(params, res => {
|
|
|
- this.spaceList = res.Content.map((item) => {
|
|
|
- return {
|
|
|
- label: item.Name,
|
|
|
- value: item.Code,
|
|
|
- children: []
|
|
|
- }
|
|
|
+ this.zoneList = res.Content
|
|
|
+ this.zoneList.unshift({
|
|
|
+ Name: '全部',
|
|
|
+ Code: 'all'
|
|
|
})
|
|
|
- this.spaceList.unshift({
|
|
|
- label: '不在任何业务空间内',
|
|
|
- value: 'noKnow'
|
|
|
+ this.zoneList.push({
|
|
|
+ Name: '不在任何业务空间内',
|
|
|
+ Code: 'noKnow'
|
|
|
})
|
|
|
})
|
|
|
},
|
|
|
// 修改设备类型
|
|
|
- handleChangeDevice() {
|
|
|
-
|
|
|
+ handleChangeDevice(val) {
|
|
|
+ this.zoneListIsShow()
|
|
|
},
|
|
|
// 修改建筑楼层
|
|
|
handleChangeBf(val) {
|
|
|
- let lastVal = val.slice(-1)[0]
|
|
|
- // 重置空间实例选择
|
|
|
- this.space = []
|
|
|
- this.spaceList.map(item => {
|
|
|
- if (item.children)
|
|
|
- item.children = []
|
|
|
- })
|
|
|
- if(!lastVal || lastVal == 'noKnow' || val[0] == 'all') {
|
|
|
+ this.zoneListIsShow()
|
|
|
+ },
|
|
|
+ //判断是否显示空间分区选择
|
|
|
+ zoneListIsShow(){
|
|
|
+ let lastVal = this.buildFloor.slice(-1)[0]
|
|
|
+ if(!lastVal || lastVal == 'noKnow' || this.buildFloor[0] == 'all' || this.deviceType.length != 4) {
|
|
|
this.spaceShow = false
|
|
|
} else {
|
|
|
- this.spaceShow = false
|
|
|
- this.$nextTick(() => {
|
|
|
- this.spaceShow = true
|
|
|
- })
|
|
|
+ this.spaceShow = true
|
|
|
}
|
|
|
},
|
|
|
+ //修改分区类型
|
|
|
+ handleChangeZone() {
|
|
|
+ // 重置空间实例选择
|
|
|
+ this.space = []
|
|
|
+ this.spaceList = []
|
|
|
+
|
|
|
+ this.handleChangeSpaceItem()
|
|
|
+ },
|
|
|
// 获取空间实例
|
|
|
- handleChangeSpaceItem(val) {
|
|
|
- let type = val[0]
|
|
|
- if(val.length == 1) {
|
|
|
- if(type) {
|
|
|
- let zone = type,
|
|
|
- nodes = []
|
|
|
- let recursionGetData = (pageNum, zone) => {
|
|
|
- pageNum = pageNum ? pageNum : 1
|
|
|
- let params = {
|
|
|
- zone: zone,
|
|
|
- data: {
|
|
|
- Orders: "CreateTime desc, RoomID asc",
|
|
|
- PageNumber: pageNum,
|
|
|
- PageSize: 1000,
|
|
|
- Projection: ["RoomID", "RoomName", "RoomLocalName", "CreateTime"]
|
|
|
- },
|
|
|
- }
|
|
|
- if(this.spaceShow) {
|
|
|
- if(this.buildFloor.length == 2 && this.buildFloor[1] != 'all') {
|
|
|
- params.data.Filters = `buildingId='${this.buildFloor[0]}';floorId='${this.buildFloor[1]}'`
|
|
|
- } else {
|
|
|
- params.data.Filters = `buildingId='${this.buildFloor[0]}'`
|
|
|
- }
|
|
|
+ handleChangeSpaceItem() {
|
|
|
+ if(this.zone != 'all' && this.zone != 'noKnow') {
|
|
|
+ let nodes = []
|
|
|
+ let recursionGetData = (pageNum, zone) => {
|
|
|
+ pageNum = pageNum ? pageNum : 1
|
|
|
+ let params = {
|
|
|
+ zone: zone,
|
|
|
+ data: {
|
|
|
+ Orders: "CreateTime desc, RoomID asc",
|
|
|
+ PageNumber: pageNum,
|
|
|
+ PageSize: 1000,
|
|
|
+ Projection: ["RoomID", "RoomName", "RoomLocalName", "CreateTime"]
|
|
|
+ },
|
|
|
+ }
|
|
|
+ if(this.spaceShow) {
|
|
|
+ if(this.buildFloor.length == 2 && this.buildFloor[1] != 'all') {
|
|
|
+ params.data.Filters = `buildingId='${this.buildFloor[0]}';floorId='${this.buildFloor[1]}'`
|
|
|
+ } else {
|
|
|
+ params.data.Filters = `buildingId='${this.buildFloor[0]}'`
|
|
|
}
|
|
|
- queryZone(params, res => {
|
|
|
- nodes = nodes.concat(res.Content.map(item => ({
|
|
|
- value: item.RoomID,
|
|
|
- label: item.RoomLocalName?item.RoomLocalName:item.RoomName
|
|
|
- })))
|
|
|
- if (res.Total / (res.PageSize * res.PageNumber) > 1) {
|
|
|
- recursionGetData(res.PageNumber + 1, zone)
|
|
|
- } else {
|
|
|
- this.spaceList.map(item => {
|
|
|
- if(item.value == type) {
|
|
|
- item.children = nodes
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
}
|
|
|
- recursionGetData(1, zone)
|
|
|
+ queryZone(params, res => {
|
|
|
+ nodes = nodes.concat(res.Content.map(item => ({
|
|
|
+ value: item.RoomID,
|
|
|
+ label: item.RoomLocalName?item.RoomLocalName:item.RoomName
|
|
|
+ })))
|
|
|
+ if (res.Total / (res.PageSize * res.PageNumber) > 1) {
|
|
|
+ recursionGetData(res.PageNumber + 1, zone)
|
|
|
+ } else {
|
|
|
+ this.spaceList = nodes
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
+ recursionGetData(1, this.zone)
|
|
|
}
|
|
|
},
|
|
|
// 点击取消关闭弹窗
|
|
@@ -248,16 +247,29 @@ export default {
|
|
|
this.$message.info('请选择建筑楼层!')
|
|
|
return false
|
|
|
}
|
|
|
- if(this.spaceShow) {
|
|
|
- query = {
|
|
|
- deviceType: this.deviceType,
|
|
|
- buildFloor: this.buildFloor,
|
|
|
- spaceList: this.space.map(item => {
|
|
|
- if(item[0] == 'noKnow')
|
|
|
- return item[0]
|
|
|
- if(item[1])
|
|
|
- return item[1]
|
|
|
- })
|
|
|
+ if(this.spaceShow) { //选择了空间
|
|
|
+ if(this.zone == 'all'){//全部空间
|
|
|
+ query = {
|
|
|
+ deviceType: this.deviceType,
|
|
|
+ buildFloor: this.buildFloor
|
|
|
+ }
|
|
|
+ } else if (this.zone == 'noKnow'){//不在空间内
|
|
|
+ query = {
|
|
|
+ deviceType: this.deviceType,
|
|
|
+ buildFloor: this.buildFloor,
|
|
|
+ spaceList: this.zone
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if(this.space.length){//选择了具体的空间实例
|
|
|
+ query = {
|
|
|
+ deviceType: this.deviceType,
|
|
|
+ buildFloor: this.buildFloor,
|
|
|
+ spaceList: this.space
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$message.info('请选择空间实例!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
query = {
|
|
@@ -279,7 +291,7 @@ export default {
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
.condition-title{
|
|
|
- width: 200px;
|
|
|
+ width: 100px;
|
|
|
display: inline-block;
|
|
|
text-align: right;
|
|
|
margin-left: 10px;
|