入伍保留学籍、外宿申请-审批人修改成电子签名

This commit is contained in:
2025-12-19 15:30:44 +08:00
parent 8f084c2990
commit 95e7379cfa
7 changed files with 180 additions and 136 deletions

View File

@@ -182,13 +182,13 @@
</div>
<div
style="display: flex;justify-content: center;align-items: center;min-width: 130px;text-align: left;">
<div>审批人 </div>
<div>签名 </div>
<div>
<!-- <el-image style="width: 100px; height: 50px; margin-left: 10px; border: 1px solid #eee"
:src="baseUrl + renderData.studentPromiseSign"
:preview-src-list="[baseUrl + renderData.studentPromiseSign]">
</el-image> -->
{{ item.approverName }}
<el-image style="width: 100px; height: 50px; margin-left: 10px; border: 1px solid #eee"
:src="baseUrl + item.signature"
:preview-src-list="[baseUrl + item.signature]" :alt="item.approverName">
</el-image>
<!-- {{ item.approverName }} -->
</div>
</div>
<div style="margin-left: 10px;">日期 {{ item.approvalTime }}</div>

View File

@@ -152,7 +152,7 @@
v-hasPermi="['dormitory:outsideAccommodationApply:edit']"
v-if="scope.row.status == 0 || getRejectInfo(scope.row.outsideAccommodationApprovals).isReject">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['dormitory:outsideAccommodationApply:remove']" v-if="scope.row.status == 0 && scope.row.processInstanceId == null">删除</el-button>
v-hasPermi="['dormitory:outsideAccommodationApply:remove']" v-if="scope.row.status == 0 || roleGroup.includes('管理员')">删除</el-button>
<el-button v-if="scope.row.applyStatus != 0" size="mini" type="text" icon="el-icon-info"
@click="detail(scope.row)">详情</el-button>
</template>

View File

@@ -376,10 +376,6 @@
</el-descriptions-item>
<el-descriptions-item span="4" v-for="item in form.enlistmentReserveApprovalList" >
<template slot="label"> {{ item.opinionType }} </template>
<div style="padding-top: 10px;">
{{ item.approvalOpinion || "暂无意见" }}
@@ -391,7 +387,16 @@
<el-tag v-if="item.approvalResult == 1" type="success">通过</el-tag>
<el-tag v-else type="danger">驳回</el-tag>
</div>
<div style="padding: 0 10px;">签名 {{ item.approverName }}</div>
<div
style="display: flex;justify-content: center;align-items: center;min-width: 130px;text-align: left;">
<div>签名 </div>
<div>
<el-image style="width: 100px; height: 50px; margin-left: 10px; border: 1px solid #eee"
:src="baseUrl + item.signature" :preview-src-list="[baseUrl + item.signature]"
:alt="item.approverName">
</el-image>
</div>
</div>
<div style="padding: 0 10px;">日期 {{ item.approvalTime }}</div>
</div>
</div>

View File

@@ -374,7 +374,16 @@
<el-tag v-if="item.approvalResult == 1" type="success">通过</el-tag>
<el-tag v-else type="danger">驳回</el-tag>
</div>
<div style="padding: 0 10px;">签名 {{ item.approverName }}</div>
<div
style="display: flex;justify-content: center;align-items: center;min-width: 130px;text-align: left;">
<div>签名 </div>
<div>
<el-image style="width: 100px; height: 50px; margin-left: 10px; border: 1px solid #eee"
:src="baseUrl + item.signature" :preview-src-list="[baseUrl + item.signature]"
:alt="item.approverName">
</el-image>
</div>
</div>
<div style="padding: 0 10px;">日期 {{ item.approvalTime }}</div>
</div>
</div>

View File

