fix(mobile): 审批弹窗加大字号、补请假天数并缩小意见框
同步请假类型下线外出/回家、新增临时回寝的安全 SQL(历史单不迁移)。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
15ed3ec9fb
commit
b26bf58744
2 files changed
+184
-7
No files matched your search
@@ -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;
|
||||||
@@ -33,6 +33,10 @@
|
|||||||
<text class="leave-summary-label">结束时间</text>
|
<text class="leave-summary-label">结束时间</text>
|
||||||
<text class="leave-summary-value">{{ formatLeaveDateTime(leaveInfo.endTime) }}</text>
|
<text class="leave-summary-value">{{ formatLeaveDateTime(leaveInfo.endTime) }}</text>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="leave-summary-row">
|
||||||
|
<text class="leave-summary-label">请假天数</text>
|
||||||
|
<text class="leave-summary-value">{{ formatLeaveDuration(leaveInfo.leaveDuration) }}</text>
|
||||||
|
</view>
|
||||||
<view class="leave-summary-row">
|
<view class="leave-summary-row">
|
||||||
<text class="leave-summary-label">是否离校</text>
|
<text class="leave-summary-label">是否离校</text>
|
||||||
<text class="leave-summary-value">{{ formatLeaveSchool(leaveInfo.isLeaveSchool) }}</text>
|
<text class="leave-summary-value">{{ formatLeaveSchool(leaveInfo.isLeaveSchool) }}</text>
|
||||||
@@ -106,7 +110,7 @@
|
|||||||
v-model="form.message"
|
v-model="form.message"
|
||||||
placeholder="请输入审批意见"
|
placeholder="请输入审批意见"
|
||||||
:maxlength="500"
|
:maxlength="500"
|
||||||
height="120"
|
height="72"
|
||||||
count
|
count
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
@@ -587,6 +591,11 @@ export default {
|
|||||||
return value || '-';
|
return value || '-';
|
||||||
},
|
},
|
||||||
|
|
||||||
|
formatLeaveDuration(value) {
|
||||||
|
if (value === null || value === undefined || value === '') return '-';
|
||||||
|
return `${value} 天`;
|
||||||
|
},
|
||||||
|
|
||||||
// 关闭弹窗
|
// 关闭弹窗
|
||||||
cancel() {
|
cancel() {
|
||||||
this.visible = false;
|
this.visible = false;
|
||||||
@@ -1231,7 +1240,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
font-size: 32rpx;
|
font-size: 34rpx;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
@@ -1243,12 +1252,12 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form-item {
|
.form-item {
|
||||||
margin-bottom: 40rpx;
|
margin-bottom: 32rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.label {
|
.label {
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 28rpx;
|
font-size: 30rpx;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: #333;
|
color: #333;
|
||||||
margin-bottom: 16rpx;
|
margin-bottom: 16rpx;
|
||||||
@@ -1273,16 +1282,16 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.leave-summary-label {
|
.leave-summary-label {
|
||||||
width: 160rpx;
|
width: 170rpx;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
font-size: 26rpx;
|
font-size: 30rpx;
|
||||||
color: #667085;
|
color: #667085;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.leave-summary-value {
|
.leave-summary-value {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
font-size: 26rpx;
|
font-size: 30rpx;
|
||||||
color: #1f2937;
|
color: #1f2937;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
|
|||||||
Reference in new issue
Block a user