merge code
This commit is contained in:
@@ -171,3 +171,12 @@ export function queryDictByTypeList(types: string[]) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function editDormrange(obj: any) {
|
||||||
|
return request({
|
||||||
|
url: '/admin/dict/editDormrange',
|
||||||
|
method: 'post',
|
||||||
|
data: obj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -96,6 +96,24 @@ export const DORM_RANGE_STATUS_LIST = [
|
|||||||
{ label: "范围外", value: "2" }
|
{ label: "范围外", value: "2" }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// 发送短信状态
|
||||||
|
export const SEND_STATUS_LIST = [
|
||||||
|
{ label: "未发送", value: "0" },
|
||||||
|
{ label: "已发送", value: "1" }
|
||||||
|
];
|
||||||
|
|
||||||
|
// 手动设置状态
|
||||||
|
export const MANUAL_SET_STATUS_LIST = [
|
||||||
|
{ label: "未设置", value: "0" },
|
||||||
|
{ label: "已设置", value: "1" }
|
||||||
|
];
|
||||||
|
|
||||||
|
// 住宿申请状态
|
||||||
|
export const DORM_APPLY_STATUS_LIST = [
|
||||||
|
{ label: "未通过", value: "0" },
|
||||||
|
{ label: "申请通过", value: "1" }
|
||||||
|
];
|
||||||
|
|
||||||
// 面试结果
|
// 面试结果
|
||||||
export const INTERVIEW_DIC_LIST = [
|
export const INTERVIEW_DIC_LIST = [
|
||||||
{ label: "未面试", value: "0" ,type: "info",icon: "Document"},
|
{ label: "未面试", value: "0" ,type: "info",icon: "Document"},
|
||||||
@@ -134,3 +152,60 @@ export const getStatusConfig = (statusList: any[], value: string | number) => {
|
|||||||
return statusList.find(item => item.value === String(value));
|
return statusList.find(item => item.value === String(value));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取报到状态配置(用于 ClickableTag)
|
||||||
|
* 根据字典数据:0=未联系, 1=已经报到, 2=推迟报到, 3=放弃报到, 4=无法联系
|
||||||
|
* @param statusList 报到状态字典列表
|
||||||
|
* @param value 状态值
|
||||||
|
* @param iconMap 图标映射对象,包含 CircleCheck, CircleClose, DocumentChecked, Warning, Clock
|
||||||
|
* @returns 包含 label、type、icon 的配置对象
|
||||||
|
*/
|
||||||
|
export const getCheckInStatusConfig = (
|
||||||
|
statusList: any[],
|
||||||
|
value: string,
|
||||||
|
iconMap: {
|
||||||
|
CircleCheck: any
|
||||||
|
CircleClose: any
|
||||||
|
DocumentChecked: any
|
||||||
|
Warning: any
|
||||||
|
Clock: any
|
||||||
|
}
|
||||||
|
) => {
|
||||||
|
const item = statusList.find((item: any) => item.value === value)
|
||||||
|
if (!item) return null
|
||||||
|
|
||||||
|
let type: 'success' | 'info' | 'warning' | 'danger' = 'info'
|
||||||
|
let icon: any = null
|
||||||
|
|
||||||
|
// 根据状态值设置类型和图标
|
||||||
|
switch (value) {
|
||||||
|
case '1': // 已经报到
|
||||||
|
type = 'success'
|
||||||
|
icon = iconMap.CircleCheck
|
||||||
|
break
|
||||||
|
case '2': // 推迟报到
|
||||||
|
type = 'warning'
|
||||||
|
icon = iconMap.Clock
|
||||||
|
break
|
||||||
|
case '3': // 放弃报到
|
||||||
|
type = 'danger'
|
||||||
|
icon = iconMap.CircleClose
|
||||||
|
break
|
||||||
|
case '4': // 无法联系
|
||||||
|
type = 'danger'
|
||||||
|
icon = iconMap.Warning
|
||||||
|
break
|
||||||
|
case '0': // 未联系
|
||||||
|
default:
|
||||||
|
type = 'info'
|
||||||
|
icon = iconMap.DocumentChecked
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
label: item.label,
|
||||||
|
type,
|
||||||
|
icon
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
v-if="permissions.professional_professionalacademicqualificationsconfig_del"
|
v-if="permissions.professional_professionalacademicqualificationsconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
v-if="permissions.professional_outercompany_del"
|
v-if="permissions.professional_outercompany_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
v-if="permissions.professional_outercompany_del"
|
v-if="permissions.professional_outercompany_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
v-if="permissions.professional_outercompany_del"
|
v-if="permissions.professional_outercompany_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
text
|
text
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalacademicdegreeconfig_del"
|
v-if="permissions.professional_professionalacademicdegreeconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalacademiceducationtypeconfig_del"
|
v-if="permissions.professional_professionalacademiceducationtypeconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalatstation_del"
|
v-if="permissions.professional_professionalatstation_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalemploymentnature_del"
|
v-if="permissions.professional_professionalemploymentnature_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalmajorstation_del"
|
v-if="permissions.professional_professionalmajorstation_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalpaperconfig_del"
|
v-if="permissions.professional_professionalpaperconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
@click="handleEdit(scope.row)">编辑
|
@click="handleEdit(scope.row)">编辑
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="danger"
|
||||||
link
|
link
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
v-if="permissions.professional_professionalpartybranch_del"
|
v-if="permissions.professional_professionalpartybranch_del"
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalqualificationconfig_del"
|
v-if="permissions.professional_professionalqualificationconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -148,7 +148,7 @@
|
|||||||
@click="changeState(scope.row, -2)">驳回
|
@click="changeState(scope.row, -2)">驳回
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="danger"
|
||||||
link
|
link
|
||||||
icon="delete"
|
icon="delete"
|
||||||
v-if="permissions.professional_professionalqualificationrelation_del"
|
v-if="permissions.professional_professionalqualificationrelation_del"
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalstationdutylevel_del"
|
v-if="permissions.professional_professionalstationdutylevel_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalstationtype_del"
|
v-if="permissions.professional_professionalstationtype_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -174,7 +174,7 @@
|
|||||||
@click="changeState(scope.row, -2)">驳回
|
@click="changeState(scope.row, -2)">驳回
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="danger"
|
||||||
link
|
link
|
||||||
icon="delete"
|
icon="delete"
|
||||||
v-if="permissions.professional_professionalteacheracademicrelation_del"
|
v-if="permissions.professional_professionalteacheracademicrelation_del"
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalteachercertificateconf_del"
|
v-if="permissions.professional_professionalteachercertificateconf_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -144,7 +144,7 @@
|
|||||||
@click="changeState(scope.row, -2)">驳回
|
@click="changeState(scope.row, -2)">驳回
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="danger"
|
||||||
link
|
link
|
||||||
icon="delete"
|
icon="delete"
|
||||||
v-if="permissions.professional_professionalteachercertificaterelation_del"
|
v-if="permissions.professional_professionalteachercertificaterelation_del"
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
@click="changeState(scope.row, -2)">驳回
|
@click="changeState(scope.row, -2)">驳回
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="danger"
|
||||||
link
|
link
|
||||||
icon="delete"
|
icon="delete"
|
||||||
v-if="permissions.professional_professionalteacherhonor_del"
|
v-if="permissions.professional_professionalteacherhonor_del"
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalteachertype_del"
|
v-if="permissions.professional_professionalteachertype_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionalteachingmaterialconfig_del"
|
v-if="permissions.professional_professionalteachingmaterialconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionaltitlelevelconfig_del"
|
v-if="permissions.professional_professionaltitlelevelconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -183,7 +183,7 @@
|
|||||||
@click="changeState(scope.row, -2)">驳回
|
@click="changeState(scope.row, -2)">驳回
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="danger"
|
||||||
link
|
link
|
||||||
icon="delete"
|
icon="delete"
|
||||||
v-if="permissions.professional_professionaltitlerelation_del"
|
v-if="permissions.professional_professionaltitlerelation_del"
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionaltopiclevelconfig_del"
|
v-if="permissions.professional_professionaltopiclevelconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_professionaltopicsourceconfig_del"
|
v-if="permissions.professional_professionaltopicsourceconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
v-if="permissions.professional_worktype_del"
|
v-if="permissions.professional_worktype_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
v-if="permissions.professional_professionalyearbounds_del"
|
v-if="permissions.professional_professionalyearbounds_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -925,14 +925,8 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="150" align="center" v-if="permissions.politics_edit">
|
<el-table-column label="操作" width="150" align="center" v-if="permissions.politics_edit">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" link @click="handleEditPolitics(scope.row, scope.$index)">
|
<el-button type="primary" link icon="EditPen" @click="handleEditPolitics(scope.row, scope.$index)">编辑</el-button>
|
||||||
<el-icon><EditPen /></el-icon>
|
<el-button type="danger" link icon="Delete" style="margin-left: 12px" @click="handleDeletePolitics(scope.row, scope.$index)">删除</el-button>
|
||||||
<span>编辑</span>
|
|
||||||
</el-button>
|
|
||||||
<el-button type="primary" link @click="handleDeletePolitics(scope.row, scope.$index)">
|
|
||||||
<el-icon><Delete /></el-icon>
|
|
||||||
<span>删除</span>
|
|
||||||
</el-button>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -972,7 +966,7 @@
|
|||||||
<el-icon><EditPen /></el-icon>
|
<el-icon><EditPen /></el-icon>
|
||||||
<span>编辑</span>
|
<span>编辑</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button type="primary" link @click="handleDeleteRelation(scope.row, scope.$index)">
|
<el-button type="danger" link @click="handleDeleteRelation(scope.row, scope.$index)">
|
||||||
<el-icon><Delete /></el-icon>
|
<el-icon><Delete /></el-icon>
|
||||||
<span>删除</span>
|
<span>删除</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
v-if="permissions.professional_typeofworkconfig_del"
|
v-if="permissions.professional_typeofworkconfig_del"
|
||||||
icon="delete"
|
icon="delete"
|
||||||
link
|
link
|
||||||
type="primary"
|
type="danger"
|
||||||
style="margin-left: 12px"
|
style="margin-left: 12px"
|
||||||
@click="handleDel(scope.row)">删除
|
@click="handleDel(scope.row)">删除
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|||||||
@@ -1,28 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-dialog v-model="newStuCheckInDialog" width="40%">
|
<el-dialog v-model="newStuCheckInDialog" width="600">
|
||||||
<el-form :model="form" :rules="rules" ref="formRef" label-width="120px" class="demo-ruleForm">
|
<el-form :model="form" :rules="rules" ref="formRef" label-width="100px" class="demo-ruleForm">
|
||||||
<el-form-item label="姓名" prop="name">
|
<el-form-item label="姓名" prop="name">
|
||||||
<el-input v-model="form.name" disabled style="width: 80%" />
|
<el-input v-model="form.name" disabled/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="性别" prop="gender">
|
<el-form-item label="性别" prop="gender">
|
||||||
<el-select v-model="form.gender" placeholder="请选择性别" disabled style="width: 80%">
|
<el-radio-group v-model="form.gender">
|
||||||
<el-option
|
<el-radio v-for="item in genderData" :key="item.value" :label="item.value" :disabled="true">{{ item.label }}</el-radio>
|
||||||
v-for="item in genderData"
|
</el-radio-group>
|
||||||
:key="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="身份证号" prop="idNumber">
|
<el-form-item label="身份证号" prop="idNumber">
|
||||||
<el-input v-model="form.idNumber" disabled style="width: 80%" />
|
<el-input v-model="form.idNumber" disabled/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="报到状态" prop="backSchoolState">
|
<el-form-item label="报到状态" prop="backSchoolState">
|
||||||
<el-select v-model="form.backSchoolState" filterable placeholder="请选择报到状态" style="width: 80%">
|
<el-select v-model="form.backSchoolState" filterable placeholder="请选择报到状态">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in checkInStatusData"
|
v-for="item in checkInStatusData"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -33,13 +28,14 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="回校备注" prop="backSchoolRemark">
|
<el-form-item label="回校备注" prop="backSchoolRemark">
|
||||||
<el-input v-model="form.backSchoolRemark" :rows="2" style="width: 80%" />
|
<el-input v-model="form.backSchoolRemark" :rows="2" type="textarea"/>
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" @click="checkIn" :loading="submitLoading">确定</el-button>
|
|
||||||
<el-button @click="newStuCheckInDialog = false">取消</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="newStuCheckInDialog = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="checkIn" :loading="submitLoading">确定</el-button>
|
||||||
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -51,12 +47,12 @@ import { useDict } from '/@/hooks/dict'
|
|||||||
import { putBackObj } from '/@/api/recruit/recruitstudentsignup'
|
import { putBackObj } from '/@/api/recruit/recruitstudentsignup'
|
||||||
import { getDicts } from '/@/api/admin/dict'
|
import { getDicts } from '/@/api/admin/dict'
|
||||||
|
|
||||||
|
// 性别字典
|
||||||
|
const { sexy:genderData } = useDict('sexy')
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
|
|
||||||
// 字典
|
|
||||||
const { getTypeValue } = useDict()
|
|
||||||
|
|
||||||
// 定义 emits
|
// 定义 emits
|
||||||
const emit = defineEmits(['reload'])
|
const emit = defineEmits(['reload'])
|
||||||
|
|
||||||
@@ -69,12 +65,6 @@ const checkInStatusData = ref<any[]>([])
|
|||||||
const submitLoading = ref(false)
|
const submitLoading = ref(false)
|
||||||
const page = ref<any>({})
|
const page = ref<any>({})
|
||||||
|
|
||||||
// 固定数据
|
|
||||||
const genderData = [
|
|
||||||
{ label: '女', value: '2' },
|
|
||||||
{ label: '男', value: '1' }
|
|
||||||
]
|
|
||||||
|
|
||||||
// 表单数据
|
// 表单数据
|
||||||
const form = reactive({
|
const form = reactive({
|
||||||
id: '',
|
id: '',
|
||||||
@@ -140,10 +130,6 @@ const checkIn = async () => {
|
|||||||
message.success('报到成功')
|
message.success('报到成功')
|
||||||
emit('reload')
|
emit('reload')
|
||||||
newStuCheckInDialog.value = false
|
newStuCheckInDialog.value = false
|
||||||
} catch (error: any) {
|
|
||||||
if (error !== false) {
|
|
||||||
message.error(error.msg || '报到失败')
|
|
||||||
}
|
|
||||||
} finally {
|
} finally {
|
||||||
submitLoading.value = false
|
submitLoading.value = false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,14 @@
|
|||||||
<!--
|
|
||||||
- Copyright (c) 2018-2025, cyweb All rights reserved.
|
|
||||||
-
|
|
||||||
- Redistribution and use in source and binary forms, with or without
|
|
||||||
- modification, are permitted provided that the following conditions are met:
|
|
||||||
-
|
|
||||||
- Redistributions of source code must retain the above copyright notice,
|
|
||||||
- this list of conditions and the following disclaimer.
|
|
||||||
- Redistributions in binary form must reproduce the above copyright
|
|
||||||
- notice, this list of conditions and the following disclaimer in the
|
|
||||||
- documentation and/or other materials provided with the distribution.
|
|
||||||
- Neither the name of the pig4cloud.com developer nor the names of its
|
|
||||||
- contributors may be used to endorse or promote products derived from
|
|
||||||
- this software without specific prior written permission.
|
|
||||||
-
|
|
||||||
-->
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="tab-index-container">
|
<div class="tab-index-container">
|
||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<div class="search-form-wrapper">
|
<search-form
|
||||||
<el-form :model="queryForm" inline ref="searchFormRef">
|
v-show="showSearch"
|
||||||
|
:model="queryForm"
|
||||||
|
ref="searchFormRef"
|
||||||
|
@keyup-enter="getDataList"
|
||||||
|
>
|
||||||
|
<template #default="{ visible }">
|
||||||
|
<template v-if="visible">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划" @change="chanMajor">
|
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划" @change="chanMajor">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -53,6 +42,8 @@
|
|||||||
<el-form-item label="唯一号/姓名/身份证号/学校名称" prop="search">
|
<el-form-item label="唯一号/姓名/身份证号/学校名称" prop="search">
|
||||||
<el-input v-model="queryForm.search" clearable placeholder="唯一号/姓名/身份证号/学校名称" />
|
<el-input v-model="queryForm.search" clearable placeholder="唯一号/姓名/身份证号/学校名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
<el-form-item label="缴费状态" prop="paystatus">
|
<el-form-item label="缴费状态" prop="paystatus">
|
||||||
<el-select v-model="queryForm.paystatus" filterable clearable placeholder="请选择缴费状态">
|
<el-select v-model="queryForm.paystatus" filterable clearable placeholder="请选择缴费状态">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -83,12 +74,15 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
<template #actions>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</template>
|
||||||
</div>
|
</search-form>
|
||||||
|
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="action-buttons-wrapper mb15">
|
<div class="action-buttons-wrapper mb15">
|
||||||
@@ -101,7 +95,7 @@
|
|||||||
名单导出
|
名单导出
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentsignup_allCX"
|
v-auth="'recruit_recruitstudentsignup_allCX'"
|
||||||
type="primary"
|
type="primary"
|
||||||
plain
|
plain
|
||||||
icon="Search"
|
icon="Search"
|
||||||
@@ -110,6 +104,12 @@
|
|||||||
>
|
>
|
||||||
批量查询
|
批量查询
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<right-toolbar
|
||||||
|
@queryTable="getDataList"
|
||||||
|
class="ml10"
|
||||||
|
style="float: right; "
|
||||||
|
v-model:showSearch="showSearch"
|
||||||
|
></right-toolbar>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
@@ -125,28 +125,6 @@
|
|||||||
:header-cell-style="tableStyle.headerCellStyle"
|
:header-cell-style="tableStyle.headerCellStyle"
|
||||||
>
|
>
|
||||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||||
<el-table-column label="操作" width="200" align="center" fixed="left">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
v-if="permissions.recruit_recruitstudentsignup_show && scope.row.pushed == '1' && scope.row.paiedOffline != '10' && (scope.row.clfPayCode != undefined && scope.row.clfPayCode != '')"
|
|
||||||
type="primary"
|
|
||||||
link
|
|
||||||
icon="QrCode"
|
|
||||||
@click="showPayCode(scope.row)"
|
|
||||||
>
|
|
||||||
支付二维码
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-if="permissions.recruit_recruitstudentsignup_back"
|
|
||||||
type="success"
|
|
||||||
link
|
|
||||||
icon="CircleCheck"
|
|
||||||
@click="handleCheckIn(scope.row)"
|
|
||||||
>
|
|
||||||
报到
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="serialNumber" label="唯一号" align="center" show-overflow-tooltip />
|
<el-table-column prop="serialNumber" label="唯一号" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="deptCode" label="学院" align="center" show-overflow-tooltip>
|
<el-table-column prop="deptCode" label="学院" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@@ -163,29 +141,113 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="name" label="姓名" align="center" show-overflow-tooltip />
|
<el-table-column prop="name" label="姓名" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="gender" label="性别" align="center" show-overflow-tooltip>
|
<el-table-column prop="gender" label="性别" width="80" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<GenderTag :sex="scope.row.gender" />
|
<GenderTag :sex="scope.row.gender" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="idNumber" label="身份证号" align="center" show-overflow-tooltip />
|
<el-table-column prop="idNumber" label="身份证号" width="190" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="parentTelOne" label="家长电话1" align="center" show-overflow-tooltip />
|
<el-table-column prop="parentTelOne" label="家长电话1" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="parentTelTwo" label="家长电话2" align="center" show-overflow-tooltip />
|
<el-table-column prop="parentTelTwo" label="家长电话2" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="backSchoolState" label="报到状态" align="center" show-overflow-tooltip>
|
<el-table-column prop="backSchoolState" label="报到状态" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getBackSchoolStateLabel(scope.row.backSchoolState) }}
|
<template v-if="getBackSchoolStateConfig(scope.row.backSchoolState)">
|
||||||
|
<!-- 有备注信息时,使用 popover 包裹 ClickableTag -->
|
||||||
|
<DetailPopover
|
||||||
|
v-if="scope.row.backSchoolRemark"
|
||||||
|
title="报到详情"
|
||||||
|
:width="300"
|
||||||
|
:items="[
|
||||||
|
{
|
||||||
|
label: '报到状态',
|
||||||
|
layout: 'horizontal',
|
||||||
|
content: getBackSchoolStateConfig(scope.row.backSchoolState)?.label
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '备注信息',
|
||||||
|
content: scope.row.backSchoolRemark,
|
||||||
|
contentClass: 'reason-content'
|
||||||
|
}
|
||||||
|
]">
|
||||||
|
<template #reference>
|
||||||
|
<ClickableTag
|
||||||
|
:type="getBackSchoolStateConfig(scope.row.backSchoolState)?.type || 'info'"
|
||||||
|
:left-icon="getBackSchoolStateConfig(scope.row.backSchoolState)?.icon"
|
||||||
|
>
|
||||||
|
{{ getBackSchoolStateConfig(scope.row.backSchoolState)?.label }}
|
||||||
|
</ClickableTag>
|
||||||
|
</template>
|
||||||
|
<template #content-0>
|
||||||
|
<ClickableTag
|
||||||
|
:type="getBackSchoolStateConfig(scope.row.backSchoolState)?.type || 'info'"
|
||||||
|
:left-icon="getBackSchoolStateConfig(scope.row.backSchoolState)?.icon"
|
||||||
|
:right-icon="null"
|
||||||
|
>
|
||||||
|
{{ getBackSchoolStateConfig(scope.row.backSchoolState)?.label }}
|
||||||
|
</ClickableTag>
|
||||||
|
</template>
|
||||||
|
<template #content-1>
|
||||||
|
<div class="reason-content">
|
||||||
|
<el-icon class="reason-icon"><Warning /></el-icon>
|
||||||
|
<span>{{ scope.row.backSchoolRemark }}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</DetailPopover>
|
||||||
|
<!-- 无备注时,直接显示 ClickableTag -->
|
||||||
|
<ClickableTag
|
||||||
|
v-else
|
||||||
|
:type="getBackSchoolStateConfig(scope.row.backSchoolState)?.type || 'info'"
|
||||||
|
:left-icon="getBackSchoolStateConfig(scope.row.backSchoolState)?.icon"
|
||||||
|
:right-icon="null"
|
||||||
|
>
|
||||||
|
{{ getBackSchoolStateConfig(scope.row.backSchoolState)?.label }}
|
||||||
|
</ClickableTag>
|
||||||
|
</template>
|
||||||
|
<span v-else class="empty-text">-</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="backSchoolRemark" label="报到备注" align="center" show-overflow-tooltip />
|
<el-table-column prop="paiedOffline" label="缴费状态" width="110" align="center" show-overflow-tooltip>
|
||||||
<el-table-column prop="paiedOffline" label="缴费状态" align="center" show-overflow-tooltip>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{ getStatus(scope.row.paiedOffline) }}
|
<el-tag
|
||||||
|
v-if="getStatusConfig(paystatusList, scope.row.paiedOffline)"
|
||||||
|
:type="getStatusConfig(paystatusList, scope.row.paiedOffline)?.type"
|
||||||
|
>
|
||||||
|
{{ getStatusConfig(paystatusList, scope.row.paiedOffline)?.label }}
|
||||||
|
</el-tag>
|
||||||
|
<span v-else class="empty-text">{{ getStatusConfig(paystatusList, scope.row.paiedOffline)?.label || '-' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="pushed" label="推送状态" align="center" show-overflow-tooltip>
|
<el-table-column prop="pushed" label="推送状态" width="110" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.pushed == 0" style="color: red">{{ getPushed(scope.row.pushed) }}</span>
|
<el-tag
|
||||||
<span v-if="scope.row.pushed == 1" style="color: green">{{ getPushed(scope.row.pushed) }}</span>
|
:type="getStatusConfig(pushedList, scope.row.pushed)?.type"
|
||||||
|
>
|
||||||
|
{{ getStatusConfig(pushedList, scope.row.pushed)?.label }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="200" align="center" fixed="right">
|
||||||
|
<template #default="scope">
|
||||||
|
|
||||||
|
<el-button
|
||||||
|
v-auth="'recruit_recruitstudentsignup_show'"
|
||||||
|
v-if="scope.row.pushed == '1' && scope.row.paiedOffline != '10' && (scope.row.clfPayCode != undefined && scope.row.clfPayCode != '')"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
:icon="Tickets"
|
||||||
|
@click="showPayCode(scope.row)"
|
||||||
|
>
|
||||||
|
支付二维码
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-auth="'recruit_recruitstudentsignup_back'"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
icon="EditPen"
|
||||||
|
@click="handleCheckIn(scope.row)"
|
||||||
|
>
|
||||||
|
报到
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -207,7 +269,7 @@
|
|||||||
<el-table-column label="姓名" prop="name" align="center" />
|
<el-table-column label="姓名" prop="name" align="center" />
|
||||||
<el-table-column label="家长手机号" prop="parentTelOne" align="center" />
|
<el-table-column label="家长手机号" prop="parentTelOne" align="center" />
|
||||||
<el-table-column label="操作" align="center">
|
<el-table-column label="操作" align="center">
|
||||||
<template #default="scope">
|
<template #default>
|
||||||
<el-button type="danger" icon="Search" @click="updateFS">立即查询</el-button>
|
<el-button type="danger" icon="Search" @click="updateFS">立即查询</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -236,33 +298,23 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="backSchoolCheckinTabIndex">
|
<script setup lang="ts" name="backSchoolCheckinTabIndex">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent, defineExpose } from 'vue'
|
import { ref, reactive, onMounted, nextTick, defineAsyncComponent, defineExpose } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { backPush, backSchoolStuPage, batchPushAll } from '/@/api/recruit/recruitstudentsignup'
|
import { backSchoolStuPage } from '/@/api/recruit/recruitstudentsignup'
|
||||||
import { getDeptList } from '/@/api/basic/basicclass'
|
import { getDeptList } from '/@/api/basic/basicclass'
|
||||||
import { listPlanByCondition as planMajor } from '/@/api/recruit/recruitstudentplan'
|
import { listPlanByCondition as planMajor } from '/@/api/recruit/recruitstudentplan'
|
||||||
import { updateFs, updateAllFS as updateAllFSApi } from '/@/api/finance/financenormalstu'
|
import { updateFs, updateAllFS as updateAllFSApi } from '/@/api/finance/financenormalstu'
|
||||||
import { getDicts } from '/@/api/admin/dict'
|
import { getDicts } from '/@/api/admin/dict'
|
||||||
|
import { PAY_STATUS_LIST,PUSHED_STATUS_LIST,getStatusConfig, getCheckInStatusConfig } from '/@/config/global'
|
||||||
|
import { CircleCheck, CircleClose, DocumentChecked, Warning, Clock, Tickets } from '@element-plus/icons-vue'
|
||||||
|
|
||||||
const StuCheckIn = defineAsyncComponent(() => import('./stu-check-in.vue'))
|
const StuCheckIn = defineAsyncComponent(() => import('./stu-check-in.vue'))
|
||||||
const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue'))
|
const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue'))
|
||||||
|
const SearchForm = defineAsyncComponent(() => import('/@/components/SearchForm/index.vue'))
|
||||||
// 使用 Pinia store
|
const ClickableTag = defineAsyncComponent(() => import('/@/components/ClickableTag/index.vue'))
|
||||||
const userInfoStore = useUserInfo()
|
const DetailPopover = defineAsyncComponent(() => import('/@/components/DetailPopover/index.vue'))
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
@@ -272,13 +324,16 @@ const tableRef = ref()
|
|||||||
const searchFormRef = ref()
|
const searchFormRef = ref()
|
||||||
const stuCheckInRef = ref()
|
const stuCheckInRef = ref()
|
||||||
|
|
||||||
|
// 搜索表单显示状态
|
||||||
|
const showSearch = ref(true)
|
||||||
|
|
||||||
// 数据
|
// 数据
|
||||||
const planList = ref<any[]>([])
|
const planList = ref<any[]>([])
|
||||||
const planMajorList = ref<any[]>([])
|
const planMajorList = ref<any[]>([])
|
||||||
const deptList = ref<any[]>([])
|
const deptList = ref<any[]>([])
|
||||||
const backSchoolStateList = ref<any[]>([])
|
const backSchoolStateList = ref<any[]>([])
|
||||||
const paystatusList = ref([{ label: '已缴费', value: '10' }, { label: '未缴费', value: '0' }, { label: '部分缴费', value: '5' }])
|
const paystatusList = PAY_STATUS_LIST
|
||||||
const pushedList = ref([{ label: '未推送', value: '0' }, { label: '已推送', value: '1' }])
|
const pushedList = PUSHED_STATUS_LIST
|
||||||
|
|
||||||
// 查询表单
|
// 查询表单
|
||||||
const queryForm = reactive({
|
const queryForm = reactive({
|
||||||
@@ -318,43 +373,15 @@ const getMajorName = (majorCode: string) => {
|
|||||||
return item ? item.majorName : ''
|
return item ? item.majorName : ''
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取性别
|
// 获取报到状态配置(用于 ClickableTag)
|
||||||
const getGender = (gender: string) => {
|
const getBackSchoolStateConfig = (value: string) => {
|
||||||
if (gender == '2') {
|
return getCheckInStatusConfig(backSchoolStateList.value, value, {
|
||||||
return '女'
|
CircleCheck,
|
||||||
}
|
CircleClose,
|
||||||
if (gender == '1') {
|
DocumentChecked,
|
||||||
return '男'
|
Warning,
|
||||||
}
|
Clock
|
||||||
return ''
|
})
|
||||||
}
|
|
||||||
|
|
||||||
// 获取报到状态标签
|
|
||||||
const getBackSchoolStateLabel = (value: string) => {
|
|
||||||
const item = backSchoolStateList.value.find(item => item.value === value)
|
|
||||||
return item ? item.label : ''
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取缴费状态
|
|
||||||
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 ''
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 表格状态
|
// 表格状态
|
||||||
@@ -388,6 +415,7 @@ const getMajorList = async (groupId: string) => {
|
|||||||
const data = await planMajor({ groupId })
|
const data = await planMajor({ groupId })
|
||||||
planMajorList.value = data.data || []
|
planMajorList.value = data.data || []
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
console.error('获取专业列表失败', error)
|
console.error('获取专业列表失败', error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -413,6 +441,7 @@ const init = async () => {
|
|||||||
|
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
console.error('初始化失败', error)
|
console.error('初始化失败', error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -420,7 +449,7 @@ const init = async () => {
|
|||||||
// 打开报到窗口
|
// 打开报到窗口
|
||||||
const handleCheckIn = (row: any) => {
|
const handleCheckIn = (row: any) => {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
stuCheckInRef.value?.init(row, state.pagination.current)
|
stuCheckInRef.value?.init(row, state.pagination?.current || 1)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -445,7 +474,7 @@ const updateAllFS = async () => {
|
|||||||
message.success('正在更新所有缴费单状态,请稍后查看更新结果')
|
message.success('正在更新所有缴费单状态,请稍后查看更新结果')
|
||||||
}
|
}
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
message.error(error.msg || '操作失败')
|
// console.log(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -559,9 +588,6 @@ onMounted(() => {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-form-wrapper {
|
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.action-buttons-wrapper {
|
.action-buttons-wrapper {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
@@ -583,4 +609,33 @@ onMounted(() => {
|
|||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.empty-text {
|
||||||
|
color: #909399;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reason-content {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
background-color: #fef0f0;
|
||||||
|
border-radius: 4px;
|
||||||
|
border-left: 3px solid #f56c6c;
|
||||||
|
|
||||||
|
.reason-icon {
|
||||||
|
color: #f56c6c;
|
||||||
|
font-size: 16px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: #f56c6c;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 1.6;
|
||||||
|
word-break: break-all;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -15,8 +15,7 @@
|
|||||||
v-model="queryForm.deptCode"
|
v-model="queryForm.deptCode"
|
||||||
filterable
|
filterable
|
||||||
clearable
|
clearable
|
||||||
placeholder="请选择学院"
|
placeholder="请选择学院">
|
||||||
style="width: 200px">
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in deptList"
|
v-for="item in deptList"
|
||||||
:key="item.deptCode"
|
:key="item.deptCode"
|
||||||
@@ -30,8 +29,7 @@
|
|||||||
v-model="queryForm.grade"
|
v-model="queryForm.grade"
|
||||||
filterable
|
filterable
|
||||||
clearable
|
clearable
|
||||||
placeholder="请选择入学年份"
|
placeholder="请选择入学年份">
|
||||||
style="width: 150px">
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in planList"
|
v-for="item in planList"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -45,8 +43,7 @@
|
|||||||
v-model="queryForm.classCode"
|
v-model="queryForm.classCode"
|
||||||
filterable
|
filterable
|
||||||
clearable
|
clearable
|
||||||
placeholder="请选择班级"
|
placeholder="请选择班级">
|
||||||
style="width: 200px">
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in classList"
|
v-for="item in classList"
|
||||||
:key="item.classCode"
|
:key="item.classCode"
|
||||||
@@ -60,8 +57,7 @@
|
|||||||
v-model="queryForm.checkInStatus"
|
v-model="queryForm.checkInStatus"
|
||||||
filterable
|
filterable
|
||||||
clearable
|
clearable
|
||||||
placeholder="请选择报到状态"
|
placeholder="请选择报到状态">
|
||||||
style="width: 150px">
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in checkInStatusData"
|
v-for="item in checkInStatusData"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -75,10 +71,13 @@
|
|||||||
v-model="queryForm.isDormApply"
|
v-model="queryForm.isDormApply"
|
||||||
filterable
|
filterable
|
||||||
clearable
|
clearable
|
||||||
placeholder="请选择住宿申请"
|
placeholder="请选择住宿申请">
|
||||||
style="width: 150px">
|
<el-option
|
||||||
<el-option label="未通过" value="0" />
|
v-for="item in dormApplyStatusList"
|
||||||
<el-option label="申请通过" value="1" />
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
@@ -91,7 +90,7 @@
|
|||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_newstucheckin_output"
|
v-auth="'recruit_newstucheckin_output'"
|
||||||
type="warning"
|
type="warning"
|
||||||
plain
|
plain
|
||||||
icon="Download"
|
icon="Download"
|
||||||
@@ -128,9 +127,14 @@
|
|||||||
<el-table-column prop="idNumber" label="身份证号" align="center" show-overflow-tooltip />
|
<el-table-column prop="idNumber" label="身份证号" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="checkInStatus" label="报到状态" align="center" show-overflow-tooltip>
|
<el-table-column prop="checkInStatus" label="报到状态" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag v-if="scope.row.checkInStatus">
|
<ClickableTag
|
||||||
{{ getCheckInStatusLabel(scope.row.checkInStatus) }}
|
v-if="getCheckInStatusConfigLocal(scope.row.checkInStatus)"
|
||||||
</el-tag>
|
:type="getCheckInStatusConfigLocal(scope.row.checkInStatus)?.type || 'info'"
|
||||||
|
:left-icon="getCheckInStatusConfigLocal(scope.row.checkInStatus)?.icon"
|
||||||
|
:right-icon="null">
|
||||||
|
{{ getCheckInStatusConfigLocal(scope.row.checkInStatus)?.label }}
|
||||||
|
</ClickableTag>
|
||||||
|
<span v-else class="empty-text">-</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="isRoom" label="是否住宿" align="center" width="120">
|
<el-table-column prop="isRoom" label="是否住宿" align="center" width="120">
|
||||||
@@ -155,29 +159,21 @@
|
|||||||
}
|
}
|
||||||
]">
|
]">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-tag type="success" class="dorm-tag">
|
<ClickableTag
|
||||||
|
type="success"
|
||||||
|
>
|
||||||
{{ getStatusConfig(yes_no_type, scope.row.isRoom)?.label }}
|
{{ getStatusConfig(yes_no_type, scope.row.isRoom)?.label }}
|
||||||
<el-icon class="info-icon"><InfoFilled /></el-icon>
|
</ClickableTag>
|
||||||
</el-tag>
|
|
||||||
</template>
|
</template>
|
||||||
<!-- 住宿申请状态 -->
|
<!-- 住宿申请状态 -->
|
||||||
<template #content-0>
|
<template #content-0>
|
||||||
<div class="dorm-apply-content">
|
<div class="dorm-apply-content">
|
||||||
<ClickableTag
|
<ClickableTag
|
||||||
v-if="scope.row.isDormApply == '1'"
|
v-if="getStatusConfig(dormApplyStatusList, scope.row.isDormApply)"
|
||||||
type="success"
|
:type="scope.row.isDormApply == '1'?'success':'danger'"
|
||||||
size="small"
|
:left-icon="scope.row.isDormApply == '1'?'CircleCheck':'CircleClose'"
|
||||||
:left-icon="CircleCheck"
|
|
||||||
:right-icon="null">
|
:right-icon="null">
|
||||||
申请通过
|
{{getStatusConfig(dormApplyStatusList, scope.row.isDormApply)?.label}}
|
||||||
</ClickableTag>
|
|
||||||
<ClickableTag
|
|
||||||
v-else-if="scope.row.isDormApply == '0'"
|
|
||||||
type="danger"
|
|
||||||
size="small"
|
|
||||||
:left-icon="CircleClose"
|
|
||||||
:right-icon="null">
|
|
||||||
未通过
|
|
||||||
</ClickableTag>
|
</ClickableTag>
|
||||||
<span v-else class="empty-text">-</span>
|
<span v-else class="empty-text">-</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -208,16 +204,8 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="residenceDetail" label="居住地址" align="center" show-overflow-tooltip />
|
<el-table-column prop="residenceDetail" label="居住地址" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="parentName" label="家庭联系人" width="100" align="center" show-overflow-tooltip />
|
<el-table-column prop="parentName" label="家庭联系人" width="100" align="center" show-overflow-tooltip />
|
||||||
<el-table-column label="家长电话" align="center" show-overflow-tooltip>
|
<el-table-column label="家长电话1" align="center" prop="parentTelOne" show-overflow-tooltip></el-table-column>
|
||||||
<template #default="scope">
|
<el-table-column label="家长电话2" align="center" prop="parentTelTwo" show-overflow-tooltip></el-table-column>
|
||||||
<div v-if="scope.row.parentTelOne || scope.row.parentTelTwo" class="parent-tel">
|
|
||||||
<span v-if="scope.row.parentTelOne" class="tel-item">{{ scope.row.parentTelOne }}</span>
|
|
||||||
<span v-if="scope.row.parentTelOne && scope.row.parentTelTwo" class="tel-separator">/</span>
|
|
||||||
<span v-if="scope.row.parentTelTwo" class="tel-item">{{ scope.row.parentTelTwo }}</span>
|
|
||||||
</div>
|
|
||||||
<span v-else class="empty-text">-</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="remarks" label="备注" align="center" show-overflow-tooltip />
|
<el-table-column prop="remarks" label="备注" align="center" show-overflow-tooltip />
|
||||||
<el-table-column label="操作" width="100" align="center" fixed="right">
|
<el-table-column label="操作" width="100" align="center" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@@ -248,21 +236,19 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="newstucheckin">
|
<script setup lang="ts" name="newstucheckin">
|
||||||
import { ref, reactive, computed, onMounted, defineAsyncComponent } from 'vue'
|
import { ref, reactive, onMounted, defineAsyncComponent } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage } from '/@/hooks/message'
|
import { useMessage } from '/@/hooks/message'
|
||||||
import { fetchList } from '/@/api/recruit/newstucheckin'
|
import { fetchList } from '/@/api/recruit/newstucheckin'
|
||||||
import { getDictsByTypes } from '/@/api/admin/dict'
|
import { getDictsByTypes } from '/@/api/admin/dict'
|
||||||
import { useDict } from '/@/hooks/dict'
|
import { useDict } from '/@/hooks/dict'
|
||||||
import request from '/@/utils/request'
|
import request from '/@/utils/request'
|
||||||
import { getStatusConfig } from '/@/config/global'
|
import { getStatusConfig, getCheckInStatusConfig, DORM_APPLY_STATUS_LIST } from '/@/config/global'
|
||||||
import { getDeptList, getClassListByRole } from '/@/api/basic/basicclass'
|
import { getDeptList, getClassListByRole } from '/@/api/basic/basicclass'
|
||||||
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import DetailPopover from '/@/components/DetailPopover/index.vue'
|
import DetailPopover from '/@/components/DetailPopover/index.vue'
|
||||||
import ClickableTag from '/@/components/ClickableTag/index.vue'
|
import ClickableTag from '/@/components/ClickableTag/index.vue'
|
||||||
import { InfoFilled, CircleCheck, CircleClose, HomeFilled, Grid } from '@element-plus/icons-vue'
|
import { InfoFilled, CircleCheck, CircleClose, DocumentChecked, Warning, Clock } from '@element-plus/icons-vue'
|
||||||
|
|
||||||
const StuCheckIn = defineAsyncComponent(() => import('./stu-check-in.vue'))
|
const StuCheckIn = defineAsyncComponent(() => import('./stu-check-in.vue'))
|
||||||
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
|
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
|
||||||
@@ -271,18 +257,8 @@ const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/ind
|
|||||||
// 是否住宿字典
|
// 是否住宿字典
|
||||||
const { yes_no_type } = useDict('yes_no_type')
|
const { yes_no_type } = useDict('yes_no_type')
|
||||||
|
|
||||||
// 使用 Pinia store
|
// 住宿申请状态列表
|
||||||
const userInfoStore = useUserInfo()
|
const dormApplyStatusList = DORM_APPLY_STATUS_LIST
|
||||||
const { userInfos } = storeToRefs(userInfoStore)
|
|
||||||
|
|
||||||
// 创建权限对象
|
|
||||||
const permissions = computed(() => {
|
|
||||||
const perms: Record<string, boolean> = {}
|
|
||||||
userInfos.value.authBtnList.forEach((perm: string) => {
|
|
||||||
perms[perm] = true
|
|
||||||
})
|
|
||||||
return perms
|
|
||||||
})
|
|
||||||
|
|
||||||
// 消息提示 hooks
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
@@ -341,10 +317,15 @@ const state: BasicTableProps = reactive<BasicTableProps>({
|
|||||||
// 使用 table hook
|
// 使用 table hook
|
||||||
const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTable(state)
|
const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTable(state)
|
||||||
|
|
||||||
// 获取报到状态标签
|
// 获取报到状态配置(用于 ClickableTag)
|
||||||
const getCheckInStatusLabel = (value: string) => {
|
const getCheckInStatusConfigLocal = (value: string) => {
|
||||||
const item = checkInStatusData.value.find(item => item.value === value)
|
return getCheckInStatusConfig(checkInStatusData.value, value, {
|
||||||
return item ? item.label : value
|
CircleCheck,
|
||||||
|
CircleClose,
|
||||||
|
DocumentChecked,
|
||||||
|
Warning,
|
||||||
|
Clock
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 重置查询
|
// 重置查询
|
||||||
@@ -406,7 +387,7 @@ const handleExportOut = async () => {
|
|||||||
|
|
||||||
message.success('导出成功')
|
message.success('导出成功')
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
message.error(error.msg || '导出失败')
|
// console.log(error)
|
||||||
} finally {
|
} finally {
|
||||||
exportLoading.value = false
|
exportLoading.value = false
|
||||||
}
|
}
|
||||||
@@ -443,7 +424,7 @@ const init = async () => {
|
|||||||
|
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('初始化失败')
|
// console.log(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -456,7 +437,7 @@ onMounted(() => {
|
|||||||
.parent-tel {
|
.parent-tel {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
// justify-content: center;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
|
|
||||||
.tel-item {
|
.tel-item {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="身份证号" prop="idCard">
|
<el-form-item label="身份证号" prop="idCard">
|
||||||
<el-input v-model="form.idNumber"></el-input>
|
<el-input v-model="form.idNumber" v-input-filter="'idcard'"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="报到状态" prop="checkInStatus">
|
<el-form-item label="报到状态" prop="checkInStatus">
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="备注" prop="remarks">
|
<el-form-item label="备注" prop="remarks">
|
||||||
<el-input v-model="form.remarks" :rows="2"></el-input>
|
<el-input v-model="form.remarks" type="textarea" :rows="2"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
:title="!dataForm.id ? '新增' : '修改'"
|
:title="!dataForm.id ? '新增' : '修改'"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
v-model="visible"
|
v-model="visible"
|
||||||
width="600px"
|
width="800px"
|
||||||
>
|
>
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit"
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit"
|
||||||
label-width="100px">
|
label-width="100px">
|
||||||
@@ -54,21 +54,31 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
<el-form-item label="中德班" prop="isZd">
|
<el-form-item label="中德班" prop="isZd">
|
||||||
<el-radio-group v-model="dataForm.isZd">
|
<el-radio-group v-model="dataForm.isZd">
|
||||||
<el-radio v-for="item in yes_no_type" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
<el-radio v-for="item in yes_no_type" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
<el-form-item label="订单班" prop="isOrder">
|
<el-form-item label="订单班" prop="isOrder">
|
||||||
<el-radio-group v-model="dataForm.isOrder">
|
<el-radio-group v-model="dataForm.isOrder">
|
||||||
<el-radio v-for="item in yes_no_type" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
<el-radio v-for="item in yes_no_type" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
<el-form-item label="联院班" prop="isUnion">
|
<el-form-item label="联院班" prop="isUnion">
|
||||||
<el-radio-group v-model="dataForm.isUnion">
|
<el-radio-group v-model="dataForm.isUnion">
|
||||||
<el-radio v-for="item in yes_no_type" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
<el-radio v-for="item in yes_no_type" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
<el-form-item label="正式专业代码" prop="stuworkMajorCode">
|
<el-form-item label="正式专业代码" prop="stuworkMajorCode">
|
||||||
<el-select v-model="dataForm.stuworkMajorCode" filterable placeholder="请选择正式专业代码">
|
<el-select v-model="dataForm.stuworkMajorCode" filterable placeholder="请选择正式专业代码">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -79,19 +89,47 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="初中费用" prop="czFee">
|
||||||
|
<el-input-number
|
||||||
|
v-model="dataForm.czFee"
|
||||||
|
controls-position="right"
|
||||||
|
:min="0"
|
||||||
|
:max="999999"
|
||||||
|
:precision="2"
|
||||||
|
placeholder="请输入初中费用"
|
||||||
|
>
|
||||||
|
</el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="高中费用" prop="gzFee">
|
||||||
|
<el-input-number
|
||||||
|
v-model="dataForm.gzFee"
|
||||||
|
controls-position="right"
|
||||||
|
:min="0"
|
||||||
|
:max="999999"
|
||||||
|
:precision="2"
|
||||||
|
placeholder="请输入高中费用"
|
||||||
|
>
|
||||||
|
</el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="技职校费用" prop="jzxFee">
|
||||||
|
<el-input-number
|
||||||
|
v-model="dataForm.jzxFee"
|
||||||
|
controls-position="right"
|
||||||
|
:min="0"
|
||||||
|
:max="999999"
|
||||||
|
:precision="2"
|
||||||
|
placeholder="请输入技职校费用" >
|
||||||
|
</el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
<!-- <el-form-item label="市平台代码" prop="cityPlanId">-->
|
|
||||||
<!-- <el-select v-model="dataForm.cityPlanId" filterable placeholder="请选择市平台代码">-->
|
|
||||||
<!-- <el-option-->
|
|
||||||
<!-- v-for="item in cityPlanIdList"-->
|
|
||||||
<!-- :key="item.id"-->
|
|
||||||
<!-- :label="item.schoolMajorName+' | '+item.educational"-->
|
|
||||||
<!-- :value="item.id"-->
|
|
||||||
<!-- :disabled="isCityDisable(item.id)"-->
|
|
||||||
<!-- >-->
|
|
||||||
<!-- </el-option>-->
|
|
||||||
<!-- </el-select>-->
|
|
||||||
<!-- </el-form-item>-->
|
|
||||||
<el-form-item label="排序" prop="sort">
|
<el-form-item label="排序" prop="sort">
|
||||||
<el-input-number :min="0" :max="999" v-model="dataForm.sort" placeholder="排序"></el-input-number>
|
<el-input-number :min="0" :max="999" v-model="dataForm.sort" placeholder="排序"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -139,6 +177,7 @@ const planList = ref<any[]>([])
|
|||||||
const deptList = ref<any[]>([])
|
const deptList = ref<any[]>([])
|
||||||
const ccList = ref<any[]>([])
|
const ccList = ref<any[]>([])
|
||||||
const majorYears = ref<any[]>([])
|
const majorYears = ref<any[]>([])
|
||||||
|
const tuitionFeeList = ref<any[]>([])
|
||||||
|
|
||||||
const dataForm = reactive({
|
const dataForm = reactive({
|
||||||
id: "",
|
id: "",
|
||||||
@@ -154,6 +193,9 @@ const dataForm = reactive({
|
|||||||
stuworkMajorCode: "",
|
stuworkMajorCode: "",
|
||||||
isUnion: "0",
|
isUnion: "0",
|
||||||
tuitionFee: 0,
|
tuitionFee: 0,
|
||||||
|
czFee: 0,
|
||||||
|
gzFee: 0,
|
||||||
|
jzxFee: 0,
|
||||||
sort: 0
|
sort: 0
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -190,6 +232,18 @@ const dataRule = {
|
|||||||
isUnion: [
|
isUnion: [
|
||||||
{ required: true, message: '联院班不能为空', trigger: 'blur' }
|
{ required: true, message: '联院班不能为空', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
|
czFee: [
|
||||||
|
{ required: true, message: '初中费用不能为空', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '初中费用不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
gzFee: [
|
||||||
|
{ required: true, message: '高中费用不能为空', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '高中费用不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
jzxFee: [
|
||||||
|
{ required: true, message: '技职校费用不能为空', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '技职校费用不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
remarks: [
|
remarks: [
|
||||||
{ min: 1, max: 100, message: '备注长度不大于100个字符', trigger: 'blur' }
|
{ min: 1, max: 100, message: '备注长度不大于100个字符', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
@@ -205,6 +259,27 @@ const isCityDisable = (id: string) => {
|
|||||||
return dataForm.cityPlanIds.some(e => e == id)
|
return dataForm.cityPlanIds.some(e => e == id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置费用默认值
|
||||||
|
const setFeeDefaults = () => {
|
||||||
|
if (tuitionFeeList.value.length > 0) {
|
||||||
|
// 初中费用:字典值 1
|
||||||
|
const czFeeItem = tuitionFeeList.value.find((item: any) => item.value === '1')
|
||||||
|
if (czFeeItem) {
|
||||||
|
dataForm.czFee = Number(czFeeItem.label) || 0
|
||||||
|
}
|
||||||
|
// 高中费用:字典值 2
|
||||||
|
const gzFeeItem = tuitionFeeList.value.find((item: any) => item.value === '2')
|
||||||
|
if (gzFeeItem) {
|
||||||
|
dataForm.gzFee = Number(gzFeeItem.label) || 0
|
||||||
|
}
|
||||||
|
// 技职校费用:字典值 3
|
||||||
|
const jzxFeeItem = tuitionFeeList.value.find((item: any) => item.value === '3')
|
||||||
|
if (jzxFeeItem) {
|
||||||
|
dataForm.jzxFee = Number(jzxFeeItem.label) || 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 初始化数据
|
// 初始化数据
|
||||||
const initData = () => {
|
const initData = () => {
|
||||||
// 查询二级学院信息
|
// 查询二级学院信息
|
||||||
@@ -218,9 +293,10 @@ const initData = () => {
|
|||||||
offcialZydmList.value = data.data
|
offcialZydmList.value = data.data
|
||||||
})
|
})
|
||||||
// 获取数据字典(一次获取多个)
|
// 获取数据字典(一次获取多个)
|
||||||
getDictsByTypes(['basic_major_years', 'basic_major_level']).then((res: any) => {
|
getDictsByTypes(['basic_major_years', 'basic_major_level', 'tuition_fee']).then((res: any) => {
|
||||||
majorYears.value = res.data?.basic_major_years || []
|
majorYears.value = res.data?.basic_major_years || []
|
||||||
ccList.value = res.data?.basic_major_level || []
|
ccList.value = res.data?.basic_major_level || []
|
||||||
|
tuitionFeeList.value = res.data?.tuition_fee || []
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -292,12 +368,17 @@ const init = (id: string | null) => {
|
|||||||
// 错误处理
|
// 错误处理
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 新增模式:设置默认招生计划
|
// 新增模式:设置默认招生计划和费用默认值
|
||||||
getList().then((data: any) => {
|
getList().then((data: any) => {
|
||||||
if (data.data && data.data.length > 0) {
|
if (data.data && data.data.length > 0) {
|
||||||
dataForm.groupId = data.data[0]?.id || ""
|
dataForm.groupId = data.data[0]?.id || ""
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
// 等待字典数据加载完成后设置费用默认值
|
||||||
|
getDictsByTypes(['tuition_fee']).then((res: any) => {
|
||||||
|
tuitionFeeList.value = res.data?.tuition_fee || []
|
||||||
|
setFeeDefaults()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,8 +388,11 @@ defineExpose({
|
|||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style lang="scss" scoped>
|
||||||
.dialog-footer {
|
.dialog-footer {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
.el-row {
|
||||||
|
margin-bottom: 18px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -258,7 +258,8 @@ const init = async () => {
|
|||||||
|
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('初始化失败')
|
console.log(error)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,7 +270,8 @@ const changeSm = async (row: any) => {
|
|||||||
await editQuickField(parmas)
|
await editQuickField(parmas)
|
||||||
message.success('修改成功')
|
message.success('修改成功')
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
message.error(error.msg || '修改失败')
|
console.log(error)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
v-model="visible"
|
v-model="visible"
|
||||||
width="800px"
|
width="800px"
|
||||||
>
|
>
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="100px">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
width="600px"
|
width="600px"
|
||||||
v-model="visible">
|
v-model="visible">
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="100px">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="dataForm.groupId" filterable :disabled="!dataForm.id ? false : true" placeholder="请选择招生计划">
|
<el-select v-model="dataForm.groupId" filterable :disabled="!dataForm.id ? false : true" placeholder="请选择招生计划">
|
||||||
<el-option
|
<el-option
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ const init = async () => {
|
|||||||
}
|
}
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('初始化失败')
|
// console.log(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
width="600px"
|
width="600px"
|
||||||
v-model="visible">
|
v-model="visible">
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit"
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit"
|
||||||
label-width="120px">
|
label-width="100px">
|
||||||
|
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="dataForm.groupId" filterable placeholder="请选择招生计划" :disabled="!!dataForm.id">
|
<el-select v-model="dataForm.groupId" filterable placeholder="请选择招生计划" :disabled="!!dataForm.id">
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ const init = async () => {
|
|||||||
}
|
}
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('初始化失败')
|
// console.log(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
v-model="visible"
|
v-model="visible"
|
||||||
width="600px"
|
width="600px"
|
||||||
>
|
>
|
||||||
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
|
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="100px">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="dataForm.groupId" filterable :disabled="!!dataForm.id" placeholder="请选择招生计划">
|
<el-select v-model="dataForm.groupId" filterable :disabled="!!dataForm.id" placeholder="请选择招生计划">
|
||||||
<el-option
|
<el-option
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentplangroup_add"
|
v-auth="'recruit_recruitstudentplangroup_add'"
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="FolderAdd"
|
icon="FolderAdd"
|
||||||
@click="addOrUpdateHandle"
|
@click="addOrUpdateHandle"
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
<el-table-column label="操作" width="150" align="center" fixed="right">
|
<el-table-column label="操作" width="150" align="center" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentschool_edit"
|
v-auth="'recruit_recruitstudentschool_edit'"
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="EditPen"
|
icon="EditPen"
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
修改
|
修改
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentschool_del"
|
v-auth="'recruit_recruitstudentschool_del'"
|
||||||
type="danger"
|
type="danger"
|
||||||
link
|
link
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
@@ -112,9 +112,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="recruitstudentschool">
|
<script setup lang="ts" name="recruitstudentschool">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
import { ref, reactive, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
@@ -124,19 +122,6 @@ import { getDeptList } from '/@/api/basic/basicclass'
|
|||||||
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
const TableForm = defineAsyncComponent(() => import('./detaiform.vue'))
|
||||||
const MajorGroupByDeptForm = defineAsyncComponent(() => import('/@/views/recruit/recruitplanmajor/majorGroupByDept.vue'))
|
const MajorGroupByDeptForm = defineAsyncComponent(() => import('/@/views/recruit/recruitplanmajor/majorGroupByDept.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
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox()
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
import { ref, reactive, watch, nextTick } from 'vue'
|
import { ref, reactive, watch, nextTick } from 'vue'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { loadTiandituMap } from "/@/api/recruit/recruitstudentsignup"
|
import { loadTiandituMap } from "/@/api/recruit/recruitstudentsignup"
|
||||||
import { putItemObj } from "/@/api/admin/dict"
|
import { editDormrange } from "/@/api/admin/dict"
|
||||||
import { getDicts } from "/@/api/admin/dict"
|
import { getDicts } from "/@/api/admin/dict"
|
||||||
import { TIANDITU_TOKEN } from '/@/config/map'
|
import { TIANDITU_TOKEN } from '/@/config/map'
|
||||||
|
|
||||||
@@ -221,7 +221,7 @@ const dataFormSubmit = async () => {
|
|||||||
formRef.value?.validate((valid: boolean) => {
|
formRef.value?.validate((valid: boolean) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
canSubmit.value = false
|
canSubmit.value = false
|
||||||
putItemObj({ id: dictId.value, value: form.raidus }).then(() => {
|
editDormrange({ id: dictId.value, value: form.raidus }).then(() => {
|
||||||
message.success('修改成功')
|
message.success('修改成功')
|
||||||
visible.value = false
|
visible.value = false
|
||||||
canSubmit.value = true
|
canSubmit.value = true
|
||||||
|
|||||||
@@ -306,23 +306,7 @@
|
|||||||
:cell-style="tableStyle.cellStyle"
|
:cell-style="tableStyle.cellStyle"
|
||||||
:header-cell-style="tableStyle.headerCellStyle">
|
:header-cell-style="tableStyle.headerCellStyle">
|
||||||
|
|
||||||
<el-table-column
|
|
||||||
header-align="center"
|
|
||||||
align="center"
|
|
||||||
width="140"
|
|
||||||
label="操作">
|
|
||||||
<template #default="scope">
|
|
||||||
<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>
|
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="serialNumber"
|
prop="serialNumber"
|
||||||
@@ -343,7 +327,7 @@
|
|||||||
prop="name"
|
prop="name"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
align="center"
|
align="center"
|
||||||
width="120"
|
width="130"
|
||||||
label="资料检测">
|
label="资料检测">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div v-if="scope.row.isOut=='0'" class="material-check-compact">
|
<div v-if="scope.row.isOut=='0'" class="material-check-compact">
|
||||||
@@ -610,6 +594,23 @@
|
|||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
header-align="center"
|
||||||
|
align="center"
|
||||||
|
width="140"
|
||||||
|
label="操作">
|
||||||
|
<template #default="scope">
|
||||||
|
<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>
|
||||||
|
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<el-form :model="queryForm" inline ref="searchFormRef">
|
<search-form
|
||||||
|
v-show="showSearch"
|
||||||
|
:model="queryForm"
|
||||||
|
ref="searchFormRef"
|
||||||
|
@keyup-enter="getDataList"
|
||||||
|
>
|
||||||
|
<template #default="{ visible }">
|
||||||
|
<template v-if="visible">
|
||||||
<el-form-item label="招生计划" prop="groupId">
|
<el-form-item label="招生计划" prop="groupId">
|
||||||
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划">
|
<el-select v-model="queryForm.groupId" filterable clearable placeholder="请选择招生计划">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -35,6 +42,8 @@
|
|||||||
<el-form-item label="唯一号/姓名/身份证号" prop="search">
|
<el-form-item label="唯一号/姓名/身份证号" prop="search">
|
||||||
<el-input v-model="queryForm.search" clearable placeholder="唯一号/姓名/身份证号" />
|
<el-input v-model="queryForm.search" clearable placeholder="唯一号/姓名/身份证号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
<el-form-item label="住宿范围" prop="isOutFw">
|
<el-form-item label="住宿范围" prop="isOutFw">
|
||||||
<el-select v-model="queryForm.isOutFw" filterable clearable placeholder="请选择住宿范围">
|
<el-select v-model="queryForm.isOutFw" filterable clearable placeholder="请选择住宿范围">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -65,23 +74,27 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
<template #actions>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
<el-button type="primary" icon="Search" @click="getDataList">查询</el-button>
|
||||||
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" class="ml10" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</template>
|
||||||
|
</search-form>
|
||||||
|
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div class="mb15">
|
<div class="mb15">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruitStuDorm"
|
v-auth="'recruitStuDorm'"
|
||||||
icon="Setting"
|
icon="Setting"
|
||||||
@click="setDormFW"
|
@click="setDormFW"
|
||||||
>
|
>
|
||||||
设置住宿范围
|
设置住宿范围
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruitStuDorm"
|
v-auth="'recruitStuDorm'"
|
||||||
type="danger"
|
type="danger"
|
||||||
plain
|
plain
|
||||||
icon="Location"
|
icon="Location"
|
||||||
@@ -91,7 +104,7 @@
|
|||||||
一键判断住宿范围
|
一键判断住宿范围
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruitStuDormMess"
|
v-auth="'recruitStuDormMess'"
|
||||||
type="danger"
|
type="danger"
|
||||||
plain
|
plain
|
||||||
icon="Message"
|
icon="Message"
|
||||||
@@ -138,27 +151,24 @@
|
|||||||
<el-table-column prop="homeAddressDetail" label="家庭地址" align="center" show-overflow-tooltip />
|
<el-table-column prop="homeAddressDetail" label="家庭地址" align="center" show-overflow-tooltip />
|
||||||
<el-table-column prop="isOutFw" label="范围" width="100" align="center" show-overflow-tooltip>
|
<el-table-column prop="isOutFw" label="范围" width="100" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.isOutFw == 0">待确认</span>
|
<span v-if="getStatusConfig(DORM_RANGE_STATUS_LIST, scope.row.isOutFw)">{{ getStatusConfig(DORM_RANGE_STATUS_LIST, scope.row.isOutFw)?.label }}</span>
|
||||||
<span v-if="scope.row.isOutFw == 1">范围内</span>
|
|
||||||
<span v-if="scope.row.isOutFw == 2">范围外</span>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="isSd" label="手动设置" width="100" align="center" show-overflow-tooltip>
|
<el-table-column prop="isSd" label="手动设置" width="100" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.isSd == 0">未设置</span>
|
<span v-if="getStatusConfig(MANUAL_SET_STATUS_LIST, scope.row.isSd)">{{ getStatusConfig(MANUAL_SET_STATUS_LIST, scope.row.isSd)?.label }}</span>
|
||||||
<span v-if="scope.row.isSd == 1">已设置</span>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="isSend" label="发送短信" width="100" align="center" show-overflow-tooltip>
|
<el-table-column prop="isSend" label="发送短信" width="100" align="center" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.isSend == 0">未发送</span>
|
<span v-if="getStatusConfig(SEND_STATUS_LIST, scope.row.isSend)">{{ getStatusConfig(SEND_STATUS_LIST, scope.row.isSend)?.label }}</span>
|
||||||
<span v-if="scope.row.isSend == 1">已发送</span>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="300" align="center" fixed="right">
|
<el-table-column label="操作" width="300" align="center" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruitStuDormSd && scope.row.isOutFw != '1'"
|
v-auth="'recruitStuDormSd'"
|
||||||
|
v-if="scope.row.isOutFw != '1'"
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="CircleCheck"
|
icon="CircleCheck"
|
||||||
@@ -167,7 +177,8 @@
|
|||||||
设为范围内
|
设为范围内
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruitStuDormSd && scope.row.isOutFw != '2'"
|
v-auth="'recruitStuDormSd'"
|
||||||
|
v-if="scope.row.isOutFw != '2'"
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
icon="Close"
|
icon="Close"
|
||||||
@@ -184,7 +195,7 @@
|
|||||||
家庭地址
|
家庭地址
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruitStuDormDel"
|
v-auth="'recruitStuDormDel'"
|
||||||
type="danger"
|
type="danger"
|
||||||
link
|
link
|
||||||
icon="Delete"
|
icon="Delete"
|
||||||
@@ -209,36 +220,20 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="recruitstudentsignupList">
|
<script setup lang="ts" name="recruitstudentsignupList">
|
||||||
import { ref, reactive, computed, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
import { ref, reactive, onMounted, nextTick, defineAsyncComponent } from 'vue'
|
||||||
import { storeToRefs } from 'pinia'
|
|
||||||
import { useUserInfo } from '/@/stores/userInfo'
|
|
||||||
import { BasicTableProps, useTable } from '/@/hooks/table'
|
import { BasicTableProps, useTable } from '/@/hooks/table'
|
||||||
import { useMessage, useMessageBox } from '/@/hooks/message'
|
import { useMessage, useMessageBox } from '/@/hooks/message'
|
||||||
import { useDict } from '/@/hooks/dict'
|
import { useDict } from '/@/hooks/dict'
|
||||||
import { getLabelValue } from '/@/utils/dictLabel'
|
|
||||||
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
import { getList } from '/@/api/recruit/recruitstudentplangroup'
|
||||||
import { fetchListStuDorm, yjOut as yjOutApi, setFw as setFwApi, delFw, yjSend as yjSendApi } from '/@/api/recruit/recruitstudentsignup'
|
import { fetchListStuDorm, yjOut as yjOutApi, setFw as setFwApi, delFw, yjSend as yjSendApi } from '/@/api/recruit/recruitstudentsignup'
|
||||||
import { getDeptList } from '/@/api/basic/basicclass'
|
import { getDeptList } from '/@/api/basic/basicclass'
|
||||||
|
import { DORM_RANGE_STATUS_LIST, SEND_STATUS_LIST, MANUAL_SET_STATUS_LIST, getStatusConfig } from '/@/config/global'
|
||||||
|
|
||||||
const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue'))
|
const GenderTag = defineAsyncComponent(() => import('/@/components/GenderTag/index.vue'))
|
||||||
|
const SearchForm = defineAsyncComponent(() => import('/@/components/SearchForm/index.vue'))
|
||||||
|
|
||||||
const DormFW = defineAsyncComponent(() => import('./dormFW.vue'))
|
const DormFW = defineAsyncComponent(() => import('./dormFW.vue'))
|
||||||
const ShowMap = defineAsyncComponent(() => import('./showMap.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
|
// 消息提示 hooks
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
const messageBox = useMessageBox()
|
const messageBox = useMessageBox()
|
||||||
@@ -246,6 +241,9 @@ const messageBox = useMessageBox()
|
|||||||
// 字典数据
|
// 字典数据
|
||||||
const { sexy } = useDict('sexy')
|
const { sexy } = useDict('sexy')
|
||||||
|
|
||||||
|
// 搜索表单显示状态
|
||||||
|
const showSearch = ref(true)
|
||||||
|
|
||||||
// 表格引用
|
// 表格引用
|
||||||
const tableRef = ref()
|
const tableRef = ref()
|
||||||
const searchFormRef = ref()
|
const searchFormRef = ref()
|
||||||
@@ -256,8 +254,9 @@ const baiduMapRef = ref()
|
|||||||
const planList = ref<any[]>([])
|
const planList = ref<any[]>([])
|
||||||
const planMajorList = ref<any[]>([])
|
const planMajorList = ref<any[]>([])
|
||||||
const deptList = ref<any[]>([])
|
const deptList = ref<any[]>([])
|
||||||
const isOutFwList = ref([{ label: '待确认', value: '0' }, { label: '范围内', value: '1' }, { label: '范围外', value: '2' }])
|
const isOutFwList = DORM_RANGE_STATUS_LIST
|
||||||
const isSendList = ref([{ label: '未发送', value: 0 }, { label: '已发送', value: 1 }])
|
const isSendList = SEND_STATUS_LIST
|
||||||
|
|
||||||
|
|
||||||
// 查询表单
|
// 查询表单
|
||||||
const queryForm = reactive({
|
const queryForm = reactive({
|
||||||
@@ -321,7 +320,7 @@ const init = async () => {
|
|||||||
|
|
||||||
getDataList()
|
getDataList()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error('初始化失败')
|
// console.log(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
v-model="visible"
|
v-model="visible"
|
||||||
width="90%">
|
width="90%">
|
||||||
<div style="height: 100%;width:100%">
|
<div style="height: 100%;width:100%">
|
||||||
<el-descriptions :column="1" border>
|
<el-descriptions :column="1" border class="address-descriptions">
|
||||||
<el-descriptions-item label="家庭地址">{{ form.homeAddressDetail }}</el-descriptions-item>
|
<el-descriptions-item label="家庭地址">{{ form.homeAddressDetail }}</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
<div id="container2"></div>
|
<div id="container2"></div>
|
||||||
@@ -179,4 +179,10 @@ defineExpose({
|
|||||||
ul li {
|
ul li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.address-descriptions .el-descriptions__label) {
|
||||||
|
width: 100px !important;
|
||||||
|
min-width: 100px !important;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -58,12 +58,12 @@
|
|||||||
:width="320"
|
:width="320"
|
||||||
:items="(() => {
|
:items="(() => {
|
||||||
const items = []
|
const items = []
|
||||||
if (scope.row.oldMajorInfo) {
|
|
||||||
items.push({ label: '旧专业', content: scope.row.oldMajorInfo })
|
|
||||||
}
|
|
||||||
if (scope.row.newMajorInfo) {
|
if (scope.row.newMajorInfo) {
|
||||||
items.push({ label: '新专业', content: scope.row.newMajorInfo, contentClass: 'new-major' })
|
items.push({ label: '新专业', content: scope.row.newMajorInfo, contentClass: 'new-major' })
|
||||||
}
|
}
|
||||||
|
if (scope.row.oldMajorInfo) {
|
||||||
|
items.push({ label: '旧专业', content: scope.row.oldMajorInfo })
|
||||||
|
}
|
||||||
return items
|
return items
|
||||||
})()">
|
})()">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
@@ -201,8 +201,8 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
|
<el-button @click="cancelPlace">取消</el-button>
|
||||||
<el-button type="primary" @click="update">保存</el-button>
|
<el-button type="primary" @click="update">保存</el-button>
|
||||||
<el-button @click="cancelPlace">关闭</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<el-row>
|
<el-row>
|
||||||
<div class="mb15">
|
<div>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="permissions.recruit_recruitstudentsignupturnovermoneychange_add"
|
v-if="permissions.recruit_recruitstudentsignupturnovermoneychange_add"
|
||||||
type="primary"
|
type="primary"
|
||||||
|
|||||||
Reference in New Issue
Block a user