update code

dev-login
haha 2023-08-20 12:49:08 +08:00
parent 608575c530
commit 2631112a89
2 changed files with 905 additions and 691 deletions

View File

@ -4,10 +4,50 @@ import $dt from "dayjs";
// 节点计划预警
const selectScheduledAlerts = (data) => {
return request({
return new Promise(resolve=>{
request({
url: "bgscreen/projectBuildNode/selectScheduledAlerts",
method: "post",
data: data,
}).then(d=>{
const updateItemState=it=>{
let dt0 = +$dt($dt(new Date()).format("YYYY-MM-DD")); //当时时间
let dt1 = it.planStartDate ? +$dt(it.planStartDate) : 0; //计划开始
let dt2 = it.planEndDate ? +$dt(it.planEndDate) : 0; //计划结束
let dt3 = it.startDate ? +$dt(it.startDate) : 0; //实际开始
let dt4 = it.endDate ? +$dt(it.endDate) : 0; //实际结束
if(!it.startDate && it.endDate){
it.finish="未开工";
it.finishState = 4;
return;
}
if(it.planEndDate){
if(dt2<dt0){
it.finish = "逾期" + (dt0 - dt2) / 3600 / 1000 / 24 + "天";
it.finishState = 1;
}else{
it.finish = "进行中";
it.finishState = 2;
}
return;
}
if(it.startDate){
it.finish = "进行中";
it.finishState = 2;
}
};
let tmps = (d.data || []).map(it => {
it.lvl = it.baseBuildNode.nodeLvl;
it.projectName=it.project?.projectName||'';
it.parentLvl = it.lvl.substring(0, it.lvl.length - 2);
it.nodeText = it.baseBuildNode.nodeText;
it.file = tryToJson(it.files, []);
updateItemState(it);
return it;
});
resolve(tmps);
});
});
};
@ -123,9 +163,40 @@ const covertData = (objs) => {
});
};
/**
* 节点完成率统计
* @param {*} data
* @returns
*/
const countCompletionRate=data=>{
return new Promise(resolve=>{
request({
url: "bgscreen/projectBuildNode/countCompletionRate",
method: "post",
data: data,
}).then(d=>{
let tmps=(d.data||[]).map(it=>{
it.lvl = it.baseBuildNode.nodeLvl;
it.projectName=it.project?.projectName||'';
it.parentLvl = it.lvl.substring(0, it.lvl.length - 2);
it.nodeText = it.baseBuildNode.nodeText;
it.file = tryToJson(it.files, []);
it.percent=0;
if(+it.id>0){
it.percent=(it.nodeId*100.0/it.id*1.0).toFixed(2);
}
return it;
})
resolve(tmps);
});
});
}
export default {
selectScheduledAlerts,
selectCurrent,
covertData,
listByProject
listByProject,
countCompletionRate
};

View File

