合并项目打印申请单

main
鹿和sa0ChunLuyu 1 week ago
parent a99c1cb29b
commit eff2db8e06

@ -11,7 +11,8 @@
class PdfController extends Controller
{
public function GetCheckPdf()
//旧版GetCheckPdf备份
public function GetCheckPdfOld()
{
$OrderNoList = request('OrderNoList');//医嘱号列表(数组)
if (!isset($OrderNoList) or empty($OrderNoList)) return \Yz::JsonReturn("OrderNoList,不能为空");
@ -29,6 +30,284 @@ public function GetCheckPdf()
return \Yz::JsonReturn(true, '查询完成', ['list' => $list]);
}
//新版GetCheckPdf检查项目状态分组生成PDF文件
public function GetCheckPdf()
{
$OrderNoList = request('OrderNoList');
if (!isset($OrderNoList) or empty($OrderNoList)) {
return \Yz::JsonReturn('OrderNoList,不能为空');
}
if (!is_array($OrderNoList)) {
return \Yz::JsonReturn('OrderNoList,应为数组');
}
$type = request('Type', 'old');
$p_type = config('app.globals.患者类型');
$resultList = [];
$normalIds = []; //正常的医嘱号列表
//建立入参索引映射
$orderIndexMap = array_flip(array_values($OrderNoList));
//遍历每个医嘱号,检查状态
foreach ($OrderNoList as $orderNo) {
//查s_list去掉is_nullify限制先判断记录是否存在和是否已删除
$entrustInfo = DB::table('s_list as a')
->where(['a.entrust_id' => $orderNo])
->first();
//不存在 或 已删除
if (!$entrustInfo || $entrustInfo->is_del == 1) {
$resultList[] = [
'_idx' => $orderIndexMap[$orderNo],
'OrderNo' => [$orderNo],
'Message' => "医嘱id:{$orderNo},在医技预约系统中不存在!",
'PdfUrl' => '',
];
continue;
}
//已作废
if ($entrustInfo->is_nullify == 1) {
$resultList[] = [
'_idx' => $orderIndexMap[$orderNo],
'OrderNo' => [$orderNo],
'Message' => "医嘱id:{$orderNo},已作废!",
'PdfUrl' => '',
];
continue;
}
//查s_check_item判断是否需要预约
$checkItem = DB::table('s_check_item as a')
->leftJoin('s_check_item_device as b', 'a.id', '=', 'b.item_id')
->leftJoin('s_department_resources_device as c', 'b.device_id', '=', 'c.device_id')
->where(['a.item_name' => $entrustInfo->entrust, 'a.status' => 1, 'a.is_del' => 0])
->first();
if (!$checkItem || empty($checkItem->device_id)) {
$resultList[] = [
'_idx' => $orderIndexMap[$orderNo],
'OrderNo' => [$orderNo],
'Message' => "{$entrustInfo->entrust}项目不需要预约",
'PdfUrl' => '',
];
continue;
}
//查预约状态
if ($entrustInfo->list_status != 1) {
$resultList[] = [
'_idx' => $orderIndexMap[$orderNo],
'OrderNo' => [$orderNo],
'Message' => "{$entrustInfo->entrust}项目没有预约",
'PdfUrl' => '',
];
continue;
}
//正常项目
$normalIds[] = $orderNo;
}
//如果有正常项目生成PDF
if (!empty($normalIds)) {
//查询正常项目的完整数据
$list = DB::table('s_list as a')
->select(
'a.*',
'c.period_begin_time',
'c.period_end_time',
'b.department_resources_name',
'b.department_resources_addr'
)
->leftJoin('s_period as c', 'a.reservation_time', '=', 'c.id')
->leftJoin('s_department_resources as b', 'a.reservation_sources', '=', 'b.id')
->whereIn('a.entrust_id', $normalIds)
->where('a.list_status', 1)
->where('a.is_nullify', 0)
->orderByRaw('FIELD(a.entrust_id, ' . implode(',', array_map('intval', $normalIds)) . ')')
->get();
//三层分组
$groups = [];
foreach ($list as $item) {
$typeKey = $item->patient_type;
$patientKey = $item->patient_type == 0
? substr($item->episodeid, -10)
: $item->reg_num;
$roomKey = $type === 'single' || $type === 'old'
? 'item_' . $item->id
: ($item->department_resources_name ?: '未知诊室')
. '|' . ($item->reservation_date ?? '')
. '|' . ($item->period_begin_time ?? '')
. '|' . ($item->period_end_time ?? '');
if (!isset($groups[$typeKey])) {
$groups[$typeKey] = [
'label' => $p_type[$typeKey] ?? '未知',
'patients' => [],
];
}
if (!isset($groups[$typeKey]['patients'][$patientKey])) {
$groups[$typeKey]['patients'][$patientKey] = [
'patient_name' => $item->user_name,
'patient_id' => $patientKey,
'patient_type' => $item->patient_type,
'user_sex' => $item->user_sex,
'user_brithday' => $item->user_brithday,
'warddesc' => $item->warddesc ?? '',
'bedno' => $item->bedno ?? '',
'user_phone' => $item->user_phone,
'rooms' => [],
];
}
if (!isset($groups[$typeKey]['patients'][$patientKey]['rooms'][$roomKey])) {
$groups[$typeKey]['patients'][$patientKey]['rooms'][$roomKey] = [
'room_name' => $roomKey,
'room_addr' => $item->department_resources_addr ?? '',
'items' => [],
];
}
$groups[$typeKey]['patients'][$patientKey]['rooms'][$roomKey]['items'][] = [
'id' => $item->id,
'entrust_id' => $item->entrust_id,
'entrust' => $item->entrust,
'entrust_date' => $item->entrust_date,
'entrust_time' => $item->entrust_time,
'reservation_date' => $item->reservation_date,
'period_begin_time' => $item->period_begin_time,
'period_end_time' => $item->period_end_time,
];
}
//预计算各字段
$generator = new \Picqer\Barcode\BarcodeGeneratorPNG();
foreach ($groups as &$typeGroup) {
foreach ($typeGroup['patients'] as &$patient) {
$patient['user_sex_label'] = '';
if ($patient['user_sex'] == 1) $patient['user_sex_label'] = '男';
if ($patient['user_sex'] == 2) $patient['user_sex_label'] = '女';
$patient['age'] = \Tools::getAgeFromBirthday($patient['user_brithday']);
$patient['patient_type_label'] = $typeGroup['label'];
$patient['barcode'] = base64_encode($generator->getBarcode($patient['patient_id'], $generator::TYPE_CODE_128, 2, 40));
$patient['barcode_text'] = $patient['patient_id'];
foreach ($patient['rooms'] as &$room) {
$room['items_str'] = implode('', array_column($room['items'], 'entrust'));
$firstItem = $room['items'][0];
$room['reservation_date'] = $firstItem['reservation_date'];
$room['period_begin'] = $firstItem['period_begin_time'] ? substr($firstItem['period_begin_time'], 0, 5) : '';
$room['period_end'] = $firstItem['period_end_time'] ? substr($firstItem['period_end_time'], 0, 5) : '';
$room['weekday_label'] = \Tools::GetWeekName($firstItem['reservation_date']);
$minDateTime = $room['items'][0]['entrust_date'] . ' ' . $room['items'][0]['entrust_time'];
$maxDateTime = $minDateTime;
foreach ($room['items'] as $it) {
$dt = $it['entrust_date'] . ' ' . $it['entrust_time'];
if ($dt < $minDateTime) $minDateTime = $dt;
if ($dt > $maxDateTime) $maxDateTime = $dt;
}
$room['entrust_date_time'] = $minDateTime === $maxDateTime
? $minDateTime
: $minDateTime . ' ~ ' . $maxDateTime;
}
}
}
unset($typeGroup, $patient, $room);
//为每个room生成独立的PDF文件
$datePath = date('Y/m/d');
$storageDir = 'CheckPdf/' . $datePath;
$fullDir = storage_path('app/public/' . $storageDir);
if (!File::exists($fullDir)) {
File::makeDirectory($fullDir, 0755, true);
}
foreach ($groups as $typeKey => $typeGroup) {
foreach ($typeGroup['patients'] as $patientKey => $patient) {
foreach ($patient['rooms'] as $roomKey => $room) {
//收集该分组的医嘱号
$orderNos = array_column($room['items'], 'entrust_id');
//构建只包含当前room的临时groups结构
$tempGroups = [
$typeKey => [
'label' => $typeGroup['label'],
'patients' => [
$patientKey => [
'patient_name' => $patient['patient_name'],
'patient_id' => $patient['patient_id'],
'patient_type' => $patient['patient_type'],
'user_sex_label' => $patient['user_sex_label'],
'age' => $patient['age'],
'patient_type_label' => $patient['patient_type_label'],
'warddesc' => $patient['warddesc'],
'bedno' => $patient['bedno'],
'user_phone' => $patient['user_phone'],
'barcode' => $patient['barcode'],
'barcode_text' => $patient['barcode_text'],
'rooms' => [
$roomKey => $room,
],
],
],
],
];
//生成文件名MD5医嘱号列表|预约日期|预约时间段)
$entrustIdStr = implode(',', $orderNos);
$nameStr = $entrustIdStr . '|' . $room['reservation_date']
. '|' . ($room['period_begin'] ? $room['period_begin'] . '-' . $room['period_end'] : '');
$filename = md5($nameStr) . '.pdf';
$filePath = $fullDir . '/' . $filename;
//检查文件是否存在,不存在则生成
if (!File::exists($filePath)) {
$pdf = SnappyPdf::loadView('pdf.GroupedCheckPdf', ['groups' => $tempGroups])
->setOption('page-size', 'a4')
->setOption('orientation', 'portrait');
$pdf->save($filePath);
}
$url = env('APP_URL') . Storage::url($storageDir . '/' . $filename);
$resultList[] = [
'_idx' => $orderIndexMap[$orderNos[0]],
'OrderNo' => $orderNos,
'Message' => '',
'PdfUrl' => $url,
];
}
}
}
}
//按入参顺序排序,去掉内部索引
usort($resultList, function ($a, $b) {
return $a['_idx'] - $b['_idx'];
});
$resultList = array_map(function ($item) {
unset($item['_idx']);
return $item;
}, $resultList);
//old模式简化返回格式
if ($type === 'old') {
$resultList = array_map(function ($item) {
return [
'OrderNo' => is_array($item['OrderNo']) ? $item['OrderNo'][0] : $item['OrderNo'],
'PdfUrl' => $item['PdfUrl'] ?? '',
];
}, $resultList);
}
return \Yz::JsonReturn(true, '查询完成', ['list' => $resultList]);
}
//创建检查申请单pdf文件
public function CreateJianChaShenQingDanPdf()
{
@ -94,4 +373,144 @@ public function CreateJianChaShenQingDanPdf()
}
//按诊室分组生成检查项目清单PDF流式返回
public function GenerateGroupedCheckPdf()
{
$OrderNoList = request('OrderNoList');
if (!isset($OrderNoList) or empty($OrderNoList)) {
return \Yz::JsonReturn('OrderNoList,不能为空');
}
if (!is_array($OrderNoList)) {
return \Yz::JsonReturn('OrderNoList,应为数组');
}
//查询数据,关联时段和诊室资源
$list = DB::table('s_list as a')
->select(
'a.*',
'c.period_begin_time',
'c.period_end_time',
'b.department_resources_name',
'b.department_resources_addr'
)
->leftJoin('s_period as c', 'a.reservation_time', '=', 'c.id')
->leftJoin('s_department_resources as b', 'a.reservation_sources', '=', 'b.id')
->whereIn('a.entrust_id', $OrderNoList)
->where('a.list_status', 1)
->where('a.is_nullify', 0)
->orderBy('a.id')
->get();
if ($list->isEmpty()) {
return \Yz::JsonReturn(false, '未找到符合条件的医嘱数据');
}
$type = request('Type', 'group');
$p_type = config('app.globals.患者类型');
//三层分组patient_type → 患者标识 → 诊室
$groups = [];
foreach ($list as $item) {
//第1层患者类型
$typeKey = $item->patient_type;
//第2层患者标识住院用episodeid后10位非住院用reg_num
$patientKey = $item->patient_type == 0
? substr($item->episodeid, -10)
: $item->reg_num;
//第3层诊室single模式每个item独立一页用item.id区分
$roomKey = $type === 'single'
? 'item_' . $item->id
: ($item->department_resources_name ?: '未知诊室')
. '|' . ($item->reservation_date ?? '')
. '|' . ($item->period_begin_time ?? '')
. '|' . ($item->period_end_time ?? '');
if (!isset($groups[$typeKey])) {
$groups[$typeKey] = [
'label' => $p_type[$typeKey] ?? '未知',
'patients' => [],
];
}
if (!isset($groups[$typeKey]['patients'][$patientKey])) {
$groups[$typeKey]['patients'][$patientKey] = [
'patient_name' => $item->user_name,
'patient_id' => $patientKey,
'patient_type' => $item->patient_type,
'user_sex' => $item->user_sex,
'user_brithday' => $item->user_brithday,
'warddesc' => $item->warddesc ?? '',
'bedno' => $item->bedno ?? '',
'user_phone' => $item->user_phone,
'rooms' => [],
];
}
if (!isset($groups[$typeKey]['patients'][$patientKey]['rooms'][$roomKey])) {
$groups[$typeKey]['patients'][$patientKey]['rooms'][$roomKey] = [
'room_name' => $roomKey,
'room_addr' => $item->department_resources_addr ?? '',
'items' => [],
];
}
$groups[$typeKey]['patients'][$patientKey]['rooms'][$roomKey]['items'][] = [
'id' => $item->id,
'entrust' => $item->entrust,
'entrust_date' => $item->entrust_date,
'entrust_time' => $item->entrust_time,
'reservation_date' => $item->reservation_date,
'period_begin_time' => $item->period_begin_time,
'period_end_time' => $item->period_end_time,
];
}
//预计算各字段
$generator = new \Picqer\Barcode\BarcodeGeneratorPNG();
foreach ($groups as &$typeGroup) {
foreach ($typeGroup['patients'] as &$patient) {
//患者基本信息
$patient['user_sex_label'] = '';
if ($patient['user_sex'] == 1) $patient['user_sex_label'] = '男';
if ($patient['user_sex'] == 2) $patient['user_sex_label'] = '女';
$patient['age'] = \Tools::getAgeFromBirthday($patient['user_brithday']);
$patient['patient_type_label'] = $typeGroup['label'];
//条形码
$patient['barcode'] = base64_encode($generator->getBarcode($patient['patient_id'], $generator::TYPE_CODE_128, 2, 40));
$patient['barcode_text'] = $patient['patient_id'];
foreach ($patient['rooms'] as &$room) {
//项目名称拼接
$room['items_str'] = implode('', array_column($room['items'], 'entrust'));
//预约时间
$firstItem = $room['items'][0];
$room['reservation_date'] = $firstItem['reservation_date'];
$room['period_begin'] = $firstItem['period_begin_time'] ? substr($firstItem['period_begin_time'], 0, 5) : '';
$room['period_end'] = $firstItem['period_end_time'] ? substr($firstItem['period_end_time'], 0, 5) : '';
$room['weekday_label'] = \Tools::GetWeekName($firstItem['reservation_date']);
//申请时间范围
$minDateTime = $room['items'][0]['entrust_date'] . ' ' . $room['items'][0]['entrust_time'];
$maxDateTime = $minDateTime;
foreach ($room['items'] as $it) {
$dt = $it['entrust_date'] . ' ' . $it['entrust_time'];
if ($dt < $minDateTime) $minDateTime = $dt;
if ($dt > $maxDateTime) $maxDateTime = $dt;
}
$room['entrust_date_time'] = $minDateTime === $maxDateTime
? $minDateTime
: $minDateTime . ' ~ ' . $maxDateTime;
}
}
}
unset($typeGroup, $patient, $room);
$pdf = SnappyPdf::loadView('pdf.GroupedCheckPdf', ['groups' => $groups])
->setOption('page-size', 'a4')
->setOption('orientation', 'portrait');
return $pdf->inline('GenerateGroupedCheckPdf.pdf');
}
}

