更新 体检分诊 联动 体检引导

wenjuan
鹿和sa0ChunLuyu 1 year ago
parent 5aac7ad60b
commit 93a54f82a9

@ -58,6 +58,9 @@ class ApiMapController extends Controller
'GetDayPlanList' => $base_url . '/api/H5/GetDayPlanList',//获取每日号源
'ComboCompare' => $base_url . '/api/H5/ComboCompare',//套餐对比
'GetOrderDetail' => $base_url . '/api/H5/GetOrderDetail',//获取订单详情
'FenzhenAbandon' => $base_url . '/api/H5/Fenzhen/abandon',// 分诊弃检
'FenzhenList' => $base_url . '/api/H5/Fenzhen/list',// 分诊时间线
'FenzhenInfo' => $base_url . '/api/H5/Fenzhen/info',// 分诊项目详情
];
}

@ -0,0 +1,115 @@
<?php
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class FenzhenController extends Controller
{
public function abandon()
{
// 这里放 弃检逻辑
return \Yz::Return(true, "弃检成功");
}
public function list()
{
return \Yz::Return(true, "获取成功", [
'info' => [
'name' => '张三',
'sex' => 1,
'combo_name' => '套餐名称',
'check_date' => '2024-04-25',
'start_time' => '08:25',
'end_time' => '10:25',
'qrcode' => '',
'code' => '', // 体检条码
],
'list' => [[
'time' => '08:25',
'name' => '体检登记',
'status' => 4,
'desc' => '已完成',
'tip' => '体检登记 2024-08-09 08:25:30',
], [
'time' => '08:30',
'name' => '体格检查',
'status' => 4,
'desc' => '已完成',
'tip' => '体格检查 2024-08-09 08:30:33',
], [
'time' => '08:50',
'name' => '超声科',
'status' => 2,
'desc' => '第5位预计等待 11 分钟',
'tip' => '腹部彩超',
], [
'time' => '09:20',
'name' => '心电图',
'status' => 1,
'desc' => '预计 09:20 进入队列',
'tip' => '剩余5项正在排队中',
'more' => 1
], [
'time' => '10:03',
'name' => '体检结束',
'status' => -1,
'desc' => '早餐时间 10:03'
], [
'time' => '',
'name' => '出具报告',
'status' => -1,
'desc' => '预计 9月23日 出具体检报告'
], [
'time' => '',
'name' => '报告解读',
'status' => -1,
'desc' => '预计 9月24日 可以预约报告解读'
]],
]);
}
public function info()
{
return \Yz::Return(true, "获取成功", [
'info' => [
'name' => '张三',
'sex' => 1,
'combo_name' => '套餐名称',
'check_date' => '2024-04-25',
'start_time' => '08:25',
'end_time' => '10:25',
'qrcode' => '',
'code' => '', // 体检条码
],
'list' => [[
'id' => '1',
'time' => '2024.09.11 08:25',
'name' => '超声科-颈部血管彩超',
'status' => 4,
], [
'id' => '1',
'time' => '2024.09.11 08:25',
'name' => '内科-内科问诊',
'status' => 4,
], [
'id' => '1',
'time' => '2024.09.11 08:25',
'name' => '内科-内科问诊',
'status' => 1,
], [
'id' => '1',
'time' => '2024.09.11 08:25',
'name' => '内科-内科问诊',
'status' => 1,
], [
'id' => '1',
'time' => '2024.09.11 08:25',
'name' => '内科-内科问诊',
'status' => 1,
]],
]);
}
}

@ -2,6 +2,9 @@
use Illuminate\Support\Facades\Route;
Route::any("/api/H5/Fenzhen/abandon", [\App\Http\Controllers\API\H5\FenzhenController::class, 'abandon']);
Route::any("/api/H5/Fenzhen/info", [\App\Http\Controllers\API\H5\FenzhenController::class, 'info']);
Route::any("/api/H5/Fenzhen/list", [\App\Http\Controllers\API\H5\FenzhenController::class, 'list']);
Route::any("/api/H5/Order/list", [\App\Http\Controllers\API\H5\OrderController::class, 'list']);
Route::any("/api/H5/Combo/list", [\App\Http\Controllers\API\H5\ComboController::class, 'list']);
Route::any("/api/H5/Combo/select", [\App\Http\Controllers\API\H5\ComboController::class, 'select']);