@ -1,4 +1,4 @@
<<template>
<template>
<div class="project-progress">
<!--大屏背景-->
<background-video></background-video>
@ -9,21 +9,35 @@
<el-row>
<el-col :span="6">
<module-one-1-1 label="节点完成率">
<div style="margin-top: 10px;">
<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:-4px; width:16px;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.name}}</span>
<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: -4px;color: #aaa;">节点完成率:</span>
<span class="sp-lbl" style="position: relative;top: -2px;color: #aaa;">节点完成率:</span>
<span class="sp-chart">
<idle-list-chart :width="310" :prop="Number(it.cnt)" :color="'#6ab9fe'"></idle-list-chart>
<idle-list-chart :width="310" :prop="Number(it.percent)"
:color="'#6ab9fe'"></idle-list-chart>
</span>
</div>
<div class="row-2">
<span class="sp-lbl" style="color: #aaa;"> :</span>
<span class="sp-text" style="color: rgb(1, 169, 255);">{{it.step}}</span>
<span class="sp-text" style="color: rgb(1, 169, 255);">{{ it.nodeText }}</span>
</div>
</div>
</div>
@ -31,24 +45,26 @@
</el-col>
<el-col :span="6">
<module-one-1-1 label="节点计划预警">
<div class="quality-table special-table">
<el-table :data="nodePLanData" style="width: 100%;background: transparent;"
height="265"
<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="prj" label="项目名称" width="150" class-name="text-left"> </el-table-column>
<el-table-column prop="node" label="节点名称" width="80" class-name="text-left">
<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.node}}</span>
<span style="color:#01A9FF;font-size: 12px;">{{ scope.row.nodeText }}</span>
</template>
</el-table-column>
<el-table-column prop="days" label="逾期天数" >
<el-table-column prop="days" label="状态" width="80">
<template slot-scope="scope">
<span style="color:red">{{scope.row.days}}</span>
<span :class="'finish-' + scope.row.finishState">{{ scope.row.finish }}</span>
</template>
</el-table-column>
<el-table-column prop="date" label="计划完成时间" >
<el-table-column prop="planEndDate" label="计划完成时间" width="100">
<template slot-scope="{row}">
{{ row.planEndDate | formatDate() }}
</template>
</el-table-column>
</el-table>
</div>
@ -56,23 +72,27 @@
</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">
<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"
<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 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 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>
<span style="font-size: 12px;"
:class="'finish-' + scope.row.finishState">{{ scope.row.finish }}</span>
</template>
</el-table-column>
</el-table>
@ -86,9 +106,12 @@
<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>
<div :class="pushNav==2?'active':''" @click="doPushNav(2,'完工项目')">({{ getPrjCateCount(2) }})</div>
<div :class="pushNav == 0 ? 'active' : ''" @click="doPushNav(0, '在建项目')">在建项目({{
getPrjCateCount(0) }})</div>
<div :class="pushNav == 1 ? 'active' : ''" @click="doPushNav(1, '拟建项目')">拟建项目({{
getPrjCateCount(1) }})</div>
<div :class="pushNav == 2 ? 'active' : ''" @click="doPushNav(2, '完工项目')">完工项目({{
getPrjCateCount(2) }})</div>
</div>
<el-row>
<el-col :span="8">
@ -103,23 +126,31 @@
</div>
</el-col>
<el-col :span="16">
<staff-survey-chart :height="220" unit=" " :data="pushData" :width="140"></staff-survey-chart>
<staff-survey-chart :height="220" unit=" " :data="pushData"
:width="140"></staff-survey-chart>
</el-col>
</el-row>
</el-col>
<el-col :span="12" style="position: relative;">
<div class="glr-title" style="margin-top:10px;color:#4DDEDF">在建项目节点明细</div>
<img src="images/icon2001.png" style="position: absolute;cursor: pointer;right: 12px;top: 12px;" @click="showBuildNodeDlg">
<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>
{{ 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;">
<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 ">
<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>
@ -130,10 +161,12 @@
</tr>
</table>
<div v-else style="text-align: center;">
<img src="images/nodata.png" style="width: 140px;" v-show="buildNodeLoad" >
<img src="images/nodata.png" style="width: 140px;"
v-show="buildNodeLoad">
<div style="text-align: center;color:#ccc">暂无数据</div>
</div>
</div></div>
</div>
</div>
</template>
<div v-else style="text-align: center;">
<img src="images/nodata.png" style="width: 140px;" v-show="buildNodeLoad">
@ -154,7 +187,8 @@
<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">
<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>
@ -162,42 +196,60 @@
</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 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
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" style="flex-grow: 1;max-height: 270px;overflow: auto;width: calc(100% - 4px);margin-top:8px;">
<div class="col-2 scroll"
style="flex-grow: 1;max-height: 270px;overflow: auto;width: calc(100% - 4px);margin-top:8px;">
<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>
<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></div>
<div class="div-text ">
<div>{{ scheduleInfo.actualNode }}</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>
<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>
<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>
<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>
<div class="div-text ">
<div>{{ scheduleInfo.acceptanceProgress }}</div>
</div>
</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>
<div class="div-text ">
<div>{{ scheduleInfo.planForNextWeek }}</div>
</div>
</template>
</div>
@ -210,15 +262,26 @@
</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">
<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>
<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-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>
<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>
</div>
<div class="modify-content" id="planContent">
<div class="modify-content-overflow" style="width: 2000px;">
@ -227,8 +290,10 @@
<el-table :data="planData1" style="width: 100%;background: transparent;"
height="265">
<el-table-column prop="name" class-name="text-left" label="项目名称" width="250px"> </el-table-column>
<el-table-column prop="node" class-name="text-left" label="项目节点" width="200px" > </el-table-column>
<el-table-column prop="name" class-name="text-left" label="项目名称"
width="250px"> </el-table-column>
<el-table-column prop="node" class-name="text-left" label="项目节点"
width="200px"> </el-table-column>
<el-table-column prop="planDate" label="计划完成时间"> </el-table-column>
<el-table-column prop="finishDate" label="实际完成时间"> </el-table-column>
<el-table-column prop="isLate" label="是否逾期"> </el-table-column>
@ -240,7 +305,8 @@
<el-table :data="planData2" style="width: 100%;background: transparent;"
height="265">
<el-table-column prop="name" class-name="text-left" label="项目名称" width="200px"> </el-table-column>
<el-table-column prop="name" class-name="text-left" label="项目名称"
width="200px"> </el-table-column>
<el-table-column prop="node" label="项目节点"> </el-table-column>
<el-table-column prop="planDate" label="计划完成时间"> </el-table-column>
<el-table-column prop="finishDate" label="实际完成时间"> </el-table-column>
@ -251,7 +317,14 @@
</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>
<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>
</div>
</div>
@ -293,13 +366,9 @@ export default {
return {
elKey: 0,
//
completionData:[
{name:"泾河新城荟锦坊二期",cnt:50,step:'施工阶段'},
],
completionData: [],
//
nodePLanData:[
{prj:'泾河新城荟锦坊二期',node:'施工阶段',days:60,date:'2023.12.31'},
],
nodePLanData: [],
assessData: [],
pushUrl: 'images/company_6.png',
pushNav: 0,
@ -367,6 +436,8 @@ export default {
this.$bus.$on("projectChange", res => {
this.prjInfo = res;
this.loadProjectConstructionProgress();
this.selectScheduledAlerts();
this.selectCompletionRate();
});
this.$bus.$on("loadProjects", prjs => {
this.projects = prjs;
@ -374,9 +445,34 @@ export default {
this.$bus.$on("deptChange", dept => {
this.dept = dept;
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||[];
})
},
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||[];
})
},
showBuildNodeDlg() {
this.$refs.buildNodeDlg.showDialog(this.projects, this.prjInfo);
},
@ -595,13 +691,16 @@ export default {
.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;
@ -609,27 +708,33 @@ export default {
.completion-item .sp-chart {
display: inline-block;
height: 30px;
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;
@ -637,26 +742,32 @@ export default {
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;
@ -664,6 +775,7 @@ export default {
color: #aaa;
}
.project-issue .sp-detail {
display: inline-block;
width: calc(100% - 75px);
@ -671,48 +783,60 @@ export default {
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 {
@ -721,21 +845,40 @@ export default {
border-left: solid 1px #2D5280;
}
&:last-child {
border-bottom: solid 1px #2D5280;
border-right: solid 1px #2D5280;
}
}
}
&.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;
}
}
}
}
</style>