This commit is contained in:
Luck-Xiaomi 2022-06-15 17:05:27 +08:00
parent 14f1af9d6c
commit 7afa2b8554
6 changed files with 257 additions and 236 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 KiB

View File

@ -1386,6 +1386,7 @@ const routes2 = [
{
path: '/project/dataBoard/',
name: '数据看板',
component: resolve => require(['@/views/projectAdmin/dataBoardTwo/dataBoard.vue'], resolve),
// component: resolve => require(['@/views/projectAdmin/dataBoard/dataBoard.vue'], resolve),
// children: [{
// path: 'index',
@ -1435,56 +1436,74 @@ const routes2 = [
// component: () => import('@/views/projectAdmin/dataBoard/AiAnalysis.vue'),
// }
// ]
component: resolve => require(['@/views/projectAdmin/dataBoardTwo/dataBoard.vue'], resolve),
children: [{
path: 'index',
name: '数据看板-首页概览',
component: () => import('@/views/projectAdmin/dataBoardTwo/index.vue'),
}, {
path: 'digitalSite',
name: '数据看板-数字工地',
component: () => import('@/views/projectAdmin/dataBoardTwo/digitalSite'),
}, {
path: 'laborManage',
name: '数据看板-劳务管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/laborManage.vue'),
}, {
path: 'environment',
name: '数据看板-环境监测',
component: () => import('@/views/projectAdmin/dataBoardTwo/environment.vue'),
},
{
path: 'material',
name: '数据看板-材料管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/material.vue'),
},
{
path: 'plan',
name: '数据看板-进度计划',
component: () => import('@/views/projectAdmin/dataBoardTwo/plan.vue'),
},
{
path: 'secure',
name: '数据看板-安全管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/secure.vue'),
},
{
path: 'quality',
name: '数据看板-质量管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/quality.vue'),
},
{
path: 'SixHundred',
name: '数据看板-六个百分百',
component: () => import('@/views/projectAdmin/dataBoardTwo/AiAnalysisCopy.vue'),
},
{
path: 'AiAnalysis',
name: '数据看板-AI数据分析',
component: () => import('@/views/projectAdmin/dataBoardTwo/AiAnalysis.vue'),
}
]
path: 'index',
name: '数据看板-首页概览',
component: () => import('@/views/projectAdmin/dataBoardTwo/index.vue'),
}, {
path: 'digitalSite',
name: '数据看板-数字工地',
component: () => import('@/views/projectAdmin/dataBoardTwo/digitalSite'),
}, {
path: 'laborManage',
name: '数据看板-劳务管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/laborManage.vue'),
}, {
path: 'environment',
name: '数据看板-环境监测',
component: () => import('@/views/projectAdmin/dataBoardTwo/environment.vue'),
},
{
path: 'material',
name: '数据看板-材料管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/material.vue'),
},
{
path: 'plan',
name: '数据看板-进度计划',
component: () => import('@/views/projectAdmin/dataBoardTwo/plan.vue'),
},
{
path: 'secure',
name: '数据看板-安全管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/secure.vue'),
},
{
path: 'quality',
name: '数据看板-质量管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/quality.vue'),
},
{
path: 'SixHundred',
name: '数据看板-六个百分百',
component: () => import('@/views/projectAdmin/dataBoardTwo/AiAnalysisCopy.vue'),
},
{
path: 'AiAnalysis',
name: '数据看板-AI数据分析',
component: () => import('@/views/projectAdmin/dataBoardTwo/AiAnalysis.vue'),
},
{
path: 'contractManage',
name: '数据看板-合约管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/contractManage.vue'),
},
{
path: 'doublecManage',
name: '数据看板-双碳管理',
component: () => import('@/views/projectAdmin/dataBoardTwo/doublecManage.vue'),
},
{
path: 'bigScreen',
name: '数据看板-监控大屏',
component: () => import('@/views/projectAdmin/dataBoardTwo/bigScreen.vue'),
},
{
path: 'cimManage',
name: '数据看板-CIM+',
component: () => import('@/views/projectAdmin/dataBoardTwo/cimManage.vue'),
}
]
},
{
path: '/equipmentCenter/',

View File

@ -1,8 +1,5 @@
<template>
<div>
</div>
<div>
<img src="@/assets/images/dataBoard/wisdomBuild/cim+.png" style="width: 100%;" alt="">
</div>
</template>
<script>
</script>
<style lang="less" scoped>
</style>

View File

@ -5281,6 +5281,7 @@ img {
font-weight: bold;
background-image: url('../../../../assets/images/dataBoard/wisdomBuild/tabs-item.png');
background-size: 100% 100%;
cursor: pointer;
&.active {
color: #fff;
background-image: url('../../../../assets/images/dataBoard/wisdomBuild/tabs-item-active.png');

View File

@ -1,193 +1,197 @@
<template>
<!-- 进度管理 -->
<div v-if="COMPANY != 'longguang'" class="fullHeight">
<!-- <vue-scroll>
<img src="@/assets/images/dataBoard/6.png" style="height:auto;width:100%"/>
</vue-scroll> -->
<div class="aside fullHeight">
<div class="blockBox">
<div class="blockTitle"><!-- 倒计时 -->{{$t('message.dataBoard.countDown')}}
<!-- 配置项目竣工日期 -->
<el-tooltip class="configBtn" effect="dark" :content="$t('message.dataBoard.configProjectCompleteDate')" placement="top">
<i class="el-icon-s-tools" @click="dialogVisible=true"></i>
</el-tooltip>
</div>
<div class="blockContent">
<p>
<!-- 项目整体倒计时 -->
{{$t('message.dataBoard.projectCountDown')+':'}}
</p>
<div class="days">
<span class="num">{{endDate?leftDays:'--'}}</span><span>
<!-- -->
{{$t('message.dataBoard.textList')[0]}}
</span>
</div>
<img src="@/assets/images/daysBG.png" class="daysBG">
<p class="endDate"><!-- 竣工时间 -->{{$t('message.dataBoard.completeTime')+':'}}{{endDate}}</p>
<!-- <div class="numContent">
<div class="numBox">
<div class="bg1 medium">
<span class="num">10</span>
</div>
<p>完成任务数</p>
</div>
<div class="numBox">
<div class="bg1 medium">
<span class="num">10</span>
</div>
<p>完成率</p>
</div>
<div class="numBox">
<div class="bg1 medium">
<span class="num">10</span>
</div>
<p>延期天数</p>
</div>
</div> -->
</div>
</div>
<div class="blockBox">
<div class="blockTitle">
<!-- 状态统计 -->
{{$t('message.dataBoard.statusStatistics')}}
</div>
<div class="blockContent">
<div class="companyChart" ref="companyChart"></div>
</div>
</div>
<div class="blockBox">
<div class="blockTitle"><!-- 进度预警 -->{{$t('message.dataBoard.progressAlarm')}}
<el-select v-model="alarmType" size="mini" class="alarmTypeBox" @change="changeAlarmType">
<!-- 按人员 -->
<el-option :value="1" :label="$t('message.dataBoard.accordingtoPeople')"></el-option>
<!-- 按任务 -->
<el-option :value="2" :label="$t('message.dataBoard.accordingtoTask')"></el-option>
</el-select>
</div>
<div class="blockContent">
<vue-scroll>
<table class="greenTable" v-show="alarmType==1">
<thead>
<tr>
<th>
<!-- 人员姓名 -->
{{$t('message.dataBoard.peopleName')}}
</th>
<th>
<!-- 超期任务数 -->
{{$t('message.dataBoard.extendedTaskNum')}}
</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in alarmList" :key="index">
<td>
{{ item.personChargeName }}
</td>
<td>{{ item.num }}</td>
</tr>
</tbody>
</table>
<table class="greenTable" v-show="alarmType==2">
<thead>
<tr>
<th>
<!-- 任务 -->
{{$t('message.dataBoard.task')}}
</th>
<th>
<!-- 负责人 -->
{{$t('message.dataBoard.principal')}}
</th>
<th>
<!-- 超期天数 -->
{{$t('message.dataBoard.extendedDays')}}
</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in alarmList" :key="index">
<td>
{{ item.subitemProjectName }}
</td>
<td>{{ item.personChargeName }}</td>
<td>{{ item.overdueDayNum }}</td>
</tr>
</tbody>
</table>
<div
class="placeholderBox placeholderBox2"
v-if="alarmList.length == 0"
>
<img src="@/assets/images/noData3.png" alt="" srcset="" />
<p>
<!-- 暂无数据 -->
{{$t('message.dataBoard.nodata')}}
</p>
</div>
</vue-scroll>
</div>
</div>
</div>
<div class="right fullHeight">
<div class="blockBox blockBox3" style="height: calc(66.66% - 25px)">
<div class="blockTitle">
<!-- 甘特图 -->
{{$t('message.dataBoard.ganttChart')}}
</div>
<div class="blockContent">
<iframe :src="'doc/ExtGantt/Ext甘特图.html?url='+baseURL+'&projectSn='+$store.state.projectSn+'&token='+$store.state.userInfo.token" id="iframe" class="Extgantt" > </iframe>
</div>
</div>
<div class="blockBox blockBox2">
<div class="blockTitle">
<!-- 多维计划 -->
{{$t('message.dataBoard.manyDimensionsPlan')}}
</div>
<div class="blockContent" style=" display: flex;align-items: center;">
<div class="stageBox">
<vue-scroll :ops="ops" ref="stageScroll">
<div
class="stageItem"
v-for="(item, index) in stageList"
:key="index"
:class="
projectData.constructionStage - 1 > index
? 'finish'
: projectData.constructionStage - 1 == index
? 'ongoing'
: ''
"
>
<div class="statusImg"></div>
<p>{{ item.name }}</p>
<div class="line" v-show="stageList.length != index + 1"></div>
<div>
<!-- 进度管理 -->
<div v-if="false && COMPANY != 'longguang'" class="fullHeight">
<!-- <vue-scroll>
<img src="@/assets/images/dataBoard/6.png" style="height:auto;width:100%"/>
</vue-scroll> -->
<div class="aside fullHeight">
<div class="blockBox">
<div class="blockTitle"><!-- 倒计时 -->{{$t('message.dataBoard.countDown')}}
<!-- 配置项目竣工日期 -->
<el-tooltip class="configBtn" effect="dark" :content="$t('message.dataBoard.configProjectCompleteDate')" placement="top">
<i class="el-icon-s-tools" @click="dialogVisible=true"></i>
</el-tooltip>
</div>
<div class="blockContent">
<p>
<!-- 项目整体倒计时 -->
{{$t('message.dataBoard.projectCountDown')+':'}}
</p>
<div class="days">
<span class="num">{{endDate?leftDays:'--'}}</span><span>
<!-- -->
{{$t('message.dataBoard.textList')[0]}}
</span>
</div>
</vue-scroll>
<img src="@/assets/images/daysBG.png" class="daysBG">
<p class="endDate"><!-- 竣工时间 -->{{$t('message.dataBoard.completeTime')+':'}}{{endDate}}</p>
<!-- <div class="numContent">
<div class="numBox">
<div class="bg1 medium">
<span class="num">10</span>
</div>
<p>完成任务数</p>
</div>
<div class="numBox">
<div class="bg1 medium">
<span class="num">10</span>
</div>
<p>完成率</p>
</div>
<div class="numBox">
<div class="bg1 medium">
<span class="num">10</span>
</div>
<p>延期天数</p>
</div>
</div> -->
</div>
</div>
<div class="blockBox">
<div class="blockTitle">
<!-- 状态统计 -->
{{$t('message.dataBoard.statusStatistics')}}
</div>
<div class="blockContent">
<div class="companyChart" ref="companyChart"></div>
</div>
</div>
<div class="blockBox">
<div class="blockTitle"><!-- 进度预警 -->{{$t('message.dataBoard.progressAlarm')}}
<el-select v-model="alarmType" size="mini" class="alarmTypeBox" @change="changeAlarmType">
<!-- 按人员 -->
<el-option :value="1" :label="$t('message.dataBoard.accordingtoPeople')"></el-option>
<!-- 按任务 -->
<el-option :value="2" :label="$t('message.dataBoard.accordingtoTask')"></el-option>
</el-select>
</div>
<div class="blockContent">
<vue-scroll>
<table class="greenTable" v-show="alarmType==1">
<thead>
<tr>
<th>
<!-- 人员姓名 -->
{{$t('message.dataBoard.peopleName')}}
</th>
<th>
<!-- 超期任务数 -->
{{$t('message.dataBoard.extendedTaskNum')}}
</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in alarmList" :key="index">
<td>
{{ item.personChargeName }}
</td>
<td>{{ item.num }}</td>
</tr>
</tbody>
</table>
<table class="greenTable" v-show="alarmType==2">
<thead>
<tr>
<th>
<!-- 任务 -->
{{$t('message.dataBoard.task')}}
</th>
<th>
<!-- 负责人 -->
{{$t('message.dataBoard.principal')}}
</th>
<th>
<!-- 超期天数 -->
{{$t('message.dataBoard.extendedDays')}}
</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in alarmList" :key="index">
<td>
{{ item.subitemProjectName }}
</td>
<td>{{ item.personChargeName }}</td>
<td>{{ item.overdueDayNum }}</td>
</tr>
</tbody>
</table>
<div
class="placeholderBox placeholderBox2"
v-if="alarmList.length == 0"
>
<img src="@/assets/images/noData3.png" alt="" srcset="" />
<p>
<!-- 暂无数据 -->
{{$t('message.dataBoard.nodata')}}
</p>
</div>
</vue-scroll>
</div>
</div>
</div>
</div>
<el-dialog :modal-append-to-body="false" :title="$t('message.dataBoard.configProjectCompleteDate')" :visible.sync="dialogVisible" width="667px">
<div style="text-align:center;margin-bottom:30px">
<el-date-picker size="medium"
v-model="endDate"
type="date"
:placeholder="$t('message.dataBoard.chooseDate')" value-format="yyyy-MM-dd">
</el-date-picker>
<!-- <br> -->
<el-button type="primary" size="medium" @click="saveDataFn" style="margin-left: 20px">
<!-- 保存 -->
{{$t('message.dataBoard.save')}}
</el-button>
<div class="right fullHeight">
<div class="blockBox blockBox3" style="height: calc(66.66% - 25px)">
<div class="blockTitle">
<!-- 甘特图 -->
{{$t('message.dataBoard.ganttChart')}}
</div>
<div class="blockContent">
<iframe :src="'doc/ExtGantt/Ext甘特图.html?url='+baseURL+'&projectSn='+$store.state.projectSn+'&token='+$store.state.userInfo.token" id="iframe" class="Extgantt" > </iframe>
</div>
</div>
<div class="blockBox blockBox2">
<div class="blockTitle">
<!-- 多维计划 -->
{{$t('message.dataBoard.manyDimensionsPlan')}}
</div>
<div class="blockContent" style=" display: flex;align-items: center;">
<div class="stageBox">
<vue-scroll :ops="ops" ref="stageScroll">
<div
class="stageItem"
v-for="(item, index) in stageList"
:key="index"
:class="
projectData.constructionStage - 1 > index
? 'finish'
: projectData.constructionStage - 1 == index
? 'ongoing'
: ''
"
>
<div class="statusImg"></div>
<p>{{ item.name }}</p>
<div class="line" v-show="stageList.length != index + 1"></div>
</div>
</vue-scroll>
</div>
</div>
</div>
</div>
<el-dialog :modal-append-to-body="false" :title="$t('message.dataBoard.configProjectCompleteDate')" :visible.sync="dialogVisible" width="667px">
<div style="text-align:center;margin-bottom:30px">
<el-date-picker size="medium"
v-model="endDate"
type="date"
:placeholder="$t('message.dataBoard.chooseDate')" value-format="yyyy-MM-dd">
</el-date-picker>
<!-- <br> -->
<el-button type="primary" size="medium" @click="saveDataFn" style="margin-left: 20px">
<!-- 保存 -->
{{$t('message.dataBoard.save')}}
</el-button>
</div>
</el-dialog>
</el-dialog>
</div>
<!-- <PlanTwo v-else></PlanTwo> -->
<img src="@/assets/images/dataBoard/wisdomBuild/main.png" style="width: 100%" alt="" />
</div>
<PlanTwo v-else></PlanTwo>
</template>
<script>
import echarts from 'echarts4';;
import { getProjectDetail,getProjectExtendInfoApi,editProjectExtendApi } from "@/assets/js/api/baseInfo.js";