@ -0,0 +1,116 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>检查项目清单</title>
<style>
body {
margin: 0;
padding: 0;
font-family: 'SimSun', '宋体', serif;
font-size: 14px;
color: #333;
}
.page {
page-break-after: always;
height: 100vh;
padding: 20px;
box-sizing: border-box;
}
.page:last-child {
page-break-after: auto;
}
.PrintShenQingDan {
height: 100%;
}
</style>
</head>
<body>
@foreach ($groups as $typeKey => $typeGroup)
@foreach ($typeGroup['patients'] as $patientKey => $patient)
@foreach ($patient['rooms'] as $roomKey => $room)
<div class="page">
<div class="PrintShenQingDan">
<div style="padding-bottom: 20px; position: relative;">
<div style="width: 100%; text-align: center; font-size: 26px;">秦皇岛市中医医院</div>
<div style="width: 100%; text-align: center; font-size: 18px; font-weight: bold;">检查项目清单</div>
<div style="width: 200px; height: 50px; position: absolute; right: 10px; top: 0;">
<img src="data:image/png;base64,{{ $patient['barcode'] }}" style="display: block; margin: 0 auto; max-width: 100%; height: auto;" />
<div style="text-align: center;">{{ $patient['barcode_text'] }}</div>
</div>
</div>
<div style="border-top: 1px solid #333; border-bottom: 1px solid #333; padding-left: 4px; padding-top: 10px; padding-bottom: 10px;">
<table style="border: none; font-size: 18px; width: 100%;">
<tr style="border: none;">
<td style="border: none; width: 23%; text-align: left;"><span style="display: inline-block; width: 3em; letter-spacing: 0.5em;">姓名</span>{{ $patient['patient_name'] }}</td>
<td style="border: none; width: 33%; text-align: left;"><span style="display: inline-block; width: 3em; letter-spacing: 0.5em;">性别</span>{{ $patient['user_sex_label'] }}</td>
<td style="border: none; width: 18%; text-align: left;"><span style="display: inline-block; width: 3em; letter-spacing: 0.5em;">年龄</span>{{ $patient['age'] }}</td>
<td style="border: none; width: 26%; text-align: left;"><span style="display: inline-block; width: 4em;">病人类型</span>{{ $patient['patient_type_label'] }}</td>
</tr>
<tr style="border: none;">
<td style="border: none; width: 23%; text-align: left;"><span style="display: inline-block; width: 3em;">{{ $patient['patient_type_label'] }}号</span>{{ $patient['patient_id'] }}</td>
@if ($patient['patient_type'] == 0)
<td style="border: none; width: 33%; text-align: left;"><span style="display: inline-block; width: 3em; letter-spacing: 0.5em;">病区</span>{{ $patient['warddesc'] }}</td>
<td style="border: none; width: 18%; text-align: left;"><span style="display: inline-block; width: 3em; letter-spacing: 0.5em;">床号</span>{{ $patient['bedno'] }}</td>
<td style="border: none; width: 26%; text-align: left;"><span style="display: inline-block; width: 4em;">联系电话</span>{{ $patient['user_phone'] }}</td>
@else
<td style="border: none; width: 33%; text-align: left;"><span style="display: inline-block; width: 4em;">联系电话</span>{{ $patient['user_phone'] }}</td>
<td style="border: none; width: 18%; text-align: left;"></td>
<td style="border: none; width: 26%; text-align: left;"></td>
@endif
</tr>
</table>
</div>
<div style="border-bottom: 1px solid #333; padding-left: 4px; padding-top: 10px; padding-bottom: 10px;">
<table style="border: none;">
<tr style="border: none; vertical-align: top;">
<td style="width: 15%; border: none; font-size: 20px; font-weight: 900; text-align: left; white-space: nowrap;">检查项目:</td>
<td style="border: none; font-size: 20px; text-align: left;">{{ $room['items_str'] }}</td>
</tr>
<tr style="border: none; vertical-align: top;">
<td style="width: 15%; border: none; font-size: 20px; font-weight: 900; text-align: left; white-space: nowrap;">预约时间:</td>
<td style="border: none; font-size: 20px; text-align: left;">{{ str_replace('-', '/', $room['reservation_date']) }}
@if ($room['period_begin'] && $room['period_end'])
{{ $room['period_begin'] }}-{{ $room['period_end'] }}
@endif
{{ $room['weekday_label'] }}</td>
</tr>
<tr style="border: none; vertical-align: top;">
<td style="width: 15%; border: none; font-size: 20px; font-weight: 900; text-align: left; white-space: nowrap;">检查地点:</td>
<td style="border: none; font-size: 20px; text-align: left;">{{ $room['room_addr'] }}</td>
</tr>
</table>
</div>
<div style="padding-left: 4px; padding-top: 10px; padding-bottom: 10px;">
<table style="border: none;">
<tr style="border: none;">
<td style="width: 15%; border: none; font-size: 20px; font-weight: 900; text-align: left; vertical-align: top;">温馨提示:</td>
<td style="text-align: left; border: none; font-size: 18px;">
<div>1、预约后请您及时缴费门诊患者预约成功后60分钟内不缴费系统会自动取消您的预约申请。自动取消后如需继续预约请到相关检查科室重新预约。</div>
<div>2、预约时间为8点~10点的请8点到登记处签到预约时间为10点~12点的请10点前到登记处签到便于工作人员进行检查评估和准备。</div>
<div>3、预约时间不是实际检查时间以现场登记后排队号为准。</div>
</td>
</tr>
</table>
</div>
<div style="border-top: 1px solid #333; padding-left: 8px; padding-top: 10px; padding-bottom: 10px;">
<div style="font-size: 20px; font-weight: 900;">检查须知:</div>
<div style="font-size: 18px;">
腹部检查禁食4小时腹部、盆腔、泌尿系统检查请尽量饮水充盈肠道及膀胱危重病人需由家属陪同孕妇及婴幼儿请慎行检查。
</div>
</div>
<div style="text-align: right; border-top: 1px solid #333; font-size: 18px; padding-top: 10px; padding-bottom: 10px;">
申请时间:{{ $room['entrust_date_time'] }}
</div>
</div>
</div>
@endforeach
@endforeach
@endforeach
</body>
</html>

