2023-08-20 12:49:08 +08:00
|
|
|
|
<template>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
<div class="project-progress">
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<!--大屏背景-->
|
|
|
|
|
<background-video></background-video>
|
|
|
|
|
<!--大屏内容-->
|
|
|
|
|
<div class="screen-content-max">
|
|
|
|
|
<screen-header :nav="5"></screen-header>
|
|
|
|
|
<div class="screen-content">
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<module-one-1-1 label="节点完成率">
|
|
|
|
|
<div style=" margin-top: 10px;max-height: 265px;overflow-y: auto;margin-right: 8px;" class="scroll">
|
|
|
|
|
<div class="completion-item" v-for="(it, idx) in completionData" :key="idx">
|
|
|
|
|
<div class="row-1">
|
|
|
|
|
<svg class="my-svg-icon-blue"
|
|
|
|
|
style="position: relative;top:-1px; width:16px;margin-right: 4px;vertical-align: middle;fill: currentColor;overflow: hidden;"
|
|
|
|
|
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
|
|
|
|
p-id="11733">
|
|
|
|
|
<path
|
|
|
|
|
d="M510.0032 492.9536c-12.16 0-24.3456-2.3808-35.9424-7.1168L71.7824 300.5952c-11.3408-4.6336-18.816-15.5648-19.072-27.8016s6.784-23.4496 17.92-28.544l400.1536-183.296a100.1728 100.1728 0 0 1 82.7648-0.3072l398.1056 178.8416c11.1616 5.0176 18.2784 16.1792 18.1248 28.416s-7.5776 23.2192-18.8672 27.9296l-404.3264 189.7216a94.26944 94.26944 0 0 1-36.5824 7.3984zM160.64 270.592l336.7424 158.3872a33.0496 33.0496 0 0 0 25.5232-0.1024l338.9952-162.3808-333.5424-149.8112a38.6688 38.6688 0 0 0-32 0.128L160.64 270.592z"
|
|
|
|
|
fill="#040000" p-id="11734"></path>
|
|
|
|
|
<path
|
|
|
|
|
d="M510.1568 722.7648c-14.4896 0-28.9536-3.3536-42.1632-10.0864L68.3264 509.0816c-8.576-4.3776-15.0784-12.2624-16.9472-21.6832a30.7072 30.7072 0 0 1 15.0272-32.8192l189.6704-106.9568c19.5584-11.0336 44.3136-4.1216 55.3472 15.4368l10.2144 18.1248-175.1808 98.7904L495.872 657.92a31.5392 31.5392 0 0 0 28.672-0.0512l354.0224-181.9136-175.9488-100.736 10.3424-18.0736c11.1616-19.4816 35.968-26.2144 55.4496-15.0784l189.7984 108.672c9.7792 5.6064 15.6928 16.1024 15.4368 27.3664s-6.656 21.4784-16.6656 26.624l-404.352 207.7696a92.53376 92.53376 0 0 1-42.4704 10.2656z"
|
|
|
|
|
fill="#040000" p-id="11735"></path>
|
|
|
|
|
<path
|
|
|
|
|
d="M512.2048 975.9744c-4.7872 0-9.5744-1.1264-13.952-3.3536L70.2464 754.5856c-8.576-4.3776-15.0784-12.2624-16.9472-21.7088a30.72512 30.72512 0 0 1 15.0272-32.8192l192.1536-108.3648c18.176-10.24 41.2416-3.8144 51.4816 14.3616l11.6224 20.608-175.1808 98.7904 363.7504 185.2928 368.3584-189.2608-175.9488-100.736 11.7504-20.5312c10.368-18.1248 33.4592-24.3968 51.584-14.0288l192.2816 110.08c9.7792 5.6064 15.6928 16.1024 15.4368 27.3664a30.72 30.72 0 0 1-16.6656 26.624l-432.6656 222.3104a31.0272 31.0272 0 0 1-14.08 3.4048z"
|
|
|
|
|
fill="#040000" p-id="11736"></path>
|
|
|
|
|
</svg>
|
|
|
|
|
<span class="sp-name">{{ it.projectName }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="row-2">
|
|
|
|
|
<span class="sp-lbl" style="position: relative;top: -2px;color: #aaa;">节点完成率:</span>
|
|
|
|
|
<span class="sp-chart">
|
|
|
|
|
<idle-list-chart :width="310" :prop="Number(it.percent)"
|
|
|
|
|
:color="'#6ab9fe'"></idle-list-chart>
|
|
|
|
|
</span>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</div>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<div class="row-2">
|
|
|
|
|
<span class="sp-lbl" style="color: #aaa;">当 前 节 点:</span>
|
|
|
|
|
<span class="sp-text" style="color: rgb(1, 169, 255);">{{ it.nodeText }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</module-one-1-1>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
|
|
|
|
<module-one-1-1 label="节点计划预警">
|
|
|
|
|
<div class="quality-table special-table scheduled-alerts-list">
|
|
|
|
|
<el-table :data="nodePLanData" style="width: 100%;background: transparent;" height="265"
|
|
|
|
|
ref="fbsubordinateUnit">
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="projectName" label="项目名称" width="150" class-name="text-left">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="nodeText" label="节点名称" class-name="text-left">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span style="color:#01A9FF;font-size: 12px;">{{ scope.row.nodeText }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="days" label="状态" width="80">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span :class="'finish-' + scope.row.finishState">{{ scope.row.finish }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="planEndDate" label="计划完成时间" width="100">
|
|
|
|
|
<template slot-scope="{row}">
|
|
|
|
|
{{ row.planEndDate | formatDate() }}
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</div>
|
|
|
|
|
</module-one-1-1>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<module-one-1-2 label="项目季度考核目标">
|
|
|
|
|
<img src="images/icon2001.png" style="position: absolute;cursor: pointer;right: 12px;top: 12px;"
|
|
|
|
|
@click="doShowDlg1">
|
|
|
|
|
<div class="quality-table special-table">
|
|
|
|
|
<el-table :data="getAssessData()" style="width: 100%;background: transparent;" height="265"
|
|
|
|
|
ref="fbsubordinateUnit">
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="prj" label="项目名称" class-name="text-left"
|
|
|
|
|
:show-overflow-tooltip="true"> </el-table-column>
|
|
|
|
|
<el-table-column prop="deptName" label="责任主体" class-name="text-left"
|
|
|
|
|
:show-overflow-tooltip="true">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="comp" label="季度计划目标" class-name="text-left"
|
|
|
|
|
:show-overflow-tooltip="true">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="planDate" label="计划完成日期" width="200" v-if="1 == 2">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="finish" label="实际完成" width="200" v-if="1 == 2">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span style="font-size: 12px;"
|
|
|
|
|
:class="'finish-' + scope.row.finishState">{{ scope.row.finish }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</div>
|
|
|
|
|
</module-one-1-2>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<module-one-1-2 label="项目推进明细">
|
|
|
|
|
<el-row style="padding: 20px;" :key="elKey">
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<div class="warning-info-title my-warning-info-title">
|
|
|
|
|
<div :class="pushNav == 0 ? 'active' : ''" @click="doPushNav(0, '在建项目')">在建项目({{
|
|
|
|
|
getPrjCateCount(0) }})</div>
|
|
|
|
|
<div :class="pushNav == 1 ? 'active' : ''" @click="doPushNav(1, '拟建项目')">拟建项目({{
|
|
|
|
|
getPrjCateCount(1) }})</div>
|
2023-08-24 06:34:46 +08:00
|
|
|
|
<div :class="pushNav == 3 ? 'active' : ''" @click="doPushNav(3, '完成项目')">完成项目({{
|
2023-08-24 00:47:41 +08:00
|
|
|
|
getPrjCateCount(3) }})</div>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</div>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<div class="survey_content">
|
|
|
|
|
<div class="survey_content_img">
|
|
|
|
|
<img :src="pushUrl">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="survey_content_number labour-survey_content_number">
|
|
|
|
|
<div class="survey_content_value"><span>{{ pushCount }}</span> 个</div>
|
|
|
|
|
<p>{{ pushText }}</p>
|
|
|
|
|
</div>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="16">
|
|
|
|
|
<staff-survey-chart :height="220" unit=" " :data="pushData"
|
|
|
|
|
:width="140"></staff-survey-chart>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</el-col>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<el-col :span="12" style="position: relative;">
|
2023-08-20 22:58:54 +08:00
|
|
|
|
<div class="glr-title" style="margin-top:10px;color:#4DDEDF">建设项目节点明细</div>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<img src="images/icon2001.png"
|
|
|
|
|
style="position: absolute;cursor: pointer;right: 12px;top: 12px;"
|
|
|
|
|
@click="showBuildNodeDlg">
|
|
|
|
|
<div class="build-item">
|
|
|
|
|
<div class="build-text" style="flex-grow: 1;">
|
|
|
|
|
<div class="div-prj" v-if="scheduleInfo">
|
|
|
|
|
<i style="color:#389DE3" class="el-icon-office-building"></i>
|
|
|
|
|
{{ scheduleInfo.projectName }}
|
|
|
|
|
</div>
|
|
|
|
|
<template v-if="buildNode && buildNode.current">
|
|
|
|
|
<div style="margin-top:12px;"><img src="images/title_icon.png"><span
|
|
|
|
|
class="sp-lbl" style="position: relative;top: -7px;color:#B8C9EE;">
|
|
|
|
|
{{ buildNode.current.baseBuildNode.nodeText }}</span></div>
|
|
|
|
|
<div class="div-text scroll"
|
|
|
|
|
style="max-height: 140px;overflow: auto;color:#B8C9EE;padding-right: 12px;">
|
|
|
|
|
<div>
|
|
|
|
|
<table class="build-node-list"
|
|
|
|
|
v-if="buildNode && buildNode.nodes && buildNode.nodes.length > 0">
|
|
|
|
|
<tr class="header">
|
|
|
|
|
<th style="border-radius: 4px 0px 0px 0px;">项目</th>
|
|
|
|
|
<th style="border-radius: 0px 4px 0px 0px;">状态</th>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr v-for="(it, idx) in buildNode.nodes" :key="idx" class="data">
|
|
|
|
|
<td>{{ it.nodeText }}</td>
|
|
|
|
|
<td :class="'finish-' + it.finishState">{{ it.finish }}</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
<div v-else style="text-align: center;">
|
|
|
|
|
<img src="images/nodata.png" style="width: 140px;"
|
|
|
|
|
v-show="buildNodeLoad">
|
|
|
|
|
<div style="text-align: center;color:#ccc">暂无数据</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<div v-else style="text-align: center;">
|
|
|
|
|
<img src="images/nodata.png" style="width: 140px;" v-show="buildNodeLoad">
|
|
|
|
|
<div style="text-align: center;color:#ccc">暂无数据</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
</module-one-1-2>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<module-one-1-2 label="项目问题推进情况">
|
|
|
|
|
<problemProgress :scheduleInfo="scheduleInfo" :prjInfo="prjInfo"></problemProgress>
|
|
|
|
|
</module-one-1-2>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<module-one-1-2 label="项目形象进度" style="position: relative;">
|
|
|
|
|
<img src="images/icon2001.png" style="position: absolute;cursor: pointer;right: 12px;top: 12px;"
|
|
|
|
|
@click="doShowDlg3">
|
|
|
|
|
<div class="hj-moment-choice" style="margin:20px;height: 30px;" v-if="1 == 2">
|
|
|
|
|
<div class="hj-moment-select" style="width: 214px;">
|
|
|
|
|
<screen-select :data="selectData" ref="sel1"></screen-select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="prj-info-list" v-if="scheduleInfo">
|
|
|
|
|
<div class="col-1" style="width:400px;padding-top:12px;">
|
|
|
|
|
<el-carousel height="260px"
|
|
|
|
|
v-if="scheduleInfo && scheduleInfo.images && scheduleInfo.images.length > 0">
|
|
|
|
|
<el-carousel-item v-for="item in scheduleInfo.images" :key="item">
|
|
|
|
|
<div
|
|
|
|
|
style="width: 100%;display: flex;align-items: center;justify-content: center;height: 260px;">
|
|
|
|
|
<el-image :src="$apiPath + item" style="width:100%"
|
|
|
|
|
:preview-src-list="[$apiPath + item]" />
|
|
|
|
|
</div>
|
|
|
|
|
</el-carousel-item>
|
|
|
|
|
</el-carousel>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-2 scroll"
|
2023-08-30 00:45:30 +08:00
|
|
|
|
style="flex-grow: 1;max-height: 270px;overflow: auto;width: calc(100% - 4px);margin-top:8px;">
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<template v-if="scheduleInfo.plannedNode">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">计划节点</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.plannedNode }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="scheduleInfo.actualNode">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">实际节点</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.actualNode }}</div>
|
2023-08-20 00:25:52 +08:00
|
|
|
|
</div>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
</template>
|
2023-08-30 00:45:30 +08:00
|
|
|
|
<template v-if="scheduleInfo.dataTemplate!=4">
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<template v-if="scheduleInfo.purchaseProgress">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">融资、招采进展</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.purchaseProgress }}</div>
|
2023-08-20 00:25:52 +08:00
|
|
|
|
</div>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
</template>
|
|
|
|
|
<template v-if="scheduleInfo.designProgress">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">报建、设计进展</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.designProgress }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="scheduleInfo.constructionProgress">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">施工进展</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.constructionProgress }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="scheduleInfo.acceptanceProgress">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">验收进展</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.acceptanceProgress }}</div>
|
|
|
|
|
</div>
|
2023-08-30 00:45:30 +08:00
|
|
|
|
</template>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="scheduleInfo.dataTemplate==4">
|
|
|
|
|
<template v-if="scheduleInfo.constructionProgress">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">施工进展</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.constructionProgress }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="scheduleInfo.acceptanceProgress">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">验收进展</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.acceptanceProgress }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="scheduleInfo.purchaseProgress">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">结算进展</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.purchaseProgress }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-if="scheduleInfo.designProgress">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">运维进展</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.designProgress }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
2023-08-20 12:49:08 +08:00
|
|
|
|
</template>
|
|
|
|
|
<template v-if="scheduleInfo.planForNextWeek">
|
|
|
|
|
<div><img src="images/title_icon.png"><span class="sp-lbl">下周计划</span></div>
|
|
|
|
|
<div class="div-text ">
|
|
|
|
|
<div>{{ scheduleInfo.planForNextWeek }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<div v-else style="text-align: center;padding-top: 50px;">
|
|
|
|
|
<img src="images/nodata.png" style="width: 240px;">
|
|
|
|
|
<div style="text-align: center;">暂无数据</div>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</div>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
</module-one-1-2>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<module-one-1-2 label="项目跟进计划">
|
|
|
|
|
<img src="images/icon2001.png" style="position: absolute;cursor: pointer;right: 12px;top: 12px;"
|
|
|
|
|
@click="doShowDlg2">
|
|
|
|
|
<div class="prj-pan-nav" style="padding:20px;">
|
|
|
|
|
<span class="prj-pan-nav-item" :class="panNav == 0 ? 'active' : ''"
|
|
|
|
|
@click="panNav = 0">城建项目计划</span>
|
|
|
|
|
<span class="prj-pan-nav-item" style="margin-left: 20px;" :class="panNav == 1 ? 'active' : ''"
|
|
|
|
|
@click="panNav = 1">重点项目计划</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="modify-project-amount" @mouseout="planMouseout" @mouseover="planMouseover"
|
|
|
|
|
style="margin-top:0px;">
|
|
|
|
|
<div class="modify-btn" style="padding-top:100px">
|
|
|
|
|
<svg class="my-svg-icon-aaa" @click="planLeftBtn"
|
|
|
|
|
style="cursor:pointer; width: 3em;vertical-align: middle;fill: currentColor;overflow: hidden;"
|
|
|
|
|
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
|
|
|
|
p-id="4967">
|
|
|
|
|
<path
|
|
|
|
|
d="M729.6 931.2l-416-425.6 416-416c9.6-9.6 9.6-25.6 0-35.2-9.6-9.6-25.6-9.6-35.2 0l-432 435.2c-9.6 9.6-9.6 25.6 0 35.2l432 441.6c9.6 9.6 25.6 9.6 35.2 0C739.2 956.8 739.2 940.8 729.6 931.2z"
|
|
|
|
|
p-id="4968"></path>
|
|
|
|
|
</svg>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</div>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<div class="modify-content" id="planContent">
|
|
|
|
|
<div class="modify-content-overflow" style="width: 2000px;">
|
|
|
|
|
|
|
|
|
|
<div class="quality-table special-table" style="width: 800px;">
|
|
|
|
|
<el-table :data="planData1" style="width: 100%;background: transparent;"
|
|
|
|
|
height="265">
|
2023-09-04 01:01:14 +08:00
|
|
|
|
<el-table-column prop="prj" label="项目名称" class-name="text-left"> </el-table-column>
|
|
|
|
|
<el-table-column prop="startTime" label="计划开始时间" width="100"> </el-table-column>
|
|
|
|
|
<el-table-column prop="endTime" label="建成时限" width="100"> </el-table-column>
|
|
|
|
|
<el-table-column prop="taotal" label="总投资(万元)" width="120"> </el-table-column>
|
|
|
|
|
<el-table-column prop="year" label="年度投资(万元)" width="120"> </el-table-column>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
</el-table>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="quality-table special-table" style="width: 800px;">
|
|
|
|
|
<el-table :data="planData2" style="width: 100%;background: transparent;"
|
|
|
|
|
height="265">
|
2023-09-04 01:01:14 +08:00
|
|
|
|
<el-table-column prop="prj" label="项目名称" class-name="text-left"> </el-table-column>
|
|
|
|
|
<el-table-column prop="startTime" label="计划开始时间" width="100"> </el-table-column>
|
|
|
|
|
<el-table-column prop="endTime" label="建成时限" width="100"> </el-table-column>
|
|
|
|
|
<el-table-column prop="taotal" label="总投资(万元)" width="120"> </el-table-column>
|
|
|
|
|
<el-table-column prop="year" label="年度投资(万元)" width="120"> </el-table-column>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
</el-table>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modify-btn" style="padding-top:100px">
|
|
|
|
|
<svg class="my-svg-icon-aaa" @click="planRightBtn"
|
|
|
|
|
style="cursor:pointer; width: 3em;vertical-align: middle;fill: currentColor;overflow: hidden;"
|
|
|
|
|
viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
|
|
|
|
p-id="4997">
|
|
|
|
|
<path
|
|
|
|
|
d="M761.6 489.6l-432-435.2c-9.6-9.6-25.6-9.6-35.2 0-9.6 9.6-9.6 25.6 0 35.2l416 416-416 425.6c-9.6 9.6-9.6 25.6 0 35.2s25.6 9.6 35.2 0l432-441.6C771.2 515.2 771.2 499.2 761.6 489.6z"
|
|
|
|
|
p-id="4998"></path>
|
|
|
|
|
</svg>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2023-08-20 12:49:08 +08:00
|
|
|
|
</module-one-1-2>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</div>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</div>
|
2023-08-20 12:49:08 +08:00
|
|
|
|
<index-dlg1 ref="dlg1"></index-dlg1>
|
|
|
|
|
<index-dlg2 ref="dlg2"></index-dlg2>
|
|
|
|
|
<index-dlg3 ref="dlg3"></index-dlg3>
|
|
|
|
|
<build-node-dlg ref="buildNodeDlg"></build-node-dlg>
|
2023-08-10 01:16:23 +08:00
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import '../components/module/module-one-1-1'
|
|
|
|
|
import '../components/module/module-one-1-2'
|
|
|
|
|
import '../components/module/module-one-3-1'
|
|
|
|
|
import '../components/background_video'
|
|
|
|
|
import '../components/header'
|
|
|
|
|
import '../components/staff-survey-chart'
|
|
|
|
|
import '../components/idle-list-chart'
|
|
|
|
|
import '../components/screen-select'
|
2023-08-20 12:49:08 +08:00
|
|
|
|
import indexDlg1 from './progress/indexDlg1'
|
|
|
|
|
import indexDlg2 from './progress/indexDlg2'
|
|
|
|
|
import indexDlg3 from './progress/indexDlg3'
|
2023-08-10 01:16:23 +08:00
|
|
|
|
import problemProgress from './progress/problemProgress.vue'
|
2023-08-20 00:25:52 +08:00
|
|
|
|
import buildNodeDlg from './progress/buildNodeDlg.vue'
|
2023-08-10 01:16:23 +08:00
|
|
|
|
export default {
|
2023-08-20 12:49:08 +08:00
|
|
|
|
components: {
|
|
|
|
|
indexDlg1,
|
|
|
|
|
indexDlg2,
|
|
|
|
|
indexDlg3,
|
|
|
|
|
problemProgress,
|
|
|
|
|
buildNodeDlg
|
|
|
|
|
},
|
2023-08-10 01:16:23 +08:00
|
|
|
|
data() {
|
2023-08-20 12:49:08 +08:00
|
|
|
|
return {
|
|
|
|
|
elKey: 0,
|
|
|
|
|
//节点完成率
|
|
|
|
|
completionData: [],
|
|
|
|
|
//节点计划预警
|
|
|
|
|
nodePLanData: [],
|
|
|
|
|
assessData: [],
|
|
|
|
|
pushUrl: 'images/company_6.png',
|
|
|
|
|
pushNav: 0,
|
|
|
|
|
pushText: '在建项目',
|
|
|
|
|
pushCount: 35,
|
|
|
|
|
pushData: [
|
|
|
|
|
{ text: "正常推进项目", value: 0 },
|
|
|
|
|
{ text: "进度滞后项目", value: 1 },
|
|
|
|
|
],
|
|
|
|
|
costIndex: 0,
|
|
|
|
|
direction: 'right',
|
|
|
|
|
costInterval: undefined,
|
|
|
|
|
issueData: [
|
2023-08-10 01:16:23 +08:00
|
|
|
|
{
|
2023-08-20 12:49:08 +08:00
|
|
|
|
title: '泾河新城荟锦坊二期',
|
|
|
|
|
detail: '项目存在约7万方土无外运点',
|
|
|
|
|
info: '积极协调开发建设部与环保部门。'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '瀛洲新苑(二期)幼儿园',
|
|
|
|
|
detail: '项目存在约3万方土无外运点',
|
|
|
|
|
info: '积极协调开发建设部与环保部门。'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '光伏公园',
|
|
|
|
|
detail: '项目存在约5万方土无外运点',
|
|
|
|
|
info: '积极协调开发建设部与环保部门。'
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
panNav: 0,
|
|
|
|
|
planIndex: 0,
|
|
|
|
|
planDirection: 'right',
|
|
|
|
|
planInterval: undefined,
|
|
|
|
|
planData1: [
|
2023-09-04 01:01:14 +08:00
|
|
|
|
{num:`1`,prj:`泾河新城崇文大桥两侧辅道工程(文塔南路-正阳西四路)`,detail:`全长约500米,宽度暂定30米。有绿带,宽15米。`,prop:`新建`,department:`招商二部`,startTime:`2023.9`,endTime:`2024.3`,taotal:`2700`,year:`2000`},
|
|
|
|
|
{num:`2`,prj:`电力管沟项目`,detail:`正阳大道(汉景东街至崇文大桥南岸桥头),正阳大道(高泾大道-永乐二街)、泾河大道(唐里村段)、瀛洲一街(乐华一路-乐华二路)、沣泾大道(乐华一路至乐华三路),高泾大道(跨泾惠渠),泾河大道(环湖路西侧-茶马大道)长度约4km`,prop:`新建`,department:`发展和经济运行部`,startTime:`2023.9`,endTime:`2024.1`,taotal:`6684 `,year:`5500`},
|
|
|
|
|
{num:`3`,prj:`原点大道市政设施改造工程`,detail:`(泾茯路至原点西一路)隆基水电配套,3740米,包括供水管道及电力管沟。`,prop:`新建`,department:`发展和经济运行部`,startTime:`2023.10 `,endTime:`2024.5`,taotal:`21400`,year:`14000`},
|
2023-08-20 12:49:08 +08:00
|
|
|
|
],
|
|
|
|
|
planData2: [
|
2023-09-04 01:01:14 +08:00
|
|
|
|
{num:`1`,prj:`创维智能电子产业园`,detail:`项目总投资100亿元,总占地面积700亩,年产100万台(套)厨房电器;8000万套智能家居数字产品(机顶盒);年产5亿支3C电池、1亿支特种(军用)锂电池,产值达100亿元以上,年上缴税收约5亿元,带动就业6000-10000人`,prop:`续建`,department:`发展和经济运行部`,startTime:`2022.3`,endTime:`2023.12`,taotal:`135000`,year:`70000`},
|
|
|
|
|
{num:`2`,prj:`乐士源特种小动力电池及储能电池项目(一期)`,detail:`项目总投资30亿元,其中一期15.8亿元,该项目作为创维智能家居家电产业链配套项目,以其核心技术、自动化设备、智能化制造执行系统(MES)等,建设智能化特种小动力电池及储能电池生产基地。项目分两期建设,其中一期主要生产2GWh特种小动力电池,项目将购置精密混料机、涂布机、对辊机、分切机、全自动制片机,卷绕机、全自动装配机、注液机、化成、分容、分选机等设备1000多台套,主要生产18650、21700等圆形锂离子电池。`,prop:`新建`,department:`发展和经济运行部`,startTime:`2023.07`,endTime:`2024.06`,taotal:`/`,year:`/`},
|
|
|
|
|
{num:`3`,prj:`乐士源特种小动力电池及储能电池项目(二期)`,detail:`项目总投资30亿元,其中二期14.2亿元,该项目作为创维智能家居家电产业链配套项目,以其核心技术、自动化设备、智能化制造执行系统(MES)等,建设智能化特种小动力电池及储能电池生产基地。项目分两期建设,其中,项目二期主要生产2GWh储能电池。`,prop:`前期`,department:`/`,startTime:`/`,endTime:`/`,taotal:`/`,year:`/`},
|
2023-08-20 12:49:08 +08:00
|
|
|
|
],
|
|
|
|
|
selectData: [
|
|
|
|
|
{ text: '泾河新城荟锦坊二期', id: 1 },
|
|
|
|
|
],
|
|
|
|
|
dept: null,
|
|
|
|
|
prjInfos: [],
|
|
|
|
|
prjInfo: {},
|
|
|
|
|
scheduleInfo: null,
|
|
|
|
|
projects: [],
|
|
|
|
|
projectCategory: [],
|
|
|
|
|
buildNodeLoad: false,
|
|
|
|
|
buildNode: {
|
|
|
|
|
current: null,
|
|
|
|
|
nodes: []
|
2023-08-10 01:16:23 +08:00
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
created() {
|
|
|
|
|
this.init()
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
window.app = this;
|
|
|
|
|
this.$bus.$on("projectChange", res => {
|
|
|
|
|
this.prjInfo = res;
|
|
|
|
|
this.loadProjectConstructionProgress();
|
|
|
|
|
this.selectScheduledAlerts();
|
|
|
|
|
this.selectCompletionRate();
|
|
|
|
|
});
|
|
|
|
|
this.$bus.$on("loadProjects", prjs => {
|
|
|
|
|
this.projects = prjs;
|
|
|
|
|
})
|
|
|
|
|
this.$bus.$on("deptChange", dept => {
|
|
|
|
|
this.dept = dept;
|
2023-08-24 00:12:01 +08:00
|
|
|
|
this.groupByProjectCategory(dept.id);
|
2023-08-20 12:49:08 +08:00
|
|
|
|
this.deptChange();
|
|
|
|
|
this.selectScheduledAlerts();
|
|
|
|
|
this.selectCompletionRate();
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
selectCompletionRate(){
|
|
|
|
|
let postData = {}
|
|
|
|
|
if (this.prjInfo.id == 0) {
|
|
|
|
|
postData.id = this.dept.id;
|
|
|
|
|
} else {
|
|
|
|
|
postData.projectId = this.prjInfo.id;
|
|
|
|
|
}
|
|
|
|
|
this.$api.buildNode.countCompletionRate(postData).then(d=>{
|
|
|
|
|
this.completionData=d||[];
|
2023-08-10 01:16:23 +08:00
|
|
|
|
})
|
2023-08-20 12:49:08 +08:00
|
|
|
|
},
|
|
|
|
|
selectScheduledAlerts() {
|
|
|
|
|
let postData = {}
|
|
|
|
|
if (this.prjInfo.id == 0) {
|
|
|
|
|
postData.id = this.dept.id;
|
|
|
|
|
} else {
|
|
|
|
|
postData.projectId = this.prjInfo.id;
|
|
|
|
|
}
|
|
|
|
|
this.$api.buildNode.selectScheduledAlerts(postData).then(d => {
|
|
|
|
|
this.nodePLanData = d||[];
|
|
|
|
|
|
2023-08-17 22:47:44 +08:00
|
|
|
|
})
|
|
|
|
|
},
|
2023-08-20 12:49:08 +08:00
|
|
|
|
showBuildNodeDlg() {
|
|
|
|
|
this.$refs.buildNodeDlg.showDialog(this.projects, this.prjInfo);
|
|
|
|
|
},
|
|
|
|
|
getAssessData() {
|
|
|
|
|
if (this.prjInfo.id == 0) {
|
|
|
|
|
return this.assessData;
|
|
|
|
|
} else {
|
|
|
|
|
return this.assessData.filter(d => d.projectId == this.prjInfo.id);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
deptChange() {
|
|
|
|
|
this.$api.quarterlyAssess.currentListByDept(this.dept.id).then(d => {
|
|
|
|
|
this.assessData = (d.rows || []).map(it => {
|
|
|
|
|
it.prj = it.project?.projectName || '';
|
|
|
|
|
it.deptName = it.project?.paretProjectName || '';
|
|
|
|
|
it.comp = it.planTarget;
|
|
|
|
|
if (it.finishDate) {
|
|
|
|
|
it.finishState = 0;
|
|
|
|
|
it.finish = it.finishDate;
|
|
|
|
|
} else {
|
|
|
|
|
if (it.planDate) {
|
|
|
|
|
if (+this.$dt(it.planDate) < +new Date()) {
|
|
|
|
|
let dt1 = +this.$dt(it.planDate)
|
|
|
|
|
let dt2 = +this.$dt(this.$dt(new Date()).format("YYYY-MM-DD"));
|
|
|
|
|
let ts = (dt2 - dt1) / 3600 / 1000 / 24;
|
|
|
|
|
it.finish = "滞后" + ts + "天";
|
|
|
|
|
it.finishState = 1;
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
it.finish = "进行中";
|
|
|
|
|
it.finishState = 2;
|
2023-08-10 01:16:23 +08:00
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
} else {
|
|
|
|
|
it.finish = "进行中";
|
|
|
|
|
it.finishState = 2;
|
2023-08-10 01:16:23 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return it;
|
|
|
|
|
})
|
2023-08-20 12:49:08 +08:00
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
getProjectId(cb) {
|
|
|
|
|
let func = () => {
|
|
|
|
|
let prjId = this.prjInfo.id;
|
|
|
|
|
if (prjId == 0) {
|
|
|
|
|
if (this.projects.length == 0) {
|
|
|
|
|
setTimeout(func, 100);
|
|
|
|
|
} else {
|
|
|
|
|
cb && cb(this.projects[1].id);
|
2023-08-10 01:16:23 +08:00
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
} else {
|
|
|
|
|
cb && cb(prjId);
|
2023-08-10 01:16:23 +08:00
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
}
|
|
|
|
|
func();
|
|
|
|
|
},
|
|
|
|
|
loadProjectConstructionProgress() {
|
|
|
|
|
this.prjInfo = JSON.parse(localStorage.getItem("data2"));
|
|
|
|
|
this.getProjectId(prjId => {
|
|
|
|
|
this.$api.schedule.projectConstructionProgress(prjId).then(d => {
|
|
|
|
|
let obj = d?.data || {};
|
|
|
|
|
if (obj.image) {
|
|
|
|
|
obj.images = obj.image.split(",").filter(d => d);
|
2023-08-10 01:16:23 +08:00
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
this.scheduleInfo = obj;
|
|
|
|
|
})
|
|
|
|
|
this.$api.buildNode.selectCurrent({ projectId: prjId }).then(d => {
|
|
|
|
|
let tmps = this.$api.buildNode.covertData(d.data || []);
|
|
|
|
|
let objs = tmps.filter(d => d.lvl.length == 2)
|
|
|
|
|
this.buildNode.current = objs.length > 0 ? objs[0] : null;
|
|
|
|
|
this.buildNode.nodes = tmps.filter(d => d.lvl.length > 2)
|
|
|
|
|
this.buildNodeLoad = true;
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
doShowDlg1() {
|
|
|
|
|
this.$refs.dlg1.showDialog(this.assessData)
|
|
|
|
|
},
|
|
|
|
|
doShowDlg2() {
|
|
|
|
|
this.$refs.dlg2.showDialog(this.panNav)
|
|
|
|
|
},
|
|
|
|
|
doShowDlg3() {
|
|
|
|
|
this.$refs.dlg3.showDialog(this.scheduleInfo, this.projects)
|
|
|
|
|
},
|
|
|
|
|
doPushNav(n, t) {
|
|
|
|
|
this.pushNav = n;
|
|
|
|
|
this.pushText = t;
|
|
|
|
|
this.pushUrl = ['images/company_6.png', 'images/company_5.png', 'images/company_4.png'][n]
|
|
|
|
|
this.pushCount = this.getPrjCateCount(n);
|
|
|
|
|
let item = this.projectCategory.length > n ? this.projectCategory[n] : null;
|
|
|
|
|
this.pushData[0].value = item && item.length > 0 ? item[0].cnt : 0;
|
|
|
|
|
this.pushData[1].value = item && item.length > 1 ? item[1].cnt : 0;
|
|
|
|
|
this.elKey++;
|
|
|
|
|
},
|
|
|
|
|
modifyLeftBtn() {
|
|
|
|
|
this.direction = 'left'
|
|
|
|
|
this.manufacturingCostRoll()
|
|
|
|
|
},
|
|
|
|
|
modifyRightBtn() {
|
|
|
|
|
this.direction = 'right'
|
|
|
|
|
this.manufacturingCostRoll()
|
|
|
|
|
},
|
|
|
|
|
manufacturingCostRoll() {
|
|
|
|
|
var width = $(".project-amount").innerWidth()
|
|
|
|
|
if (this.direction == 'right') {
|
|
|
|
|
if (this.costIndex == 6) {
|
|
|
|
|
this.costIndex = 0
|
|
|
|
|
} else {
|
|
|
|
|
this.costIndex = this.costIndex + 3
|
2023-08-10 01:16:23 +08:00
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
} else {
|
|
|
|
|
if (this.costIndex == 0) {
|
|
|
|
|
this.costIndex = 6
|
|
|
|
|
} else {
|
|
|
|
|
this.costIndex = this.costIndex - 3
|
2023-08-12 14:16:43 +08:00
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
}
|
|
|
|
|
$("#modifyContent").animate({ scrollLeft: (width * this.costIndex) + 'px' })
|
|
|
|
|
this.direction = 'right'
|
|
|
|
|
},
|
|
|
|
|
costMouseover() {
|
|
|
|
|
clearInterval(this.costInterval);
|
|
|
|
|
},
|
|
|
|
|
costMouseout() {
|
|
|
|
|
this.costInterval = setInterval(this.manufacturingCostRoll, 5000);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
planLeftBtn() {
|
|
|
|
|
this.planDirection = 'left'
|
|
|
|
|
this.manufacturingPlanRoll()
|
|
|
|
|
},
|
|
|
|
|
planRightBtn() {
|
|
|
|
|
this.planDirection = 'right'
|
|
|
|
|
this.manufacturingPlanRoll()
|
|
|
|
|
},
|
|
|
|
|
manufacturingPlanRoll() {
|
|
|
|
|
var width = 830
|
|
|
|
|
if (this.planDirection == 'right') {
|
|
|
|
|
if (this.planIndex == 1) {
|
|
|
|
|
this.planIndex = 0
|
|
|
|
|
} else {
|
|
|
|
|
this.planIndex = this.planIndex + 1
|
2023-08-12 14:16:43 +08:00
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
} else {
|
|
|
|
|
if (this.planIndex == 0) {
|
|
|
|
|
this.planIndex = 1
|
|
|
|
|
} else {
|
|
|
|
|
this.planIndex = this.planIndex - 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.panNav = this.planIndex;
|
|
|
|
|
$("#planContent").animate({ scrollLeft: (width * this.planIndex) + 'px' })
|
|
|
|
|
this.planDirection = 'right'
|
|
|
|
|
},
|
|
|
|
|
planMouseover() {
|
|
|
|
|
clearInterval(this.planInterval);
|
|
|
|
|
},
|
|
|
|
|
planMouseout() {
|
|
|
|
|
this.planInterval = setInterval(this.manufacturingPlanRoll, 5000);
|
|
|
|
|
},
|
|
|
|
|
getPrjCateCount(n) {
|
|
|
|
|
if (this.projectCategory.length < n + 1) {
|
2023-08-12 14:16:43 +08:00
|
|
|
|
return 0;
|
2023-08-20 12:49:08 +08:00
|
|
|
|
}
|
|
|
|
|
let tmps = this.projectCategory[n];
|
|
|
|
|
if (tmps && tmps.length > 0) {
|
|
|
|
|
let sum = 0;
|
|
|
|
|
tmps.forEach(d => {
|
|
|
|
|
sum += d.cnt;
|
|
|
|
|
})
|
|
|
|
|
return sum;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
2023-08-10 01:16:23 +08:00
|
|
|
|
},
|
2023-08-24 00:12:01 +08:00
|
|
|
|
groupByProjectCategory(detpId){
|
2023-08-24 00:47:41 +08:00
|
|
|
|
this.$api.project.groupByProjectCategory(detpId,datas => {
|
2023-08-24 00:12:01 +08:00
|
|
|
|
this.projectCategory = datas;
|
|
|
|
|
this.pushCount = this.getPrjCateCount(0);
|
|
|
|
|
let item = this.projectCategory.length > 0 ? this.projectCategory[0] : null;
|
|
|
|
|
this.pushData[0].value = item && item.length > 0 ? item[0].cnt : 0;
|
|
|
|
|
this.pushData[1].value = item && item.length > 1 ? item[1].cnt : 0;
|
|
|
|
|
this.doPushNav(0, '在建项目');
|
|
|
|
|
this.elKey++;
|
|
|
|
|
});
|
|
|
|
|
},
|
2023-08-20 12:49:08 +08:00
|
|
|
|
init() {
|
|
|
|
|
if (localStorage.length == 0) {
|
|
|
|
|
var company = { text: '城投公司', id: 1, type: 1 }
|
|
|
|
|
localStorage.setItem("company", JSON.stringify(company))
|
|
|
|
|
this.localStorage1 = JSON.parse(localStorage.getItem("company"))
|
|
|
|
|
|
|
|
|
|
var project = { text: '泾河新城荟锦坊二期', id: 1, type: 2 }
|
|
|
|
|
localStorage.setItem("project", JSON.stringify(project))
|
|
|
|
|
this.localStorage2 = JSON.parse(localStorage.getItem("project"))
|
|
|
|
|
} else {
|
|
|
|
|
this.localStorage1 = JSON.parse(localStorage.getItem("company"))
|
|
|
|
|
this.localStorage2 = JSON.parse(localStorage.getItem("project"))
|
|
|
|
|
}
|
2023-08-24 00:12:01 +08:00
|
|
|
|
|
2023-08-20 12:49:08 +08:00
|
|
|
|
//设备概况点击事件定时器
|
|
|
|
|
this.overviewInterval = setInterval(this.overviewClick, 5000);
|
|
|
|
|
//重大节点预期预警
|
|
|
|
|
this.majorInterval = setInterval(this.timer, 5000);
|
|
|
|
|
//正在发生 定时器
|
|
|
|
|
this.warningInterval = setInterval(this.automaticRoll, 5000);
|
|
|
|
|
//预警类型 定时器
|
|
|
|
|
this.warningTypeInterval = setInterval(this.automaticRollType, 5000);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
2023-08-10 01:16:23 +08:00
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="less" >
|
2023-08-20 12:49:08 +08:00
|
|
|
|
.project-progress {
|
|
|
|
|
|
|
|
|
|
.my-svg-icon-aaa * {
|
|
|
|
|
fill: #aaa;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.my-svg-icon-blue * {
|
|
|
|
|
fill: #389DE3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.completion-item {
|
|
|
|
|
padding: 5px 20px;
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.completion-item .row-2 {
|
|
|
|
|
margin-left: 30px;
|
|
|
|
|
margin-bottom: 5px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.completion-item .sp-chart {
|
|
|
|
|
display: inline-block;
|
|
|
|
|
height: 28px;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.special-table th .cell {
|
|
|
|
|
color: aquamarine;
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.text-left {
|
|
|
|
|
text-align: left !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.my-warning-info-title .active {
|
|
|
|
|
background-size: 10px 10px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.build-item {
|
|
|
|
|
display: flex;
|
|
|
|
|
margin-top: 15px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.build-item .build-text {
|
|
|
|
|
margin-left: 10px;
|
|
|
|
|
line-height: 24px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.build-item .div-prj {
|
|
|
|
|
color: #B1C2DD;
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
width: 400px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.build-item .div-lbl {
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
color: #aaa;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.build-item .div-detail {
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
color: #3E80BA;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.project-issue {
|
|
|
|
|
width: 400px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.project-issue .issue-title {
|
|
|
|
|
height: 30px;
|
|
|
|
|
background-position: unset;
|
|
|
|
|
background-size: unset;
|
|
|
|
|
padding-left: 10px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.project-issue .row-1 {
|
|
|
|
|
margin-top: 30px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.project-issue .sp-lbl {
|
|
|
|
|
display: inline-block;
|
|
|
|
|
width: 70px;
|
|
|
|
|
vertical-align: top;
|
|
|
|
|
|
|
|
|
|
color: #aaa;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.project-issue .sp-detail {
|
|
|
|
|
display: inline-block;
|
|
|
|
|
width: calc(100% - 75px);
|
|
|
|
|
line-height: 24px;
|
|
|
|
|
color: #EB8308;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.project-issue .sp-detail.sp-info {
|
|
|
|
|
color: #3E80BA;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.prj-pan-nav-item {
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.prj-pan-nav-item.active {
|
|
|
|
|
color: aquamarine;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.prj-info-list {
|
|
|
|
|
display: flex;
|
|
|
|
|
padding: 0px 20px;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.prj-info-list .info-img {
|
|
|
|
|
height: 90px;
|
|
|
|
|
width: 90px;
|
|
|
|
|
margin-top: 10px;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.prj-info-list .info-img img {
|
|
|
|
|
height: 90px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.prj-info-list .col-2 {
|
|
|
|
|
margin-left: 20px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.prj-info-list .col-2 img {
|
|
|
|
|
width: 12px;
|
|
|
|
|
height: 12px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.prj-info-list .col-2 .sp-lbl {
|
|
|
|
|
color: rgb(1, 169, 255);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.prj-info-list .col-2 .div-text {
|
|
|
|
|
color: #B8C9EE;
|
|
|
|
|
line-height: 30px;
|
|
|
|
|
padding-left: 20px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.build-node-list {
|
|
|
|
|
border-collapse: separate;
|
|
|
|
|
border-spacing: 0;
|
|
|
|
|
|
|
|
|
|
tr {
|
|
|
|
|
&.data {
|
|
|
|
|
td {
|
|
|
|
|
&:first-child {
|
|
|
|
|
border-bottom: solid 1px #2D5280;
|
|
|
|
|
border-left: solid 1px #2D5280;
|
2023-08-10 01:16:23 +08:00
|
|
|
|
|
2023-08-20 00:25:52 +08:00
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
|
|
|
|
|
&:last-child {
|
|
|
|
|
border-bottom: solid 1px #2D5280;
|
|
|
|
|
border-right: solid 1px #2D5280;
|
2023-08-20 00:25:52 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
|
|
|
|
|
&.header {
|
|
|
|
|
background-color: #2D5280;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
td {
|
|
|
|
|
|
|
|
|
|
line-height: 32px;
|
|
|
|
|
padding: 0px 4px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.scheduled-alerts-list{
|
|
|
|
|
.el-table__body-wrapper {
|
|
|
|
|
&::-webkit-scrollbar {
|
|
|
|
|
width: 8px;
|
|
|
|
|
height: 8px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&::-webkit-scrollbar-thumb {
|
|
|
|
|
background-color: rgb(1, 169, 255);
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
}
|
|
|
|
|
tr{
|
|
|
|
|
cursor: pointer;
|
2023-08-20 00:25:52 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2023-08-20 12:49:08 +08:00
|
|
|
|
}
|
2023-08-10 01:16:23 +08:00
|
|
|
|
}
|
|
|
|
|
</style>
|