123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433 |
- <template>
- <el-dialog class="trainingCourseInfoDialog" :title='dialogTitle'
- :show-close="false" :close-on-click-modal="false" :close-on-press-escape="false"
- :visible.sync="dialogType" v-if="dialogType" width="1161px">
- <div class="info-max-big-box" v-if="infoType == 1">
- <div class="info-big-box">
- <div>
- <p>课程名称:</p>
- <p>{{infoData.courseName}}</p>
- </div>
- <div>
- <p>是否开课:</p>
- <p>{{infoData.isStart==1?'已开课':'未开课'}}</p>
- </div>
- </div>
- <div class="info-big-box">
- <div>
- <p>主讲老师:</p>
- <p>{{infoData.lecturerName}}</p>
- </div>
- <div>
- <p>辅导老师:</p>
- <p>{{infoData.tutorName}}</p>
- </div>
- </div>
- <div class="info-big-box">
- <div>
- <p>上课人员:</p>
- <p class="color-p cursor-p" @click="pageTypeClick(2)">已选择学生 ({{infoData.userIds?infoData.userIds.length:0}}人)</p>
- </div>
- <div>
- <p>上课场所:</p>
- <p>{{infoData.place}}</p>
- </div>
- </div>
- <div class="info-big-box">
- <div>
- <p>上课日期:</p>
- <p>{{infoData.courseDate}}</p>
- </div>
- <div>
- <p>上课时间:</p>
- <p>{{infoData.courseTime}}</p>
- </div>
- </div>
- <div class="info-big-box-one">
- <p>课程内容:</p>
- <p>{{infoData.content?infoData.content:'无'}}</p>
- </div>
- <p class="info-big-box-title" v-if="infoData.isStart==1">课后总结</p>
- <div class="info-big-box-user" v-if="infoData.isStart==1">
- <p>签到人员:</p>
- <p @click="pageTypeClick(3)">
- <span>实际签到人数({{infoData.actualCount}}人)</span>
- <span>、有{{infoData.notHaveCount}}人未签到</span>
- <span>、非计划内签到{{infoData.outPlanCount}}人</span>
- </p>
- </div>
- <div class="info-big-box-img" v-if="infoData.isStart==1" :class="!infoData.courseImg[0]?'info-big-box-img-margin-bottom':''">
- <p>上传照片:</p>
- <div>
- <p v-if="!infoData.courseImg[0]">无</p>
- <img v-for="(item,index) in infoData.courseImg" :key="index"
- @click="pageTypeClick(4,item,index)" :src="item">
- </div>
- </div>
- <div class="info-big-box-one" v-if="infoData.isStart==1">
- <p>课程总结:</p>
- <p>{{infoData.courseSm?infoData.courseSm:'无'}}</p>
- </div>
- </div>
- <div class="user-max-big-box" v-if="infoType == 2 || infoType == 3">
- <el-form class="form-box" :model="userQueryParams" ref="examineForm" :inline="true">
- <el-form-item label="" prop="nickName">
- <el-input
- style="width:150px;"
- maxlength="10"
- v-model="userQueryParams.nickName"
- placeholder="请输入姓名"/>
- </el-form-item>
- <el-form-item label="状态">
- <el-select v-model="userQueryParams.isSing"
- style="width:150px;"
- placeholder="请选择启动条件">
- <el-option
- v-for="dict in typeOptions"
- :key="dict.key"
- :label="dict.value"
- :value="dict.key"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="是否计划内" v-if="infoType == 3">
- <el-select v-model="userQueryParams.singType"
- style="width:150px;"
- placeholder="请选择启动条件">
- <el-option
- v-for="dict in projectOptions"
- :key="dict.key"
- :label="dict.value"
- :value="dict.key"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item>
- <p class="inquire-button-one" @click="onSearch">查询</p>
- <p class="reset-button-one" @click="resetForm">重置</p>
- </el-form-item>
- </el-form>
- <p class="sign-in-num">
- <span>签到人数:{{infoData.actualCount}}</span>
- <span>、未签到人数:{{infoData.notHaveCount}}</span>
- <span v-if="infoType == 3">、计划外签到人数:{{infoData.outPlanCount}}</span>
- </p>
- <el-table border :data="tableData" ref="multipleTable">
- <el-table-column label="序号" width="50" align="center" type="index"/>
- <el-table-column label="姓名" prop="nickName" show-overflow-tooltip/>
- <el-table-column label="导师" prop="tutorName" width="150" show-overflow-tooltip/>
- <el-table-column label="班级" prop="className" width="150" show-overflow-tooltip/>
- <el-table-column label="所在部门" prop="deptName" width="300" show-overflow-tooltip v-if="infoType == 2"/>
- <el-table-column label="所在部门" prop="deptName" width="150" show-overflow-tooltip v-if="infoType == 3"/>
- <el-table-column label="是否计划内" prop="singType" width="150" show-overflow-tooltip v-if="infoType == 3">
- <template slot-scope="scope">
- {{scope.row.singType == 1?'否':'是'}}
- </template>
- </el-table-column>
- <el-table-column label="状态" prop="isSing" width="150" show-overflow-tooltip>
- <template slot-scope="scope">
- {{scope.row.isSing == 1?'已签到':'未签到'}}
- </template>
- </el-table-column>
- </el-table>
- <pagination :page-sizes="[20, 30, 40, 50]" v-show="total>0" :total="total"
- layout="total, prev, pager, next, sizes, jumper"
- :page.sync="userQueryParams.pageNum" :limit.sync="userQueryParams.pageSize"
- @pagination="getList"/>
- </div>
- <div class="img-max-big-box" v-if="infoType == 4">
- <div class="look-img-box scrollbar-box">
- <img class="look-img" :src="lookUrl">
- </div>
- </div>
- <p class="position-off-button el-icon-close" @click="dialogClose"></p>
- <div slot="footer" class="img-button-box" v-if="infoType == 4">
- <p class="img-null-p"></p>
- <div class="img-button-min-box">
- <img v-for="(item,index) in infoData.courseImg" :key="index"
- :class="index==lookIndex?'lookImg':''"
- @click="lockImgButton(item,index)" :src="item">
- </div>
- <p class="img-null-p"></p>
- </div>
- </el-dialog>
- </template>
- <script>
- import { singList } from '@/api/trainingCourse/index'
- export default {
- name: 'trainingCourseInfoDialog',
- props:{
- infoDialogData:{},
- },
- data(){
- return{
- dialogTitle:"",
- dialogType:true,
- dialogUserType:false,
- //页面状态 1.详情 2.人员 3.照片
- infoType:1,
- //详情数据
- infoData:{},
- // 查看图片url
- lookUrl:null,
- // 查看图片index
- lookIndex:null,
- //人员查询相关
- userQueryParams:{
- pageNum:1,
- pageSize:20,
- nickName:"",
- isSing:'',
- singType:'',
- },
- typeOptions:[{key:'',value:"全部"},{key:"1",value:"已签到"},{key:"0",value:"未签到"}],
- projectOptions:[{key:'',value:"全部"},{key:"0",value:"是"},{key:"1",value:"否"}],
- tableData:[],
- total:0,
- }
- },
- created(){
- },
- mounted(){
- this.initialize();
- },
- methods:{
- //初始化
- initialize(){
- this.$set(this,'dialogTitle','详情');
- let obj = {
- courseName:this.infoDialogData.courseName,
- isStart:this.infoDialogData.isStart,
- lecturerName:this.infoDialogData.lecturerName,
- tutorName:this.infoDialogData.tutorName,
- userIds:this.infoDialogData.userIds,
- place:(this.infoDialogData.subId && this.infoDialogData.subId!=-1)?this.infoDialogData.place+' , '+this.infoDialogData.subName:this.infoDialogData.place+' , '+this.infoDialogData.position,
- courseDate:this.infoDialogData.coStartDate,
- courseTime:this.infoDialogData.coStartTime+'至'+this.infoDialogData.coEndTime,
- content:this.infoDialogData.content,
- actualCount:this.infoDialogData.actualCount,
- notHaveCount:this.infoDialogData.notHaveCount,
- outPlanCount:this.infoDialogData.outPlanCount,
- courseImg:this.infoDialogData.courseImg?this.infoDialogData.courseImg.split(','):[],
- courseSm:this.infoDialogData.courseSm,
- }
- this.$set(this,'infoData',obj);
- },
- //页面状态切换
- pageTypeClick(type,item,index){
- if(this.infoType != type){
- this.$set(this,'dialogTitle',type == 2?'上课人员':(type == 3?'签到人员':(type == 4?'照片':'')));
- this.$set(this,'infoType',type);
- if(type == 2 || type == 3){
- this.resetForm();
- }else if(type == 4){
- this.$set(this,'lookUrl',item);
- this.$set(this,'lookIndex',index);
- }
- }
- },
- //查看图片切换
- lockImgButton(item,index){
- if(index != this.lookIndex){
- this.$set(this,'lookUrl',item);
- this.$set(this,'lookIndex',index);
- }
- },
- //页面取消按钮
- dialogClose(){
- if(this.infoType == 1){
- this.$parent.controlsButton(7)
- }else{
- this.$set(this,'dialogTitle','详情')
- this.$set(this,'infoType',1);
- }
- },
- //人员列表查询
- onSearch(){
- this.$set(this.userQueryParams,'pageNum',1);
- this.getList();
- },
- //人员列表重置
- resetForm(){
- let obj = {
- pageNum:1,
- pageSize:20,
- nickName:"",
- isSing:'',
- singType:'',
- }
- this.$set(this,'userQueryParams',obj);
- this.getList();
- },
- //获取人员列表
- getList(){
- let obj = {
- courseId:this.infoDialogData.id,
- pageNum:this.userQueryParams.pageNum,
- pageSize:this.userQueryParams.pageSize,
- nickName:this.userQueryParams.nickName,
- isSing:this.userQueryParams.isSing,
- }
- if(this.infoType == 3){
- obj.singType = this.userQueryParams.singType;
- }
- singList(obj).then( response => {
- this.$set(this,'tableData',response.rows);
- this.$set(this,'total',response.total);
- });
- },
- },
- }
- </script>
- <style scoped lang="scss">
- .trainingCourseInfoDialog{
- .info-max-big-box{
- height: 600px;
- .info-big-box:nth-child(1){
- margin-top:0;
- }
- .info-big-box{
- display: flex;
- margin:26px 79px 0;
- div{
- display: flex;
- p{
- font-size:16px;
- line-height:20px;
- color:#333;
- }
- p:nth-child(1){
- width:90px;
- }
- p:nth-child(2){
- flex:1;
- }
- }
- div:nth-child(1){
- width:486px;
- margin-right:79px;
- }
- div:nth-child(2){
- width:438px;
- }
- }
- .info-big-box-one{
- display: flex;
- margin:26px 79px 20px;
- p{
- font-size:16px;
- line-height:20px;
- color:#333;
- }
- p:nth-child(1){
- width:90px;
- }
- p:nth-child(2){
- flex:1;
- }
- }
- .info-big-box-title{
- padding:0 30px;
- font-size:18px;
- color:#333;
- line-height: 40px;
- background: #F5F5F5;
- }
- .info-big-box-user{
- display: flex;
- margin:26px 79px 0;
- p{
- font-size:16px;
- line-height:20px;
- }
- p:nth-child(1){
- width:90px;
- }
- p:nth-child(2){
- color:#0183fa;
- cursor: pointer;
- }
- }
- .info-big-box-img{
- display: flex;
- margin:26px 79px 0;
- p{
- font-size:16px;
- line-height:20px;
- width:90px;
- }
- div{
- img{
- width:160px;
- height:90px;
- margin-right:10px;
- border-radius:4px;
- cursor: pointer;
- }
- }
- }
- .cursor-p{
- cursor: pointer;
- }
- .color-p{
- color:#0183fa!important;
- }
- }
- .user-max-big-box{
- height: 600px;
- display: flex;
- flex-direction: column;
- padding:0 30px;
- .sign-in-num{
- background: rgba(1,131,250,0.2);
- color:#0183FA;
- line-height:40px;
- margin-bottom:20px;
- padding:0 14px;
- }
- }
- .img-max-big-box{
- height: 470px;
- .look-img-box{
- height:470px;
- overflow-x: hidden;
- img{
- width: 836px;
- margin:0 137px;
- }
- }
- }
- .position-off-button{
- position: absolute;
- right:20px;
- top:20px;
- cursor: pointer;
- font-size:20px;
- }
- .img-button-box{
- display: flex;
- .img-null-p{
- flex:1;
- }
- .img-button-min-box{
- display: flex;
- img{
- border:4px solid #fff;
- width:160px;
- height:90px;
- margin-right:10px;
- border-radius:4px;
- cursor: pointer;
- }
- .lookImg{
- border:4px solid #0183fa!important;
- }
- }
- }
- }
- </style>
|