You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

407 lines
14 KiB

<template>
<div>
<xy-dialog ref="dialog" :width="50" :is-show.sync="isShow" :type="'form'" :title="typeName" :form="form">
<template v-slot:show>
<div class="xy-table-item" style="padding: 0 20px;">
<div class="xy-table-item-label" style="font-weight: bold;width:0;padding: 0;display: none;">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>
</div>
<div class="xy-table-item-content" style="flex-grow: 1;">
<div class="courseName" v-if="type=='check' || type=='checkshow' ">
<div>课程名称:{{subjectObj.title}}</div>
<div>开课日期:{{subjectObj.date?subjectObj.date:'开课待定'}}</div>
<div>课程体系:{{subjectObj.leibie}}</div>
</div>
<div>
<lx-header icon="" :text="type=='checkshow' || type=='check'?'报名信息':'个人信息'" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
</lx-header>
<div>
<el-descriptions class="margin-top" :column="2" border>
<el-descriptions-item v-for="item in selectFormList" :span="item.span?item.span:1">
<template slot="label">
{{item.name}}
</template>
{{student_info[item.field]?student_info[item.field]:''}}
</el-descriptions-item>
<el-descriptions-item :span="2" v-if="type==='check' || type==='checkshow' || type==='setPosition'">
<template slot="label">
本班职务
</template>
{{sign_result.position?sign_result.position:''}}
</el-descriptions-item>
<!-- 报名信息 -->
<template v-if="sign_info.length>0">
<!-- <lx-header v-if="type==='check' || type==='checkshow' || type==='setPosition'" icon="" text="报名信息"
style="margin-bottom: 10px; border: 0px; margin-top: 15px">
</lx-header> -->
<template v-if="type==='check' || type==='checkshow' || type==='setPosition'">
<!-- <el-descriptions class="margin-top" :column="2" border> -->
<template v-for="item in sign_info">
<el-descriptions-item :span="2" v-if="item.submit_files && item.submit_files.length>0">
<template slot="label">
{{item.name}}
</template>
<div>
<template v-for="file in item.submit_files">
<img style="width:100px;margin:10px" :src="host+file"></img>
</template>
</div>
</el-descriptions-item>
<el-descriptions-item v-else :span="2">
<template slot="label">
{{item.name}}
</template>
{{item.value}}
</el-descriptions-item>
</template>
<!-- </el-descriptions> -->
</template>
</template>
</el-descriptions>
</div>
<!-- 审核查看 -->
<lx-header v-if="type=='checkshow' || type=='check'" icon="" text="审核结果"
style="margin-bottom: 10px; border: 0px; margin-top: 15px">
</lx-header>
<div v-if="type=='checkshow'">
<div class="studentInfo">
<div>
<span>审核结果:</span>
<span v-for="item in apply_status_list">
<el-tag :type="item.type" v-if="sign_result.status===item.id">{{item.value}}</el-tag>
</span>
</div>
<div>
<span>评分:</span>
<span>{{sign_result.score}}</span>
</div>
<div v-if="sign_result.status===5">
<span>放弃原因:</span>
<span>{{sign_result.giveup_reason}}</span>
</div>
<div style="display: flex;" v-if="sign_result.status===1">
<span>录取通知书:</span>
<div>
<div v-for="item in sign_result.files">
<a :href="item.url" target="_blank" style="color:#0077CC">{{item.original_name}}</a>
</div>
</div>
</div>
<div>
<span>备注:</span>
<span>{{sign_result.reason?sign_result.reason:''}}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<!-- 审核 -->
<template v-slot:status v-if="type=='check'">
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>审核:
</div>
<div class="xy-table-item-content">
<el-select v-model="form.status" placeholder="请选择">
<el-option v-for="item in apply_status_list" :key="item.id" :label="item.value" :value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:score v-if="type=='check'">
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>评分:
</div>
<div class="xy-table-item-content">
<el-input type="number" v-model="form.score" placeholder="请输入评分"></el-input>
</div>
</div>
</template>
<template v-slot:giveup_reason v-if="type=='check'&& form.status===5">
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>放弃原因:
</div>
<div class="xy-table-item-content">
<el-input type="textarea" v-model="form.giveup_reason" placeholder="请输入放弃原因"></el-input>
</div>
</div>
</template>
<template v-slot:file_ids v-if="type=='check' && form.status===1">
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>录取通知书:
</div>
<div class="xy-table-item-content">
<el-upload :action="action" class='upload-demo' :file-list="fileList" ref="pictureUpload"
:auto-upload="true" accept=".pdf" :limit="1" :on-success="uploadSuccess" :on-remove="uploadRemove">
<el-button size="small" type="primary">点击上传</el-button>
<div class="el-upload__tip" slot="tip">只能上传pdf文件</div>
</el-upload>
</div>
</div>
</template>
<template v-slot:reason v-if="type=='check'">
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>备注:
</div>
<div class="xy-table-item-content">
<el-input type="textarea" v-model="form.reason" placeholder="请输入备注(展示给学员查看)"></el-input>
</div>
</div>
</template>
<!-- 设置班委 -->
<template v-slot:position v-if="type=='setPosition'">
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>班委名称:
</div>
<div class="xy-table-item-content">
<el-input type="text" v-model="form.position" placeholder="请输入班委名称(如:班长)"></el-input>
</div>
</div>
</template>
<template v-slot:footerContent>
<el-button type="primary" style='margin-left:5px;margin-bottom:5px;' v-if="type=='check' || type=='setPosition'"
@click="submit">确认</el-button>
<el-button type="primary" plain style='margin-left:5px;margin-bottom:5px;'
v-else-if="type=='check'|| type=='setPosition'" @click="isShow=false">取消</el-button>
<el-button type="primary" plain style='margin-left:5px;margin-bottom:5px;'
v-else-if="type=='show'||type=='checkshow'" @click="isShow=false">关闭</el-button>
</template>
</xy-dialog>
</div>
</template>
<script>
import {
show
} from '@/api/student/index.js'
import {
save,
show as showSign
} from '@/api/apply/index.js'
import myMixins from "@/mixin/selectMixin.js";
import formMixin from "@/mixin/formMixin.js";
export default {
mixins: [myMixins, formMixin],
components: {
},
data() {
return {
isShow: false,
type: 'show',
typeName: '查看个人明细',
id: '',
action: `${process.env.VUE_APP_UPLOAD_API}`,
host: `${process.env.VUE_APP_BASE_API}`,
subjectObj: {},
student_info: {},
row: {},
sign_info: [],
sign_result: {},
fileList: [],
form: {
show: '',
status: 0,
score: '',
giveup_reason: '',
file_ids: [],
reason: '',
position: ''
},
}
},
created() {},
methods: {
uploadSuccess(response, file, fileList) {
this.fileList = fileList
},
uploadRemove(file, fileList) {
this.fileList = fileList
},
// beforeUpload(file) {
// const isImage = file.type.includes('image');
// if (!isImage) {
// this.$message.error('请上传正确的图片格式文件');
// }
// return isImage && isLt2M;
// },
submit() {
if (this.id) {
this.form.id = this.id
}
let _arr = []
if (this.fileList.length > 0) {
this.fileList.map(item => {
if (item.response) {
_arr.push(item.response.id)
} else {
_arr.push(item.id)
}
})
}
this.form.file_ids = _arr
save({
...this.row,
status: this.form.status,
reason: this.form.reason,
score: this.form.score,
giveup_reason: this.form.giveup_reason,
file_ids: this.form.file_ids,
position: this.form.position
}).then(res => {
this.$message({
type: 'success',
message: this.type === 'check' ? '审核成功' : '设置成功'
})
this.isShow = false
this.$emit('refresh')
})
},
getDetail() {
show({
id: this.id,
}).then(res => {
this.student_info = res
})
},
getSignDetail() {
showSign({
id: this.id,
show_relation: ['user']
}).then(res => {
this.student_info = res.user
this.sign_result = res
this.form.position = res.position ? res.position : ''
let _arr = []
if (res.data && Array.isArray(res.data)) {
res.data.map(item => {
if(item.edit_input==='files'){
if (!this.base.isNull(item.value) && item.value.indexOf("/storage/files/") !== -1) {
item.submit_files = item.value.split(",")
}
}
// 处理自定义字段中是否 是个人用户信息
if (!this.student_info.hasOwnProperty(item.field)) {
console.log("item.field")
_arr.push(item)
}
})
this.sign_info = _arr
} else {
this.sign_info = []
}
this.form.status = res.status ? res.status : 0
this.form.score = res.score ? res.score : ''
this.form.reason = res.reason ? res.reason : ''
this.form.giveup_reason = res.giveup_reason?res.giveup_reason:''
this.fileList = res.files ? res.files : []
console.log("this.sign_info", this.sign_info)
})
}
},
watch: {
isShow(newVal) {
if (newVal) {
if (this.type === 'show') {
this.typeName = "查看个人明细"
this.getDetail()
} else if (this.type === 'check' || this.type === 'checkshow' || this.type === 'setPosition') {
this.getSignDetail()
if (this.type === 'check') {
this.typeName = '审核'
} else if (this.type === 'setPosition') {
this.typeName = '设置班委'
} else {
this.typeName = '查看'
}
}
} else {
this.id = ''
this.type = 'show'
this.subjectObj = {}
this.sign_result = {}
this.sign_info = []
this.fileList = []
this.$refs['dialog'].reset()
}
},
}
}
</script>
<style scoped lang="scss">
::v-deep .show,
::v-deep .file_ids,
::v-deep .reason,
::v-deep .giveup_reason {
flex-basis: 100%;
}
::v-deep .el-descriptions-item__label {
width: 15%;
}
::v-deep .v-header {
margin-top: 0 !important;
}
.studentInfo {
&>div {
display: flex;
&>div {
width: 50%;
span:first-child {
display: inline-block;
width: 160px;
text-align: right;
}
}
img {
width: 80px;
height: 80px;
}
}
}
.companyInfo {
&>div {
display: flex;
span:first-child {
display: inline-block;
width: 160px;
text-align: right;
}
}
}
</style>