更新需求
This commit is contained in:
@@ -234,11 +234,19 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
|
|||||||
|
|
||||||
if (listRes.Status === 200 && listRes.Data?.listOptionalItem) {
|
if (listRes.Status === 200 && listRes.Data?.listOptionalItem) {
|
||||||
const items = listRes.Data.listOptionalItem;
|
const items = listRes.Data.listOptionalItem;
|
||||||
setOptionalItemList(items);
|
// 根据 combination_code 去重,保留第一个出现的项目
|
||||||
|
const uniqueItems = items.filter((item, index, self) =>
|
||||||
|
index === self.findIndex((t) => t.combination_code === item.combination_code)
|
||||||
|
);
|
||||||
|
setOptionalItemList(uniqueItems);
|
||||||
|
|
||||||
// 根据操作记录判断是否已经选择过(is_abandon = 0)
|
// 若任意记录 is_abandon=1,则视为“已确定”(已做过弃选/确认动作),不可再确认
|
||||||
|
let hasConfirmedRecord = false;
|
||||||
let selectedFromRecord: number | null = null;
|
let selectedFromRecord: number | null = null;
|
||||||
if (recordRes.Status === 200 && recordRes.Data) {
|
if (recordRes.Status === 200 && recordRes.Data) {
|
||||||
|
hasConfirmedRecord = recordRes.Data.some((r) => r.is_abandon === 1);
|
||||||
|
|
||||||
|
// 预选:优先取 is_abandon=0 的组合码(若有)
|
||||||
const selectedRecord = recordRes.Data.find(
|
const selectedRecord = recordRes.Data.find(
|
||||||
(r) => r.is_abandon === 0 && r.combination_code
|
(r) => r.is_abandon === 0 && r.combination_code
|
||||||
);
|
);
|
||||||
@@ -250,21 +258,20 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (items.length > 0) {
|
if (uniqueItems.length > 0) {
|
||||||
if (
|
if (
|
||||||
selectedFromRecord != null &&
|
selectedFromRecord != null &&
|
||||||
items.some((i) => i.combination_code === selectedFromRecord)
|
uniqueItems.some((i) => i.combination_code === selectedFromRecord)
|
||||||
) {
|
) {
|
||||||
// 后端已有已选记录
|
// 有历史记录时,仅做“默认选中”,不标记为已确认
|
||||||
setSelectedOptionalItem(selectedFromRecord);
|
setSelectedOptionalItem(selectedFromRecord);
|
||||||
setOptionalConfirmed(true);
|
|
||||||
setShowOptionalConfirmTip(false);
|
|
||||||
} else {
|
} else {
|
||||||
// 尚未选择,需要前端引导用户选择并确认
|
// 无历史记录,默认不选
|
||||||
setSelectedOptionalItem(null);
|
setSelectedOptionalItem(null);
|
||||||
setOptionalConfirmed(false);
|
|
||||||
setShowOptionalConfirmTip(false);
|
|
||||||
}
|
}
|
||||||
|
// 只要存在可选项目:默认未确认;但若出现 is_abandon=1 记录,则视为已确定
|
||||||
|
setOptionalConfirmed(hasConfirmedRecord);
|
||||||
|
setShowOptionalConfirmTip(false);
|
||||||
} else {
|
} else {
|
||||||
// 没有可选项目,则视为无需确认
|
// 没有可选项目,则视为无需确认
|
||||||
setSelectedOptionalItem(null);
|
setSelectedOptionalItem(null);
|
||||||
|
|||||||
Reference in New Issue
Block a user