@ -162,6 +162,18 @@
"style": {
"navigationBarTitleText": "数据对比"
}
},
{
"path": "pages/user/pick/pick",
"style": {
"navigationBarTitleText": "体检引导"
}
},
{
"path": "pages/user/fenzhen/fenzhen",
"style": {
"navigationBarTitleText": "体检引导"
}
}
],
"globalStyle": {

@ -0,0 +1,49 @@
<script setup>
/**
* name
* usersa0ChunLuyu
* date2024年9月11日 19:24:50
*/
import {
ref
} from 'vue'
import {
$api,
$response
} from '@/api'
import {
onShow
} from '@dcloudio/uni-app'
import {
useStore
} from '@/store'
const $store = useStore()
const mountedAction = () => {
}
const config_ref = ref(null)
const configRef = (e) => {
if (!config_ref.value) {
config_ref.value = e
mountedAction()
}
}
onShow(() => {
if (!!config_ref.value) {
mountedAction()
}
})
</script>
<template>
<view>
<view v-if="!!$store.config">
<view :ref="configRef"></view>
</view>
</view>
</template>
<style scoped>
</style>

@ -0,0 +1,172 @@
<script setup>
/**
* name
* usersa0ChunLuyu
* date2024年9月11日 19:24:50
*/
import {
ref
} from "vue";
import {
$api,
$image,
$response
} from "@/api";
import {
onShow
} from "@dcloudio/uni-app";
import {
useStore
} from "@/store";
const $store = useStore();
const person_list = ref([]);
let popup = ref(null);
let unitList = ref([]); //
const getPersonList = async () => {
uni.showLoading()
const response = await $api("GetPersonList");
uni.hideLoading()
$response(response, () => {
person_list.value = response.data.list;
});
};
const config_ref = ref(null);
const configRef = (e) => {
if (!config_ref.value) {
config_ref.value = e;
getPersonList();
}
};
const choosePersonClick = async (info) => {
uni.navigateTo({
url: '/pages/user/fenzhen/fenzhen'
})
};
onShow(() => {
if (!!config_ref.value) {
getPersonList();
}
});
</script>
<template>
<view>
<view v-if="!!$store.config">
<view :ref="configRef"></view>
</view>
<view class="person_list_wrapper">
<view class="person_item_wrapper" v-for="(i, k) in person_list" :key="k" @click="choosePersonClick(i)">
<view class="person_avatar_wrapper">
<image v-if="i.sex === 1" src="@/static/assets/userm.png"></image>
<image v-else src="@/static/assets/userw.png"></image>
</view>
<view class="person_info_wrapper">
<view class="person_text_wrapper">
<view class="person_name_wrapper">{{ i.name }}</view>
<view class="person_sex_wrapper">{{ i.sex === 1 ? "男" : "女" }}</view>
</view>
<view class="person_idnumber_wrapper">{{ i.id_number }}</view>
</view>
<view v-if="!!i.relation" class="person_type_wrapper">{{
i.relation
}}</view>
<view class="person_type_wrapper">本人</view>
</view>
</view>
</view>
</template>
<style scoped>
.person_list_wrapper {
width: 750rpx;
margin: 0 auto;
overflow-y: auto;
}
.person_item_wrapper {
width: 690rpx;
height: 166rpx;
background: #ffffff;
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04);
border-radius: 15rpx;
position: relative;
display: flex;
align-items: center;
margin: 20rpx auto 0;
}
.person_avatar_wrapper {
width: 105rpx;
height: 105rpx;
margin-left: 47rpx;
}
.person_avatar_wrapper image {
width: 105rpx;
height: 105rpx;
display: inline-block;
object-fit: contain;
}
.person_info_wrapper {
margin-left: 38rpx;
}
.person_text_wrapper {
display: flex;
align-items: end;
}
.person_name_wrapper {
font-weight: 500;
font-size: 32rpx;
color: #0e0e0e;
line-height: 1;
}
.person_sex_wrapper {
font-size: 24rpx;
color: #9e9e9e;
line-height: 1;
margin-left: 10rpx;
}
.person_idnumber_wrapper {
font-size: 26rpx;
color: #0e0e0e;
line-height: 1;
margin-top: 20rpx;
}
.person_type_wrapper {
position: absolute;
width: 100rpx;
height: 46rpx;
background: #c0c0c0;
border-radius: 0rpx 15rpx 0rpx 15rpx;
right: 0;
top: 0;
font-weight: 500;
font-size: 24rpx;
color: #ffffff;
line-height: 46rpx;
text-align: center;
}
.person_choose_wrapper {
position: absolute;
right: 10rpx;
bottom: 10rpx;
width: 130rpx;
height: 50rpx;
background: #239ea3;
border-radius: 25rpx;
font-weight: 400;
font-size: 22rpx;
color: #ffffff;
line-height: 50rpx;
text-align: center;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Loading…
Cancel
Save