diff --git a/.gitignore b/.gitignore
index 174d73ac..e0b9a7a2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -171,4 +171,8 @@ update/*
本地临时文件目录/*
docs/变更管理/
学生考核模块的提示词.md
-学生考核模块的上下文信息临时存储.md
\ No newline at end of file
+学生考核模块的上下文信息临时存储.md
+学生违纪记录界面-移动端.md
+学生考核申请界面-移动端.md
+移动端附件组件规范.md
+移动端违纪记录模块开发规范.md
diff --git a/mobile/src/pages.json b/mobile/src/pages.json
index 731fcf5e..1fb09abe 100644
--- a/mobile/src/pages.json
+++ b/mobile/src/pages.json
@@ -222,6 +222,30 @@
"navigationBarTitleText": "新生报名登记",
"navigationStyle": "custom"
}
+ },
+ {
+ "path": "pages/xskh/wjjl/xswjjl",
+ "style": {
+ "navigationBarTitleText": "违纪记录(学生)",
+ "navigationBarBackgroundColor": "#0051d9",
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "pages/xskh/wjjl/revokeApplication",
+ "style": {
+ "navigationBarTitleText": "撤销申请",
+ "navigationBarBackgroundColor": "#0051d9",
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "pages/xskh/khsq/khsq",
+ "style": {
+ "navigationBarTitleText": "考核申请",
+ "navigationBarBackgroundColor": "#0051d9",
+ "navigationBarTextStyle": "white"
+ }
}
],
"globalStyle": {
diff --git a/mobile/src/pages/index/index.vue b/mobile/src/pages/index/index.vue
index c1f34640..09be5468 100644
--- a/mobile/src/pages/index/index.vue
+++ b/mobile/src/pages/index/index.vue
@@ -220,6 +220,34 @@
/>
+
+
+
+
+
+
+
+
+
+
+
+
@@ -645,7 +673,9 @@ export default {
this.hasPermi(['student:internship:list']) ||
this.hasPermi(['student:dorm:violation:list']) ||
this.hasPermi(['student:visit:list']) ||
- this.hasPermi(['student:dorm:hygiene:list'])
+ this.hasPermi(['student:dorm:hygiene:list']) ||
+ this.hasPermi(['student:violation:list']) ||
+ this.hasPermi(['student:assessment:apply'])
);
},
@@ -880,6 +910,20 @@ export default {
});
},
+ // 跳转到学生违纪记录页面
+ gotoStudentViolation() {
+ uni.navigateTo({
+ url: '/pages/xskh/wjjl/xswjjl',
+ });
+ },
+
+ // 跳转到考核申请页面
+ gotoAssessmentApply() {
+ uni.navigateTo({
+ url: '/pages/xskh/khsq/khsq',
+ });
+ },
+
// 图片加载成功处理
handleImageLoad(event) {
console.log('✅ 轮播图片加载成功:', event.detail);
diff --git a/mobile/src/pages/xg/xsjcxx/xsqj/cancelLeaveEdit/index.vue b/mobile/src/pages/xg/xsjcxx/xsqj/cancelLeaveEdit/index.vue
index 156f34a3..e27131b6 100644
--- a/mobile/src/pages/xg/xsjcxx/xsqj/cancelLeaveEdit/index.vue
+++ b/mobile/src/pages/xg/xsjcxx/xsqj/cancelLeaveEdit/index.vue
@@ -394,15 +394,8 @@
size="mini"
type="error"
plain
- @click.stop.prevent="
- handleRemoveFile(
- file,
- index +
- attachmentList.filter((f) => isImageFile(f))
- .length,
- $event,
- )
- "
+ @tap="handleRemoveFile(file, index)"
+ @click.stop.prevent="handleRemoveFileClick(file, index, $event)"
>
删除
@@ -1350,7 +1343,23 @@ export default {
}
this.handleDownloadAttachment(file);
},
+ // 文档删除按钮点击处理(安全的事件处理)
+ handleRemoveFileClick(file, index, event) {
+ console.log('销假文档删除按钮被点击:', file, index);
+
+ // 强制阻止事件冒泡和默认行为
+ if (event) {
+ event.stopPropagation();
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ }
+
+ // 调用实际的删除方法
+ this.handleRemoveFile(file, index);
+ },
+
handleRemoveFile(file, index, event) {
+ // 强制阻止事件冒泡和默认行为(带空值检查)
if (event) {
event.stopPropagation && event.stopPropagation();
event.preventDefault && event.preventDefault();
diff --git a/mobile/src/pages/xg/xsjcxx/xsqj/leaveEdit/index.vue b/mobile/src/pages/xg/xsjcxx/xsqj/leaveEdit/index.vue
index 33b75907..a4178aaa 100644
--- a/mobile/src/pages/xg/xsjcxx/xsqj/leaveEdit/index.vue
+++ b/mobile/src/pages/xg/xsjcxx/xsqj/leaveEdit/index.vue
@@ -387,14 +387,9 @@
size="mini"
type="error"
plain
+ @tap="handleRemoveFile(file, index)"
@click.stop.prevent="
- handleRemoveFile(
- file,
- index +
- attachmentList.filter((f) => isImageFile(f))
- .length,
- $event,
- )
+ handleRemoveFileClick(file, index, $event)
"
>
删除
@@ -2496,11 +2491,26 @@ export default {
this.attachmentList.splice(index, 1);
},
+ // 文档删除按钮点击处理(安全的事件处理)
+ handleRemoveFileClick(file, index, event) {
+ console.log('文档删除按钮被点击:', file, index);
+
+ // 强制阻止事件冒泡和默认行为
+ if (event) {
+ event.stopPropagation();
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ }
+
+ // 调用实际的删除方法
+ this.handleRemoveFile(file, index);
+ },
+
// 手动删除文件
handleRemoveFile(file, index, event) {
console.log('=== 手动删除文件 ===', file, index);
- // 强制阻止事件冒泡和默认行为
+ // 强制阻止事件冒泡和默认行为(带空值检查)
if (event) {
event.stopPropagation();
event.preventDefault();
diff --git a/mobile/src/pages/xgss/wsjc/wsjcAdd.vue b/mobile/src/pages/xgss/wsjc/wsjcAdd.vue
index 70882258..3ceff111 100644
--- a/mobile/src/pages/xgss/wsjc/wsjcAdd.vue
+++ b/mobile/src/pages/xgss/wsjc/wsjcAdd.vue
@@ -525,14 +525,9 @@
size="mini"
type="error"
plain
+ @tap="handleRemoveFile(file, index)"
@click.stop.prevent="
- handleRemoveFile(
- file,
- index +
- attachmentList.filter((f) => isImageFile(f))
- .length,
- $event,
- )
+ handleRemoveFileClick(file, index, $event)
"
>
删除
@@ -2438,7 +2433,12 @@ export default {
// 删除文档
handleRemoveFile(file, index, event) {
- event.stopPropagation();
+ // 强制阻止事件冒泡和默认行为(带空值检查)
+ if (event) {
+ event.stopPropagation();
+ event.preventDefault();
+ }
+
uni.showModal({
title: '确认删除',
content: '确定要删除这个文件吗?',
@@ -2447,6 +2447,12 @@ export default {
const fileIndex = this.attachmentList.findIndex((f) => f.uid === file.uid);
if (fileIndex > -1) {
this.attachmentList.splice(fileIndex, 1);
+
+ // 清理blob URL,防止内存泄漏
+ if (file.blobUrl && file.blobUrl.startsWith('blob:')) {
+ URL.revokeObjectURL(file.blobUrl);
+ }
+
uni.showToast({
title: '文件删除成功',
icon: 'success',
@@ -2457,6 +2463,21 @@ export default {
});
},
+ // 文档删除按钮点击处理(安全的事件处理)
+ handleRemoveFileClick(file, index, event) {
+ console.log('文档删除按钮被点击:', file, index);
+
+ // 强制阻止事件冒泡和默认行为
+ if (event) {
+ event.stopPropagation();
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ }
+
+ // 调用实际的删除方法
+ this.handleRemoveFile(file, index);
+ },
+
// 重试上传
async retryUploadFile(file, event) {
console.log('=== 重试上传文件 ===', file);
diff --git a/mobile/src/pages/xskh/khsq/khsq.vue b/mobile/src/pages/xskh/khsq/khsq.vue
new file mode 100644
index 00000000..8c88c1a6
--- /dev/null
+++ b/mobile/src/pages/xskh/khsq/khsq.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+ 考核申请功能正在开发中...
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/src/pages/xskh/wjjl/DisciplineRecordForm.vue b/mobile/src/pages/xskh/wjjl/DisciplineRecordForm.vue
new file mode 100644
index 00000000..6c2ddd73
--- /dev/null
+++ b/mobile/src/pages/xskh/wjjl/DisciplineRecordForm.vue
@@ -0,0 +1,1210 @@
+
+
+
+
+
+
+
+
+
diff --git a/mobile/src/pages/xskh/wjjl/RevokeApplicationView.vue b/mobile/src/pages/xskh/wjjl/RevokeApplicationView.vue
new file mode 100644
index 00000000..0b9df1aa
--- /dev/null
+++ b/mobile/src/pages/xskh/wjjl/RevokeApplicationView.vue
@@ -0,0 +1,1968 @@
+
+
+
+
+
+
+
+
+
diff --git a/mobile/src/pages/xskh/wjjl/revokeApplication.vue b/mobile/src/pages/xskh/wjjl/revokeApplication.vue
new file mode 100644
index 00000000..575ae2b3
--- /dev/null
+++ b/mobile/src/pages/xskh/wjjl/revokeApplication.vue
@@ -0,0 +1,2503 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 违纪记录信息
+
+
+ 学号:
+ {{ disciplineRecord.studentNo || '-' }}
+
+
+ 学生姓名:
+
+ {{ disciplineRecord.studentName || '-' }}
+
+
+
+ 违纪处分类型:
+
+ {{ disciplineRecord.disciplineTypeName || '-' }}
+
+
+
+ 违纪处分日期:
+
+ {{ disciplineRecord.disciplineDate || '-' }}
+
+
+
+ 扣分分值:
+
+ {{
+ disciplineRecord.scoreDeduction
+ ? parseFloat(disciplineRecord.scoreDeduction).toFixed(2)
+ : '0.00'
+ }}
+
+
+
+ 状态:
+
+
+
+
+
+
+
+
+
+
+ 申请时间:
+
+ {{ existingRevokeRecord.applyTime || '-' }}
+
+
+
+ 申请原因:
+
+ {{ existingRevokeRecord.revokeReason || '-' }}
+
+
+
+ 审核时间:
+
+ {{ existingRevokeRecord.approvalTime }}
+
+
+
+ 审核备注:
+
+ {{ existingRevokeRecord.approvalRemark }}
+
+
+
+
+
+
+
+ 撤销申请信息
+
+
+
+
+
+
+
+
+
+
+
+ 图片附件
+
+
+
+
+
+
+
+
+
+
+ {{ image.progress || 0 }}%
+
+
+
+
+
+
+ 上传失败
+
+
+
+
+
+
+
+
+
+
+
+ 下载
+
+
+ 重试
+
+
+ 删除
+
+
+
+
+
+ {{ getShortFileName(image.name) }}
+
+
+
+
+
+
+
+
+
+ 微信图片上传进度: {{ uploadProgress }}%
+
+
+
+
+
+ 文档附件
+
+
+
+
+
+
+
+
+
+
+ {{ file.progress || 0 }}%
+
+
+
+
+
+
+ 上传失败
+
+
+
+
+
+
+
+
+
+
+
+ 下载
+
+
+ 重试
+
+
+ 删除
+
+
+
+
+
+ {{ getShortFileName(file.name) }}
+
+
+
+
+
+
+
+
+ 添加证明材料
+
+
+
+
+
+
+ • 支持格式:JPG、PNG、PDF、Word等 • 单个文件不超过10MB •
+ 最多上传15个文件
+
+
+ • 图片文件将以图片形式展示,支持预览和下载
+
+
+ • 在微信中使用可获得更好的图片选择体验
+
+
+
+
+
+
+
+
+
+
+ {{ isEditMode ? '保存修改' : '提交申请' }}
+
+
+ 删除申请
+
+
+
+
+
+
+
+
+
diff --git a/mobile/src/pages/xskh/wjjl/xswjjl.vue b/mobile/src/pages/xskh/wjjl/xswjjl.vue
new file mode 100644
index 00000000..c5212850
--- /dev/null
+++ b/mobile/src/pages/xskh/wjjl/xswjjl.vue
@@ -0,0 +1,476 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 学号:
+ {{ item.studentNo || '-' }}
+
+
+ 学生姓名:
+ {{ item.studentName || '-' }}
+
+
+ 学院名称:
+ {{ item.collegeName || '-' }}
+
+
+ 专业名称:
+ {{ item.majorName || '-' }}
+
+
+ 班级名称:
+ {{ item.className || '-' }}
+
+
+ 违纪处分日期:
+ {{ item.disciplineDate || '-' }}
+
+
+ 扣分分值:
+
+ {{
+ item.scoreDeduction
+ ? parseFloat(item.scoreDeduction).toFixed(2)
+ : '0.00'
+ }}
+
+
+
+
+
+
+
+
+ 查看
+
+
+
+
+ 撤销申请
+
+
+
+
+ 查看撤销申请
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+