From 2b8d8fde58e518495142746faf13b07f404e92f3 Mon Sep 17 00:00:00 2001 From: sa0ChunLuyu Date: Fri, 11 Oct 2024 16:05:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E4=BD=93=E6=A3=80?= =?UTF-8?q?=E5=88=86=E8=AF=8A=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/API/H5/FenzhenController.php | 281 ++-- Laravel/app/Models/FenzhenLog.php | 10 + h5/pages/user/fenzhen/fenzhen.vue | 1176 +++++++++-------- h5/pages/user/fenzhen/xindiantu.vue | 1150 ++++++++-------- 4 files changed, 1372 insertions(+), 1245 deletions(-) create mode 100644 Laravel/app/Models/FenzhenLog.php 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(); + } + }); + .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 @@ + .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