From 112ec2e4a31ac89c68fd6ff61f144b3e0ccbc010 Mon Sep 17 00:00:00 2001
From: Ranyunqiao <2499115710@qq.com>
Date: Fri, 27 Mar 2026 13:23:44 +0800
Subject: [PATCH] =?UTF-8?q?275=20276=20=20284=20=20285=20286=20287=20?=
=?UTF-8?q?=E6=A3=80=E6=9F=A5=E9=A1=B9=E7=9B=AE=E8=AE=BE=E7=BD=AE-?=
=?UTF-8?q?=E3=80=8B=E5=A5=97=E9=A4=90=E7=AE=A1=E7=90=86=EF=BC=9A=E5=8D=AB?=
=?UTF-8?q?=E7=94=9F=E6=9C=BA=E6=9E=84=E4=B8=8B=E6=8B=89=E9=80=89=E9=A1=B9?=
=?UTF-8?q?=E5=8F=96=E5=80=BC=E9=94=99=E8=AF=AF=20=E6=A3=80=E6=9F=A5?=
=?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=BE=E7=BD=AE-=E3=80=8B=E6=A3=80?=
=?UTF-8?q?=E6=9F=A5=E9=83=A8=E4=BD=8D=EF=BC=9A=E4=B8=8B=E6=8B=89=E5=8C=BB?=
=?UTF-8?q?=E6=8A=80=E7=B1=BB=E5=9E=8B=E6=9C=AA=E5=81=9A=E6=88=90=E4=B8=8B?=
=?UTF-8?q?=E6=8B=89=E9=80=89=E9=A1=B9=20=E6=A3=80=E6=9F=A5=E9=A1=B9?=
=?UTF-8?q?=E7=9B=AE=E8=AE=BE=E7=BD=AE-=E3=80=8B=E6=A3=80=E6=9F=A5?=
=?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=9A=E8=B4=B9=E7=94=A8=E5=A5=97=E9=A4=90?=
=?UTF-8?q?=E7=AD=9B=E9=80=89=E5=AD=97=E6=AE=B5=E4=B8=8D=E5=8F=AF=E4=BB=A5?=
=?UTF-8?q?=E6=A8=A1=E7=B3=8A=E6=9F=A5=E6=89=BE=E9=80=89=E9=A1=B9=E5=86=85?=
=?UTF-8?q?=E5=AE=B9=E3=80=82=20=E6=A3=80=E6=9F=A5=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E3=80=8B=E6=A3=80=E6=9F=A5=E6=96=B9?=
=?UTF-8?q?=E6=B3=95=EF=BC=9A=E7=82=B9=E3=80=90=E5=AF=BC=E5=87=BA=E8=A1=A8?=
=?UTF-8?q?=E6=A0=BC=E3=80=91=E6=8A=A5=E9=94=99=E3=80=82=20=E6=A3=80?=
=?UTF-8?q?=E6=9F=A5=E9=A1=B9=E7=9B=AE=E8=AE=BE=E7=BD=AE-=E3=80=8B?=
=?UTF-8?q?=E6=A3=80=E6=9F=A5=E9=83=A8=E4=BD=8D=EF=BC=9A=E7=82=B9=E5=87=BB?=
=?UTF-8?q?=E3=80=90=E5=AF=BC=E5=87=BA=E8=A1=A8=E6=A0=BC=E3=80=91=E6=8A=A5?=
=?UTF-8?q?=E9=94=99=20=E6=A3=80=E6=9F=A5=E9=A1=B9=E7=9B=AE=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE-=E3=80=8B=E5=A5=97=E9=A4=90=E8=AE=BE=E7=BD=AE?=
=?UTF-8?q?=EF=BC=9A=E3=80=90=E5=A5=97=E9=A4=90=E8=AE=BE=E7=BD=AE=E3=80=91?=
=?UTF-8?q?=E6=94=B9=E6=88=90=E3=80=90=E5=A5=97=E9=A4=90=E7=AE=A1=E7=90=86?=
=?UTF-8?q?=E3=80=91=E5=A5=BD=E5=8C=BA=E5=88=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
openhis-ui-vue3/src/utils/request.js | 7 +-
.../components/PackageSettings.vue | 2 +-
.../checkprojectSettings/index.vue | 145 +++++++++++++-----
3 files changed, 112 insertions(+), 42 deletions(-)
diff --git a/openhis-ui-vue3/src/utils/request.js b/openhis-ui-vue3/src/utils/request.js
index 65edb4ff..4fc4f340 100644
--- a/openhis-ui-vue3/src/utils/request.js
+++ b/openhis-ui-vue3/src/utils/request.js
@@ -58,11 +58,14 @@ const service = axios.create({
// 新增:重写响应解析逻辑,大数字自动转字符串(移到这里!)
transformResponse: [
function (data) {
- if (!data) return {} // 空数据直接返回,避免解析报错
+ if (!data) return {}
+ // 如果是 Blob 或 ArrayBuffer,直接返回,不进行 JSON 解析
+ if (data instanceof Blob || data instanceof ArrayBuffer) {
+ return data
+ }
try {
return jsonBig.parse(data)
} catch (err) {
- // 解析失败时用默认方式,兼容特殊情况
return JSON.parse(data)
}
}
diff --git a/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/components/PackageSettings.vue b/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/components/PackageSettings.vue
index 030fe9f2..1058c9e4 100644
--- a/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/components/PackageSettings.vue
+++ b/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/components/PackageSettings.vue
@@ -2,7 +2,7 @@
diff --git a/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/index.vue b/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/index.vue
index 4c41ae1a..35374610 100644
--- a/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/index.vue
+++ b/openhis-ui-vue3/src/views/maintainSystem/checkprojectSettings/index.vue
@@ -40,7 +40,7 @@
-
+
{
const dictItem = serviceScopeDicts.value.find(item => item.dictValue === value);
return dictItem ? dictItem.dictLabel : value;
};
+
+ // 根据检查类型获取下级医技类型的选项
+ const getSubTypeOptions = (checkTypeValue) => {
+ // 根据需求:
+ // 1. 拿着检查部位页面中的检查类型字段的值去检查类型页面
+ // 2. 找到其对应真正的检查类型字段的值
+ // 3. 再看有哪几行检查类型是一样的
+ // 4. 再把这几行的名称返回给下级医技选项
+ // 5. 只有选择部位打勾的才返回
+
+ if (!checkTypeValue) {
+ // 如果没有选择检查类型,返回空数组
+ return [];
+ }
+
+ // 从检查类型数据中查找匹配的记录
+ // 首先找到当前选中的检查类型对应的完整记录
+ const currentCheckTypeRecord = checkTypeData.find(record => record.name === checkTypeValue);
+
+ if (!currentCheckTypeRecord) {
+ // 如果找不到对应的记录,返回空数组
+ return [];
+ }
+
+ // 获取当前记录的"检查类型"字段值
+ const targetTypeValue = currentCheckTypeRecord.type;
+
+ if (!targetTypeValue) {
+ // 如果没有检查类型值,返回空数组
+ return [];
+ }
+
+ // 在检查类型数据中查找所有检查类型字段值相同且选择部位打勾的记录
+ const matchedRecords = checkTypeData.filter(record =>
+ record.type === targetTypeValue && record.selected
+ );
+
+ // 将匹配记录的名称作为选项返回
+ return matchedRecords.map(record => ({
+ value: record.name,
+ label: record.name,
+ id: record.id,
+ code: record.code
+ }));
+ };
+
const checkParts = ref([]);
const checkPackages = ref([]);
// 套餐下拉选项的过滤结果
@@ -1815,44 +1862,64 @@ function handleExport() {
console.log('导出表格:', activeMenu.value);
if (activeMenu.value === '检查方法') {
- // 调用检查方法导出API
- exportCheckMethod(searchParamsMethod).then(blobData => {
- // 直接使用blobData创建下载链接,因为response拦截器已经返回了res.data
- const blob = new Blob([blobData], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
- const url = window.URL.createObjectURL(blob);
- const link = document.createElement('a');
- link.href = url;
- // 设置文件名
- link.setAttribute('download', `检查方法数据_${new Date().toISOString().slice(0, 10)}.xlsx`);
- document.body.appendChild(link);
- link.click();
- // 清理
- document.body.removeChild(link);
- window.URL.revokeObjectURL(url);
- ElMessage.success('检查方法数据导出成功');
- }).catch(error => {
- console.error('导出检查方法数据失败:', error);
- ElMessage.error('导出检查方法数据失败');
+ // 使用封装好的API方法
+ import('@/api/system/checkType').then(apiModule => {
+ apiModule.exportCheckMethod(searchParamsMethod)
+ .then(data => {
+ const isBlob = data && data.type && data.type.indexOf('application/json') === -1;
+ if (isBlob) {
+ const url = window.URL.createObjectURL(data);
+ const link = document.createElement('a');
+ link.href = url;
+ link.setAttribute('download', `检查方法数据_${new Date().toISOString().slice(0, 10)}.xlsx`);
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+ window.URL.revokeObjectURL(url);
+ ElMessage.success('检查方法数据导出成功');
+ } else {
+ data.text().then(text => {
+ const errorObj = JSON.parse(text);
+ ElMessage.error(errorObj.msg || errorObj.message || '导出检查方法数据失败');
+ }).catch(() => {
+ ElMessage.error('导出检查方法数据失败');
+ });
+ }
+ })
+ .catch(error => {
+ console.error('导出检查方法数据失败:', error);
+ ElMessage.error('导出检查方法数据失败');
+ });
});
} else if (activeMenu.value === '检查部位') {
- // 调用检查部位导出API
- exportCheckPart(searchParamsPart).then(blobData => {
- // 直接使用blobData创建下载链接,因为response拦截器已经返回了res.data
- const blob = new Blob([blobData], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
- const url = window.URL.createObjectURL(blob);
- const link = document.createElement('a');
- link.href = url;
- // 设置文件名
- link.setAttribute('download', `检查部位数据_${new Date().toISOString().slice(0, 10)}.xlsx`);
- document.body.appendChild(link);
- link.click();
- // 清理
- document.body.removeChild(link);
- window.URL.revokeObjectURL(url);
- ElMessage.success('检查部位数据导出成功');
- }).catch(error => {
- console.error('导出检查部位数据失败:', error);
- ElMessage.error('导出检查部位数据失败');
+ // 使用封装好的API方法
+ import('@/api/system/checkType').then(apiModule => {
+ apiModule.exportCheckPart(searchParamsPart)
+ .then(data => {
+ const isBlob = data && data.type && data.type.indexOf('application/json') === -1;
+ if (isBlob) {
+ const url = window.URL.createObjectURL(data);
+ const link = document.createElement('a');
+ link.href = url;
+ link.setAttribute('download', `检查部位数据_${new Date().toISOString().slice(0, 10)}.xlsx`);
+ document.body.appendChild(link);
+ link.click();
+ document.body.removeChild(link);
+ window.URL.revokeObjectURL(url);
+ ElMessage.success('检查部位数据导出成功');
+ } else {
+ data.text().then(text => {
+ const errorObj = JSON.parse(text);
+ ElMessage.error(errorObj.msg || errorObj.message || '导出检查部位数据失败');
+ }).catch(() => {
+ ElMessage.error('导出检查部位数据失败');
+ });
+ }
+ })
+ .catch(error => {
+ console.error('导出检查部位数据失败:', error);
+ ElMessage.error('导出检查部位数据失败');
+ });
});
} else {
// 其他菜单的导出逻辑可以在这里扩展