update code
parent
837f3fe9e1
commit
bea8384839
|
@ -20,6 +20,7 @@
|
||||||
"less": "^4.1.3",
|
"less": "^4.1.3",
|
||||||
"less-loader": "^11.1.3",
|
"less-loader": "^11.1.3",
|
||||||
"lodash.debounce": "^4.0.8",
|
"lodash.debounce": "^4.0.8",
|
||||||
|
"lodash.throttle": "^4.1.1",
|
||||||
"logt": "^1.4.1",
|
"logt": "^1.4.1",
|
||||||
"nprogress": "0.2.0",
|
"nprogress": "0.2.0",
|
||||||
"vue": "^2.6.14",
|
"vue": "^2.6.14",
|
||||||
|
|
|
@ -13,7 +13,33 @@ const getProjectCheckingList=(deptId,projectId)=> {
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getProjectCheckingGroupFoChart=(deptId,projectId)=> {
|
||||||
|
return request({
|
||||||
|
url: `bgscreen/projectChecking/getProjectCheckingGroupFoChart?deptId=${deptId||0}&projectId=${projectId||0}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const groupCheckingByProjectId=(lvl,deptId,projectId)=> {
|
||||||
|
return request({
|
||||||
|
url: `bgscreen/projectChecking/groupCheckingByProjectId?lvl=${lvl}&deptId=${deptId||0}&projectId=${projectId||0}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const queryProjectCheckingList=(pageNum,pageSize,data)=> {
|
||||||
|
return request({
|
||||||
|
url: `bgscreen/projectChecking/queryProjectCheckingList??pageNum=${pageNum}&pageSize=${pageSize}`,
|
||||||
|
method: 'post',
|
||||||
|
data:data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export default{
|
export default{
|
||||||
getProjectCheckingList,
|
getProjectCheckingList,
|
||||||
getProjectCheckingView
|
getProjectCheckingView,
|
||||||
|
getProjectCheckingGroupFoChart,
|
||||||
|
groupCheckingByProjectId,
|
||||||
|
queryProjectCheckingList
|
||||||
}
|
}
|
|
@ -13,7 +13,16 @@ const getGroupByDataType=(deptId,projectId)=> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const queryWorkTrainList=(pageNum,pageSize,data)=> {
|
||||||
|
return request({
|
||||||
|
url: `bgscreen/workTrain/queryWorkTrainList?pageNum=${pageNum}&pageSize=${pageSize}`,
|
||||||
|
method: 'post',
|
||||||
|
data:data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export default{
|
export default{
|
||||||
getWorkTrainList,
|
getWorkTrainList,
|
||||||
getGroupByDataType
|
getGroupByDataType,
|
||||||
|
queryWorkTrainList
|
||||||
}
|
}
|
|
@ -46,7 +46,7 @@
|
||||||
:color="scope.$index < 3 && +scope.row.id > 0 ? '#f05e35' : '#6ab9fe'"></idle-list-chart>
|
:color="scope.$index < 3 && +scope.row.id > 0 ? '#f05e35' : '#6ab9fe'"></idle-list-chart>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="id" label="隐患数" width="60" align="center">
|
<el-table-column prop="id" label="隐患数" width="70" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div>{{ scope.row.id }} </div>
|
<div>{{ scope.row.id }} </div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -156,7 +156,9 @@
|
||||||
</module-one-1-1>
|
</module-one-1-1>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<module-one-3-1 label="举牌验收" class="scroll">
|
|
||||||
|
<projectChecking></projectChecking>
|
||||||
|
<!--
|
||||||
<div class="nav-info" style="padding:20px 20px 10px">
|
<div class="nav-info" style="padding:20px 20px 10px">
|
||||||
<span>
|
<span>
|
||||||
<span class="nav-label">首次验收:</span>
|
<span class="nav-label">首次验收:</span>
|
||||||
|
@ -193,8 +195,8 @@
|
||||||
<div class="row-5" @click="doShowChecking(it)">
|
<div class="row-5" @click="doShowChecking(it)">
|
||||||
验收描述:{{it.intro}}
|
验收描述:{{it.intro}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>-->
|
||||||
</module-one-3-1>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
@ -220,10 +222,11 @@ import checkDetectionDlg from './quality/checkDetectionDlg.vue'
|
||||||
import measuredDlg from './quality/measuredDlg.vue'
|
import measuredDlg from './quality/measuredDlg.vue'
|
||||||
import materialSealChart from './quality/materialSealChart.vue'
|
import materialSealChart from './quality/materialSealChart.vue'
|
||||||
import materialSealListDlg from './quality/materialSealListDlg.vue'
|
import materialSealListDlg from './quality/materialSealListDlg.vue'
|
||||||
|
import projectChecking from './quality/projectChecking.vue'
|
||||||
import debounce from 'lodash.debounce'
|
import debounce from 'lodash.debounce'
|
||||||
export default {
|
export default {
|
||||||
components:{
|
components:{
|
||||||
materialSealListDlg, materialSealChart, ProblemmodifyDetail,showCheckingDlg,materialSealDetialDlg,checkDetectionDlg,measuredDlg
|
materialSealListDlg, materialSealChart, ProblemmodifyDetail,showCheckingDlg,materialSealDetialDlg,checkDetectionDlg,measuredDlg,projectChecking
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -483,7 +486,7 @@ export default {
|
||||||
})
|
})
|
||||||
this.elSummaryPrjKey++;
|
this.elSummaryPrjKey++;
|
||||||
});
|
});
|
||||||
this.doProjectChecking();
|
//this.doProjectChecking();
|
||||||
},
|
},
|
||||||
doMeasuredNav(n,t){
|
doMeasuredNav(n,t){
|
||||||
this.measuredNav=n;
|
this.measuredNav=n;
|
||||||
|
@ -523,10 +526,10 @@ export default {
|
||||||
this.acceptanceData=d.rows;
|
this.acceptanceData=d.rows;
|
||||||
});
|
});
|
||||||
//举牌验收统计
|
//举牌验收统计
|
||||||
this.$api.projectChecking.getProjectCheckingView(this.dept?.id||0,this.projectInfo?.id||0).then(d=>{
|
// this.$api.projectChecking.getProjectCheckingView(this.dept?.id||0,this.projectInfo?.id||0).then(d=>{
|
||||||
this.acceptanceDataView.sum=d.data.sum;
|
// this.acceptanceDataView.sum=d.data.sum;
|
||||||
this.acceptanceDataView.okSum=d.data.okSum;
|
// this.acceptanceDataView.okSum=d.data.okSum;
|
||||||
});
|
// });
|
||||||
},
|
},
|
||||||
init(){
|
init(){
|
||||||
this.localStorage = JSON.parse(localStorage.getItem("data1"))
|
this.localStorage = JSON.parse(localStorage.getItem("data1"))
|
||||||
|
@ -753,37 +756,6 @@ export default {
|
||||||
padding:0px 5px;
|
padding:0px 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.material-seal-list{
|
|
||||||
.material-seal-item{
|
|
||||||
padding:8px;
|
|
||||||
display: flex;
|
|
||||||
border-bottom: solid 1px #fff;
|
|
||||||
box-shadow: inset 7px 0px 11px 5px rgb(36 131 167 / 70%);
|
|
||||||
&:last-child{
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
.material-seal-left{
|
|
||||||
width:40%;
|
|
||||||
}
|
|
||||||
.material-seal-right{
|
|
||||||
width:60%;
|
|
||||||
padding-left:12px;
|
|
||||||
line-height: 24px;
|
|
||||||
img{
|
|
||||||
width: 8px;
|
|
||||||
position: relative;;
|
|
||||||
top:3px;
|
|
||||||
}
|
|
||||||
.sp-lbl{
|
|
||||||
color: aquamarine;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
.div-text{
|
|
||||||
margin-left:24px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
</style>
|
</style>
|
|
@ -72,7 +72,10 @@
|
||||||
</module-one-3-1>
|
</module-one-3-1>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<module-one-1-1 :label="'专项培训('+WorkTrainCnt1+')'">
|
<module-one-1-1 :label="'专项培训('+WorkTrainCnt1+')'" style="position: relative;">
|
||||||
|
<img src="images/icon2001.png"
|
||||||
|
style="position: absolute;cursor: pointer;right: 20px;top: 13px;z-index: 9;"
|
||||||
|
@click="doShowWorkTrain(0)">
|
||||||
<enginChart ref="chart3" :height="300"></enginChart>
|
<enginChart ref="chart3" :height="300"></enginChart>
|
||||||
<!--
|
<!--
|
||||||
<div style="padding:10px" class="train-list scroll">
|
<div style="padding:10px" class="train-list scroll">
|
||||||
|
@ -106,7 +109,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>-->
|
</div>-->
|
||||||
</module-one-1-1>
|
</module-one-1-1>
|
||||||
<module-one-1-1 :label="'应急演练('+WorkTrainCnt2+')'">
|
<module-one-1-1 :label="'应急演练('+WorkTrainCnt2+')'" style="position: relative;">
|
||||||
|
<img src="images/icon2001.png"
|
||||||
|
style="position: absolute;cursor: pointer;right: 20px;top: 13px;z-index: 9;"
|
||||||
|
@click="doShowWorkTrain(1)">
|
||||||
<enginChart ref="chart4" :height="300"></enginChart>
|
<enginChart ref="chart4" :height="300"></enginChart>
|
||||||
<!--
|
<!--
|
||||||
<div style="padding:10px" class="train-list scroll">
|
<div style="padding:10px" class="train-list scroll">
|
||||||
|
@ -287,6 +293,7 @@
|
||||||
<AttendanceDetailDialog ref="attDetailDlg"></AttendanceDetailDialog>
|
<AttendanceDetailDialog ref="attDetailDlg"></AttendanceDetailDialog>
|
||||||
<projectInsuranceDlg ref="insDlg"></projectInsuranceDlg>
|
<projectInsuranceDlg ref="insDlg"></projectInsuranceDlg>
|
||||||
<JobWorkerDialog ref="jobWorkerdlg"></JobWorkerDialog>
|
<JobWorkerDialog ref="jobWorkerdlg"></JobWorkerDialog>
|
||||||
|
<workTrainListDlg ref="workTrainListDlg"></workTrainListDlg>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -306,15 +313,17 @@ import AttendanceDetailDialog from './components/AttendanceDetailDialog.vue'
|
||||||
import JobWorkerDialog from './components/JobWorkerDialog.vue'
|
import JobWorkerDialog from './components/JobWorkerDialog.vue'
|
||||||
import debounce from 'lodash.debounce'
|
import debounce from 'lodash.debounce'
|
||||||
import enginChart from './engin/enginChart.vue'
|
import enginChart from './engin/enginChart.vue'
|
||||||
|
import workTrainListDlg from './safe/workTrainListDlg.vue'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
worktrainDlg,
|
worktrainDlg,
|
||||||
projectSpecialDlg,
|
projectSpecialDlg,
|
||||||
ProblemmodifyDetail,AttendanceDetailDialog,
|
ProblemmodifyDetail,AttendanceDetailDialog,
|
||||||
projectInsuranceDlg,JobWorkerDialog,enginChart
|
projectInsuranceDlg,JobWorkerDialog,enginChart,workTrainListDlg
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
dictWorkTrainDataType:[],
|
||||||
selDate:'',
|
selDate:'',
|
||||||
elSummaryKey:0,
|
elSummaryKey:0,
|
||||||
elSummaryPrjKey:0,
|
elSummaryPrjKey:0,
|
||||||
|
@ -399,6 +408,9 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.init();
|
this.init();
|
||||||
|
this.$api.dict('work_train_data_type').then(d => {
|
||||||
|
this.dictWorkTrainDataType = d || [];
|
||||||
|
});
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.$bus.$on("projectChange", debounce(res => {
|
this.$bus.$on("projectChange", debounce(res => {
|
||||||
|
@ -432,10 +444,19 @@ export default {
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
doShowWorkTrain(type){
|
||||||
|
this.$refs.workTrainListDlg.showDialog({
|
||||||
|
type:type,
|
||||||
|
deptId:this.dept.id||0,
|
||||||
|
projectId:this.projectInfo?.id||0,
|
||||||
|
prj:this.projectInfo||{},
|
||||||
|
dicts:this.dictWorkTrainDataType.filter(d=>d.cssClass==(type==0?'a':'b'))
|
||||||
|
});
|
||||||
|
},
|
||||||
doShowAttendanceDetail(){
|
doShowAttendanceDetail(){
|
||||||
let data={
|
let data={
|
||||||
deptId:this.dept.id||0,
|
deptId:this.dept.id||0,
|
||||||
projectId:this.project.id||0,
|
projectId:this.projectInfo?.id||0,
|
||||||
attendanceTime: this.$dt(new Date()).format("YYYY-MM-DD")
|
attendanceTime: this.$dt(new Date()).format("YYYY-MM-DD")
|
||||||
}
|
}
|
||||||
if(this.infoNav == 1){
|
if(this.infoNav == 1){
|
||||||
|
@ -511,12 +532,11 @@ export default {
|
||||||
radius: '60%',
|
radius: '60%',
|
||||||
data: this.WorkTrainChart1,
|
data: this.WorkTrainChart1,
|
||||||
label: {
|
label: {
|
||||||
|
alignTo:'edge',
|
||||||
|
edgeDistance: "10%",
|
||||||
color: "#fff",
|
color: "#fff",
|
||||||
formatter: '{name|{b}}\n{cnt|{c}}',
|
formatter: '{name|{b}}\n{cnt|{c}}',
|
||||||
rich: {
|
rich: {
|
||||||
name:{
|
|
||||||
|
|
||||||
},
|
|
||||||
cnt: {
|
cnt: {
|
||||||
fontSize: 10,
|
fontSize: 10,
|
||||||
color: '#eee'
|
color: '#eee'
|
||||||
|
|
|
@ -0,0 +1,524 @@
|
||||||
|
<template>
|
||||||
|
<div class="project-quality-checking">
|
||||||
|
<module-one-1-1 label="举牌验收">
|
||||||
|
<div class="checking-row1" style="position: relative;height: 310px;overflow: hidden;">
|
||||||
|
<div class="checking-chart-nav">
|
||||||
|
<span class="chart-nv-item" @click="showChart1 = true" :class="showChart1 ? 'active' : ''">常规验收</span>
|
||||||
|
<span class="chart-nv-item" @click="showChart1 = false" :class="!showChart1 ? 'active' : ''">隐蔽验收</span>
|
||||||
|
</div>
|
||||||
|
<div v-if="chart">
|
||||||
|
<enginChart :class="showChart1 ? 'show-chart' : 'hide-chart'" ref="chart1" :height="300"></enginChart>
|
||||||
|
<enginChart :class="!showChart1 ? 'show-chart' : 'hide-chart'" ref="chart2" :height="300"></enginChart>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</module-one-1-1>
|
||||||
|
<module-one-1-1 label="常规验收" class="scroll checking-row2" style="position: relative;">
|
||||||
|
<img src="images/icon2001.png" style="position: absolute;cursor: pointer;right: 12px;top: 12px;"
|
||||||
|
@click="doShowCheckingListDlg(1)">
|
||||||
|
<div class="checking-group-nav warning-info-title" style="padding-left: 20px;">
|
||||||
|
<div class="nav-item" :class="nav1 == it.dictValue ? 'active' : ''" @click="doQueryGroup(it.dictValue, 'a')"
|
||||||
|
v-for="(it, idx) in dict1" :key="it.dictValue">{{ it.dictLabel }}</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="!projectInfo || projectInfo.id == 0">
|
||||||
|
<div class="idle-list problemmodify_list" style="padding:0px 10px">
|
||||||
|
<el-table style="width: 100%" ref="wgzp" :row-style="rowStyle" :data="dataList1" height="233"
|
||||||
|
class="el-table">
|
||||||
|
|
||||||
|
<el-table-column type="index" width="40">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div :class="scope.$index < 3 && +scope.row.value > 0 ? 'idle-list-color' : ''">
|
||||||
|
{{ scope.$index + 1 }} </div>
|
||||||
|
</template></el-table-column>
|
||||||
|
<el-table-column prop="name" label="项目名称" class-name="text-left" :show-overflow-tooltip="true">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="id" label="验收数量" width="80" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div>{{ scope.row.count }} </div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="id" label="占比" width="100" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div>{{ scope.row.percent?scope.row.percent.toFixed(2)+'%':'' }} </div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else style="padding:0px 2px;">
|
||||||
|
<div v-if="dataList1.length == 0" style="text-align: center;padding-top:20px" 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 v-else class="acceptance-list scroll" >
|
||||||
|
<div class="acceptance-item" v-for="(it, idx) in dataList1" :key="idx" style="cursor: pointer;">
|
||||||
|
<div class="row-1">
|
||||||
|
<div class="div-img">
|
||||||
|
<el-image :src="getProfileImage(it.mainImage)" :preview-src-list="getBigProfileImage(it)" />
|
||||||
|
</div>
|
||||||
|
<div class="div-text" style="width: 65%;" @click="doShowChecking(it)">
|
||||||
|
<div class="row-3">
|
||||||
|
<div v-if="it.checkResult == '1'" class="sp-lbl">验收合格</div>
|
||||||
|
<div v-if="it.checkResult == '2'" class="sp-err">验收不合格</div>
|
||||||
|
<div class="sp-date">{{ it.checkingDate }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row-3">
|
||||||
|
<span class="sp-label">项目:</span>
|
||||||
|
<span class="sp-text">{{ it.projectName }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="row-3">
|
||||||
|
<span class="sp-label">区域:</span>
|
||||||
|
<span class="sp-text">{{ it.checkWorkingPosition }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row-5" @click="doShowChecking(it)">
|
||||||
|
验收描述:{{ it.intro }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</module-one-1-1>
|
||||||
|
<module-one-1-1 label="隐蔽验收" class="scroll checking-row3" style="position: relative;">
|
||||||
|
<img src="images/icon2001.png" style="position: absolute;cursor: pointer;right: 12px;top: 12px;"
|
||||||
|
@click="doShowCheckingListDlg(2)">
|
||||||
|
<div class="checking-group-nav warning-info-title" style="padding-left: 20px;">
|
||||||
|
<div class="nav-item" :class="nav2 == it.dictValue ? 'active' : ''" @click="doQueryGroup(it.dictValue, 'b')"
|
||||||
|
v-for="(it, idx) in dict2" :key="it.dictValue">{{ it.dictLabel }}</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="!projectInfo || projectInfo.id == 0">
|
||||||
|
<div class="idle-list problemmodify_list" style="padding:0px 10px">
|
||||||
|
<el-table style="width: 100%" ref="wgzp" :row-style="rowStyle" :data="dataList2" height="233"
|
||||||
|
class="el-table">
|
||||||
|
|
||||||
|
<el-table-column type="index" width="40">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div :class="scope.$index < 3 && +scope.row.value > 0 ? 'idle-list-color' : ''">
|
||||||
|
{{ scope.$index + 1 }} </div>
|
||||||
|
</template></el-table-column>
|
||||||
|
<el-table-column prop="name" label="项目名称" class-name="text-left" :show-overflow-tooltip="true">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="id" label="验收数量" width="80" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div>{{ scope.row.count }} </div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="id" label="占比" width="100" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div>{{ scope.row.percent?scope.row.percent.toFixed(2)+'%':'' }} </div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else style="padding:0px 2px;">
|
||||||
|
<div v-if="dataList2.length == 0" style="text-align: center;padding-top:20px" 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 v-else class="acceptance-list scroll" >
|
||||||
|
<div class="acceptance-item" v-for="(it, idx) in dataList2" :key="idx" style="cursor: pointer;">
|
||||||
|
<div class="row-1">
|
||||||
|
<div class="div-img">
|
||||||
|
<el-image :src="getProfileImage(it.mainImage)" :preview-src-list="getBigProfileImage(it)" />
|
||||||
|
</div>
|
||||||
|
<div class="div-text" style="width: 65%;" @click="doShowChecking(it)">
|
||||||
|
<div class="row-3">
|
||||||
|
<div v-if="it.checkResult == '1'" class="sp-lbl">验收合格</div>
|
||||||
|
<div v-if="it.checkResult == '2'" class="sp-err">验收不合格</div>
|
||||||
|
<div class="sp-date">{{ it.checkingDate }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row-3">
|
||||||
|
<span class="sp-label">项目:</span>
|
||||||
|
<span class="sp-text">{{ it.projectName }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="row-3">
|
||||||
|
<span class="sp-label">区域:</span>
|
||||||
|
<span class="sp-text">{{ it.checkWorkingPosition }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row-5" @click="doShowChecking(it)">
|
||||||
|
验收描述:{{ it.intro }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</module-one-1-1>
|
||||||
|
<showCheckingDlg ref="checkDlg"></showCheckingDlg>
|
||||||
|
<listDlg ref="listDlg"></listDlg>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import throttle from 'lodash.throttle'
|
||||||
|
import enginChart from '../engin/enginChart.vue'
|
||||||
|
import showCheckingDlg from './showCheckingDlg.vue'
|
||||||
|
import listDlg from './projectCheckingListDlg.vue'
|
||||||
|
export default {
|
||||||
|
name: 'JhbigscreenProjectChecking',
|
||||||
|
components: {
|
||||||
|
enginChart, showCheckingDlg,listDlg
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
rowStyle: {
|
||||||
|
color: '#B6CFEF',
|
||||||
|
fontSize: '12px',
|
||||||
|
height: '32px'
|
||||||
|
},
|
||||||
|
showChart1: true,
|
||||||
|
dept: null,
|
||||||
|
projectInfo: null,
|
||||||
|
dict1: [],
|
||||||
|
dict2: [],
|
||||||
|
nav1: 1,
|
||||||
|
nav2: 1,
|
||||||
|
chart: true,
|
||||||
|
dataList1: [],
|
||||||
|
dataList2: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.$api.dict('project_checking_data_type_lvl2').then(d => {
|
||||||
|
let tmps = d || [];
|
||||||
|
this.dict1 = tmps.filter(it => it.cssClass == 'a');
|
||||||
|
this.dict2 = tmps.filter(it => it.cssClass == 'b');
|
||||||
|
if (this.dict1.length > 0) {
|
||||||
|
this.nav1 = this.dict1[0].dictValue;
|
||||||
|
this.doQueryGroup(this.nav1, "a");
|
||||||
|
}
|
||||||
|
if (this.dict2.length > 0) {
|
||||||
|
this.nav2 = this.dict2[0].dictValue;
|
||||||
|
this.doQueryGroup(this.nav2, "b");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$bus.$on("projectChange", throttle((res) => {
|
||||||
|
this.projectInfo = res;
|
||||||
|
this.loadData();
|
||||||
|
}));
|
||||||
|
this.$bus.$on("deptChange", throttle((dept) => {
|
||||||
|
this.dept = dept;
|
||||||
|
this.loadData();
|
||||||
|
}));
|
||||||
|
if (this.$root.hasInitHeader) {
|
||||||
|
this.initMe();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
doShowCheckingListDlg(lvl1){
|
||||||
|
this.$refs.listDlg.showDialog({
|
||||||
|
lvl1:lvl1,
|
||||||
|
deptId:this.dept?.id || 0,
|
||||||
|
projectInfo:this.projectInfo,
|
||||||
|
dicts:lvl1==1?this.dict1:this.dict2
|
||||||
|
});
|
||||||
|
},
|
||||||
|
doShowChecking(it) {
|
||||||
|
this.$refs.checkDlg.showDialog(it);
|
||||||
|
},
|
||||||
|
// 获取图片映射
|
||||||
|
getProfileImage(url) {
|
||||||
|
if (url) {
|
||||||
|
return '/jhapi' + url + ".min.jpg";
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
},
|
||||||
|
getBigProfileImage(it) {
|
||||||
|
if (it.imageUrls) {
|
||||||
|
let tmps = it.imageUrls.split(",").filter(d => d).map(it => {
|
||||||
|
return '/jhapi' + it;
|
||||||
|
})
|
||||||
|
if (tmps.length > 0) {
|
||||||
|
return tmps;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (it.mainImage && it.mainImage.trim()) {
|
||||||
|
return ['/jhapi' + it.mainImage];
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
doQueryGroup(nav, t) {
|
||||||
|
if (t == 'a') {
|
||||||
|
this.nav1 = nav;
|
||||||
|
} else {
|
||||||
|
this.nav2 = nav;
|
||||||
|
}
|
||||||
|
if (!this.projectInfo || this.projectInfo.id == 0) {
|
||||||
|
this.loadGroupData(nav, t);
|
||||||
|
} else {
|
||||||
|
this.queryDataList(nav, t);
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
queryDataList(nav, t) {
|
||||||
|
let postData = {
|
||||||
|
projectId: this.projectInfo.id,
|
||||||
|
dataTypeLvl2: nav
|
||||||
|
}
|
||||||
|
this.$api.projectChecking.queryProjectCheckingList(1, 20, postData).then(d => {
|
||||||
|
if (t == "a") {
|
||||||
|
this.dataList1 = d.rows || [];
|
||||||
|
} else {
|
||||||
|
this.dataList2 = d.rows || [];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
loadGroupData(nav, t) {
|
||||||
|
this.$api.projectChecking.groupCheckingByProjectId(nav, this.dept?.id || 0, this.projectInfo?.id || 0).then(d => {
|
||||||
|
let tmps = (d.data || []).map(it => {
|
||||||
|
return {
|
||||||
|
name: it.projectName,
|
||||||
|
count: it.id || 0,
|
||||||
|
percent: 0
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let sum = 0;
|
||||||
|
tmps.forEach(it => {
|
||||||
|
sum += it.count;
|
||||||
|
})
|
||||||
|
if (sum > 0) {
|
||||||
|
tmps.forEach(it => {
|
||||||
|
it.percent = it.count * 100.0 / sum
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (t == "a") {
|
||||||
|
this.dataList1 = tmps;
|
||||||
|
} else {
|
||||||
|
this.dataList2 = tmps;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
initMe() {
|
||||||
|
this.projectInfo = this.$root.project || {};
|
||||||
|
this.dept = this.$root.dept || {};
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
loadData: throttle(function () {
|
||||||
|
this.doGetProjectCheckingChart();
|
||||||
|
if (this.dict1.length > 0) {
|
||||||
|
this.nav1 = this.dict1[0].dictValue;
|
||||||
|
this.doQueryGroup(this.nav1, "a");
|
||||||
|
}
|
||||||
|
if (this.dict2.length > 0) {
|
||||||
|
this.nav2 = this.dict2[0].dictValue;
|
||||||
|
this.doQueryGroup(this.nav2, "b");
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
initChartData(d) {
|
||||||
|
let tmp1 = (d.data || []).filter(it => it.checkType == 'a').map(it => {
|
||||||
|
return { name: it.mainImage, value: it.id || 0 };
|
||||||
|
});
|
||||||
|
let tmp2 = (d.data || []).filter(it => it.checkType == 'b').map(it => {
|
||||||
|
return { name: it.mainImage, value: it.id || 0 };
|
||||||
|
});
|
||||||
|
let opt = {
|
||||||
|
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item'
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
top: 10,
|
||||||
|
type: 'pie',
|
||||||
|
radius: '60%',
|
||||||
|
data: tmp1,
|
||||||
|
label: {
|
||||||
|
alignTo: 'edge',
|
||||||
|
edgeDistance: "10%",
|
||||||
|
color: "#fff",
|
||||||
|
formatter: '{name|{b}}\n{cnt|{c}}',
|
||||||
|
rich: {
|
||||||
|
cnt: {
|
||||||
|
fontSize: 10,
|
||||||
|
color: '#eee',
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
if (this.$refs.chart1 && this.$refs.chart1.init) {
|
||||||
|
this.$refs.chart1.init(opt);
|
||||||
|
}
|
||||||
|
let opt2 = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item'
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
top: 10,
|
||||||
|
type: 'pie',
|
||||||
|
radius: '60%',
|
||||||
|
data: tmp2,
|
||||||
|
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(opt2);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
doGetProjectCheckingChart() {
|
||||||
|
this.chart = false;
|
||||||
|
this.$api.projectChecking.getProjectCheckingGroupFoChart(this.dept?.id || 0, this.projectInfo?.id || 0).then(d => {
|
||||||
|
this.chart = true;
|
||||||
|
setTimeout(() => {
|
||||||
|
this.initChartData(d);
|
||||||
|
}, 400);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.project-quality-checking {
|
||||||
|
.checking-row1 {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.checking-chart-nav {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
top: 12px;
|
||||||
|
text-align: center;
|
||||||
|
z-index: 10;
|
||||||
|
|
||||||
|
.chart-nv-item {
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 4px 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
background-color: #fff;
|
||||||
|
color: #000;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background-color: #68BBC4;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
border-radius: 4px 0px 0px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-radius: 0px 4px 4px 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.engin-chart1 {
|
||||||
|
&.hide-chart {
|
||||||
|
left: -100000px;
|
||||||
|
top: -100000px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.show-chart {
|
||||||
|
position: relative;
|
||||||
|
left: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
&.show-chart {
|
||||||
|
top: -300px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.problemmodify_list {
|
||||||
|
&.idle-list{
|
||||||
|
.el-table__body .el-table__row {
|
||||||
|
line-height: 36px;
|
||||||
|
height: 36px !important;
|
||||||
|
}
|
||||||
|
.el-table td{
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-seal-list {
|
||||||
|
.material-seal-item {
|
||||||
|
padding: 8px;
|
||||||
|
display: flex;
|
||||||
|
border-bottom: solid 1px #fff;
|
||||||
|
box-shadow: inset 7px 0px 11px 5px rgb(36 131 167 / 70%);
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-seal-left {
|
||||||
|
width: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-seal-right {
|
||||||
|
width: 60%;
|
||||||
|
padding-left: 12px;
|
||||||
|
line-height: 24px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 8px;
|
||||||
|
position: relative;
|
||||||
|
;
|
||||||
|
top: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sp-lbl {
|
||||||
|
color: aquamarine;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.div-text {
|
||||||
|
margin-left: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
.acceptance-list{
|
||||||
|
margin-top: 0px;
|
||||||
|
max-height: 230px;
|
||||||
|
overflow-y: auto;
|
||||||
|
.acceptance-item{
|
||||||
|
&:first-child{
|
||||||
|
margin-top:0px;
|
||||||
|
}
|
||||||
|
.row-3{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,222 @@
|
||||||
|
<template>
|
||||||
|
<MyDialog v-if="show" v-model="show" width="1600px" height="800px" class="project-checking-list-dialog">
|
||||||
|
<template slot="title">{{ lvl1 == 1 ? '常规验收' : '隐蔽验收' }}{{ prjName ? ' - ' + prjName : '' }}</template>
|
||||||
|
<div class="head-title-tab" style="padding: 10px 0px;max-width: unset;">
|
||||||
|
<div v-for="(it, idx) in dicts" :key="idx" :class="nav == it.dictValue ? 'head-nav active' : 'head-nav'" @click="doNav(it.dictValue)"
|
||||||
|
>{{ it.dictLabel }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="data-list">
|
||||||
|
<div v-if="tableData.length == 0" style="text-align: center;padding-top:200px" 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 v-else class="acceptance-list" >
|
||||||
|
<div class="acceptance-item" v-for="(it, idx) in tableData" :key="idx" style="cursor: pointer;">
|
||||||
|
<div class="row-1">
|
||||||
|
<div class="div-img">
|
||||||
|
<el-image :src="getProfileImage(it.mainImage,true)" :preview-src-list="getBigProfileImage(it)" />
|
||||||
|
</div>
|
||||||
|
<div class="div-text" style="width: 65%;" @click="doShowChecking(it)">
|
||||||
|
<div class="row-3">
|
||||||
|
<div v-if="it.checkResult == '1'" class="sp-lbl">验收合格</div>
|
||||||
|
<div v-if="it.checkResult == '2'" class="sp-err">验收不合格</div>
|
||||||
|
<div class="sp-date">{{ it.checkingDate }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row-3">
|
||||||
|
<span class="sp-label">项目:</span>
|
||||||
|
<span class="sp-text" :title="it.projectName">
|
||||||
|
<span class="span-text">{{ it.projectName }}</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="row-3">
|
||||||
|
<span class="sp-label">区域:</span>
|
||||||
|
<span class="sp-text" :title="it.checkWorkingPosition">
|
||||||
|
<span class="span-text">{{ it.checkWorkingPosition }}</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row-5" @click="doShowChecking(it)">
|
||||||
|
<div class="row-5-txt"> 验收描述:{{ it.intro }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-pagination layout="total,prev, pager, next" :hide-on-single-page="true" @current-change="handleCurrentChange"
|
||||||
|
:total="total" :page-size="size" :current-page.sync="index" class="bg-pagination"></el-pagination>
|
||||||
|
<showCheckingDlg ref="checkDlg"></showCheckingDlg>
|
||||||
|
</MyDialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import showCheckingDlg from './showCheckingDlg.vue'
|
||||||
|
import MyDialog from '../components/MyDialog'
|
||||||
|
export default {
|
||||||
|
name: 'JhbigscreenProjectCheckingListDlg',
|
||||||
|
components: {
|
||||||
|
MyDialog,showCheckingDlg
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show:false,
|
||||||
|
tableData: [],
|
||||||
|
nav: 1,
|
||||||
|
index: 1,
|
||||||
|
size: 9,
|
||||||
|
deptId: 0,
|
||||||
|
projectId: 0,
|
||||||
|
total: 0,
|
||||||
|
prjName: '',
|
||||||
|
lvl1:1,
|
||||||
|
dicts: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
doShowChecking(it) {
|
||||||
|
this.$refs.checkDlg.showDialog(it);
|
||||||
|
},
|
||||||
|
getBigProfileImage(it) {
|
||||||
|
if (it.imageUrls) {
|
||||||
|
let tmps = it.imageUrls.split(",").filter(d => d).map(it => {
|
||||||
|
return '/jhapi' + it;
|
||||||
|
})
|
||||||
|
if (tmps.length > 0) {
|
||||||
|
return tmps;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (it.mainImage && it.mainImage.trim()) {
|
||||||
|
return ['/jhapi' + it.mainImage];
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
// 获取图片映射
|
||||||
|
getProfileImage(url, min) {
|
||||||
|
if (url) {
|
||||||
|
return '/jhapi' + url + (min ? ".min.jpg" : "");
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
},
|
||||||
|
handleCurrentChange(n) {
|
||||||
|
this.index = n;
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
doNav(n) {
|
||||||
|
this.nav = n;
|
||||||
|
this.index = 1;
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
showDialog(data) {
|
||||||
|
this.lvl1=data.lvl1;
|
||||||
|
this.dicts=data.dicts||[];
|
||||||
|
this.deptId=data.deptId;
|
||||||
|
this.projectId=data.projectInfo?.id||0;
|
||||||
|
if(data.projectInfo){
|
||||||
|
this.prjName=data.projectInfo.projectName||'';
|
||||||
|
}else{
|
||||||
|
this.projectName="";
|
||||||
|
}
|
||||||
|
this.nav = this.dicts.length > 0 ? this.dicts[0].dictValue : 0;
|
||||||
|
this.index = 1;
|
||||||
|
this.loadData();
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
loadData(){
|
||||||
|
let postData = {
|
||||||
|
dataTypeLvl2: this.nav
|
||||||
|
};
|
||||||
|
if(this.deptId>0){
|
||||||
|
postData.deptId=this.deptId;
|
||||||
|
}
|
||||||
|
if(this.projectId>0){
|
||||||
|
postData.projectId=this.projectId;
|
||||||
|
}
|
||||||
|
this.$api.projectChecking.queryProjectCheckingList(this.index, 9, postData).then(d => {
|
||||||
|
this.tableData=d.rows||[];
|
||||||
|
this.total=d.total;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.project-checking-list-dialog{
|
||||||
|
.popup-project-introduction-min {
|
||||||
|
transform: translateY(10vh);
|
||||||
|
.data-list{
|
||||||
|
margin-bottom: 8px;
|
||||||
|
.acceptance-list{
|
||||||
|
margin-top:12px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 33% 33% 33%;
|
||||||
|
grid-row-gap: 30px;
|
||||||
|
margin-left: -80px;
|
||||||
|
width: calc(100% + 100px);
|
||||||
|
max-height: 630px;
|
||||||
|
.acceptance-item{
|
||||||
|
display: inline-block;
|
||||||
|
height: 155px;
|
||||||
|
border: solid 1px #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-left: 80px;
|
||||||
|
.row-1{
|
||||||
|
.div-img{
|
||||||
|
|
||||||
|
div.el-image {
|
||||||
|
display: flex;
|
||||||
|
height: 120px;
|
||||||
|
width: 160px;
|
||||||
|
justify-items: center;
|
||||||
|
align-items: center;
|
||||||
|
.el-image__inner {
|
||||||
|
height: unset;
|
||||||
|
width: 160px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.row-5{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: 48px;
|
||||||
|
.row-5-txt{
|
||||||
|
line-height: 24px;
|
||||||
|
display: -webkit-box;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sp-label{
|
||||||
|
display: inline-block;
|
||||||
|
width: 40px;
|
||||||
|
}
|
||||||
|
.sp-text{
|
||||||
|
display: inline-block;
|
||||||
|
max-width: calc(100% - 40px);
|
||||||
|
|
||||||
|
height: 24px;
|
||||||
|
.span-text{
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.head-nav {
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,200 @@
|
||||||
|
<template>
|
||||||
|
<MyDialog v-if="show" v-model="show" width="1600px" height="740px" class="work-train-dialog">
|
||||||
|
<template slot="title">{{ trainType == 0 ? '专项培训' : '应急演练' }}{{ prjName ? ' - ' + prjName : '' }}</template>
|
||||||
|
<div class="head-title-tab" style="padding: 10px 0px;max-width: unset;">
|
||||||
|
<div v-for="(it, idx) in dicts" :key="idx" :class="nav == it.dictValue ? 'head-nav active' : 'head-nav'" @click="doNav(it.dictValue)"
|
||||||
|
>{{ it.dictLabel }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="data-list">
|
||||||
|
<div class="data-item" v-for="(it, idx) in tableData" :key="idx" >
|
||||||
|
<div class="data-item-row1">
|
||||||
|
<div class="data-item-img">
|
||||||
|
<el-image :src="getProfileImage(it.mainImage, true)" style="width:100%;"
|
||||||
|
:preview-src-list="[getProfileImage(it.mainImage)]" />
|
||||||
|
</div>
|
||||||
|
<div class="data-item-row-right" style="cursor: pointer;" @click="doShowDlgTrain(it)">
|
||||||
|
<div class="bottom-line2" style="line-height: 24px;margin-top: 8px;">
|
||||||
|
<span style="color:#59A0DC;display: inline-block;margin-right: 8px;">{{ idx < 9 ? '0' + (idx +
|
||||||
|
1) : '' + (idx + 1) }}</span>
|
||||||
|
<span style="font-weight: bold;color:#59A0DC;">{{ it.trainTitle }}</span>
|
||||||
|
</div>
|
||||||
|
<div style="display: flex;align-items: center;">
|
||||||
|
<div style="line-height: 24px;color:#aaa;font-size: 12px;margin-top:12px;">
|
||||||
|
<div><span>参与人数:</span><span style="color:#436CE9">{{ it.trainParticipants }}</span><span>
|
||||||
|
人</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>培训时间:</span><span>{{ it.beginDate }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="data-item-row2" style="cursor: pointer;" @click="doShowDlgTrain(it)">
|
||||||
|
<div style="margin-top: -6px;color:#b8beef;font-size: 12px;">
|
||||||
|
<span>协作队伍:</span><span class="txt-over" :title="it.trainDeptNames">{{ it.trainDeptNames }}</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-pagination layout="total,prev, pager, next" :hide-on-single-page="true" @current-change="handleCurrentChange"
|
||||||
|
:total="total" :page-size="size" :current-page.sync="index" class="bg-pagination"></el-pagination>
|
||||||
|
<worktrainDlg ref="workTrainDlg"></worktrainDlg>
|
||||||
|
</MyDialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import MyDialog from '../components/MyDialog'
|
||||||
|
import worktrainDlg from '../dlg/workTrainDlg.vue'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
MyDialog,worktrainDlg
|
||||||
|
},
|
||||||
|
name: 'JhbigscreenIndexDlg1',
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
tableData: [],
|
||||||
|
nav: 1,
|
||||||
|
index: 1,
|
||||||
|
size: 9,
|
||||||
|
deptId: 0,
|
||||||
|
projectId: 0,
|
||||||
|
total: 0,
|
||||||
|
prjName: '',
|
||||||
|
trainType: 0,
|
||||||
|
dicts: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
doShowDlgTrain(it) {
|
||||||
|
if (this.trainType == 0) {
|
||||||
|
it.title = "专项培训";
|
||||||
|
it.typeTitle = "培训";
|
||||||
|
} else {
|
||||||
|
it.title = "应急演练";
|
||||||
|
it.typeTitle = "演练";
|
||||||
|
}
|
||||||
|
this.$refs.workTrainDlg.showDialog(it)
|
||||||
|
},
|
||||||
|
// 获取图片映射
|
||||||
|
getProfileImage(url, min) {
|
||||||
|
if (url) {
|
||||||
|
return '/jhapi' + url + (min ? ".min.jpg" : "");
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
},
|
||||||
|
handleCurrentChange(n) {
|
||||||
|
this.index = n;
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
doNav(n) {
|
||||||
|
this.nav = n;
|
||||||
|
this.index = 1;
|
||||||
|
this.loadData();
|
||||||
|
},
|
||||||
|
showDialog(data) {
|
||||||
|
this.dicts = data.dicts || [];
|
||||||
|
this.trainType = data.type;
|
||||||
|
this.deptId = data.deptId;
|
||||||
|
this.projectId = data.projectId;
|
||||||
|
if (data.prj) {
|
||||||
|
this.prjName = data.prj.projectName || '';
|
||||||
|
} else {
|
||||||
|
this.prjName = "";
|
||||||
|
}
|
||||||
|
this.nav = this.dicts.length > 0 ? this.dicts[0].dictValue : 0;
|
||||||
|
this.index = 1;
|
||||||
|
this.loadData();
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
loadData() {
|
||||||
|
let data = {
|
||||||
|
deptId: this.deptId,
|
||||||
|
projectId: this.projectId,
|
||||||
|
trainType: this.trainType,
|
||||||
|
dataType: this.nav
|
||||||
|
};
|
||||||
|
this.$api.workTrain.queryWorkTrainList(this.index, 9, data).then(d => {
|
||||||
|
this.tableData = d.rows || [];
|
||||||
|
this.total = d.total;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.mytable {
|
||||||
|
/deep/ th .cell {
|
||||||
|
color: aquamarine;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<style lang="less">
|
||||||
|
.work-train-dialog {
|
||||||
|
.popup-project-introduction-min {
|
||||||
|
transform: translateY(10vh);
|
||||||
|
}
|
||||||
|
|
||||||
|
.head-nav {
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-pagination {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data-list {
|
||||||
|
margin-top:12px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 33% 33% 33%;
|
||||||
|
grid-row-gap: 30px;
|
||||||
|
margin-left: -80px;
|
||||||
|
width: calc(100% + 100px);
|
||||||
|
|
||||||
|
.data-item {
|
||||||
|
display: inline-block;
|
||||||
|
height: 155px;
|
||||||
|
border: solid 1px #ccc;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-left: 80px;
|
||||||
|
|
||||||
|
&.col-1 {
|
||||||
|
margin-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data-item-row1 {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 50% 50%;
|
||||||
|
|
||||||
|
.data-item-img {
|
||||||
|
padding: 10px;
|
||||||
|
|
||||||
|
div.el-image {
|
||||||
|
display: flex;
|
||||||
|
height: 100px;
|
||||||
|
justify-items: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.el-image__inner {
|
||||||
|
height: unset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.data-item-row2 {
|
||||||
|
padding:0px 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}</style>
|
|
@ -4107,6 +4107,11 @@ lodash.merge@^4.6.2:
|
||||||
resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz"
|
resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz"
|
||||||
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
||||||
|
|
||||||
|
lodash.throttle@^4.1.1:
|
||||||
|
version "4.1.1"
|
||||||
|
resolved "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
|
||||||
|
integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
|
||||||
|
|
||||||
lodash.truncate@^4.4.2:
|
lodash.truncate@^4.4.2:
|
||||||
version "4.4.2"
|
version "4.4.2"
|
||||||
resolved "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz"
|
resolved "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz"
|
||||||
|
|
Loading…
Reference in New Issue