Files
school-developer/src/views/recruit/recruitstudentsignup/indexClass.vue
zhoutianchi 8bdd7985d3 1
2026-01-15 11:23:00 +08:00

1079 lines
35 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="mod-config">
<basic-container>
<el-form :inline="true" :model="dataForm" @keyup.enter="getDataList()" ref="searchFormRef">
<el-form-item label="招生计划" prop="groupId">
<el-select v-model="dataForm.groupId" filterable clearable placeholder="请选择招生计划" size="small" @change="chanMajor" style="width: 150px;">
<el-option
v-for="item in planList"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="学院" prop="xy">
<el-select v-model="dataForm.xy" filterable clearable placeholder="请选择学院" size="small" style="width: 130px;">
<el-option
v-for="item in deptList"
:key="item.deptCode"
:label="item.deptName"
:value="item.deptCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="报名时段" prop="startDate" >
<el-date-picker v-model="dataForm.startDate" format="YYYY-MM-DD" value-format="YYYY-MM-DD" clearable size="small"
:disabled-date="startDateDisabled" type="date" style="width: 200px;" ></el-date-picker>
-
<el-date-picker v-model="dataForm.endDate" format="YYYY-MM-DD" value-format="YYYY-MM-DD" clearable size="small"
:disabled-date="endDateDisabled" type="date" style="width: 200px;" ></el-date-picker>
</el-form-item>
<el-form-item label="录取专业" prop="confirmedMajor">
<el-select v-model="dataForm.confirmedMajor" filterable clearable placeholder="请选择录取专业" size="small" >
<el-option
v-for="item in planMajorList"
:key="item.majorCode"
:label="item.majorName+'('+item.learnYear+'年制)'"
:value="item.majorCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业" prop="wishMajorOne">
<el-select v-model="dataForm.wishMajorOne" filterable clearable placeholder="请选择录取专业" size="small" >
<el-option
v-for="item in planMajorList"
:key="item.majorCode"
:label="item.majorName+'('+item.learnYear+'年制)'"
:value="item.majorCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="唯一号/姓名/身份证号/学校名称" prop="search">
<el-input v-model="dataForm.search" clearable placeholder="唯一号/姓名/身份证号/学校名称" size="small"></el-input>
</el-form-item>
<el-form-item label="文化程度" prop="degreeOfEducation">
<el-select v-model="dataForm.degreeOfEducation" filterable clearable placeholder="请选择文化程度" size="small" style="width: 120px;">
<el-option
v-for="item in eduList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="是否住宿" prop="isAccommodation">
<el-select v-model="dataForm.isAccommodation" filterable clearable placeholder="请选择是否住宿" size="small" style="width: 120px;" >
<el-option
v-for="item in yesNoList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="是否低保" prop="isMinimumLivingSecurity">
<el-select v-model="dataForm.isMinimumLivingSecurity" filterable clearable placeholder="请选择是否低保" size="small" style="width: 120px;" >
<el-option
v-for="item in yesNoList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="经办人" prop="auditor">
<el-select v-model="dataForm.auditor" filterable clearable placeholder="请选择经办人" size="small" style="width: 120px;">
<el-option
v-for="item in auditorList"
:key="item.username"
:label="item.realName"
:value="item.username">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="缴费状态" prop="paystatus">
<el-select v-model="dataForm.paystatus" filterable clearable placeholder="请选择缴费状态" size="small" style="width: 120px;" >
<el-option
v-for="item in paystatusList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="新市民材料已上传" prop="isNewCity">
<el-select v-model="dataForm.isNewCity" filterable clearable placeholder="请选择新市民材料已上传" size="small" style="width: 120px;" >
<el-option
v-for="item in yesNoList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="毕业证已上传" prop="graPic">
<el-select v-model="dataForm.graPic" filterable clearable placeholder="请选择毕业证已上传" size="small" style="width: 120px;">
<el-option
v-for="item in yesNoList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="推送状态" prop="pushed">
<el-select v-model="dataForm.pushed" filterable clearable placeholder="请选择推送状态" size="small" style="width: 120px;" >
<el-option
v-for="item in pushedList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="来源" prop="isOut">
<el-select v-model="dataForm.isOut" filterable clearable placeholder="请选择来源" size="small" style="width: 120px;" >
<el-option
v-for="item in isOutList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="是否打印" prop="isBackTz">
<el-select v-model="dataForm.isBackTz" filterable clearable placeholder="请选择是否打印" size="small" style="width: 120px;" >
<el-option
v-for="item in isBackTzList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="是否同步学工" prop="isTb">
<el-select v-model="dataForm.isTb" filterable clearable placeholder="请选择是否同步学工" size="small" style="width: 120px;" >
<el-option
v-for="item in yesNoList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班级" prop="classNo">
<el-select filterable clearable v-model="dataForm.classCode" size="small" placeholder="请选择班级" >
<el-option
v-for="item in classList"
:key="item.classCode"
:label="item.classNo"
:value="item.classCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button :icon="Search" type="primary" size="small"
@click="handleFilter()">查询
</el-button>
<el-button :icon="Delete" type="default" plain size="small"
@click="resetForm('searchFormRef')">清空
</el-button>
<el-button type="warning"
:icon="Download"
size="small"
@click="handleExport()">分班导出</el-button>
<el-button type="danger"
v-if="permissions.recruit_banding"
size="small"
@click="oneClassHandle()">一键分班</el-button>
<el-button type="danger"
v-if="permissions.recruit_banding"
size="small"
@click="oneStuNoHandle()">一键分学号</el-button>
<el-button type="success"
v-if="permissions.recruit_synchronous_stuwork"
size="small"
@click="tbStuWorkHandle()">同步学工</el-button>
</el-form-item>
</el-form>
<div class="avue-crud">
<el-table
:data="dataList"
border
stripe
v-loading="dataListLoading">
<el-table-column
prop="serialNumber"
header-align="center"
align="center"
label="唯一号">
</el-table-column>
<el-table-column
prop="name"
header-align="center"
align="center"
label="姓名">
</el-table-column>
<el-table-column
prop="gender"
header-align="center"
align="center"
label="性别">
<template #default="scope">
{{getGender(scope.row.gender)}}
</template>
</el-table-column>
<el-table-column
prop="idNumber"
header-align="center"
align="center"
label="身份证号">
</el-table-column>
<el-table-column
prop="confirmedMajor"
header-align="center"
align="center"
label="录取专业">
<template #default="scope" >
<span v-if="scope.row.auditStatus==20">{{getLabelValueByPropes2(planMajorList,scope.row.confirmedMajor,{'key':'majorCode','value':'majorName'})}}</span>
</template>
</el-table-column>
<el-table-column
prop="xy"
header-align="center"
align="center"
label="学院">
<template #default="scope">
<span v-if="scope.row.auditStatus==20">{{getLabelValueByPropes(deptList,scope.row.xy,{'key':'deptCode','value':'deptName'})}}</span>
</template>
</el-table-column>
<el-table-column
prop="classNo"
header-align="center"
align="center"
label="班号">
</el-table-column>
<el-table-column
prop="stuNo"
header-align="center"
align="center"
label="学号">
</el-table-column>
<el-table-column
prop="isTb"
header-align="center"
align="center"
label="是否同步">
<template #default="scope">
<span v-if="scope.row.isTb=='0'" style="color: red"></span>
<span v-if="scope.row.isTb=='1'" style="color: green"></span>
</template>
</el-table-column>
<el-table-column
header-align="center"
align="center"
label="操作">
<template #default="scope">
<el-button type="primary" link size="small" @click="addOrUpdateHandle(scope.row.id,0)" :icon="ZoomIn" plain>查看</el-button>
<el-button type="primary" link size="small" @click="changeclass(scope.row)" v-if="permissions.recruit_banding && scope.row.isTb=='0' && scope.row.classNo !=null" :icon="Edit" plain>调整班级</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="avue-crud__pagination">
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
:total="totalPage"
background
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
<!-- 弹窗, 新增 / 修改 -->
<TableForm v-if="addOrUpdateVisible" ref="addOrUpdateRef" @refreshDataList="getDataList" ></TableForm>
<MajorChange v-if="majorChangeVisible" ref="majorChangeRef" @refreshDataList="getDataList"></MajorChange>
<Update v-if="updateVisible" ref="updateRef" @refreshDataList="getDataList"></Update>
<el-dialog title="支付二维码" v-model="dialogFormVisible" width="800px"
@close="dialogFormVisible=false">
<el-table :data="tableData" border>
<el-table-column label="唯一号" prop="serialNumber" align="center"></el-table-column>
<el-table-column label="姓名" prop="name" align="center"></el-table-column>
<el-table-column label="家长手机号" prop="parentTelOne" align="center"></el-table-column>
<el-table-column label="操作" prop="" align="center">
<template #default>
<el-button @click="updateFS()" :icon="Search" type="danger" size="small">立即查询</el-button>
</template>
</el-table-column>
</el-table>
<div style="padding-top: 20px;">
<div id="payQrcode1" style="display: inline-block;" >
{{payQrcode1Msg}}
</div>
<vue-qr :text="payQrcode1" :size="200" v-if="showPrise1" style="display: inline-block"></vue-qr>
<div id="payQrcode2" style="display: inline-block">
{{payQrcode2Msg}}
</div>
<vue-qr :text="payQrcode2" :size="200" v-if="showPrise2" style="display: inline-block"></vue-qr>
<div id="payQrcode3" style="display: inline-block">
{{payQrcode3Msg}}
</div>
<vue-qr :text="payQrcode3" :size="200" v-if="showPrise3" style="display: inline-block"></vue-qr>
</div>
<span style="color: red;padding-top: 20px;">** 此界面为查询学生缴款二维码如有收不到微信推送或手机号填错的可直接在此扫码支付支付成功后请手动点击"立即查询"按钮查询该生的缴费情况;因财政收费系统有一定的滞后性如点击"立即查询"后任显示未交费请稍后再继续查询或重新点击"立即查询"按钮 **</span>
</el-dialog>
<el-dialog title="延迟缴费" v-model="delayPayTimeVisible" width="300px"
@close="delayPayTimeVisible=false">
<el-date-picker v-model="delayPayTime" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" clearable type="datetime" ></el-date-picker>
<template #footer>
<div class="dialog-footer">
<el-button @click="delayPayTimeVisible=false"> </el-button>
<el-button @click="updateInfoHandle" type="primary">保存</el-button>
</div>
</template>
</el-dialog>
<el-dialog title="录取通知书" v-model="lqtzsVisible" width="80%"
@close="lqtzsVisible=false">
<div style="height: 60vh">
<iframe id="iframeid" :src="pdfPath" ref="iframeRef" frameborder="0" style="width:100%;height:100%;"></iframe>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="lqtzsVisible=false"> </el-button>
<el-button @click="suerLQTZ" v-if="permissions.sureLQTZ && lqtzsShow" type="primary">确认已打印</el-button>
</div>
</template>
</el-dialog>
<el-dialog title="班级调整" v-model="changeClassVisible" width="500px"
@close="changeClassVisible=false">
<el-form ref="formRef" :model="changeForm" label-width="80px">
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="原班级">
<el-select v-model="changeForm.oldClass" size="small" placeholder="请选择班级" disabled >
<el-option
v-for="item in classList"
:key="item.classCode"
:label="item.classNo"
:value="item.classCode">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="新班级">
<el-select v-model="changeForm.classNo" filterable size="small" placeholder="请选择新班级" >
<el-option
v-for="item in changeClassList"
:key="item.classNo"
:label="item.classNo"
:value="item.classNo">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="changeClassVisible=false"> </el-button>
<el-button @click="changeClassInfoHandle" type="primary">保存</el-button>
</div>
</template>
</el-dialog>
<DormFW v-if="dormFWRefVisible" ref="dormFWRef"></DormFW>
<ShowMap v-if="baiduMapVisible" ref="baiduMapRef"></ShowMap>
</basic-container>
</div>
</template>
<script setup lang="ts">
import { ref, reactive, computed, nextTick, onMounted } from 'vue'
import { defineAsyncComponent } from 'vue'
import { Search, Delete, Download, ZoomIn, Edit } from '@element-plus/icons-vue'
import { ElNotification } from 'element-plus'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import axios from 'axios'
import { list } from '@/api/recruit/recruitstudentplangroup'
import {
delObj,
exportZip,
classPage,
leaveSchool,
rePush,
updateInfo,
yjOut,
toWord,
sureLQTZ,
tbStuWork,
sendImg,
oneClass,
oneStuNo,
changeClassInfo, getMajorClass
} from '@/api/recruit/recruitstudentsignup'
import global from '@/components/tools/commondict'
import { getClassListByRole, getDeptList, queryAllClassByInfo } from "@/api/basic/basicclass"
import {listPlanByCondition as planMajor} from "@/api/recruit/recruitstudentplan"
import { getTypeValue } from "@/api/admin/dict"
import { getUserListByRole } from "@/api/admin/user"
import { ROLE_CODE } from "@/config/global"
import { updateFs } from "@/api/finance/financenormalstu"
import { showLoading, hideLoading } from '@/api/asset/loading'
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
const MajorChange = defineAsyncComponent(() => import('./majorChange.vue'))
const Update = defineAsyncComponent(() => import('./update.vue'))
const DormFW = defineAsyncComponent(() => import('./dormFW.vue'))
const ShowMap = defineAsyncComponent(() => import('./showMap.vue'))
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 使用 hooks
const message = useMessage()
const messageBox = useMessageBox()
// 辅助函数
const getLabelValueByPropes = (list: any[], key: string, props: { key: string, value: string }) => {
return global.getLabelValueByPropes(list, key, props)
}
const getLabelValueByPropes2 = (list: any[], key: string, props: { key: string, value: string }) => {
return global.getLabelValueByPropes2(list, key, props)
}
// 表单引用
const searchFormRef = ref()
const formRef = ref()
const addOrUpdateRef = ref()
const majorChangeRef = ref()
const updateRef = ref()
const dormFWRef = ref()
const baiduMapRef = ref()
const iframeRef = ref()
// 响应式数据
const changeForm = reactive({
id: '',
oldClass: "",
classCode: "",
classNo: ""
})
const dataForm = reactive({
groupId: '',
xy: "",
confirmedMajor: "",
degreeOfEducation: "",
isAccommodation: "",
isMinimumLivingSecurity: "",
search: "",
auditor: "",
isNewCity: "",
startDate: "",
endDate: "",
paystatus: "",
graPic: "",
pushed: "",
wishMajorOne: "",
isTb: '',
classCode: "",
auditStatus: "",
type: "",
isOut: "",
isBackTz: ""
})
const id = ref("")
const pdfPath = ref("")
const delayPayTime = ref("")
const auditorList = ref<any[]>([])
const isBackTzList = [{ label: "未打印", value: "0" }, { label: "已打印", value: "1" }]
const paystatusList = [{ label: "已缴费", value: "10" }, { label: "未缴费", value: "0" }, { label: "部分缴费", value: "5" }]
const planList = ref<any[]>([])
const eduList = ref<any[]>([])
const planMajorList = ref<any[]>([])
const auditStatusList = [{ label: "未录取", value: "-20" }, { label: "待审核", value: "0" }, { label: "已录取", value: "20" }]
const yesNoList = [{ label: "否", value: "0" }, { label: "是", value: "1" }]
const pushedList = [{ label: "未推送", value: "0" }, { label: "已推送", value: "1" }]
const isOutFwList = [{ label: "待确认", value: "0" }, { label: "范围内", value: "1" }, { label: "范围外", value: "2" }]
const isOutList = [{ label: "学校", value: "0" }, { label: "市平台", value: "1" }]
const deptList = ref<any[]>([])
const dataList = ref<any[]>([])
const pageIndex = ref(1)
const pageSize = ref(10)
const totalPage = ref(0)
const lqtzsShow = ref(false)
const dataListLoading = ref(false)
const addOrUpdateVisible = ref(false)
const changeClassVisible = ref(false)
const majorChangeVisible = ref(false)
const lqtzsVisible = ref(false)
const updateVisible = ref(false)
const payQrcode1 = ref("")
const showPrise1 = ref(false)
const payQrcode1Msg = ref("")
const payQrcode2 = ref("")
const payQrcode2Msg = ref("")
const showPrise2 = ref(false)
const payQrcode3 = ref("")
const payQrcode3Msg = ref("")
const showPrise3 = ref(false)
const dialogFormVisible = ref(false)
const delayPayTimeVisible = ref(false)
const dormFWRefVisible = ref(false)
const baiduMapVisible = ref(false)
const tableData = ref<any[]>([])
const classList = ref<any[]>([])
const changeClassList = ref<any[]>([])
// 日期禁用函数
const startDateDisabled = (time: Date) => {
if (dataForm.endDate) {
return new Date(dataForm.endDate).getTime() < time.getTime()
}
return false
}
const endDateDisabled = (time: Date) => {
if (dataForm.startDate) {
return new Date(dataForm.startDate).getTime() > time.getTime()
}
return false
}
// 方法定义
// 查找所有班级
const getClassData = () => {
getClassListByRole().then((data: any) => {
classList.value = data.data
})
}
const sendImgHandle = () => {
useMessageBox().confirm('是否确认同步招生图片到市平台?请谨慎操作').then(() => {
return sendImg()
}).then(() => {
message.success('同步图片请求已发起,请耐心等待')
}).catch(() => {
hideLoading()
})
}
const tbStuWorkHandle = () => {
if (dataForm.groupId == '') {
message.warning('招生计划不能为空')
return
}
useMessageBox().confirm('是否确认同步学工?请谨慎操作').then(() => {
showLoading()
return tbStuWork(dataForm)
}).then(() => {
hideLoading()
message.success('同步完成')
getDataList()
}).catch(() => {
hideLoading()
})
}
const oneClassHandle = () => {
if (dataForm.groupId == '') {
message.warning('招生计划不能为空')
return
}
useMessageBox().confirm('是否确认一键分配班级?请谨慎操作').then(() => {
showLoading()
return oneClass(dataForm)
}).then(() => {
hideLoading()
message.success('分配完成')
getDataList()
}).catch(() => {
hideLoading()
})
}
const oneStuNoHandle = () => {
if (dataForm.groupId == '') {
message.warning('招生计划不能为空')
return
}
useMessageBox().confirm('是否确认一键分配学号?请谨慎操作').then(() => {
showLoading()
return oneStuNo(dataForm)
}).then(() => {
hideLoading()
message.success('分配完成')
getDataList()
}).catch(() => {
hideLoading()
})
}
const downZip = () => {
if (dataForm.groupId == '') {
message.warning('招生计划不能为空')
return
}
showLoading()
exportZip(dataForm).then((res: any) => {
hideLoading()
const blob = new Blob([res.data])
const elink = document.createElement('a')
elink.download = "招生名单.zip"
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
hideLoading()
})
}
const baiduMap = (row: any) => {
baiduMapVisible.value = true
nextTick(() => {
baiduMapRef.value?.init(row)
})
}
const setDormFW = () => {
dormFWRefVisible.value = true
nextTick(() => {
dormFWRef.value?.init()
})
}
const yjOutHandle = () => {
if (dataForm.groupId == '') {
message.warning('招生计划不能为空')
return
}
useMessageBox().confirm('是否确认一键判断是否超出住宿范围?请谨慎操作').then(() => {
return yjOut({ groupId: dataForm.groupId })
}).then(() => {
message.success('操作成功')
getDataList()
})
}
const handleExportAudit = (type: number) => {
if (dataForm.groupId == '') {
message.warning('招生计划不能为空')
return
}
downFile(type)
}
const handleExport = () => {
if (dataForm.groupId == '') {
message.warning('招生计划不能为空')
return
}
exportExcel(dataForm, '/recruit/recruitstudentsignup/exportShift').then((res: any) => {
const blob = new Blob([res.data])
const elink = document.createElement('a')
elink.download = "新生(分班)情况.xls"
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
})
}
const exportExcel = (form: any, url: string) => {
return axios({
method: 'post',
url: url,
data: form,
responseType: 'blob',
headers: {
'Content-Type': 'application/json'
}
})
}
const downFile = (type: number) => {
dataForm.type = String(type)
exportExcel(dataForm, '/recruit/recruitstudentsignup/exportExcel').then((res: any) => {
const blob = new Blob([res.data])
let fileName = ""
if (type == 1) {
fileName = '延迟缴费名单导出.xlsx'
} else {
fileName = '超时缴费名单导出.xlsx'
}
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
})
}
const init = () => {
// 查询二级学院信息
getDeptList().then((data: any) => {
deptList.value = data.data
})
getClassData()
list().then((data: any) => {
planList.value = data.data
if (planList.value.length > 0) {
dataForm.groupId = planList.value[0].id
}
getDataList()
chanMajor()
})
getTypeValue('finance_student_source').then((res: any) => {
eduList.value = res.data
})
// 所有经办人
getUserListByRole(ROLE_CODE.ROLE_RECRUIT_SECOND).then((res: any) => {
auditorList.value = res.data
getUserListByRole(ROLE_CODE.ROLE_RECRUIT).then((re: any) => {
re.data.forEach((r: any) => {
auditorList.value.push(r)
})
auditorList.value = unique(auditorList.value)
})
})
}
const unique = (arr: any[]) => {
const rese = new Map()
return arr.filter((item) => !rese.has(item.username) && rese.set(item.username, 1))
}
// 性别
const getGender = (gender: string) => {
if (gender == '2') {
return '女'
}
if (gender == '1') {
return '男'
}
return ''
}
const chanMajor = () => {
planMajorList.value = []
planMajor({ groupId: dataForm.groupId }).then((data: any) => {
planMajorList.value = data.data
})
}
const handleFilter = () => {
pageIndex.value = 1
getDataList()
}
// 获取数据列表
const getDataList = () => {
dataList.value = []
dataListLoading.value = true
dataForm.auditStatus = '20'
classPage(Object.assign({
current: pageIndex.value,
size: pageSize.value
}, dataForm)).then((response: any) => {
dataList.value = response.data.records
totalPage.value = response.data.total
})
dataListLoading.value = false
}
// 每页数
const sizeChangeHandle = (val: number) => {
pageSize.value = val
pageIndex.value = 1
getDataList()
}
// 当前页
const currentChangeHandle = (val: number) => {
pageIndex.value = val
getDataList()
}
const changeclass = (row: any) => {
changeClassList.value = []
getMajorClass(row).then((response: any) => {
changeClassList.value = response.data
changeClassVisible.value = true
changeForm.id = row.id
changeForm.classCode = ''
changeForm.classNo = ''
changeForm.oldClass = row.classCode
})
}
// 新增 / 修改
const addOrUpdateHandle = (id: string, type: number) => {
addOrUpdateVisible.value = true
nextTick(() => {
addOrUpdateRef.value?.init(id, type)
})
}
// 新增 / 修改
const edit = (id: string) => {
updateVisible.value = true
nextTick(() => {
updateRef.value?.init(id)
})
}
const majorChangeHandle = (id: string) => {
majorChangeVisible.value = true
nextTick(() => {
majorChangeRef.value?.init(id)
})
}
const changeClassInfoHandle = () => {
if (changeForm.classNo == '') {
message.error('调整班级不能空')
return
}
changeClassList.value.forEach((e: any) => {
if (e.classNo == changeForm.classNo) {
changeForm.classCode = e.classCode
}
})
if (changeForm.oldClass == changeForm.classCode) {
message.error('调整班级不能和原班级相同')
return
}
useMessageBox().confirm('是否确认调整班级操作?请谨慎操作').then(() => {
return changeClassInfo(changeForm)
}).then(() => {
message.success('操作成功')
changeClassVisible.value = false
getDataList()
})
}
const updateHandle = (id: string, groupId: string, feeAgency: string) => {
useMessageBox().confirm('是否确认办理退学操作?请谨慎操作').then(() => {
return leaveSchool({ id: id, groupId: groupId, feeAgency: feeAgency })
}).then(() => {
message.success('操作成功')
getDataList()
})
}
// 删除
const deleteHandle = (id: string) => {
useMessageBox().confirm('是否确认删除本条数据?请谨慎操作').then(() => {
return delObj(id)
}).then(() => {
message.success('删除成功')
getDataList()
})
}
const resetForm = (formName: string) => {
if (formName === 'searchFormRef') {
searchFormRef.value?.resetFields()
} else if (formName === 'formRef') {
formRef.value?.resetFields()
}
}
// 使用插槽 缴费状态
const getStatus = (type: string) => {
if (type == '0') {
return '未缴费'
} else if (type == '5') {
return '部分缴费'
} else if (type == '10') {
return '已缴费'
}
return ''
}
const getPushed = (type: string) => {
if (type == '0') {
return '未推送'
} else if (type == '1') {
return '已推送'
}
return ''
}
const getMajor = (type: string) => {
if (type == '0') {
return '未申请'
} else if (type == '1') {
return '待审核'
} else if (type == '2') {
return '驳回'
} else if (type == '3') {
return '已通过'
}
return ''
}
const lqtz = (row: any) => {
id.value = row.id
pdfPath.value = ""
if (row.isBackTz == '0') {
lqtzsShow.value = true
} else {
lqtzsShow.value = false
}
toWord(row).then((res: any) => {
pdfPath.value = "/recruit/file/previewPdf?filePath=" + encodeURIComponent(res.data)
lqtzsVisible.value = true
})
}
const infoTable = (row: any) => {
window.open("printRecruitedStu.html?appId=" + row.id)
}
const suerLQTZ = () => {
useMessageBox().confirm('是否确认已打印本通知书?请谨慎操作').then(() => {
return sureLQTZ({ id: id.value })
}).then(() => {
message.success('保存成功')
lqtzsVisible.value = false
getDataList()
})
}
const rePushHandle = (row: any) => {
useMessageBox().confirm('是否确认重新推送本条数据?请谨慎操作').then(() => {
return rePush({ id: row.id })
}).then(() => {
message.success('推送成功')
getDataList()
})
}
const delayPayTimeSet = (row: any) => {
delayPayTime.value = ''
id.value = row.id
if (row.delayPaymentTime) {
delayPayTime.value = row.delayPaymentTime
}
delayPayTimeVisible.value = true
}
const updateInfoHandle = () => {
useMessageBox().confirm('是否确认进度延迟收费操作?请谨慎操作').then(() => {
return updateInfo({ delayPaymentTime: delayPayTime.value, id: id.value })
}).then(() => {
delayPayTimeVisible.value = false
message.success('延迟收费修改成功')
getDataList()
})
}
const updateFS = () => {
updateFs({ "serialNumber": tableData.value[0].serialNumber.substring(1, tableData.value[0].serialNumber.length) }).then(() => {
ElNotification.success({
title: '成功',
message: '已提交查询请求请等待1分钟后重新查询'
})
dialogFormVisible.value = false
getDataList()
})
}
const showPayCode = (row: any) => {
showPrise1.value = false
showPrise2.value = false
showPrise3.value = false
// 置空
payQrcode1.value = ""
payQrcode2.value = ""
payQrcode3.value = ""
if (row.clfPayCode == "" || row.clfPayCode == undefined) {
payQrcode1Msg.value = ""
showPrise1.value = false
} else {
payQrcode1Msg.value = "材料费、代办费"
showPrise1.value = true
payQrcode1.value = 'https://jscz.govpay.ccb.com/online/fsjf?PyF_BillNo=' + row.clfPayCode + '&Verf_CD=blank&Admn_Rgon_Cd=320400'
}
if (row.xfPayCode == "" || row.xfPayCode == undefined) {
payQrcode2Msg.value = ""
showPrise2.value = false
} else {
payQrcode2Msg.value = "学费"
showPrise2.value = true
payQrcode2.value = 'https://jscz.govpay.ccb.com/online/fsjf?PyF_BillNo=' + row.xfPayCode + '&Verf_CD=blank&Admn_Rgon_Cd=320400'
}
if (row.zdbPayCode == "" || row.zdbPayCode == undefined) {
payQrcode3Msg.value = ""
showPrise3.value = false
} else {
payQrcode3Msg.value = "中德班学费"
showPrise3.value = true
payQrcode3.value = 'https://jscz.govpay.ccb.com/online/fsjf?PyF_BillNo=' + row.zdbPayCode + '&Verf_CD=blank&Admn_Rgon_Cd=320400'
}
tableData.value = []
tableData.value.push(row)
dialogFormVisible.value = true
}
// 初始化
onMounted(() => {
init()
})
</script>