jhbigscreen/src/pages/safe/workTrainListDlg.vue

200 lines
6.5 KiB
Vue

<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>