解决合并冲突

This commit is contained in:
2025-12-10 14:20:24 +08:00
parent e1385cb3e6
commit 18f6a845e6
804 changed files with 61881 additions and 13577 deletions

View File

@@ -1,92 +1,94 @@
import request from '@/utils/request'
import request from '@/utils/request';
/**
* 获取患者列表
*/
export function getList(queryParams) {
return request({
export function getList (queryParams) {
return request ({
url: '/outpatient-manage/treatment/encounter-list',
method: 'get',
params: queryParams
})
params: queryParams,
});
}
/**
* 诊疗列表
*/
export function getDisposalList(encounterId) {
return request({
url: '/outpatient-manage/treatment/treatment-list?encounterId=' + encounterId,
export function getDisposalList (encounterId, serviceCategory) {
return request ({
url: '/outpatient-manage/treatment/treatment-list?encounterId=' +
encounterId +
(serviceCategory ? '&serviceCategory=' + serviceCategory : ''),
method: 'get',
})
});
}
/**
* 执行列表
*/
export function getExecuteList(queryParams) {
return request({
export function getExecuteList (queryParams) {
return request ({
url: '/outpatient-manage/treatment/execute-list',
method: 'get',
params: queryParams
})
params: queryParams,
});
}
/**
* 初始化
*/
export function init() {
return request({
export function init () {
return request ({
url: '/outpatient-manage/treatment/init',
method: 'get',
})
});
}
/**
* 执行
*/
export function execute(data) {
return request({
export function execute (data) {
return request ({
url: '/outpatient-manage/treatment/perform',
method: 'put',
data: data
})
data: data,
});
}
/**
* 取消
*/
export function cancel(data) {
return request({
export function cancel (data) {
return request ({
url: '/outpatient-manage/treatment/cancel-perform',
method: 'put',
data: data
})
data: data,
});
}
/**
* 获取执行记录
*/
export function getPerformRecord(params) {
return request({
export function getPerformRecord (params) {
return request ({
url: '/outpatient-manage/treatment/perform-record',
method: 'get',
params: params
})
params: params,
});
}
export function listWesternmedicine(query) {
return request({
export function listWesternmedicine (query) {
return request ({
url: '/pharmacy-manage/western-medicine-dispense/prescription-list',
method: 'get',
params: query
})
params: query,
});
}
export function printBloodCode(query) {
return request({
export function printBloodCode (query) {
return request ({
url: '/outpatient-manage/treatment/blood-transfusion-patch',
method: 'get',
params: query
})
}
params: query,
});
}

View File

@@ -33,7 +33,7 @@
"top": 22.5,
"height": 12,
"width": 88.5,
"title": "医院",
"title": "长春大学医院",
"coordinateSync": false,
"widthHeightSync": false,
"fontSize": 13.5,

View File

@@ -1,25 +1,17 @@
<template>
<el-dialog
title="执行记录"
v-model="props.open"
:model-value="props.open"
width="1000px"
append-to-body
destroy-on-close
@close="close"
@open="openDialog"
>
<el-table
:data="recordList"
highlight-current-row
@row-click="handlePatientSelect"
max-height="650"
style="width: 100%"
border
>
<el-table-column prop="occurrenceTime" label="执行时间" align="center" width="150" />
<el-table :data="recordList" highlight-current-row max-height="650" style="width: 100%" border>
<el-table-column prop="occurrenceTime" label="执行时间" align="center" />
<el-table-column prop="statusEnum_enumText" label="执行状态" align="center" />
<el-table-column prop="orgName" label="执行科室" align="center" width="100" />
<el-table-column prop="practitionerName" label="执行人" align="center" width="100" />
<el-table-column prop="orgName" label="执行科室" align="center" />
<el-table-column prop="practitionerName" label="执行人" align="center" />
</el-table>
<template #footer>
<div class="dialog-footer">
@@ -36,7 +28,7 @@ const props = defineProps({
default: false,
},
recordList: {
type: [],
type: Array,
},
});
const emit = defineEmits(['close']);

View File

@@ -37,7 +37,7 @@
"top": 16.5,
"height": 22.5,
"width": 120,
"title": "医院",
"title": "长春大学医院",
"coordinateSync": false,
"widthHeightSync": false,
"fontFamily": "Microsoft YaHei",

View File

@@ -1,222 +1,311 @@
<template>
<div class="his-container">
<!-- 主体内容区域 -->
<div class="main-content">
<!-- 左侧患者列表区域 -->
<div class="section patient-section">
<div class="section-header">
<div class="section-title">
<i class="el-icon-user"></i>
<h2>患者列表</h2>
</div>
</div>
<div class="search-area">
<el-input
v-model="queryParams.searchKey"
style="width: 45%; margin-bottom: 10px"
placeholder="搜索患者"
clearable
class="search-input"
@keydown.enter="getPatientList"
>
<template #append>
<el-button icon="Search" @click="getPatientList" />
</template>
</el-input>
<el-date-picker
v-model="receptionTime"
@change="getPatientList"
type="daterange"
style="width: 55%; margin-bottom: 10px"
placeholder="挂号时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/>
</div>
<el-table
:data="patientList"
highlight-current-row
@row-click="handlePatientSelect"
max-height="650"
style="width: 100%"
border
>
<el-table-column prop="encounterNo" label="就诊号" align="center" width="150" />
<el-table-column prop="patientName" label="姓名" align="center" />
<el-table-column prop="genderEnum_enumText" label="性别" align="center" width="100" />
<el-table-column prop="age" label="年龄" align="center" width="100" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
layout="total, sizes, prev, pager, next"
@pagination="getPatientList"
/>
</div>
<!-- 右侧区域 -->
<div class="right-section">
<!-- 处置项目区域 -->
<div class="section treatment-section">
<div class="section-header">
<div class="section-title">
<i class="el-icon-first-aid-kit"></i>
<h2>处置项目</h2>
<el-button type="primary" plain @click="printBottleLabel()">打印瓶签</el-button>
<el-button type="primary" plain @click="printBloodBarcode()">打印采血条码</el-button>
<el-button type="primary" plain @click="printPrescription()">打印处方</el-button>
<el-button type="primary" plain @click="printDisposal()">打印处置单</el-button>
</div>
</div>
<el-table
:data="activityList"
ref="activityListRef"
height="calc(100% - 60px)"
style="width: 100%"
border
v-loading="loading"
:span-method="operationSpanMethod"
>
<el-table-column type="selection" align="center" width="50" />
<el-table-column label="序号" align="center" prop="sortNumber" width="60" />
<el-table-column align="center" prop="busNo" label="项目编号" width="150" />
<el-table-column align="center" prop="itemName" label="项目名称" />
<!-- <el-table-column align="center" prop="medicationName" label="药品名称" /> -->
<el-table-column
align="center"
prop="serviceCategory_dictText"
label="项目类型"
width="80"
<div class="app-container">
<el-row :gutter="20">
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="6">
<el-card>
<template #header>患者信息</template>
<el-row :gutter="10">
<el-col :span="10" :xs="24" :sm="10" :md="10">
<el-input
v-model="queryParams.searchKey"
placeholder="搜索患者"
clearable
class="search-input"
style="width: 100%"
@keydown.enter="getPatientList"
>
<template #append>
<el-button icon="Search" @click="getPatientList" />
</template>
</el-input>
</el-col>
<el-col :span="14" :xs="24" :sm="14" :md="14">
<el-date-picker
v-model="receptionTime"
@change="getPatientList"
type="daterange"
placeholder="挂号时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
style="width: 100%"
/>
</el-col>
</el-row>
<el-row>
<el-col :span="24" :xs="24">
<el-table
:data="patientList"
highlight-current-row
@row-click="handlePatientSelect"
style="width: 100%; height: calc(100vh - 300px)"
border
>
<el-table-column prop="encounterNo" label="就诊号" align="center" width="150" />
<el-table-column prop="patientName" label="姓名" align="center" />
<el-table-column prop="genderEnum_enumText" label="性别" align="center" />
<el-table-column prop="age" label="年龄" align="center" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
layout="total, sizes, prev, pager, next"
@pagination="getPatientList"
/>
</el-col>
</el-row>
</el-card>
</el-col>
<el-col :xs="24" :sm="24" :md="16" :lg="16" :xl="18">
<el-row :gutter="20">
<el-col :xs="24" :sm="24" :md="12" class="mb8">
<el-button
type="primary"
plain
icon="Printer"
@click="printBottleLabel()"
:disabled="isCurrentPatient"
>
<template #default="scope">
{{
scope.row.medCategory
? scope.row.medCategory_dictText
: scope.row.serviceCategory_dictText
}}
</template>
</el-table-column>
<el-table-column align="center" prop="size" label="数量" width="100">
<template #default="scope">
{{ scope.row.quantity + ' ' + scope.row.unitCode_dictText }}
</template>
</el-table-column>
<el-table-column align="center" prop="size" label="规格" width="100" />
<el-table-column align="center" prop="executeNum" label="执行次数" width="90" />
<el-table-column align="center" label="已执行次数" width="90">
<template #default="scope">
{{ scope.row.performCount - scope.row.cancelCount }}
</template>
</el-table-column>
<el-table-column
align="right"
header-align="center"
prop="unitPrice"
label="单价"
width="90"
打印瓶签
</el-button>
<el-button
type="danger"
plain
icon="Printer"
@click="printBloodBarcode()"
:disabled="isCurrentPatient"
>
<template #default="scope">
<span>
打印采血条码
</el-button>
<el-button
type="primary"
plain
icon="Printer"
@click="printPrescription()"
:disabled="isCurrentPatient"
>
打印处方
</el-button>
<el-button
type="danger"
plain
icon="Printer"
@click="printDisposal()"
:disabled="isCurrentPatient"
>
打印处置单
</el-button>
</el-col>
<el-col :xs="24" :sm="12" :md="6">
<el-form
ref="queryRef"
:model="queryParams"
inline-style="width: 100%"
label-width="150px"
:rules="rules"
>
<el-form-item label="处置类型" prop="serviceCategory" label-width="100px">
<el-select
v-model="queryParams.serviceCategory"
placeholder="请选择"
clearable
filterable
style="width: 100%"
@change="handleServiceCategoryChange"
:disabled="isCurrentPatient"
>
<el-option
v-for="item in activityCategoryList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-form>
</el-col>
<el-col :xs="24" :sm="12" :md="6" class="mb8">
<el-button
type="primary"
icon="Check"
@click="handleBatchExecute()"
:disabled="isMultiple"
>
批量执行
</el-button>
<el-button
type="danger"
icon="Delete"
@click="handleBatchCancel()"
:disabled="isMultiple"
>
批量取消
</el-button>
</el-col>
</el-row>
<div class="cards-column">
<el-card class="half-card">
<template #header>处置项目</template>
<el-table
:data="activityList"
ref="activityListRef"
style="width: 100%; height: 100%"
border
v-loading="loading"
:span-method="operationSpanMethod"
@select="handleSelectionChange"
>
<el-table-column type="selection" align="center" width="50" />
<el-table-column label="组" align="center" width="40" prop="groupIcon" />
<!-- <el-table-column label="序号" align="center" prop="sortNumber" width="60" /> -->
<el-table-column align="center" prop="busNo" label="项目编号" width="150" />
<el-table-column align="center" prop="itemName" label="项目名称" />
<el-table-column
align="center"
prop="serviceStatus_enumText"
label="状态"
width="100"
>
<template #default="{ row }">
<el-tag type="primary" size="small">
{{
row.serviceStatus_enumText
? row.serviceStatus_enumText
: row.chargeStatus_enumText
}}
</el-tag>
</template>
</el-table-column>
<el-table-column
align="center"
prop="serviceCategory_dictText"
label="项目类型"
width="80"
>
<template #default="scope">
{{
scope.row.unitPrice ? scope.row.unitPrice.toFixed(2) + ' 元' : '0.00' + ' 元'
scope.row.medCategory
? scope.row.medCategory_dictText
: scope.row.serviceCategory_dictText
}}
</span>
</template>
</el-table-column>
<el-table-column
align="right"
header-align="center"
prop="totalPrice"
label="总价"
width="90"
>
<template #default="scope">
<span>{{
scope.row.totalPrice ? scope.row.totalPrice.toFixed(2) + ' 元' : '0.00' + ' 元'
}}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="serviceStatus_enumText" label="状态" width="100">
<template #default="{ row }">
<el-tag type="primary" size="small">
{{
row.serviceStatus_enumText
? row.serviceStatus_enumText
: row.chargeStatus_enumText
}}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200" fixed="right">
<template #default="{ row }">
<el-button type="text" @click="handleExecute(row)"> 执行 </el-button>
<el-button type="danger" link @click="handleCancel(row)"> 取消 </el-button>
<el-button type="text" @click="getRecord(row)">执行记录</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
</el-table-column>
<el-table-column align="center" prop="size" label="数量" width="100">
<template #default="scope">
<span v-if="scope.row.quantity !== 0 && scope.row.unitCode_dictText">
{{ scope.row.quantity + ' ' + scope.row.unitCode_dictText }}
</span>
<span v-else> - </span>
</template>
</el-table-column>
<el-table-column align="center" prop="size" label="规格" width="100" />
<el-table-column align="center" prop="executeNum" label="执行次数" width="90" />
<el-table-column align="center" label="已执行次数" width="120">
<template #default="scope">
{{ scope.row.performCount - scope.row.cancelCount }}
</template>
</el-table-column>
<el-table-column
align="right"
header-align="center"
prop="unitPrice"
label="单价"
width="90"
>
<template #default="scope">
<span>
{{
scope.row.unitPrice ? scope.row.unitPrice.toFixed(2) + ' 元' : '0.00' + ' 元'
}}
</span>
</template>
</el-table-column>
<el-table-column
align="right"
header-align="center"
prop="totalPrice"
label="总价"
width="90"
>
<template #default="scope">
<span>
{{
scope.row.totalPrice
? scope.row.totalPrice.toFixed(2) + ' 元'
: '0.00' + ' 元'
}}
</span>
</template>
</el-table-column>
<!-- 耗材区域 -->
<div class="section material-section">
<div class="section-header">
<div class="section-title">
<i class="el-icon-box"></i>
<h2>耗材使用</h2>
</div>
</div>
<el-table
:data="deviceList"
height="calc(100% - 60px)"
style="width: 100%"
ref="deviceListRef"
v-loading="loading"
border
>
<el-table-column type="selection" align="center" width="50" />
<el-table-column type="index" label="序号" align="center" width="60" />
<el-table-column prop="itemName" align="center" label="耗材名称" />
<el-table-column prop="size" align="center" label="规格" />
<el-table-column prop="quantity" align="center" label="使用数量">
<template #default="scope">
<span>{{ scope.row.quantity + ' ' + scope.row.unitCode_dictText }}</span>
</template>
</el-table-column>
<el-table-column align="right" header-align="center" prop="unitPrice" label="单价">
<template #default="scope">
<span>{{ scope.unitPrice ? scope.unitPrice.toFixed(2) : '0.00' + ' 元' }}</span>
</template>
</el-table-column>
<el-table-column align="right" header-align="center" prop="totalPrice" label="总价">
<template #default="scope">
<span>{{ scope.totalPrice ? scope.totalPrice.toFixed(2) : '0.00' + ' 元' }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="serviceStatus_enumText" label="状态">
<template #default="{ row }">
<el-tag type="primary" size="small">
{{ row.dispenseStatus_enumText }}
</el-tag>
</template>
</el-table-column>
<!-- <el-table-column label="操作" width="80">
<template #default="{ row }">
<el-button type="text" size="small" @click="removeMaterial(row)">移除</el-button>
</template>
</el-table-column> -->
</el-table>
<el-table-column
label="操作"
align="center"
width="150"
fixed="right"
class-name="no-hover-column"
>
<template #default="{ row }">
<!-- <el-button type="text" @click="handleExecute(row)"> 执行 </el-button> -->
<!-- <el-button type="danger" link @click="handleCancel(row)"> 取消 </el-button> -->
<el-button link type="primary" icon="EditPen" @click="getRecord(row)">
执行记录
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-card class="half-card">
<template #header> 耗材使用 </template>
<el-table
:data="deviceList"
style="width: 100%; height: 100%"
ref="deviceListRef"
v-loading="loading"
border
>
<el-table-column type="selection" align="center" width="50" />
<el-table-column type="index" label="序号" align="center" width="60" />
<el-table-column prop="itemName" align="center" label="耗材名称" />
<el-table-column align="center" prop="serviceStatus_enumText" label="状态">
<template #default="{ row }">
<el-tag type="primary" size="small">
{{ row.dispenseStatus_enumText }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="size" align="center" label="规格" />
<el-table-column prop="quantity" align="center" label="使用数量">
<template #default="scope">
<span>{{ scope.row.quantity + ' ' + scope.row.unitCode_dictText }}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="unitPrice" label="单价">
<template #default="scope">
<span>
{{ scope.unitPrice ? scope.unitPrice.toFixed(2) : '0.00' + ' 元' }}
</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" prop="totalPrice" label="总价">
<template #default="scope">
<span>
{{ scope.totalPrice ? scope.totalPrice.toFixed(2) : '0.00' + ' 元' }}
</span>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</div>
</div>
</el-col>
</el-row>
<PerformRecordDialog :open="openDialog" :recordList="recordList" @close="openDialog = false" />
</div>
</template>
<script setup>
import { getCurrentInstance } from 'vue';
import { getCurrentInstance, ref, computed } from 'vue';
import {
getList,
getDisposalList,
@@ -235,6 +324,7 @@ import { formatDateStr } from '@/utils';
import { hiprint } from 'vue-plugin-hiprint';
import { advicePrint } from '@/api/public';
import useUserStore from '@/store/modules/user';
import { getGroupMarkers } from '@/utils/his';
// 患者搜索
const queryParams = ref({
pageNo: 1,
@@ -254,6 +344,7 @@ const deviceList = ref([]);
// 诊疗项目 + 耗材 打印处置单用
const deviceActivityList = ref([]);
const userStore = useUserStore();
const { proxy } = getCurrentInstance();
// 当前选中的患者
const currentPatient = ref({});
@@ -261,21 +352,40 @@ const recordList = ref([]);
const openDialog = ref(false);
const loading = ref(false);
const activityListRef = ref(null);
const { proxy } = getCurrentInstance();
// 总费用计算
const totalCost = computed(() => {
if (!currentPatient.value.id) return 0;
const treatmentCost = currentPatient.value.treatments.reduce((sum, item) => sum + item.cost, 0);
const materialCost = currentPatient.value.materials.reduce(
(sum, item) => sum + item.cost * item.quantity,
0
const deviceListRef = ref(null);
const rules = ref({
serviceCategory: [{ required: true, message: '请选择处置类型', trigger: 'blur' }],
});
//
const { activity_category_code } = proxy.useDict('activity_category_code');
const activityCategoryList = computed(() => {
const keywords = ['检验', '检查', '治疗'];
return (activity_category_code.value || []).filter((item) =>
keywords.some((k) => String(item.label || '').includes(k))
);
});
const activitySelectedList = ref([]);
const deviceSelectedList = ref([]);
// 是否有批量选择:无任何选择时禁用
const isMultiple = computed(() => {
// 未选择患者或为空对象时禁用
if (!currentPatient.value || Object.keys(currentPatient.value).length === 0) {
return true;
}
// 选中 处置列表
activitySelectedList.value = activityListRef.value?.getSelectionRows
? activityListRef.value.getSelectionRows()
: [];
return treatmentCost + materialCost;
// 选中 耗材列表
deviceSelectedList.value = deviceListRef.value?.getSelectionRows
? deviceListRef.value.getSelectionRows()
: [];
return deviceSelectedList.value.length === 0 && activitySelectedList.value.length === 0;
});
// 是否为当前患者
const isCurrentPatient = computed(() => {
return Object.keys(currentPatient.value).length === 0;
});
getPatientList();
function getPatientList() {
@@ -286,9 +396,32 @@ function getPatientList() {
total.value = res.data.total;
});
}
// 切换处置类型
function handleServiceCategoryChange(value) {
// 就诊id
let encounterId = currentPatient.value.encounterId;
// 处置类型
let serviceCategory = value;
// 如果就诊id和处置类型不为空则获取处置列表
if (encounterId && serviceCategory) {
getDisposalList(encounterId, serviceCategory).then((res) => {
deviceList.value = res.data.records.filter((item) => {
return item.requestTable == 'wor_device_request';
});
activityList.value = res.data.records.filter((item) => {
return (
item.requestTable == 'wor_service_request' ||
item.requestTable == 'med_medication_request'
);
});
deviceActivityList.value = res.data.records.filter((item) => {
return item.deviceCategory == '7' || item.serviceCategory == '21';
});
});
}
}
function handlePatientSelect(row) {
console.log(row, 3456789);
loading.value = true;
currentPatient.value = row;
getDisposalList(row.encounterId).then((res) => {
@@ -300,14 +433,84 @@ function handlePatientSelect(row) {
item.requestTable == 'wor_service_request' || item.requestTable == 'med_medication_request'
);
});
activityList.value = getGroupMarkers(activityList.value);
deviceActivityList.value = res.data.records.filter((item) => {
return item.deviceCategory == '7' || item.serviceCategory == '21';
});
loading.value = false;
console.log(activityList.value, 345678);
});
}
// 批量操作校验
function handleBatchValidate(type) {
let params = [];
// 是否批量选择了数据
if (isMultiple.value) {
proxy.$modal.msgError('请选择要执行的项目');
return;
}
if (type === 'execute') {
let activityList = activitySelectedList.value
.filter((item) => {
return item.chargeStatus === 5;
})
.map((item) => {
return {
requestId: item.requestId,
dispenseId: item.dispenseId,
requestTable: item.requestTable,
chargeStatus: item.chargeStatus_enumText,
dispenseStatus: item.dispenseStatus_enumText,
name: item.itemName,
};
});
let deviceList = deviceSelectedList.value
.filter((item) => {
return item.dispenseStatus === 2;
})
.map((item) => {
return {
requestId: item.requestId,
dispenseId: item.dispenseId,
requestTable: item.requestTable,
chargeStatus: item.chargeStatus_enumText,
dispenseStatus: item.dispenseStatus_enumText,
name: item.itemName,
};
});
return [...activityList, ...deviceList];
} else if (type === 'cancel') {
let list = [...activitySelectedList.value, ...deviceSelectedList.value];
list.forEach((item) => {
params.push({
requestId: item.requestId,
dispenseId: item.dispenseId,
requestTable: item.requestTable,
});
});
return list;
}
}
// 批量执行
function handleBatchExecute() {
// 获取校验后数据
let params = handleBatchValidate('execute');
// 如果参数数组为空 不执行
if (params.length == 0) {
proxy.$modal.msgError('不存在需要执行的处置或耗材!');
return;
}
// 执行批量操作
execute(params).then((res) => {
if (res.code == 200) {
proxy.$modal.msgSuccess('执行成功');
handlePatientSelect(currentPatient.value);
} else {
proxy.$modal.msgError(res.message);
}
});
}
// 单个执行
function handleExecute(row) {
let data = {
requestId: row.requestId,
@@ -316,7 +519,9 @@ function handleExecute(row) {
};
let params = activityList.value
.filter((item) => {
return item.groupId == row.groupId;
return (
(item.medCategory != null || item.medCategory != undefined) && item.groupId == row.groupId
);
})
.map((item) => {
return {
@@ -325,14 +530,16 @@ function handleExecute(row) {
requestTable: item.requestTable,
};
});
let list = proxy.$refs.deviceListRef.getSelectionRows().map((item) => {
let list = (
deviceListRef.value?.getSelectionRows ? deviceListRef.value.getSelectionRows() : []
).map((item) => {
return {
requestId: item.requestId,
dispenseId: item.dispenseId,
requestTable: item.requestTable,
};
});
list.push(data);
params.push(...list);
execute(params).then((res) => {
if (res.code == 200) {
proxy.$modal.msgSuccess('执行成功');
@@ -346,7 +553,7 @@ function handleExecute(row) {
// 添加操作列的合并方法
function operationSpanMethod({ row, column, rowIndex, columnIndex }) {
// 操作列是最后一列索引为11 (从0开始)
if (columnIndex === 11) {
if (columnIndex === 12) {
const groupId = row.groupId;
// 如果没有groupId则不合并
if (groupId === undefined || groupId === null) {
@@ -377,6 +584,7 @@ function operationSpanMethod({ row, column, rowIndex, columnIndex }) {
return [1, 1];
}
// 打印处方
function printPrescription() {
// 取出状态为已收费已发药的requestId
let requestIds = activityList.value
@@ -387,6 +595,10 @@ function printPrescription() {
return item.requestId;
})
.join(',');
if (requestIds.length == 0) {
proxy.$modal.msgWarning('没有可打印的处方!');
return;
}
advicePrint({ requestIds: requestIds, isPrescription: 1 }).then((res) => {
// 按 sortNumber 排序
const sortedList = res.data.adviceItemList.sort((a, b) => {
@@ -430,7 +642,7 @@ function printPrescription() {
}); //开始打印
});
}
// 打印处置单
function printDisposal() {
let requestIds = deviceActivityList.value
.map((item) => {
@@ -469,6 +681,7 @@ function isFirstRowInGroup(rowIndex) {
return true;
}
// 打印血条码
function printBloodBarcode() {
const selectedRows = activityListRef.value.getSelectionRows();
if (selectedRows.length === 0) {
@@ -488,6 +701,27 @@ function printBloodBarcode() {
}
}
// 批量取消
function handleBatchCancel() {
// 获取校验后数据
let params = handleBatchValidate('cancel');
// 如果参数数组为空 不执行
if (params.length == 0) {
proxy.$modal.msgError('不存在需要执行的处置或耗材!');
return;
}
//
cancel(params).then((res) => {
if (res.code == 200) {
proxy.$modal.msgSuccess('操作成功');
handlePatientSelect(currentPatient.value);
} else {
proxy.$modal.msgError(res.message);
}
});
}
// 单个取消
function handleCancel(row) {
let data = {
requestId: row.requestId,
@@ -514,13 +748,22 @@ function handleCancel(row) {
}
});
}
// 打印瓶贴
function printBottleLabel() {
let result = [];
// 过滤出全部输液药品
let printLiist = activityList.value.filter((item) => {
return item.medCategory == '2';
});
let selectRows = activityListRef.value.getSelectionRows();
let printLiist = [];
// 有选中的优先打印选中行,没有的话打印全部的输液药品
if (selectRows.length > 0) {
printLiist = selectRows.filter((item) => {
return item.medCategory == '2' || item.medCategory == '1';
});
} else {
printLiist = activityList.value.filter((item) => {
return item.medCategory == '2' || item.medCategory == '1';
});
}
// 按照groupId分组但将多天的项目展开为独立项目
let expandedList = [];
@@ -585,6 +828,7 @@ function printBottleLabel() {
var hiprintTemplate = new hiprint.PrintTemplate({ template: printElements }); // 定义模板
console.log(result, '打印机列表');
hiprintTemplate.print2(result, {
// printer: 'Xprinter XP-365B',
height: 210,
width: 148,
});
@@ -599,6 +843,18 @@ function printBottleLabel() {
});
}
// 选择框改变时的处理
function handleSelectionChange(selection, row) {
const isSelected = selection.some((item) => item.requestId === row.requestId);
activityList.value
.filter((item) => {
return item.groupId && item.groupId == row?.groupId;
})
.forEach((row) => {
activityListRef.value.toggleRowSelection(row, isSelected);
});
}
function getRecord(row) {
getPerformRecord({ reqId: row.requestId }).then((res) => {
recordList.value = res.data;
@@ -618,26 +874,6 @@ function getRecord(row) {
box-sizing: border-box;
}
.main-content {
display: flex;
flex: 1;
gap: 20px;
overflow: hidden;
height: calc(100% - 70px);
}
.patient-section {
min-width: 400px;
width: 28%;
background: white;
border-radius: 12px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
padding: 20px;
display: flex;
flex-direction: column;
overflow: hidden;
}
.right-section {
flex: 2;
display: flex;
@@ -646,6 +882,28 @@ function getRecord(row) {
min-width: 600px;
}
.cards-column {
display: flex;
flex-direction: column;
gap: 12px;
height: calc(90vh - 140px);
min-height: 300px;
}
.half-card {
flex: 1;
display: flex;
flex-direction: column;
min-height: 0;
}
.half-card :deep(.el-card__body) {
flex: 1;
display: flex;
flex-direction: column;
min-height: 0;
}
.current-patient {
background: white;
border-radius: 12px;
@@ -773,4 +1031,12 @@ function getRecord(row) {
width: 200px;
margin-bottom: 10px;
}
:deep(.no-hover-column) .cell:hover {
background-color: transparent !important;
}
:deep(.el-table__body) tr:hover td.no-hover-column {
background-color: inherit !important;
}
</style>