项目修改插入时不按照序号排列异常

This commit is contained in:
2026-02-04 17:25:13 +08:00
parent 2c2bb1adb0
commit 3a53837e50
6 changed files with 32 additions and 35 deletions

View File

@@ -17,8 +17,8 @@ import com.core.common.core.domain.AjaxResult;
import com.core.common.core.page.TableDataInfo;
import com.core.common.enums.BusinessType;
import com.core.common.utils.poi.ExcelUtil;
import com.openhis.domain.DayEndSettlement;
import com.openhis.service.IDayEndSettlementService;
import com.openhis.medicationmanagement.domain.DayEndSettlement;
import com.openhis.medicationmanagement.service.IDayEndSettlementService;
import com.core.common.core.page.PageDomain;
import com.core.common.utils.StringUtils;
import com.github.pagehelper.PageHelper;

View File

@@ -1,4 +1,4 @@
package com.openhis.domain;
package com.openhis.medicationmanagement.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

View File

@@ -1,6 +1,6 @@
package com.openhis.mapper;
package com.openhis.medicationmanagement.mapper;
import com.openhis.domain.DayEndSettlement;
import com.openhis.medicationmanagement.domain.DayEndSettlement;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**

View File

@@ -1,6 +1,6 @@
package com.openhis.service;
package com.openhis.medicationmanagement.service;
import com.openhis.domain.DayEndSettlement;
import com.openhis.medicationmanagement.domain.DayEndSettlement;
import com.baomidou.mybatisplus.extension.service.IService;
/**

View File

@@ -1,8 +1,8 @@
package com.openhis.service.impl;
package com.openhis.medicationmanagement.service.impl;
import com.openhis.domain.DayEndSettlement;
import com.openhis.mapper.DayEndSettlementMapper;
import com.openhis.service.IDayEndSettlementService;
import com.openhis.medicationmanagement.domain.DayEndSettlement;
import com.openhis.medicationmanagement.mapper.DayEndSettlementMapper;
import com.openhis.medicationmanagement.service.IDayEndSettlementService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

View File

@@ -836,30 +836,10 @@ function isChildTypeRow(row) {
return !!p.subRaw;
}
// 检验类型表:保持“当前顺序”展示,不在前端根据序号实时重新排序,
// 这样在点击“修改”或编辑序号时,行号不会在编辑过程中发生变化。
const sortedTypeRows = computed(() => {
// 需求:新增/编辑时不要“实时排序”,避免行在编辑过程中跳动;
// 仅在保存成功后(编辑结束、临时行消失/刷新数据)再按编码排序。
const hasTempRow = (tableData.value || []).some(r => isTempId(r?.id));
if (activeNav.value === 0 && (editingRowId.value || hasTempRow)) {
return [...tableData.value];
}
return [...tableData.value].sort((a, b) => {
const aOrder = a?.sortOrder === null || a?.sortOrder === undefined ? Number.POSITIVE_INFINITY : Number(a.sortOrder);
const bOrder = b?.sortOrder === null || b?.sortOrder === undefined ? Number.POSITIVE_INFINITY : Number(b.sortOrder);
if (aOrder !== bOrder) return aOrder - bOrder;
// 同序号:按编码保证稳定性(大类在子类之前,子类按后缀排序)
const pa = parseCodeParts(a?.code);
const pb = parseCodeParts(b?.code);
if (pa.mainRaw !== pb.mainRaw) {
return pa.mainRaw.localeCompare(pb.mainRaw, 'zh-Hans-CN', { numeric: true, sensitivity: 'base' });
}
const aHasSub = !!pa.subRaw;
const bHasSub = !!pb.subRaw;
if (aHasSub !== bHasSub) return aHasSub ? 1 : -1;
return pa.raw.localeCompare(pb.raw, 'zh-Hans-CN', { numeric: true, sensitivity: 'base' });
});
return [...tableData.value];
});
const pagedTypeRows = computed(() => {
@@ -895,10 +875,27 @@ const getInspectionTypeList = () => {
// 后端返回的数据格式: {code: 200, msg: "查询成功", data: [检验类型列表]}
const inspectionTypeList = data.data || [];
// 后端实体字段名本身就是 sortOrder这里不再从不存在的 item.order 做映射
const formattedData = inspectionTypeList.map(item => ({
let formattedData = inspectionTypeList.map(item => ({
...item,
sortOrder: item.sortOrder
}));
// 初始/刷新时:按“序号 + 编码”做一次排序,确保表单整体是按序号从小到大排列
formattedData = formattedData.sort((a, b) => {
const aOrder = a?.sortOrder == null || Number.isNaN(Number(a.sortOrder))
? Number.POSITIVE_INFINITY
: Number(a.sortOrder);
const bOrder = b?.sortOrder == null || Number.isNaN(Number(b.sortOrder))
? Number.POSITIVE_INFINITY
: Number(b.sortOrder);
if (aOrder !== bOrder) return aOrder - bOrder;
// 同序号时按编码作为稳定排序的备用键
const aCode = (a?.code ?? '').toString().trim();
const bCode = (b?.code ?? '').toString().trim();
return aCode.localeCompare(bCode, 'zh-Hans-CN', { numeric: true, sensitivity: 'base' });
});
// 过滤掉已逻辑删除的记录validFlag为0
tableData.value = formattedData.filter(item => item.validFlag === 1);
}).catch(error => {