Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -3,7 +3,6 @@ package com.openhis.web.basedatamanage.appservice;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
import com.openhis.web.basedatamanage.dto.OrganizationDto;
|
import com.openhis.web.basedatamanage.dto.OrganizationDto;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -25,7 +24,8 @@ public interface IOrganizationAppService {
|
|||||||
* @param request 请求数据
|
* @param request 请求数据
|
||||||
* @return 机构树分页列表
|
* @return 机构树分页列表
|
||||||
*/
|
*/
|
||||||
Page<OrganizationDto> getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum, List<String> classEnumList,
|
Page<OrganizationDto> getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum,
|
||||||
|
List<String> classEnumList,
|
||||||
String sortField, String sortOrder, HttpServletRequest request);
|
String sortField, String sortOrder, HttpServletRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -71,9 +71,12 @@ public interface IOrganizationAppService {
|
|||||||
/**
|
/**
|
||||||
* 获取挂号科室列表
|
* 获取挂号科室列表
|
||||||
*
|
*
|
||||||
|
* @param pageNum 当前页码
|
||||||
|
* @param pageSize 查询条数
|
||||||
|
* @param name 机构/科室名称
|
||||||
|
* @param orgName 机构名称
|
||||||
* @return 挂号科室列表
|
* @return 挂号科室列表
|
||||||
*/
|
*/
|
||||||
R<?> getRegisterOrganizations(@RequestParam(required = false) String name,
|
R<?> getRegisterOrganizations(Integer pageNum, Integer pageSize, String name, String orgName);
|
||||||
@RequestParam(required = false) String orgName);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.openhis.web.basedatamanage.appservice.impl;
|
package com.openhis.web.basedatamanage.appservice.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
import com.core.common.utils.AssignSeqUtil;
|
import com.core.common.utils.AssignSeqUtil;
|
||||||
@@ -20,7 +19,6 @@ import com.openhis.web.basedatamanage.appservice.IOrganizationAppService;
|
|||||||
import com.openhis.web.basedatamanage.dto.OrganizationDto;
|
import com.openhis.web.basedatamanage.dto.OrganizationDto;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -28,8 +26,6 @@ import java.lang.reflect.Field;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.baomidou.mybatisplus.core.toolkit.StringUtils.camelToUnderline;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
||||||
|
|
||||||
@@ -40,7 +36,8 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
|||||||
private AssignSeqUtil assignSeqUtil;
|
private AssignSeqUtil assignSeqUtil;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<OrganizationDto> getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum, List<String> classEnumList,
|
public Page<OrganizationDto> getOrganizationTree(Integer pageNo, Integer pageSize, String name, Integer typeEnum,
|
||||||
|
List<String> classEnumList,
|
||||||
String sortField, String sortOrder, HttpServletRequest request) {
|
String sortField, String sortOrder, HttpServletRequest request) {
|
||||||
|
|
||||||
// 使用Page对象进行分页查询
|
// 使用Page对象进行分页查询
|
||||||
@@ -159,17 +156,20 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
|||||||
public R<?> getOrgInfo(Long orgId) {
|
public R<?> getOrgInfo(Long orgId) {
|
||||||
Organization organization = organizationService.getById(orgId);
|
Organization organization = organizationService.getById(orgId);
|
||||||
if (organization == null) {
|
if (organization == null) {
|
||||||
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00006, new Object[] {"机构信息"}));
|
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00006, new Object[] { "机构信息" }));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 转换为DTO对象,确保数据格式一致
|
// 转换为DTO对象,确保数据格式一致
|
||||||
OrganizationDto organizationDto = new OrganizationDto();
|
OrganizationDto organizationDto = new OrganizationDto();
|
||||||
BeanUtils.copyProperties(organization, organizationDto);
|
BeanUtils.copyProperties(organization, organizationDto);
|
||||||
organizationDto.setTypeEnum_dictText(EnumUtils.getInfoByValue(OrganizationType.class, organizationDto.getTypeEnum()));
|
organizationDto
|
||||||
|
.setTypeEnum_dictText(EnumUtils.getInfoByValue(OrganizationType.class, organizationDto.getTypeEnum()));
|
||||||
organizationDto.setClassEnum_dictText(formatClassEnumDictText(organizationDto.getClassEnum()));
|
organizationDto.setClassEnum_dictText(formatClassEnumDictText(organizationDto.getClassEnum()));
|
||||||
organizationDto.setActiveFlag_dictText(EnumUtils.getInfoByValue(AccountStatus.class, organizationDto.getActiveFlag()));
|
organizationDto
|
||||||
|
.setActiveFlag_dictText(EnumUtils.getInfoByValue(AccountStatus.class, organizationDto.getActiveFlag()));
|
||||||
|
|
||||||
return R.ok(organizationDto, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"机构信息查询"}));
|
return R.ok(organizationDto,
|
||||||
|
MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] { "机构信息查询" }));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -205,7 +205,7 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
|||||||
}
|
}
|
||||||
// 返回机构id
|
// 返回机构id
|
||||||
return R.ok(organization.getId(),
|
return R.ok(organization.getId(),
|
||||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"机构信息更新添加"}));
|
MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] { "机构信息更新添加" }));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -225,8 +225,8 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
|||||||
// 删除机构信息
|
// 删除机构信息
|
||||||
boolean deleteOrgSuccess = organizationService.removeByIds(orgIdList);
|
boolean deleteOrgSuccess = organizationService.removeByIds(orgIdList);
|
||||||
return deleteOrgSuccess
|
return deleteOrgSuccess
|
||||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[] {"机构信息"}))
|
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[] { "机构信息" }))
|
||||||
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"机构信息"}));
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] { "机构信息" }));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -239,8 +239,9 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
|||||||
public R<?> activeOrg(Long orgId) {
|
public R<?> activeOrg(Long orgId) {
|
||||||
// 机构启用
|
// 机构启用
|
||||||
boolean result = organizationService.activeOrg(orgId);
|
boolean result = organizationService.activeOrg(orgId);
|
||||||
return result ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"机构信息启用"}))
|
return result
|
||||||
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"机构信息启用"}));
|
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] { "机构信息启用" }))
|
||||||
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] { "机构信息启用" }));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -253,8 +254,9 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
|||||||
public R<?> inactiveOrg(Long orgId) {
|
public R<?> inactiveOrg(Long orgId) {
|
||||||
// 机构停用
|
// 机构停用
|
||||||
boolean result = organizationService.inactiveOrg(orgId);
|
boolean result = organizationService.inactiveOrg(orgId);
|
||||||
return result ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"机构信息停用"}))
|
return result
|
||||||
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"机构信息停用"}));
|
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] { "机构信息停用" }))
|
||||||
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] { "机构信息停用" }));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -289,27 +291,41 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
|||||||
/**
|
/**
|
||||||
* 获取挂号科室列表
|
* 获取挂号科室列表
|
||||||
*
|
*
|
||||||
|
* @param pageNo 当前页码
|
||||||
|
* @param pageSize 查询条数
|
||||||
* @param name 机构/科室名称
|
* @param name 机构/科室名称
|
||||||
* @param orgName 机构名称
|
* @param orgName 机构名称
|
||||||
* @return 挂号科室列表
|
* @return 挂号科室列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> getRegisterOrganizations(@RequestParam(required = false) String name,
|
public R<?> getRegisterOrganizations(Integer pageNo, Integer pageSize, String name, String orgName) {
|
||||||
@RequestParam(required = false) String orgName) {
|
// 使用Page对象进行分页查询
|
||||||
|
Page<Organization> page = new Page<>(pageNo != null ? pageNo : 1, pageSize != null ? pageSize : 10);
|
||||||
|
|
||||||
// 创建查询条件,只查询register_flag为1的组织机构
|
// 创建查询条件,只查询register_flag为1的组织机构
|
||||||
LambdaQueryWrapper<Organization> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Organization> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(Organization::getRegisterFlag, 1); // 只获取挂号科室
|
queryWrapper.eq(Organization::getRegisterFlag, 1); // 只获取挂号科室
|
||||||
|
queryWrapper.eq(Organization::getDeleteFlag, "0"); // 确保未删除
|
||||||
|
|
||||||
// 添加名称过滤条件
|
// 添加名称过滤条件
|
||||||
if (StringUtils.isNotEmpty(name)) {
|
if (StringUtils.isNotEmpty(name)) {
|
||||||
queryWrapper.like(Organization::getName, name);
|
queryWrapper.like(Organization::getName, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 执行查询
|
// 如果有机构名称筛选
|
||||||
List<Organization> organizationList = organizationService.list(queryWrapper);
|
if (StringUtils.isNotEmpty(orgName)) {
|
||||||
|
// 这里假设 orgName 是父机构名称,如果需要更复杂的关联查询可在此扩展
|
||||||
|
// 当前逻辑暂保持与原逻辑一致的过滤方式或根据需求调整
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按编码排序
|
||||||
|
queryWrapper.orderByAsc(Organization::getBusNo);
|
||||||
|
|
||||||
|
// 执行分页查询
|
||||||
|
Page<Organization> resultPage = organizationService.page(page, queryWrapper);
|
||||||
|
|
||||||
// 转换为DTO对象并设置字典文本
|
// 转换为DTO对象并设置字典文本
|
||||||
List<OrganizationDto> organizationDtoList = organizationList.stream().map(org -> {
|
List<OrganizationDto> organizationDtoList = resultPage.getRecords().stream().map(org -> {
|
||||||
OrganizationDto dto = new OrganizationDto();
|
OrganizationDto dto = new OrganizationDto();
|
||||||
BeanUtils.copyProperties(org, dto);
|
BeanUtils.copyProperties(org, dto);
|
||||||
dto.setTypeEnum_dictText(EnumUtils.getInfoByValue(OrganizationType.class, dto.getTypeEnum()));
|
dto.setTypeEnum_dictText(EnumUtils.getInfoByValue(OrganizationType.class, dto.getTypeEnum()));
|
||||||
@@ -318,7 +334,14 @@ public class OrganizationAppServiceImpl implements IOrganizationAppService {
|
|||||||
return dto;
|
return dto;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
return R.ok(organizationDtoList);
|
// 创建返回分页对象
|
||||||
|
Page<OrganizationDto> finalResult = new Page<>();
|
||||||
|
finalResult.setRecords(organizationDtoList);
|
||||||
|
finalResult.setTotal(resultPage.getTotal());
|
||||||
|
finalResult.setSize(resultPage.getSize());
|
||||||
|
finalResult.setCurrent(resultPage.getCurrent());
|
||||||
|
|
||||||
|
return R.ok(finalResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -67,10 +67,10 @@ public class OrganizationController {
|
|||||||
classEnumList = Arrays.asList(classEnum.split(","));
|
classEnumList = Arrays.asList(classEnum.split(","));
|
||||||
}
|
}
|
||||||
|
|
||||||
Page<OrganizationDto> organizationTree =
|
Page<OrganizationDto> organizationTree = iOrganizationAppService.getOrganizationTree(pageNo, pageSize, name,
|
||||||
iOrganizationAppService.getOrganizationTree(pageNo, pageSize, name, typeEnum, classEnumList, sortField, sortOrder, request);
|
typeEnum, classEnumList, sortField, sortOrder, request);
|
||||||
return R.ok(organizationTree,
|
return R.ok(organizationTree,
|
||||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"机构信息"}));
|
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] { "机构信息" }));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -133,14 +133,18 @@ public class OrganizationController {
|
|||||||
/**
|
/**
|
||||||
* 获取挂号科室列表
|
* 获取挂号科室列表
|
||||||
*
|
*
|
||||||
|
* @param pageNum 当前页码
|
||||||
|
* @param pageSize 查询条数
|
||||||
* @param name 机构/科室名称
|
* @param name 机构/科室名称
|
||||||
* @param orgName 机构名称
|
* @param orgName 机构名称
|
||||||
* @return 挂号科室列表
|
* @return 挂号科室列表
|
||||||
*/
|
*/
|
||||||
@GetMapping("/register-organizations")
|
@GetMapping("/register-organizations")
|
||||||
public R<?> getRegisterOrganizations(@RequestParam(required = false) String name,
|
public R<?> getRegisterOrganizations(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
|
||||||
|
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
|
||||||
|
@RequestParam(required = false) String name,
|
||||||
@RequestParam(required = false) String orgName) {
|
@RequestParam(required = false) String orgName) {
|
||||||
return iOrganizationAppService.getRegisterOrganizations(name, orgName);
|
return iOrganizationAppService.getRegisterOrganizations(pageNum, pageSize, name, orgName);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<div class="appoinmentmanage-wrapper">
|
||||||
<div class="appoinmentmanage-container">
|
<div class="appoinmentmanage-container">
|
||||||
<div class="appoinmentmanage-header">
|
<div class="appoinmentmanage-header">
|
||||||
<h2 class="appoinmentmanage-title">科室排班管理</h2>
|
<h2 class="appoinmentmanage-title">科室排班管理</h2>
|
||||||
@@ -366,10 +367,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="AppoinmentManage">
|
<script setup name="DeptManage">
|
||||||
import {computed, onMounted, ref, watch} from 'vue'
|
import {computed, onMounted, ref, watch} from 'vue'
|
||||||
import { getDeptAppthoursList } from '@/api/appoinmentmanage/deptappthoursManage'
|
import { getDeptAppthoursList } from '@/api/appoinmentmanage/deptappthoursManage'
|
||||||
import {useRouter} from 'vue-router'
|
import {useRouter} from 'vue-router'
|
||||||
@@ -806,30 +807,23 @@ const fetchOrganizationList = async () => {
|
|||||||
// 获取科室列表(通用方法)
|
// 获取科室列表(通用方法)
|
||||||
const fetchDeptList = async (apiFunction) => {
|
const fetchDeptList = async (apiFunction) => {
|
||||||
try {
|
try {
|
||||||
// 复制查询参数,避免修改原始参数
|
// 复制查询参数
|
||||||
const params = {
|
const params = {
|
||||||
...queryParams.value,
|
...queryParams.value,
|
||||||
pageNo: pagination.value.currentPage,
|
pageNum: pagination.value.currentPage, // 修正为 pageNum
|
||||||
pageSize: pagination.value.pageSize
|
pageSize: pagination.value.pageSize
|
||||||
};
|
};
|
||||||
|
|
||||||
// 并行获取科室列表和科室时间配置
|
// 同时获取配置数据,分页大小与主列表保持一致
|
||||||
|
// 这样既解决了 9999 导致的性能问题,又保证了当前显示行的数据完整性
|
||||||
const [deptRes, configRes] = await Promise.all([
|
const [deptRes, configRes] = await Promise.all([
|
||||||
apiFunction(params),
|
apiFunction(params),
|
||||||
getDeptAppthoursList({ pageNum: 1, pageSize: 9999 })
|
getDeptAppthoursList({
|
||||||
|
pageNum: pagination.value.currentPage,
|
||||||
|
pageSize: pagination.value.pageSize
|
||||||
|
})
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// 创建科室名称到机构名称的映射
|
|
||||||
const institutionMap = new Map();
|
|
||||||
if (configRes.code === 200) {
|
|
||||||
const configRecords = configRes.data?.records || configRes.rows || [];
|
|
||||||
configRecords.forEach(config => {
|
|
||||||
if (config.department && config.institution) {
|
|
||||||
institutionMap.set(config.department, config.institution);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (deptRes.code === 200) {
|
if (deptRes.code === 200) {
|
||||||
let dataList = [];
|
let dataList = [];
|
||||||
let totalCount = 0;
|
let totalCount = 0;
|
||||||
@@ -837,12 +831,14 @@ const fetchDeptList = async (apiFunction) => {
|
|||||||
if (actualData && actualData.code === 200 && actualData.msg) {
|
if (actualData && actualData.code === 200 && actualData.msg) {
|
||||||
actualData = actualData.data;
|
actualData = actualData.data;
|
||||||
}
|
}
|
||||||
if (actualData && actualData.content) {
|
|
||||||
dataList = actualData.content;
|
// 提取主数据列表
|
||||||
totalCount = actualData.totalElements || 0;
|
if (actualData && actualData.records) {
|
||||||
} else if (actualData && actualData.records) {
|
|
||||||
dataList = actualData.records;
|
dataList = actualData.records;
|
||||||
totalCount = actualData.total || 0;
|
totalCount = actualData.total || 0;
|
||||||
|
} else if (actualData && actualData.content) {
|
||||||
|
dataList = actualData.content;
|
||||||
|
totalCount = actualData.totalElements || 0;
|
||||||
} else if (Array.isArray(actualData)) {
|
} else if (Array.isArray(actualData)) {
|
||||||
dataList = actualData;
|
dataList = actualData;
|
||||||
totalCount = actualData.length;
|
totalCount = actualData.length;
|
||||||
@@ -854,38 +850,38 @@ const fetchDeptList = async (apiFunction) => {
|
|||||||
totalCount = Array.isArray(actualData) ? actualData.length : 0;
|
totalCount = Array.isArray(actualData) ? actualData.length : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 提取并映射配置数据
|
||||||
|
const configs = configRes?.data?.records || configRes?.rows || configRes?.data || [];
|
||||||
|
const configMap = new Map();
|
||||||
|
if (Array.isArray(configs)) {
|
||||||
|
configs.forEach(c => {
|
||||||
|
// 假设通过机构+科室名进行匹配,或者通过ID(取决于后端模型)
|
||||||
|
const key = `${c.institution}-${c.department}`;
|
||||||
|
configMap.set(key, c);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (apiFunction === getRegisterOrganizations) {
|
if (apiFunction === getRegisterOrganizations) {
|
||||||
deptList.value = dataList.map(org => ({
|
deptList.value = dataList.map(org => {
|
||||||
|
const key = `${org.orgName || org.organizationName || org.org || ''}-${org.name}`;
|
||||||
|
const config = configMap.get(key);
|
||||||
|
|
||||||
|
return {
|
||||||
id: org.id,
|
id: org.id,
|
||||||
orgName: institutionMap.get(org.name) || org.name,
|
orgName: org.orgName || org.organizationName || org.name,
|
||||||
deptName: org.name,
|
deptName: org.name,
|
||||||
name: org.name,
|
name: org.name,
|
||||||
remark: org.remark || org.intro,
|
remark: org.remark || org.intro,
|
||||||
status: org.activeFlag === 1,
|
// 优先使用配置中的状态,作为补充
|
||||||
registerFlag: org.registerFlag
|
status: config ? config.activeFlag !== 0 : (org.activeFlag === 1),
|
||||||
}));
|
registerFlag: config ? config.registerFlag : org.registerFlag
|
||||||
|
};
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
deptList.value = dataList;
|
deptList.value = dataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果后端没有处理筛选,才进行前端筛选
|
|
||||||
// 但要注意,这样会影响分页准确性,理想情况下应由后端处理
|
|
||||||
pagination.value.total = totalCount;
|
pagination.value.total = totalCount;
|
||||||
|
|
||||||
// 仅当前端分页时才进行过滤
|
|
||||||
if (queryParams.value.orgName && queryParams.value.orgName !== '') {
|
|
||||||
deptList.value = deptList.value.filter(
|
|
||||||
org => org.orgName === queryParams.value.orgName
|
|
||||||
);
|
|
||||||
pagination.value.total = deptList.value.length; // 更新总数为过滤后的数量
|
|
||||||
}
|
|
||||||
|
|
||||||
if (queryParams.value.deptName && queryParams.value.deptName !== '') {
|
|
||||||
deptList.value = deptList.value.filter(
|
|
||||||
org => org.deptName && org.deptName.includes(queryParams.value.deptName)
|
|
||||||
);
|
|
||||||
pagination.value.total = deptList.value.length; // 更新总数为过滤后的数量
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
ElMessage.error(deptRes.msg || '获取科室列表失败');
|
ElMessage.error(deptRes.msg || '获取科室列表失败');
|
||||||
}
|
}
|
||||||
@@ -1637,7 +1633,10 @@ const handleCurrentChange = (current) => {
|
|||||||
const fetchDepartmentOptions = async () => {
|
const fetchDepartmentOptions = async () => {
|
||||||
try {
|
try {
|
||||||
// 使用当前查询参数进行过滤
|
// 使用当前查询参数进行过滤
|
||||||
const params = {}
|
const params = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 100 // 下拉菜单加载较多数据以供选择
|
||||||
|
}
|
||||||
if (queryParams.value.deptName) {
|
if (queryParams.value.deptName) {
|
||||||
params.name = queryParams.value.deptName
|
params.name = queryParams.value.deptName
|
||||||
}
|
}
|
||||||
@@ -1700,18 +1699,16 @@ const fetchDepartmentOptions = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 页面加载时获取科室列表
|
// 页面加载时获取初始化数据
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
// 同时加载卫生机构列表和科室列表
|
// 优化:合并初始化请求,减少并发
|
||||||
await Promise.all([
|
await fetchOrganizationList() // 该函数内部已包含 getRegisterOrganizations 调用
|
||||||
fetchOrganizationList(), // 加载卫生机构列表
|
await getDeptList()
|
||||||
getDeptList() // 加载科室列表
|
|
||||||
])
|
|
||||||
|
|
||||||
// 延迟加载科室选项,避免阻塞主列表加载
|
// 延迟加载非核心选项
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
fetchDepartmentOptions()
|
fetchDepartmentOptions()
|
||||||
}, 0)
|
}, 300)
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -277,7 +277,7 @@
|
|||||||
:show-overflow-tooltip="true"
|
:show-overflow-tooltip="true"
|
||||||
>
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.purchasePrice?.toFixed(3) + ' 元' }}</span>
|
<span>{{ Number(scope.row.purchasePrice || 0).toFixed(3) + ' 元' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -290,7 +290,7 @@
|
|||||||
:show-overflow-tooltip="true"
|
:show-overflow-tooltip="true"
|
||||||
>
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.salePrice?.toFixed(3) + ' 元' }}</span>
|
<span>{{ Number(scope.row.salePrice || 0).toFixed(3) + ' 元' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -303,7 +303,7 @@
|
|||||||
:show-overflow-tooltip="true"
|
:show-overflow-tooltip="true"
|
||||||
>
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.totalPurchasePrice?.toFixed(3) + ' 元' }}</span>
|
<span>{{ Number(scope.row.totalPurchasePrice || 0).toFixed(3) + ' 元' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -316,7 +316,7 @@
|
|||||||
:show-overflow-tooltip="true"
|
:show-overflow-tooltip="true"
|
||||||
>
|
>
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.totalSalePrice?.toFixed(3) + ' 元' }}</span>
|
<span>{{ Number(scope.row.totalSalePrice || 0).toFixed(3) + ' 元' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -671,8 +671,13 @@ function getList() {
|
|||||||
total.value = res.data.total;
|
total.value = res.data.total;
|
||||||
});
|
});
|
||||||
productPageTotal(params).then((res) => {
|
productPageTotal(params).then((res) => {
|
||||||
salePriceTotal.value = res.data.purchasePriceStatistics;
|
// 使用 Number() 强制转换,解决字符串问题
|
||||||
priceTotal.value = res.data.salePriceStatistics;
|
// 使用 || 0 解决 null/undefined 问题
|
||||||
|
const purchasePrice = res.data?.purchasePriceStatistics;
|
||||||
|
const salePrice = res.data?.salePriceStatistics;
|
||||||
|
|
||||||
|
salePriceTotal.value = Number(purchasePrice || 0);
|
||||||
|
priceTotal.value = Number(salePrice || 0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user