Files
zhxg_pc/src/views/stuCQS/good-class/jwc.vue

404 lines
14 KiB
Vue
Raw Normal View History

2025-07-28 15:52:07 +08:00
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" label-width="120px">
<el-form-item label="学院" prop="deptId">
<el-select @change="changeDept" v-model="queryParams.deptId" placeholder="请选择学院" filterable clearable>
<el-option v-for="(v, i) in deptList" :key="i" :label="v.label" :value="v.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="专业" prop="majorId">
<el-select @change="changeMajor" v-model="queryParams.majorId" placeholder="请先选择学院再选择专业" filterable clearable>
<el-option v-for="(v, i) in majorList" :key="i" :label="v.majorName" :value="v.majorId"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="班级" prop="classId">
<el-select v-model="queryParams.classId" placeholder="请先选择专业再选择班级" filterable clearable>
<el-option v-for="(v, i) in classList" :key="i" :label="v.className" :value="v.classId"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="学生姓名" prop="stuName">
<el-input v-model="queryParams.stuName" placeholder="请输入学生姓名" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="学号" prop="stuNo">
<el-input v-model="queryParams.stuNo" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-button type="primary" icon="el-icon-edit" size="mini" @click="manyAudit">一键审核通过</el-button>
2025-10-15 23:40:49 +08:00
<span style="color: red;">*审核时请注意申请的学年</span>
2025-07-28 15:52:07 +08:00
<el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="#" align="center" prop="id" />
<el-table-column label="学号" align="center" prop="stuNo" />
<el-table-column label="提交人" align="center" prop="stuName" />
<el-table-column label="班级" align="center" prop="className" />
<el-table-column label="学年" align="center" prop="stuYearName" />
<el-table-column label="辅导员姓名" align="center" prop="fdyName" />
<el-table-column label="提交时间" align="center" prop="applyTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.applyTime) }}</span>
</template>
</el-table-column>
<el-table-column label="学生人数" align="center" prop="classCount" />
<el-table-column label="申请状态" align="center" width="120px">
<template slot-scope="scope">
<dict-tag :options="dict.type.audius_detail_type" :value="scope.row.applyStatus" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="auditVClick(scope.row)"
v-if="scope.row.applyStatus == '3'">审核</el-button>
<el-button v-else size="mini" type="text" icon="el-icon-view" @click="lookVClick(scope.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<el-dialog title="审核" :visible.sync="auditV">
<el-steps :active="getStep(auditForm)">
<el-step title="学生提交申请" description=""></el-step>
<el-step title="辅导员审核" :status="isEmpty(auditForm.fdyCmt) ? 'wait' : getStepStatus(auditForm.fdyCmt)">
<template slot="description">
<div>
{{ isEmpty(auditForm.fdyNoName) ? '' : auditForm.fdyNoName }}
</div>
<div>
{{ isEmpty(auditForm.fdyCmt) ? '' : auditForm.fdyCmt }}
</div>
<div>
{{ isEmpty(auditForm.fdyTime) ? '' : auditForm.fdyTime }}
</div>
</template>
</el-step>
<el-step title="学院审核" :status="isEmpty(auditForm.xwCmt) ? 'wait' : getStepStatus(auditForm.xwCmt)">
<template slot="description">
<div>
{{ isEmpty(auditForm.xwNoName) ? '' : auditForm.xwNoName }}
</div>
<div>
{{ isEmpty(auditForm.xwCmt) ? '' : auditForm.xwCmt }}
</div>
<div>
{{ isEmpty(auditForm.xwTime) ? '' : auditForm.xwTime }}
</div>
</template>
</el-step>
<el-step title="学工审核" :status="isEmpty(auditForm.jwcCmt) ? 'wait' : getStepStatus(auditForm.jwcCmt)">
<template slot="description">
<div>
{{ isEmpty(auditForm.xgNoName) ? '' : auditForm.xgNoName }}
</div>
<div>
{{ isEmpty(auditForm.jwcCmt) ? '' : auditForm.jwcCmt }}
</div>
<div>
{{ isEmpty(auditForm.xgTime) ? '' : auditForm.xgTime }}
</div>
</template>
</el-step>
</el-steps>
<hr />
<el-form label-width="120px" size="mini">
2025-10-15 23:40:49 +08:00
<el-form-item class="look-form-item" label="学年">
<el-input readonly v-model="auditForm.stuYearName"></el-input> <span style="color: red;">*审核时请注意申请的学年</span>
</el-form-item>
2025-07-28 15:52:07 +08:00
<el-form-item class="look-form-item" label="申请人">
<el-input readonly v-model="auditForm.stuName"></el-input>
</el-form-item>
<el-form-item class="look-form-item" label="班级">
<el-input readonly v-model="auditForm.className"></el-input>
</el-form-item>
<el-form-item class="look-form-item" label="辅导员">
<el-input readonly v-model="auditForm.fdyName"></el-input>
</el-form-item>
<el-form-item class="look-form-item" label="班级人数">
<el-input readonly v-model="auditForm.classCount"></el-input>
</el-form-item>
<el-form-item class="look-form-item" label="身份证号">
<el-input readonly v-model="auditForm.idCard"></el-input>
</el-form-item>
<el-form-item class="look-form-item" label="农行卡号">
<el-input readonly v-model="auditForm.bankCard"></el-input>
</el-form-item>
<el-form-item class="look-form-item" label="开户行">
<el-input readonly v-model="auditForm.bankAddr"></el-input>
</el-form-item>
<el-form-item class="look-form-item" label="所获奖励">
<el-input readonly type="textarea" :autosize="{ minRows: 2, maxRows: 20 }"
v-model="auditForm.goodHis"></el-input>
</el-form-item>
<el-form-item class="look-form-item" label="主要事迹">
<el-input readonly type="textarea" :autosize="{ minRows: 2, maxRows: 20 }"
v-model="auditForm.mainHis"></el-input>
</el-form-item>
<el-form-item class="look-form-item" label="佐证材料">
<Affix @input="handleAffix" v-model="auditForm.testimonyMaterials"></Affix>
</el-form-item>
<el-form-item label="您的审核意见">
<el-row>
<el-col :span="12">
<el-select @change="changeAuditStatus" placeholder="请选择审核意见" style="width: 200px;"
v-model="doForm.applyStatus" size="mini">
<el-option v-for="(v, i) in status_list" :key="i" :label="v.label" :value="v.value">
</el-option>
</el-select>
</el-col>
<el-col :span="12">
<el-button @click="doAudit" size="mini">提交审核</el-button>
</el-col>
</el-row>
<el-input placeholder="请输入审核意见" type="textarea" :maxlength="1000" :autosize="{ minRows: 10, maxRows: 10 }"
class="auditForm-input" v-model="doForm.jwcCmt"></el-input>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
import { fullLoading, isEmpty } from '@/api/helpFunc'
import { doAudit, listJwc, manyAudit } from '@/api/stuCQS/good-class/newClassGoodApply'
import { listAllYear as listYear } from '@/api/stuCQS/basedata/year'
import { listClass } from '@/api/stuCQS/basedata/class'
import { listMajors } from '@/api/stuCQS/basedata/majors'
import { getDeptName } from '@/api/system/dept'
export default {
name: 'good-class-stu',
dicts: ['audius_detail_type'],
data() {
return {
isEmpty,
queryParams: {
pageNum: 1,
pageSize: 10,
classId: null,
majorId: null,
deptId: null,
},
total: 0,
loading: false,
tableData: [],
auditV: false,
doForm: {
applyStatus: null,
jwcCmt: "同意申请"
},
status_list: [
{
label: "通过",
value: 6
},
{
label: "驳回(学生可以重新提交)",
value: 10
},
{
label: "拒绝(学生不可以再提交)",
value: 11
}
],
auditForm: {},
year_list: [],
deptList: [], //学院列表
majorList: [], //专业列表
classList: [], //班级列表
applyIds: [],
}
},
created() {
this.listDept()
this.getList()
this.listYear()
},
methods: {
getStepStatus(data) {
if ((data.includes('同意') && !data.includes('不同意')) || data.includes('通过') || (data.includes('符合') && !data.includes('不符合'))) {
return 'success';
} else {
return 'error';
}
},
getStep(data) {
if (!isEmpty(data.jwcCmt)) {
return 4;
} else if (!isEmpty(data.xwCmt)) {
return 3;
} else if (!isEmpty(data.fdyCmt)) {
return 2;
} else {
return 1;
}
},
async manyAudit() {
let ids = [...this.applyIds]
if (isEmpty(ids)) {
this.$message.info('请勾选需要一键审核通过的项目')
return
}
this.$confirm('您确定要一键审核通过嘛?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
let loading = fullLoading(this)
let res = await manyAudit(ids)
loading.close()
if (res.code == 200) {
this.$message.success(res.msg)
this.getList()
}
})
.catch(() => { })
},
handleSelectionChange(selection) {
this.applyIds = selection.map((item) => item.id)
},
async changeMajor() {
this.queryParams.classId = null
this.classList = []
if (!isEmpty(this.queryParams.majorId)) {
let sdata = {
pageNum: 1,
pageSize: 1000,
majorId: this.queryParams.majorId,
}
let res = await listClass(sdata)
this.classList = [...res.rows]
}
},
async changeDept() {
this.queryParams.majorId = null
this.queryParams.classId = null
this.majorList = []
this.classList = []
if (!isEmpty(this.queryParams.deptId)) {
let sdata = {
collegeId: this.queryParams.deptId,
pageNum: 1,
pageSize: 1000,
}
let res = await listMajors(sdata)
this.majorList = [...res.rows]
}
},
async listDept() {
let res = await getDeptName()
this.deptList = [...res.data]
},
handleQuery() {
this.queryParams.pageNum = 1
this.queryParams.pageSize = 10
this.getList()
},
resetQuery() {
this.resetForm('queryForm')
this.handleQuery()
},
async doAudit() {
let sdata = { ...this.auditForm }
sdata.applyStatus = this.doForm.applyStatus;
sdata.jwcCmt = this.doForm.jwcCmt;
if (isEmpty(sdata.applyStatus)) {
this.$message.info('请选择是否通过')
return
}
if (isEmpty(sdata.jwcCmt)) {
this.$message.info('请输入审核意见')
return
}
let loading = fullLoading(this)
let res = await doAudit(sdata)
loading.close()
if (res.code == 200) {
this.$message.success(res.msg)
this.getList()
this.auditV = false
}
},
changeAuditStatus(v) {
switch (v) {
case 6:
this.doForm.jwcCmt = "经过审核,同意该生申请。";
break;
case 10:
this.doForm.jwcCmt = "填写有误,请重新提交。";
break;
case 11:
this.doForm.jwcCmt = "拒绝申请。";
break;
default:
this.doForm.jwcCmt = "同意申请。";
break;
}
},
auditVClick(val) {
this.auditForm = { ...val }
this.auditForm.applyStatus = '6'
this.auditForm.jwcCmt = '同意申请。'
this.auditV = true
},
async listYear() {
let res = await listYear()
if (res.code == 200) {
this.year_list = [...res.data]
}
},
async getList() {
this.loading = true
let res = await listJwc(this.queryParams)
this.loading = false
if (res.code == 200) {
this.tableData = [...res.rows]
this.total = res.total
}
},
handleAffix(affixId) {
this.auditForm.testimonyMaterials = affixId
},
},
}
</script>
<style scoped>
.look-form-item {
margin-bottom: 1px;
}
</style>