|
@@ -34,7 +34,7 @@
|
|
|
</div>
|
|
|
<div class="progress">
|
|
|
<p class="basic-statistics">基本统计</p>
|
|
|
- <div class="data equipment">
|
|
|
+ <div class="data equipment" v-if="equipCount">
|
|
|
<!-- 设备:本期只做前三个 -->
|
|
|
<span class="contain-title">设备<i>{{`(${equipCount?equipCount:"0"})`}}</i></span>
|
|
|
<div class="data-show" v-loading="isLoading" v-if="equipment.length">
|
|
@@ -42,63 +42,39 @@
|
|
|
<data-origin :id="'origin' + index" :renderData="item"></data-origin>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="!equipment.length" class="center" style="height: 60%;transform: translateY(30%);">
|
|
|
- <i class="icon-wushuju iconfont"></i>
|
|
|
- 暂无数据
|
|
|
- </div>
|
|
|
</div>
|
|
|
- <div class="data assets">
|
|
|
+ <div class="data assets" v-if="assetsCount">
|
|
|
<span class="contain-title">资产<i>{{`(${assetsCount?assetsCount:"0"})`}}</i></span>
|
|
|
<div class="data-show" v-loading="isLoading" v-if="assets.length">
|
|
|
<div class="show-content" v-for="(item,index) in assets" :key="index">
|
|
|
<data-origin :id="'origin' + index" :renderData="item"></data-origin>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="!assets.length" class="center" style="height: 60%;transform: translateY(30%);">
|
|
|
- <i class="icon-wushuju iconfont"></i>
|
|
|
- 暂无数据
|
|
|
- </div>
|
|
|
</div>
|
|
|
- <div class="data parts">
|
|
|
+ <div class="data parts" v-if="partsCount">
|
|
|
<span class="contain-title">部件<i>{{`(${partsCount?partsCount:'0'})`}}</i></span>
|
|
|
- <div v-if="!parts.length" class="center" style="height: 60%;transform: translateY(30%);">
|
|
|
- <i class="icon-wushuju iconfont"></i>
|
|
|
- 暂无数据
|
|
|
- </div>
|
|
|
</div>
|
|
|
- <div class="data business-space">
|
|
|
+ <div class="data business-space" v-if="zoneSpaceCount">
|
|
|
<span class="contain-title">业务空间<i>{{`(${zoneSpaceCount?zoneSpaceCount:'0'})`}}</i></span>
|
|
|
<div class="data-show" v-if="business.length">
|
|
|
<div v-for="(item,index) in business" :key="index" class="show-content">
|
|
|
<datafan :id="'datafan' + index" :renderData="item"></datafan>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="!business.length" class="center" style="height: 60%;transform: translateY(30%);">
|
|
|
- <i class="icon-wushuju iconfont"></i>
|
|
|
- 暂无数据
|
|
|
- </div>
|
|
|
</div>
|
|
|
- <div class="data system">
|
|
|
+ <div class="data system" v-if="systemCount">
|
|
|
<!-- 系统:本期只查询总数 -->
|
|
|
<span class="contain-title">系统<i>{{`(${systemCount?systemCount:'0'})`}}</i></span>
|
|
|
- <div v-if="!system.length" class="center" style="height: 60%;transform: translateY(30%);">
|
|
|
- <i class="icon-wushuju iconfont"></i>
|
|
|
- 暂无数据
|
|
|
- </div>
|
|
|
</div>
|
|
|
- <div class="data tenant">
|
|
|
+ <div class="data tenant" v-if="rentantCount">
|
|
|
<span class="contain-title">租户<i>{{`(${rentantCount?rentantCount:'0'})`}}</i></span>
|
|
|
<div class="data-show" v-loading="isLoading" v-if="tenant.length">
|
|
|
<div class="show-content" v-for="(item,index) in tenant" :key="index">
|
|
|
<data-origin :id="'origin' + item + index" :renderData="item"></data-origin>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="!tenant.length" class="center" style="height: 60%;transform: translateY(30%);">
|
|
|
- <i class="icon-wushuju iconfont"></i>
|
|
|
- 暂无数据
|
|
|
- </div>
|
|
|
</div>
|
|
|
- <div class="data shaft">
|
|
|
+ <div class="data shaft" v-if="shaftCount">
|
|
|
<span class="contain-title">竖井<i>{{`(${shaftCount?shaftCount:'0'})`}}</i></span>
|
|
|
<div class="data-show" v-loading="isLoading" v-if="shaft.length">
|
|
|
<div class="show-content" v-for="(item,index) in shaft" :key="index">
|
|
@@ -106,10 +82,6 @@
|
|
|
<data-origin :id="'origin' + item + index" :renderData="item" v-else></data-origin>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="!shaft.length" class="center" style="height: 60%;transform: translateY(30%);">
|
|
|
- <i class="icon-wushuju iconfont"></i>
|
|
|
- 暂无数据
|
|
|
- </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -140,6 +112,7 @@ import {
|
|
|
import dataOrigin from "@/components/ledger/report/dataorigin";
|
|
|
import datafan from "@/components/ledger/report/datafan";
|
|
|
import { queryDataSourceCount, synchronizeProj } from "@/fetch/point_http";
|
|
|
+import { resolve } from 'q';
|
|
|
|
|
|
export default {
|
|
|
data() {
|
|
@@ -256,14 +229,14 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
zoneTypeConversion(item) {// 分区类型转换
|
|
|
- this.zoneType.map(it => {
|
|
|
+ this.zoneType.forEach(it => {
|
|
|
if (item.Name === it.Code) {
|
|
|
item.Name = it.Name;
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
functionTypeTranstion(item, type) {// 默认分区功能类型转换
|
|
|
- type.map(it => {
|
|
|
+ type.forEach(it => {
|
|
|
if (item.Name === it.Code) {
|
|
|
item.Name = it.Name;
|
|
|
this.defaultPart.push({
|
|
@@ -295,7 +268,7 @@ export default {
|
|
|
},
|
|
|
toPercent(point) {// 小数转换成百分比
|
|
|
if (point == 0) {
|
|
|
- return 0;
|
|
|
+ return `0%`;
|
|
|
}
|
|
|
var str = Number(point * 100).toFixed(2);
|
|
|
str += "%";
|
|
@@ -308,7 +281,7 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
shaftFunTypeTranstion(item) {// 竖井功能类型转换
|
|
|
- this.ShaftFunType.map((it, index) => {
|
|
|
+ this.ShaftFunType.forEach((it, index) => {
|
|
|
if (item.Name === it.Id) {
|
|
|
item.Name = it.Name;
|
|
|
}
|
|
@@ -341,9 +314,6 @@ export default {
|
|
|
this.postRelationInforCount = res.Count;
|
|
|
})
|
|
|
},
|
|
|
- getNotSyncObject() {
|
|
|
-
|
|
|
- },
|
|
|
getEquipCount() {// 获取设备总数
|
|
|
countEquip(this.params, res => {
|
|
|
this.equipCount = res.Count;
|
|
@@ -351,65 +321,80 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
getEquipOtherCount() {// 获取设备数据
|
|
|
+ this.equipment = [];
|
|
|
// 未关联资产
|
|
|
let param = {
|
|
|
ProjectId: this.projectId,
|
|
|
Filters: "PropertyId isNull"
|
|
|
}
|
|
|
- countEquip(param, res => {
|
|
|
+ let promise1 = new Promise(resolve => {
|
|
|
+ countEquip(param, res => {
|
|
|
+ resolve(res);
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ // 现场验证状态占比
|
|
|
+ let par = {
|
|
|
+ ProjectId: this.projectId,
|
|
|
+ Filters: "taskState = 0 or taskState = 1"
|
|
|
+ }
|
|
|
+ let promise2 = new Promise(resolve => {
|
|
|
+ countEquip(par, res => {
|
|
|
+ resolve(res);
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ let pa = {
|
|
|
+ ProjectId: this.projectId,
|
|
|
+ Filters: "not BimID isNull"
|
|
|
+ }
|
|
|
+ let promise3 = new Promise(resolve => {
|
|
|
+ countEquip(pa, res => {
|
|
|
+ resolve(res);
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ Promise.all([promise1, promise2, promise3]).then(response => {
|
|
|
+ this.equipment = [];
|
|
|
+ let res = response[0];
|
|
|
+ let res1 = response[1];
|
|
|
+ let res2 = response[2];
|
|
|
this.equipment.push({
|
|
|
title: '未关联资产',
|
|
|
tips: '设备未关联资产数量',
|
|
|
contentValueO: '未关联',
|
|
|
contentValueT: '已关联',
|
|
|
- text: '',
|
|
|
needCountO: res.Count,
|
|
|
needCountT: this.equipCount - res.Count,
|
|
|
text: `总数${this.equipCount}`
|
|
|
})
|
|
|
- })
|
|
|
|
|
|
- // 现场验证状态占比
|
|
|
- let par = {
|
|
|
- ProjectId: this.projectId,
|
|
|
- Filters: "taskState = 0 or taskState = 1"
|
|
|
- }
|
|
|
- countEquip(par, res => {
|
|
|
- let text = this.toPercent(res.Count / this.equipCount)
|
|
|
+ let text = this.toPercent(res1.Count / this.equipCount)
|
|
|
this.equipment.push({
|
|
|
title: '现场验证状态占比',
|
|
|
tips: '设备状态为未找到、已找到的数量与设备总数占比',
|
|
|
contentValueO: '已验证',
|
|
|
contentValueT: '未验证',
|
|
|
- text: '',
|
|
|
- needCountO: res.Count,
|
|
|
- needCountT: this.equipCount - res.Count,
|
|
|
+ needCountO: res1.Count,
|
|
|
+ needCountT: this.equipCount - res1.Count,
|
|
|
text: text
|
|
|
})
|
|
|
- this.getEquipBIMIDCount();
|
|
|
- })
|
|
|
- },
|
|
|
- getEquipBIMIDCount() {// 设备-与模型对应占比
|
|
|
- let pa = {
|
|
|
- ProjectId: this.projectId,
|
|
|
- Filters: "not BimID isNull"
|
|
|
- }
|
|
|
- countEquip(pa, res => {
|
|
|
- let text = this.toPercent(res.Count / this.equipCount)
|
|
|
+
|
|
|
+ let text1 = this.toPercent(res2.Count / this.equipCount)
|
|
|
this.equipment.push({
|
|
|
title: '与模型对应占比',
|
|
|
tips: '"BIM模型中编码"有值的设备数量与设备总数占比',
|
|
|
contentValueO: '有BIMID',
|
|
|
contentValueT: '无BIMID',
|
|
|
- text: '',
|
|
|
- needCountO: res.Count,
|
|
|
- needCountT: this.equipCount - res.Count,
|
|
|
- text: text
|
|
|
+ needCountO: res2.Count,
|
|
|
+ needCountT: this.equipCount - res2.Count,
|
|
|
+ text: text1
|
|
|
})
|
|
|
this.isLoading = false;
|
|
|
})
|
|
|
},
|
|
|
getAssetsCount() {// 获取资产数据
|
|
|
+ this.assets = [];
|
|
|
countProperty(this.params, res => {
|
|
|
// 获取资产总数
|
|
|
this.assetsCount = res.Count;
|
|
@@ -420,15 +405,9 @@ export default {
|
|
|
ProjectId: this.projectId,
|
|
|
Filters: " EquipmentId isnull"
|
|
|
}
|
|
|
- countProperty(param, res => {
|
|
|
- this.assets.push({
|
|
|
- title: '未关联资产',
|
|
|
- tips: '资产未关联设备数量',
|
|
|
- contentValueO: '未关联',
|
|
|
- contentValueT: '已关联',
|
|
|
- text: `总数${this.assetsCount}`,
|
|
|
- needCountO: res.Count,
|
|
|
- needCountT: this.assetsCount - res.Count
|
|
|
+ let promise1 = new Promise((resolve) => {
|
|
|
+ countProperty(param, res => {
|
|
|
+ resolve(res)
|
|
|
})
|
|
|
})
|
|
|
|
|
@@ -437,17 +416,9 @@ export default {
|
|
|
ProjectId: this.projectId,
|
|
|
Filters: " taskState = 0 or taskState = 1"
|
|
|
}
|
|
|
- countProperty(par, res => {
|
|
|
- let text = res.Count / this.assetsCount;
|
|
|
- text = this.toPercent(text);
|
|
|
- this.assets.push({
|
|
|
- title: '现场验证状态占比',
|
|
|
- tips: '资产状态为未找到、已找到的数量与资产总数占比',
|
|
|
- contentValueO: '已验证',
|
|
|
- contentValueT: '未验证',
|
|
|
- text: text,
|
|
|
- needCountO: res.Count,
|
|
|
- needCountT: this.assetsCount - res.Count
|
|
|
+ let promise2 = new Promise((resolve) => {
|
|
|
+ countProperty(par, res => {
|
|
|
+ resolve(res);
|
|
|
})
|
|
|
})
|
|
|
|
|
@@ -456,19 +427,57 @@ export default {
|
|
|
ProjectId: this.projectId,
|
|
|
Filters: " not BIMLocation isnull"
|
|
|
}
|
|
|
- countProperty(pa, res => {
|
|
|
- let text = res.Count / this.assetsCount;
|
|
|
+ let promise3 = new Promise((resolve) => {
|
|
|
+ countProperty(pa, res => {
|
|
|
+ resolve(res);
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ Promise.all([promise1, promise2, promise3]).then(response => {
|
|
|
+ this.assets = [];
|
|
|
+ let res0 = response[0];
|
|
|
+ let res1 = response[1];
|
|
|
+ let res2 = response[2];
|
|
|
+ this.assets.push({
|
|
|
+ title: '未关联资产',
|
|
|
+ tips: '资产未关联设备数量',
|
|
|
+ contentValueO: '未关联',
|
|
|
+ contentValueT: '已关联',
|
|
|
+ text: `总数${this.assetsCount}`,
|
|
|
+ needCountO: res1.Count,
|
|
|
+ needCountT: this.assetsCount - res1.Count
|
|
|
+ })
|
|
|
+
|
|
|
+ let text = res1.Count / this.assetsCount;
|
|
|
text = this.toPercent(text);
|
|
|
this.assets.push({
|
|
|
+ title: '现场验证状态占比',
|
|
|
+ tips: '资产状态为未找到、已找到的数量与资产总数占比',
|
|
|
+ contentValueO: '已验证',
|
|
|
+ contentValueT: '未验证',
|
|
|
+ text: text,
|
|
|
+ needCountO: res1.Count,
|
|
|
+ needCountT: this.assetsCount - res1.Count
|
|
|
+ })
|
|
|
+
|
|
|
+ let text1 = res2.Count / this.assetsCount;
|
|
|
+ text1 = this.toPercent(text1);
|
|
|
+ this.assets.push({
|
|
|
title: '有无坐标占比',
|
|
|
tips: '有坐标的资产数量百分比',
|
|
|
contentValueO: '有坐标',
|
|
|
contentValueT: '无坐标',
|
|
|
- text: text,
|
|
|
- needCountO: res.Count,
|
|
|
- needCountT: this.assetsCount - res.Count
|
|
|
+ text: text1,
|
|
|
+ needCountO: res2.Count,
|
|
|
+ needCountT: this.assetsCount - res2.Count
|
|
|
})
|
|
|
})
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ countProperty(pa, res => {
|
|
|
+
|
|
|
+ })
|
|
|
},
|
|
|
getPartsCount() {// 获取部件数据
|
|
|
queryPart(this.params, res => {
|
|
@@ -476,15 +485,25 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
getZoneSpaceCount() {// 获取业务空间数据
|
|
|
-
|
|
|
// 获取业务空间总数
|
|
|
queryZoneCount(this.params, res => {
|
|
|
this.zoneSpaceCount = res.Count;
|
|
|
})
|
|
|
-
|
|
|
- // 获取业务空间的各分区占比
|
|
|
- queryPartitionRatio(this.params, res => {
|
|
|
- res.Content.map(item => {
|
|
|
+ let promise1 = new Promise((resolve) => {
|
|
|
+ queryPartitionRatio(this.params, res => {
|
|
|
+ resolve(res)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ let promise2 = new Promise((resolve) => {
|
|
|
+ queryDefaultFunTypes(this.params, res => {
|
|
|
+ resolve(res)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ Promise.all([promise1, promise2]).then(response => {
|
|
|
+ this.business = [];
|
|
|
+ let res1 = response[0]
|
|
|
+ let res2 = response[1]
|
|
|
+ res1.Content.forEach(item => {
|
|
|
this.zoneTypeConversion(item);
|
|
|
this.partProtion.push({
|
|
|
name: item.Name,
|
|
@@ -496,11 +515,7 @@ export default {
|
|
|
tips: '各类型分区实例数量与实例总数占比',
|
|
|
needCountO: this.partProtion,
|
|
|
})
|
|
|
- })
|
|
|
-
|
|
|
- // 获取业务空间默认分区功能类型占比
|
|
|
- queryDefaultFunTypes(this.params, res => {
|
|
|
- res.Content.map(item => {
|
|
|
+ res2.Content.forEach(item => {
|
|
|
this.functionTypeTranstion(item, this.functionType);
|
|
|
})
|
|
|
this.business.push({
|
|
@@ -516,14 +531,20 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
getTenantCount() {// 获取租户数据
|
|
|
-
|
|
|
// 获取租户总数
|
|
|
queryRentCount(this.params, res => {
|
|
|
this.rentantCount = res.Count;
|
|
|
})
|
|
|
|
|
|
// 租户-关联业务空间完成度
|
|
|
- queryTenantCompletion(this.params, res => {
|
|
|
+ let promise = new Promise((resolve) => {
|
|
|
+ queryTenantCompletion(this.params, res => {
|
|
|
+ resolve(res);
|
|
|
+ })
|
|
|
+ })
|
|
|
+ Promise.all([promise]).then(response => {
|
|
|
+ let res = response[0];
|
|
|
+ this.tenant = [];
|
|
|
let text = res.Count / this.rentantCount;
|
|
|
text = this.toPercent(text);
|
|
|
this.tenant.push({
|
|
@@ -531,23 +552,36 @@ export default {
|
|
|
tips: '已关联业务空间的租户数量百分比',
|
|
|
contentValueO: '已关联',
|
|
|
contentValueT: '未关联',
|
|
|
- text: '',
|
|
|
needCountO: res.Count,
|
|
|
needCountT: this.rentantCount - res.Count,
|
|
|
text: text
|
|
|
})
|
|
|
})
|
|
|
+
|
|
|
},
|
|
|
getShaftCount() {// 获取竖井数据
|
|
|
-
|
|
|
+ this.shaft = [];
|
|
|
// 获取竖井总数
|
|
|
queryCenoteCount(this.params, res => {
|
|
|
this.shaftCount = res.Count;
|
|
|
+ console.log(this.shaftCount, 1)
|
|
|
})
|
|
|
|
|
|
- // 获取竖井按功能类型占比
|
|
|
- queryShaftFunctionType(this.params, res => {
|
|
|
- res.Content.map(item => {
|
|
|
+ let promise1 = new Promise((resolve) => {
|
|
|
+ queryShaftFunctionType(this.params, res => {
|
|
|
+ resolve(res);
|
|
|
+ })
|
|
|
+ })
|
|
|
+ let promise2 = new Promise((resolve) => {
|
|
|
+ ShaftRelationBusinessSpace(this.params, res => {
|
|
|
+ resolve(res);
|
|
|
+ })
|
|
|
+ })
|
|
|
+ Promise.all([promise1, promise2]).then(response => {
|
|
|
+ this.shaft = [];
|
|
|
+ let res = response[0];
|
|
|
+ let res1 = response[1];
|
|
|
+ res.Content.forEach(item => {
|
|
|
this.shaftFunTypeTranstion(item);
|
|
|
this.shaftPartProtion.push({
|
|
|
name: item.Name,
|
|
@@ -559,23 +593,37 @@ export default {
|
|
|
tips: '竖井实例的竖井功能占比',
|
|
|
needCountO: this.shaftPartProtion,
|
|
|
})
|
|
|
- })
|
|
|
|
|
|
- // 获取竖井关联业务空间完成度
|
|
|
- ShaftRelationBusinessSpace(this.params, res => {
|
|
|
- let text = this.toPercent(res.Count / this.shaftCount);
|
|
|
+ let text = this.toPercent(res1.Count / this.shaftCount);
|
|
|
this.shaft.push({
|
|
|
title: '关联业务空间完成度',
|
|
|
tips: '已关联业务空间的竖井数量百分比',
|
|
|
contentValueO: '已关联',
|
|
|
contentValueT: '未关联',
|
|
|
- needCountO: res.Count,
|
|
|
- needCountT: this.shaftCount - res.Count,
|
|
|
+ needCountO: res1.Count,
|
|
|
+ needCountT: this.shaftCount - res1.Count,
|
|
|
text: text
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
+ watch: {
|
|
|
+ projectId(n, o) {
|
|
|
+ console.log(n)
|
|
|
+ console.log(o)
|
|
|
+ this.params = {
|
|
|
+ ProjectId: this.projectId
|
|
|
+ }
|
|
|
+ this.getFunctionType();
|
|
|
+ this.getStatisticsCount();
|
|
|
+ this.getEquipCount();
|
|
|
+ this.getAssetsCount();
|
|
|
+ this.getPartsCount();
|
|
|
+ this.getSystemCount();
|
|
|
+ this.getTenantCount();
|
|
|
+ this.getShaftFunType();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|
|
@@ -647,4 +695,8 @@ export default {
|
|
|
border-radius: 5px;
|
|
|
}
|
|
|
}
|
|
|
+.system,
|
|
|
+.parts {
|
|
|
+ height: 50px !important;
|
|
|
+}
|
|
|
</style>
|