@@ -413,7 +413,16 @@
<el-tag v-if="item.approvalResult == 1" type="success">通过</el-tag>
<el-tag v-else type="danger">驳回</el-tag>
</div>
<div style="padding: 0 10px;">签名 {{ item.approverName }}</div>
<div
style="display: flex;justify-content: center;align-items: center;min-width: 130px;text-align: left;">
<div>签名 </div>
<div>
<el-image style="width: 100px; height: 50px; margin-left: 10px; border: 1px solid #eee"
:src="baseUrl + item.signature" :preview-src-list="[baseUrl + item.signature]"
:alt="item.approverName">
</el-image>
</div>
</div>
<div style="padding: 0 10px;">日期 {{ item.approvalTime }}</div>
</div>
</div>
@@ -431,7 +440,9 @@
</el-descriptions>
<!-- 外宿申请表单 -->
<div v-if="outsideAccommodationForm"><detailApply :formData="form" :isShwo="false"></detailApply></div>
<div v-if="outsideAccommodationForm">
<detailApply :formData="form" :isShwo="false"></detailApply>
</div>
<!-- 退伍复学表单 -->
<el-descriptions v-if="basicForm" class="margin-top" title="退伍复学申请表" :column="4" size="medium" border
@@ -739,7 +750,7 @@
<h1>休学证明</h1>
<h4>桂水电院 {{ form.quitYear }} 休字第 {{ form.quitNumber }}</h4>
<p>{{ form.stuName }},{{ form.gender }},{{ form.mz }},{{ form.birthday }}出生,{{ form.jg }},{{ form.className
}}学生,学号:{{ form.stuNo }}.该生于个人原因-{{ form.reasonApplying }},申请休学.经学校研究,同意休学,时间从{{ form.quitStartTime }}{{
}}学生,学号:{{ form.stuNo }}.该生于个人原因-{{ form.reasonApplying }},申请休学.经学校研究,同意休学,时间从{{ form.quitStartTime }}{{
form.quitEndTime }}.</p>
<p>抄送:教务处财务处{{ form.departmentName }}</p>
<div class="stamp">
@@ -946,10 +957,10 @@ export default {
flowRecordList: [], // 流程流转数据
formConfCopy: {},
src: null,
// 班级名称
saveClassName:null,
// 班级名称
saveClassName: null,
// 年级名称
saveGradeName:null,
saveGradeName: null,
rules: {
penaltyNumber: [{ required: true, message: '请输入处分文号', trigger: 'blur' }],
letterServiceContent: [{ required: true, message: '请输入送达书', trigger: 'blur' }],
@@ -982,7 +993,8 @@ export default {
variables: {},
approvalOpinion: '', // 必须初始化,避免 null 报错
approvalResult: '',
targetNodeName: ''
targetNodeName: '',
signature: ''
},
penaltyNumber: '',
letterServiceContent: '',
@@ -1037,7 +1049,7 @@ export default {
outsideAccommodationForm: false, // 外宿申请表单
basicForm: false,//退伍复学表单
BasicTestData: 0, // 新增默认0仅退回学生申请时改为1
user: [], // 当前登录用户
}
},
created() {
@@ -1092,9 +1104,15 @@ export default {
} else if (this.category == 'enlistmentReserve') {
this.enlistmentReserveForm = true
this.getEnlistmentReserve(this.taskForm.procInsId)
getUserProfile().then(res => {
this.user = res.data
})
} else if (this.category == 'outsideAccommodation') {
this.outsideAccommodationForm = true
this.getOutsideAccommodation(this.taskForm.procInsId)
getUserProfile().then(res => {
this.user = res.data
})
} else if (this.category == '退伍复学') {
this.basicForm = true
this.getBasicApplication(this.startUser)
@@ -1193,7 +1211,7 @@ export default {
this.listGrade()
});
},
/** 获取班级名称列表 */
/** 获取班级名称列表 */
getClassNameList() {
getClassName().then(res => {
this.ClassNameList = res.data
@@ -1203,36 +1221,36 @@ export default {
if (element.value == this.form.maList[0].data1) {
// console.log(element.label)
element.children.forEach(elementTwo => {
if (elementTwo.value == this.form.maList[0].data2) {
// console.log(elementTwo.label)
elementTwo.children.forEach(elementFree => {
this.saveClassName = elementFree.label
// console.log(elementFree.label)
});
}
});
if (elementTwo.value == this.form.maList[0].data2) {
// console.log(elementTwo.label)
elementTwo.children.forEach(elementFree => {
this.saveClassName = elementFree.label
// console.log(elementFree.label)
});
}
});
}
});
}
})
},
/** 获取年级列表 */
async listGrade() {
try {
let res = await listGrade()
if (res.code == 200) {
this.grade_list = [...res.rows]
console.log(this.grade_list)
this.grade_list.forEach(element => {
if(element.gradeId == this.form.maList[0].newgrade){
this.saveGradeName = element.gradeName
}
});
}
} catch (error) {
console.error('获取年级列表失败:', error)
/** 获取年级列表 */
async listGrade() {
try {
let res = await listGrade()
if (res.code == 200) {
this.grade_list = [...res.rows]
console.log(this.grade_list)
this.grade_list.forEach(element => {
if (element.gradeId == this.form.maList[0].newgrade) {
this.saveGradeName = element.gradeName
}
},
});
}
} catch (error) {
console.error('获取年级列表失败:', error)
}
},
getStuInfo(stuNo) {
getStuInfo(stuNo).then((res) => {
@@ -1349,6 +1367,8 @@ export default {
// this.completeOpen = true;
// this.completeTitle = "流程审批";
this.submitForm(null)
// 获取当前用户的签名并赋值给this.taskForm.variables.signature传入监听器
this.taskForm.variables.signature = this.user.signature
},
/** 用户审批任务 */
taskComplete() {
@@ -1409,7 +1429,7 @@ export default {
this.updateRtStuQuitSchool()
} else if (this.category == 'enlistmentReserve') { // 是应征入伍保留学籍申请,才执行
if (this.taskName == '教务处主管领导审批') { // (最后一个领导审核完成之后,修改学生学籍状态, status07是入伍保留学籍)
updateStudent({ stuId: this.form.studentId, status: '07'}).then(response => { })
updateStudent({ stuId: this.form.studentId, status: '07' }).then(response => { })
}
this.$modal.msgSuccess(response.msg)
} else if (this.category == "退伍复学") {
@@ -1420,7 +1440,7 @@ export default {
// 异步请求的回调内处理后续逻辑
getStname(newName).then(response => {
stNameData = response.data;
// console.log("这个是审批数据:", stNameData)
// console.log("stNameData.id:", stNameData.id);
// console.log("stNameData.newgrade" + stNameData.maList[0].data1)
@@ -1436,7 +1456,7 @@ export default {
zsTime: new Date(),
// zsIdea字段缺失改为zsIdea字段
zsIdea: assigneeName,
processId:this.taskForm.procInsId
processId: this.taskForm.procInsId
}).then(response => {
this.$modal.msgSuccess(response.msg)
})
@@ -1453,7 +1473,7 @@ export default {
fdIdea: this.taskForm.comment,
fdTime: new Date(),
fdQm: assigneeName,
processId:this.taskForm.procInsId
processId: this.taskForm.procInsId
}).then(response => {
this.$modal.msgSuccess(response.msg)
})
@@ -1715,23 +1735,23 @@ export default {
},
// 监听退回节点选择变化
handleReturnNodeChange(val) {
// 1. 找到选中的节点
const selectedNode = this.returnTaskList.find(item => item.id === val);
if (!selectedNode) {
this.BasicTestData = 0;
return;
}
// 监听退回节点选择变化
handleReturnNodeChange(val) {
// 1. 找到选中的节点
const selectedNode = this.returnTaskList.find(item => item.id === val);
if (!selectedNode) {
this.BasicTestData = 0;
return;
}
// 2. 仅退伍复学场景 + 节点name是“学生申请” → testData=1
if (this.category === "退伍复学" && selectedNode.name === "学生申请") {
this.BasicTestData = 1;
// console.log("已选中学生申请testData=", this.testData); // 调试
} else {
this.BasicTestData = 0;
}
},
// 2. 仅退伍复学场景 + 节点name是“学生申请” → testData=1
if (this.category === "退伍复学" && selectedNode.name === "学生申请") {
this.BasicTestData = 1;
// console.log("已选中学生申请testData=", this.testData); // 调试
} else {
this.BasicTestData = 0;
}
},
/** 可退回任务列表 */
handleReturn() {
@@ -1760,7 +1780,7 @@ export default {
else if (this.category == "退伍复学") {
console.log("数据",this.returnTaskList)
console.log("数据", this.returnTaskList)
// updateBasic({stuId:this.form.stuId,fdStatus:"1",fdIdea:this.taskForm.comment}).then(response => {})
var stNameData = ''
// let newName = this.startUser.replace(/-/g, "");
@@ -2061,7 +2081,8 @@ export default {
variables: {}, // 保留原有的嵌套 variables 结构(后端可能依赖)
approvalOpinion: '', // 初始化审批意见为空白
approvalResult: '', // 审批状态
targetNodeName: '' // 审批节点
targetNodeName: '', // 审批节点
signature: '' // 签名
}
} else {
// 情况2variables 已存在 → 保留原有字段,补充 approvalOpinion无则添加有则保留原值
@@ -2069,74 +2090,73 @@ export default {
...this.taskForm.variables, // 展开原有所有字段(如 variables、其他自定义字段
approvalOpinion: this.taskForm.variables.approvalOpinion || '', // 兜底:若原有未定义则设为空白
approvalResult: this.taskForm.variables.approvalResult || '',
targetNodeName: this.taskForm.variables.targetNodeName || ''
targetNodeName: this.taskForm.variables.targetNodeName || '',
signature: this.taskForm.variables.signature || '',
}
}
},
// 退回或驳回的时候生成入伍保留学籍申请审核
taskReturnApproval(text) {
getUserProfile().then(res => {
let data = {
applyId: this.form.id,
processInstanceId: this.form.processInstanceId,
taskId: this.taskForm.taskId,
nodeName: this.taskName,
approverId: res.data.userId,
approverName: res.data.nickName,
approvalOpinion: this.taskForm.comment,
approvalResult: 2,
studentName: this.form.studentName,
studentNo: this.form.studentNo
}
// 生成审核记录
insertOrUpdateByStuAndApprover(data).then(ress => {
// 审核记录生成之后,判断退回或驳回是不是到学生申请,如果是则更新申请表状态
// if (text == '退回') {
// let nodeName = ''
// this.returnTaskList.forEach(element => {
// if (element.id == this.taskForm.targetKey) { // 如果选中的节点id等于列表里面的id就将节点名称获取到nodeName
// nodeName = element.documentation
// }
// });
// if (nodeName == '学生申请') { // 如果退回选择的是学生节点更新申请表状态
// this.form.applyStatus = 0
// updateEnlistmentReserve(this.form).then(result => {
// this.$modal.closeLoading()
// })
// }
// } else {
// // 驳回
// if (this.taskName == '辅导员审批') { // 当前节点如果是辅导员审批,证明驳回就到了学生,所以更新申请表状态
// this.form.applyStatus = 0
// updateEnlistmentReserve(this.form).then(result => {
// this.$modal.closeLoading()
// })
// }
// }
this.$modal.closeLoading()
})
let data = {
applyId: this.form.id,
processInstanceId: this.form.processInstanceId,
taskId: this.taskForm.taskId,
nodeName: this.taskName,
approverId: this.user.userId,
approverName: this.user.nickName,
approvalOpinion: this.taskForm.comment,
approvalResult: 2,
studentName: this.form.studentName,
studentNo: this.form.studentNo,
signature: this.user.signature
}
// 生成审核记录
insertOrUpdateByStuAndApprover(data).then(ress => {
// 审核记录生成之后,判断退回或驳回是不是到学生申请,如果是则更新申请表状态
// if (text == '退回') {
// let nodeName = ''
// this.returnTaskList.forEach(element => {
// if (element.id == this.taskForm.targetKey) { // 如果选中的节点id等于列表里面的id就将节点名称获取到nodeName
// nodeName = element.documentation
// }
// });
// if (nodeName == '学生申请') { // 如果退回选择的是学生节点更新申请表状态
// this.form.applyStatus = 0
// updateEnlistmentReserve(this.form).then(result => {
// this.$modal.closeLoading()
// })
// }
// } else {
// // 驳回
// if (this.taskName == '辅导员审批') { // 当前节点如果是辅导员审批,证明驳回就到了学生,所以更新申请表状态
// this.form.applyStatus = 0
// updateEnlistmentReserve(this.form).then(result => {
// this.$modal.closeLoading()
// })
// }
// }
this.$modal.closeLoading()
})
},
// 退回或驳回的时候生成外宿申请审核
taskReturnAccommodationApproval() {
getUserProfile().then(res => {
let data = {
applyId: this.form.id,
processInstanceId: this.form.processInstanceId,
applyNo: this.form.applyNo,
approvalNode: this.taskName,
approverId: res.data.userId,
approverName: res.data.nickName,
approvalOpinion: this.taskForm.comment,
approvalResult: 0,
studentName: this.form.studentName,
studentNo: this.form.studentNo
}
// 生成审核记录
addOrUpdateAccommodationApproval(data).then(ress => {
// 退回或者驳回生产审批记录之后,更新申请表里面的驳回信息
updateOutsideAccommodationApply({id: this.form.id, rejectReason: this.taskForm.comment})
})
let data = {
applyId: this.form.id,
processInstanceId: this.form.processInstanceId,
applyNo: this.form.applyNo,
approvalNode: this.taskName,
approverId: this.user.userId,
approverName: this.user.nickName,
approvalOpinion: this.taskForm.comment,
approvalResult: 0,
studentName: this.form.studentName,
studentNo: this.form.studentNo,
signature: this.user.signature
}
// 生成审核记录
addOrUpdateAccommodationApproval(data).then(ress => {
// 退回或者驳回生产审批记录之后,更新申请表里面的驳回信息
updateOutsideAccommodationApply({ id: this.form.id, rejectReason: this.taskForm.comment })
})
}
},

View File

@@ -83,7 +83,16 @@
<el-tag v-if="item.approvalResult == 1" type="success">通过</el-tag>
<el-tag v-else type="danger">驳回</el-tag>
</div>
<div style="padding: 0 10px;">签名 {{ item.approverName }}</div>
<div
style="display: flex;justify-content: center;align-items: center;min-width: 130px;text-align: left;">
<div>签名 </div>
<div>
<el-image style="width: 100px; height: 50px; margin-left: 10px; border: 1px solid #eee"
:src="baseUrl + item.signature" :preview-src-list="[baseUrl + item.signature]"
:alt="item.approverName">
</el-image>
</div>
</div>
<div style="padding: 0 10px;">日期 {{ item.approvalTime }}</div>
</div>
</div>
@@ -372,7 +381,8 @@ export default {
createTime: '',
updateTime: '',
remark: '',
affixId: null
affixId: null,
baseUrl: process.env.VUE_APP_BASE_API,
},
enlistmentReserveAttachList: [],
formRules: {
@@ -595,7 +605,7 @@ export default {
};
if (this.formData.id != null) {
updateEnlistmentReserve(submitData.formData).then(response => {
// 填写附件里面的申请编号
this.enlistmentReserveAttachList.forEach(element => {
element.applyNo = this.formData.applyNo
@@ -608,12 +618,12 @@ export default {
this.loading = false;
this.$modal.msgSuccess("修改成功");
this.goBack()
});
} else {
addEnlistmentReserve(submitData.formData).then(response => {
// 申请表新增成功之后,进行附件的添加
if (response.code == 200) {
// 填写附件里面的申请编号
@@ -691,7 +701,7 @@ export default {
this.$message.success(`成功删除文件:${fileName}`);
})
}
}
}
}
};
</script>
@@ -887,4 +897,4 @@ export default {
padding-bottom: 8px !important;
}
}
</style>
</style>

View File

@@ -135,7 +135,7 @@
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['routine:enlistmentReserve:edit']" v-if="scope.row.applyStatus == 0 || getRejectInfo(scope.row.enlistmentReserveApprovalList).isReject">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['routine:enlistmentReserve:remove']" v-if="scope.row.applyStatus == 0 && scope.row.processInstanceId == ''">删除</el-button>
v-hasPermi="['routine:enlistmentReserve:remove']" v-if="scope.row.applyStatus == 0 || roleGroup.includes('管理员')">删除</el-button>
<el-button size="mini" type="text" icon="el-icon-info"
@click="detail(scope.row)">详情</el-button>
</template>