This commit is contained in:
zlwu committed 2025-08-04 16:48:52 +08:00
1 parent 35bcf2ada5
commit dc0c69647d
11 files changed
+512 -289

No files matched your search

+270 -234
View File
@@ -1,5 +1,5 @@
<template>
<el-dialog :title="dialog.title" v-model="dialog.visible" width="1000px" height="700px" append-to-body>
<div class="p-2">
<div class="dialog-content">
<!-- 顶部按钮区域 -->
<div class="top-button-section">
@@ -11,7 +11,7 @@
:buttonLoading="buttonLoading"
:id="form.id"
:status="form.status"
:pageType="type"
:pageType="routeParams.type"
/>
</div>
</div>
@@ -52,160 +52,162 @@
</div>
<!-- 第二段:请假信息 -->
<el-card class="content-section" shadow="hover">
<el-card class="content-section leave-info-card" shadow="hover">
<template #header>
<div class="card-header">
<span class="section-title">请假信息</span>
</div>
</template>
<el-form ref="studentLeaveFormRef" :model="form" :rules="rules" label-width="120px" class="section-form compact-form">
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="请假类型" prop="leaveTypeName">
<el-select v-model="form.leaveTypeName" placeholder="请选择请假类型" style="width: 100%" @change="handleLeaveTypeChange" clearable>
<el-option v-for="item in leaveTypeList" :key="item.id" :label="item.leaveTypeName" :value="item.leaveTypeName" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="类型编码" prop="leaveTypeCode">
<el-input v-model="form.leaveTypeCode" placeholder="请假类型编码" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否离校" prop="isLeaveSchool">
<el-select v-model="form.isLeaveSchool" placeholder="请选择是否离校" style="width: 100%">
<el-option label="否" value="0" />
<el-option label="是" value="1" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="开始时间" prop="startTime" required>
<el-date-picker
v-model="form.startTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="datetime"
placeholder="请选择开始时间"
:default-time="new Date(2000, 1, 1, 0, 0, 0)"
:disabled-date="disabledStartDate"
@change="calculateLeaveDuration"
style="width: 100%"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结束时间" prop="endTime" required>
<el-date-picker
v-model="form.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="datetime"
placeholder="请选择结束时间"
:default-time="new Date(2000, 1, 1, 23, 59, 59)"
:disabled-date="disabledEndDate"
@change="calculateLeaveDuration"
style="width: 100%"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="请假时长(天)" prop="leaveDuration">
<el-input v-model="form.leaveDuration" disabled placeholder="自动计算请假时长" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="紧急联系人" prop="emergencyContact">
<el-input v-model="form.emergencyContact" placeholder="请输入紧急联系人" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="紧急电话" prop="emergencyPhone">
<el-input v-model="form.emergencyPhone" placeholder="请输入紧急联系电话" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="请假原因" prop="leaveReason">
<el-input v-model="form.leaveReason" type="textarea" :rows="2" placeholder="请输入请假原因" />
</el-form-item>
<el-form-item label="上传附件">
<div class="attachment-upload-container">
<el-upload
:file-list="attachmentList"
class="upload-demo"
drag
list-type="picture-card"
:on-preview="handleFilePreview"
:action="uploadAction"
:headers="uploadHeaders"
:data="uploadData"
:auto-upload="true"
:before-upload="handleBeforeUpload"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
:on-remove="handleRemoveAttachmentConfirm"
:on-change="handleFileChange"
multiple
:limit="15"
:show-file-list="true"
accept="image/*,video/*,.pdf,.doc,.docx,.txt"
>
<template #tip>
<div class="el-upload__tip">
支持图片、视频、PDF、Word文档等格式,单个文件大小不超过10MB,最多上传15个文件。
<span class="el-upload__tip" v-if="!form.id" style="color: #ff0000">(新增时文件会立即上传,保存请假申请后自动关联)</span>
<span class="el-upload__tip" v-else style="color: #ff0000">(编辑时文件会立即上传并关联到当前请假申请)</span>
<div class="leave-info-content">
<el-form ref="studentLeaveFormRef" :model="form" :rules="rules" label-width="120px" class="section-form compact-form">
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="请假类型" prop="leaveTypeName">
<el-select v-model="form.leaveTypeName" placeholder="请选择请假类型" style="width: 100%" @change="handleLeaveTypeChange" clearable>
<el-option v-for="item in leaveTypeList" :key="item.id" :label="item.leaveTypeName" :value="item.leaveTypeName" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="类型编码" prop="leaveTypeCode">
<el-input v-model="form.leaveTypeCode" placeholder="请假类型编码" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否离校" prop="isLeaveSchool">
<el-select v-model="form.isLeaveSchool" placeholder="请选择是否离校" style="width: 100%">
<el-option label="否" value="0" />
<el-option label="是" value="1" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="开始时间" prop="startTime" required>
<el-date-picker
v-model="form.startTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="datetime"
placeholder="请选择开始时间"
:default-time="new Date(2000, 1, 1, 0, 0, 0)"
:disabled-date="disabledStartDate"
@change="calculateLeaveDuration"
style="width: 100%"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="结束时间" prop="endTime" required>
<el-date-picker
v-model="form.endTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="datetime"
placeholder="请选择结束时间"
:default-time="new Date(2000, 1, 1, 23, 59, 59)"
:disabled-date="disabledEndDate"
@change="calculateLeaveDuration"
style="width: 100%"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="请假时长(天)" prop="leaveDuration">
<el-input v-model="form.leaveDuration" disabled placeholder="自动计算请假时长" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="12">
<el-form-item label="紧急联系人" prop="emergencyContact">
<el-input v-model="form.emergencyContact" placeholder="请输入紧急联系人" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="紧急电话" prop="emergencyPhone">
<el-input v-model="form.emergencyPhone" placeholder="请输入紧急联系电话" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="请假原因" prop="leaveReason">
<el-input v-model="form.leaveReason" type="textarea" :rows="2" placeholder="请输入请假原因" />
</el-form-item>
<el-form-item label="上传附件">
<div class="attachment-upload-container">
<el-upload
:file-list="attachmentList"
class="upload-demo"
drag
list-type="picture-card"
:on-preview="handleFilePreview"
:action="uploadAction"
:headers="uploadHeaders"
:data="uploadData"
:auto-upload="true"
:before-upload="handleBeforeUpload"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
:on-remove="handleRemoveAttachmentConfirm"
:on-change="handleFileChange"
multiple
:limit="15"
:show-file-list="true"
accept="image/*,video/*,.pdf,.doc,.docx,.txt"
>
<template #tip>
<div class="el-upload__tip">
支持图片、视频、PDF、Word文档等格式,单个文件大小不超过10MB,最多上传15个文件。
<span class="el-upload__tip" v-if="!form.id" style="color: #ff0000">(新增时文件会立即上传,保存请假申请后自动关联)</span>
<span class="el-upload__tip" v-else style="color: #ff0000">(编辑时文件会立即上传并关联到当前请假申请)</span>
</div>
</template>
<!-- 调整拖拽上传图标与文字在同一行、居中对齐 -->
<div class="el-upload-dragger1">
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
</div>
</template>
<!-- 调整拖拽上传图标与文字在同一行、居中对齐 -->
<div class="el-upload-dragger1">
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
</div>
<!-- 自定义文件卡片缩略图(含文件名) -->
<template #file="{ file }">
<div class="upload-file-card">
<!-- 缩略图区域 -->
<div class="upload-file-thumb">
<image-preview v-if="isImageFile(file) && file.url" :src="getFileOssId(file)" class="upload-thumb-image" :isOssId="true" />
<div v-else class="upload-file-placeholder">
<el-icon><Document /></el-icon>
<span class="file-ext">{{ getFileExt(file.name) }}</span>
<!-- 自定义文件卡片缩略图(含文件名) -->
<template #file="{ file }">
<div class="upload-file-card">
<!-- 缩略图区域 -->
<div class="upload-file-thumb">
<image-preview v-if="isImageFile(file) && file.url" :src="getFileOssId(file)" class="upload-thumb-image" :isOssId="true" />
<div v-else class="upload-file-placeholder">
<el-icon><Document /></el-icon>
<span class="file-ext">{{ getFileExt(file.name) }}</span>
</div>
<!-- loading 遮罩只在上传中显示 -->
<div v-if="file.status === 'uploading'" class="upload-file-loading">
<el-icon class="is-loading"><Loading /></el-icon>
<span class="loading-text">上传中...</span>
</div>
</div>
<!-- loading 遮罩只在上传中显示 -->
<div v-if="file.status === 'uploading'" class="upload-file-loading">
<el-icon class="is-loading"><Loading /></el-icon>
<span class="loading-text">上传中...</span>
<!-- 文件名称 -->
<div class="upload-file-name" :title="file.name">
{{ getShortFileName(file.name) }}
</div>
<!-- 操作按钮区域 - 固定在文件名下方 -->
<div class="upload-file-card-actions" v-if="file.status && file.status !== 'ready'">
<el-button-group size="small">
<el-button type="success" @click.stop="handleDownloadAttachment(file)" title="下载" :disabled="file.status !== 'success'">
<el-icon><Download /></el-icon>
</el-button>
<el-button type="danger" @click.stop="handleRemoveAttachmentConfirm(file)" title="删除">
<el-icon><Delete /></el-icon>
</el-button>
</el-button-group>
</div>
</div>
<!-- 文件名称 -->
<div class="upload-file-name" :title="file.name">
{{ getShortFileName(file.name) }}
</div>
<!-- 操作按钮区域 - 固定在文件名下方 -->
<div class="upload-file-card-actions" v-if="file.status && file.status !== 'ready'">
<el-button-group size="small">
<el-button type="success" @click.stop="handleDownloadAttachment(file)" title="下载" :disabled="file.status !== 'success'">
<el-icon><Download /></el-icon>
</el-button>
<el-button type="danger" @click.stop="handleRemoveAttachmentConfirm(file)" title="删除">
<el-icon><Delete /></el-icon>
</el-button>
</el-button-group>
</div>
</div>
</template>
</el-upload>
</div>
</el-form-item>
</el-form>
</template>
</el-upload>
</div>
</el-form-item>
</el-form>
</div>
</el-card>
<!-- 提交组件 -->
<submitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" />
@@ -223,12 +225,7 @@
</template>
</el-dialog>
</div>
<template #footer>
<div class="dialog-footer">
<!-- 按钮已移动到顶部 -->
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="StudentLeaveDialog" lang="ts">
@@ -288,22 +285,12 @@ interface UploadFile {
raw?: File;
}
// 定义props - 简化为只有id和type两个参数
interface Props {
id?: string | number; // 业务表主键id
type?: string; // 操作类型:add-新增,update-修改,view-查看
}
// 定义emits
interface Emits {
(e: 'update:dialog', value: { visible: boolean; title: string }): void;
(e: 'submit'): void;
(e: 'cancel'): void;
(e: 'update:buttonLoading', value: boolean): void;
(e: 'update:form', value: any): void;
}
const props = defineProps<Props>();
const emit = defineEmits<Emits>();
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@@ -806,11 +793,11 @@ const handleApprovalRecord = () => {
approvalRecordRef.value.init(form.id);
};
// 提交回调
const submitCallback = async () => {
// 使用emit通知父组件关闭页面
emit('submit');
};
// // 提交回调
// const submitCallback = async () => {
// // 使用emit通知父组件关闭页面
// emit('submit');
// };
// 审批
const approvalVerifyOpen = async () => {
@@ -824,7 +811,7 @@ const submitForm = (status: string) => {
ElMessage.error('请假时间不能为空');
return;
}
console.log('status111:', status);
studentLeaveFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
// 时间数据已经在表单中,无需额外处理
@@ -846,15 +833,40 @@ const submitForm = (status: string) => {
res = await updateStudentLeave(form).finally(() => (buttonLoading.value = false));
} else {
res = await addStudentLeave(form).finally(() => (buttonLoading.value = false));
console.log('res:', res);
//给form的ID赋值
console.log('res.data.id:', res.data.id);
form.id = res.data.id;
console.log('form.id:', form.id);
}
Object.assign(form, res.data);
// 调用getStudentLeave函数获取请假数据
let response: AxiosResponse<StudentLeaveVO>;
try {
console.log('开始获取学生请假信息,ID:', form.id);
response = await getStudentLeave(form.id);
console.log('response:', response);
if (response.code === 200 && response.data) {
const leaveInfo = response.data;
console.log('获取到的学生请假信息:', leaveInfo);
// 填充请假信息表单
Object.assign(form, leaveInfo);
} else {
ElMessage.error(response.msg || '获取学生请假信息失败');
}
} catch (error) {
console.error('获取学生请假信息失败:', error);
ElMessage.error('获取学生请假信息失败,请稍后重试');
}
console.log(response);
console.log('status:', status);
if (status === 'draft') {
buttonLoading.value = false;
ElMessage.success('暂存成功');
emit('submit');
proxy.$tab.closePage(proxy.$route);
proxy.$router.go(-1);
// emit('submit');
} else {
if ((res.data.approvalStatus === 'draft' && (flowCode.value === '' || flowCode.value === null)) || props.type === 'add') {
if ((response.data.approvalStatus === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') {
flowCode.value = flowCodeOptions[0].value;
dialogVisible.visible = true;
return;
@@ -899,13 +911,16 @@ const getStudentLeaveInfo = async (id: string | number) => {
console.log('开始获取学生请假信息,ID:', id);
const response = await getStudentLeave(id);
if (response.data.code === 200 && response.data.data) {
const leaveInfo = response.data.data;
if (response.code === 200 && response.data) {
const leaveInfo = response.data;
console.log('获取到的学生请假信息:', leaveInfo);
// 填充请假信息表单
Object.assign(form, leaveInfo);
// todo
form.status = leaveInfo.approvalStatus;
// 如果有学生ID,则获取学生信息
if (leaveInfo.studentId) {
await getStudentInfo(leaveInfo.studentId);
@@ -919,7 +934,7 @@ const getStudentLeaveInfo = async (id: string | number) => {
handleLeaveTypeChange(form.leaveTypeName);
}
} else {
ElMessage.error(response.data.msg || '获取学生请假信息失败');
ElMessage.error('获取学生请假信息失败');
}
} catch (error) {
console.error('获取学生请假信息失败:', error);
@@ -933,8 +948,8 @@ const getStudentInfo = async (studentId: string | number) => {
console.log('开始获取学生信息,学生ID:', studentId);
const response = await getStudentMsg(studentId);
if (response.data.code === 200 && response.data.data) {
const studentInfo = response.data.data;
if (response.code === 200 && response.data) {
const studentInfo = response.data;
console.log('获取到的学生信息:', studentInfo);
// 填充学生基础信息
@@ -957,7 +972,7 @@ const getStudentInfo = async (studentId: string | number) => {
studentId: form.studentId
});
} else {
ElMessage.warning(response.data.msg || '获取学生信息失败');
ElMessage.warning(response.msg || '获取学生信息失败');
}
} catch (error) {
console.error('获取学生信息失败:', error);
@@ -1065,8 +1080,8 @@ const handleAttachmentData = async () => {
}
};
// 打开对话框
const openDialog = (id?: string | number, type?: string) => {
// 初始化页面数据
const initPageData = () => {
// 重置表单数据
Object.assign(form, {
id: undefined,
@@ -1105,66 +1120,43 @@ const openDialog = (id?: string | number, type?: string) => {
// 清空附件列表
attachmentList.value = [];
// 设置对话框标题
if (type === 'add') {
dialog.title = '新增学生请假申请';
} else if (type === 'update') {
dialog.title = '编辑学生请假申请';
} else if (type === 'view') {
dialog.title = '查看学生请假申请';
} else {
dialog.title = '学生请假申请';
}
// 显示对话框
dialog.visible = true;
// 根据是否有id决定数据获取方式
if (id) {
// 根据路由参数决定数据获取方式
if (routeParams.value.id) {
// 有id时,获取学生请假信息
getStudentLeaveInfo(id);
getStudentLeaveInfo(routeParams.value.id);
} else {
// 没有id时,只获取当前用户的学生信息
getCurrentUserStudentInfo();
}
};
// 关闭对话框
const closeDialog = () => {
dialog.visible = false;
//提交回调
const submitCallback = async () => {
await proxy.$tab.closePage(proxy.$route);
proxy.$router.go(-1);
};
// 暴露方法给父组件
defineExpose({
openDialog,
closeDialog
});
// 组件挂载时获取请假类型列表
// 组件挂载时获取请假类型列表和初始化数据
onMounted(() => {
getLeaveTypeList();
nextTick(async () => {
routeParams.value = (proxy as any).$route.query;
getLeaveTypeList();
initPageData();
});
});
// 监听props变化,自动打开对话框
watch(
() => [props.id, props.type],
([newId, newType]) => {
if (newId !== undefined || newType) {
openDialog(newId, newType);
}
},
{ immediate: true }
);
</script>
<style scoped>
.dialog-content {
max-height: 600px;
overflow-y: auto;
height: calc(100vh - 120px);
max-height: calc(100vh - 120px);
display: flex;
flex-direction: column;
overflow: hidden;
}
.content-section {
margin-bottom: 16px;
margin-bottom: 12px;
margin-right: 20px;
}
@@ -1172,15 +1164,35 @@ watch(
margin-bottom: 0;
}
/* 请假信息卡片样式 */
.leave-info-card {
flex: 1;
display: flex;
flex-direction: column;
min-height: 0;
max-height: calc(100vh - 240px);
}
.leave-info-content {
flex: 1;
overflow-y: auto;
padding: 16px;
}
.card-header {
display: flex;
align-items: center;
padding: 12px 16px;
border-bottom: 1px solid #e4e7ed;
background: #fafafa;
}
.section-title {
font-size: 16px;
font-weight: 600;
color: #303133;
margin: 0;
padding: 0;
}
.section-form {
@@ -1188,12 +1200,12 @@ watch(
}
.section-form .el-form-item {
margin-bottom: 16px;
margin-bottom: 12px;
}
/* 紧凑布局样式 */
.compact-form .el-form-item {
margin-bottom: 12px;
margin-bottom: 8px;
}
.compact-form .el-form-item__label {
@@ -1220,8 +1232,8 @@ watch(
background: #f8f9fa;
border: 1px solid #e9ecef;
border-radius: 6px;
padding: 16px;
margin-bottom: 16px;
padding: 12px;
margin-bottom: 12px;
margin-right: 20px;
width: calc(100% - 20px);
}
@@ -1273,7 +1285,7 @@ watch(
justify-content: space-between;
align-items: center;
/* padding: 16px 0; */
margin-bottom: 16px;
margin-bottom: 12px;
/* border-bottom: 1px solid #e9ecef; */
}
@@ -1290,27 +1302,47 @@ watch(
}
/* 滚动条样式 */
.dialog-content::-webkit-scrollbar {
.dialog-content::-webkit-scrollbar,
.leave-info-content::-webkit-scrollbar,
.attachment-upload-container::-webkit-scrollbar {
width: 6px;
}
.dialog-content::-webkit-scrollbar-track {
.dialog-content::-webkit-scrollbar-track,
.leave-info-content::-webkit-scrollbar-track,
.attachment-upload-container::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 3px;
}
.dialog-content::-webkit-scrollbar-thumb {
.dialog-content::-webkit-scrollbar-thumb,
.leave-info-content::-webkit-scrollbar-thumb,
.attachment-upload-container::-webkit-scrollbar-thumb {
background: #c1c1c1;
border-radius: 3px;
}
.dialog-content::-webkit-scrollbar-thumb:hover {
.dialog-content::-webkit-scrollbar-thumb:hover,
.leave-info-content::-webkit-scrollbar-thumb:hover,
.attachment-upload-container::-webkit-scrollbar-thumb:hover {
background: #a8a8a8;
}
/* 附件上传容器样式 */
.attachment-upload-container {
width: 100%;
max-height: 300px;
overflow-y: auto;
padding-right: 8px;
border: 1px solid #e4e7ed;
border-radius: 6px;
background: #fafafa;
}
/* 附件上传区域内容样式 */
.attachment-upload-container .upload-demo {
padding: 12px;
min-height: 150px;
}
.attachment-upload-container .upload-demo .el-upload {
@@ -1369,12 +1401,13 @@ watch(
text-align: center;
}
/* 让附件卡片一行展示 4 个 */
/* 让附件卡片一行展示 5 个 */
.attachment-upload-container :deep(.el-upload-list--picture-card) {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-columns: repeat(5, 1fr);
gap: 9px;
margin-top: 12px;
padding-bottom: 16px;
}
/* 确保卡片宽度自适应 */
@@ -1433,7 +1466,7 @@ watch(
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.9);
/* background: rgba(255, 255, 255, 0.9); */
display: flex;
flex-direction: column;
align-items: center;
@@ -1503,4 +1536,7 @@ watch(
cursor: not-allowed;
background: #f5f5f5;
}
:deep(.el-card .el-card__header) {
border-bottom: 0px !important;
}
</style>
+29 -23
View File
@@ -210,7 +210,7 @@
<el-table-column label="紧急联系电话" align="center" prop="emergencyPhone" />
<el-table-column label="请假原因" align="center" prop="leaveReason" />
<!-- <el-table-column label="请假时地理位置" align="center" prop="leaveLocation" /> -->
<el-table-column label="附件OSS文件ID" align="center" prop="attachmentOssIds" />
<el-table-column label="附件OSS文件ID" align="center" prop="attachmentOssIds" width="280" />
<!-- <el-table-column label="审批状态" align="center" prop="approvalStatus" />
<el-table-column label="审批意见" align="center" prop="approvalOpinion" />
<el-table-column label="审批时间" align="center" prop="approvalTime" width="180">
@@ -249,16 +249,6 @@
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 学生请假对话框组件 -->
<StudentLeaveDialog
v-model:dialog="dialog"
:form="form"
:rules="rules"
:button-loading="buttonLoading"
:type="form.type"
@submit="submitForm"
@cancel="cancel"
/>
</div>
</template>
@@ -443,23 +433,39 @@ const handleSelectionChange = (selection: StudentLeaveVO[]) => {
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = '添加学生请假';
// 传递type参数,标识为新增操作
form.value.type = 'add';
// reset();
// dialog.visible = true;
// dialog.title = '添加学生请假';
// // 传递type参数,标识为新增操作
// form.value.type = 'add';
// proxy.$tab.closePage(proxy.$route);
proxy.$router.push({
path: `/xg/xsjcxx/xsqj/leaveEdit/index`,
query: {
type: 'add'
}
});
};
/** 修改按钮操作 */
const handleUpdate = async (row?: StudentLeaveVO) => {
reset();
// reset();
const _id = row?.id || ids.value[0];
const res = await getStudentLeave(_id);
Object.assign(form.value, res.data);
// 传递type参数,标识为修改操作
form.value.type = 'update';
dialog.visible = true;
dialog.title = '修改学生请假';
// const res = await getStudentLeave(_id);
// Object.assign(form.value, res.data);
// // 传递type参数,标识为修改操作
// form.value.type = 'update';
// form.value.id = _id;
// dialog.visible = true;
// dialog.title = '修改学生请假';
// proxy.$tab.closePage(proxy.$route);
proxy.$router.push({
path: `/xg/xsjcxx/xsqj/leaveEdit/index`,
query: {
id: _id,
type: 'update'
}
});
};
/** 提交按钮 */