a
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="handleClose">关 闭</el-button>
|
||||
<el-button @click="handleConfirm" v-if="props.permissions.sureLQTZ && canConfirm" type="primary">确认已发放</el-button>
|
||||
<el-button @click="handleConfirm" v-auth="'recruit_recruitstudentsignup_sureLQTZ'" v-if="canConfirm" type="primary">确认已发放</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@@ -19,12 +19,6 @@ import { toWord, sureLQTZ } from '/@/api/recruit/recruitstudentsignup'
|
||||
|
||||
export default {
|
||||
name: 'AdmissionNoticeDialog',
|
||||
props: {
|
||||
permissions: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
},
|
||||
emits: ['refresh'],
|
||||
setup(props, { emit }) {
|
||||
const visible = ref(false)
|
||||
|
||||
@@ -271,16 +271,15 @@
|
||||
<el-row>
|
||||
<div class="mb15" style="width: 100%;">
|
||||
<el-button
|
||||
class="ml10"
|
||||
type="primary"
|
||||
icon="Plus"
|
||||
v-if="permissions.recruit_send_img"
|
||||
icon="FolderAdd"
|
||||
v-auth="'recruit_send_img'"
|
||||
@click="handleAddData">新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
v-if="permissions.zipExport"
|
||||
v-auth="'zipExport'"
|
||||
icon="Download"
|
||||
@click="downZip()">招生名单打包导出
|
||||
</el-button>
|
||||
@@ -296,7 +295,7 @@
|
||||
type="primary"
|
||||
plain
|
||||
icon="UploadFilled"
|
||||
v-if="permissions.recruit_send_img"
|
||||
v-auth="'recruit_send_img'"
|
||||
@click="handleSendImg()">图片同步
|
||||
</el-button>
|
||||
</div>
|
||||
@@ -314,59 +313,18 @@
|
||||
<el-table-column
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="140"
|
||||
label="操作">
|
||||
<template #default="scope">
|
||||
<el-button type="text" size="small" icon="el-icon-view" @click="addOrUpdateHandle(scope.row.id,0)">查看
|
||||
</el-button>
|
||||
<el-button v-if="permissions.recruit_recruitstudentsignup_edit" type="text" size="small"
|
||||
icon="el-icon-edit" @click="edit(scope.row.id)">补材料
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
v-if="permissions.recruit_recruitstudentsignup_interview && scope.row.degreeOfEducation == '3'"
|
||||
type="text" size="small"
|
||||
icon="el-icon-check" @click="interviewForm(scope.row)">面试
|
||||
</el-button>
|
||||
|
||||
<el-button v-if="permissions.recruit_recruitstudentsignup_edit && scope.row.auditStatus=='0'"
|
||||
type="text" size="small" icon="iconfont icon-rizhiguanli"
|
||||
@click="addOrUpdateHandle(scope.row.id,1)">审核
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
v-if="permissions.recruit_recruitstudentsignup_leaveSchool && scope.row.auditStatus=='20' && scope.row.isMajorChange!='1'"
|
||||
type="text" size="small" icon="el-icon-circle-close"
|
||||
@click="handleUpdate(scope.row.id,scope.row.groupId,scope.row.feeAgency)">退学
|
||||
</el-button>
|
||||
<el-button v-if="permissions.recruit_recruitstudentsignup_change && scope.row.auditStatus=='20' "
|
||||
type="text" size="small" @click="majorChange(scope.row.id)">
|
||||
调整专业
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="permissions.recruit_recruitstudentsignup_show && scope.row.pushed=='1' && scope.row.paiedOffline!='10'"
|
||||
type="text" icon="el-icon-tickets" size="small" plain @click="showPayCode(scope.row)">支付二维码
|
||||
</el-button>
|
||||
<!-- <el-button v-if="permissions.recruit_recruitstudentsignup_show && scope.row.pushed=='1' && scope.row.paiedOffline=='0' && scope.row.auditStatus=='20'" type="text" icon="el-icon-check" size="small" @click="delayPayTimeSet(scope.row)">延迟收费</el-button>-->
|
||||
<!-- <el-button-->
|
||||
<!-- v-if="permissions.recruit_recruitstudentsignup_rePush && scope.row.pushed=='0' && scope.row.auditStatus=='20'"-->
|
||||
<!-- type="text" icon="el-icon-check" size="small" plain @click="handleRePush(scope.row)">重新推送-->
|
||||
<!-- </el-button>-->
|
||||
|
||||
<el-button
|
||||
v-if="permissions.recruit_recruitstudentsignup_show && ((scope.row.degreeOfEducation=='1'&& scope.row.isOut=='1' && scope.row.auditStatus=='20')
|
||||
|| (scope.row.degreeOfEducation=='1'&& scope.row.isOut=='0' && scope.row.paiedOffline!='0' && scope.row.auditStatus=='20')
|
||||
|| (scope.row.degreeOfEducation=='2' && scope.row.isGradePic=='1' && scope.row.paiedOffline!='0' && scope.row.auditStatus=='20')
|
||||
|| (scope.row.degreeOfEducation=='3' && scope.row.isGradePic=='1' && scope.row.paiedOffline!='0' && scope.row.auditStatus=='20')
|
||||
) "
|
||||
type="text" icon="el-icon-check" size="small" plain @click="lqtz(scope.row)">录取通知书
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="permissions.recruit_recruitstudentsignup_show && scope.row.paiedOffline!='0' && scope.row.auditStatus=='20'"
|
||||
type="text" icon="el-icon-check" size="small" plain @click="infoTable(scope.row)">信息表
|
||||
</el-button>
|
||||
<!-- <el-button v-if="permissions.recruit_recruitstudentsignup_push && scope.row.auditStatus=='20'" type="text"-->
|
||||
<!-- icon="el-icon-upload" size="small" plain @click="handlePushCity(scope.row.id)">推送市局-->
|
||||
<!-- </el-button>-->
|
||||
<div style="display: flex; align-items: center;">
|
||||
<el-button type="primary" link icon="Document" @click="addOrUpdateHandle(scope.row.id,0)">
|
||||
查看
|
||||
</el-button>
|
||||
<ActionDropdown
|
||||
:items="getActionMenuItems(scope.row)"
|
||||
@command="(command) => handleMoreCommand(command, scope.row)"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
@@ -374,7 +332,7 @@
|
||||
prop="serialNumber"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="120"
|
||||
width="110"
|
||||
label="唯一号">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -389,63 +347,179 @@
|
||||
prop="name"
|
||||
header-align="center"
|
||||
align="left"
|
||||
width="250"
|
||||
min-width="250"
|
||||
label="资料检测">
|
||||
<template #default="scope">
|
||||
<div v-if="scope.row.isOut=='0'">
|
||||
<span >资料审核状态:</span>
|
||||
<span style="color: #b4bccc" v-if="scope.row.zlsh=='0'">未填写</span>
|
||||
<span style="color: green" v-if="scope.row.zlsh=='2' && scope.row.isOut=='0'">通过</span>
|
||||
<span style="color: #ff9900" v-if="scope.row.zlsh=='1' && scope.row.isOut=='0'">待审核</span>
|
||||
<span style="color: red" v-if="scope.row.zlsh=='3' && scope.row.isOut=='0'">驳回</span>
|
||||
<br/>
|
||||
<span v-if="scope.row.zlsh !='2'">材料状态:</span>
|
||||
<span style="color: #ff9900" v-if="!scope.row.graPic && scope.row.zlsh !='2'">缺少毕业证</span>
|
||||
<span style="color: #3c763d" v-if="scope.row.degreeOfEducation == '1' && scope.row.isOut == '1'">无需上传</span>
|
||||
<span style="color: #ff9900" v-if="scope.row.degreeOfEducation == '1' && scope.row.zlsh !='2' && !scope.row.yyPic && !scope.row.housePic && !scope.row.sbPic">, 缺新市民材料</span>
|
||||
<br />
|
||||
<span v-if="scope.row.zlsh=='3' && scope.row.zlshRemark !='' && scope.row.zlshRemark !=null">资料审核意见:</span>
|
||||
<span style="color: red" v-if="scope.row.zlsh=='3' && scope.row.zlshRemark !='' && scope.row.zlshRemark !=null">{{scope.row.zlshRemark}}</span>
|
||||
<div v-if="scope.row.isOut=='0'" class="material-check-cell">
|
||||
<!-- 资料审核状态 -->
|
||||
<div class="check-item">
|
||||
<span class="check-label">审核状态:</span>
|
||||
<el-tag v-if="scope.row.zlsh=='0'" type="info" size="small">未填写</el-tag>
|
||||
<el-tag v-else-if="scope.row.zlsh=='2'" type="success" size="small">
|
||||
<el-icon class="tag-icon"><CircleCheck /></el-icon>
|
||||
审核通过
|
||||
</el-tag>
|
||||
<el-tag v-else-if="scope.row.zlsh=='1'" type="warning" size="small">待审核</el-tag>
|
||||
<el-tag v-else-if="scope.row.zlsh=='3'" type="danger" size="small">
|
||||
<el-icon class="tag-icon"><CircleClose /></el-icon>
|
||||
审核驳回
|
||||
</el-tag>
|
||||
</div>
|
||||
|
||||
<!-- 材料状态 -->
|
||||
<div v-if="scope.row.zlsh !='2'" class="check-item">
|
||||
<span class="check-label">材料状态:</span>
|
||||
<div class="material-status">
|
||||
<el-tag v-if="!scope.row.graPic" type="warning" size="small" class="material-tag">
|
||||
<el-icon class="tag-icon"><Warning /></el-icon>
|
||||
缺少毕业证
|
||||
</el-tag>
|
||||
<el-tag v-if="scope.row.degreeOfEducation == '1' && scope.row.zlsh !='2' && !scope.row.yyPic && !scope.row.housePic && !scope.row.sbPic" type="warning" size="small" class="material-tag">
|
||||
<el-icon class="tag-icon"><Warning /></el-icon>
|
||||
缺新市民材料
|
||||
</el-tag>
|
||||
<span v-if="scope.row.degreeOfEducation == '1' && scope.row.isOut == '1'" class="no-upload-text">无需上传</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 审核意见 -->
|
||||
<div v-if="scope.row.zlsh=='3' && scope.row.zlshRemark" class="check-item check-remark">
|
||||
<span class="check-label">审核意见:</span>
|
||||
<div class="remark-content">
|
||||
<el-icon class="remark-icon"><Warning /></el-icon>
|
||||
<el-tooltip :content="scope.row.zlshRemark" placement="top" :show-after="300">
|
||||
<span class="remark-text">{{ scope.row.zlshRemark }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<span v-else class="empty-text">-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="confirmedMajor"
|
||||
header-align="center"
|
||||
align="left"
|
||||
align="center"
|
||||
label="录取专业">
|
||||
<template #default="scope">
|
||||
<span>录取状态:</span>
|
||||
<span v-if="scope.row.auditStatus==0"
|
||||
style="color: orange">{{ getLabelValue(auditStatusList, scope.row.auditStatus) }}</span>
|
||||
<span v-if="scope.row.auditStatus==20"
|
||||
style="color: green">{{ getLabelValue(auditStatusList, scope.row.auditStatus) }}</span>
|
||||
<span v-if="scope.row.auditStatus==-20"
|
||||
style="color: red">{{ getLabelValue(auditStatusList, scope.row.auditStatus) }}</span>
|
||||
<br/>
|
||||
<div v-if="scope.row.auditStatus==20">
|
||||
录取专业:
|
||||
{{ getMajorLabelWithYears(planMajorList, scope.row.confirmedMajor, { key: 'majorCode', value: 'majorName' }) }}<br/>
|
||||
</div>
|
||||
<div v-if="scope.row.auditStatus==20">
|
||||
录取时间:{{ dateFormat(scope.row.auditTime) }}
|
||||
</div>
|
||||
<div v-if="scope.row.degreeOfEducation == '3'">
|
||||
面试结果:{{ getLabelValue(interviewDicList, scope.row.interview) }}
|
||||
<span v-if="scope.row.interview == '-1' && scope.row.interviewReason"
|
||||
style="color: #ff9900">({{ scope.row.interviewReason }})</span>
|
||||
</div>
|
||||
<div v-if="scope.row.confirmedMajor">
|
||||
证书发放:
|
||||
<span v-if="scope.row.isBackTz=='0'" style="color: red">未发放</span>
|
||||
<span v-if="scope.row.isBackTz=='1'" style="color: green">已发放</span>
|
||||
</div>
|
||||
<div v-if="scope.row.confirmedMajor">
|
||||
发放人:
|
||||
<span v-if="scope.row.isBackTz=='0'" style="color: red"></span>
|
||||
<span v-if="scope.row.isBackTz=='1'" style="color: green">{{ scope.row.sendUserName }}</span>
|
||||
</div>
|
||||
</template>
|
||||
<el-table-column
|
||||
prop="auditStatus"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="110"
|
||||
label="录取状态">
|
||||
<template #default="scope">
|
||||
<el-tag
|
||||
v-if="getAuditStatusTagType(scope.row.auditStatus)"
|
||||
:type="getAuditStatusTagType(scope.row.auditStatus)"
|
||||
>
|
||||
{{ getLabelValue(auditStatusList, scope.row.auditStatus) }}
|
||||
</el-tag>
|
||||
<span v-else class="empty-text">-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="confirmedMajor"
|
||||
header-align="center"
|
||||
align="left"
|
||||
min-width="180"
|
||||
label="专业名称">
|
||||
<template #default="scope">
|
||||
<div v-if="scope.row.auditStatus==20" class="major-name">
|
||||
<el-icon class="major-icon"><Document /></el-icon>
|
||||
<span class="major-text">{{ getMajorLabelWithYears(planMajorList, scope.row.confirmedMajor, { key: 'majorCode', value: 'majorName' }) }}</span>
|
||||
</div>
|
||||
<span v-else class="empty-text">-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="auditTime"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="110"
|
||||
label="录取时间">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.auditStatus==20" class="time-text">{{ dateFormat(scope.row.auditTime) }}</span>
|
||||
<span v-else class="empty-text">-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="interview"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="110"
|
||||
label="面试结果">
|
||||
<template #default="scope">
|
||||
<div v-if="scope.row.degreeOfEducation == '3'" class="interview-cell">
|
||||
<!-- <IconText
|
||||
v-if="scope.row.interview == '1'"
|
||||
:icon="CircleCheck"
|
||||
:text="getLabelValue(interviewDicList, scope.row.interview)"
|
||||
type="success"
|
||||
size="small"
|
||||
align="center"
|
||||
/>
|
||||
<IconText
|
||||
v-else-if="scope.row.interview == '-1'"
|
||||
:icon="CircleClose"
|
||||
:text="getLabelValue(interviewDicList, scope.row.interview)"
|
||||
type="danger"
|
||||
size="small"
|
||||
align="center"
|
||||
/>
|
||||
<IconText
|
||||
v-else
|
||||
:text="getLabelValue(interviewDicList, scope.row.interview)"
|
||||
type="info"
|
||||
size="small"
|
||||
align="center"
|
||||
/> -->
|
||||
<span>{{ getLabelValue(interviewDicList, scope.row.interview) }}</span>
|
||||
<div v-if="scope.row.interview == '-1' && scope.row.interviewReason" class="interview-reason">
|
||||
<el-icon class="reason-icon"><Warning /></el-icon>
|
||||
<el-tooltip :content="scope.row.interviewReason" placement="top" :show-after="300">
|
||||
<span class="reason-text">{{ scope.row.interviewReason }}</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<span v-else class="empty-text">-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="isBackTz"
|
||||
header-align="center"
|
||||
align="center"
|
||||
min-width="150"
|
||||
label="证书发放/发放人">
|
||||
<template #default="scope">
|
||||
<div v-if="scope.row.confirmedMajor" class="certificate-sender-cell">
|
||||
<!-- <div class="certificate-status">
|
||||
<IconText
|
||||
v-if="scope.row.isBackTz=='0'"
|
||||
:icon="CircleClose"
|
||||
text="未发放"
|
||||
type="danger"
|
||||
align="center"
|
||||
/>
|
||||
<IconText
|
||||
v-else-if="scope.row.isBackTz=='1'"
|
||||
:icon="CircleCheck"
|
||||
text="已发放"
|
||||
type="success"
|
||||
align="center"
|
||||
/>
|
||||
</div> -->
|
||||
<span>{{ scope.row.isBackTz=='0' ? '未发放' : scope.row.isBackTz=='1' ? '已发放' : '-' }}</span>
|
||||
<div v-if="scope.row.isBackTz=='1' && scope.row.sendUserName" class="sender-info">
|
||||
<span class="sender-separator">/</span>
|
||||
<IconText
|
||||
:icon="User"
|
||||
:text="scope.row.sendUserName"
|
||||
align="center"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<span v-else class="empty-text">-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
@@ -460,7 +534,8 @@
|
||||
{{ getLabelValueByProps(deptList, scope.row.deptCode, { key: 'deptCode', value: 'deptName' }) }}
|
||||
</span> <br/>
|
||||
<span v-if="scope.row.auditStatus==20">
|
||||
({{scope.row.auditorName}})
|
||||
<span v-if="scope.row.auditorName">({{scope.row.auditorName}})</span>
|
||||
<span v-else>-</span>
|
||||
</span>
|
||||
|
||||
</template>
|
||||
@@ -473,7 +548,13 @@
|
||||
width="90"
|
||||
label="缴费状态">
|
||||
<template #default="scope">
|
||||
{{ getStatus(scope.row.paiedOffline) }}
|
||||
<el-tag
|
||||
v-if="getPaymentStatusTagType(scope.row.paiedOffline)"
|
||||
:type="getPaymentStatusTagType(scope.row.paiedOffline)"
|
||||
>
|
||||
{{ getStatus(scope.row.paiedOffline) }}
|
||||
</el-tag>
|
||||
<span v-else class="empty-text">{{ getStatus(scope.row.paiedOffline) || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -483,8 +564,11 @@
|
||||
width="90"
|
||||
label="推送状态">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.pushed==0" style="color: red">{{ getPushed(scope.row.pushed) }}</span>
|
||||
<span v-if="scope.row.pushed==1" style="color: green">{{ getPushed(scope.row.pushed) }}</span>
|
||||
<el-tag
|
||||
:type="scope.row.pushed == '0' ? 'danger' : 'success'"
|
||||
>
|
||||
{{ getPushed(scope.row.pushed) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
@@ -511,7 +595,7 @@
|
||||
|
||||
|
||||
<!-- 录取通知书弹窗 -->
|
||||
<AdmissionNoticeDialog ref="admissionNoticeDialogRef" :permissions="permissions" @refresh="getDataList"></AdmissionNoticeDialog>
|
||||
<AdmissionNoticeDialog ref="admissionNoticeDialogRef" @refresh="getDataList"></AdmissionNoticeDialog>
|
||||
|
||||
<DormFW ref="dormFWRef"></DormFW>
|
||||
<ShowMap ref="baiduMapRef"></ShowMap>
|
||||
@@ -521,11 +605,11 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="recruitstudentsignup">
|
||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent, watch } from 'vue'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { useUserInfo } from '/@/stores/userInfo'
|
||||
import { ref, reactive, onMounted, nextTick, defineAsyncComponent, watch } from 'vue'
|
||||
import { Edit, Check, DocumentChecked, Close, Switch, Tickets, Document, Upload, Warning, User, CircleCheck, CircleClose } from '@element-plus/icons-vue'
|
||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||
import { auth } from '/@/utils/authFunction'
|
||||
import axios from 'axios'
|
||||
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||
import {
|
||||
@@ -561,19 +645,7 @@ const InterviewForm = defineAsyncComponent(() => import('/@/views/recruit/recrui
|
||||
const PayQrcodeDialog = defineAsyncComponent(() => import('./PayQrcodeDialog.vue'))
|
||||
const DelayPayTimeDialog = defineAsyncComponent(() => import('./DelayPayTimeDialog.vue'))
|
||||
const AdmissionNoticeDialog = defineAsyncComponent(() => import('./AdmissionNoticeDialog.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
|
||||
})
|
||||
const ActionDropdown = defineAsyncComponent(() => import('/@/components/tools/action-dropdown.vue'))
|
||||
|
||||
// 消息提示 hooks
|
||||
const message = useMessage()
|
||||
@@ -895,7 +967,7 @@ const addOrUpdateHandle = (id?: string, type?: number) => {
|
||||
const edit = (id: string) => {
|
||||
nextTick(() => {
|
||||
updateRef.value?.init(id)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 专业调整
|
||||
@@ -932,6 +1004,26 @@ const resetForm = (formName: string) => {
|
||||
}
|
||||
}
|
||||
|
||||
// 获取录取状态标签类型
|
||||
const getAuditStatusTagType = (status: string | number) => {
|
||||
const statusMap: Record<string, string> = {
|
||||
'0': 'warning',
|
||||
'20': 'success',
|
||||
'-20': 'danger'
|
||||
}
|
||||
return statusMap[String(status)] || ''
|
||||
}
|
||||
|
||||
// 获取缴费状态标签类型
|
||||
const getPaymentStatusTagType = (status: string | number) => {
|
||||
const statusMap: Record<string, string> = {
|
||||
'0': 'danger', // 未缴费
|
||||
'5': 'warning', // 部分缴费
|
||||
'10': 'success' // 已缴费
|
||||
}
|
||||
return statusMap[String(status)] || ''
|
||||
}
|
||||
|
||||
// 缴费状态
|
||||
const getStatus = (type: string) => {
|
||||
return getLabelValue(paystatusList.value, type)
|
||||
@@ -1006,6 +1098,116 @@ const interviewForm = (row: any) => {
|
||||
})
|
||||
}
|
||||
|
||||
// 获取操作菜单项
|
||||
const getActionMenuItems = (row: any) => {
|
||||
return [
|
||||
{
|
||||
command: 'edit',
|
||||
label: '补材料',
|
||||
icon: Edit,
|
||||
visible: () => auth('recruit_recruitstudentsignup_edit')
|
||||
},
|
||||
{
|
||||
command: 'interview',
|
||||
label: '面试',
|
||||
icon: Check,
|
||||
visible: () => auth('recruit_recruitstudentsignup_interview') && row.degreeOfEducation == '3'
|
||||
},
|
||||
{
|
||||
command: 'audit',
|
||||
label: '审核',
|
||||
icon: DocumentChecked,
|
||||
visible: () => auth('recruit_recruitstudentsignup_edit') && row.auditStatus == '0'
|
||||
},
|
||||
{
|
||||
command: 'leaveSchool',
|
||||
label: '退学',
|
||||
icon: Close,
|
||||
visible: () => auth('recruit_recruitstudentsignup_leaveSchool') && row.auditStatus == '20' && row.isMajorChange != '1'
|
||||
},
|
||||
{
|
||||
command: 'majorChange',
|
||||
label: '调整专业',
|
||||
icon: Switch,
|
||||
visible: () => auth('recruit_recruitstudentsignup_change') && row.auditStatus == '20'
|
||||
},
|
||||
{
|
||||
command: 'payQrcode',
|
||||
label: '支付二维码',
|
||||
icon: Tickets,
|
||||
visible: () => auth('recruit_recruitstudentsignup_show') && row.pushed == '1' && row.paiedOffline != '10'
|
||||
},
|
||||
{
|
||||
command: 'rePush',
|
||||
label: '重新推送',
|
||||
icon: Check,
|
||||
visible: () => auth('recruit_recruitstudentsignup_rePush') && row.pushed == '0' && row.auditStatus == '20'
|
||||
},
|
||||
{
|
||||
command: 'admissionNotice',
|
||||
label: '录取通知书',
|
||||
icon: Document,
|
||||
visible: () => {
|
||||
if (!auth('recruit_recruitstudentsignup_show')) return false
|
||||
return (
|
||||
(row.degreeOfEducation == '1' && row.isOut == '1' && row.auditStatus == '20') ||
|
||||
(row.degreeOfEducation == '1' && row.isOut == '0' && row.paiedOffline != '0' && row.auditStatus == '20') ||
|
||||
(row.degreeOfEducation == '2' && row.isGradePic == '1' && row.paiedOffline != '0' && row.auditStatus == '20') ||
|
||||
(row.degreeOfEducation == '3' && row.isGradePic == '1' && row.paiedOffline != '0' && row.auditStatus == '20')
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
command: 'infoTable',
|
||||
label: '信息表',
|
||||
icon: Document,
|
||||
visible: () => auth('recruit_recruitstudentsignup_show') && row.paiedOffline != '0' && row.auditStatus == '20'
|
||||
},
|
||||
{
|
||||
command: 'pushCity',
|
||||
label: '推送市局',
|
||||
icon: Upload,
|
||||
visible: () => auth('recruit_recruitstudentsignup_push') && row.auditStatus == '20'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
// 处理更多操作命令
|
||||
const handleMoreCommand = (command: string, row: any) => {
|
||||
switch (command) {
|
||||
case 'edit':
|
||||
edit(row.id)
|
||||
break
|
||||
case 'interview':
|
||||
interviewForm(row)
|
||||
break
|
||||
case 'audit':
|
||||
addOrUpdateHandle(row.id, 1)
|
||||
break
|
||||
case 'leaveSchool':
|
||||
handleUpdate(row.id, row.groupId, row.feeAgency)
|
||||
break
|
||||
case 'majorChange':
|
||||
majorChange(row.id)
|
||||
break
|
||||
case 'payQrcode':
|
||||
showPayCode(row)
|
||||
break
|
||||
case 'admissionNotice':
|
||||
lqtz(row)
|
||||
break
|
||||
case 'infoTable':
|
||||
infoTable(row)
|
||||
break
|
||||
case 'rePush':
|
||||
handleRePush(row)
|
||||
break
|
||||
case 'pushCity':
|
||||
handlePushCity(row.id)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化
|
||||
const init = async () => {
|
||||
// 查询二级学院信息
|
||||
@@ -1059,5 +1261,188 @@ onMounted(() => {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 样式内容
|
||||
// 空值文本样式
|
||||
.empty-text {
|
||||
color: #909399;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
// 专业名称样式
|
||||
.major-name {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
|
||||
.major-icon {
|
||||
color: var(--el-color-primary);
|
||||
font-size: 14px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.major-text {
|
||||
color: #303133;
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
// 时间样式
|
||||
.time-text {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
// 面试结果样式
|
||||
.interview-cell {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
|
||||
.interview-reason {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-top: 4px;
|
||||
|
||||
.reason-icon {
|
||||
color: #ff9900;
|
||||
font-size: 12px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.reason-text {
|
||||
color: #ff9900;
|
||||
font-size: 12px;
|
||||
max-width: 85px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 证书发放/发放人样式
|
||||
.certificate-sender-cell {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 6px;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.certificate-status {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.sender-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 4px;
|
||||
|
||||
.sender-separator {
|
||||
color: #c0c4cc;
|
||||
font-size: 12px;
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
.sender-icon {
|
||||
font-size: 13px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.sender-text {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 资料检测样式
|
||||
.material-check-cell {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
padding: 4px 0;
|
||||
|
||||
.check-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 6px;
|
||||
line-height: 1.5;
|
||||
|
||||
.check-label {
|
||||
color: #606266;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
:deep(.el-tag) {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
vertical-align: middle;
|
||||
gap: 4px;
|
||||
line-height: 1;
|
||||
|
||||
.tag-icon {
|
||||
font-size: 12px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.material-status {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
gap: 6px;
|
||||
align-items: center;
|
||||
|
||||
.material-tag {
|
||||
margin: 0;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.no-upload-text {
|
||||
color: #67c23a;
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.check-remark {
|
||||
margin-top: 4px;
|
||||
|
||||
.remark-content {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 4px;
|
||||
flex: 1;
|
||||
|
||||
.remark-icon {
|
||||
color: #f56c6c;
|
||||
font-size: 14px;
|
||||
flex-shrink: 0;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.remark-text {
|
||||
color: #f56c6c;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
display: inline-block;
|
||||
max-width: 200px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -111,11 +111,11 @@
|
||||
import { ref, reactive, nextTick } from 'vue'
|
||||
import { ElNotification } from 'element-plus'
|
||||
import { useMessageBox } from '/@/hooks/message'
|
||||
import { getObj, changeMajor } from '@/api/recruit/recruitstudentsignup'
|
||||
import { getList } from "@/api/recruit/recruitstudentplangroup"
|
||||
import { listByEdu } from "@/api/recruit/recruitstudentplan"
|
||||
import { getDictByType } from "@/api/contract/contract"
|
||||
import { list as scoreList } from "@/api/recruit/recruitstudentplancorrectscoreconfig"
|
||||
import { getObj, changeMajor } from '/@/api/recruit/recruitstudentsignup'
|
||||
import { getList } from "/@/api/recruit/recruitstudentplangroup"
|
||||
import { listByEdu } from "/@/api/recruit/recruitstudentplan"
|
||||
import { getDictsByTypes } from "/@/api/admin/dict"
|
||||
import { list as scoreList } from "/@/api/recruit/recruitstudentplancorrectscoreconfig"
|
||||
|
||||
// 消息提示 hooks
|
||||
const messageBox = useMessageBox()
|
||||
@@ -323,10 +323,10 @@ const init = (id: string | null) => {
|
||||
dataFormRef.value?.resetFields()
|
||||
if (dataForm.id) {
|
||||
// 获取数据字典代办费
|
||||
getDictByType("agency_fee").then((res: any) => {
|
||||
getDictsByTypes(["agency_fee"]).then((res: any) => {
|
||||
agencyFeeList.value = res.data
|
||||
// 获取数据字典学费
|
||||
getDictByType("tuition_fee").then((res: any) => {
|
||||
getDictsByTypes(["tuition_fee"]).then((res: any) => {
|
||||
tuitionFeeList.value = res.data
|
||||
getObj(dataForm.id).then((response: any) => {
|
||||
Object.assign(dataForm, response.data)
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
:close-on-click-modal="false"
|
||||
v-model="visible"
|
||||
append-to-body
|
||||
width="90%">
|
||||
width="1000px">
|
||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit"
|
||||
label-width="170px" size="small">
|
||||
label-width="120px">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="招生计划" prop="groupId">
|
||||
<el-select v-model="dataForm.groupId" filterable :disabled="!!dataForm.id"
|
||||
placeholder="请选择招生计划" size="small" style="width: 100%">
|
||||
placeholder="请选择招生计划">
|
||||
<el-option
|
||||
v-for="item in planList"
|
||||
:key="item.id"
|
||||
@@ -23,16 +23,14 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input type="text" v-model="dataForm.name" :disabled="type != 1"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人" prop="contactName">
|
||||
<el-select v-model="dataForm.contactName" filterable clearable placeholder="" size="small" style="width: 100%" :disabled="!(permissions.recruit_recruitprestudent_dj_sure || dataForm.auditStatus != '20')">
|
||||
<el-select v-model="dataForm.contactName" filterable clearable placeholder="" :disabled="!(permissions.recruit_recruitprestudent_dj_sure || dataForm.auditStatus != '20')">
|
||||
<el-option
|
||||
v-for="item in contactNameList"
|
||||
:key="item.teacherNo"
|
||||
@@ -43,6 +41,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="成绩单" prop="scorePhoto">
|
||||
@@ -164,7 +163,7 @@
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="材料审核意见" prop="zlshRemark">
|
||||
<el-input v-model="dataForm.zlshRemark" placeholder="请输入审核意见" type="textarea" :rows="2" style="width: 80%;text-align:center;margin-top: 10px"></el-input>
|
||||
<el-input v-model="dataForm.zlshRemark" placeholder="请输入审核意见" type="textarea" :rows="2" ></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -173,8 +172,8 @@
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="dataFormSubmit('1')" v-if="canSubmit">保存</el-button>
|
||||
<el-button type="success" @click="dataFormSubmit('2')" v-if="canSubmit">通过</el-button>
|
||||
<el-button type="danger" @click="dataFormSubmit('3')" v-if="canSubmit">驳回</el-button>
|
||||
<el-button type="success" plain @click="dataFormSubmit('2')" v-if="canSubmit">通过</el-button>
|
||||
<el-button type="danger" plain @click="dataFormSubmit('3')" v-if="canSubmit">驳回</el-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -192,9 +191,9 @@ import { storeToRefs } from 'pinia'
|
||||
import { useUserInfo } from '/@/stores/userInfo'
|
||||
import { Session } from '/@/utils/storage'
|
||||
import axios from 'axios'
|
||||
import { getObj, updateInfo } from '@/api/recruit/recruitstudentsignup'
|
||||
import { getList } from "@/api/recruit/recruitstudentplangroup"
|
||||
import { queryAllTeacher } from "@/api/professional/teacherbase"
|
||||
import { getObj, updateInfo } from '/@/api/recruit/recruitstudentsignup'
|
||||
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||
import { queryAllTeacher } from '/@/api/professional/professionaluser/teacherbase'
|
||||
|
||||
// 使用 Pinia store
|
||||
const userInfoStore = useUserInfo()
|
||||
@@ -631,7 +630,12 @@ defineExpose({
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
<style lang="scss" scoped>
|
||||
.el-form{
|
||||
.el-form-item:last-of-type{
|
||||
margin-bottom:18px!important;
|
||||
}
|
||||
}
|
||||
.avatar-uploader-icon {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
|
||||
Reference in New Issue
Block a user