|
@@ -1,192 +1,192 @@
|
|
|
-
|
|
|
- <!--
|
|
|
- *@description: 可视化进度
|
|
|
- *@author: yh Fu
|
|
|
- *@date: 2023-12-25 13:27:19
|
|
|
- *@version: V1.0.5
|
|
|
- -->
|
|
|
+<!--
|
|
|
+ *@description: 可视化进度
|
|
|
+ *@author: yh Fu
|
|
|
+ *@date: 2023-12-25 13:27:19
|
|
|
+ *@version: V1.0.5
|
|
|
+ -->
|
|
|
|
|
|
<template>
|
|
|
- <div class="progresVisualContainer">
|
|
|
- <el-radio-group v-model="currentMenu" style="margin-bottom: 20px;" @input="toModule">
|
|
|
- <el-radio-button label="0">用料统计</el-radio-button>
|
|
|
- <el-radio-button label="1">进度统计</el-radio-button>
|
|
|
- <el-radio-button label="2">可视化统计</el-radio-button>
|
|
|
- <el-radio-button label="3">可视化进度</el-radio-button>
|
|
|
- </el-radio-group>
|
|
|
- <div class="topContain">
|
|
|
- <el-form :model="searchParam" ref="searchForm" class="searchForm" :rules="searchRules">
|
|
|
- <el-form-item label="行政区" prop="district">
|
|
|
- <el-select v-model="searchParam.district" placeholder="请选择行政区" clearable
|
|
|
- @change="searchParam.areaId = undefined;getAreaList(searchParam.district)"
|
|
|
- @clear="searchParam.areaId = undefined;areaList=[];
|
|
|
+ <div class="progresVisualContainer">
|
|
|
+ <el-radio-group v-model="currentMenu" style="margin-bottom: 20px;" @input="toModule">
|
|
|
+ <el-radio-button label="0">用料统计</el-radio-button>
|
|
|
+ <el-radio-button label="1">进度统计</el-radio-button>
|
|
|
+ <el-radio-button label="2">可视化统计</el-radio-button>
|
|
|
+ <el-radio-button label="3">可视化进度</el-radio-button>
|
|
|
+ </el-radio-group>
|
|
|
+ <div class="topContain">
|
|
|
+ <el-form :model="searchParam" ref="searchForm" class="searchForm" :rules="searchRules">
|
|
|
+ <el-form-item label="行政区" prop="district">
|
|
|
+ <el-select v-model="searchParam.district" placeholder="请选择行政区" clearable
|
|
|
+ @change="searchParam.areaId = undefined;getAreaList(searchParam.district)"
|
|
|
+ @clear="searchParam.areaId = undefined;areaList=[];
|
|
|
searchParam.buildingId = undefined;buildingList=[];
|
|
|
searchParam.unitId = undefined;unitList=[]">
|
|
|
- <el-option
|
|
|
- v-for="dict in dict.type.district"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="小区名称" prop="areaId" style="width: 218px;">
|
|
|
- <el-select v-model="searchParam.areaId" filterable clearable placeholder="请选择小区"
|
|
|
- @change="searchParam.buildingId = undefined;getBuildingList1(searchParam.areaId)"
|
|
|
- @clear="searchParam.buildingId = undefined;buildingList=[];
|
|
|
+ <el-option
|
|
|
+ v-for="dict in dict.type.district"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="小区名称" prop="areaId" style="width: 218px;">
|
|
|
+ <el-select v-model="searchParam.areaId" filterable clearable placeholder="请选择小区"
|
|
|
+ @change="searchParam.buildingId = undefined;getBuildingList1(searchParam.areaId)"
|
|
|
+ @clear="searchParam.buildingId = undefined;buildingList=[];
|
|
|
searchParam.unitId = undefined;unitList=[]">
|
|
|
- <el-option
|
|
|
- v-for="item in areaList"
|
|
|
- :key="item.id"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="楼宇名称" prop="buildingId">
|
|
|
- <el-select v-model="searchParam.buildingId" filterable clearable placeholder="请选择楼宇"
|
|
|
- @change="searchParam.unitId = undefined;getUnitList1(searchParam.buildingId)"
|
|
|
- @clear="searchParam.unitId = undefined;unitList=[]"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in buildingList"
|
|
|
- :key="item.id"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="单元" prop="unitId">
|
|
|
- <el-select v-model="searchParam.unitId" placeholder="请选择单元" filterable clearable>
|
|
|
- <el-option
|
|
|
- v-for="obj in unitList"
|
|
|
- :key="obj.id"
|
|
|
- :label="obj.name"
|
|
|
- :value="obj.id"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="工程周期" prop="enginCycle" style="width: 218px;">
|
|
|
- <el-select
|
|
|
- :disabled="title == '添加用料' "
|
|
|
- v-model="searchParam.enginCycle"
|
|
|
- placeholder="请填写工程周期"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="e in dict.type.engin_cycle"
|
|
|
- :key="e.value"
|
|
|
- :label="e.label"
|
|
|
- :value="e.value"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <!-- <div style="width: 100%;height: 100%;">
|
|
|
- <el-select
|
|
|
- v-model="currentCommunity"
|
|
|
- placeholder="请选择行政区"
|
|
|
- class="projectSelect"
|
|
|
- popper-class="projectDropDown"
|
|
|
- :popper-append-to-body="false"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="e in communityOptions"
|
|
|
- :key="e.value"
|
|
|
- :label="e.label"
|
|
|
- :value="e.value">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- <el-select
|
|
|
- v-model="currentCommunity"
|
|
|
- placeholder="请选择小区"
|
|
|
- class="projectSelect"
|
|
|
- popper-class="projectDropDown"
|
|
|
- :popper-append-to-body="false"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="e in communityOptions"
|
|
|
- :key="e.value"
|
|
|
- :label="e.label"
|
|
|
- :value="e.value">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- <el-select
|
|
|
- v-model="currentType"
|
|
|
- placeholder="请选择工程类型"
|
|
|
- class="projectSelect"
|
|
|
- popper-class="projectDropDown"
|
|
|
- :popper-append-to-body="false"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="e in typeOptions"
|
|
|
- :key="e.value"
|
|
|
- :label="e.label"
|
|
|
- :value="e.value">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- <el-date-picker
|
|
|
- v-model="currentDate"
|
|
|
- class="projectSelect"
|
|
|
- popper-class="projectDropDown"
|
|
|
- :popper-append-to-body="false"
|
|
|
- type="date"
|
|
|
- placeholder="选择日期">
|
|
|
- </el-date-picker>
|
|
|
- </div> -->
|
|
|
- <el-button class="searchBtn" @click="searchCompletionInfo">查询</el-button>
|
|
|
- <el-button class="searchBtn">导出</el-button>
|
|
|
- <div class="unitStatus">
|
|
|
- <div
|
|
|
- v-for="(e,idx) in unitStatusOption"
|
|
|
- :key="idx"
|
|
|
- :style="`background-color:${e.color};width: 22%;height: 35px;position: absolute;right:${idx*130}px;box-shadow:0 5px 5px 0 #CDCDCD`"
|
|
|
- >
|
|
|
- <div
|
|
|
- style="position: relative;left: 107%;width: 116%;top: 20%;"
|
|
|
- >
|
|
|
- {{ e.label }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <el-option
|
|
|
+ v-for="item in areaList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="楼宇名称" prop="buildingId">
|
|
|
+ <el-select v-model="searchParam.buildingId" filterable clearable placeholder="请选择楼宇"
|
|
|
+ @change="searchParam.unitId = undefined;getUnitList1(searchParam.buildingId)"
|
|
|
+ @clear="searchParam.unitId = undefined;unitList=[]"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in buildingList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="单元" prop="unitId">
|
|
|
+ <el-select v-model="searchParam.unitId" placeholder="请选择单元" filterable clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="obj in unitList"
|
|
|
+ :key="obj.id"
|
|
|
+ :label="obj.name"
|
|
|
+ :value="obj.id"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="工程周期" prop="enginCycle" style="width: 218px;">
|
|
|
+ <el-select
|
|
|
+ :disabled="title == '添加用料' "
|
|
|
+ v-model="searchParam.enginCycle"
|
|
|
+ placeholder="请填写工程周期"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="e in dict.type.engin_cycle"
|
|
|
+ :key="e.value"
|
|
|
+ :label="e.label"
|
|
|
+ :value="e.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <!-- <div style="width: 100%;height: 100%;">
|
|
|
+ <el-select
|
|
|
+ v-model="currentCommunity"
|
|
|
+ placeholder="请选择行政区"
|
|
|
+ class="projectSelect"
|
|
|
+ popper-class="projectDropDown"
|
|
|
+ :popper-append-to-body="false"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="e in communityOptions"
|
|
|
+ :key="e.value"
|
|
|
+ :label="e.label"
|
|
|
+ :value="e.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-select
|
|
|
+ v-model="currentCommunity"
|
|
|
+ placeholder="请选择小区"
|
|
|
+ class="projectSelect"
|
|
|
+ popper-class="projectDropDown"
|
|
|
+ :popper-append-to-body="false"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="e in communityOptions"
|
|
|
+ :key="e.value"
|
|
|
+ :label="e.label"
|
|
|
+ :value="e.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-select
|
|
|
+ v-model="currentType"
|
|
|
+ placeholder="请选择工程类型"
|
|
|
+ class="projectSelect"
|
|
|
+ popper-class="projectDropDown"
|
|
|
+ :popper-append-to-body="false"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="e in typeOptions"
|
|
|
+ :key="e.value"
|
|
|
+ :label="e.label"
|
|
|
+ :value="e.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-date-picker
|
|
|
+ v-model="currentDate"
|
|
|
+ class="projectSelect"
|
|
|
+ popper-class="projectDropDown"
|
|
|
+ :popper-append-to-body="false"
|
|
|
+ type="date"
|
|
|
+ placeholder="选择日期">
|
|
|
+ </el-date-picker>
|
|
|
+ </div> -->
|
|
|
+ <el-button class="searchBtn" @click="searchCompletionInfo">查询</el-button>
|
|
|
+ <el-button class="searchBtn">导出</el-button>
|
|
|
+ <div class="unitStatus">
|
|
|
+ <div
|
|
|
+ v-for="(e,idx) in unitStatusOption"
|
|
|
+ :key="idx"
|
|
|
+ :style="`background-color:${e.color};width: 22%;height: 35px;position: absolute;right:${idx*130}px;box-shadow:0 5px 5px 0 #CDCDCD`"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ style="position: relative;left: 107%;width: 116%;top: 20%;"
|
|
|
+ >
|
|
|
+ {{ e.label }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <!-- 房间集合 -->
|
|
|
- <!-- 楼栋 or 单元 -->
|
|
|
- <div style="min-width: 1618px;display: flex;overflow: hidden;overflow-x: scroll;align-items: end;">
|
|
|
- <div
|
|
|
- v-for="(e,idx) in roomsInfo"
|
|
|
- :key="idx"
|
|
|
- class="buildingContain"
|
|
|
- >
|
|
|
- <!-- 楼层 -->
|
|
|
- <div
|
|
|
- v-for="(v,vdx) in e.roomStatusVoList"
|
|
|
- :key="vdx"
|
|
|
- class="unitFloor"
|
|
|
- >
|
|
|
- {{ v.notstart || '' }}
|
|
|
- <!-- 房间 -->
|
|
|
- <div
|
|
|
- v-for="(k,kdx) in v"
|
|
|
- :key="kdx"
|
|
|
- class="room"
|
|
|
- @click="toDetail(k)"
|
|
|
- :style="`background-color:${k.roomStatus == '未施工' ? '#FFC881' : k.roomStatus == '施工中' ? '#5DB3FF' : '#80D9AE'}`"
|
|
|
- >
|
|
|
- {{ k.roomName || '' }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <h2 style="text-align: center;">{{ e.unitName }}</h2>
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 房间集合 -->
|
|
|
+ <!-- 楼栋 or 单元 -->
|
|
|
+ <div style="min-width: 1618px;display: flex;overflow: hidden;overflow-x: scroll;align-items: end;">
|
|
|
+ <div
|
|
|
+ v-for="(e,idx) in roomsInfo"
|
|
|
+ :key="idx"
|
|
|
+ class="buildingContain"
|
|
|
+ >
|
|
|
+ <!-- 楼层 -->
|
|
|
+ <div
|
|
|
+ v-for="(v,vdx) in e.roomStatusVoList"
|
|
|
+ :key="vdx"
|
|
|
+ class="unitFloor"
|
|
|
+ >
|
|
|
+ {{ v.notstart || '' }}
|
|
|
+ <!-- 房间 -->
|
|
|
+ <div
|
|
|
+ v-for="(k,kdx) in v"
|
|
|
+ :key="kdx"
|
|
|
+ class="room"
|
|
|
+ @click="toDetail(k)"
|
|
|
+ :style="`background-color:${k.roomStatus == '未施工' ? '#fec880' : k.roomStatus == '施工中' ? '#5ad3fe' : '#81d9af'};
|
|
|
+ border: solid 1px ${k.roomStatus == '未施工' ? '#ffa938' : k.roomStatus == '施工中' ? '#30b3e1' : '#62b98f'}`"
|
|
|
+ >
|
|
|
+ {{ k.roomName || '' }}
|
|
|
</div>
|
|
|
- <ConstructionDetails
|
|
|
- ref="ConstructionDetails"
|
|
|
- :currentCollapses="currentCollapses"
|
|
|
- :type="nodeDetailType"
|
|
|
- :status="status"
|
|
|
- enginType="民用工程"
|
|
|
- />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <h2 style="text-align: center; font-size: 1.1em;">{{ e.unitName }}</h2>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+ <ConstructionDetails
|
|
|
+ ref="ConstructionDetails"
|
|
|
+ :currentCollapses="currentCollapses"
|
|
|
+ :type="nodeDetailType"
|
|
|
+ :status="status"
|
|
|
+ enginType="民用工程"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
@@ -195,293 +195,315 @@ import {getAreaList} from "@/api/zdsz/area";
|
|
|
import {getBuildingList} from "@/api/zdsz/building";
|
|
|
import {getUnits} from "@/api/zdsz/unit";
|
|
|
import {getDicts} from "@/api/system/dict/data";
|
|
|
-import { getObtainRoomcCompletionInformationList ,viewQueryProcessSource} from "@/api/zdsz/enginee"
|
|
|
+import {getObtainRoomcCompletionInformationList, viewQueryProcessSource} from "@/api/zdsz/enginee"
|
|
|
+
|
|
|
export default {
|
|
|
- name:'ProgreVisual',
|
|
|
- components:{
|
|
|
- ConstructionDetails
|
|
|
- },
|
|
|
- dicts:['district','engin_cycle','new_built','old_renovation'],
|
|
|
- data(){
|
|
|
- return {
|
|
|
- currentMenu:3, // 0:用料管理 1:进度统计 2:可视化进度
|
|
|
- currentCollapses:[],
|
|
|
- status:'',
|
|
|
- typeOptions:[
|
|
|
- {
|
|
|
- value: '0',
|
|
|
- label: '市政工程'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '1',
|
|
|
- label: '工业工程'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '2',
|
|
|
- label: '民用工程'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '3',
|
|
|
- label: '危险作业'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '4',
|
|
|
- label: '顶管工程'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '5',
|
|
|
- label: '基建工程'
|
|
|
- }
|
|
|
- ],
|
|
|
- communityOptions:[
|
|
|
- {
|
|
|
- value: '0',
|
|
|
- label: '领秀世家'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '1',
|
|
|
- label: '上东府里'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '2',
|
|
|
- label: '清华园'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '3',
|
|
|
- label: '万科蓝山'
|
|
|
- },
|
|
|
- {
|
|
|
- value: '4',
|
|
|
- label: '龙腾香格里'
|
|
|
- },
|
|
|
- ],
|
|
|
- unitStatusOption:[
|
|
|
- {
|
|
|
- label:'竣工',
|
|
|
- color:'#80D9AE'
|
|
|
- },
|
|
|
- {
|
|
|
- label:'施工中',
|
|
|
- color:'#5DB3FF'
|
|
|
- },
|
|
|
- {
|
|
|
- label:'未施工',
|
|
|
- color:'#FFC881'
|
|
|
- },
|
|
|
- ],
|
|
|
- currentType:null,
|
|
|
- currentCommunity:null,
|
|
|
- areaList:[],
|
|
|
- buildingList:[],
|
|
|
- unitList:[],
|
|
|
- info:{
|
|
|
- district: undefined,
|
|
|
- },
|
|
|
- searchParam:{
|
|
|
- district: null,
|
|
|
- enginCycle:null,
|
|
|
- areaId: null,
|
|
|
- buildingId: null,
|
|
|
- unitId: null,
|
|
|
- },
|
|
|
- roomsInfo:[],
|
|
|
- updateParams:{},
|
|
|
- currentRoomId:null,
|
|
|
- currentEnginType:null,
|
|
|
- currentEnginClassification:'indoor_engin',
|
|
|
- searchRules:{
|
|
|
- district: [
|
|
|
- {required: true, message: "行政区不能为空", trigger: ['change']}
|
|
|
- ],
|
|
|
- areaId: [
|
|
|
- {required: true, message: "小区不能为空", trigger: ['change']}
|
|
|
- ],
|
|
|
- enginCycle: [
|
|
|
- {required: true, message: "工程周期不能为空", trigger: ['change']}
|
|
|
- ],
|
|
|
- }
|
|
|
+ name: 'ProgreVisual',
|
|
|
+ components: {
|
|
|
+ ConstructionDetails
|
|
|
+ },
|
|
|
+ dicts: ['district', 'engin_cycle', 'new_built', 'old_renovation'],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ currentMenu: 3, // 0:用料管理 1:进度统计 2:可视化进度
|
|
|
+ currentCollapses: [],
|
|
|
+ status: '',
|
|
|
+ typeOptions: [
|
|
|
+ {
|
|
|
+ value: '0',
|
|
|
+ label: '市政工程'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '1',
|
|
|
+ label: '工业工程'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '2',
|
|
|
+ label: '民用工程'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '3',
|
|
|
+ label: '危险作业'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '4',
|
|
|
+ label: '顶管工程'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '5',
|
|
|
+ label: '基建工程'
|
|
|
}
|
|
|
- },
|
|
|
- methods:{
|
|
|
- toDetail(e){
|
|
|
- this.currentRoomId = e.roomId
|
|
|
- let dictValue
|
|
|
- // 拼接字典
|
|
|
- console.log(e)
|
|
|
- console.log(e.enginCycle)
|
|
|
- console.log(this.dict.type[e.enginCycle])
|
|
|
- this.dict.type[e.enginCycle].forEach(v => {
|
|
|
- if(v.label.includes('室内')){
|
|
|
- this.currentEnginType = e.enginCycle
|
|
|
- dictValue = e.enginCycle + '_' + v.value
|
|
|
- }
|
|
|
- })
|
|
|
- // 加工字典
|
|
|
- getDicts(dictValue).then(res => {
|
|
|
- let dict = []
|
|
|
- for (let i = 0; i < res.data.length; i++) {
|
|
|
- dict.push({
|
|
|
- "label": res.data[i].dictLabel,
|
|
|
- "value": res.data[i].dictValue,
|
|
|
- })
|
|
|
- }
|
|
|
- console.log(dict)
|
|
|
- setTimeout(() => {
|
|
|
- this.$refs.ConstructionDetails.open(dict)
|
|
|
- })
|
|
|
- })
|
|
|
- this.status = 'read-only'
|
|
|
+ ],
|
|
|
+ communityOptions: [
|
|
|
+ {
|
|
|
+ value: '0',
|
|
|
+ label: '领秀世家'
|
|
|
},
|
|
|
- viewNodeSource(e) {
|
|
|
- let params = {
|
|
|
- type:e,
|
|
|
- houseId:this.currentRoomId,
|
|
|
- enginClassification:this.currentEnginClassification,
|
|
|
- enginType:this.currentEnginType
|
|
|
- }
|
|
|
- viewQueryProcessSource(params).then(res => {
|
|
|
- console.log('______',res)
|
|
|
- try {
|
|
|
- this.updateParams = res.data
|
|
|
- this.currentCollapses = res.data.zEngineeringNodeBo.zEngineeringInfoBoList
|
|
|
- } catch (error) {
|
|
|
- this.currentCollapses = [];
|
|
|
- }
|
|
|
- console.log('折叠面板info',this.currentCollapses)
|
|
|
- })
|
|
|
- this.$forceUpdate()
|
|
|
+ {
|
|
|
+ value: '1',
|
|
|
+ label: '上东府里'
|
|
|
},
|
|
|
- // 查询进度
|
|
|
- searchCompletionInfo(){
|
|
|
- this.$refs.searchForm.validate(valid => {
|
|
|
- if(valid){
|
|
|
- // 校验 pass
|
|
|
- let params = {
|
|
|
- enginCycle:this.searchParam.enginCycle,
|
|
|
- areaId: this.searchParam.areaId,
|
|
|
- buildingId: this.searchParam.buildingId,
|
|
|
- unitId: this.searchParam.unitId,
|
|
|
- }
|
|
|
- getObtainRoomcCompletionInformationList(params).then(res => {
|
|
|
- let info = []
|
|
|
- info = res.data
|
|
|
- info.forEach(e => {
|
|
|
- e.roomStatusVoList = e.roomStatusVoList.reverse()
|
|
|
- })
|
|
|
- this.roomsInfo = info
|
|
|
- })
|
|
|
- } else {
|
|
|
- this.$message.error('请填写必填项!')
|
|
|
- }
|
|
|
- })
|
|
|
+ {
|
|
|
+ value: '2',
|
|
|
+ label: '清华园'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '3',
|
|
|
+ label: '万科蓝山'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '4',
|
|
|
+ label: '龙腾香格里'
|
|
|
},
|
|
|
- getAreaList(district) {
|
|
|
- if (district === undefined || district == null || district === '')
|
|
|
- return
|
|
|
- console.log(getAreaList)
|
|
|
- getAreaList({district: district}).then(res => this.areaList = res.data)
|
|
|
+ ],
|
|
|
+ unitStatusOption: [
|
|
|
+ {
|
|
|
+ label: '竣工',
|
|
|
+ color: '#81d9af'
|
|
|
},
|
|
|
- getBuildingList1(areaId) {
|
|
|
- if (areaId === undefined || areaId == null || areaId === '')
|
|
|
- return
|
|
|
- getBuildingList({areaId: areaId}).then(res => this.buildingList = res.data)
|
|
|
+ {
|
|
|
+ label: '施工中',
|
|
|
+ color: '#5ad3fe'
|
|
|
},
|
|
|
- getUnitList1(buildingId) {
|
|
|
- if (buildingId === undefined || buildingId == null || buildingId === '')
|
|
|
- return
|
|
|
- getUnits(buildingId).then(res => this.unitList = res.data)
|
|
|
+ {
|
|
|
+ label: '未施工',
|
|
|
+ color: '#fec880'
|
|
|
},
|
|
|
- toModule(){
|
|
|
- console.log(this.$router)
|
|
|
- const currentPage = this.currentMenu == 0 ? 'material_statistics' : this.currentMenu == 1 ? 'progres_statistics' :this.currentMenu == 2 ? 'echarts_statistics': 'progres_visual'
|
|
|
- this.$router.push({
|
|
|
- path:`/${currentPage}`
|
|
|
+ ],
|
|
|
+ currentType: null,
|
|
|
+ currentCommunity: null,
|
|
|
+ areaList: [],
|
|
|
+ buildingList: [],
|
|
|
+ unitList: [],
|
|
|
+ info: {
|
|
|
+ district: undefined,
|
|
|
+ },
|
|
|
+ searchParam: {
|
|
|
+ district: null,
|
|
|
+ enginCycle: null,
|
|
|
+ areaId: null,
|
|
|
+ buildingId: null,
|
|
|
+ unitId: null,
|
|
|
+ },
|
|
|
+ roomsInfo: [],
|
|
|
+ updateParams: {},
|
|
|
+ currentRoomId: null,
|
|
|
+ currentEnginType: null,
|
|
|
+ currentEnginClassification: 'indoor_engin',
|
|
|
+ searchRules: {
|
|
|
+ district: [
|
|
|
+ {required: true, message: "行政区不能为空", trigger: ['change']}
|
|
|
+ ],
|
|
|
+ areaId: [
|
|
|
+ {required: true, message: "小区不能为空", trigger: ['change']}
|
|
|
+ ],
|
|
|
+ enginCycle: [
|
|
|
+ {required: true, message: "工程周期不能为空", trigger: ['change']}
|
|
|
+ ],
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ toDetail(e) {
|
|
|
+ this.currentRoomId = e.roomId
|
|
|
+ let dictValue
|
|
|
+ // 拼接字典
|
|
|
+ console.log(e)
|
|
|
+ console.log(e.enginCycle)
|
|
|
+ console.log(this.dict.type[e.enginCycle])
|
|
|
+ this.dict.type[e.enginCycle].forEach(v => {
|
|
|
+ if (v.label.includes('室内')) {
|
|
|
+ this.currentEnginType = e.enginCycle
|
|
|
+ dictValue = e.enginCycle + '_' + v.value
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 加工字典
|
|
|
+ getDicts(dictValue).then(res => {
|
|
|
+ let dict = []
|
|
|
+ for (let i = 0; i < res.data.length; i++) {
|
|
|
+ dict.push({
|
|
|
+ "label": res.data[i].dictLabel,
|
|
|
+ "value": res.data[i].dictValue,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ console.log(dict)
|
|
|
+ setTimeout(() => {
|
|
|
+ this.$refs.ConstructionDetails.open(dict)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ this.status = 'read-only'
|
|
|
+ },
|
|
|
+ viewNodeSource(e) {
|
|
|
+ let params = {
|
|
|
+ type: e,
|
|
|
+ houseId: this.currentRoomId,
|
|
|
+ enginClassification: this.currentEnginClassification,
|
|
|
+ enginType: this.currentEnginType
|
|
|
+ }
|
|
|
+ viewQueryProcessSource(params).then(res => {
|
|
|
+ console.log('______', res)
|
|
|
+ try {
|
|
|
+ this.updateParams = res.data
|
|
|
+ this.currentCollapses = res.data.zEngineeringNodeBo.zEngineeringInfoBoList
|
|
|
+ } catch (error) {
|
|
|
+ this.currentCollapses = [];
|
|
|
+ }
|
|
|
+ console.log('折叠面板info', this.currentCollapses)
|
|
|
+ })
|
|
|
+ this.$forceUpdate()
|
|
|
+ },
|
|
|
+ // 查询进度
|
|
|
+ searchCompletionInfo() {
|
|
|
+ this.$refs.searchForm.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ // 校验 pass
|
|
|
+ let params = {
|
|
|
+ enginCycle: this.searchParam.enginCycle,
|
|
|
+ areaId: this.searchParam.areaId,
|
|
|
+ buildingId: this.searchParam.buildingId,
|
|
|
+ unitId: this.searchParam.unitId,
|
|
|
+ }
|
|
|
+ getObtainRoomcCompletionInformationList(params).then(res => {
|
|
|
+ let info = []
|
|
|
+ info = res.data
|
|
|
+ info.forEach(e => {
|
|
|
+ e.roomStatusVoList = e.roomStatusVoList.reverse()
|
|
|
})
|
|
|
+ this.roomsInfo = info
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message.error('请填写必填项!')
|
|
|
}
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getAreaList(district) {
|
|
|
+ if (district === undefined || district == null || district === '')
|
|
|
+ return
|
|
|
+ console.log(getAreaList)
|
|
|
+ getAreaList({district: district}).then(res => this.areaList = res.data)
|
|
|
+ },
|
|
|
+ getBuildingList1(areaId) {
|
|
|
+ if (areaId === undefined || areaId == null || areaId === '')
|
|
|
+ return
|
|
|
+ getBuildingList({areaId: areaId}).then(res => this.buildingList = res.data)
|
|
|
+ },
|
|
|
+ getUnitList1(buildingId) {
|
|
|
+ if (buildingId === undefined || buildingId == null || buildingId === '')
|
|
|
+ return
|
|
|
+ getUnits(buildingId).then(res => this.unitList = res.data)
|
|
|
+ },
|
|
|
+ toModule() {
|
|
|
+ console.log(this.$router)
|
|
|
+ const currentPage = this.currentMenu == 0 ? 'material_statistics' : this.currentMenu == 1 ? 'progres_statistics' : this.currentMenu == 2 ? 'echarts_statistics' : 'progres_visual'
|
|
|
+ this.$router.push({
|
|
|
+ path: `/${currentPage}`
|
|
|
+ })
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
-.progresVisualContainer{
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- padding: 1%;
|
|
|
- .topContain{
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- width: 60%;
|
|
|
- .searchBtn{
|
|
|
- height: 100%;
|
|
|
- width: 11%;
|
|
|
- background-color: #1890FF;
|
|
|
- color: #fff;
|
|
|
- }
|
|
|
- ::v-deep .projectSelect{
|
|
|
- width: 20% !important;
|
|
|
- .el-input__inner{
|
|
|
- background-color: #1890FF;
|
|
|
- color: #fff;
|
|
|
- }
|
|
|
- }
|
|
|
- .projectDropDown{
|
|
|
- background-color: #1890FF;
|
|
|
- .el-select-dropdown__item{
|
|
|
- background-color: #1890FF;
|
|
|
- color: #fff;
|
|
|
- }
|
|
|
- ::v-deep .el-select-dropdown__list {
|
|
|
- padding-top: 0 !important;
|
|
|
- padding-bottom: 0;
|
|
|
- }
|
|
|
- }
|
|
|
- .projectDropDown >ul{
|
|
|
- padding-top: 0 ;
|
|
|
- padding-bottom: 0;
|
|
|
- }
|
|
|
- .unitStatus{
|
|
|
- width: 13%;
|
|
|
- display: flex;
|
|
|
- position: absolute;
|
|
|
- right: 7%;
|
|
|
- height: 5%;
|
|
|
- }
|
|
|
+.progresVisualContainer {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ padding: 1%;
|
|
|
+
|
|
|
+ .topContain {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ width: 60%;
|
|
|
+
|
|
|
+ .searchBtn {
|
|
|
+ height: 100%;
|
|
|
+ width: 11%;
|
|
|
+ background-color: #1890FF;
|
|
|
+ color: #fff;
|
|
|
}
|
|
|
-}
|
|
|
-.buildingContain{
|
|
|
- height: 100%;
|
|
|
- .unitFloor{
|
|
|
- display: flex;
|
|
|
- justify-content: space-around;
|
|
|
- border: 1px solid #000;
|
|
|
- .room{
|
|
|
- flex: 1;
|
|
|
- width: 50px;
|
|
|
- height: 25px;
|
|
|
- text-align: center;
|
|
|
- line-height: 25px;
|
|
|
- cursor: pointer;
|
|
|
- box-shadow: inset 0px 0px 10px rgba(0,0,0,.6);
|
|
|
- }
|
|
|
+
|
|
|
+ ::v-deep .projectSelect {
|
|
|
+ width: 20% !important;
|
|
|
+
|
|
|
+ .el-input__inner {
|
|
|
+ background-color: #1890FF;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .projectDropDown {
|
|
|
+ background-color: #1890FF;
|
|
|
+
|
|
|
+ .el-select-dropdown__item {
|
|
|
+ background-color: #1890FF;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+
|
|
|
+ ::v-deep .el-select-dropdown__list {
|
|
|
+ padding-top: 0 !important;
|
|
|
+ padding-bottom: 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- .unitFloor >div:not(:nth-child(1)){
|
|
|
- margin-left: 2%;
|
|
|
+ .projectDropDown > ul {
|
|
|
+ padding-top: 0;
|
|
|
+ padding-bottom: 0;
|
|
|
}
|
|
|
+
|
|
|
+ .unitStatus {
|
|
|
+ width: 13%;
|
|
|
+ display: flex;
|
|
|
+ position: absolute;
|
|
|
+ right: 7%;
|
|
|
+ height: 5%;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
-.buildingContain:not(:nth-child(1)){
|
|
|
- margin-left: 5%;
|
|
|
-}
|
|
|
-.buildingContain .unitFloor:not(:nth-child(1)){
|
|
|
- margin-top: 2%;
|
|
|
-}
|
|
|
-::v-deep .searchForm{
|
|
|
+
|
|
|
+.buildingContain {
|
|
|
+ height: 100%;
|
|
|
+ border: solid 5px #c7eafe;
|
|
|
+ padding: 10px;
|
|
|
+ background: #e2f4ff;
|
|
|
+
|
|
|
+ .unitFloor {
|
|
|
display: flex;
|
|
|
- .el-form-item{
|
|
|
- width: 205px;
|
|
|
- }
|
|
|
- .el-select{
|
|
|
- width: 135px;
|
|
|
+ justify-content: space-around;
|
|
|
+ //border: 1px solid #000;
|
|
|
+
|
|
|
+ .room {
|
|
|
+ flex: 1;
|
|
|
+ width: 50px;
|
|
|
+ height: 25px;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 25px;
|
|
|
+ cursor: pointer;
|
|
|
+ font-size: 1em;
|
|
|
+ //box-shadow: inset 0px 0px 10px rgba(0, 0, 0, .6);
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ .unitFloor > div:not(:nth-child(1)) {
|
|
|
+ margin-left: 2%;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.buildingContain:not(:nth-child(1)) {
|
|
|
+ margin-left: 5%;
|
|
|
+}
|
|
|
+
|
|
|
+.buildingContain .unitFloor:not(:nth-child(1)) {
|
|
|
+ margin-top: 2%;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .searchForm {
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ .el-form-item {
|
|
|
+ width: 205px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-select {
|
|
|
+ width: 135px;
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|