diff --git a/Laravel/app/Http/Controllers/API/H5/FenzhenController.php b/Laravel/app/Http/Controllers/API/H5/FenzhenController.php
index 2ce8ec9..89dc375 100644
--- a/Laravel/app/Http/Controllers/API/H5/FenzhenController.php
+++ b/Laravel/app/Http/Controllers/API/H5/FenzhenController.php
@@ -3,11 +3,16 @@
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\Controller;
+use Illuminate\Database\Schema\Blueprint;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Schema;
class FenzhenController extends Controller
{
+ public static $url = 'https://lkt3.work.cjy.net.cn';
+ public static $log = null;
+
public function abandon()
{
// 这里放 弃检逻辑
@@ -29,112 +34,194 @@ class FenzhenController extends Controller
$info = DB::table('orders')->where(['id' => $id])->whereIn('status', [2, 4])->first();
if (!$info) return \Yz::echoError1("查询就诊人订单失败");
$end_time = date('H:i', strtotime($info->appointment_date . ' ' . $info->appointment_time) + (60 * 60 * 0.54));
- return \Yz::Return(true, "获取成功", [
- 'info' => [
- 'name' => $info->name,
- 'sex' => $info->sex,
- 'combo_name' => $info->title,
- 'check_date' => $info->appointment_date,
- 'start_time' => $info->appointment_time,
- 'end_time' => $end_time,
- 'qrcode' => '',
- 'code' => $info->appointment_number, // 体检条码
- ],
- 'list' => [[
- 'time' => '08:25',
- 'name' => '体检登记',
- 'status' => 4,
- 'desc' => '已完成',
- 'tip' => '体检登记 2024-08-09 08:25:30',
- 'more' => 0
- ], [
- 'time' => '08:30',
- 'name' => '体格检查',
- 'status' => 4,
- 'desc' => '已完成',
- 'tip' => '体格检查 2024-08-09 08:30:33',
- 'more' => 0
- ], [
- 'time' => '08:50',
- 'name' => '超声科',
- 'status' => 2,
- 'desc' => '第5位,预计等待 11 分钟',
- 'tip' => '腹部彩超',
- 'more' => 0
- ], [
- 'time' => '09:20',
- 'name' => '心电图',
- 'status' => 1,
- 'desc' => '预计 09:20 进入队列',
- 'tip' => '剩余5项正在排队中,',
- 'more' => 1
- ], [
- 'time' => $end_time,
- 'name' => '体检结束',
- 'status' => -1,
- 'desc' => '用餐时间 ' . $end_time,
- 'tip' => '',
- 'more' => 0
+ $res = self::fz('time', [
+ 'exam_id' => $info->tj_number ?? '??????????',
+ 'start_time' => date('H:i', strtotime($info->appointment_date . ' ' . $info->appointment_time)),
+ 'clinics' => [[
+ "name" => "外科诊室",
+ "count" => 3
], [
- 'time' => '',
- 'name' => '出具报告',
- 'status' => -1,
- 'desc' => '预计 9月23日 出具体检报告',
- 'tip' => '',
- 'more' => 0
- ], [
- 'time' => '',
- 'name' => '报告解读',
- 'status' => -1,
- 'desc' => '预计 9月24日 可以预约报告解读',
- 'tip' => '',
- 'more' => 0
- ]],
+ "name" => "内科诊室",
+ "count" => 3
+ ]]
]);
+ if (!!$res) {
+ $time_line = $res['data']['time_line'];
+ $check_report_status = -1;
+ if (!!$res['data']['report']) {
+ $report_time = date('m月d日', strtotime($res['data']['report'] . ' 00:00:00') + (60 * 60 * 24 * 5));
+ $report_status = false;
+ // 这里补充 获取 出具报告 时间的逻辑
+ if (!$report_status) {
+ $time_line[] = [
+ 'time' => '',
+ 'name' => '出具报告',
+ 'status' => -1,
+ 'desc' => "预计 $report_time 出具体检报告",
+ 'tip' => '',
+ 'more' => 0
+ ];
+ } else {
+ $time_line[] = [
+ 'time' => '',
+ 'name' => '出具报告',
+ 'status' => -1,
+ 'desc' => "已出具体检报告 $report_status",
+ 'tip' => '',
+ 'more' => 0
+ ];
+ }
+ $check_report_status = 0;
+// $check_report_status = '2024年10月11日';
+ // 这里补充 获取 报告解读 时间的逻辑
+ if ($check_report_status == 0) {
+ $check_report_time = date('m月d日', strtotime($res['data']['report'] . ' 00:00:00') + (60 * 60 * 24 * 6));
+ $time_line[] = [
+ 'time' => '',
+ 'name' => '报告解读',
+ 'status' => -1,
+ 'desc' => "预计 $check_report_time 可以预约报告解读",
+ 'tip' => '',
+ 'more' => 0
+ ];
+ } else {
+ $show_date = explode('年', $check_report_status)[1];
+ $time_line[] = [
+ 'time' => '',
+ 'name' => '报告解读',
+ 'status' => -1,
+ 'desc' => "已预约 $show_date 报告解读",
+ 'tip' => '',
+ 'more' => 0
+ ];
+ }
+ }
+ return \Yz::Return(true, "获取成功", [
+ 'info' => [
+ 'name' => $info->name,
+ 'sex' => $info->sex,
+ 'combo_name' => $info->title,
+ 'check_date' => $info->appointment_date,
+ 'start_time' => $res['data']['start_time'] . ':00',
+ 'end_time' => $res['data']['end_time'],
+ 'qrcode' => '',
+ 'code' => $info->appointment_number,
+ ],
+ 'list' => $time_line,
+ 'report' => $check_report_status,
+ ]);
+ } else {
+ return \Yz::Return(true, "获取成功", [
+ 'info' => [
+ 'name' => $info->name,
+ 'sex' => $info->sex,
+ 'combo_name' => $info->title,
+ 'check_date' => $info->appointment_date,
+ 'start_time' => $info->appointment_time,
+ 'end_time' => $end_time,
+ 'qrcode' => '',
+ 'code' => $info->appointment_number,
+ ],
+ 'list' => [],
+ 'report' => -1,
+ ]);
+ }
}
public function info()
{
$id = request('id');
+ $clinic = request('clinic');
$info = DB::table('orders')->where(['id' => $id])->whereIn('status', [2, 4])->first();
if (!$info) return \Yz::echoError1("查询就诊人订单失败");
- return \Yz::Return(true, "获取成功", [
- 'info' => [
- 'name' => $info->name,
- 'sex' => $info->sex,
- 'combo_name' => $info->title,
- 'check_date' => $info->appointment_date,
- 'start_time' => $info->appointment_time,
- 'end_time' => '10:25',
- 'qrcode' => '',
- 'code' => $info->appointment_number, // 体检条码
- ],
- '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,
- ]],
+ $res = self::fz('info', [
+ 'exam_id' => $info->tj_number ?? '??????????',
+ 'clinic' => $clinic,
]);
+ if (!!$res) {
+ if ($res['code'] == 200) {
+ return \Yz::Return(true, "获取成功", [
+ 'info' => [
+ 'name' => $info->name,
+ 'sex' => $info->sex,
+ 'combo_name' => $info->title,
+ 'check_date' => $info->appointment_date,
+ 'start_time' => $info->appointment_time,
+ 'end_time' => '10:25',
+ 'qrcode' => '',
+ 'code' => $info->appointment_number,
+ ],
+ 'list' => $res['data']['list'],
+ ]);
+ } else {
+ return \Yz::Return(false, $res['message']);
+ }
+ } else {
+ return \Yz::Return(false, "获取失败");
+ }
+ }
+
+ public function post($url, $data)
+ {
+ $data_string = json_encode($data, JSON_UNESCAPED_UNICODE);
+ $curl = curl_init();
+ curl_setopt($curl, CURLOPT_URL, $url);
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($curl, CURLOPT_POST, true);
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+ curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
+ curl_setopt($curl, CURLOPT_HTTPHEADER, [
+ 'Content-Type: application/json; charset=utf-8',
+ 'Content-Length: ' . strlen($data_string),
+ 'Authorization: Bearer BD30333C-CBD4-4BA3-A27C-76727FF4D8B1'
+ ]);
+ curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
+ $r = curl_exec($curl);
+ curl_close($curl);
+ return $r;
+ }
+
+ public function fz($type, $content)
+ {
+ $date = date('Y-m-d');
+ self::CheckTableName(date('Y-m-d'));
+ self::$log->date = $date;
+ self::$log->type = $type;
+ self::$log->content = json_encode($content, JSON_UNESCAPED_UNICODE);
+ self::$log->callback = '{}';
+ self::$log->save();
+ $url_map = [
+ 'time' => '/api/Open/TiJian/get',
+ 'info' => '/api/Open/TiJian/info',
+ ];
+ $url = self::$url;
+ $res = self::post("$url{$url_map[$type]}", $content);
+// /api/Open/TiJian/get
+ self::$log->callback = $res;
+ self::$log->save();
+ if (json_decode($res)) {
+ return json_decode($res, true);
+ } else {
+ return false;
+ }
+ }
+
+ public static function CheckTableName($date)
+ {
+ $table_name = 'zz_fenzhen_log_' . date('ym', strtotime($date));
+ $table_count = DB::select('select count(1) as c from information_schema.TABLES where table_schema = ? and table_name = ?', [env('DB_DATABASE'), $table_name])[0];
+ if ($table_count->c === 0) {
+ Schema::create($table_name, function (Blueprint $table) {
+ $table->id();
+ $table->date('date')->index();
+ $table->string('type', 20)->index();
+ $table->longText('content');
+ $table->longText('callback');
+ $table->timestamps();
+ });
+ }
+ self::$log = new \App\Models\FenzhenLog;
+ self::$log->setTable($table_name);
+ return $table_name;
}
}
diff --git a/Laravel/app/Models/FenzhenLog.php b/Laravel/app/Models/FenzhenLog.php
new file mode 100644
index 0000000..7e7574e
--- /dev/null
+++ b/Laravel/app/Models/FenzhenLog.php
@@ -0,0 +1,10 @@
+
-import DraggableButton from "@/pages/components/goHome.vue";
-/**
- * name:
- * user:sa0ChunLuyu
- * date:2024年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 $props = defineProps({
- id: {
- type: String,
- default: "0",
- },
-});
-
-const fenzhen_list = ref(false);
-const getFenzhenList = async () => {
- uni.showLoading();
- const response = await $api("FenzhenList", {
- id: $props.id,
- });
- uni.hideLoading();
- $response(response, () => {
- fenzhen_list.value = response.data;
- });
-};
-
-const mountedAction = () => {
- getFenzhenList();
-};
-
-const config_ref = ref(null);
-const configRef = (e) => {
- if (!config_ref.value) {
- config_ref.value = e;
- mountedAction();
- }
-};
-
-const toRouter = () => {
- uni.navigateTo({
- url: "/pages/user/fenzhen/xindiantu?id=" + $props.id,
- });
-};
-
-const timeShow = (time) => {
- let time_array = time.split(":");
- return `${time_array[0]}:${time_array[1]}`;
-};
-
-const tip_show = ref(false);
-const tip_content = ref("");
-const getTipContent = async () => {
- uni.showLoading();
- const response = await $api("GetReadme");
- uni.hideLoading();
- $response(response, () => {
- tip_content.value = response.data.content;
- tip_show.value = true;
- });
-};
-const tipShowClick = () => {
- if (!!tip_content.value) {
- tip_show.value = true;
- } else {
- getTipContent();
- }
-};
-
-onShow(() => {
- if (!!config_ref.value) {
- mountedAction();
- }
-});
+ import DraggableButton from "@/pages/components/goHome.vue";
+ /**
+ * name:
+ * user:sa0ChunLuyu
+ * date:2024年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 $props = defineProps({
+ id: {
+ type: String,
+ default: "0",
+ },
+ });
+
+ const fenzhen_list = ref(false);
+ const getFenzhenList = async () => {
+ uni.showLoading();
+ const response = await $api("FenzhenList", {
+ id: $props.id,
+ });
+ uni.hideLoading();
+ $response(response, () => {
+ fenzhen_list.value = response.data;
+ });
+ };
+
+ const mountedAction = () => {
+ getFenzhenList();
+ };
+
+ const config_ref = ref(null);
+ const configRef = (e) => {
+ if (!config_ref.value) {
+ config_ref.value = e;
+ mountedAction();
+ }
+ };
+
+ const toRouter = (clinic) => {
+ uni.navigateTo({
+ url: "/pages/user/fenzhen/xindiantu?id=" + $props.id + '&clinic=' + clinic,
+ });
+ };
+
+ const timeShow = (time) => {
+ let time_array = time.split(":");
+ return `${time_array[0]}:${time_array[1]}`;
+ };
+
+ const tip_show = ref(false);
+ const tip_content = ref("");
+ const getTipContent = async () => {
+ uni.showLoading();
+ const response = await $api("GetReadme");
+ uni.hideLoading();
+ $response(response, () => {
+ tip_content.value = response.data.content;
+ tip_show.value = true;
+ });
+ };
+ const tipShowClick = () => {
+ if (!!tip_content.value) {
+ tip_show.value = true;
+ } else {
+ getTipContent();
+ }
+ };
+
+ const toReport = () => {
+ wx.miniProgram.navigateTo({
+ url: '/pages/other/entry/index?path=/pages/outpatient/doctor-appointment/index&scene=1035&hospitalAreaId=6&departmentCode=A0030077&subDepartmentCode=4773794195699464904'
+ })
+ }
+
+ onShow(() => {
+ if (!!config_ref.value) {
+ mountedAction();
+ }
+ });
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- {{
+ }">
+
+ {{
fenzhen_list.info.name
}}
- {{
+ {{
fenzhen_list.info.sex === 1 ? "男士" : "女士"
}}
-
-
-
- 体检套餐:
- {{
+
+
+
+ 体检套餐:
+ {{
fenzhen_list.info.combo_name
}}
-
-
- 体检日期:
- {{
+
+
+ 体检日期:
+ {{
fenzhen_list.info.check_date
}}
-
-
-
- 体检注意事项
-
-
-
-
- 开始体检时间
- {{
+
+
+
+ 体检注意事项
+
+
+
+
+ 开始体检时间
+ {{
timeShow(fenzhen_list.info.start_time)
}}
- — 预计结束时间
- {{
+ — 预计结束时间
+ {{
timeShow(fenzhen_list.info.end_time)
}}
-
-
-
-
-
- 尊敬的客户,为了使您的体检流程更加顺畅,请按以下步骤提
- 示顺序逐项完成体检。
-
-
-
- 自助导检
-
-
-
- {{
+
+
+
+
+
+ 尊敬的客户,为了使您的体检流程更加顺畅,请按以下步骤提
+ 示顺序逐项完成体检。
+
+
+
+ 自助导检
+
+
+
+ {{
i.time
}}
-
-
-
-
-
-
-
-
-
- {{ k + 1 }}.{{ i.name }}
- {{ i.desc }}
-
-
-
- {{ i.tip }}
- 查看详情>>
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {{ k + 1 }}.{{ i.name }}
+ {{ i.desc }}
+
+
+
+ {{ i.tip }}
+ 查看详情>>
+
+
+
+
+
+ 已预约 {{ fenzhen_list.report }} 报告解读
+
+
+ 预约解读
+
+
+
+
+
+
+ .report_tip_wrapper {
+ font-weight: 500;
+ font-size: 28rpx;
+ color: #239EA3;
+ line-height: 90rpx;
+ margin-right: 29rpx;
+ }
+
+ .report_wrapper {
+ display: flex;
+ justify-content: end;
+ }
+
+ .report_button_wrapper {
+ width: 200rpx;
+ height: 60rpx;
+ background: #239ea3;
+ border-radius: 30rpx;
+ font-size: 24rpx;
+ color: #ffffff;
+ line-height: 60rpx;
+ text-align: center;
+ margin-right: 29rpx;
+ margin-top: 50rpx;
+ }
+
+ .tip_dialog_text_wrapper {
+ max-height: calc(100vh - 600rpx);
+ overflow-y: auto;
+ }
+
+ .tip_dialog_wrapper {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ width: 750rpx;
+ background: #00000060;
+ margin: 0 auto;
+ z-index: 9999;
+ }
+
+ .tip_dialog_close_wrapper {
+ position: absolute;
+ top: 30rpx;
+ right: 40rpx;
+ width: 26rpx;
+ height: 26rpx;
+ }
+
+ .tip_dialog_close_wrapper image {
+ width: 26rpx;
+ height: 26rpx;
+ display: block;
+ object-fit: contain;
+ }
+
+ .tip_dialog_box_wrapper {
+ position: absolute;
+ width: 610rpx;
+ background: #ffffff;
+ border-radius: 15rpx;
+ padding-left: 50rpx;
+ padding-right: 50rpx;
+ padding-bottom: 90rpx;
+ padding-top: 130rpx;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ }
+
+ .time_line_item_more_wrapper {
+ font-size: 22rpx;
+ color: #239ea3;
+ line-height: 1;
+ text-decoration-line: underline;
+ margin-right: 19rpx;
+ }
+
+ .time_line_item_text_wrapper {
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #6e6e6e;
+ line-height: 1;
+ margin-left: 42rpx;
+
+ width: calc(100% - 210rpx);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .time_line_item_line_wrapper {
+ width: 550rpx;
+ height: 1rpx;
+ background: #e8e8e8;
+ border-radius: 1rpx;
+ margin: 13rpx auto 5rpx;
+ }
+
+ .time_line_item_box_wrapper {
+ width: 400rpx;
+ height: 40rpx;
+ background: #5a75ca30;
+ border-radius: 5rpx;
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #5a75ca;
+ line-height: 40rpx;
+ text-align: center;
+ margin-right: 17rpx;
+ }
+
+ .time_line_item_title_wrapper {
+ width: 140rpx;
+ font-weight: bold;
+ font-size: 28rpx;
+ color: #0d0d0d;
+ line-height: 40rpx;
+ height: 40rpx;
+ margin-left: 22rpx;
+ }
+
+ .time_line_item_flex_wrapper {
+ margin-top: 15rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ .time_line_item_time_cover_wrapper {
+ position: absolute;
+ width: 2rpx;
+ top: -36rpx;
+ height: 100rpx;
+ left: 50%;
+ background: #ffffff;
+ transform: translateX(-50%);
+ z-index: 99;
+ }
+
+ .time_line_item_time_line_wrapper {
+ position: absolute;
+ width: 2rpx;
+ top: 0;
+ bottom: 0;
+ left: 50%;
+ background: #dedede;
+ transform: translateX(-50%);
+ }
+
+ .time_line_item_time_dot_wrapper {
+ position: absolute;
+ width: 16rpx;
+ height: 16rpx;
+ background: #cfcece60;
+ border-radius: 50%;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, calc(-50% + 26rpx));
+ z-index: 999;
+ }
+
+ .time_line_item_time_dot_in_wrapper {
+ width: 8rpx;
+ height: 8rpx;
+ background: #cfcece;
+ border-radius: 50%;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ }
+
+ .time_line_box_wrapper {
+ margin-top: 28rpx;
+ }
+
+ .time_line_item_triangle_wrapper {
+ width: 16rpx;
+ height: 16rpx;
+ border-left: 1rpx #e8e8e8 solid;
+ border-bottom: 1rpx #e8e8e8 solid;
+ background: #f8f8f8;
+ position: absolute;
+ top: 50%;
+ left: -10rpx;
+ transform: rotate(45deg);
+ }
+
+ .time_line_item_content_wrapper {
+ width: 590rpx;
+ background: #f8f8f8;
+ border-radius: 5rpx;
+ margin-left: 12rpx;
+ position: relative;
+ border: 1rpx #e8e8e8 solid;
+ margin-top: 36rpx;
+ padding-bottom: 15rpx;
+ }
+
+ .time_line_item_time_value_wrapper {
+ width: 90rpx;
+ height: 55rpx;
+ background: #e4e4e4;
+ border-radius: 28rpx;
+ font-weight: 500;
+ font-size: 28rpx;
+ color: #212121;
+ line-height: 55rpx;
+ text-align: center;
+ position: relative;
+ z-index: 99;
+ }
+
+ .time_line_item_time_wrapper {
+ width: 90rpx;
+ position: absolute;
+ left: 6rpx;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ }
+
+ .time_line_item_wrapper {
+ width: calc(90rpx + 12rpx + 590rpx);
+ display: flex;
+ justify-content: end;
+ margin: 0 auto;
+ position: relative;
+ }
+
+ .time_line_title_wrapper {
+ width: 180rpx;
+ height: 60rpx;
+ background: linear-gradient(90deg, #edf6f5 0%, #bbdfe1 99%);
+ border-radius: 0rpx 30rpx 30rpx 0rpx;
+ font-weight: bold;
+ font-size: 25rpx;
+ color: #123531;
+ text-align: center;
+ line-height: 60rpx;
+ margin-top: 26rpx;
+ overflow: hidden;
+ }
+
+ .time_line_wrapper {
+ width: 710rpx;
+ background: #ffffff;
+ box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04);
+ border-radius: 15rpx;
+ margin: 53rpx auto 0;
+ overflow: hidden;
+ position: relative;
+ padding-bottom: 30rpx;
+ }
+
+ .tip_text_wrapper {
+ font-weight: 400;
+ font-size: 22rpx;
+ color: #e95515;
+ line-height: 36rpx;
+ margin-left: 10rpx;
+ }
+
+ .tip_icon_wrapper {
+ width: 24rpx;
+ height: 24rpx;
+ margin-top: 5rpx;
+ }
+
+ .tip_icon_wrapper image {
+ width: 24rpx;
+ height: 24rpx;
+ display: block;
+ object-fit: contain;
+ }
+
+ .tip_box_wrapper {
+ display: flex;
+ margin-top: 20rpx;
+ }
+
+ .tip_time_value_wrapper {
+ font-size: 36rpx;
+ color: #239ea3;
+ margin: 0 10rpx;
+ }
+
+ .tip_time_text_wrapper {
+ font-size: 22rpx;
+ color: #161616;
+ }
+
+ .tip_time_wrapper {
+ display: flex;
+ align-items: end;
+ line-height: 1;
+ }
+
+ .tip_wrapper {
+ width: calc(100% - 50px);
+ margin: 32rpx auto 0;
+ }
+
+ .info2_wrapper {
+ margin-top: 30rpx;
+ }
+
+ .info_box_wrapper {
+ margin-top: 60rpx;
+ margin-left: 29rpx;
+ }
+
+ .button_wrapper {
+ display: flex;
+ justify-content: end;
+ }
+
+ .desc_wrapper {
+ width: 160rpx;
+ height: 48rpx;
+ background: #239ea3;
+ border-radius: 5rpx;
+ font-size: 20rpx;
+ color: #ffffff;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 29rpx;
+ margin-top: 24rpx;
+ }
+
+ .info_wrapper {
+ display: flex;
+ align-items: center;
+ }
+
+ .info_text_wrapper {
+ font-size: 24rpx;
+ color: #0f0f0f;
+ line-height: 1;
+ }
+
+ .info_title_wrapper {
+ font-size: 24rpx;
+ color: #8b8b8b;
+ line-height: 1;
+ }
+
+ .order_info_wrapper {
+ width: 710rpx;
+ height: 360rpx;
+ background: #ffffff;
+ box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04);
+ border-radius: 15rpx;
+ margin: 20rpx auto 0;
+ overflow: hidden;
+ }
+
+ .person_name_wrapper {
+ display: flex;
+ align-items: end;
+ margin-top: 72rpx;
+ margin-left: 29rpx;
+ }
+
+ .person_name_text_wrapper {
+ font-weight: bold;
+ font-size: 34rpx;
+ color: #171717;
+ }
+
+ .person_sex_wrapper {
+ font-size: 24rpx;
+ color: #7e7e7e;
+ margin-left: 15rpx;
+ }
+
+ .time_line_item-2_wrapper .time_line_item_time_value_wrapper,
+ .time_line_item-1_wrapper .time_line_item_time_value_wrapper {
+ background: #239ea3;
+ color: #f8f8f8;
+ }
+
+ .time_line_item-2_wrapper .time_line_item_time_dot_wrapper,
+ .time_line_item-1_wrapper .time_line_item_time_dot_wrapper {
+ background: #239ea360;
+ }
+
+ .time_line_item-2_wrapper .time_line_item_time_dot_in_wrapper,
+ .time_line_item-1_wrapper .time_line_item_time_dot_in_wrapper {
+ background: #239ea3;
+ }
+
+ .time_line_item-2_wrapper .time_line_item_box_wrapper,
+ .time_line_item-1_wrapper .time_line_item_box_wrapper {
+ background: #6cafb230;
+ color: #239ea3;
+ }
+
+ .time_line_item--1_wrapper .time_line_item_time_value_wrapper {
+ background: #239ea3;
+ color: #f8f8f8;
+ }
+
+ .time_line_item--1_wrapper .time_line_item_time_dot_wrapper {
+ background: #239ea360;
+ }
+
+ .time_line_item--1_wrapper .time_line_item_time_dot_in_wrapper {
+ background: #239ea3;
+ }
+
+ .time_line_item--1_wrapper .time_line_item_box_wrapper {
+ background: #e1af6830;
+ color: #cc913e;
+ }
+
\ No newline at end of file
diff --git a/h5/pages/user/fenzhen/xindiantu.vue b/h5/pages/user/fenzhen/xindiantu.vue
index fb74d66..fcfbd36 100644
--- a/h5/pages/user/fenzhen/xindiantu.vue
+++ b/h5/pages/user/fenzhen/xindiantu.vue
@@ -1,76 +1,103 @@
-
-
-
-
-
-
-
-
-
- {{
- fenzhen_list.info.name
+
+
+
+ {{
+ fenzhen_time.info.name
}}
- {{
- fenzhen_list.info.sex === 1 ? "男士" : "女士"
+ {{
+ fenzhen_time.info.sex === 1 ? "男士" : "女士"
}}
-
-
-
- 体检套餐:
- {{
- fenzhen_list.info.combo_name
+
+
+
+ 体检套餐:
+ {{
+ fenzhen_time.info.combo_name
}}
-
-
- 体检日期:
- {{
- fenzhen_list.info.check_date
+
+
+ 体检日期:
+ {{
+ fenzhen_time.info.check_date
}}
-
-
- 体检号条码:
-
+ 体检号条码:
+
-
-
-
-
- 开始体检时间
- {{
- timeShow(fenzhen_list.info.start_time)
+ code: fenzhen_time.info.code,
+ }">
+
+
+
+
+ 开始体检时间
+ {{
+ timeShow(fenzhen_time.info.start_time)
}}
- — 预计结束时间
- {{
- timeShow(fenzhen_list.info.end_time)
+ — 预计结束时间
+ {{
+ timeShow(fenzhen_time.info.end_time)
}}
-
-
-
-
-
- 尊敬的客户,为了使您的体检流程更加顺畅,请按以下步骤提
- 示顺序逐项完成体检。
-
-
-
-
-
-
- 未完成
-
- 已完成
-
-
-
-
-
- {{ item.name }}
-
- 弃检
-
-
+
+
+
+
+
+ 尊敬的客户,为了使您的体检流程更加顺畅,请按以下步骤提
+ 示顺序逐项完成体检。
+
+
+
+
+
+
+ 未完成
+
+ 已完成
+
+
+
+
+
+ {{ item.name }}
+
+ 弃检
+
+
- {{ item.name }}
-
- 完成
+ {{ item.name }}
+
+ 完成
{{ item.time }}
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+ .tip_dialog_text_wrapper {
+ max-height: calc(100vh - 600rpx);
+ overflow-y: auto;
+ }
+
+ .tip_dialog_wrapper {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ width: 750rpx;
+ background: #00000060;
+ margin: 0 auto;
+ z-index: 9999;
+ }
+
+ .tip_dialog_close_wrapper {
+ position: absolute;
+ top: 30rpx;
+ right: 40rpx;
+ width: 26rpx;
+ height: 26rpx;
+ }
+
+ .tip_dialog_close_wrapper image {
+ width: 26rpx;
+ height: 26rpx;
+ display: block;
+ object-fit: contain;
+ }
+
+ .tip_dialog_box_wrapper {
+ position: absolute;
+ width: 610rpx;
+ background: #ffffff;
+ border-radius: 15rpx;
+ padding-left: 50rpx;
+ padding-right: 50rpx;
+ padding-bottom: 90rpx;
+ padding-top: 130rpx;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ }
+
+ .time_line_item_more_wrapper {
+ font-size: 22rpx;
+ color: #239ea3;
+ line-height: 1;
+ text-decoration-line: underline;
+ margin-right: 19rpx;
+ }
+
+ .time_line_item_text_wrapper {
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #6e6e6e;
+ line-height: 1;
+ margin-left: 42rpx;
+ }
+
+ .time_line_item_line_wrapper {
+ width: 550rpx;
+ height: 1rpx;
+ background: #e8e8e8;
+ border-radius: 1rpx;
+ margin: 13rpx auto 5rpx;
+ }
+
+ .time_line_item_box_wrapper {
+ width: 400rpx;
+ height: 40rpx;
+ background: #5a75ca30;
+ border-radius: 5rpx;
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #5a75ca;
+ line-height: 40rpx;
+ text-align: center;
+ margin-right: 17rpx;
+ }
+
+ .time_line_item_title_wrapper {
+ width: 140rpx;
+ font-weight: bold;
+ font-size: 28rpx;
+ color: #0d0d0d;
+ line-height: 40rpx;
+ height: 40rpx;
+ margin-left: 22rpx;
+ }
+
+ .time_line_item_flex_wrapper {
+ margin-top: 15rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ .time_line_item_time_cover_wrapper {
+ position: absolute;
+ width: 2rpx;
+ top: -36rpx;
+ height: 100rpx;
+ left: 50%;
+ background: #ffffff;
+ transform: translateX(-50%);
+ z-index: 99;
+ }
+
+ .time_line_item_time_line_wrapper {
+ position: absolute;
+ width: 2rpx;
+ top: 0;
+ bottom: 0;
+ left: 50%;
+ background: #dedede;
+ transform: translateX(-50%);
+ }
+
+ .time_line_item_time_dot_wrapper {
+ position: absolute;
+ width: 16rpx;
+ height: 16rpx;
+ background: #cfcece60;
+ border-radius: 50%;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, calc(-50% + 26rpx));
+ z-index: 999;
+ }
+
+ .time_line_item_time_dot_in_wrapper {
+ width: 8rpx;
+ height: 8rpx;
+ background: #cfcece;
+ border-radius: 50%;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ }
+
+ .time_line_box_wrapper {
+ margin-top: 28rpx;
+ }
+
+ .time_line_item_triangle_wrapper {
+ width: 16rpx;
+ height: 16rpx;
+ border-left: 1rpx #e8e8e8 solid;
+ border-bottom: 1rpx #e8e8e8 solid;
+ background: #f8f8f8;
+ position: absolute;
+ top: 50%;
+ left: -10rpx;
+ transform: rotate(45deg);
+ }
+
+ .time_line_item_content_wrapper {
+ width: 590rpx;
+ background: #f8f8f8;
+ border-radius: 5rpx;
+ margin-left: 12rpx;
+ position: relative;
+ border: 1rpx #e8e8e8 solid;
+ margin-top: 36rpx;
+ padding-bottom: 15rpx;
+ }
+
+ .time_line_item_time_value_wrapper {
+ width: 90rpx;
+ height: 55rpx;
+ background: #e4e4e4;
+ border-radius: 28rpx;
+ font-weight: 500;
+ font-size: 28rpx;
+ color: #212121;
+ line-height: 55rpx;
+ text-align: center;
+ position: relative;
+ z-index: 99;
+ }
+
+ .time_line_item_time_wrapper {
+ width: 90rpx;
+ position: absolute;
+ left: 6rpx;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ }
+
+ .time_line_item_wrapper {
+ width: calc(90rpx + 12rpx + 590rpx);
+ display: flex;
+ justify-content: end;
+ margin: 0 auto;
+ position: relative;
+ }
+
+ .time_line_title_wrapper {
+ width: 180rpx;
+ height: 60rpx;
+ background: linear-gradient(90deg, #edf6f5 0%, #bbdfe1 99%);
+ border-radius: 0rpx 30rpx 30rpx 0rpx;
+ font-weight: bold;
+ font-size: 25rpx;
+ color: #123531;
+ text-align: center;
+ line-height: 60rpx;
+ margin-top: 26rpx;
+ overflow: hidden;
+ }
+
+ .time_line_wrapper {
+ width: 710rpx;
+ background: #ffffff;
+ box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04);
+ border-radius: 15rpx;
+ margin: 53rpx auto 0;
+ overflow: hidden;
+ position: relative;
+ padding-bottom: 30rpx;
+ }
+
+ .tip_text_wrapper {
+ font-weight: 400;
+ font-size: 22rpx;
+ color: #e95515;
+ line-height: 36rpx;
+ margin-left: 10rpx;
+ }
+
+ .tip_icon_wrapper {
+ width: 24rpx;
+ height: 24rpx;
+ margin-top: 5rpx;
+ }
+
+ .tip_icon_wrapper image {
+ width: 24rpx;
+ height: 24rpx;
+ display: block;
+ object-fit: contain;
+ }
+
+ .tip_box_wrapper {
+ display: flex;
+ margin-top: 20rpx;
+ }
+
+ .tip_time_value_wrapper {
+ font-size: 36rpx;
+ color: #239ea3;
+ margin: 0 10rpx;
+ }
+
+ .tip_time_text_wrapper {
+ font-size: 22rpx;
+ color: #161616;
+ }
+
+ .tip_time_wrapper {
+ display: flex;
+ align-items: end;
+ line-height: 1;
+ }
+
+ .tip_wrapper {
+ width: 100%;
+ padding: 30rpx;
+ padding-bottom: 0;
+ margin-top: 30rpx;
+ border-top: 1rpx solid #e8e8e8;
+ box-sizing: border-box;
+ }
+
+ .info2_wrapper {
+ margin-top: 30rpx;
+ }
+
+ .info_box_wrapper {
+ margin-top: 60rpx;
+ margin-left: 29rpx;
+ }
+
+ .button_wrapper {
+ display: flex;
+ justify-content: end;
+ }
+
+ .desc_wrapper {
+ width: 160rpx;
+ height: 48rpx;
+ background: #239ea3;
+ border-radius: 5rpx;
+ font-size: 20rpx;
+ color: #ffffff;
+ line-height: 48rpx;
+ text-align: center;
+ margin-right: 29rpx;
+ margin-top: 24rpx;
+ }
+
+ .info_wrapper {
+ display: flex;
+ align-items: center;
+ }
+
+ .info_text_wrapper {
+ font-size: 24rpx;
+ color: #0f0f0f;
+ line-height: 1;
+ }
+
+ .info_title_wrapper {
+ font-size: 24rpx;
+ color: #8b8b8b;
+ line-height: 1;
+ }
+
+ .order_info_wrapper {
+ width: 710rpx;
+ /* height: 360rpx; */
+ background: #ffffff;
+ box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.04);
+ border-radius: 15rpx;
+ margin: 20rpx auto 0;
+ overflow: hidden;
+ padding-bottom: 40rpx;
+ }
+
+ .person_name_wrapper {
+ display: flex;
+ align-items: end;
+ margin-top: 72rpx;
+ margin-left: 29rpx;
+ }
+
+ .person_name_text_wrapper {
+ font-weight: bold;
+ font-size: 34rpx;
+ color: #171717;
+ }
+
+ .person_sex_wrapper {
+ font-size: 24rpx;
+ color: #7e7e7e;
+ margin-left: 15rpx;
+ }
+
+ .time_line_item-2_wrapper .time_line_item_time_value_wrapper,
+ .time_line_item-1_wrapper .time_line_item_time_value_wrapper {
+ background: #239ea3;
+ color: #f8f8f8;
+ }
+
+ .time_line_item-2_wrapper .time_line_item_time_dot_wrapper,
+ .time_line_item-1_wrapper .time_line_item_time_dot_wrapper {
+ background: #239ea360;
+ }
+
+ .time_line_item-2_wrapper .time_line_item_time_dot_in_wrapper,
+ .time_line_item-1_wrapper .time_line_item_time_dot_in_wrapper {
+ background: #239ea3;
+ }
+
+ .time_line_item-2_wrapper .time_line_item_box_wrapper,
+ .time_line_item-1_wrapper .time_line_item_box_wrapper {
+ background: #6cafb230;
+ color: #239ea3;
+ }
+
+ .time_line_item--1_wrapper .time_line_item_time_value_wrapper {
+ background: #239ea3;
+ color: #f8f8f8;
+ }
+
+ .time_line_item--1_wrapper .time_line_item_time_dot_wrapper {
+ background: #239ea360;
+ }
+
+ .time_line_item--1_wrapper .time_line_item_time_dot_in_wrapper {
+ background: #239ea3;
+ }
+
+ .time_line_item--1_wrapper .time_line_item_box_wrapper {
+ background: #e1af6830;
+ color: #cc913e;
+ }
+
+ .table_wrapper {
+ width: 100%;
+ background: #ffffff;
+ box-shadow: 0px 1rpx 1rpx 0px rgba(2, 2, 4, 0.05);
+ border-radius: 10rpx;
+ margin-top: 15rpx;
+ overflow: hidden;
+ padding-bottom: 34rpx;
+ }
+
+ .ckjg_active {
+ background: #239ea3;
+ color: #fff;
+ }
+
\ No newline at end of file