no message

main
鹿和sa0ChunLuyu 1 year ago
parent 472e0fc47b
commit dd6f75f3c4

@ -21,6 +21,155 @@ class ViewController extends Controller
return $site; return $site;
} }
public function public_config()
{
$request = request();
$search = $request->get('search') ?? '';
return [
'search_value' => $search,
'search_tags' => ['女性', '男性', '入职', '父母', '高端']
];
}
public function combo_list(Request $request)
{
$site = self::site();
if (!$site) return '站点暂时关闭';
$hospital_ids = json_decode($site->hospital, true);
$type = $request->get('type') ?? '';
$combo_type = $request->get('combo_type') ?? '';
$price = $request->get('price') ?? '';
$sex = $request->get('sex') ?? '';
$order = $request->get('order') ?? 'zh';
$search = $request->get('search') ?? '';
$combos = DB::table('combos')
->whereIn('hospital_id', $hospital_ids)
->where(function ($query) use ($type) {
if ($type != '') $query->where('tags', 'like', "%\"$type\"%");
})
->where(function ($query) use ($combo_type) {
if ($combo_type != '') $query->where('tags', 'like', "%\"$combo_type\"%");
})
->where(function ($query) use ($price) {
if ($price != '') {
$price_arr = explode('-', $price);
if (count($price_arr) == 2) {
$query->whereBetween('price', [$price_arr[0], $price_arr[1]]);
} else {
$price_arr = explode('u', $price);
$query->where('price', '>=', $price_arr[0]);
}
}
})
->where(function ($query) use ($sex) {
if ($sex != '') $query->whereIn('sex', [0, $sex]);
})
->where(function ($query) use ($search) {
if ($search != '') $query->where('tags', 'like', "%\"$search\"%")
->orWhere('name', 'like', "%$search%");
})
->orderBy($order == 'zh' ? 'id' : 'price', $order == 'zh' ? 'desc' : 'asc')
->paginate(20)
->withQueryString()
->toArray();
$combo_count = DB::table('combos')
->whereIn('hospital_id', $hospital_ids)
->where(function ($query) use ($type) {
if ($type != '') $query->where('tags', 'like', "%\"$type\"%");
})
->where(function ($query) use ($combo_type) {
if ($combo_type != '') $query->where('tags', 'like', "%\"$combo_type\"%");
})
->where(function ($query) use ($price) {
if ($price != '') {
$price_arr = explode('-', $price);
if (count($price_arr) == 2) {
$query->whereBetween('price', [$price_arr[0], $price_arr[1]]);
} else {
$price_arr = explode('u', $price);
$query->where('price', '>=', $price_arr[0]);
}
}
})
->where(function ($query) use ($sex) {
if ($sex != '') $query->whereIn('sex', [0, $sex]);
})
->where(function ($query) use ($search) {
if ($search != '') $query->where('tags', 'like', "%\"$search\"%")
->orWhere('name', 'like', "%$search%");
})
->count();
$search_arr = [[
'label' => '体检类型',
'value' => 'type',
'options' => [
['label' => '不限', 'value' => ''],
['label' => '中老年', 'value' => '中老年'],
['label' => '青年女性', 'value' => '青年女性'],
['label' => '基础套餐', 'value' => '基础套餐'],
['label' => '入职体检', 'value' => '入职体检'],
]
], [
'label' => '体检套餐',
'value' => 'combo_type',
'options' => [
['label' => '不限', 'value' => ''],
['label' => '肝脏疾病', 'value' => '肝脏疾病'],
['label' => '糖尿病', 'value' => '糖尿病'],
['label' => '泌尿系统疾病', 'value' => '泌尿系统疾病'],
['label' => '高血脂', 'value' => '高血脂'],
['label' => '高血糖', 'value' => '高血糖'],
['label' => '消化系统疾病', 'value' => '消化系统疾病'],
['label' => '前列腺疾病', 'value' => '前列腺疾病'],
['label' => '妇科疾病', 'value' => '妇科疾病'],
['label' => '甲状腺疾病', 'value' => '甲状腺疾病'],
['label' => '心血管疾病', 'value' => '心血管疾病'],
['label' => '心脏病', 'value' => '心脏病'],
['label' => '骨质疏松', 'value' => '骨质疏松'],
['label' => '腰颈肩病', 'value' => '腰颈肩病'],
['label' => '风湿病', 'value' => '风湿病'],
['label' => '肺部疾病', 'value' => '肺部疾病'],
]
], [
'label' => '价格区间',
'value' => 'price',
'options' => [
['label' => '不限', 'value' => ''],
['label' => '100-300', 'value' => '100-300'],
['label' => '300-500', 'value' => '300-500'],
['label' => '500-800', 'value' => '500-800'],
['label' => '800以上', 'value' => '800u'],
]
], [
'label' => '性别',
'value' => 'sex',
'options' => [
['label' => '不限', 'value' => ''],
['label' => '男', 'value' => '1'],
['label' => '女', 'value' => '2'],
]
]];
foreach ($combos['data'] as $combo) {
$combo->tags_arr = json_decode($combo->tags, true);
}
// Yz::debug(['a' => $combos]);
return view('combo_list.combo_list', [
'public_config' => self::public_config(),
'combos' => $combos,
'combo_count' => $combo_count,
'search_arr' => $search_arr,
'search_choose' => [
'type' => $type,
'combo_type' => $combo_type,
'price' => $price,
'sex' => $sex,
'order' => $order,
]
]);
}
public function home() public function home()
{ {
$site = self::site(); $site = self::site();
@ -29,6 +178,7 @@ class ViewController extends Controller
$combos = DB::table('combos') $combos = DB::table('combos')
->whereIn('hospital_id', $hospital_ids) ->whereIn('hospital_id', $hospital_ids)
->limit(8) ->limit(8)
->orderBy('id', 'desc')
->get(); ->get();
foreach ($combos as $combo) { foreach ($combos as $combo) {
$combo->tags_arr = json_decode($combo->tags, true); $combo->tags_arr = json_decode($combo->tags, true);
@ -36,11 +186,13 @@ class ViewController extends Controller
$hospital_list = DB::table('hospital') $hospital_list = DB::table('hospital')
->whereIn('id', $hospital_ids) ->whereIn('id', $hospital_ids)
->limit(8) ->limit(8)
->orderBy('id', 'desc')
->get(); ->get();
foreach ($hospital_list as $hospital) { foreach ($hospital_list as $hospital) {
$hospital->tags_arr = json_decode($hospital->tags, true); $hospital->tags_arr = json_decode($hospital->tags, true);
} }
return view('home.home', [ return view('home.home', [
'public_config' => self::public_config(),
'combos' => $combos, 'combos' => $combos,
'hospitals' => $hospital_list, 'hospitals' => $hospital_list,
]); ]);
@ -61,7 +213,11 @@ class ViewController extends Controller
->where('id', $combo->hospital_id) ->where('id', $combo->hospital_id)
->first(); ->first();
$url = $hospital->mp_jump . '?combo=' . $combo->combo_id . '&hospital=' . $hospital->code; $url = $hospital->mp_jump . '?combo=' . $combo->combo_id . '&hospital=' . $hospital->code;
// Yz::debug([
// 'a' => $hospital
// ]);
return view('combo.combo', [ return view('combo.combo', [
'public_config' => self::public_config(),
'qrcode' => $url, 'qrcode' => $url,
'combo' => $combo, 'combo' => $combo,
'hospital' => $hospital, 'hospital' => $hospital,

@ -2,6 +2,57 @@
--style-color-1: #86b883; --style-color-1: #86b883;
--style-color-2: #d35050; --style-color-2: #d35050;
--style-color-3: #aee3ab; --style-color-3: #aee3ab;
--style-color-4: #e19898;
}
.footer_beian_wrapper {
padding-top: 30px;
margin-top: 30px;
border-top: 1px solid #8c939d30;
text-align: center;
line-height: 40px;
font-size: 16px;
color: #8c939d;
}
.footer_web_icon_wrapper {
width: 500px;
}
.footer_web_icon_wrapper img {
width: 500px;
}
.footer_web_wrapper {
display: flex;
justify-content: space-between;
align-items: center;
}
.footer_web_logo_wrapper {
}
.footer_web_logo_icon_wrapper {
width: 200px;
height: 80px;
line-height: 80px;
font-weight: bold;
font-size: 30px;
}
.footer_web_logo_text_wrapper {
width: 400px;
line-height: 28px;
font-size: 16px;
color: #8c939d;
}
.footer_wrapper {
background: #f1f2f4;
padding: 30px 50px;
margin-top: 20px;
} }
.header_info_wrapper { .header_info_wrapper {
@ -60,6 +111,11 @@
cursor: pointer; cursor: pointer;
} }
.header_search_tag_active_wrapper {
color: #ffffff;
background: var(--style-color-1);
}
.header_search_wrapper { .header_search_wrapper {
margin-left: 30px; margin-left: 30px;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@ -12,7 +12,12 @@
<div class="combo_title_wrapper">{{ $combo->name }}</div> <div class="combo_title_wrapper">{{ $combo->name }}</div>
<div class="combo_price_wrapper"> <div class="combo_price_wrapper">
<div class="combo_price_title_wrapper">优惠价</div> <div class="combo_price_title_wrapper">优惠价</div>
<div class="combo_price_content_wrapper">¥ {{ $combo->price }}</div> <div class="combo_price_content_wrapper">
<span>¥ {{ $combo->price }}</span>
@if($combo->price < $combo->original_price)
<span class="combo_price_original_price_wrapper">{{ $combo->original_price }}</span>
@endif
</div>
</div> </div>
<div class="combo_intro_wrapper"> <div class="combo_intro_wrapper">
<div class="combo_intro_title_wrapper">套餐简介:</div> <div class="combo_intro_title_wrapper">套餐简介:</div>
@ -99,6 +104,11 @@
</div> </div>
<div class="combo_desc_combo_title_wrapper">医院简介</div> <div class="combo_desc_combo_title_wrapper">医院简介</div>
<div class="combo_desc_combo_text_wrapper">{!! $hospital->desc !!}</div> <div class="combo_desc_combo_text_wrapper">{!! $hospital->desc !!}</div>
<div class="combo_desc_combo_title_wrapper">地图</div>
<div class="combo_desc_combo_text_wrapper">
<div :ref="(e)=>{hospitalMapRef(e,Number({{$hospital->longitude}}),Number({{$hospital->latitude}}))}"
id="hospital_map_container"></div>
</div>
</div> </div>
</div> </div>
@endsection @endsection

@ -3,6 +3,11 @@
text-align: center; text-align: center;
} }
#hospital_map_container {
width: 100%;
height: 400px;
}
.qrcode_box_wrapper { .qrcode_box_wrapper {
width: 200px; width: 200px;
height: 200px; height: 200px;
@ -225,10 +230,18 @@
margin-left: 20px; margin-left: 20px;
} }
.combo_price_original_price_wrapper {
font-size: 18px;
margin-left: 10px;
color: var(--style-color-4);
font-weight: 400;
text-decoration: line-through;
}
.combo_wrapper { .combo_wrapper {
display: flex; display: flex;
width: 1200px; width: 1200px;
margin: 0 auto; margin: 20px auto 0;
justify-content: space-between; justify-content: space-between;
} }

@ -29,12 +29,21 @@ const qrcodeRef = (e) => {
qrcode_ref.value = e qrcode_ref.value = e
qrcodeCreate() qrcodeCreate()
} }
const hospital_map_ref = ref(null)
const hospitalMapRef = (e, longitude, latitude) => {
hospital_map_ref.value = e
const map = new BMapGL.Map(hospital_map_ref.value);
const point = new BMapGL.Point(longitude, latitude);
map.centerAndZoom(point, 16);
map.enableScrollWheelZoom(true);
}
// SCRIPT END // SCRIPT END
// MOUNTED // MOUNTED
// MOUNTED END // MOUNTED END
// RETURN // RETURN
const ret_ = { const ret_ = {
hospitalMapRef,
qrcodeRef, qrcodeRef,
qrcode_show, qrcode_show,
showQrcodeClick, showQrcodeClick,

@ -0,0 +1,92 @@
@extends('layout.layout')
@section('content')
<div class="combo_list_nav_wrapper">
<div class="combo_list_nav_item_wrapper combo_list_nav_item_active_wrapper">体检套餐</div>
<a href="">
<div class="combo_list_nav_item_wrapper">体检机构</div>
</a>
</div>
<div class="combo_list_search_wrapper">
@foreach($search_arr as $search_list)
<div class="combo_list_search_line_wrapper">
<div class="combo_list_search_line_title_wrapper">{{ $search_list['label'] }}</div>
<div class="combo_list_search_line_content_wrapper">
@foreach($search_list['options'] as $search_item)
<div @click="pageJump('{{ $search_list['value'] }}','{{ $search_item['value'] }}')" class="combo_list_search_line_content_item_wrapper
@if($search_item['value'] == $search_choose[$search_list['value']]) combo_list_search_line_content_active_wrapper @endif
">{{ $search_item['label'] }}</div>
@endforeach
</div>
</div>
@endforeach
</div>
<div class="combo_list_order_wrapper">
<div class="combo_list_order_line_wrapper">
<div class="combo_list_order_line_title_wrapper">排序方式</div>
<div class="combo_list_order_line_content_wrapper">
<div @click="pageJump('order','zh')" class="combo_list_order_line_content_item_wrapper
@if('zh' == $search_choose['order']) combo_list_order_line_content_active_wrapper @endif
">综合排序
</div>
<div @click="pageJump('order','zk')" class="combo_list_order_line_content_item_wrapper
@if('zk' == $search_choose['order']) combo_list_order_line_content_active_wrapper @endif
">折扣最多
</div>
</div>
<div class="combo_list_count_wrapper">共有<span
class="combo_list_count_number_wrapper">{{ $combo_count }}</span>个符合条件的套餐
</div>
</div>
</div>
<div class="combo_wrapper">
<div class="combo_list_wrapper">
@foreach($combos['data'] as $combo)
<a href="/combo?id={{ $combo->id }}" class="combo_item_wrapper">
<div class="combo_cover_wrapper">
@if($combo->cover != '')
<img src="{{ $combo->cover }}" alt="">
@else
<div>暂无封面图</div>
@endif
</div>
<div class="combo_name_wrapper">{{ $combo->name }}</div>
<div class="combo_tags_wrapper">
@foreach($combo->tags_arr as $tag)
<div class="combo_tag_wrapper">{{ $tag }}</div>
@endforeach
</div>
<div class="combo_price_wrapper">
<span>¥ {{ $combo->price }}</span>
@if($combo->price < $combo->original_price)
<span class="combo_original_price_wrapper">{{ $combo->original_price }}</span>
@endif
</div>
</a>
@endforeach
</div>
</div>
@if(count($combos['data']) > 0)
<div class="page_wrapper">
@foreach($combos['links'] as $key => $item)
<a @if (!!$item['url'])
href="{{ $item['url'] }}"
@endif>
<div class="page_item_wrapper @if(!!$item['active'])
page_item_active_wrapper
@endif">
@if($key == 0)
上一页
@elseif($key == count($combos['links']) - 1)
下一页
@else
{{ $item['label'] }}
@endif
</div>
</a>
@endforeach
</div>
@else
<div class="no_data_wrapper">未搜索到符合条件的套餐</div>
@endif
@endsection

@ -0,0 +1,206 @@
.combo_list_search_wrapper,
.combo_list_order_wrapper {
width: 1200px;
margin: 20px auto 0;
border: 1px solid #cccccc;
padding: 10px;
}
.combo_list_order_line_wrapper,
.combo_list_search_line_wrapper {
display: flex;
line-height: 60px;
border-bottom: 1px dashed #cccccc;
padding: 10px 0;
}
.combo_list_order_line_wrapper {
border-bottom: none;
}
.combo_list_count_number_wrapper {
color: var(--style-color-1);
margin: 5px;
}
.combo_list_order_line_title_wrapper,
.combo_list_search_line_title_wrapper {
width: 80px;
font-size: 16px;
font-weight: bold;
color: #aaaaaa;
margin-left: 20px;
}
.combo_list_order_line_content_wrapper,
.combo_list_search_line_content_wrapper {
display: flex;
margin-left: 20px;
width: calc(100% - 120px - 40px);
flex-wrap: wrap;
align-items: center;
}
.combo_list_count_wrapper {
text-align: right;
width: 420px;
}
.combo_list_order_line_content_wrapper {
width: calc(100% - 120px - 40px - 400px);
}
.combo_list_order_line_content_item_wrapper,
.combo_list_search_line_content_item_wrapper {
padding: 0 20px;
text-align: center;
height: 40px;
line-height: 40px;
cursor: pointer;
}
.combo_list_order_line_content_active_wrapper,
.combo_list_search_line_content_active_wrapper {
background: var(--style-color-1);
color: #fff;
}
.combo_list_nav_wrapper {
height: 60px;
line-height: 60px;
border-bottom: 5px solid var(--style-color-1);
width: 1200px;
margin: 20px auto 0;
display: flex;
align-items: center;
}
.combo_list_nav_item_wrapper {
height: 60px;
line-height: 60px;
width: 140px;
text-align: center;
cursor: pointer;
}
.combo_list_nav_item_active_wrapper {
background: var(--style-color-1);
color: #fff;
}
.combo_price_wrapper {
font-size: 24px;
color: var(--style-color-2);
font-weight: bold;
margin-top: 10px;
}
.combo_original_price_wrapper {
font-size: 18px;
margin-left: 10px;
color: var(--style-color-4);
font-weight: 400;
text-decoration: line-through;
}
.combo_tag_wrapper {
padding: 5px 10px;
background: #eaeaea;
border-radius: 6px;
color: #676767;
margin-right: 5px;
}
.combo_tags_wrapper {
display: flex;
flex-wrap: wrap;
}
.combo_name_wrapper {
font-size: 20px;
line-height: 40px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.combo_cover_wrapper {
width: 100%;
height: 200px;
background: #cccccc;
line-height: 200px;
text-align: center;
color: #333333;
border-radius: 6px;
overflow: hidden;
}
.combo_cover_wrapper img {
width: 100%;
height: 200px;
object-fit: cover;
}
.combo_item_wrapper {
width: 25%;
padding: 5px;
margin-bottom: 10px;
}
.combo_list_wrapper {
display: flex;
flex-wrap: wrap;
margin-top: 20px;
}
.combo_wrapper {
width: 1200px;
margin: 20px auto 0;
}
.page_wrapper {
display: flex;
justify-content: center;
flex-wrap: wrap;
margin-top: 40px;
margin-bottom: 70px;
}
.page_item_wrapper {
margin: 5px;
padding: 0 10px;
height: 30px;
background: #FFFFFF;
border: 1px solid #E5E7EC;
line-height: 30px;
text-align: center;
font-size: 16px;
color: #B5B5C4;
cursor: pointer;
}
.page_item_wrapper:hover {
background: #FAFAFA;
border: 1px solid #E5E7EC;
font-size: 16px;
color: var(--style-color-1);
}
.page_item_active_wrapper {
background: #FAFAFA;
border: 1px solid #E5E7EC;
font-weight: bold;
font-size: 16px;
color: var(--style-color-1);
}
.no_data_wrapper {
width: 100%;
font-size: 14px;
color: #999999;
line-height: 300px;
margin-top: 20px;
text-align: center;
height: 300px;
}

@ -0,0 +1,39 @@
// SCRIPT
const pageJump = (key, value) => {
let search_data = {
...page_options.value,
}
search_data[key] = value
if (key !== 'page') {
search_data.page = 1
}
let url = `/combo_list?`
for (let i in search_data) {
if (search_data[i]) {
url += `${i}=${search_data[i]}&`
}
}
window.location.href = url
}
// SCRIPT END
// MOUNTED
// MOUNTED END
// RETURN
const ret_ = {
pageJump,
}
// RETURN END
// OPTIONS
const opt = (g) => {
return {
type: 'type' in g ? g.type : '',
combo_type: 'combo_type' in g ? g.combo_type : '',
price: 'price' in g ? g.price : '',
sex: 'sex' in g ? g.sex : '',
order: 'order' in g ? g.order : 'zh',
search: 'search' in g ? g.search : '',
page: 'page' in g ? Number(g.page) : 1,
}
}
// OPTIONS END

@ -1,3 +1,16 @@
<div class="footer_wrapper"> <div class="footer_wrapper">
Footer <div class="footer_web_wrapper">
<div class="footer_web_logo_wrapper">
<div class="footer_web_logo_icon_wrapper">体检平台</div>
<div class="footer_web_logo_text_wrapper">
一个方便快捷认真负责。提供全国公立医院及体检机构的个人/团体体检预约,体检报告查询,体检报告解读。以及其他企业健康福利预约服务。
</div>
</div>
<div class="footer_web_icon_wrapper">
<img src="./assets/images/footer-icon.png" alt="">
</div>
</div>
<div class="footer_beian_wrapper">
copyright © 2018-2024 易捷健康体检平台 版权所有
</div>
</div> </div>

@ -24,17 +24,17 @@
</div> </div>
<div class="header_search_wrapper"> <div class="header_search_wrapper">
<div class="header_search_input_wrapper"> <div class="header_search_input_wrapper">
<input class="header_search_input_input_wrapper" type="text"> <input v-model="search_input" class="header_search_input_input_wrapper" type="text">
<div class="header_search_input_icon_wrapper"> <div @click="searchButtonClick()" class="header_search_input_icon_wrapper">
<i class="czs-search-l"></i> <i class="czs-search-l"></i>
</div> </div>
</div> </div>
<div class="header_search_tags_wrapper"> <div class="header_search_tags_wrapper">
<div class="header_search_tag_wrapper">女性</div> @foreach($public_config['search_tags'] as $tag)
<div class="header_search_tag_wrapper">男性</div> <div @click="searchTagClick('{{ $tag }}')" class="header_search_tag_wrapper
<div class="header_search_tag_wrapper">入职</div> @if($tag == $public_config['search_value']) header_search_tag_active_wrapper @endif
<div class="header_search_tag_wrapper">父母</div> ">{{ $tag }}</div>
<div class="header_search_tag_wrapper">高端</div> @endforeach
</div> </div>
</div> </div>
<div class="header_info_wrapper"> <div class="header_info_wrapper">

@ -12,10 +12,12 @@
</div> </div>
<div class="banner_menu_wrapper"> <div class="banner_menu_wrapper">
<div class="banner_menu_list_wrapper"> <div class="banner_menu_list_wrapper">
<div class="banner_menu_item_wrapper"> <a href="/combo_list">
<div class="banner_menu_item_title_wrapper">体检套餐</div> <div class="banner_menu_item_wrapper">
<div class="banner_menu_item_subtitle_wrapper">适应人群 高发疾病</div> <div class="banner_menu_item_title_wrapper">体检套餐</div>
</div> <div class="banner_menu_item_subtitle_wrapper">适应人群 高发疾病</div>
</div>
</a>
<div class="banner_menu_item_wrapper"> <div class="banner_menu_item_wrapper">
<div class="banner_menu_item_title_wrapper">体检机构</div> <div class="banner_menu_item_title_wrapper">体检机构</div>
<div class="banner_menu_item_subtitle_wrapper">公立医院 体检机构</div> <div class="banner_menu_item_subtitle_wrapper">公立医院 体检机构</div>
@ -61,7 +63,12 @@
<div class="combo_tag_wrapper">{{ $tag }}</div> <div class="combo_tag_wrapper">{{ $tag }}</div>
@endforeach @endforeach
</div> </div>
<div class="combo_price_wrapper">¥ {{ $combo->price }}</div> <div class="combo_price_wrapper">
<span>¥ {{ $combo->price }}</span>
@if($combo->price < $combo->original_price)
<span class="combo_original_price_wrapper">{{ $combo->original_price }}</span>
@endif
</div>
</a> </a>
@endforeach @endforeach
</div> </div>
@ -94,4 +101,36 @@
@endforeach @endforeach
</div> </div>
</div> </div>
<div class="combo_wrapper">
<div class="combo_top_wrapper">
<div class="combo_title_wrapper">部分合作医院&机构</div>
</div>
<div class="hospital_list_wrapper">
@for($i = 0; $i < 8; $i++)
<div class="hospital_item_wrapper">
<img src="./assets/images/yy-logo.png" alt="">
</div>
@endfor
<div class="hospital_item_blank_wrapper"></div>
<div class="hospital_item_blank_wrapper"></div>
<div class="hospital_item_blank_wrapper"></div>
<div class="hospital_item_blank_wrapper"></div>
</div>
</div>
<div class="combo_wrapper">
<div class="combo_top_wrapper">
<div class="combo_title_wrapper">部分合作企业&单位</div>
</div>
<div class="hospital_list_wrapper">
@for($i = 0; $i < 8; $i++)
<div class="hospital_item_wrapper">
<img src="./assets/images/qy-logo.png" alt="">
</div>
@endfor
<div class="hospital_item_blank_wrapper"></div>
<div class="hospital_item_blank_wrapper"></div>
<div class="hospital_item_blank_wrapper"></div>
<div class="hospital_item_blank_wrapper"></div>
</div>
</div>
@endsection @endsection

@ -4,6 +4,35 @@
font-weight: bold; font-weight: bold;
} }
.hospital_list_wrapper {
display: flex;
align-items: center;
flex-wrap: wrap;
width: 1200px;
margin: 20px auto 0;
justify-content: space-around;
}
.hospital_item_wrapper {
width: 280px;
height: 100px;
border: 1px solid #8c939d;
margin: 10px 5px;
overflow: hidden;
}
.hospital_item_wrapper img {
width: 280px;
height: 100px;
display: block;
object-fit: contain;
}
.hospital_item_blank_wrapper {
width: 290px;
}
.hospital_address_text_wrapper { .hospital_address_text_wrapper {
margin-left: 5px; margin-left: 5px;
width: calc(100% - 50px); width: calc(100% - 50px);
@ -76,7 +105,6 @@
.banner_menu_item_wrapper { .banner_menu_item_wrapper {
padding-left: 30px; padding-left: 30px;
margin-top: 20px; margin-top: 20px;
display: none;
} }
.banner_wrapper { .banner_wrapper {
@ -89,6 +117,7 @@
text-align: center; text-align: center;
height: 50px; height: 50px;
line-height: 50px; line-height: 50px;
display: none;
} }
.banner_nav_group_wrapper { .banner_nav_group_wrapper {
@ -116,6 +145,14 @@
margin-top: 10px; margin-top: 10px;
} }
.combo_original_price_wrapper {
font-size: 18px;
margin-left: 10px;
color: var(--style-color-4);
font-weight: 400;
text-decoration: line-through;
}
.combo_tag_wrapper { .combo_tag_wrapper {
padding: 5px 10px; padding: 5px 10px;
background: #eaeaea; background: #eaeaea;

@ -1,87 +1,112 @@
<!doctype html> <!doctype html>
<html lang="zh"> <html lang="zh">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" <meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta http-equiv="X-UA-Compatible" content="ie=edge">
<link type="image/x-icon" rel="shortcut icon" href="./favicon.png"/> <link type="image/x-icon" rel="shortcut icon" href="./favicon.png"/>
<link rel="stylesheet" href="./assets/import/element-plus.css"/> <link rel="stylesheet" href="./assets/import/element-plus.css"/>
<link rel="stylesheet" href="./assets/css/layout.css"/> <link rel="stylesheet" href="./assets/css/layout.css"/>
<link href="./assets/import/tailwind.min.css" rel="stylesheet"> <link href="./assets/import/tailwind.min.css" rel="stylesheet">
<script src="./assets/import/vue.js"></script> <script src="./assets/import/vue.js"></script>
<script src="./assets/import/element-plus.js"></script> <script src="./assets/import/element-plus.js"></script>
<script src="./assets/import/qrcode.min.js"></script> <script src="./assets/import/qrcode.min.js"></script>
<title>体检平台</title> <script type="text/javascript"
<link rel="stylesheet" href="./assets/icon/style.css"> src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=mJh1fI35HIuC959obt0blESEQdopSzpn"></script>
<meta name="viewport" content="width=device-width, initial-scale=1"> <title>体检平台</title>
<style> <link rel="stylesheet" href="./assets/icon/style.css">
{!! include_content('style') !!} <meta name="viewport" content="width=device-width, initial-scale=1">
</style> <style>
<style> {!! include_content('style') !!}
[v-cloak] { </style>
display: none; <style>
} [v-cloak] {
</style> display: none;
}
</style>
</head> </head>
<body> <body>
<div id="app" v-cloak> <div id="app" v-cloak>
<el-config-provider :button="button_config"> <el-config-provider :button="button_config">
<el-watermark :content="['', '']"> <el-watermark :content="['', '']">
<div> <div>
@include('components.header') @include('components.header')
</div> </div>
<div> <div>
@yield('content') @yield('content')
</div> </div>
<div> <div>
@include('components.footer') @include('components.footer')
</div> </div>
</el-watermark> </el-watermark>
</el-config-provider> </el-config-provider>
</div> </div>
</body> </body>
<script> <script>
const {createApp, onMounted, ref, nextTick, computed} = Vue const {createApp, onMounted, ref, nextTick, computed} = Vue
const {ElLoading, ElMessage, ElMessageBox} = ElementPlus const {ElLoading, ElMessage, ElMessageBox} = ElementPlus
</script> </script>
<script src="./assets/mounting.js"></script> <script src="./assets/mounting.js"></script>
<script> <script>
const App = { const App = {
setup() { setup() {
const button_config = { const button_config = {
autoInsertSpace: true, autoInsertSpace: true,
} }
const onMountedAction = () => { const onMountedAction = () => {
{!! include_content('mounted') !!} {!! include_content('mounted') !!}
} }
{!! include_content('script') !!} {!! include_content('script') !!}
const pageOptions = (g) => { const
{!! include_content('options') !!} pageOptions = (g) => {
} {!! include_content('options') !!}
}
const page_options = ref(pageOptions(@json($_GET))) const page_options = ref(pageOptions(@json($_GET)))
const search_input = ref('') const search_input = ref('')
onMounted(() => { const searchTagClick = (tag) => {
if (!!page_options.value && !!page_options.value.search) { search_input.value = tag
search_input.value = page_options.value.search searchButtonClick()
} }
onMountedAction()
})
return { const searchButtonClick = () => {
search_input, let search_data = {
button_config, ...page_options.value,
page_options, page: 1,
{!! include_content('return') !!} search: search_input.value,
} }
let url = `/combo_list?`
for (let i in search_data) {
if (search_data[i]) {
url += `${i}=${search_data[i]}&`
}
}
window.location.href = url
}
onMounted(() => {
if (!!page_options.value && !!page_options.value.search) {
search_input.value = page_options.value.search
}
onMountedAction()
})
return {
searchButtonClick,
searchTagClick,
search_input,
button_config,
page_options,
{!! include_content('return') !!}
}
}
} }
} const app = createApp(App)
const app = createApp(App) app.use(ElementPlus)
app.use(ElementPlus) app.mount('#app')
app.mount('#app')
</script> </script>
</html> </html>

@ -14,6 +14,7 @@ use Illuminate\Support\Facades\Route;
*/ */
Route::get('/Qrcode/combo', [\App\Http\Controllers\QrcodeController::class, 'combo_jump']); Route::get('/Qrcode/combo', [\App\Http\Controllers\QrcodeController::class, 'combo_jump']);
Route::get('/combo_list', [\App\Http\Controllers\ViewController::class, 'combo_list']);
Route::get('/combo', [\App\Http\Controllers\ViewController::class, 'combo']); Route::get('/combo', [\App\Http\Controllers\ViewController::class, 'combo']);
Route::get('/', [\App\Http\Controllers\ViewController::class, 'home']); Route::get('/', [\App\Http\Controllers\ViewController::class, 'home']);

Loading…
Cancel
Save