@ -210,6 +210,7 @@
Route::post('/PacsCancelSignIn','App\Http\Controllers\API\Third\PacsController@CancelSignIn' );//路径起名字有问题,实际是给报到机的
Route::post('/GetEntrustInfo','App\Http\Controllers\API\Third\PacsController@GetEntrustInfo' );
Route::post('/GetCheckPdf','App\Http\Controllers\API\PdfController@GetCheckPdf' );
Route::post('/GenerateGroupedCheckPdf','App\Http\Controllers\API\PdfController@GenerateGroupedCheckPdf' );
Route::post('/SignInOnPacs','App\Http\Controllers\API\Third\PacsController@SignInOnPacs' );//给Pacs用通知本系统到检场景不经过报到机直接人工窗口
Route::post('/SignInOnPacsTest','App\Http\Controllers\API\Third\PacsController@SignInOnPacsTest' );//给Pacs用测试接口不修改数据

@ -6,7 +6,7 @@
<div class="item">{{patientInfo.patient_type_label}}:<span class="value">{{patientInfo.patient_type == 0 ? patientInfo.episodeid?.slice(-10) : patientInfo.reg_num}} </span></div>
<div class="item">电话:<span class="value">{{patientInfo.user_phone}}</span></div>
<div class="item" v-if="patientInfo.warddesc">:<span class="value">{{patientInfo.warddesc}}</span></div>
<div class="item" v-if="patientInfo.bedname">:<span class="value">{{patientInfo.bedname}}</span></div>
<div class="item" v-if="patientInfo.bedno">:<span class="value">{{patientInfo.bedno}}</span></div>
<div class="item" v-if="patientInfo.diagnosisName">:<span class="value">{{patientInfo.diagnosisName}}</span></div>
</div>
<div v-else>
@ -751,12 +751,12 @@
}
if (crossParts.length > 0) {
let crossMsg = '<table style="width:100%;border-collapse:collapse;font-size:14px;">'
crossMsg += '<tr style="background:#f5f5f5;"><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">序号</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">项目名称</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">检查室</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">日期</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">时间段</td></tr>'
crossMsg += '<tr style="background:#d5dce6;"><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">序号</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">项目名称</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">检查室</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">日期</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">时间段</td></tr>'
let lastSlot = ''
let bgColor = '#f5f5f5'
crossParts.sort((a, b) => a.idx - b.idx).forEach(p => {
if (p.timeSlot !== lastSlot) {
bgColor = bgColor === '#fff' ? '#f5f5f5' : '#fff'
bgColor = bgColor === '#fff' ? '#d5dce6' : '#fff'
lastSlot = p.timeSlot
}
crossMsg += '<tr style="background:' + bgColor + ';"><td style="padding:4px 8px;border:1px solid #ddd;">' + p.idx + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.entrust + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.room + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.date + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.timeSlot + '</td></tr>'
@ -989,12 +989,12 @@
}
if (crossParts.length > 0) {
let crossMsg = '<table style="width:100%;border-collapse:collapse;font-size:14px;">'
crossMsg += '<tr style="background:#f5f5f5;"><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">序号</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">项目名称</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">检查室</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">日期</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">时间段</td></tr>'
crossMsg += '<tr style="background:#d5dce6;"><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">序号</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">项目名称</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">检查室</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">日期</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">时间段</td></tr>'
let lastSlot = ''
let bgColor = '#f5f5f5'
crossParts.sort((a, b) => a.idx - b.idx).forEach(p => {
if (p.timeSlot !== lastSlot) {
bgColor = bgColor === '#fff' ? '#f5f5f5' : '#fff'
bgColor = bgColor === '#fff' ? '#d5dce6' : '#fff'
lastSlot = p.timeSlot
}
crossMsg += '<tr style="background:' + bgColor + ';"><td style="padding:4px 8px;border:1px solid #ddd;">' + p.idx + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.entrust + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.room + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.date + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.timeSlot + '</td></tr>'
@ -1123,12 +1123,12 @@
}
if (crossParts.length > 0) {
let crossMsg = '<table style="width:100%;border-collapse:collapse;font-size:14px;">'
crossMsg += '<tr style="background:#f5f5f5;"><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">序号</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">项目名称</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">检查室</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">日期</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">时间段</td></tr>'
crossMsg += '<tr style="background:#d5dce6;"><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">序号</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">项目名称</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">检查室</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">日期</td><td style="padding:4px 8px;border:1px solid #ddd;font-weight:700;">时间段</td></tr>'
let lastSlot = ''
let bgColor = '#f5f5f5'
crossParts.sort((a, b) => a.idx - b.idx).forEach(p => {
if (p.timeSlot !== lastSlot) {
bgColor = bgColor === '#fff' ? '#f5f5f5' : '#fff'
bgColor = bgColor === '#fff' ? '#d5dce6' : '#fff'
lastSlot = p.timeSlot
}
crossMsg += '<tr style="background:' + bgColor + ';"><td style="padding:4px 8px;border:1px solid #ddd;">' + p.idx + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.entrust + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.room + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.date + '</td><td style="padding:4px 8px;border:1px solid #ddd;">' + p.timeSlot + '</td></tr>'
@ -1399,7 +1399,7 @@
if (res.status) {
systemConfigs.value.forEach((v, i) => {
if (v.label == '开启申请单pdf' && v.value === "1") {
CreateJianChaShenQingDanPdfFunc()
// CreateJianChaShenQingDanPdfFunc()
}
})
GetMainInfo(() => {
@ -1582,7 +1582,7 @@
}, true)
systemConfigs.value.forEach((v, i) => {
if (v.label == '开启申请单pdf' && v.value === "1") {
CreateJianChaShenQingDanPdfFunc(successEntrustIds)
// CreateJianChaShenQingDanPdfFunc(successEntrustIds)
}
})
if (auto_print.value.length > 0) {
@ -1853,6 +1853,7 @@
.patientInfo {
display: flex;
align-items: center;
flex-shrink: 0;
.item{
margin-right: 18px;

@ -82,16 +82,19 @@
<el-icon color="#409eff" size="20">
<Edit />
</el-icon>
<span class="icon_text">编辑</span>
</div>
<div class="icon_k" @click="GetMingXi(item2,0)">
<el-icon color="#409eff" size="20">
<Document />
</el-icon>
<span class="icon_text">明细</span>
</div>
<div class="icon_k" @click="OpenZhanWeiDialog(item2)">
<el-icon color="#409eff" size="20">
<Lock />
</el-icon>
<span class="icon_text">占位</span>
</div>
</div>
@ -898,6 +901,13 @@
align-items: center;
border-radius: 4px;
.icon_k {
display: flex;
flex-direction: column;
align-items: center;
cursor: pointer;
margin: 0 4px;
}
.icon_k .el-icon {
height: 30px;
width: 30px;
border-radius: 50%;
@ -906,8 +916,16 @@
align-items: center;
border: 1px solid #ccc;
background-color: #fff;
margin-left: 6px;
}
.icon_text {
font-size: 11px;
color: #409eff;
background-color: #fff;
padding: 1px 4px;
border-radius: 3px;
margin-top: 3px;
white-space: nowrap;
line-height: 1.4;
}
}

@ -82,11 +82,13 @@
<el-icon color="#409eff" size="20">
<Edit />
</el-icon>
<span class="icon_text">编辑</span>
</div>
<div class="icon_k" @click="OpenZhanWeiDialog(item2)">
<el-icon color="#409eff" size="20">
<Lock />
</el-icon>
<span class="icon_text">占位</span>
</div>
</div>
@ -1316,6 +1318,13 @@
align-items: center;
border-radius: 4px;
.icon_k {
display: flex;
flex-direction: column;
align-items: center;
cursor: pointer;
margin: 0 4px;
}
.icon_k .el-icon {
height: 30px;
width: 30px;
border-radius: 50%;
@ -1324,7 +1333,16 @@
align-items: center;
border: 1px solid #ccc;
background-color: #fff;
}
.icon_text {
font-size: 11px;
color: #409eff;
background-color: #fff;
padding: 1px 4px;
border-radius: 3px;
margin-top: 3px;
white-space: nowrap;
line-height: 1.4;
}
}
}

Loading…
Cancel
Save