Compare commits
37 Commits
2c1d0dbcf9
...
赵云-bug486
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43c1bf7b02 | ||
|
|
1124b1010d | ||
|
|
f41b86a143 | ||
|
|
d3310ade51 | ||
|
|
1dbf7859ea | ||
|
|
6940c3861d | ||
|
|
6e975bf9c4 | ||
|
|
3360cccaa5 | ||
|
|
fe138589a5 | ||
|
|
270475adb9 | ||
|
|
7d0c93b9a1 | ||
|
|
87f5135ddc | ||
|
|
e6c0d03dc1 | ||
|
|
5f7b75667a | ||
|
|
2cdda279a4 | ||
| bc595e3843 | |||
|
|
53e5ee331b | ||
|
|
571f254d0e | ||
|
|
560813d009 | ||
| 31c2acb4ef | |||
|
|
254de01d2e | ||
|
|
e21122edf0 | ||
|
|
e9576ddfa8 | ||
|
|
b435de9e7b | ||
|
|
bc13fd6968 | ||
|
|
d9ad63397b | ||
|
|
bb3e1e300d | ||
|
|
46358ea03d | ||
| b5c308d9cb | |||
|
|
adfeb8f5e5 | ||
|
|
fd9309f125 | ||
|
|
46affb424e | ||
|
|
6dcee26b54 | ||
|
|
a282234bb0 | ||
|
|
52fc64c71d | ||
|
|
0bd1277307 | ||
|
|
e0e4c2bcc6 |
@@ -200,9 +200,10 @@ public interface ICommonService {
|
|||||||
* 批号匹配
|
* 批号匹配
|
||||||
*
|
*
|
||||||
* @param encounterIdList 就诊id列表
|
* @param encounterIdList 就诊id列表
|
||||||
|
* @param requestIdList 医嘱请求id列表(可选,用于限定仅校验与当前执行医嘱关联的耗材)
|
||||||
* @return 处理结果
|
* @return 处理结果
|
||||||
*/
|
*/
|
||||||
R<?> lotNumberMatch(List<Long> encounterIdList);
|
R<?> lotNumberMatch(List<Long> encounterIdList, List<Long> requestIdList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据机构ID获取机构名称
|
* 根据机构ID获取机构名称
|
||||||
|
|||||||
@@ -39,8 +39,10 @@ import com.openhis.web.common.dto.*;
|
|||||||
import com.openhis.web.common.mapper.CommonAppMapper;
|
import com.openhis.web.common.mapper.CommonAppMapper;
|
||||||
import com.openhis.web.pharmacymanage.dto.InventoryDetailDto;
|
import com.openhis.web.pharmacymanage.dto.InventoryDetailDto;
|
||||||
import com.openhis.workflow.domain.DeviceDispense;
|
import com.openhis.workflow.domain.DeviceDispense;
|
||||||
|
import com.openhis.workflow.domain.DeviceRequest;
|
||||||
import com.openhis.workflow.domain.InventoryItem;
|
import com.openhis.workflow.domain.InventoryItem;
|
||||||
import com.openhis.workflow.service.IDeviceDispenseService;
|
import com.openhis.workflow.service.IDeviceDispenseService;
|
||||||
|
import com.openhis.workflow.service.IDeviceRequestService;
|
||||||
import com.openhis.workflow.service.IInventoryItemService;
|
import com.openhis.workflow.service.IInventoryItemService;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -99,6 +101,9 @@ public class CommonServiceImpl implements ICommonService {
|
|||||||
@Resource
|
@Resource
|
||||||
private IDeviceDispenseService deviceDispenseService;
|
private IDeviceDispenseService deviceDispenseService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IDeviceRequestService deviceRequestService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取药房列表
|
* 获取药房列表
|
||||||
*
|
*
|
||||||
@@ -678,10 +683,11 @@ public class CommonServiceImpl implements ICommonService {
|
|||||||
* 批号匹配
|
* 批号匹配
|
||||||
*
|
*
|
||||||
* @param encounterIdList 就诊id列表
|
* @param encounterIdList 就诊id列表
|
||||||
|
* @param requestIdList 医嘱请求id列表(可选,用于限定仅校验与当前执行医嘱关联的耗材)
|
||||||
* @return 处理结果
|
* @return 处理结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> lotNumberMatch(List<Long> encounterIdList) {
|
public R<?> lotNumberMatch(List<Long> encounterIdList, List<Long> requestIdList) {
|
||||||
// 查询患者待发放的药品信息
|
// 查询患者待发放的药品信息
|
||||||
List<MedicationDispense> medicationDispenseList = medicationDispenseService
|
List<MedicationDispense> medicationDispenseList = medicationDispenseService
|
||||||
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getEncounterId, encounterIdList)
|
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getEncounterId, encounterIdList)
|
||||||
@@ -798,10 +804,27 @@ public class CommonServiceImpl implements ICommonService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 查询患者待发放的耗材信息
|
// 查询患者待发放的耗材信息
|
||||||
List<DeviceDispense> deviceDispenseList = deviceDispenseService
|
LambdaQueryWrapper<DeviceDispense> deviceDispenseQuery = new LambdaQueryWrapper<DeviceDispense>()
|
||||||
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getEncounterId, encounterIdList)
|
.in(DeviceDispense::getEncounterId, encounterIdList)
|
||||||
.eq(DeviceDispense::getStatusEnum, DispenseStatus.PREPARATION.getValue())
|
.eq(DeviceDispense::getStatusEnum, DispenseStatus.PREPARATION.getValue())
|
||||||
.eq(DeviceDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
.eq(DeviceDispense::getDeleteFlag, DelFlag.NO.getCode());
|
||||||
|
// 若传入requestIdList,则仅查询与指定医嘱请求关联的耗材,避免其他未执行医嘱的耗材记录干扰
|
||||||
|
if (requestIdList != null && !requestIdList.isEmpty()) {
|
||||||
|
List<Long> deviceReqIds = deviceRequestService
|
||||||
|
.list(new LambdaQueryWrapper<DeviceRequest>()
|
||||||
|
.in(DeviceRequest::getBasedOnId, requestIdList)
|
||||||
|
.eq(DeviceRequest::getBasedOnTable, CommonConstants.TableName.WOR_SERVICE_REQUEST))
|
||||||
|
.stream()
|
||||||
|
.map(DeviceRequest::getId)
|
||||||
|
.collect(java.util.stream.Collectors.toList());
|
||||||
|
if (!deviceReqIds.isEmpty()) {
|
||||||
|
deviceDispenseQuery.in(DeviceDispense::getDeviceReqId, deviceReqIds);
|
||||||
|
} else {
|
||||||
|
// 无关联的耗材请求,直接跳过耗材校验
|
||||||
|
deviceDispenseQuery.eq(DeviceDispense::getId, -1L);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<DeviceDispense> deviceDispenseList = deviceDispenseService.list(deviceDispenseQuery);
|
||||||
// 耗材批号匹配
|
// 耗材批号匹配
|
||||||
if (deviceDispenseList != null && !deviceDispenseList.isEmpty()) {
|
if (deviceDispenseList != null && !deviceDispenseList.isEmpty()) {
|
||||||
// 获取待发放的耗材id
|
// 获取待发放的耗材id
|
||||||
|
|||||||
@@ -274,10 +274,13 @@ public class CommonAppController {
|
|||||||
* 批号匹配
|
* 批号匹配
|
||||||
*
|
*
|
||||||
* @param encounterIdList 就诊id列表
|
* @param encounterIdList 就诊id列表
|
||||||
|
* @param requestIdList 医嘱请求id列表(可选,用于限定仅校验与当前执行医嘱关联的耗材)
|
||||||
* @return 处理结果
|
* @return 处理结果
|
||||||
*/
|
*/
|
||||||
@GetMapping("/lot-number-match")
|
@GetMapping("/lot-number-match")
|
||||||
public R<?> lotNumberMatch(@RequestParam(value = "encounterIdList") List<Long> encounterIdList) {
|
public R<?> lotNumberMatch(
|
||||||
return commonService.lotNumberMatch(encounterIdList);
|
@RequestParam(value = "encounterIdList") List<Long> encounterIdList,
|
||||||
|
@RequestParam(value = "requestIdList", required = false) List<Long> requestIdList) {
|
||||||
|
return commonService.lotNumberMatch(encounterIdList, requestIdList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,36 +81,35 @@ public class RequestFormManageAppServiceImpl implements IRequestFormManageAppSer
|
|||||||
Long requestFormId = requestFormSaveDto.getRequestFormId();
|
Long requestFormId = requestFormSaveDto.getRequestFormId();
|
||||||
boolean isEdit = requestFormId != null && requestFormId != 0L;
|
boolean isEdit = requestFormId != null && requestFormId != 0L;
|
||||||
|
|
||||||
// 诊疗执行科室配置校验(必须在任何数据库操作之前)
|
// 校验所有activityList中的项目是否都配置了执行科室,并收集positionId供后续使用
|
||||||
List<ActivityOrganizationConfigDto> activityOrganizationConfig =
|
// 必须在任何数据库操作之前完成全部校验,避免部分保存后异常导致脏数据
|
||||||
requestFormManageAppMapper.getActivityOrganizationConfig(typeCode);
|
List<ActivitySaveDto> activityList = requestFormSaveDto.getActivityList();
|
||||||
if (activityOrganizationConfig.isEmpty()) {
|
if (activityList == null || activityList.isEmpty()) {
|
||||||
throw new ServiceException("请先配置当前时间段的执行科室");
|
throw new ServiceException("请选择检查项目");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 逐个校验activityList中的项目是否都配置了执行科室,并收集positionId供后续使用
|
// 🔧 Bug #475: 查询诊疗执行科室配置
|
||||||
// 必须在任何数据库操作之前完成全部校验,避免部分保存后异常导致脏数据
|
List<ActivityOrganizationConfigDto> activityOrganizationConfig =
|
||||||
// 🔧 Bug #516: 优先使用前端传入的positionId(用户手动选择的发往科室),仅在未选择时使用配置的执行科室
|
requestFormManageAppMapper.getActivityOrganizationConfig(typeCode);
|
||||||
List<ActivitySaveDto> activityList = requestFormSaveDto.getActivityList();
|
|
||||||
// 缓存校验结果,避免主循环中重复查询和可能出现的数据不一致
|
// 缓存校验结果,先全部验证通过后再进行数据库操作
|
||||||
|
// 优先使用前端传入的positionId(用户手动选择的发往科室),仅在未选择时使用配置的执行科室
|
||||||
java.util.Map<Long, Long> activityIdToPositionIdMap = new java.util.HashMap<>();
|
java.util.Map<Long, Long> activityIdToPositionIdMap = new java.util.HashMap<>();
|
||||||
if (activityList != null && !activityList.isEmpty()) {
|
for (ActivitySaveDto activitySaveDto : activityList) {
|
||||||
for (ActivitySaveDto activitySaveDto : activityList) {
|
// 优先使用前端传入的positionId(用户手动选择的科室)
|
||||||
// 优先使用前端传入的positionId(用户手动选择的科室)
|
Long frontendPositionId = activitySaveDto.getPositionId();
|
||||||
Long frontendPositionId = activitySaveDto.getPositionId();
|
if (frontendPositionId != null) {
|
||||||
if (frontendPositionId != null) {
|
activityIdToPositionIdMap.put(activitySaveDto.getAdviceDefinitionId(), frontendPositionId);
|
||||||
activityIdToPositionIdMap.put(activitySaveDto.getAdviceDefinitionId(), frontendPositionId);
|
continue;
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// 前端未传入时,使用配置的执行科室
|
|
||||||
Long configPositionId = activityOrganizationConfig.stream()
|
|
||||||
.filter(dto -> activitySaveDto.getAdviceDefinitionId().equals(dto.getActivityDefinitionId()))
|
|
||||||
.map(ActivityOrganizationConfigDto::getOrganizationId).findFirst().orElse(null);
|
|
||||||
if (configPositionId == null) {
|
|
||||||
throw new ServiceException(activitySaveDto.getAdviceDefinitionName() + "未配置当前时间段的执行科室");
|
|
||||||
}
|
|
||||||
activityIdToPositionIdMap.put(activitySaveDto.getAdviceDefinitionId(), configPositionId);
|
|
||||||
}
|
}
|
||||||
|
// 前端未传入时,使用配置的执行科室
|
||||||
|
Long configPositionId = activityOrganizationConfig.stream()
|
||||||
|
.filter(dto -> activitySaveDto.getAdviceDefinitionId().equals(dto.getActivityDefinitionId()))
|
||||||
|
.map(ActivityOrganizationConfigDto::getOrganizationId).findFirst().orElse(null);
|
||||||
|
if (configPositionId == null) {
|
||||||
|
throw new ServiceException(activitySaveDto.getAdviceDefinitionName() + "未配置当前时间段的执行科室");
|
||||||
|
}
|
||||||
|
activityIdToPositionIdMap.put(activitySaveDto.getAdviceDefinitionId(), configPositionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 诊疗处方号
|
// 诊疗处方号
|
||||||
|
|||||||
@@ -678,15 +678,16 @@ const handlePrint = async (row) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 构建 descJson 字段行(与详情弹窗展示的字段一致)
|
// 构建 descJson 字段行(与详情弹窗展示的字段一致)
|
||||||
const fieldKeys = ['targetDepartment', 'symptom', 'sign', 'clinicalDiagnosis', 'otherDiagnosis', 'relatedResult', 'attention'];
|
const fieldKeys = ['targetDepartment', 'urgencyLevel', 'expectedExaminationTime', 'allergyHistory', 'examinationPurpose', 'medicalHistorySummary', 'symptom', 'sign', 'clinicalDiagnosis', 'otherDiagnosis', 'relatedResult', 'attention'];
|
||||||
let descFieldsHtml = '';
|
let descFieldsHtml = '';
|
||||||
fieldKeys.forEach((key) => {
|
fieldKeys.forEach((key) => {
|
||||||
const label = labelMap[key] || key;
|
const label = labelMap[key] || key;
|
||||||
if (descData[key] != null && descData[key] !== '') {
|
const value = transformField(key, descData[key]);
|
||||||
|
if (value != null && value !== '') {
|
||||||
descFieldsHtml += `
|
descFieldsHtml += `
|
||||||
<div class="info-row">
|
<div class="info-row">
|
||||||
<span class="label">${label}:</span>
|
<span class="label">${label}:</span>
|
||||||
<span class="value">${descData[key]}</span>
|
<span class="value">${value}</span>
|
||||||
</div>`;
|
</div>`;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -910,9 +910,8 @@ function handleFocus(row, index) {
|
|||||||
// 用 adviceType + categoryCode 组合查找匹配的选项
|
// 用 adviceType + categoryCode 组合查找匹配的选项
|
||||||
const selectValue = (adviceType == 1 && row.categoryCode) ? '1-' + row.categoryCode : adviceType;
|
const selectValue = (adviceType == 1 && row.categoryCode) ? '1-' + row.categoryCode : adviceType;
|
||||||
const selectedItem = adviceTypeList.value.find(item => item.value === selectValue) || adviceTypeList.value.find(item => item.adviceType === adviceType);
|
const selectedItem = adviceTypeList.value.find(item => item.value === selectValue) || adviceTypeList.value.find(item => item.adviceType === adviceType);
|
||||||
// 修复Bug #486:当行没有显式选择医嘱类型时(row.adviceType为undefined),
|
// 当行没有显式选择医嘱类型时,使用已配置的默认categoryCode,确保后端能返回结果
|
||||||
// 不传categoryCode,让搜索在全药库中进行;只有行已选择类型时才用对应categoryCode过滤
|
const categoryCode = row.adviceType !== undefined ? (selectedItem ? selectedItem.categoryCode : '') : (adviceQueryParams.value.categoryCode || '');
|
||||||
const categoryCode = row.adviceType !== undefined ? (selectedItem ? selectedItem.categoryCode : '') : '';
|
|
||||||
const searchKey = row.adviceName || '';
|
const searchKey = row.adviceName || '';
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
@@ -949,9 +948,8 @@ function handleChange(value) {
|
|||||||
// 用 adviceType + categoryCode 组合查找匹配的选项
|
// 用 adviceType + categoryCode 组合查找匹配的选项
|
||||||
const selectValue = (adviceType == 1 && row?.categoryCode) ? '1-' + row.categoryCode : adviceType;
|
const selectValue = (adviceType == 1 && row?.categoryCode) ? '1-' + row.categoryCode : adviceType;
|
||||||
const selectedItem = adviceTypeList.value.find(item => item.value === selectValue) || adviceTypeList.value.find(item => item.adviceType === adviceType);
|
const selectedItem = adviceTypeList.value.find(item => item.value === selectValue) || adviceTypeList.value.find(item => item.adviceType === adviceType);
|
||||||
// 修复Bug #486:当行没有显式选择医嘱类型时(row?.adviceType为undefined),
|
// 当行没有显式选择医嘱类型时,使用已配置的默认categoryCode,确保后端能返回结果
|
||||||
// 不传categoryCode,让搜索在全药库中进行;只有行已选择类型时才用对应categoryCode过滤
|
const categoryCode = row?.adviceType !== undefined ? (selectedItem ? selectedItem.categoryCode : '') : (adviceQueryParams.value.categoryCode || '');
|
||||||
const categoryCode = row?.adviceType !== undefined ? (selectedItem ? selectedItem.categoryCode : '') : '';
|
|
||||||
// 修复Bug #453:当adviceType为空字符串或NaN时,不传具体类型,让refresh函数根据searchKey决定搜索范围
|
// 修复Bug #453:当adviceType为空字符串或NaN时,不传具体类型,让refresh函数根据searchKey决定搜索范围
|
||||||
const effectiveAdviceType = (adviceType && !isNaN(Number(adviceType))) ? adviceType : '';
|
const effectiveAdviceType = (adviceType && !isNaN(Number(adviceType))) ? adviceType : '';
|
||||||
tableRef.refresh(effectiveAdviceType, categoryCode, value);
|
tableRef.refresh(effectiveAdviceType, categoryCode, value);
|
||||||
|
|||||||
@@ -241,6 +241,8 @@ const loading = ref(false);
|
|||||||
const chooseAll = ref(false);
|
const chooseAll = ref(false);
|
||||||
// 独立维护选中行ID集合,避免el-table内部selection状态异常导致联动全选
|
// 独立维护选中行ID集合,避免el-table内部selection状态异常导致联动全选
|
||||||
const selectedRowIds = ref(new Set());
|
const selectedRowIds = ref(new Set());
|
||||||
|
// 跳过选中事件级联:程序化调用 toggleRowSelection 时阻止 handleRowSelect 触发 selectAllCheckboxesInRow
|
||||||
|
const skipSelectCascade = ref(false);
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
exeStatus: {
|
exeStatus: {
|
||||||
type: Number,
|
type: Number,
|
||||||
@@ -484,8 +486,13 @@ function handleExecute() {
|
|||||||
if (hasServiceRequest) {
|
if (hasServiceRequest) {
|
||||||
// 仅传入选中医嘱对应的 encounterId,避免其他患者的耗材记录干扰
|
// 仅传入选中医嘱对应的 encounterId,避免其他患者的耗材记录干扰
|
||||||
const selectedEncounterIds = [...new Set(list.map((item) => item.encounterId).filter(Boolean))];
|
const selectedEncounterIds = [...new Set(list.map((item) => item.encounterId).filter(Boolean))];
|
||||||
|
// 仅传入诊疗类医嘱的 requestId,让后端仅校验与本次执行相关的耗材,避免其他未执行医嘱的耗材记录干扰
|
||||||
|
const selectedRequestIds = list
|
||||||
|
.filter((item) => String(item.adviceTable || '') === 'wor_service_request')
|
||||||
|
.map((item) => item.requestId)
|
||||||
|
.filter(Boolean);
|
||||||
if (selectedEncounterIds.length > 0) {
|
if (selectedEncounterIds.length > 0) {
|
||||||
lotNumberMatch({ encounterIdList: selectedEncounterIds }, { skipErrorMsg: true })
|
lotNumberMatch({ encounterIdList: selectedEncounterIds, requestIdList: selectedRequestIds }, { skipErrorMsg: true })
|
||||||
.then((matchRes) => {
|
.then((matchRes) => {
|
||||||
if (matchRes && matchRes.code !== 200) {
|
if (matchRes && matchRes.code !== 200) {
|
||||||
console.warn('lotNumberMatch returned error:', matchRes.msg);
|
console.warn('lotNumberMatch returned error:', matchRes.msg);
|
||||||
@@ -650,6 +657,7 @@ function handleRateChange(value, date, time, row, rateItem) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handelSwicthChange(value) {
|
function handelSwicthChange(value) {
|
||||||
|
skipSelectCascade.value = true;
|
||||||
prescriptionList.value.forEach((item, index) => {
|
prescriptionList.value.forEach((item, index) => {
|
||||||
const tableRef = proxy.$refs['tableRef' + index];
|
const tableRef = proxy.$refs['tableRef' + index];
|
||||||
if (tableRef && tableRef[0]) {
|
if (tableRef && tableRef[0]) {
|
||||||
@@ -670,12 +678,15 @@ function handelSwicthChange(value) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
skipSelectCascade.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 默认选中全部行
|
// 默认选中全部行
|
||||||
function defaultSelectAllRows() {
|
function defaultSelectAllRows() {
|
||||||
// 清空并重建选中集合
|
// 清空并重建选中集合
|
||||||
selectedRowIds.value.clear();
|
selectedRowIds.value.clear();
|
||||||
|
// 阻止 toggleRowSelection 触发 handleRowSelect 中的 selectAllCheckboxesInRow 级联
|
||||||
|
skipSelectCascade.value = true;
|
||||||
prescriptionList.value.forEach((item, index) => {
|
prescriptionList.value.forEach((item, index) => {
|
||||||
const tableRef = proxy.$refs['tableRef' + index];
|
const tableRef = proxy.$refs['tableRef' + index];
|
||||||
if (tableRef && tableRef[0]) {
|
if (tableRef && tableRef[0]) {
|
||||||
@@ -688,6 +699,7 @@ function defaultSelectAllRows() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
skipSelectCascade.value = false;
|
||||||
// 更新全选开关状态
|
// 更新全选开关状态
|
||||||
chooseAll.value = true;
|
chooseAll.value = true;
|
||||||
}
|
}
|
||||||
@@ -764,6 +776,7 @@ function checkAndToggleRowSelection(row) {
|
|||||||
const isCurrentlySelected = selectedRowIds.value.has(row.requestId);
|
const isCurrentlySelected = selectedRowIds.value.has(row.requestId);
|
||||||
|
|
||||||
// 根据checkbox状态更新表格行选中状态
|
// 根据checkbox状态更新表格行选中状态
|
||||||
|
skipSelectCascade.value = true;
|
||||||
if (isAllSelected && !isCurrentlySelected) {
|
if (isAllSelected && !isCurrentlySelected) {
|
||||||
selectedRowIds.value.add(row.requestId);
|
selectedRowIds.value.add(row.requestId);
|
||||||
tableRef[0].toggleRowSelection(row, true);
|
tableRef[0].toggleRowSelection(row, true);
|
||||||
@@ -771,6 +784,7 @@ function checkAndToggleRowSelection(row) {
|
|||||||
selectedRowIds.value.delete(row.requestId);
|
selectedRowIds.value.delete(row.requestId);
|
||||||
tableRef[0].toggleRowSelection(row, false);
|
tableRef[0].toggleRowSelection(row, false);
|
||||||
}
|
}
|
||||||
|
skipSelectCascade.value = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -782,8 +796,10 @@ function handleRowSelect(selection, row, tableIndex) {
|
|||||||
|
|
||||||
if (isSelected) {
|
if (isSelected) {
|
||||||
selectedRowIds.value.add(row.requestId);
|
selectedRowIds.value.add(row.requestId);
|
||||||
// 选中行时,选中该行内部的所有checkbox
|
// 仅在非程序化选中时,联动选中该行内部的所有checkbox
|
||||||
selectAllCheckboxesInRow(row);
|
if (!skipSelectCascade.value) {
|
||||||
|
selectAllCheckboxesInRow(row);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
selectedRowIds.value.delete(row.requestId);
|
selectedRowIds.value.delete(row.requestId);
|
||||||
// 取消选中行时,取消选中该行内部的所有checkbox
|
// 取消选中行时,取消选中该行内部的所有checkbox
|
||||||
|
|||||||
Reference in New Issue
Block a user