姜玉琦 2024-05-05 21:44:11 +08:00
commit 17fb41850d
6 changed files with 160 additions and 63 deletions

View File

@ -98,6 +98,22 @@ const findFlowLabourGroupCountByApprove=(deptId,projectId)=> {
}) })
} }
//工程管理-分包单位占比
const groupFlowBySubDeptType=(data)=>{
return request({
url:'bgscreen/flow/groupFlowBySubDeptType',
method:'post',
data:data
})
}
const listFlowBySubDeptType=(data,pageNum,pageSize)=>{
return request({
url:`bgscreen/flow/listFlowBySubDeptType?pageNum=${pageNum}&pageSize=${pageSize}`,
method:'post',
data:data
})
}
export default{ export default{
groupByCategory, groupByCategory,
@ -111,5 +127,7 @@ export default{
findFormDatasByProcInsId, findFormDatasByProcInsId,
listByCategory, listByCategory,
findFlowLabourList, findFlowLabourList,
findFlowLabourGroupCountByApprove findFlowLabourGroupCountByApprove,
groupFlowBySubDeptType,
listFlowBySubDeptType
} }

View File

@ -185,26 +185,39 @@
</enginChart> </enginChart>
</module-one-1-1> </module-one-1-1>
<module-one-2-1 label="劳务单位资质审批明细" style="position: relative;"> <module-one-2-1 label="劳务单位资质审批明细" style="position: relative;">
<div class="data-list3 scroll">
<table style=" border-collapse: collapse;"> <template v-if="dataList4.length > 0">
<tr class="tr-header"> <div class="data-list3 scroll">
<th>所属项目</th> <table style=" border-collapse: collapse;">
<th style="width:95px">所属总包单位</th> <tr class="tr-header">
<th>申请单位</th> <th>所属项目</th>
<th style="width:60px">所属时间</th> <th style="width:95px">所属总包单位</th>
<th style="width:30px">状态</th> <th>申请单位</th>
</tr> <th>分包类型</th>
<tr v-for="(it,idx) in dataList4" :key="idx"> <th style="width:40px">申请<br />时间</th>
<td>泾河智谷一期一标段</td> <th style="width:40px">状态</th>
<td>中国一冶集团有限公司</td> </tr>
<td>陕西凯德劳务建筑有限公司</td> <tr v-for="(it, idx) in dataList4" :key="idx">
<td>2024-3-4</td> <td>{{ it.businessKeyName }}</td>
<td> <td>{{ it.startDeptName }}</td>
<span v-if="idx<10"></span> <td>{{ it.deptName }}</td>
<span v-else style="color:green">行中</span> <td>{{ it.taskName }}</td>
</td> <td>{{ it.createTime | formatDate }}</td>
</tr> <td>
</table> <span v-if="!it.finishTime"></span>
<span v-else style="color:green">完成</span>
</td>
</tr>
</table>
</div>
<el-pagination layout="total,prev, pager, next"
@current-change="handleCurrentChange" :total="data4Page.total" :page-size="data4Page.pageSize"
:current-page.sync="data4Page.pageIndex" class="bg-pagination"></el-pagination>
</template>
<div v-else style="text-align: center;margin-top:100px;" class="div-no-data">
<img src="images/nodata.png" style="width: 120px;">
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
</div> </div>
</module-one-2-1> </module-one-2-1>
</el-col> </el-col>
@ -238,7 +251,12 @@ export default {
chart1Data: [], chart1Data: [],
elChart2: 0, elChart2: 0,
flowList: [], flowList: [],
dataList4:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] dataList4: [],
data4Page: {
total: 0,
pageSize: 10,
pageIndex: 1
}
}; };
}, },
@ -297,16 +315,51 @@ export default {
this.loadCostList(); this.loadCostList();
this.loadFlow(); this.loadFlow();
this.initChart2(); this.initChart2();
this.data4Page.pageIndex = 1;
this.loadFlowDataList();
},
handleCurrentChange(n) {
this.data4Page.pageIndex = n;
this.loadFlowDataList();
},
loadFlowDataList() {
let postData = {};
if (this.project && this.project.id > 0) {
postData.projectId = this.project.id;
} else {
postData.id = this.dept.id;
}
this.$api.flow.listFlowBySubDeptType(postData, this.data4Page.pageIndex, this.data4Page.pageSize).then(d => {
let data = d.rows || [];
this.dataList4 = data;
this.data4Page.total = d.total;
});
}, },
initChart2() { initChart2() {
let opt = { "tooltip": { "trigger": "item" }, "series": [{ "top": 10, "type": "pie", "radius": "60%", let postData = {};
"data": [{ "name": "未发起", "value": 6 }, if (this.project && this.project.id > 0) {
{ "name": " 审批中", "value": 4 }, postData.projectId = this.project.id;
{ "name": "审批通过", "value": 15 } } else {
], "label": { "alignTo": "edge", "edgeDistance": "10%", "color": "#fff", "formatter": "{name|{b}}\n{cnt|{c}}", "rich": { "cnt": { "fontSize": 10, "color": "#eee" } } } }] }; postData.id = this.dept.id;
if (this.$refs.chart2 && this.$refs.chart2.init) {
this.$refs.chart2.init(opt);
} }
this.$api.flow.groupFlowBySubDeptType(postData).then(d => {
let data = (d.data || []).map(it => {
return {
name: it.taskName,
value: it.taskId || 0
}
});
let opt = {
"tooltip": { "trigger": "item" }, "series": [{
"top": 10, "type": "pie", "radius": "60%",
"data": data, "label": { "alignTo": "edge", "edgeDistance": "10%", "color": "#fff", "formatter": "{name|{b}}\n{cnt|{c}}", "rich": { "cnt": { "fontSize": 10, "color": "#eee" } } }
}]
};
if (this.$refs.chart2 && this.$refs.chart2.init) {
this.$refs.chart2.init(opt);
}
});
}, },
loadFlow() { loadFlow() {
let ajaxs = [ let ajaxs = [
@ -423,7 +476,7 @@ export default {
th { th {
font-size: 14px; font-size: 14px;
color:#409eff; color: #409eff;
border: solid 1px #ffffff52; border: solid 1px #ffffff52;
line-height: 60px; line-height: 60px;
} }
@ -436,21 +489,25 @@ export default {
} }
} }
} }
.data-list3{
max-height: calc(100% - 40px); .data-list3 {
max-height: calc(100% - 70px);
overflow-y: auto; overflow-y: auto;
padding:4px; padding: 4px;
.tr-header{
th{ .tr-header {
color:#409eff; th {
color: #409eff;
} }
} }
td,th{
border: solid 1px #409eff8c; td,
padding: 0px 8px; th {
font-size:12px; border: solid 1px #409eff8c;
line-height: 20px; padding: 0px 8px;
} font-size: 12px;
line-height: 20px;
}
} }
.cost-sum { .cost-sum {
@ -489,10 +546,13 @@ export default {
.sum-table { .sum-table {
border-collapse: collapse; border-collapse: collapse;
th{
color:#409eff; th {
color: #409eff;
} }
td,th{
td,
th {
line-height: 30px; line-height: 30px;
border: solid 1px #409eff8c; border: solid 1px #409eff8c;
padding: 0px 8px; padding: 0px 8px;

View File

@ -611,12 +611,16 @@ export default {
}); });
}, },
qualityNavClick(n) { qualityNavClick(n) {
let dt1=this.$dt((+new Date())-30*24*3600*1000);
let dt2=this.$dt(new Date());
this.qualityNav = n; this.qualityNav = n;
if (n == 0) { if (n == 0) {
this.qualityNavTitle = "安全隐患总数"; this.qualityNavTitle = "安全隐患总数";
let postData = { let postData = {
deptId: this.deptInfo?.id || 0, deptId: this.deptInfo?.id || 0,
roleType: 0 roleType: 0,
startDate:this.$dt(dt1).format("YYYY-MM-DD"),
endDate:this.$dt(dt2).format("YYYY-MM-DD"),
}; };
this.$api.problemmodify.safetySummary(postData).then(d => { this.$api.problemmodify.safetySummary(postData).then(d => {
let tmps= (d || []).map(it => { let tmps= (d || []).map(it => {
@ -639,7 +643,9 @@ export default {
} else { } else {
let postData = { let postData = {
deptId: this.deptInfo?.id || 0, deptId: this.deptInfo?.id || 0,
roleType: 0 roleType: 0,
startDate:this.$dt(dt1).format("YYYY-MM-DD"),
endDate:this.$dt(dt2).format("YYYY-MM-DD"),
}; };
this.qualityNavTitle = "质量隐患总数"; this.qualityNavTitle = "质量隐患总数";
this.$api.problemmodify.qualitySummary(postData).then(d => { this.$api.problemmodify.qualitySummary(postData).then(d => {

View File

@ -120,13 +120,18 @@
<module-one-1-1 label="项目全景"> <module-one-1-1 label="项目全景">
<div class="photography-list"> <div class="photography-list">
<template v-if="photographyList && photographyList.length > 0"> <template v-if="photographyList && photographyList.length > 0">
<video controls class="photography-video"> <el-carousel height="100%" :autoplay="false">
<source :src="photographyList[0].videoUrl" type="video/mp4" /> <el-carousel-item v-for="(item, idx) in photographyList" :key="idx">
您的浏览器不支持Video标签 <video controls class="photography-video">
</video> <source :src="item.videoUrl" type="video/mp4" :key="item.videoUrl"/>
<div class="photography-list-title"> 您的浏览器不支持Video标签
{{ photographyList[0].videoDate }} </video>
</div> <div class="photography-list-title">
{{ item.videoDate }}
</div>
</el-carousel-item>
</el-carousel>
</template> </template>
<template v-else> <template v-else>
<div class="photography-list-nodata"> <div class="photography-list-nodata">
@ -1249,7 +1254,7 @@ export default {
return; return;
} }
let data = { let data = {
id:this.infoNav, id: this.infoNav,
subDeptId: this.dept.id || 0, subDeptId: this.dept.id || 0,
projectId: id || 0, projectId: id || 0,
attendanceTime: this.$dt(new Date()).format("YYYY-MM-DD"), attendanceTime: this.$dt(new Date()).format("YYYY-MM-DD"),
@ -1423,7 +1428,7 @@ export default {
this.infoNav = n; this.infoNav = n;
this.staffText = text; this.staffText = text;
this.loadAttendanceData(); this.loadAttendanceData();
if (n == 0 || n==1) { if (n == 0 || n == 1) {
this.surveyUrl = "images/survey_icon_4.png"; this.surveyUrl = "images/survey_icon_4.png";
} else { } else {
this.surveyUrl = "images/survey_icon_5.png"; this.surveyUrl = "images/survey_icon_5.png";
@ -1679,7 +1684,9 @@ export default {
width: calc(100% - 4px); width: calc(100% - 4px);
height: calc(100% - 26px); height: calc(100% - 26px);
padding-left: 1px; padding-left: 1px;
.el-carousel{
height: 100%;
}
.photography-video { .photography-video {
width: 100%; width: 100%;
height: calc(100% - 30px); height: calc(100% - 30px);

View File

@ -321,7 +321,7 @@ export default {
data() { data() {
return { return {
materialSealList: [], materialSealList: [],
selDate: "", selDate: [],
elKey: 0, elKey: 0,
materialSealEl: 0, materialSealEl: 0,
elSummaryKey: 0, elSummaryKey: 0,
@ -420,6 +420,9 @@ export default {
this.init(); this.init();
}, },
mounted() { mounted() {
let dt1=this.$dt((+new Date())-30*24*3600*1000);
let dt2=this.$dt(new Date());
this.selDate=[dt1,dt2];
this.$bus.$on( this.$bus.$on(
"loadProjects", "loadProjects",
debounce((prjs) => { debounce((prjs) => {

View File

@ -397,7 +397,7 @@ export default {
data() { data() {
return { return {
dictWorkTrainDataType: [], dictWorkTrainDataType: [],
selDate: '', selDate: [],
elSummaryKey: 0, elSummaryKey: 0,
elSummaryPrjKey: 0, elSummaryPrjKey: 0,
elKey: 0, elKey: 0,
@ -483,6 +483,9 @@ export default {
}); });
}, },
mounted() { mounted() {
let dt1=this.$dt((+new Date())-30*24*3600*1000);
let dt2=this.$dt(new Date());
this.selDate=[dt1,dt2];
this.$bus.$on("projectChange", debounce(res => { this.$bus.$on("projectChange", debounce(res => {
this.projectInfo = res; this.projectInfo = res;
this.doDeptChane(); this.doDeptChane();