From b26bf587442ac8d4919498e87ee3036d7d0cc5d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwuzhen=E2=80=9D?= Date: Thu, 22 Oct 2026 08:45:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(mobile):=20=E5=AE=A1=E6=89=B9=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E5=8A=A0=E5=A4=A7=E5=AD=97=E5=8F=B7=E3=80=81=E8=A1=A5?= =?UTF-8?q?=E8=AF=B7=E5=81=87=E5=A4=A9=E6=95=B0=E5=B9=B6=E7=BC=A9=E5=B0=8F?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 同步请假类型下线外出/回家、新增临时回寝的安全 SQL(历史单不迁移)。 Co-authored-by: Cursor --- ...ate_20261021_leave_type_temp_back_dorm.sql | 168 ++++++++++++++++++ .../src/components/Process/submitVerify.vue | 23 ++- 2 files changed, 184 insertions(+), 7 deletions(-) create mode 100644 backend/script/sql/update/update_20261021_leave_type_temp_back_dorm.sql diff --git a/backend/script/sql/update/update_20261021_leave_type_temp_back_dorm.sql b/backend/script/sql/update/update_20261021_leave_type_temp_back_dorm.sql new file mode 100644 index 00000000..18fb37be --- /dev/null +++ b/backend/script/sql/update/update_20261021_leave_type_temp_back_dorm.sql @@ -0,0 +1,168 @@ +-- ============================================================================= +-- 请假类型调整:下线「外出请假」「回家请假」,新增「临时回寝」 +-- 日期:2026-10-21 +-- +-- 客户确认策略: +-- - 历史请假单:不改类型(仍显示原「外出请假」「回家请假」) +-- - 新建/编辑可选列表:不再出现外出、回家;可选择「临时回寝」 +-- +-- 影响表:仅 xg_leave_type_config +-- 1) 旧类型:软删除 deleted=1 + 关闭 is_enabled=0(不物理删) +-- 2) 新增:临时回寝 TEMP_BACK_DORM +-- +-- 不碰:xg_student_leave(历史业务数据零修改) +-- +-- 执行顺序: +-- ① 只跑「一、执行前核查」 +-- ② 确认后跑「二、变更」 +-- ③ 「三、验收」通过再 COMMIT,否则 ROLLBACK +-- ============================================================================= + +-- ----------------------------------------------------------------------------- +-- 一、执行前核查(只读) +-- ----------------------------------------------------------------------------- + +-- 1.1 当前类型配置 +SELECT + id, + leave_type_code, + leave_type_name, + is_enabled, + deleted, + sort_order +FROM xg_leave_type_config +ORDER BY sort_order, id; + +-- 1.2 将被下线的配置(预期:外出 / 回家) +SELECT id, leave_type_code, leave_type_name, is_enabled, deleted +FROM xg_leave_type_config +WHERE deleted = 0 + AND ( + leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE') + OR leave_type_name IN ('外出请假', '回家请假') + ); + +-- 1.3 历史单仍保留旧类型(本脚本不会改这些行,仅供对照) +SELECT leave_type_code, leave_type_name, COUNT(*) AS cnt +FROM xg_student_leave +WHERE deleted = 0 + AND ( + leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE') + OR leave_type_name IN ('外出请假', '回家请假') + ) +GROUP BY leave_type_code, leave_type_name; + +-- ============================================================================= +-- 二、变更(事务) +-- ============================================================================= + +START TRANSACTION; + +-- 2.1 新增「临时回寝」(幂等:已有同编码或同名称则跳过) +INSERT INTO xg_leave_type_config ( + id, + tenant_id, + create_dept, + create_by, + create_time, + update_by, + update_time, + deleted, + leave_type_name, + leave_type_code, + leave_type_desc, + sort_order, + need_location_on_apply, + need_photo_on_cancel, + need_location_on_cancel, + need_cancel_for_non_leave, + can_apply_in_advance, + is_enabled, + max_apply_duration, + cancel_overdue_reminder +) +SELECT + 2026102111360000001, + '000000', + 103, + 1, + NOW(), + 1, + NOW(), + 0, + '临时回寝', + 'TEMP_BACK_DORM', + '临时回寝请假(替换原外出请假、回家请假选项;历史单类型不迁移)', + 3, + '1', + '1', + '1', + '1', + '1', + '1', + 24.00, + 2.00 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 + FROM xg_leave_type_config t + WHERE t.leave_type_code = 'TEMP_BACK_DORM' + OR t.leave_type_name = '临时回寝' +); + +-- 若主键冲突:ROLLBACK 后换未占用 id 再执行 +-- SELECT id FROM xg_leave_type_config WHERE id = 2026102111360000001; + +-- 2.2 下线旧类型:软删 + 关闭(学生端列表按未删除且启用过滤,即选不到) +UPDATE xg_leave_type_config +SET + deleted = 1, + is_enabled = '0', + update_by = 1, + update_time = NOW(), + leave_type_desc = CONCAT( + IFNULL(leave_type_desc, ''), + '【2026-10-21 已下线,新建请选临时回寝;历史数据保留原类型】' + ) +WHERE deleted = 0 + AND ( + leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE') + OR leave_type_name IN ('外出请假', '回家请假') + ); + +-- ----------------------------------------------------------------------------- +-- 三、执行后验收(事务内) +-- ----------------------------------------------------------------------------- + +-- 3.1 临时回寝应存在且启用 +SELECT id, leave_type_code, leave_type_name, is_enabled, deleted +FROM xg_leave_type_config +WHERE leave_type_code = 'TEMP_BACK_DORM' + OR leave_type_name = '临时回寝'; + +-- 3.2 外出/回家应已软删关闭 +SELECT id, leave_type_code, leave_type_name, is_enabled, deleted +FROM xg_leave_type_config +WHERE leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE') + OR leave_type_name IN ('外出请假', '回家请假'); + +-- 3.3 学生端可选类型(deleted=0 且 is_enabled=1):应有临时回寝,无外出/回家 +SELECT leave_type_code, leave_type_name, sort_order, is_enabled, deleted +FROM xg_leave_type_config +WHERE deleted = 0 + AND is_enabled = '1' +ORDER BY sort_order, id; + +-- 3.4 历史单旧类型条数应与执行前 1.3 一致(证明业务表未被改动) +SELECT leave_type_code, leave_type_name, COUNT(*) AS cnt +FROM xg_student_leave +WHERE deleted = 0 + AND ( + leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE') + OR leave_type_name IN ('外出请假', '回家请假') + ) +GROUP BY leave_type_code, leave_type_name; + +-- ========== 确认后 ========== +-- COMMIT; +-- 或 ROLLBACK; diff --git a/mobile/src/components/Process/submitVerify.vue b/mobile/src/components/Process/submitVerify.vue index 7e751732..85306df6 100644 --- a/mobile/src/components/Process/submitVerify.vue +++ b/mobile/src/components/Process/submitVerify.vue @@ -33,6 +33,10 @@ 结束时间 {{ formatLeaveDateTime(leaveInfo.endTime) }} + + 请假天数 + {{ formatLeaveDuration(leaveInfo.leaveDuration) }} + 是否离校 {{ formatLeaveSchool(leaveInfo.isLeaveSchool) }} @@ -106,7 +110,7 @@ v-model="form.message" placeholder="请输入审批意见" :maxlength="500" - height="120" + height="72" count /> @@ -587,6 +591,11 @@ export default { return value || '-'; }, + formatLeaveDuration(value) { + if (value === null || value === undefined || value === '') return '-'; + return `${value} 天`; + }, + // 关闭弹窗 cancel() { this.visible = false; @@ -1231,7 +1240,7 @@ export default { } .title { - font-size: 32rpx; + font-size: 34rpx; font-weight: 600; color: #333; } @@ -1243,12 +1252,12 @@ export default { } .form-item { - margin-bottom: 40rpx; + margin-bottom: 32rpx; } .label { display: block; - font-size: 28rpx; + font-size: 30rpx; font-weight: 500; color: #333; margin-bottom: 16rpx; @@ -1273,16 +1282,16 @@ export default { } .leave-summary-label { - width: 160rpx; + width: 170rpx; flex-shrink: 0; - font-size: 26rpx; + font-size: 30rpx; color: #667085; line-height: 1.5; } .leave-summary-value { flex: 1; - font-size: 26rpx; + font-size: 30rpx; color: #1f2937; line-height: 1.5; word-break: break-all;