提交
5
public/static/bootstrap/css/bootstrap-icons.min.css
vendored
Normal file
6
public/static/bootstrap/css/bootstrap.min.css
vendored
Normal file
BIN
public/static/bootstrap/css/fonts/bootstrap-icons.woff
Normal file
BIN
public/static/bootstrap/css/fonts/bootstrap-icons.woff2
Normal file
7
public/static/bootstrap/js/bootstrap.bundle.min.js
vendored
Normal file
373
public/static/css/datetimepicker.css
Normal file
@@ -0,0 +1,373 @@
|
||||
/*!
|
||||
* Datetimepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
.datetimepicker {
|
||||
padding: 4px;
|
||||
margin-top: 1px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
/*.dow {
|
||||
border-top: 1px solid #ddd !important;
|
||||
}*/
|
||||
|
||||
}
|
||||
.datetimepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datetimepicker.datetimepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datetimepicker.datetimepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datetimepicker-dropdown, .datetimepicker-dropdown-left {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown-top"]:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-top: 7px solid #ccc;
|
||||
border-top-color: rgba(0, 0, 0, 0.2);
|
||||
border-bottom: 0;
|
||||
}
|
||||
[class*=" datetimepicker-dropdown-top"]:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-top: 6px solid #ffffff;
|
||||
border-bottom: 0;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-left:before {
|
||||
top: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-left:after {
|
||||
top: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-right:before {
|
||||
top: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-bottom-right:after {
|
||||
top: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-left:before {
|
||||
bottom: -7px;
|
||||
right: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-left:after {
|
||||
bottom: -6px;
|
||||
right: 7px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-right:before {
|
||||
bottom: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datetimepicker-dropdown-top-right:after {
|
||||
bottom: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datetimepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datetimepicker.minutes div.datetimepicker-minutes {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.hours div.datetimepicker-hours {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.days div.datetimepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.months div.datetimepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker.years div.datetimepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datetimepicker table {
|
||||
margin: 0;
|
||||
}
|
||||
.datetimepicker td,
|
||||
.datetimepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
padding: 4px 5px;
|
||||
border-radius: 20px;
|
||||
}
|
||||
.table-striped .datetimepicker table tr td,
|
||||
.table-striped .datetimepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datetimepicker table tr td.minute:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.hour:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.day:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker table tr td.old,
|
||||
.datetimepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datetimepicker table tr td.disabled,
|
||||
.datetimepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td.today,
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover {
|
||||
background-color: #fde19a;
|
||||
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
.datetimepicker table tr td.today:hover,
|
||||
.datetimepicker table tr td.today:hover:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover,
|
||||
.datetimepicker table tr td.today.disabled:hover:hover,
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active,
|
||||
.datetimepicker table tr td.today.disabled,
|
||||
.datetimepicker table tr td.today:hover.disabled,
|
||||
.datetimepicker table tr td.today.disabled.disabled,
|
||||
.datetimepicker table tr td.today.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.today[disabled],
|
||||
.datetimepicker table tr td.today:hover[disabled],
|
||||
.datetimepicker table tr td.today.disabled[disabled],
|
||||
.datetimepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
.datetimepicker table tr td.today:active,
|
||||
.datetimepicker table tr td.today:hover:active,
|
||||
.datetimepicker table tr td.today.disabled:active,
|
||||
.datetimepicker table tr td.today.disabled:hover:active,
|
||||
.datetimepicker table tr td.today.active,
|
||||
.datetimepicker table tr td.today:hover.active,
|
||||
.datetimepicker table tr td.today.disabled.active,
|
||||
.datetimepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069 \9;
|
||||
}
|
||||
.datetimepicker table tr td.active,
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover {
|
||||
/* background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);*/
|
||||
background: #4BBD00;
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
border-radius: 20px;
|
||||
}
|
||||
.datetimepicker table tr td.active:hover,
|
||||
.datetimepicker table tr td.active:hover:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover,
|
||||
.datetimepicker table tr td.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active,
|
||||
.datetimepicker table tr td.active.disabled,
|
||||
.datetimepicker table tr td.active:hover.disabled,
|
||||
.datetimepicker table tr td.active.disabled.disabled,
|
||||
.datetimepicker table tr td.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td.active[disabled],
|
||||
.datetimepicker table tr td.active:hover[disabled],
|
||||
.datetimepicker table tr td.active.disabled[disabled],
|
||||
.datetimepicker table tr td.active.disabled:hover[disabled] {
|
||||
/*background-color: #0044cc;*/
|
||||
background: #4BBD00;
|
||||
}
|
||||
.datetimepicker table tr td.active:active,
|
||||
.datetimepicker table tr td.active:hover:active,
|
||||
.datetimepicker table tr td.active.disabled:active,
|
||||
.datetimepicker table tr td.active.disabled:hover:active,
|
||||
.datetimepicker table tr td.active.active,
|
||||
.datetimepicker table tr td.active:hover.active,
|
||||
.datetimepicker table tr td.active.disabled.active,
|
||||
.datetimepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_am,
|
||||
.datetimepicker .datetimepicker-hours table tr td span.hour_pm {
|
||||
width: 14.6%;
|
||||
}
|
||||
.datetimepicker .datetimepicker-hours fieldset legend,
|
||||
.datetimepicker .datetimepicker-minutes fieldset legend {
|
||||
margin-bottom: inherit;
|
||||
line-height: 30px;
|
||||
}
|
||||
.datetimepicker .datetimepicker-minutes span {
|
||||
height: 26px;
|
||||
line-height: 26px;
|
||||
}
|
||||
.datetimepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datetimepicker table tr td span.disabled,
|
||||
.datetimepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datetimepicker table tr td span.active,
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover {
|
||||
/* background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);*/
|
||||
background: #4BBD00;
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datetimepicker table tr td span.active:hover,
|
||||
.datetimepicker table tr td span.active:hover:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover,
|
||||
.datetimepicker table tr td span.active.disabled:hover:hover,
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled,
|
||||
.datetimepicker table tr td span.active:hover.disabled,
|
||||
.datetimepicker table tr td span.active.disabled.disabled,
|
||||
.datetimepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datetimepicker table tr td span.active[disabled],
|
||||
.datetimepicker table tr td span.active:hover[disabled],
|
||||
.datetimepicker table tr td span.active.disabled[disabled],
|
||||
.datetimepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #4BBD00;
|
||||
}
|
||||
.datetimepicker table tr td span.active:active,
|
||||
.datetimepicker table tr td span.active:hover:active,
|
||||
.datetimepicker table tr td span.active.disabled:active,
|
||||
.datetimepicker table tr td span.active.disabled:hover:active,
|
||||
.datetimepicker table tr td span.active.active,
|
||||
.datetimepicker table tr td span.active:hover.active,
|
||||
.datetimepicker table tr td span.active.disabled.active,
|
||||
.datetimepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datetimepicker table tr td span.old {
|
||||
color: #999999;
|
||||
}
|
||||
.datetimepicker th.switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th,
|
||||
.datetimepicker tfoot tr:first-child th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datetimepicker thead tr:first-child th:hover,
|
||||
.datetimepicker tfoot tr:first-child th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i {
|
||||
cursor: pointer;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
232
public/static/css/dropdown.css
Normal file
@@ -0,0 +1,232 @@
|
||||
.caret {
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
vertical-align: top;
|
||||
border-top: 4px solid #000000;
|
||||
border-right: 4px solid transparent;
|
||||
border-left: 4px solid transparent;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.dropdown .caret {
|
||||
margin-top: 8px;
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 1000;
|
||||
display: none;
|
||||
float: left;
|
||||
min-width: 160px;
|
||||
padding: 10px;
|
||||
margin: 2px 0 0;
|
||||
list-style: none;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
*border-right-width: 2px;
|
||||
*border-bottom-width: 2px;
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||
-webkit-background-clip: padding-box;
|
||||
-moz-background-clip: padding;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
.dropdown-menu.pull-right {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
.dropdown-menu .divider {
|
||||
*width: 100%;
|
||||
height: 1px;
|
||||
margin: 9px 1px;
|
||||
*margin: -5px 0 5px;
|
||||
overflow: hidden;
|
||||
background-color: #e5e5e5;
|
||||
border-bottom: 1px solid #ffffff;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > a {
|
||||
display: block;
|
||||
padding: 3px 20px;
|
||||
clear: both;
|
||||
font-weight: normal;
|
||||
line-height: 20px;
|
||||
color: #333333;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus,
|
||||
.dropdown-submenu:hover > a,
|
||||
.dropdown-submenu:focus > a {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background-color: #0081c2;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0077b3);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0077b3);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
|
||||
}
|
||||
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background-color: #0081c2;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0077b3);
|
||||
background-image: linear-gradient(to bottom, #0088cc, #0077b3);
|
||||
background-repeat: repeat-x;
|
||||
outline: 0;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
|
||||
}
|
||||
|
||||
.dropdown-menu > .disabled > a,
|
||||
.dropdown-menu > .disabled > a:hover,
|
||||
.dropdown-menu > .disabled > a:focus {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.dropdown-menu > .disabled > a:hover,
|
||||
.dropdown-menu > .disabled > a:focus {
|
||||
text-decoration: none;
|
||||
cursor: default;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
|
||||
.open {
|
||||
*z-index: 1000;
|
||||
}
|
||||
|
||||
.open > .dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropdown-backdrop {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 990;
|
||||
}
|
||||
|
||||
.pull-right > .dropdown-menu {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
.dropup .caret,
|
||||
.navbar-fixed-bottom .dropdown .caret {
|
||||
border-top: 0;
|
||||
border-bottom: 4px solid #000000;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.dropup .dropdown-menu,
|
||||
.navbar-fixed-bottom .dropdown .dropdown-menu {
|
||||
top: auto;
|
||||
bottom: 100%;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.dropdown-submenu {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dropdown-submenu > .dropdown-menu {
|
||||
top: 0;
|
||||
left: 100%;
|
||||
margin-top: -6px;
|
||||
margin-left: -1px;
|
||||
-webkit-border-radius: 0 6px 6px 6px;
|
||||
-moz-border-radius: 0 6px 6px 6px;
|
||||
border-radius: 0 6px 6px 6px;
|
||||
}
|
||||
|
||||
.dropdown-submenu:hover > .dropdown-menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.dropup .dropdown-submenu > .dropdown-menu {
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: -2px;
|
||||
-webkit-border-radius: 5px 5px 5px 0;
|
||||
-moz-border-radius: 5px 5px 5px 0;
|
||||
border-radius: 5px 5px 5px 0;
|
||||
}
|
||||
|
||||
.dropdown-submenu > a:after {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-top: 5px;
|
||||
margin-right: -10px;
|
||||
border-color: transparent;
|
||||
border-left-color: #cccccc;
|
||||
border-style: solid;
|
||||
border-width: 5px 0 5px 5px;
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.dropdown-submenu:hover > a:after {
|
||||
border-left-color: #ffffff;
|
||||
}
|
||||
|
||||
.dropdown-submenu.pull-left {
|
||||
float: none;
|
||||
}
|
||||
|
||||
.dropdown-submenu.pull-left > .dropdown-menu {
|
||||
left: -100%;
|
||||
margin-left: 10px;
|
||||
-webkit-border-radius: 6px 0 6px 6px;
|
||||
-moz-border-radius: 6px 0 6px 6px;
|
||||
border-radius: 6px 0 6px 6px;
|
||||
}
|
||||
|
||||
.dropdown .dropdown-menu .nav-header {
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
|
||||
[class^="icon-"], [class*=" icon-"] {
|
||||
display: inline-block;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
margin-top: 1px;
|
||||
line-height: 14px;
|
||||
vertical-align: text-top;
|
||||
background-image: url("../image/glyphicons-halflings.png");
|
||||
background-position: 14px 14px;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
.icon-arrow-left {
|
||||
background-position: -240px -96px;
|
||||
}
|
||||
.icon-arrow-right {
|
||||
background-position: -264px -96px;
|
||||
}
|
||||
206
public/static/css/index.css
Normal file
@@ -0,0 +1,206 @@
|
||||
|
||||
.swiper{
|
||||
height: auto !important;
|
||||
background: unset !important;
|
||||
}
|
||||
.swiper-slide::after {
|
||||
/*content: '';*/
|
||||
position: absolute;
|
||||
top: 0; /* 根据需要调整阴影的位置 */
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(93, 77, 77, 0.5); /* 阴影颜色 */
|
||||
box-shadow: 0 0 20px rgba(148, 118, 118, 0.5); /* 给伪元素添加阴影 */
|
||||
pointer-events: none; /* 防止伪元素影响鼠标事件 */
|
||||
}
|
||||
|
||||
.services-table th {
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
.services-table table tbody tr td {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.services-table table tbody tr td.cell--success {
|
||||
color: #22b573;
|
||||
background-color: #f1fff4;
|
||||
}
|
||||
|
||||
.services-table table {
|
||||
border-collapse: separate;
|
||||
border-spacing: 0;
|
||||
position: relative;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.services-table {
|
||||
width: 75%;
|
||||
margin: 0 auto;
|
||||
padding: 0 5px;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
font-stretch: normal;
|
||||
font-style: normal;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.a-title {
|
||||
margin-bottom: 32px;
|
||||
color: #151423;
|
||||
font-weight: 600;
|
||||
font-size: 32px;
|
||||
letter-spacing: .2px;
|
||||
}
|
||||
|
||||
/*@media (min-width: 1800px) {*/
|
||||
/* .advantages-section .content1 {*/
|
||||
/* width: 1170px;*/
|
||||
/* }*/
|
||||
/*}*/
|
||||
.advantages-section .content1 .advantages-container {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.advantages-section .content1 .advantages-container .advantages .advantage {
|
||||
display: flex;
|
||||
/*flex-direction: column;*/
|
||||
/*width: 100%;*/
|
||||
list-style: none;
|
||||
align-items: center;
|
||||
margin-bottom: 32px;
|
||||
flex-basis: 30%;
|
||||
}
|
||||
|
||||
.advantages-section .content1 .title {
|
||||
margin-bottom: 32px;
|
||||
font-size: 32px;
|
||||
font-weight: 600;
|
||||
font-family: Raleway, sans-serif;
|
||||
letter-spacing: .2px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.advantages-section .content1 .advantages-container .advantages {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.advantages-section .content1 .advantages-container .advantages .advantage .text {
|
||||
font-family: Roboto;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
line-height: 1.5;
|
||||
letter-spacing: .2px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.advantages-section .content1 {
|
||||
max-width: 1110px;
|
||||
/*display: flex;*/
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.advantages-section {
|
||||
background: #153854;
|
||||
padding: 20px 5px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.middle-box2 {
|
||||
/*width: 60%;*/
|
||||
}
|
||||
|
||||
.desc-box {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
@media (max-width: 820px) {
|
||||
.header-services{
|
||||
width: 50%;
|
||||
}
|
||||
.middle-box2 {
|
||||
width: 95% !important;
|
||||
}
|
||||
.middle-box2 .right-box .item{
|
||||
padding: 10px 10px;
|
||||
}
|
||||
.middle-box2 h2 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
.middle-box2 a {
|
||||
padding: 13px 20px;
|
||||
}
|
||||
.advantages-section .content1 .title{
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.desc-box {
|
||||
width: 90% !important;
|
||||
}
|
||||
|
||||
.info {
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
height: 84px;
|
||||
}
|
||||
|
||||
.services-table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.evus-main {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.advantages-section .content1 .advantages-container .advantages {
|
||||
flex-direction: column;
|
||||
height: 160px;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.advantages-section .content1 {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.dj-btn {
|
||||
width: 300px;
|
||||
height: 60px;
|
||||
background: linear-gradient(180deg, var(--main-color) 0, var(--main-color) 100%);
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 14px;
|
||||
margin-top: 20px;
|
||||
font-size: 20px;
|
||||
letter-spacing: .2px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.dj-btn:hover {
|
||||
background: #a83723;
|
||||
}
|
||||
|
||||
.djcon {
|
||||
margin: 10% auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.djcon p {
|
||||
color: #fff;
|
||||
font-family: cursive;
|
||||
text-transform: none;
|
||||
text-shadow: 0 2px 8px rgba(0, 0, 0, .041);
|
||||
font-weight: 600;
|
||||
line-height: 1.25;
|
||||
letter-spacing: .2px;
|
||||
font-size: 32px;
|
||||
}
|
||||
143
public/static/css/invoice.css
Normal file
@@ -0,0 +1,143 @@
|
||||
.layui-form-label {
|
||||
width: 110px;
|
||||
}
|
||||
.layui-form{
|
||||
margin-right: 10px;
|
||||
}
|
||||
.login-bg{
|
||||
background: #f0f0f0;
|
||||
}
|
||||
.login-box{
|
||||
width: 460px;
|
||||
height: auto;
|
||||
padding: 40px 0 20px;
|
||||
background: #fff;
|
||||
box-shadow: 0 0 20px rgba(0,0,0,0.2);
|
||||
border-radius: 20px;
|
||||
position: relative;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.login-logo{
|
||||
width: 180px;
|
||||
height: 70px;
|
||||
text-align: center;
|
||||
background: url(/static/home/images/loginbg3.png) no-repeat;
|
||||
background-size: 180px 60px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: -90px;
|
||||
top: 0;
|
||||
margin-top: -30px;
|
||||
color: #fff;
|
||||
line-height: 60px;
|
||||
}
|
||||
.login-con{
|
||||
padding: 10px 20px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.login-row{
|
||||
width: 100%;
|
||||
min-height: 40px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin-top: 10px;
|
||||
line-height: 40px;
|
||||
}
|
||||
.login-row input{
|
||||
padding: 0;
|
||||
box-shadow: none!important;
|
||||
font-size: 16px;
|
||||
}
|
||||
.login-row label{
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
.login-row .login-text{
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
background: none;
|
||||
border: none;
|
||||
outline: none;
|
||||
line-height: 40px;
|
||||
}
|
||||
.login-row .login-text2{
|
||||
width: 75%;
|
||||
float: left;
|
||||
}
|
||||
.login-row .login-get{
|
||||
float: right;
|
||||
line-height: 36px;
|
||||
height: 36px;
|
||||
width: 25%;
|
||||
background: #14286d;
|
||||
border-radius: 5px;
|
||||
border: none;
|
||||
outline: none;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.login-row .login-get:disabled{
|
||||
background: #999;
|
||||
}
|
||||
.login-row .login-get:hover{
|
||||
opacity: 0.8;
|
||||
}
|
||||
.login-row .login-btn{
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
background: #14286d;
|
||||
border: none;
|
||||
outline: none;
|
||||
color: #fff;
|
||||
font-size: 18px;
|
||||
border-radius: 10px;
|
||||
margin-top: 15px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.login-row .login-btn:hover{
|
||||
opacity: 0.8;
|
||||
}
|
||||
.login-row a{
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
font-size: 14px;
|
||||
line-height: 40px;
|
||||
}
|
||||
.login-row .checkbox-inline input[type="checkbox"]:checked:after{
|
||||
top: 5px;
|
||||
}
|
||||
@media(max-width:700px) {
|
||||
.login-box{
|
||||
width: 350px;
|
||||
margin-bottom: 10px;
|
||||
margin-top: 60px;
|
||||
}
|
||||
.login-row{ font-size: 14px;}
|
||||
.login-row .login-text2{ width: 55%;}
|
||||
.login-row .login-get{ width: 35%;}
|
||||
}
|
||||
.layui-btn{
|
||||
background: #14286d;
|
||||
}
|
||||
.in-img{
|
||||
text-align: center;
|
||||
}
|
||||
.addBox {
|
||||
width: 90%;
|
||||
text-align: right;
|
||||
margin-top: 5px;
|
||||
}
|
||||
.addBox .layui-icon {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
cursor: pointer;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.input-button {
|
||||
width: 40%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.layui-layer-content img{
|
||||
width: 150px;
|
||||
}
|
||||
6
public/static/css/jquery-weui.min.css
vendored
Normal file
143
public/static/css/jump.css
Normal file
@@ -0,0 +1,143 @@
|
||||
.jump-page {
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: #f5f7fb;
|
||||
}
|
||||
|
||||
.jump-shell {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
max-width: 1140px;
|
||||
margin: 0 auto;
|
||||
padding: 48px 15px 64px;
|
||||
}
|
||||
|
||||
.jump-panel {
|
||||
display: grid;
|
||||
grid-template-columns: 64px minmax(0, 1fr) auto;
|
||||
align-items: center;
|
||||
gap: 22px;
|
||||
padding: 30px 34px;
|
||||
background: #fff;
|
||||
border: 1px solid #e8edf3;
|
||||
border-left: 5px solid var(--main-color);
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 18px 45px rgba(20, 34, 54, .08);
|
||||
}
|
||||
|
||||
.jump-icon {
|
||||
width: 54px;
|
||||
height: 54px;
|
||||
border-radius: 50%;
|
||||
background: var(--main-color);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.jump-icon:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 18px;
|
||||
top: 14px;
|
||||
width: 16px;
|
||||
height: 24px;
|
||||
border: solid #fff;
|
||||
border-width: 0 4px 4px 0;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.jump-panel--error {
|
||||
border-left-color: #d63622;
|
||||
}
|
||||
|
||||
.jump-panel--error .jump-icon {
|
||||
background: #d63622;
|
||||
}
|
||||
|
||||
.jump-panel--error .jump-icon:before,
|
||||
.jump-panel--error .jump-icon:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 17px;
|
||||
top: 25px;
|
||||
width: 20px;
|
||||
height: 4px;
|
||||
background: #fff;
|
||||
border: 0;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.jump-panel--error .jump-icon:after {
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
|
||||
.jump-content {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.jump-message {
|
||||
margin: 0 0 8px;
|
||||
color: #172033;
|
||||
font-size: 24px;
|
||||
line-height: 1.35;
|
||||
font-weight: 700;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.jump-countdown {
|
||||
margin: 0;
|
||||
color: #5f6977;
|
||||
font-size: 15px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.jump-countdown span {
|
||||
color: var(--main-color);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.jump-actions {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.jump-button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 132px;
|
||||
min-height: 44px;
|
||||
padding: 0 22px;
|
||||
color: #fff;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
background: var(--main-color);
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.jump-button:hover {
|
||||
color: #fff;
|
||||
opacity: .92;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
.jump-shell {
|
||||
padding: 28px 15px 42px;
|
||||
}
|
||||
|
||||
.jump-panel {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 16px;
|
||||
padding: 28px 22px;
|
||||
}
|
||||
|
||||
.jump-message {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.jump-actions {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
}
|
||||
1
public/static/css/layer.css
Normal file
156
public/static/css/lookup.css
Normal file
@@ -0,0 +1,156 @@
|
||||
.layui-infor {
|
||||
float: left;
|
||||
font-size: 12px;
|
||||
margin-top: 5px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.content {
|
||||
padding: 0px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
|
||||
.layui-form-checkbox[lay-skin="primary"] div {
|
||||
white-space: normal !important;
|
||||
word-wrap: break-word;
|
||||
width: 300px; /* 设置一个固定宽度 */
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.layui-form-radio > * {
|
||||
display: inline;
|
||||
vertical-align: middle;
|
||||
font-size: 14px;
|
||||
}
|
||||
.layui-container{
|
||||
height: auto;
|
||||
}
|
||||
.layui-table-header{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
padding-top: 15px;
|
||||
background: #fff;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
/* 自定义样式使标签在上方 */
|
||||
.label-above .layui-form-label {
|
||||
display: block;
|
||||
float: none;
|
||||
text-align: left;
|
||||
padding: 0 0 5px 0;
|
||||
width: auto !important;
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
color: #505050;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.layui-form input {
|
||||
height: 45px;
|
||||
padding: 6px 12px;
|
||||
font-size: 14px;
|
||||
line-height: 1.428571429;
|
||||
color: #555;
|
||||
background-color: #fff;
|
||||
background-image: none;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.layui-btn {
|
||||
background: var(--main-color);
|
||||
border: 1px solid var(--main-color);
|
||||
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .5);
|
||||
border-radius: 5px;
|
||||
font-size: 22px;
|
||||
color: #FFF;
|
||||
letter-spacing: 0;
|
||||
padding: 5px 20px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.layui-input-wrap .layui-input-prefix + .layui-input, .layui-input-wrap .layui-input-prefix ~ * .layui-input {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control, fieldset[disabled] input[type=text], fieldset[disabled] input[type=email], fieldset[disabled] input[type=number], fieldset[disabled] input[type=password], fieldset[disabled] input[type=phone], fieldset[disabled] select, input[disabled][type=text], input[disabled][type=email], input[disabled][type=number], input[disabled][type=password], input[disabled][type=phone], input[readonly][type=text], input[readonly][type=email], input[readonly][type=number], input[readonly][type=password], input[readonly][type=phone], select[disabled], select[readonly] {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.layui-input-block {
|
||||
margin-left: 0;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
#confirm {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#confirm .item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#confirm .item div {
|
||||
margin: 0px 10px;
|
||||
overflow-wrap: break-word;
|
||||
/*就是下面这一句,好像网上没有这一个的说明,但是浏览器都支持*/
|
||||
word-break: break-word;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
#Form2 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.layui-form-checked[lay-skin=primary] > i {
|
||||
border: 1px solid #438CBC;
|
||||
background: #438CBC;
|
||||
border-color: #438CBC !important;
|
||||
}
|
||||
|
||||
.serviceprice {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: unset !important;
|
||||
}
|
||||
|
||||
.layui-form-radio:hover > *, .layui-form-radioed, .layui-form-radioed > i {
|
||||
color: var(--main-color) !important;
|
||||
}
|
||||
|
||||
.container-tit {
|
||||
width: 100%;
|
||||
font-size: 20px;
|
||||
color: var(--main-color);
|
||||
line-height: 50px;
|
||||
}
|
||||
|
||||
.container-con {
|
||||
width: 100%;
|
||||
line-height: 24px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.layui-table thead {
|
||||
color: #fff;
|
||||
background: var(--main-color);
|
||||
}
|
||||
.wrap {
|
||||
min-height: 100vh; /* 关键点:确保至少填满整个视口高度 */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.content {
|
||||
flex: 1;
|
||||
}
|
||||
3
public/static/css/main.css
Normal file
@@ -0,0 +1,3 @@
|
||||
:root {
|
||||
--main-color: #00469d;
|
||||
}
|
||||
697
public/static/css/newin.css
Normal file
@@ -0,0 +1,697 @@
|
||||
|
||||
:root{
|
||||
--brand: #5e63ae;
|
||||
--brand-dark: #083a65;
|
||||
--accent: #f05a28;
|
||||
--text: #0f172a;
|
||||
--muted: #64748b;
|
||||
--card: #ffffff;
|
||||
--line: rgba(15,23,42,.10);
|
||||
--radius: 14px;
|
||||
--main-color:#5e63ae
|
||||
}
|
||||
html, body{
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
body{
|
||||
min-height: 100vh;
|
||||
font-family: "Microsoft YaHei","PingFang SC",system-ui,-apple-system,Segoe UI,Roboto,Arial;
|
||||
color: var(--text);
|
||||
background: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.brand-wrap{
|
||||
display:flex; align-items:center; gap:10px;
|
||||
color:#fff; text-decoration:none;
|
||||
}
|
||||
.brand-badge{
|
||||
width:34px; height:34px; border-radius:50%;
|
||||
background: rgba(255,255,255,.18);
|
||||
display:flex; align-items:center; justify-content:center;
|
||||
border: 1px solid rgba(255,255,255,.28);
|
||||
}
|
||||
.brand-title{ font-weight:700; letter-spacing:.2px; line-height:1.1; }
|
||||
.brand-sub{ font-size:12px; opacity:.85; }
|
||||
|
||||
.navbar .nav-link{ color: rgba(255,255,255,.88); }
|
||||
.navbar .nav-link:hover{ color:#fff; }
|
||||
.lang-btn{
|
||||
border: 1px solid rgba(255,255,255,.35) !important;
|
||||
color:#fff !important;
|
||||
background: rgba(255,255,255,.08) !important;
|
||||
}
|
||||
|
||||
/* 防止品牌文字把右侧挤下去 */
|
||||
.brand-wrap{ display:flex; align-items:center; gap:10px; min-width:0; }
|
||||
.brand-title,.brand-sub{ white-space:nowrap; }
|
||||
|
||||
/* ===== Hero ===== */
|
||||
.hero{
|
||||
position: relative;
|
||||
min-height: clamp(360px, 54vh, 560px);
|
||||
padding: clamp(40px, 6vh, 72px) 0 clamp(28px, 4.5vh, 56px);
|
||||
background:
|
||||
url("../image/mysbg.png") center top / cover no-repeat;
|
||||
display:flex;
|
||||
align-items:stretch;
|
||||
overflow: hidden;
|
||||
}
|
||||
.hero .container{
|
||||
position:relative;
|
||||
z-index:1;
|
||||
display:flex;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.hero-card{
|
||||
width: min(480px, 90vw);
|
||||
margin: 0 auto;
|
||||
background: rgba(255,255,255,.78);
|
||||
border: 1px solid rgba(255,255,255,.66);
|
||||
border-radius: 20px;
|
||||
box-shadow: 0 24px 50px rgba(2,6,23,.24);
|
||||
padding: 24px 24px 20px;
|
||||
backdrop-filter: blur(14px);
|
||||
text-align: center;
|
||||
}
|
||||
.hero-card h1{
|
||||
font-size: clamp(28px, 3vw, 44px);
|
||||
font-weight: 800;
|
||||
margin: 0 0 10px 0;
|
||||
letter-spacing: .2px;
|
||||
line-height: 1.15;
|
||||
}
|
||||
.hero-card p{
|
||||
margin: 0 0 18px 0;
|
||||
color: rgba(15,23,42,.80);
|
||||
line-height:1.7;
|
||||
font-size: 15px;
|
||||
text-wrap: balance;
|
||||
}
|
||||
.btn-primary-brand{
|
||||
--bs-btn-bg: var(--brand);
|
||||
--bs-btn-border-color: var(--brand);
|
||||
--bs-btn-hover-bg: var(--brand-dark);
|
||||
--bs-btn-hover-border-color: var(--brand-dark);
|
||||
--bs-btn-padding-x: 18px;
|
||||
--bs-btn-padding-y: 10px;
|
||||
border-radius: 10px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
@media (min-width: 1600px){
|
||||
.hero{
|
||||
min-height: 660px;
|
||||
background-position: center 14%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) and (max-width: 1599.98px){
|
||||
.hero{
|
||||
min-height: 540px;
|
||||
background-position: center 10%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) and (max-width: 1199.98px){
|
||||
.hero{
|
||||
min-height: 500px;
|
||||
background-position: 50% 8%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991.98px){
|
||||
.hero{
|
||||
min-height: 380px;
|
||||
padding: 34px 0 24px;
|
||||
background-position: 52% top;
|
||||
}
|
||||
|
||||
.hero-card{
|
||||
width: min(440px, 92vw);
|
||||
padding: 20px 18px 18px;
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.hero-card p{
|
||||
font-size: 14px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 575.98px){
|
||||
.hero{
|
||||
min-height: 340px;
|
||||
padding: 24px 0 16px;
|
||||
background-position: 56% top;
|
||||
}
|
||||
|
||||
.hero-card{
|
||||
width: calc(100vw - 28px);
|
||||
padding: 18px 16px 16px;
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.hero-card h1{
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== Notice ===== */
|
||||
.notice{
|
||||
padding: 14px 0;
|
||||
border-bottom: 1px solid var(--line);
|
||||
}
|
||||
.notice .tip-title{
|
||||
color: #dc2626;
|
||||
font-weight: 800;
|
||||
margin-right: 6px;
|
||||
}
|
||||
.notice p{
|
||||
margin:0;
|
||||
color: rgba(15,23,42,.70);
|
||||
font-size: 13px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
/* ===== Section common ===== */
|
||||
.section{ padding: 44px 0; }
|
||||
.section-title{
|
||||
text-align:center;
|
||||
font-size: 18px;
|
||||
font-weight: 900;
|
||||
color: var(--brand);
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
/* ===== Flow ===== */
|
||||
.flow-wrap{
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius);
|
||||
background: #fff;
|
||||
padding: 22px 18px;
|
||||
}
|
||||
.flow-step{ text-align:center; padding: 8px 10px; }
|
||||
.flow-ico{
|
||||
width: 56px; height: 56px;
|
||||
margin: 0 auto 10px;
|
||||
border-radius: 14px;
|
||||
background: rgba(11,95,168,.08);
|
||||
border: 1px solid rgba(11,95,168,.18);
|
||||
display:flex; align-items:center; justify-content:center;
|
||||
color: var(--brand);
|
||||
font-size: 26px;
|
||||
}
|
||||
.flow-step h6{ margin:0 0 6px 0; font-weight: 900; }
|
||||
.flow-step p{ margin:0; color: var(--muted); font-size: 13px; }
|
||||
.flow-arrow{
|
||||
display:flex; align-items:center; justify-content:center;
|
||||
color: rgba(15,23,42,.25);
|
||||
font-size: 24px;
|
||||
}
|
||||
@media (max-width: 767px){
|
||||
.flow-arrow{ display:none; }
|
||||
}
|
||||
.brand-badge-logo{
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
background: url("../image/tdac_icon.png") center/contain no-repeat;
|
||||
}
|
||||
|
||||
/* ===== Intro ===== */
|
||||
.intro-card{
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius);
|
||||
padding: 18px 18px 16px;
|
||||
background: #fff;
|
||||
}
|
||||
.intro-card h2{
|
||||
font-size: 26px;
|
||||
font-weight: 900;
|
||||
color: var(--brand);
|
||||
margin: 4px 0 10px 0;
|
||||
}
|
||||
.intro-card p{
|
||||
color: rgba(15,23,42,.72);
|
||||
line-height: 1.8;
|
||||
font-size: 14px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.btn-outline-brand{
|
||||
border: 1px solid rgba(11,95,168,.30);
|
||||
color: var(--brand);
|
||||
font-weight: 800;
|
||||
border-radius: 10px;
|
||||
padding: 10px 16px;
|
||||
}
|
||||
.btn-outline-brand:hover{
|
||||
background: rgba(11,95,168,.08);
|
||||
color: var(--brand-dark);
|
||||
border-color: rgba(11,95,168,.42);
|
||||
}
|
||||
|
||||
/* ===== Why us ===== */
|
||||
.why-title{
|
||||
text-align:center;
|
||||
font-size: 22px;
|
||||
font-weight: 1000;
|
||||
margin: 6px 0 4px;
|
||||
}
|
||||
.why-sub{
|
||||
text-align:center;
|
||||
color: var(--muted);
|
||||
margin-bottom: 18px;
|
||||
font-size: 13px;
|
||||
}
|
||||
.feature{
|
||||
background: #f8fafc;
|
||||
border: 1px solid rgba(15,23,42,.06);
|
||||
border-radius: var(--radius);
|
||||
padding: 18px 16px;
|
||||
height: 100%;
|
||||
}
|
||||
.feature .fi{
|
||||
width: 44px; height: 44px;
|
||||
border-radius: 12px;
|
||||
background: #fff;
|
||||
border: 1px solid rgba(15,23,42,.08);
|
||||
display:flex; align-items:center; justify-content:center;
|
||||
margin: 0 auto 10px;
|
||||
color: rgba(15,23,42,.70);
|
||||
font-size: 20px;
|
||||
}
|
||||
.feature h6{ text-align:center; font-weight: 900; margin: 0 0 6px; }
|
||||
.feature p{ text-align:center; margin: 0; color: var(--muted); font-size: 13px; line-height: 1.7; }
|
||||
|
||||
/* ===== 新增:套餐模块 ===== */
|
||||
.plan{
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius);
|
||||
background: #fff;
|
||||
padding: 18px 16px;
|
||||
height: 100%;
|
||||
}
|
||||
.plan .tag{
|
||||
display:inline-block;
|
||||
font-size: 12px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 999px;
|
||||
border: 1px solid rgba(11,95,168,.18);
|
||||
background: rgba(11,95,168,.08);
|
||||
color: rgba(15,23,42,.72);
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.plan h5{ font-weight: 1000; margin: 0 0 6px; }
|
||||
.plan .meta{ color: rgba(15,23,42,.60); font-size: 13px; }
|
||||
.plan ul{
|
||||
margin: 10px 0 0;
|
||||
padding-left: 18px;
|
||||
color: rgba(15,23,42,.72);
|
||||
font-size: 13px;
|
||||
line-height: 1.85;
|
||||
}
|
||||
.btn-accent{
|
||||
background: var(--accent);
|
||||
border-color: var(--accent);
|
||||
font-weight: 900;
|
||||
border-radius: 12px;
|
||||
padding: 12px 26px;
|
||||
box-shadow: 0 12px 28px rgba(240,90,40,.30);
|
||||
}
|
||||
.btn-accent:hover{ filter: brightness(.95); }
|
||||
|
||||
/* ===== 新增:FAQ ===== */
|
||||
.accordion-item{
|
||||
border: 1px solid rgba(15,23,42,.10);
|
||||
border-radius: 16px !important;
|
||||
overflow:hidden;
|
||||
background:#fff;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.accordion-button{ font-weight: 900; }
|
||||
.accordion-button:not(.collapsed){
|
||||
background: rgba(11,95,168,.08);
|
||||
color: var(--brand-dark);
|
||||
}
|
||||
|
||||
/* ===== Dark section ===== */
|
||||
.dark-section{
|
||||
background: var(--brand-dark);
|
||||
color: rgba(255,255,255,.88);
|
||||
padding: 54px 0;
|
||||
}
|
||||
.dark-section h3{
|
||||
text-align:center;
|
||||
font-weight: 1000;
|
||||
margin: 0 0 12px;
|
||||
font-size: 26px;
|
||||
color:#fff;
|
||||
}
|
||||
.dark-section p{
|
||||
text-align:center;
|
||||
margin: 0 auto;
|
||||
max-width: 980px;
|
||||
line-height: 1.9;
|
||||
font-size: 14px;
|
||||
color: rgba(255,255,255,.78);
|
||||
}
|
||||
|
||||
/* ===== Footer ===== */
|
||||
footer{
|
||||
margin-top: auto;
|
||||
flex-shrink: 0;
|
||||
background: #0b1220;
|
||||
color: rgba(255,255,255,.75);
|
||||
padding: 26px 0 18px;
|
||||
font-size: 12px;
|
||||
}
|
||||
footer a{ color: rgba(255,255,255,.78); text-decoration:none; }
|
||||
footer a:hover{ color:#fff; text-decoration:underline; }
|
||||
.footer-divider{ height:1px; background: rgba(255,255,255,.10); margin: 14px 0; }
|
||||
|
||||
/* ===== 新增:悬浮客服按钮 ===== */
|
||||
.float-help{
|
||||
position: fixed;
|
||||
right: 18px;
|
||||
bottom: 18px;
|
||||
z-index: 2000;
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
.float-btn{
|
||||
width: 46px; height: 46px;
|
||||
border-radius: 14px;
|
||||
border: 1px solid rgba(15,23,42,.12);
|
||||
background: #fff;
|
||||
box-shadow: 0 14px 30px rgba(2,6,23,.12);
|
||||
display:flex; align-items:center; justify-content:center;
|
||||
color: rgba(15,23,42,.75);
|
||||
}
|
||||
.float-btn:hover{ color: var(--brand); border-color: rgba(11,95,168,.25); }
|
||||
/* ===== Flow Stepper v2 ===== */
|
||||
.flow2{
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius);
|
||||
background:#fff;
|
||||
padding: 22px;
|
||||
}
|
||||
.flow2 .step{
|
||||
display:flex;
|
||||
gap:14px;
|
||||
position:relative;
|
||||
padding: 10px 0;
|
||||
}
|
||||
.flow2 .step:not(:last-child)::after{
|
||||
content:"";
|
||||
position:absolute;
|
||||
left: 18px;
|
||||
top: 52px;
|
||||
bottom: -6px;
|
||||
width:2px;
|
||||
background: rgba(11,95,168,.18);
|
||||
}
|
||||
.flow2 .badge-num{
|
||||
width: 38px;
|
||||
height: 38px;
|
||||
border-radius: 14px;
|
||||
background: rgba(11,95,168,.10);
|
||||
border:1px solid rgba(11,95,168,.20);
|
||||
display:flex;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
font-weight: 900;
|
||||
color: var(--brand);
|
||||
flex: 0 0 38px;
|
||||
}
|
||||
.flow2 .step h6{ margin: 2px 0 6px; font-weight: 900; }
|
||||
.flow2 .step p{
|
||||
margin:0;
|
||||
color: rgba(15,23,42,.70);
|
||||
font-size: 13px;
|
||||
line-height:1.8;
|
||||
}
|
||||
.flow2-side{
|
||||
border: 1px dashed rgba(11,95,168,.28);
|
||||
border-radius: var(--radius);
|
||||
padding: 16px 16px 14px;
|
||||
background: rgba(11,95,168,.04);
|
||||
height:100%;
|
||||
}
|
||||
.flow2-side .k{
|
||||
font-weight: 900;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.flow2-side .i{
|
||||
font-size: 13px;
|
||||
color: rgba(15,23,42,.70);
|
||||
line-height: 1.9;
|
||||
}
|
||||
|
||||
/* ===== Intro v2: 信息块更像官网 ===== */
|
||||
.intro2{
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius);
|
||||
background:#fff;
|
||||
overflow:hidden;
|
||||
}
|
||||
.intro2 .left{
|
||||
min-height: 240px;
|
||||
/*background: linear-gradient(120deg, rgba(11,95,168,.16), rgba(11,95,168,.03));*/
|
||||
position:relative;
|
||||
}
|
||||
.intro2 .left::before{
|
||||
content:"";
|
||||
position:absolute; inset:0;
|
||||
background: url("../image/malaixiya.jpg") center/contain no-repeat;
|
||||
opacity:.95;
|
||||
}
|
||||
.intro2 .right{
|
||||
padding: 18px 18px 16px;
|
||||
}
|
||||
.intro2 h2{
|
||||
font-size: 24px;
|
||||
font-weight: 1000;
|
||||
color: var(--brand);
|
||||
margin: 2px 0 10px;
|
||||
text-align: center;
|
||||
}
|
||||
.intro2 .bul{
|
||||
display:grid;
|
||||
gap:8px;
|
||||
margin: 10px 0 14px;
|
||||
}
|
||||
.intro2 .bul div{
|
||||
display:flex;
|
||||
gap:10px;
|
||||
color: rgba(15,23,42,.72);
|
||||
font-size: 13px;
|
||||
line-height:1.8;
|
||||
}
|
||||
.intro2 .bul i{ color: var(--brand); }
|
||||
/* ===== Top bar (clean) ===== */
|
||||
.topbar{
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1000;
|
||||
background: var(--brand);
|
||||
backdrop-filter: blur(8px);
|
||||
border-bottom: 1px solid rgba(255,255,255,.12);
|
||||
}
|
||||
|
||||
/* container:PC 单行不换行;手机允许换行让 #nav 到下一行 */
|
||||
.topbar .topbar-inner{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
/* 你现在的结构:topbar-head 里面是 brand + right */
|
||||
.topbar .topbar-head{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: auto; /* PC:不占满,避免把 #nav 顶下去 */
|
||||
flex: 0 0 auto;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.topbar .topbar-right{
|
||||
display:flex;
|
||||
align-items:center;
|
||||
gap: 8px;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
/* brand */
|
||||
.topbar .brand-wrap{
|
||||
display:flex;
|
||||
align-items:center;
|
||||
gap:10px;
|
||||
color:#fff;
|
||||
text-decoration:none;
|
||||
min-width: 0;
|
||||
}
|
||||
.topbar .brand-title{ font-weight:700; letter-spacing:.2px; line-height:1.1; }
|
||||
.topbar .brand-sub{ font-size:12px; opacity:.85; }
|
||||
.topbar .brand-title,
|
||||
.topbar .brand-sub{ white-space: nowrap; } /* 避免抖动 */
|
||||
|
||||
/* logo badge */
|
||||
.topbar .brand-badge{
|
||||
width:34px;
|
||||
height:34px;
|
||||
border-radius:50%;
|
||||
background: rgba(255,255,255,.18);
|
||||
display:flex;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
border: 1px solid rgba(255,255,255,.28);
|
||||
}
|
||||
.topbar .brand-badge-logo{
|
||||
background: url("../image/mdac_icon.png") center/contain no-repeat;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* nav link */
|
||||
.topbar .navbar .nav-link{ color: rgba(255,255,255,.88); }
|
||||
.topbar .navbar .nav-link:hover{ color:#fff; }
|
||||
|
||||
.topbar .lang-btn{
|
||||
border: 1px solid rgba(255,255,255,.35) !important;
|
||||
color:#fff !important;
|
||||
background: rgba(255,255,255,.08) !important;
|
||||
}
|
||||
.navbar-collapse{
|
||||
text-align: center;
|
||||
}
|
||||
/* PC:#nav 在同一行靠右 */
|
||||
@media (min-width: 1200px){
|
||||
.topbar .topbar-inner{
|
||||
flex-wrap: nowrap; /* 不换行 */
|
||||
}
|
||||
.topbar .navbar-collapse{
|
||||
flex: 1 1 auto;
|
||||
justify-content: flex-end; /* 菜单靠右 */
|
||||
}
|
||||
|
||||
/* PC 不需要右侧(手机语言 + 汉堡),避免空盒子影响对齐 */
|
||||
.topbar .topbar-right{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.contact-page{
|
||||
padding: 28px 0 50px;
|
||||
}
|
||||
/* 手机:brand +(语言+汉堡)一行,#nav 展开到下一行(不抖) */
|
||||
@media (max-width: 1199.98px){
|
||||
.topbar .topbar-inner{
|
||||
flex-wrap: wrap; /* 允许换行,让 #nav 到下一行 */
|
||||
padding-left: 2px !important; /* 贴边 */
|
||||
padding-right: 2px !important;
|
||||
}
|
||||
|
||||
/* 手机:topbar-head 占满一行,左右分布 */
|
||||
.topbar .topbar-head{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 手机:#nav 永远在下一行展开 */
|
||||
.topbar .navbar-collapse{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 右侧按钮统一高度对齐 */
|
||||
.topbar .lang-btn{
|
||||
height: 34px;
|
||||
line-height: 34px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.topbar .navbar-toggler{
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
line-height: 1;
|
||||
}
|
||||
.topbar .navbar-toggler-icon{
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ===== Why v2: 从网格改成“条目式” ===== */
|
||||
.why2-item{
|
||||
border: 1px solid rgba(15,23,42,.08);
|
||||
border-radius: var(--radius);
|
||||
padding: 14px 14px 12px;
|
||||
background: #fff;
|
||||
height:100%;
|
||||
display:flex;
|
||||
gap:12px;
|
||||
}
|
||||
.why2-ico{
|
||||
width: 42px; height:42px;
|
||||
border-radius: 14px;
|
||||
background: rgba(11,95,168,.08);
|
||||
border:1px solid rgba(11,95,168,.18);
|
||||
display:flex; align-items:center; justify-content:center;
|
||||
color: var(--brand);
|
||||
flex: 0 0 42px;
|
||||
font-size: 20px;
|
||||
}
|
||||
.why2-item h6{ margin: 0 0 4px; font-weight: 900; }
|
||||
.why2-item p{ margin:0; color: rgba(15,23,42,.70); font-size: 13px; line-height:1.75; }
|
||||
|
||||
/* ---- Passport upload icon button ---- */
|
||||
.passport-wrap{ position:relative; }
|
||||
.passport-upload{
|
||||
position:absolute;
|
||||
right: 8px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 44px;
|
||||
border-radius: 6px;
|
||||
background: rgba(21,56,84,.06);
|
||||
border: 1px solid rgba(21,56,84,.20);
|
||||
display:flex;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
cursor:pointer;
|
||||
}
|
||||
.passport-upload i{
|
||||
font-size: 22px;
|
||||
color: rgba(21,56,84,.85);
|
||||
}
|
||||
.passport-upload input[type="file"]{
|
||||
position:absolute;
|
||||
inset:0;
|
||||
opacity:0;
|
||||
cursor:pointer;
|
||||
}
|
||||
.passport-upload:hover{
|
||||
background: rgba(21,56,84,.10);
|
||||
border-color: rgba(21,56,84,.35);
|
||||
}
|
||||
|
||||
/* 真正的 file input 隐藏掉,不参与 hover */
|
||||
.passport-file{
|
||||
position:absolute;
|
||||
width:1px;
|
||||
height:1px;
|
||||
opacity:0;
|
||||
overflow:hidden;
|
||||
left:-9999px;
|
||||
}
|
||||
|
||||
/* label 就是按钮,cursor 一定是小手 */
|
||||
.passport-upload{ cursor:pointer; }
|
||||
.passport-upload .layui-icon{ pointer-events:none; }
|
||||
|
||||
|
||||
|
||||
|
||||
198
public/static/css/page-sqpay.css
Normal file
@@ -0,0 +1,198 @@
|
||||
body.sqpay-page {
|
||||
margin: 0;
|
||||
background: #f8f8f8;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.sqpay-layout {
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.sqpay-main {
|
||||
flex: 1;
|
||||
padding: 36px 0 64px;
|
||||
}
|
||||
|
||||
.sqpay-shell {
|
||||
width: min(1140px, calc(100% - 32px));
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.sqpay-card {
|
||||
border: 1px solid #e8e8e8;
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.sqpay-heading {
|
||||
padding: 14px 20px;
|
||||
background: var(--main-color);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.sqpay-title {
|
||||
margin: 0 0 6px;
|
||||
font-size: clamp(22px, 3vw, 30px);
|
||||
line-height: 1.2;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.sqpay-order {
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
line-height: 1.7;
|
||||
color: rgba(255, 255, 255, 0.92);
|
||||
}
|
||||
|
||||
.sqpay-amount {
|
||||
margin: 18px 20px 12px;
|
||||
padding: 12px 14px;
|
||||
border: 1px solid #e5e5e5;
|
||||
border-left: 4px solid var(--main-color);
|
||||
border-radius: 6px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.sqpay-amount-label {
|
||||
margin: 0;
|
||||
color: #666;
|
||||
font-size: 13px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.sqpay-amount-value {
|
||||
margin: 4px 0 0;
|
||||
color: #ff5722;
|
||||
font-size: clamp(24px, 3vw, 32px);
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.sqpay-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 2.1fr) minmax(0, 1fr);
|
||||
gap: 16px;
|
||||
padding: 10px 20px 20px;
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
.sqpay-method,
|
||||
.sqpay-notice {
|
||||
border: 1px solid #e8e8e8;
|
||||
border-radius: 6px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.sqpay-method-head {
|
||||
padding: 12px 14px;
|
||||
border-bottom: 1px solid #efefef;
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
.sqpay-method-title {
|
||||
margin: 0 0 8px;
|
||||
color: #333;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.sqpay-brand-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.sqpay-brand-list img {
|
||||
display: block;
|
||||
height: 20px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.sqpay-method-body {
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
#card-container {
|
||||
min-height: 52px;
|
||||
padding: 10px 12px;
|
||||
border: 1px solid #dcdcdc;
|
||||
border-radius: 6px;
|
||||
background: #fff;
|
||||
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
#card-container:focus-within {
|
||||
border-color: var(--main-color);
|
||||
box-shadow: 0 0 0 2px rgba(21, 56, 84, 0.12);
|
||||
}
|
||||
|
||||
.sqpay-pay-button {
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
margin-top: 12px;
|
||||
border: none;
|
||||
border-radius: 6px;
|
||||
background: var(--main-color);
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.sqpay-pay-button:hover {
|
||||
background: #102d42;
|
||||
}
|
||||
|
||||
.sqpay-pay-button:disabled {
|
||||
background: #a4b3bf;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.sqpay-notice {
|
||||
padding-bottom: 6px;
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
.sqpay-notice-head {
|
||||
margin: 0;
|
||||
padding: 12px 14px 8px;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
color: var(--main-color);
|
||||
}
|
||||
|
||||
.sqpay-notice-body {
|
||||
margin: 0;
|
||||
padding: 0 14px 10px;
|
||||
color: #555;
|
||||
font-size: 14px;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
.sqpay-main {
|
||||
padding: 26px 0 48px;
|
||||
}
|
||||
|
||||
.sqpay-shell {
|
||||
width: calc(100% - 20px);
|
||||
}
|
||||
|
||||
.sqpay-grid {
|
||||
grid-template-columns: 1fr;
|
||||
padding: 10px 12px 14px;
|
||||
}
|
||||
|
||||
.sqpay-heading {
|
||||
padding: 12px 14px;
|
||||
}
|
||||
|
||||
.sqpay-amount {
|
||||
margin: 12px;
|
||||
}
|
||||
}
|
||||
73
public/static/css/pcpay.css
Normal file
@@ -0,0 +1,73 @@
|
||||
body {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
.payment-container {
|
||||
max-width: 1140px;
|
||||
margin: 60px auto;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.payment-header {
|
||||
background-color: var(--main-color);
|
||||
color: white;
|
||||
padding: 10px 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.payment-info {
|
||||
padding: 15px;
|
||||
border-bottom: 1px solid #eee;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.payment-amount {
|
||||
color: #FF5722;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.payment-methods {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.qrcode-container {
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.qrcode-img {
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
border: 1px solid #ddd;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
.payment-logo {
|
||||
height: 40px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.payment-scan {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.dj-btn {
|
||||
width: 200px;
|
||||
height: 60px;
|
||||
background: linear-gradient(180deg, var(--main-color) 0, var(--main-color) 100%); color: #fff;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 14px;
|
||||
margin-top: 20px;
|
||||
font-size: 20px;
|
||||
font-family: Roboto;
|
||||
letter-spacing: .2px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.dj-btn:hover {
|
||||
background: linear-gradient(180deg, var(--main-color) 0, var(--main-color) 100%);
|
||||
}
|
||||
12
public/static/css/swiper.min.css
vendored
Normal file
450
public/static/css/tur_index.css
Normal file
@@ -0,0 +1,450 @@
|
||||
a:link, a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a {
|
||||
cursor: pointer;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.djcon {
|
||||
float: right;
|
||||
margin: -50px 68px 20px 20px;
|
||||
}
|
||||
|
||||
@media (max-width: 1110px) {
|
||||
.context2 {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
.pd-20 {
|
||||
padding: 20px;
|
||||
}
|
||||
.dj-box {
|
||||
float: right;
|
||||
width: 350px;
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
border-radius: 5px;
|
||||
padding: 60px 20px;
|
||||
}
|
||||
.dj-box .dj-tabs {
|
||||
height: 60px;
|
||||
color: #ffffff;
|
||||
display: flex;
|
||||
}
|
||||
.dj-tabs .tab {
|
||||
line-height: 60px;
|
||||
width: 25%;
|
||||
text-align: center;
|
||||
background-color: #205493;
|
||||
}
|
||||
.dj-tabs .tab:first-child {
|
||||
border-top-left-radius: 5px
|
||||
}
|
||||
.dj-tabs .tab:last-child {
|
||||
border-top-right-radius: 5px
|
||||
}
|
||||
.dj-tabs .tab.active {
|
||||
background-color: #ffffff;
|
||||
color: #0a1e2c;
|
||||
}
|
||||
.dj-box a {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
line-height: 50px;
|
||||
color: #fff;
|
||||
font-size: 18px;
|
||||
background: var(--main-color);
|
||||
left: 50%;
|
||||
margin: 20px 0 0;
|
||||
border-radius: 5px;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.dj-box a:hover {
|
||||
background: #a83723;
|
||||
}
|
||||
|
||||
.dj-box .dj-cx {
|
||||
background: #fff;
|
||||
color: #438CBC;
|
||||
border: 2px solid #438CBC;
|
||||
}
|
||||
|
||||
.dj-box .dj-cx:hover {
|
||||
background: var(--main-color);
|
||||
color: #fff;
|
||||
}
|
||||
.form-cell {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.form-cell .icon {
|
||||
padding-top: 30px;
|
||||
}
|
||||
@media (min-width: 1110px) {
|
||||
.evus {
|
||||
height: 345px;
|
||||
}
|
||||
|
||||
/*.home-main{ margin-top: 50px;}*/
|
||||
.context2 {
|
||||
width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.apply-item {
|
||||
width: 50%;
|
||||
|
||||
}
|
||||
.apply-item img{
|
||||
width: 85%;
|
||||
}
|
||||
.bt {
|
||||
margin: 40px auto;
|
||||
font-size: 40px;
|
||||
font-weight: bold;
|
||||
color: #15477c;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
/*.content {
|
||||
width: 100%;
|
||||
background: url("/public/static/home/images/indexbg1_2.jpg") center 50px no-repeat;
|
||||
background-size: 100% auto;
|
||||
}*/
|
||||
}
|
||||
|
||||
/*@media (min-width: 1300px) {
|
||||
.content {
|
||||
width: 100%;
|
||||
background: url("/public/static/home/images/indexbg1_2.jpg") center 80px no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
}*/
|
||||
|
||||
/*.evus{ background: url("/public/static/home/images/bg_02.jpg") left -150px;}*/
|
||||
|
||||
|
||||
/*.evus-main{ background: none;}*/
|
||||
.process {
|
||||
width: 100%;
|
||||
/*background: #f9f9f9;*/
|
||||
padding: 20px ;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pro-con {
|
||||
max-width: 1110px;
|
||||
display: flex;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.ps-tit {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 24px;
|
||||
color: #438CBC;
|
||||
padding: 20px 0;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.process .ps-item {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
height: auto;
|
||||
text-align: center;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.ps-item2 {
|
||||
margin-top: 70px;
|
||||
}
|
||||
|
||||
.process .ps-item img {
|
||||
width: 26%;
|
||||
}
|
||||
|
||||
.process .ps-item2 img {
|
||||
margin-top: -75px;
|
||||
width: 34%;
|
||||
}
|
||||
|
||||
.process .ps-item .ps-text {
|
||||
width: 100%;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
color: #438CBC;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
@media (max-width: 740px) {
|
||||
.container-apply{
|
||||
flex-direction: column;
|
||||
}
|
||||
.apply-item{
|
||||
padding: 0 20px;
|
||||
}
|
||||
.advantages-section{
|
||||
padding: 20px 10px !important;
|
||||
}
|
||||
.einfor-con h3 {
|
||||
font-size: 20px;
|
||||
}
|
||||
.dj-tabs .tab.active {
|
||||
background-color: transparent;
|
||||
}
|
||||
.pc-ps-item {
|
||||
display: none !important;
|
||||
}
|
||||
.m-ps-item{
|
||||
display: inline-block !important;
|
||||
width: 5% !important;
|
||||
}
|
||||
.einfor {
|
||||
padding: 20px 0;
|
||||
}
|
||||
.m-title{
|
||||
display: none;
|
||||
}
|
||||
.container-apply.notice{
|
||||
margin-top: 70px !important;
|
||||
padding: 8px;
|
||||
}
|
||||
.process {
|
||||
height: auto;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.process .ps-item {
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.process .ps-item img {
|
||||
width: 12%;
|
||||
}
|
||||
|
||||
.ps-tit{
|
||||
background: var(--main-color);
|
||||
font-size: 16px;
|
||||
color: #fff !important;
|
||||
}
|
||||
.ps-tit2{
|
||||
background: var(--main-color);
|
||||
color: #f8cd55;
|
||||
}
|
||||
.pro-con{
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.einfor-con {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.context2 {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/*.content {
|
||||
background: url("/public/static/home/images/indexbg1_2.jpg") center 60px no-repeat;
|
||||
background-size: auto 100%;
|
||||
}*/
|
||||
|
||||
.text2 {
|
||||
width: 100%;
|
||||
display: block;
|
||||
padding: 20px 20px 5px;
|
||||
}
|
||||
|
||||
.text2 .tel {
|
||||
color: #e50000;
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.pro-con {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.djcon {
|
||||
clear: all;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.process .ps-item .ps-text {
|
||||
line-height: 35px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.ps-tit {
|
||||
/*line-height: 40px;*/
|
||||
}
|
||||
|
||||
.ps-tit2 {
|
||||
padding-bottom: 10px !important;
|
||||
}
|
||||
|
||||
.dj-box {
|
||||
width: 100%;
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
border-radius: 8px;
|
||||
box-sizing: border-box;
|
||||
padding: 40px;
|
||||
}
|
||||
|
||||
.dj-box .dj-txt {
|
||||
font-size: 20px !important;
|
||||
}
|
||||
|
||||
.dj-box .dj-txt2 {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.dj-box a {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
text-align: center;
|
||||
line-height: 40px;
|
||||
color: #fff;
|
||||
font-size: 17px;
|
||||
background: var(--main-color);
|
||||
border-radius: 2px solid var(--main-color);
|
||||
}
|
||||
|
||||
.content .text {
|
||||
width: 100%;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.einfor {
|
||||
width: 100%;
|
||||
max-width: 1170px;
|
||||
overflow: hidden;
|
||||
margin: 0 auto;
|
||||
line-height: 26px;
|
||||
padding: 20px 68px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (max-width: 1110px) {
|
||||
.einfor {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.einfor ul {
|
||||
list-style-type: circle;
|
||||
margin-left: 45px;
|
||||
}
|
||||
|
||||
/*.einfor-con h3, .einfor-con > p {*/
|
||||
/* color: #438CBC;*/
|
||||
/*}*/
|
||||
|
||||
.einfor-con a {
|
||||
display: inline-block;
|
||||
padding: 8px 0;
|
||||
width: 324px;
|
||||
border-radius: 6px;
|
||||
background: #2e8540!important;
|
||||
color: #fff;
|
||||
font-size: 18px;
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
.einfor-con a:hover {
|
||||
color: #fff;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.einfor-con2 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.einfor-qrcode {
|
||||
width: 324px;
|
||||
padding: 20px 20px 15px 20px;
|
||||
background: #f9f9f9;
|
||||
border-radius: 6px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.einfor-qrcode img {
|
||||
width: 200px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.einfor-qrcode p {
|
||||
color: #438CBC;
|
||||
line-height: 22px;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 800px) {
|
||||
.einfor-con {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 799px) {
|
||||
.einfor-con {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.einfor-con2 .einfor-qrcode2 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.einfor-con2 > div {
|
||||
float: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.einfor-con .tel {
|
||||
background: none !important;
|
||||
color: #FF0303;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.einfor-qrcode a.dj-cx {
|
||||
background: #fff !important;
|
||||
color: #438CBC !important;
|
||||
border: 2px solid #438CBC !important;
|
||||
}
|
||||
.container-apply{
|
||||
display: flex;
|
||||
max-width: 1110px;
|
||||
margin: 0 auto;
|
||||
align-items: center;
|
||||
}
|
||||
@media (min-width: 740px) {
|
||||
.item-border {
|
||||
border: 1px solid #F2F2F2;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.ps-item.ps-item2 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.nav_con a,.nav_con a:hover{
|
||||
font-size: 17px !important;
|
||||
}
|
||||
|
||||
}
|
||||
16496
public/static/css/tur_main.css
Normal file
119
public/static/css/tur_reset.css
Normal file
@@ -0,0 +1,119 @@
|
||||
|
||||
/* CSS Document */
|
||||
html, body, div, span, input, iframe, map, font, img, a img, samp, hr, h1, h2, h3, h4, h5, h6, b, p, blockquote, a, address, code, dl, dt, dd, ol, ul, li, form, label, table, tr, td, th {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
font-weight: normal;
|
||||
font-family: 'Microsoft YaHei', Arial, Helvetica, sans-serif;
|
||||
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box; /* Firefox */
|
||||
-webkit-box-sizing: border-box; /* Safari */
|
||||
}
|
||||
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
a:link {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
a:active {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
a:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a.hidefocus {
|
||||
outline: none
|
||||
}
|
||||
|
||||
.fl {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fr {
|
||||
float: right;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100% !important
|
||||
}
|
||||
|
||||
input[type=text], input[type=button], input[type=submit] {
|
||||
-webkit-appearance: none; /*去除iPhone input默认样式}*/
|
||||
}
|
||||
|
||||
input {
|
||||
font-family: 'Microsoft YaHei', Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
content: '.';
|
||||
display: block;
|
||||
width: 0;
|
||||
height: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.clearfix {
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 1200px;
|
||||
margin: 0 auto
|
||||
}
|
||||
|
||||
.dis {
|
||||
display: none
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 14px;
|
||||
background: #fff
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1189
public/static/css/tur_style.css
Normal file
452
public/static/css/tur_zh_top.css
Normal file
@@ -0,0 +1,452 @@
|
||||
*{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.zh_content{
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
.swiper{
|
||||
width: 100%;
|
||||
height: auto;
|
||||
max-height: 620px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
.swiper-slide {
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
background: #fff;
|
||||
}
|
||||
.swiper-slide img{
|
||||
width: 100%;
|
||||
height: 550px;
|
||||
object-fit: cover;
|
||||
object-position: 0 -125px;
|
||||
}
|
||||
.swiper-slide-img{
|
||||
width: 100%;
|
||||
height: 750px;
|
||||
background:url('../image/bg.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
@media (max-width: 1800px) and (min-width: 1140px){
|
||||
.swiper-slide-img{
|
||||
height: 650px !important;
|
||||
}
|
||||
}
|
||||
.zh_top{
|
||||
width: 100%;
|
||||
height: auto;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 200;
|
||||
}
|
||||
.zh_head{
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
/* border-bottom: 1px solid #ddd; */
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.zh_hcon{
|
||||
width: 1170px;
|
||||
margin: 0 auto;
|
||||
padding: 0px 68px;
|
||||
}
|
||||
.zh_head .zh_logo,.zh_head .zh_logo img{
|
||||
height: 60px;
|
||||
float: left;
|
||||
}
|
||||
.zh_hr{
|
||||
float: right;
|
||||
line-height: 40px;
|
||||
color: #fff;
|
||||
}
|
||||
.login_info_div {
|
||||
display: none;
|
||||
}
|
||||
.zh_hr a,.zh_hr span{
|
||||
color: #fff;
|
||||
margin-left: 15px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.zh_hr span em{
|
||||
font-style: normal;
|
||||
font-size: 16px;
|
||||
}
|
||||
.white{
|
||||
background: #fff;
|
||||
box-shadow: 0 0 5px 5px rgba(0,0,0,0.1);
|
||||
}
|
||||
.white a,.white span{
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
.blackbg {
|
||||
background-color: var(--main-color);
|
||||
/*background: url('../picture/heng.png');*/
|
||||
}
|
||||
|
||||
.zh_nav{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 0;
|
||||
height: 40px;
|
||||
}
|
||||
.nav_con{
|
||||
width: 1170px;
|
||||
margin: 0 auto;
|
||||
height: 70px;
|
||||
line-height: 70px;
|
||||
list-style: none;
|
||||
padding: 0px 68px;
|
||||
}
|
||||
.nav_con a{
|
||||
color: #fff;
|
||||
float: left;
|
||||
font-size: 16px;
|
||||
margin-right: 40px;
|
||||
}
|
||||
.nav_con a:hover{
|
||||
color: #fff;
|
||||
float: left;
|
||||
font-size: 16px;
|
||||
margin-right: 40px;
|
||||
}
|
||||
.zh_nav_btn{
|
||||
display: none;
|
||||
}
|
||||
.evus-main{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
top: 15%;
|
||||
left: 0;
|
||||
}
|
||||
.djcon{
|
||||
width: 1040px;
|
||||
margin: 0 auto;
|
||||
float: none;
|
||||
}
|
||||
|
||||
@media (max-width: 1200px){
|
||||
.swiper-slide img {
|
||||
height: 450px !important;
|
||||
object-position: top !important;
|
||||
}
|
||||
.zh_top{
|
||||
height: auto;
|
||||
width: 100%;
|
||||
background: var(--main-color);
|
||||
}
|
||||
.zh_head,.zh_hcon{
|
||||
width: auto;
|
||||
float: left;
|
||||
border: none;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.zh_hr{
|
||||
display: none;
|
||||
}
|
||||
.login_info_div {
|
||||
display: block;
|
||||
}
|
||||
.zh_nav{
|
||||
width: 100%;
|
||||
height: unset;
|
||||
margin-top: 60px;
|
||||
right: 0;
|
||||
left: 0;
|
||||
}
|
||||
.zh_nav_btn{
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
top: 20px;
|
||||
width: 30px;
|
||||
height: auto;
|
||||
display: block;
|
||||
}
|
||||
.nav_con{
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: none;
|
||||
overflow: hidden;
|
||||
padding: 0 10% 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.nav_con li{
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.nav_con li:hover,.nav_con li.selected{
|
||||
background: #f3b78d;
|
||||
}
|
||||
.nav_con a{
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
}
|
||||
@media (max-width: 1020px){
|
||||
.djcon{
|
||||
width: 100%;
|
||||
/*padding-right: 20px;*/
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
@media (max-width: 740px){
|
||||
.swiper {
|
||||
height: 0 !important;
|
||||
}
|
||||
.swiper-slide img{
|
||||
height: 450px !important;
|
||||
object-position: top !important;
|
||||
}
|
||||
.swiper-slide-img{
|
||||
background:url('../image/mobile.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
height: 350px;
|
||||
}
|
||||
.layui-form-item .layui-form-label{
|
||||
word-wrap: break-word; /* 允许长单词或URL地址换行到下一行 */
|
||||
word-break: break-all; /* 强制文本进行换行 */
|
||||
white-space: normal; /* 允许文本在任意字符处换行 */
|
||||
|
||||
}
|
||||
.layui-form-radio div{
|
||||
display: inline;
|
||||
}
|
||||
.evus-main{
|
||||
top: 10px;
|
||||
bottom: 0;
|
||||
height: auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
position: inherit;
|
||||
}
|
||||
.form-cell {
|
||||
display: block;
|
||||
}
|
||||
.dj-box .fromto-box {
|
||||
width: 100% !important;
|
||||
}
|
||||
.form-cell .icon {
|
||||
display: none !important;
|
||||
}
|
||||
.zh_content{
|
||||
top: 60px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 740px) and (max-width: 1024px){
|
||||
.swiper-slide-img{
|
||||
background: url(../image/bg.png) no-repeat;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
.middle-box2{
|
||||
width: 95% !important;
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
}
|
||||
@media (max-width: 1020px) and (min-width: 740px){
|
||||
|
||||
.swiper-slide-img{
|
||||
background:url('../image/bg.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
.evus-main {
|
||||
top: 25%;
|
||||
right: 5%;
|
||||
left: unset;
|
||||
}
|
||||
}
|
||||
.layui-layer-dialog .layui-layer-content .layui-layer-face{
|
||||
/*top: 45%;*/
|
||||
}
|
||||
.desc-box {
|
||||
display: flex;
|
||||
width: 1200px;
|
||||
justify-content: space-evenly;
|
||||
margin: 20px auto;
|
||||
/*border-bottom: 1px solid #e3e2e2;*/
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.desc-box>p {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.desc-box strong {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.middle-box2 {
|
||||
width: 75%;
|
||||
margin: 0 auto 20px auto;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.middle-box2 .image-box {
|
||||
height: 234px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.middle-box2 img {
|
||||
width: 528px;
|
||||
height: 100%;
|
||||
border-radius: 30px;
|
||||
}
|
||||
|
||||
.middle-box2 svg {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
.middle-box2 h2 {
|
||||
font-size: 30px;
|
||||
font-weight: 600;
|
||||
line-height: 56px;
|
||||
}
|
||||
|
||||
.middle-box2 p {
|
||||
font-size: 1rem;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
.middle-box2 a {
|
||||
background: var(--main-color);
|
||||
padding: 20px 40px;
|
||||
border-radius: 30px;
|
||||
color: #ffffff;
|
||||
transition: all 400ms;
|
||||
}
|
||||
.middle-box2 a:hover {
|
||||
color: #ffffff;
|
||||
background-color: var(--main-color);
|
||||
}
|
||||
.middle-box2 button {
|
||||
background: none;
|
||||
border: none;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.middle-box2 .wh16 {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.middle-box2 .mt30 {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.middle-box2 .right-box {
|
||||
margin: 0 auto;
|
||||
display: grid;
|
||||
flex-direction: column;
|
||||
box-sizing: border-box;
|
||||
grid-template-rows: repeat(2, minmax(0,1fr));
|
||||
grid-template-columns: repeat(4, minmax(0,1fr));
|
||||
max-width: 1110px;
|
||||
}
|
||||
|
||||
.middle-box2 .right-box .item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
background: rgba(241, 249, 252, 1);
|
||||
margin: 5px;
|
||||
padding: 30px 20px;
|
||||
border-radius: 10px;
|
||||
transition: all 400ms;
|
||||
}
|
||||
|
||||
.middle-box2 .right-box .item:hover {
|
||||
cursor: pointer;
|
||||
background-color: var(--main-color);
|
||||
color: #ffffff;
|
||||
}
|
||||
.middle-box2 .right-box .item h6 {
|
||||
font-size: 1.25rem;
|
||||
line-height: 34px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.middle-box2 .right-box .item p {
|
||||
font-size: .875rem;
|
||||
}
|
||||
@media (max-width: 740px){
|
||||
.desc-box {
|
||||
width: 100%;
|
||||
display: block;
|
||||
/*margin: 70px auto 20px auto;*/
|
||||
}
|
||||
.zh_hcon {
|
||||
padding: 0px 0px;
|
||||
}
|
||||
.zh_head .zh_logo, .zh_head .zh_logo img{
|
||||
height: 35px;
|
||||
}
|
||||
.flex-center {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
.middle-box2 {
|
||||
padding: 10px;
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
}
|
||||
.middle-box2 .right-box {
|
||||
margin-left: 0;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
}
|
||||
.dj-box .fromto-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 43%;
|
||||
}
|
||||
|
||||
.dj-box .fromto-box input {
|
||||
padding: 10px;
|
||||
border-radius: 5px;
|
||||
width: 100%;
|
||||
border: 1px solid gray;
|
||||
}
|
||||
.dj-box .fromto-box.date label {
|
||||
color: #205493;
|
||||
}
|
||||
.mr20 {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
|
||||
.mt20 {
|
||||
margin-top: 20px;
|
||||
}
|
||||
@media (min-width: 740px) {
|
||||
.zh_head{
|
||||
height: 70px;
|
||||
}
|
||||
}
|
||||
.layui-container {
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
body{
|
||||
background: #f8f8f8 !important;
|
||||
}
|
||||
487
public/static/css/user.css
Normal file
@@ -0,0 +1,487 @@
|
||||
.content{
|
||||
background: none !important;
|
||||
}
|
||||
.usercon{
|
||||
width: 100%;
|
||||
min-height: 300px;
|
||||
overflow: hidden;
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.user-tit{
|
||||
height: 50px;
|
||||
background: var(--main-color);
|
||||
width: 100%;
|
||||
line-height: 50px;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
}
|
||||
.user-tit2{
|
||||
text-align: left;
|
||||
text-indent: 20px;
|
||||
}
|
||||
.user-l{
|
||||
float: left;
|
||||
width: 250px;
|
||||
min-height: 300px;
|
||||
background: #fff;
|
||||
margin-right: 15px;
|
||||
}
|
||||
.user-a{
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
border-bottom: 5px solid #f0f0f0;
|
||||
color: #000;
|
||||
}
|
||||
.user-a.user-on{
|
||||
color: var(--main-color);
|
||||
border-bottom: 5px solid var(--main-color);
|
||||
}
|
||||
.user-a:hover{
|
||||
border-bottom: 5px solid var(--main-color);
|
||||
}
|
||||
.user-r{
|
||||
flex: 1;
|
||||
min-height: 300px;
|
||||
background: #fff;
|
||||
}
|
||||
.user-none{
|
||||
line-height: 200px;
|
||||
text-align: center;
|
||||
}
|
||||
.user-c{
|
||||
width: 100%;
|
||||
margin-top: 10px;
|
||||
}
|
||||
ul li{
|
||||
list-style: none;
|
||||
}
|
||||
.user-xx{
|
||||
width: 94%;
|
||||
border: 1px solid #ddd;
|
||||
float: left;
|
||||
margin: 15px 0 15px 3%;
|
||||
line-height: 40px;
|
||||
border-radius: 4px;
|
||||
/*background: #eee;*/
|
||||
}
|
||||
.user-xx li{
|
||||
width: 100%;
|
||||
padding: 0 20px;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
}
|
||||
.user-xx li:nth-child(even){
|
||||
background: #fff;
|
||||
}
|
||||
.user-xx li span{
|
||||
width: 18%;
|
||||
float: left;
|
||||
display: block;
|
||||
}
|
||||
.user-xx li span:nth-child(even){
|
||||
width: 32%;
|
||||
}
|
||||
.user-xx li a{
|
||||
color: var(--main-color);
|
||||
float: right;
|
||||
padding: 0 15px;
|
||||
line-height: 28px;
|
||||
margin: 6px 0 6px 15px;
|
||||
display: inline-block;
|
||||
border-radius: 4px;
|
||||
background: var(--main-color);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
.user-xx li a:hover{
|
||||
color: #fff;
|
||||
}
|
||||
.dd-type{
|
||||
width: 94%;
|
||||
margin: 0 3%;
|
||||
box-sizing: border-box;
|
||||
height: 44px;
|
||||
background: #eee;
|
||||
border: 1px solid #ddd;
|
||||
display: block;
|
||||
}
|
||||
.dd-type span{
|
||||
float: left;
|
||||
width: 50%;
|
||||
height: 44px;
|
||||
line-height: 44px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
.dd-type .dd-type-on{
|
||||
color: var(--main-color);
|
||||
height: 42px;
|
||||
border: 2px solid var(--main-color);
|
||||
}
|
||||
.xx-con{
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
.xx-con2{
|
||||
display: none;
|
||||
}
|
||||
.form-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
text-align: center;
|
||||
line-height: 50px;
|
||||
color: #fff;
|
||||
font-size: 18px;
|
||||
background: var(--main-color);
|
||||
margin: 15px 0;
|
||||
border-radius: 8px;
|
||||
border-radius: 2px solid var(--main-color);
|
||||
}
|
||||
|
||||
|
||||
@media(max-width:700px) {
|
||||
.layui-container{
|
||||
margin-top:70px;
|
||||
}
|
||||
.usercon{
|
||||
margin-top: 30px;
|
||||
flex-direction: column;
|
||||
}
|
||||
.user-l{
|
||||
width: 100%;
|
||||
min-height:unset;
|
||||
display: flex;
|
||||
}
|
||||
.user-a{
|
||||
width: 50%;
|
||||
}
|
||||
.user-tit{
|
||||
display: none;
|
||||
}
|
||||
|
||||
}
|
||||
.input-group{
|
||||
width: 100%;
|
||||
}
|
||||
.submenu a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.user-a1 {
|
||||
display: block;
|
||||
padding-left: 20px !important;
|
||||
}
|
||||
|
||||
.mobile-menu-group {
|
||||
height: 50px;
|
||||
background: var(--main-color);
|
||||
width: 100%;
|
||||
line-height: 50px;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.menu-toggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mobile-menu-group {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.menu-title {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-right: 30px !important;
|
||||
display: block;
|
||||
color: #fff;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.arrow-icon {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
transition: transform 0.3s;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
border-top: 5px solid #fff;
|
||||
}
|
||||
|
||||
.submenu {
|
||||
max-height: 0;
|
||||
overflow: visible;
|
||||
transition: max-height 0.3s ease-out;
|
||||
background: #fff;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.submenu a {
|
||||
color: #000;
|
||||
padding: 0 !important;
|
||||
line-height: 40px;
|
||||
height: 40px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.menu-toggle:checked ~ .submenu {
|
||||
max-height: 200px;
|
||||
}
|
||||
|
||||
.menu-toggle:checked ~ .menu-title .arrow-icon {
|
||||
transform: translateY(-50%) rotate(180deg);
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.submenu {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.arrow-icon {
|
||||
border-top: 5px solid #333;
|
||||
}
|
||||
|
||||
.submenu {
|
||||
background: var(--main-color);
|
||||
}
|
||||
|
||||
.menu-title {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.submenu a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* 移动端优先的响应式布局 */
|
||||
.user-l {
|
||||
flex-wrap: wrap; /* 菜单项自动换行 */
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.user-a {
|
||||
width: 31%; /* 两列布局 */
|
||||
margin: 5px 1%;
|
||||
text-align: center;
|
||||
background: #f8f8f8;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.user-tit {
|
||||
width: 100%; /* 标题独占一行 */
|
||||
padding: 10px 0;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.user-r {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
body {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.user-xx li span {
|
||||
min-width: 30% !important;
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
.user-tit2 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.user-xx li {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.user-xx li:nth-child(even) {
|
||||
background: #fff !important;
|
||||
}
|
||||
|
||||
.user-xx li:nth-child(odd) {
|
||||
background: #eee !important;
|
||||
}
|
||||
|
||||
.usercon {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.container {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.user-r {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 700px) {
|
||||
.user-xx li span {
|
||||
min-width: 30% !important;
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
.user-xx li {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.user-xx li a {
|
||||
float: left;
|
||||
margin: 6px 15px 6px 0;
|
||||
}
|
||||
}
|
||||
.add {
|
||||
float: right;
|
||||
padding: 0 25px;
|
||||
line-height: 34px;
|
||||
margin: 10px 3% 0 0;
|
||||
display: inline-block;
|
||||
border-radius: 4px;
|
||||
background: var(--main-color);
|
||||
color: #fff;
|
||||
text-align: center
|
||||
}
|
||||
|
||||
.cont2,
|
||||
.cont3,
|
||||
.cont4,
|
||||
.cont5 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.djtable {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.djtable2 {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.container-tit {
|
||||
width: 100%;
|
||||
font-size: 20px;
|
||||
color: var(--main-color);
|
||||
line-height: 50px;
|
||||
}
|
||||
|
||||
.container-con {
|
||||
width: 100%;
|
||||
line-height: 24px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.djtable {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.djtable table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
border: 2px solid var(--main-color);
|
||||
}
|
||||
|
||||
.djtable th,
|
||||
.djtable td {
|
||||
text-align: center;
|
||||
border: 1px solid var(--main-color);
|
||||
height: 40px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.djtable th {
|
||||
color: #fff;
|
||||
background: var(--main-color);
|
||||
}
|
||||
|
||||
.djtable td {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.djtable2 table {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
line-height: 36px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.djtable2 tr {
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.djtable2 th {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.djtable2 td {
|
||||
color: #666;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.formrow {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.m-help ul {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background: #337ab7 !important;
|
||||
}
|
||||
|
||||
.modal-open .modal .modal-dialog.modal-txt {
|
||||
max-height: 550px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.nodata {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 20px 0px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.nodata a {
|
||||
width: 30%;
|
||||
height: 40px;
|
||||
margin: 10px;
|
||||
line-height: 40px;
|
||||
display: inline-block;
|
||||
border-radius: 4px;
|
||||
background: var(--main-color);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.user-l {
|
||||
width: 100%;
|
||||
min-height: unset;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.user-tit {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.usercon {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
193
public/static/css/visa.css
Normal file
@@ -0,0 +1,193 @@
|
||||
|
||||
#Form2, #Form3, #Form3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 450px) {
|
||||
.layui-form-item .layui-input-inline {
|
||||
margin: 0;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.layui-input-block {
|
||||
min-height: 44px;
|
||||
}
|
||||
|
||||
.layui-layer-photos {
|
||||
background: #FFFFFF;
|
||||
}
|
||||
|
||||
#person_img_preview {
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.image-item {
|
||||
position: relative;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
.image-item img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: 1px solid #e6e6e6;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.image-item .delete-image {
|
||||
position: absolute;
|
||||
top: -15px;
|
||||
right: -15px;
|
||||
}
|
||||
|
||||
/* 修改选中项的背景颜色和字体颜色 */
|
||||
xm-select .xm-label .xm-label-block {
|
||||
background-color: var(--main-color) !important; /* 蓝色背景 */
|
||||
}
|
||||
|
||||
/* 修改下拉框选项的悬停背景颜色 */
|
||||
xm-select .xm-body .selected .xm-option-icon {
|
||||
color: var(--main-color) !important; /* 蓝色背景 */
|
||||
}
|
||||
|
||||
.layui-container {
|
||||
/*margin-top: 30px !important;*/
|
||||
}
|
||||
|
||||
.layui-form-item .layui-inline {
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
.layui-input-block {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.layui-form-label {
|
||||
position: relative;
|
||||
float: none;
|
||||
display: block;
|
||||
padding: 9px 15px;
|
||||
width: 100%;
|
||||
font-weight: 400;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.layui-form-mid.layui-word-aux {
|
||||
color: #999; /* 提示文字颜色 */
|
||||
font-size: 12px; /* 字号 */
|
||||
margin-top: 5px; /* 提示信息与输入框的间距 */
|
||||
}
|
||||
|
||||
.layui-input-group {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.layui-input-group .layui-input-group-prepend {
|
||||
width: 150px; /* 设置下拉框宽度 */
|
||||
}
|
||||
|
||||
.layui-btn {
|
||||
background-color: var(--main-color);
|
||||
}
|
||||
|
||||
/* 针对电脑端留空 */
|
||||
@media (min-width: 768px) {
|
||||
.layui-col-md6 {
|
||||
padding-right: 50px; /* 留空区域 */
|
||||
}
|
||||
|
||||
.layui-col-xs12 {
|
||||
padding-right: 20px; /* 在手机端,使用 margin-bottom 让元素之间有间隔 */
|
||||
}
|
||||
}
|
||||
|
||||
/* 针对手机端留空 */
|
||||
@media (max-width: 767px) {
|
||||
.layui-col-xs12 {
|
||||
padding-right: 20px; /* 在手机端,使用 margin-bottom 让元素之间有间隔 */
|
||||
}
|
||||
|
||||
.layui-container {
|
||||
/*margin-top: 80px !important;*/
|
||||
/*height: auto !important;*/
|
||||
}
|
||||
}
|
||||
|
||||
/* 修改radio选中时的整体颜色,包括圆圈和文字 */
|
||||
.layui-form-radioed,
|
||||
.layui-form-radioed > i {
|
||||
color: var(--main-color) !important; /* 修改选中状态的颜色 */
|
||||
}
|
||||
|
||||
/* 修改悬停时的整体颜色 */
|
||||
.layui-form-radio:hover,
|
||||
.layui-form-radio:hover > i,
|
||||
.layui-form-radio:hover > div {
|
||||
color: var(--main-color) !important; /* 修改悬停状态的颜色 */
|
||||
}
|
||||
|
||||
/* 修改未选中状态下的文字和圆圈颜色 */
|
||||
.layui-form-radio > i {
|
||||
color: var(--main-color) /* 默认状态的圆圈颜色 */
|
||||
}
|
||||
|
||||
.layui-laydate .layui-this, .layui-laydate .layui-this > div {
|
||||
background-color: var(--main-color) !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.layui-form-select dl dd.layui-this {
|
||||
background-color: #f8f8f8;
|
||||
color: var(--main-color);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.layui-form-checked[lay-skin=primary] > i {
|
||||
border-color: var(--main-color) !important;
|
||||
background-color: var(--main-color);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.layui-layer-btn .layui-layer-btn0 {
|
||||
border-color: transparent;
|
||||
background-color: var(--main-color);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.layui-form-label {
|
||||
font-weight: 600;
|
||||
font-size: 18px;
|
||||
color: #505050;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.layui-input-wrap {
|
||||
line-height: 44px;
|
||||
}
|
||||
|
||||
.layui-input {
|
||||
height: 44px !important;
|
||||
}
|
||||
|
||||
.select[readonly] {
|
||||
background-color: #fff;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control, fieldset[disabled] input[type=text], fieldset[disabled] input[type=email], fieldset[disabled] input[type=number], fieldset[disabled] input[type=password], fieldset[disabled] input[type=phone], fieldset[disabled] select, input[disabled][type=text], input[disabled][type=email], input[disabled][type=number], input[disabled][type=password], input[disabled][type=phone], input[readonly][type=text], input[readonly][type=email], input[readonly][type=number], input[readonly][type=password], input[readonly][type=phone], select[disabled], select[readonly] {
|
||||
background-color: #fff;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.layui-layer-page .layui-layer-content {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.layui-form-item span {
|
||||
color: #f00;
|
||||
}
|
||||
453
public/static/css/wepay.css
Normal file
@@ -0,0 +1,453 @@
|
||||
.wepay-page {
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: #f5f7fb;
|
||||
}
|
||||
|
||||
.wepay-shell {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
padding: 48px 15px 64px;
|
||||
}
|
||||
|
||||
.wepay-card {
|
||||
max-width: 1120px;
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
border: 1px solid #e8edf3;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 18px 45px rgba(20, 34, 54, .08);
|
||||
}
|
||||
|
||||
.wepay-card__head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 24px;
|
||||
padding: 28px 32px;
|
||||
color: #fff;
|
||||
background: var(--main-color);
|
||||
}
|
||||
|
||||
.wepay-card__head h1 {
|
||||
margin: 6px 0 0;
|
||||
font-size: 24px;
|
||||
line-height: 1.35;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.wepay-card__head img {
|
||||
height: 30px;
|
||||
max-width: 180px;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.wepay-eyebrow {
|
||||
margin: 0;
|
||||
font-size: 13px;
|
||||
line-height: 1.4;
|
||||
letter-spacing: 0;
|
||||
opacity: .82;
|
||||
}
|
||||
|
||||
.wepay-summary {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 1px;
|
||||
background: #e8edf3;
|
||||
}
|
||||
|
||||
.wepay-summary > div {
|
||||
padding: 20px 32px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.wepay-summary span {
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
color: #6d7785;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.wepay-summary strong {
|
||||
color: #172033;
|
||||
font-size: 20px;
|
||||
line-height: 1.3;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.wepay-summary .wepay-amount {
|
||||
color: #e25a2c;
|
||||
}
|
||||
|
||||
.wepay-methods {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(190px, 1fr) minmax(190px, 1fr) 320px;
|
||||
gap: 24px;
|
||||
padding: 32px;
|
||||
}
|
||||
|
||||
.wepay-method,
|
||||
.wepay-guide {
|
||||
border: 1px solid #e8edf3;
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.wepay-method {
|
||||
padding: 22px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wepay-method__title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
min-height: 44px;
|
||||
margin-bottom: 18px;
|
||||
color: #172033;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.wepay-method__title img {
|
||||
max-width: 92px;
|
||||
max-height: 34px;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.wepay-qr {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 190px;
|
||||
height: 190px;
|
||||
padding: 12px;
|
||||
border: 1px solid #dfe5ec;
|
||||
border-radius: 8px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.wepay-qr img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.wepay-guide {
|
||||
padding: 24px;
|
||||
background: #f9fbfd;
|
||||
}
|
||||
|
||||
.wepay-guide img {
|
||||
display: block;
|
||||
width: 150px;
|
||||
height: 210px;
|
||||
margin: 0 auto 16px;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.wepay-guide h2 {
|
||||
margin: 0 0 10px;
|
||||
color: #172033;
|
||||
font-size: 18px;
|
||||
line-height: 1.35;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.wepay-guide p {
|
||||
margin: 0;
|
||||
color: #5f6977;
|
||||
font-size: 14px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.wepay-waiting {
|
||||
margin-top: 18px;
|
||||
padding: 10px 12px;
|
||||
color: var(--main-color);
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
border: 1px solid #e8edf3;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.wepay-success {
|
||||
max-width: 820px;
|
||||
padding: 48px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wepay-success__mark {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
margin-bottom: 18px;
|
||||
color: #fff;
|
||||
font-size: 40px;
|
||||
font-weight: 700;
|
||||
background: var(--main-color);
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.wepay-success h1 {
|
||||
margin: 8px 0 14px;
|
||||
color: #172033;
|
||||
font-size: 28px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.wepay-success__order,
|
||||
.wepay-success__desc {
|
||||
margin: 0 auto 12px;
|
||||
max-width: 680px;
|
||||
color: #4d5968;
|
||||
font-size: 16px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.wepay-success__order strong {
|
||||
color: #e25a2c;
|
||||
}
|
||||
|
||||
.wepay-success__tips {
|
||||
margin: 28px auto 0;
|
||||
max-width: 720px;
|
||||
padding: 20px 24px;
|
||||
color: #4d5968;
|
||||
text-align: left;
|
||||
background: #f9fbfd;
|
||||
border: 1px solid #e8edf3;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.wepay-success__tips p {
|
||||
margin: 0 0 10px;
|
||||
font-size: 15px;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.wepay-success__tips p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.wepay-button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: 168px;
|
||||
min-height: 46px;
|
||||
margin-top: 28px;
|
||||
padding: 0 24px;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
background: var(--main-color);
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.wepay-button:hover {
|
||||
color: #fff;
|
||||
opacity: .92;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 992px) {
|
||||
.wepay-methods {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
.wepay-guide {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
.wepay-shell {
|
||||
padding-top: 28px;
|
||||
}
|
||||
|
||||
.wepay-card__head,
|
||||
.wepay-summary,
|
||||
.wepay-methods {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.wepay-card__head {
|
||||
padding: 24px 20px;
|
||||
}
|
||||
|
||||
.wepay-card__head img {
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.wepay-summary > div {
|
||||
padding: 18px 20px;
|
||||
border-bottom: 1px solid #e8edf3;
|
||||
}
|
||||
|
||||
.wepay-methods {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.wepay-method,
|
||||
.wepay-guide {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.wepay-qr {
|
||||
width: 180px;
|
||||
height: 180px;
|
||||
}
|
||||
|
||||
.wepay-success {
|
||||
padding: 36px 20px;
|
||||
}
|
||||
|
||||
.wepay-success h1 {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
.wepay-result-card {
|
||||
max-width: 860px;
|
||||
margin: 0 auto;
|
||||
padding: 46px 48px;
|
||||
color: #172033;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
border: 1px solid #e8edf3;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 18px 45px rgba(20, 34, 54, .08);
|
||||
}
|
||||
|
||||
.wepay-result-icon {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
margin-bottom: 18px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.wepay-result-icon--success {
|
||||
color: #fff;
|
||||
font-size: 40px;
|
||||
font-weight: 700;
|
||||
background: var(--main-color);
|
||||
}
|
||||
|
||||
.wepay-result-icon--pending {
|
||||
background: #f5f7fb;
|
||||
border: 1px solid #e8edf3;
|
||||
}
|
||||
|
||||
.wepay-success-detail h1,
|
||||
.payment-pending-title {
|
||||
margin: 8px 0 16px;
|
||||
color: #172033;
|
||||
font-size: 28px;
|
||||
line-height: 1.3;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.wepay-success-order,
|
||||
.payment-pending-order {
|
||||
margin: 0 auto 16px;
|
||||
max-width: 700px;
|
||||
color: #8a1f11;
|
||||
font-size: 18px;
|
||||
line-height: 1.7;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.wepay-success-text,
|
||||
.payment-pending-text {
|
||||
margin: 0 auto 12px;
|
||||
max-width: 720px;
|
||||
color: #4d5968;
|
||||
font-size: 16px;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.wepay-contact-text {
|
||||
margin: 22px auto 0;
|
||||
max-width: 720px;
|
||||
color: #d63622;
|
||||
font-size: 18px;
|
||||
line-height: 1.7;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.payment-pending {
|
||||
max-width: 760px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.payment-pending-status {
|
||||
display: inline-block;
|
||||
margin: 10px 0 12px;
|
||||
padding: 10px 14px;
|
||||
color: #9a5a00;
|
||||
font-size: 15px;
|
||||
line-height: 1.6;
|
||||
background: #fff8e7;
|
||||
border: 1px solid #f1dfb6;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.payment-spinner {
|
||||
display: inline-block;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border: 3px solid #dfe5ec;
|
||||
border-top-color: var(--main-color);
|
||||
border-radius: 50%;
|
||||
animation: wepay-spin .8s linear infinite;
|
||||
}
|
||||
|
||||
.wepay-actions {
|
||||
margin-top: 28px;
|
||||
}
|
||||
|
||||
.wepay-button--ghost {
|
||||
color: var(--main-color);
|
||||
background: #fff;
|
||||
border: 1px solid var(--main-color);
|
||||
}
|
||||
|
||||
.wepay-button--ghost:hover {
|
||||
color: var(--main-color);
|
||||
background: #f7fbff;
|
||||
}
|
||||
|
||||
@keyframes wepay-spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
.wepay-result-card {
|
||||
padding: 34px 20px;
|
||||
}
|
||||
|
||||
.wepay-success-detail h1,
|
||||
.payment-pending-title {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.wepay-success-order,
|
||||
.payment-pending-order {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
5
public/static/css/weui.min.css
vendored
Normal file
BIN
public/static/image/bg.png
Normal file
|
After Width: | Height: | Size: 712 KiB |
BIN
public/static/image/icon-arrow.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
public/static/image/icon-down.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
public/static/image/icon-infor.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/static/image/icon-up2.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
public/static/image/icon.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
public/static/image/malaixiya.jpg
Normal file
|
After Width: | Height: | Size: 262 KiB |
BIN
public/static/image/mdac_icon.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
public/static/image/menu.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
public/static/image/micon-arrow.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
public/static/image/mobile.png
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
public/static/image/mysbg.png
Normal file
|
After Width: | Height: | Size: 685 KiB |
BIN
public/static/image/newbg.png
Normal file
|
After Width: | Height: | Size: 681 KiB |
BIN
public/static/image/pay/card-guide.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
public/static/image/pay/logo_amex.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
public/static/image/pay/logo_cb.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
public/static/image/pay/logo_diners.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
public/static/image/pay/logo_discover.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
public/static/image/pay/logo_jcb.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
public/static/image/pay/logo_mastercard.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
public/static/image/pay/logo_paypal.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
31
public/static/image/pay/pay.svg
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="246px" height="60px" viewBox="0 0 246 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 3.6 (26304) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>pp_fc_hl</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<path id="path-1" d="M0.0363636364,60 L245.244848,60 L245.244848,0.497575758 L0.0363636364,0.497575758 L0.0363636364,60 L0.0363636364,60 Z"></path>
|
||||
</defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="pp_fc_hl">
|
||||
<g id="pp_h_rgb">
|
||||
<path d="M190.421818,26.4321212 C189.684848,31.2727273 185.987879,31.2727273 182.412121,31.2727273 L180.377576,31.2727273 L181.804848,22.2351515 C181.890909,21.6890909 182.361818,21.2866667 182.915152,21.2866667 L183.847879,21.2866667 C186.281212,21.2866667 188.580606,21.2866667 189.766061,22.6733333 C190.475152,23.5030303 190.689697,24.7327273 190.421818,26.4321212 L190.421818,26.4321212 Z M188.865455,13.8036364 L175.38,13.8036364 C174.458182,13.8036364 173.673333,14.4745455 173.529697,15.3854545 L168.07697,49.9630303 C167.969091,50.6448485 168.496364,51.2618182 169.187273,51.2618182 L176.106061,51.2618182 C176.751515,51.2618182 177.301212,50.7921212 177.401212,50.1545455 L178.947879,40.3521212 C179.091515,39.4412121 179.876364,38.770303 180.798182,38.770303 L185.065455,38.770303 C193.947879,38.770303 199.073939,34.4715152 200.413939,25.9521212 C201.01697,22.2260606 200.438182,19.2981818 198.693333,17.2484848 C196.775758,14.9951515 193.37697,13.8036364 188.865455,13.8036364 L188.865455,13.8036364 Z" id="Fill-1" fill="#2790C3"></path>
|
||||
<path d="M94.2418182,26.4321212 C93.5048485,31.2727273 89.8078788,31.2727273 86.2327273,31.2727273 L84.1981818,31.2727273 L85.6248485,22.2351515 C85.7115152,21.6890909 86.1824242,21.2866667 86.7351515,21.2866667 L87.6678788,21.2866667 C90.1018182,21.2866667 92.4012121,21.2866667 93.5860606,22.6733333 C94.2957576,23.5030303 94.510303,24.7327273 94.2418182,26.4321212 L94.2418182,26.4321212 Z M92.6860606,13.8036364 L79.2006061,13.8036364 C78.2787879,13.8036364 77.4939394,14.4745455 77.350303,15.3854545 L71.8969697,49.9630303 C71.789697,50.6448485 72.3169697,51.2618182 73.0072727,51.2618182 L79.4460606,51.2618182 C80.3678788,51.2618182 81.1533333,50.5909091 81.2969697,49.6806061 L82.7684848,40.3521212 C82.9115152,39.4412121 83.6969697,38.770303 84.6187879,38.770303 L88.8860606,38.770303 C97.7678788,38.770303 102.894545,34.4715152 104.234545,25.9521212 C104.837576,22.2260606 104.258788,19.2981818 102.513939,17.2484848 C100.595758,14.9951515 97.1969697,13.8036364 92.6860606,13.8036364 L92.6860606,13.8036364 Z" id="Fill-2" fill="#27346A"></path>
|
||||
<path d="M123.992121,38.8454545 C123.368485,42.5351515 120.439394,45.0121212 116.703636,45.0121212 C114.830909,45.0121212 113.331515,44.409697 112.367879,43.2690909 C111.412727,42.1381818 111.053333,40.5272727 111.355758,38.7333333 C111.937576,35.0769697 114.913333,32.52 118.592121,32.52 C120.426061,32.52 121.914545,33.1284848 122.897576,34.2793939 C123.886667,35.4387879 124.275152,37.0606061 123.992121,38.8454545 L123.992121,38.8454545 Z M132.990909,26.2775758 L126.533939,26.2775758 C125.980606,26.2775758 125.509697,26.6793939 125.423636,27.2266667 L125.139394,29.0321212 L124.687879,28.3775758 C123.289697,26.3478788 120.173333,25.669697 117.061212,25.669697 C109.927273,25.669697 103.833333,31.0757576 102.647273,38.6581818 C102.029697,42.4406061 102.906061,46.0551515 105.050909,48.5781818 C107.021212,50.8963636 109.833333,51.8612121 113.183636,51.8612121 C118.933939,51.8612121 122.12303,48.1672727 122.12303,48.1672727 L121.834545,49.9618182 C121.726667,50.6442424 122.253939,51.2618182 122.944848,51.2618182 L128.76,51.2618182 C129.681818,51.2618182 130.466667,50.5915152 130.610303,49.6806061 L134.101212,27.5763636 C134.209091,26.8939394 133.681818,26.2775758 132.990909,26.2775758 L132.990909,26.2775758 Z" id="Fill-3" fill="#27346A"></path>
|
||||
<path d="M220.171515,38.8454545 C219.547879,42.5351515 216.619394,45.0121212 212.883636,45.0121212 C211.010303,45.0121212 209.511515,44.409697 208.547273,43.2690909 C207.592121,42.1381818 207.232727,40.5272727 207.535758,38.7333333 C208.11697,35.0769697 211.092727,32.52 214.772121,32.52 C216.605455,32.52 218.094545,33.1284848 219.07697,34.2793939 C220.066061,35.4387879 220.454545,37.0606061 220.171515,38.8454545 L220.171515,38.8454545 Z M229.170303,26.2775758 L222.713333,26.2775758 C222.16,26.2775758 221.689091,26.6793939 221.60303,27.2266667 L221.318788,29.0321212 L220.867879,28.3775758 C219.469091,26.3478788 216.352727,25.669697 213.240606,25.669697 C206.107273,25.669697 200.012727,31.0757576 198.826667,38.6581818 C198.209697,42.4406061 199.086061,46.0551515 201.230303,48.5781818 C203.201212,50.8963636 206.012727,51.8612121 209.36303,51.8612121 C215.113333,51.8612121 218.302424,48.1672727 218.302424,48.1672727 L218.014545,49.9618182 C217.906061,50.6442424 218.433333,51.2618182 219.124848,51.2618182 L224.939394,51.2618182 C225.861212,51.2618182 226.646061,50.5915152 226.790303,49.6806061 L230.280606,27.5763636 C230.388485,26.8939394 229.861212,26.2775758 229.170303,26.2775758 L229.170303,26.2775758 Z" id="Fill-4" fill="#2790C3"></path>
|
||||
<g id="Group-10">
|
||||
<mask id="mask-2" fill="white">
|
||||
<use xlink:href="#path-1"></use>
|
||||
</mask>
|
||||
<g id="Clip-6"></g>
|
||||
<path d="M167.381818,26.2775758 L160.891515,26.2775758 C160.270909,26.2775758 159.690303,26.5854545 159.341818,27.0987879 L150.389091,40.2848485 L146.594545,27.6139394 C146.357576,26.8212121 145.627879,26.2775758 144.8,26.2775758 L138.42,26.2775758 C137.649697,26.2775758 137.107273,27.0351515 137.355758,27.7642424 L144.502424,48.7412121 L137.780606,58.2260606 C137.252727,58.970303 137.785455,60 138.697576,60 L145.181818,60 C145.796364,60 146.371515,59.6987879 146.721818,59.1933333 L168.306061,28.0424242 C168.822424,27.2969697 168.289091,26.2775758 167.381818,26.2775758" id="Fill-5" fill="#27346A" mask="url(#mask-2)"></path>
|
||||
<path d="M236.781212,14.7533333 L231.246667,49.9630303 C231.139394,50.6454545 231.666667,51.2618182 232.35697,51.2618182 L237.923636,51.2618182 C238.845455,51.2618182 239.630303,50.5909091 239.773939,49.6806061 L245.230909,15.1030303 C245.338788,14.4206061 244.811515,13.8036364 244.120606,13.8036364 L237.891515,13.8036364 C237.338182,13.8036364 236.867273,14.2066667 236.781212,14.7533333" id="Fill-7" fill="#2790C3" mask="url(#mask-2)"></path>
|
||||
<path d="M25.5466667,57.5484848 L27.3593939,46.0539394 L27.4763636,45.4169697 C27.5636364,44.8630303 27.8472727,44.3563636 28.2745455,43.9915152 C28.7018182,43.6266667 29.2466667,43.4254545 29.8084848,43.4254545 L31.2478788,43.4254545 C33.6472727,43.4254545 35.8515152,43.1690909 37.8,42.6636364 C39.8787879,42.1248485 41.7278788,41.2854545 43.2951515,40.1709091 C44.9569697,38.9890909 46.3527273,37.4612121 47.4442424,35.6309091 C48.5957576,33.7 49.4412121,31.3751515 49.9575758,28.7218182 C50.4139394,26.3787879 50.4993939,24.2812121 50.2127273,22.4866667 C49.9090909,20.5909091 49.1787879,18.9733333 48.0424242,17.6775758 C47.3533333,16.8927273 46.4715152,16.2127273 45.4218182,15.6563636 L45.3969697,15.6430303 L45.3963636,15.6127273 C45.7630303,13.2739394 45.7490909,11.3230303 45.3545455,9.64363636 C44.9581818,7.96060606 44.1557576,6.44606061 42.8993939,5.01454545 C40.2963636,2.04848485 35.5618182,0.544242424 28.8278788,0.544242424 L10.3339394,0.544242424 C9.71575758,0.544242424 9.11575758,0.765454545 8.64545455,1.16727273 C8.17515152,1.56909091 7.86363636,2.12727273 7.76666667,2.73818182 L0.0660606061,51.570303 C-0.00424242424,52.0157576 0.123636364,52.4684848 0.416969697,52.810303 C0.71030303,53.1539394 1.1369697,53.3509091 1.58787879,53.3509091 L13.0612121,53.3509091 L13.0509091,53.4054545 L12.2630303,58.4018182 C12.2024242,58.790303 12.3139394,59.1842424 12.5690909,59.4824242 C12.8242424,59.7812121 13.1957576,59.9533333 13.5884848,59.9533333 L23.2115152,59.9533333 C23.7515152,59.9533333 24.2745455,59.76 24.6848485,59.4090909 C25.0951515,59.0581818 25.3678788,58.5715152 25.4521212,58.0387879 L25.5466667,57.5484848" id="Fill-8" fill="#27346A" mask="url(#mask-2)"></path>
|
||||
<path d="M18.9539394,15.6763636 C19.0757576,14.9024242 19.5721212,14.2690909 20.2406061,13.9484848 C20.5448485,13.8030303 20.8842424,13.7218182 21.24,13.7218182 L35.7363636,13.7218182 C37.4539394,13.7218182 39.0551515,13.8345455 40.5193939,14.070303 C40.9375758,14.1375758 41.3442424,14.2151515 41.74,14.3030303 C42.1357576,14.3909091 42.5193939,14.4884848 42.8909091,14.5975758 C43.0769697,14.6515152 43.2593939,14.7084848 43.4393939,14.7684848 C44.1581818,15.0072727 44.8272727,15.2884848 45.4430303,15.6145455 C46.1690909,10.9860606 45.4381818,7.83636364 42.9345455,4.98363636 C40.1781818,1.8430303 35.1987879,0.497575758 28.8278788,0.497575758 L10.3339394,0.497575758 C9.03212121,0.497575758 7.92363636,1.44484848 7.72060606,2.73090909 L0.02,51.5630303 C-0.132121212,52.5266667 0.612727273,53.3975758 1.58787879,53.3975758 L13.0048485,53.3975758 L18.9539394,15.6763636" id="Fill-9" fill="#27346A" mask="url(#mask-2)"></path>
|
||||
</g>
|
||||
<path d="M45.4430303,15.6145455 L45.4430303,15.6145455 C45.3878788,15.9678788 45.3266667,16.3272727 45.2539394,16.6975758 C42.8157576,29.2193939 34.4715152,33.5484848 23.8145455,33.5484848 L18.3878788,33.5484848 C17.0860606,33.5484848 15.9866667,34.4963636 15.7836364,35.7824242 L12.2169697,58.3951515 C12.0842424,59.2375758 12.7357576,60 13.5884848,60 L23.2121212,60 C24.3509091,60 25.3206061,59.1715152 25.4981818,58.0460606 L25.5927273,57.5569697 L27.4054545,46.0612121 L27.5224242,45.4260606 C27.7,44.3006061 28.669697,43.4721212 29.8084848,43.4721212 L31.2478788,43.4721212 C40.5709091,43.4721212 47.8709091,39.6842424 50.0042424,28.730303 C50.8951515,24.1533333 50.4345455,20.3327273 48.0775758,17.6466667 C47.3648485,16.8345455 46.4775758,16.1624242 45.4430303,15.6145455" id="Fill-11" fill="#2790C3"></path>
|
||||
<path d="M42.8909091,14.5975758 C42.5193939,14.4884848 42.1357576,14.3909091 41.74,14.3030303 C41.3442424,14.2151515 40.9375758,14.1375758 40.5193939,14.070303 C39.0551515,13.8345455 37.4539394,13.7218182 35.7363636,13.7218182 L21.24,13.7218182 C20.8842424,13.7218182 20.5448485,13.8030303 20.2406061,13.9484848 C19.5721212,14.2690909 19.0757576,14.9024242 18.9539394,15.6763636 L15.8727273,35.2121212 L15.7836364,35.7824242 C15.9866667,34.4963636 17.0860606,33.5484848 18.3878788,33.5484848 L23.8145455,33.5484848 C34.4715152,33.5484848 42.8157576,29.2193939 45.2539394,16.6975758 C45.3266667,16.3272727 45.3878788,15.9678788 45.4430303,15.6145455 C44.8272727,15.2884848 44.1581818,15.0072727 43.4393939,14.7684848 C43.2593939,14.7084848 43.0769697,14.6515152 42.8909091,14.5975758" id="Fill-12" fill="#1F264F"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
BIN
public/static/image/pay/visa.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
public/static/image/pdf.png
Normal file
|
After Width: | Height: | Size: 564 B |
BIN
public/static/image/phone2.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
public/static/image/saoyisao.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
public/static/image/wx.png
Normal file
|
After Width: | Height: | Size: 464 KiB |
BIN
public/static/image/zf3.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/static/image/zfb.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
42
public/static/js/footer.js
Normal file
@@ -0,0 +1,42 @@
|
||||
// $(window).scroll(function () {
|
||||
// var wid = $(document).width();
|
||||
// if (wid > 1200) {
|
||||
// if ($(document).scrollTop() > 50) {
|
||||
// if ($(".zh_top").hasClass("white")) {
|
||||
// } else {
|
||||
// $(".zh_top").addClass("white");
|
||||
// $(".zh_head").animate({"height": "50px"});
|
||||
// $(".zh_nav").animate({"height": "70px"});
|
||||
// }
|
||||
// }
|
||||
// ;
|
||||
// if ($(document).scrollTop() < 50) {
|
||||
// if ($(".zh_top").hasClass("white")) {
|
||||
// $(".zh_top").removeClass("white");
|
||||
// $(".zh_head").animate({"height": "60px"});
|
||||
// $(".zh_nav").animate({"height": "100px"});
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
// $(".zh_nav_btn").click(function () {
|
||||
// if ($(".nav_con").hasClass("open")) {
|
||||
// $(".nav_con").removeClass("open").slideUp();
|
||||
// } else {
|
||||
// $(".nav_con").addClass("open").slideDown();
|
||||
// }
|
||||
// })
|
||||
|
||||
$(window).scroll(function() {
|
||||
if ($(document).scrollTop() > 5) {
|
||||
$(".zh_top").animate({}, 500).addClass("blackbg");
|
||||
// $(".nav_con a").attr('style', 'color:#000')
|
||||
// $(".zh_hr a, .zh_hr span").attr('style', 'color:#000')
|
||||
// $(".swiper").attr('style', 'color:#000')
|
||||
} else {
|
||||
$(".zh_top").animate({}, 500).removeClass("blackbg");
|
||||
// $(".nav_con a").attr('style', 'color:#fff')
|
||||
// $(".zh_hr a, .zh_hr span").attr('style', 'color:#fff')
|
||||
// $(".swiper").attr('style', 'color:#fff')
|
||||
}
|
||||
})
|
||||
2
public/static/js/jquery-1.8.3.min.js
vendored
Normal file
13
public/static/js/jquery-weui.min.js
vendored
Normal file
6
public/static/js/jquery.js
vendored
Normal file
399
public/static/js/mala.js
Normal file
@@ -0,0 +1,399 @@
|
||||
var layer = layui.layer, form = layui.form, upload = layui.upload, laydate = layui.laydate
|
||||
|
||||
initFormFields()
|
||||
function initFormFields() {
|
||||
$('.layui-form-item').each(function() {
|
||||
const labelText = $(this).find('.layui-form-label').text().replace('*', '').trim();
|
||||
|
||||
// 查找所有需要必填提示的表单元素
|
||||
$(this).find('.layui-input-block input, ' +
|
||||
'.layui-input-block select, ' +
|
||||
'.layui-input-block textarea')
|
||||
.each(function() {
|
||||
var $field = $(this);
|
||||
// 如果已有提示则跳过(保留自定义提示)
|
||||
if (!$field.attr('lay-reqtext')) {
|
||||
// 设置统一的必填提示
|
||||
$field.attr('lay-reqtext', labelText + lang.field_required);
|
||||
$field.attr('lay-verType', 'tips');
|
||||
}
|
||||
});
|
||||
});
|
||||
// 重新渲染表单
|
||||
form.render();
|
||||
}
|
||||
//遍历日期选择
|
||||
$(".layui-form-item").find(".layui-time").each(function () {
|
||||
xvDate({
|
||||
target: this,
|
||||
});
|
||||
});
|
||||
$(".layui-form-item").find(".layui-qian").each(function () {
|
||||
xvDate({
|
||||
target: this,
|
||||
max: new Date().toISOString().split('T')[0]
|
||||
});
|
||||
});
|
||||
$(".layui-form-item").find(".layui-hou").each(function () {
|
||||
xvDate({
|
||||
target: this,
|
||||
min: new Date().toISOString().split('T')[0]
|
||||
});
|
||||
});
|
||||
$(".layui-form-item").find(".layui-arrive").each(function () {
|
||||
xvDate({
|
||||
target: this,
|
||||
min: new Date().toISOString().split('T')[0],
|
||||
done: function(value, date, endDate){
|
||||
const isdate = isWithinThreeDays(value)
|
||||
if (!isdate){
|
||||
layer.alert(lang.alert_message, {
|
||||
icon: 0,
|
||||
shadeClose: true,
|
||||
title: lang.notice
|
||||
});
|
||||
}
|
||||
validateDates();
|
||||
}
|
||||
});
|
||||
});
|
||||
$(".layui-form-item").find(".layui-leave").each(function () {
|
||||
xvDate({
|
||||
target: this,
|
||||
min: new Date().toISOString().split('T')[0],
|
||||
done: function (value, date, endDate) {
|
||||
validateDates();
|
||||
}
|
||||
});
|
||||
});
|
||||
function validateDates() {
|
||||
var date1 = $('input[name="arrive_date"]').val();
|
||||
var date2 = $('input[name="leave_date"]').val();
|
||||
|
||||
if (date1 && date2) {
|
||||
var d1 = new Date(date1);
|
||||
var d2 = new Date(date2);
|
||||
|
||||
if (d1 > d2) {
|
||||
layer.tips(lang.departure_date_error, 'input[name="leave_date"]');
|
||||
$('input[name="leave_date"]').val('')
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
function isWithinThreeDays(dateString) {
|
||||
const targetDate = new Date(dateString);
|
||||
const currentDate = new Date();
|
||||
const threeDaysInMillis = 2 * 24 * 60 * 60 * 1000;
|
||||
|
||||
// 将时间部分设置为0,以便只比较日期部分
|
||||
targetDate.setHours(0, 0, 0, 0);
|
||||
currentDate.setHours(0, 0, 0, 0);
|
||||
|
||||
return targetDate - currentDate <= threeDaysInMillis;
|
||||
}
|
||||
//监听
|
||||
form.on('select(hotel_state_select)', function (data) {
|
||||
var sub_select = document.getElementById('hotel_city');
|
||||
sub_select.innerHTML = '';
|
||||
if (data.value) {
|
||||
layer.load(0)
|
||||
$.ajax({
|
||||
url: "/home/visa/get_sub_city", type: "POST", data: {'id': data.value}, success: function (data) {
|
||||
if (data.data.length !== 0) {
|
||||
// 动态添加城市选项
|
||||
sub_select.innerHTML = '<option value="">'+lang.search_directly+'</option>' + data.data.text;
|
||||
layer.closeAll()
|
||||
form.render('select'); // 重新渲染下拉框
|
||||
} else {
|
||||
layer.closeAll()
|
||||
layer.msg(lang.failed, {icon: 5});
|
||||
form.render('select'); // 重新渲染下拉框
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
$('#shili').on('click', function () {
|
||||
layer.photos({
|
||||
photos: {
|
||||
"data": [ //相册包含的图片,数组格式
|
||||
{
|
||||
"src": $('#sample_url').val(),
|
||||
}]
|
||||
},
|
||||
})
|
||||
});
|
||||
//是否选择 默认显示或隐藏
|
||||
$("input[type='radio']").each(function () {
|
||||
var name = $(this).attr("name");
|
||||
var alt = $(this).attr("alt");
|
||||
if ($(this).is(":checked")) {
|
||||
$(".data-" + alt).show();
|
||||
} else {
|
||||
$(".data-" + alt).hide();
|
||||
}
|
||||
})
|
||||
//是否radio 必填判断
|
||||
form.on("radio", function (data) {
|
||||
var name = data.elem.name;
|
||||
var type = data.elem.alt;
|
||||
$(".data-name-" + name).hide();
|
||||
$(".data-" + type).show();
|
||||
$(".data-name-" + name).each(function () {
|
||||
var that = $(this).find(".layui-required");
|
||||
var verify = that.attr("lay-verify");
|
||||
if (verify === undefined || verify === null) {
|
||||
verify = "";
|
||||
}
|
||||
var disAble = that.attr("disabled");
|
||||
if ($(this).hasClass("data-" + type)) {
|
||||
if (disAble === "disabled") {
|
||||
|
||||
} else if (verify.indexOf("required") >= 0) {
|
||||
|
||||
} else {
|
||||
verify = verify + "|required";
|
||||
that.attr("lay-verify", verify);
|
||||
}
|
||||
} else {
|
||||
if (disAble === "disabled") {
|
||||
|
||||
} else {
|
||||
if (verify.includes("required")) {
|
||||
verify = verify.slice(0, verify.length - 9);
|
||||
}
|
||||
that.val('')
|
||||
that.attr("lay-verify", verify);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
//下一步
|
||||
form.on('submit', function (data) {
|
||||
var className = data.elem.className;
|
||||
if (className.includes("btn-next")) {
|
||||
$(this).hide()
|
||||
$(this).parents(".layui-form").next(".layui-form").show();
|
||||
var h = $(this).parents(".layui-form").next(".layui-form").offset().top - 100;
|
||||
$("html,body").animate({
|
||||
scrollTop: h
|
||||
}, 500);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
function normalizePassportNo(value) {
|
||||
return (value || '').toUpperCase().replace(/\s+/g, '');
|
||||
}
|
||||
|
||||
function isChineseNationality(value) {
|
||||
return (value || '').trim().toUpperCase() === 'CHN';
|
||||
}
|
||||
|
||||
function isValidChinesePassportNo(value) {
|
||||
value = String(value).trim().toUpperCase();
|
||||
return /^(?:G\d{8}|E\d{8}|E[A-HJ-NP-Z]\d{7}|[SP]E\d{7})$/.test(value);
|
||||
}
|
||||
form.verify({
|
||||
// 验证至少选中一个 checkbox
|
||||
checkboxRequired: function (value, item) {
|
||||
var name = item.getAttribute('name');
|
||||
var checkboxes = document.querySelectorAll(`input[name="${name}"]:checked`);
|
||||
var checkboxes_length = document.querySelectorAll(`input[name="${name}"]`).length;
|
||||
if (checkboxes.length !== checkboxes_length) {
|
||||
return lang.check_declaration;
|
||||
}
|
||||
}, // 验证必须选中一个 radio
|
||||
radioRequired: function (value, item) {
|
||||
var name = item.getAttribute('name');
|
||||
var radios = document.querySelectorAll(`input[name="${name}"]:checked`);
|
||||
if (radios.length === 0) {
|
||||
return lang.choose_package;
|
||||
}
|
||||
}, radioChecked: function (value, item) { //value:表单的值、item:表单的DOM对象
|
||||
var radio = $(item).parent('div').find('input[type=radio]:checked').length;
|
||||
if (!radio) {
|
||||
return lang.select_one_option;
|
||||
}
|
||||
}, checkboxChecked: function (value, item) { //value:表单的值、item:表单的DOM对象
|
||||
var name = item.getAttribute('name');
|
||||
var checkboxes = document.querySelectorAll(`input[name="${name}"]:checked`);
|
||||
if (checkboxes.length === 0) {
|
||||
return lang.select_one_option;
|
||||
}
|
||||
},
|
||||
english: [/^[A-Za-z]+$/, lang.english_only]
|
||||
,daxie: [/^[A-Z]+$/, lang.uppercase_only],
|
||||
zhongwen: [/^[\u4e00-\u9fa5]+$/, lang.chinese_only],
|
||||
len40: [/^.{1,100}$/, lang.max_100_chars],
|
||||
otherReq: function (value, item) {
|
||||
var $ = layui.$;
|
||||
var verifyName = $(item).attr('name'), verifyType = $(item).attr('type'),
|
||||
formElem = $(item).parents('.layui-form')//获取当前所在的form元素,如果存在的话
|
||||
, verifyElem = formElem.find('input[name=' + verifyName + ']')//获取需要校验的元素
|
||||
, isTrue = verifyElem.is(':checked')//是否命中校验
|
||||
, focusElem = verifyElem.next().find('i.layui-icon');//焦点元素
|
||||
if (!isTrue || !value) {
|
||||
//定位焦点
|
||||
focusElem.css(verifyType == 'radio' ? {"color": "#FF5722"} : {"border-color": "#FF5722"});
|
||||
//对非输入框设置焦点
|
||||
focusElem.first().attr("tabIndex", "1").css("outline", "0").blur(function () {
|
||||
focusElem.css(verifyType == 'radio' ? {"color": ""} : {"border-color": ""});
|
||||
}).focus();
|
||||
return lang.field_required;
|
||||
}
|
||||
},
|
||||
chinaPassport: function (value, item) {
|
||||
const nationality = $('select[name="nation"]').val();
|
||||
if (!isChineseNationality(nationality)) {
|
||||
return;
|
||||
}
|
||||
const normalized = normalizePassportNo(value);
|
||||
if (!isValidChinesePassportNo(normalized)) {
|
||||
return lang.china_passport_invalid;
|
||||
}
|
||||
$(item).val(normalized);
|
||||
},
|
||||
englishOnly: function (value, item) {
|
||||
const v = (value ?? '').replace(/\s+/g, ''); // 去掉所有空白字符
|
||||
if (!/^[A-Za-z]+$/.test(v)) {
|
||||
return lang.english_only;
|
||||
}
|
||||
}
|
||||
});
|
||||
//监听提交
|
||||
form.on('submit(formSubmit)', function (data) {
|
||||
var submitVal = "";
|
||||
for (var i = 1; i < 4; i++) {
|
||||
submitVal = $.extend(submitVal, form.val('Form' + i));
|
||||
if (!form.validate('#Form' + i)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$("#last_name_con").html($('input[name="last_name"]').val() + " " + $('input[name="first_name"]').val())
|
||||
$("#first_name_con").html($('input[name="first_name"]').val())
|
||||
$("#birth_date_con").html($('input[name="birth_date"]').val())
|
||||
$("#passport_number_con").html($('input[name="passport_number"]').val())
|
||||
$("#passport_expiration_date_con").html($('input[name="passport_expiration_date"]').val())
|
||||
$("#arrive_date_con").html($('input[name="arrive_date"]').val())
|
||||
$("#leave_date_con").html($('input[name="leave_date"]').val())
|
||||
$("#email_con").html($('input[name="email"]').val())
|
||||
if (window.innerWidth <= 768) {
|
||||
area = ['90%', 'auto']
|
||||
} else {
|
||||
area = ['30%', 'auto']
|
||||
}
|
||||
layer.open({
|
||||
content: $('#confirm'),
|
||||
type: 1,
|
||||
title: lang.verify,
|
||||
btn: [lang.confirms, lang.edit],
|
||||
btnAlign: 'c',
|
||||
closeBtn: 0,
|
||||
area: area,
|
||||
yes: function () {
|
||||
var load = layer.load(2, {shade: 0.3})
|
||||
setTimeout(function () {
|
||||
$.ajax({
|
||||
url: "/home/visa/do_apply", type: "POST", data: submitVal, success: function (data) {
|
||||
if (data.code === 1) {
|
||||
window.location.href = data.url
|
||||
} else {
|
||||
layer.msg(data.msg, {icon: 5});
|
||||
return false
|
||||
}
|
||||
}
|
||||
});
|
||||
}, 1500)
|
||||
},
|
||||
end: function () {
|
||||
$('#confirm').hide()
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
upload.render({
|
||||
elem: '#passport_img', // 绑定的按钮 ID
|
||||
url: '/home/upload/upload_passport', // 后端接口 URL
|
||||
accept: 'images', // 仅支持图片类型
|
||||
before: function (obj) {
|
||||
loadIndex = layer.load(0);
|
||||
obj.preview(function (index, file, result) {
|
||||
$('#uploadPassportView').removeClass('layui-hide').find('img').attr('src', result);
|
||||
});
|
||||
},
|
||||
done: function (res) {
|
||||
// 上传成功后的回调
|
||||
if (res.path.length !== 0) {
|
||||
layer.close(loadIndex);
|
||||
layer.msg(lang.upload_successful, {icon: 1});
|
||||
$('input[name="passport_img"]').val(res.path);
|
||||
if (res.data.length !== 0) {
|
||||
$('input[name="last_name"]').val(res.data.last_name)
|
||||
$('input[name="first_name"]').val(res.data.first_name)
|
||||
$('input[name="birth_date"]').val(res.data.birth_date_year + '-' + ('0' + res.data.birth_date_month).slice(-2) + '-' + ('0' + res.data.birth_date_day).slice(-2))
|
||||
$('input[name="passport_number"]').val(res.data.passport_number)
|
||||
var gender = res.data.gender == 'male' ? '1' : '2'
|
||||
$('input[name="gender"][value="' + gender + '"]').prop('checked', true);
|
||||
$('input[name="passport_expiration_date"]').val(res.data.passport_expiration_date_year + '-' + ('0' + res.data.passport_expiration_date_month).slice(-2) + '-' + ('0' + res.data.passport_expiration_date_day).slice(-2))
|
||||
form.render('radio');
|
||||
}
|
||||
} else {
|
||||
layer.close(loadIndex);
|
||||
$('#passport_img_preview').html('')
|
||||
$('input[name="last_name"]').val('')
|
||||
$('input[name="first_name"]').val('')
|
||||
$('input[name="birth_date"]').val('')
|
||||
$('input[name="passport_number"]').val('')
|
||||
$('input[name="passport_expiration_date"]').val('')
|
||||
$('input[name="gender"]').prop('checked', false);
|
||||
form.render('radio');
|
||||
layer.msg(lang.upload_failed+':' + res.msg, {icon: 5});
|
||||
}
|
||||
}, error: function () {
|
||||
// 上传失败的回调
|
||||
layer.close(loadIndex);
|
||||
$('#passport_img_preview').html('')
|
||||
$('input[name="passport_img"]').val('')
|
||||
$('input[name="last_name"]').val('')
|
||||
$('input[name="first_name"]').val('')
|
||||
$('input[name="birth_city"]').val('')
|
||||
$('input[name="issuing_place"]').val('')
|
||||
$('input[name="birth_date"]').val('')
|
||||
$('input[name="passport_number"]').val('')
|
||||
$('input[name="passport_expedition_date"]').val('')
|
||||
$('input[name="passport_expiration_date"]').val('')
|
||||
$('input[name="gender"]').prop('checked', false);
|
||||
form.render('radio');
|
||||
layer.msg(lang.upload_error, {icon: 5});
|
||||
}
|
||||
});
|
||||
upload.render({
|
||||
elem: '#person_img',
|
||||
url: '/home/upload/file_upload', // 后端接口 URL
|
||||
before: function(obj){
|
||||
//预读本地文件示例,不支持ie8
|
||||
obj.preview(function(index, file, result){
|
||||
$('#person_img_view').attr('src', result); //图片链接(base64)
|
||||
});
|
||||
loadIndex = layer.load(0);
|
||||
},
|
||||
done: function(res){
|
||||
layer.close(loadIndex);
|
||||
// 上传成功后的回调
|
||||
if (res.path.length !== 0) {
|
||||
layer.msg(lang.upload_successful, {icon: 1});
|
||||
$('input[name="person_img"]').val(res.path);
|
||||
} else {
|
||||
layer.msg(lang.upload_failed+':' + res.msg, {icon: 5});
|
||||
}
|
||||
},
|
||||
error: function(){
|
||||
layer.close(loadIndex);
|
||||
layer.msg(lang.upload_error, {icon: 5});
|
||||
}
|
||||
});
|
||||
167
public/static/js/passport-ocr-sdk.min.js
vendored
Normal file
@@ -0,0 +1,167 @@
|
||||
;(function (global) {
|
||||
"use strict";
|
||||
|
||||
function isFileLike(v) {
|
||||
return (typeof File !== "undefined" && v instanceof File) ||
|
||||
(typeof Blob !== "undefined" && v instanceof Blob);
|
||||
}
|
||||
|
||||
function fileToDataURL(file) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var reader = new FileReader();
|
||||
reader.onload = function () {
|
||||
resolve(reader.result);
|
||||
};
|
||||
reader.onerror = reject;
|
||||
reader.readAsDataURL(file);
|
||||
});
|
||||
}
|
||||
|
||||
async function normalizeImageInput(input) {
|
||||
if (typeof input === "string") {
|
||||
return {
|
||||
image_base64: input,
|
||||
filename: "upload_base64",
|
||||
content_type: null
|
||||
};
|
||||
}
|
||||
|
||||
if (isFileLike(input)) {
|
||||
var dataURL = await fileToDataURL(input);
|
||||
return {
|
||||
image_base64: dataURL,
|
||||
filename: input.name || "upload_file",
|
||||
content_type: input.type || null
|
||||
};
|
||||
}
|
||||
|
||||
throw new Error("只支持 base64 字符串、File 或 Blob");
|
||||
}
|
||||
|
||||
async function parseJSONResponse(resp) {
|
||||
var text = await resp.text();
|
||||
var data = null;
|
||||
|
||||
try {
|
||||
data = text ? JSON.parse(text) : null;
|
||||
} catch (e) {
|
||||
data = text;
|
||||
}
|
||||
|
||||
if (!resp.ok) {
|
||||
var msg = data && data.detail ? data.detail : text || ("HTTP " + resp.status);
|
||||
throw new Error(msg);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function normalizeSign(rawSign, fallbackAppId) {
|
||||
if (rawSign === undefined || rawSign === null || rawSign === "") {
|
||||
throw new Error("sign 不能为空,必须由客户后端传入签名字符串或对象");
|
||||
}
|
||||
|
||||
var data = rawSign;
|
||||
if (typeof rawSign === "string") {
|
||||
try {
|
||||
data = JSON.parse(rawSign);
|
||||
} catch (e) {
|
||||
throw new Error('sign 字符串必须是 JSON 字符串,例如 {"timestamp":"1718123456","signature":"xxxx"}');
|
||||
}
|
||||
}
|
||||
|
||||
if (!data || typeof data !== "object") {
|
||||
throw new Error("sign 必须是对象,或可解析为对象的 JSON 字符串");
|
||||
}
|
||||
|
||||
var appId = data.app_id || data.appId || fallbackAppId;
|
||||
var timestamp = data.timestamp;
|
||||
var signature = data.signature;
|
||||
|
||||
if (!appId || !timestamp || !signature) {
|
||||
throw new Error("sign 必须包含 timestamp 和 signature;app_id 可省略并回退到 config.appId");
|
||||
}
|
||||
|
||||
return {
|
||||
app_id: String(appId),
|
||||
timestamp: String(timestamp),
|
||||
signature: String(signature)
|
||||
};
|
||||
}
|
||||
|
||||
function PassportOCRClient(config) {
|
||||
this.apiBase = (config.apiBase || "").replace(/\/+$/, "");
|
||||
this.appId = config.appId || "";
|
||||
this.sign = config.sign;
|
||||
|
||||
if (!this.apiBase) {
|
||||
throw new Error("apiBase 不能为空");
|
||||
}
|
||||
if (!this.appId) {
|
||||
throw new Error("appId 不能为空");
|
||||
}
|
||||
}
|
||||
|
||||
PassportOCRClient.prototype.setSign = function (sign) {
|
||||
this.sign = sign;
|
||||
return this;
|
||||
};
|
||||
|
||||
PassportOCRClient.prototype.getSignature = function (signOverride) {
|
||||
var rawSign = signOverride !== undefined ? signOverride : this.sign;
|
||||
return normalizeSign(rawSign, this.appId);
|
||||
};
|
||||
|
||||
PassportOCRClient.prototype.callOCR = async function (path, input, options) {
|
||||
options = options || {};
|
||||
|
||||
var imageInfo = await normalizeImageInput(input);
|
||||
var payload = {
|
||||
filename: options.filename || imageInfo.filename,
|
||||
content_type: options.content_type || imageInfo.content_type,
|
||||
image_base64: imageInfo.image_base64,
|
||||
text_rec_score_thresh: options.text_rec_score_thresh ?? 0.3,
|
||||
mrz_text_rec_score_thresh: options.mrz_text_rec_score_thresh ?? 0.0,
|
||||
mrz_top_ratio: options.mrz_top_ratio ?? 0.68,
|
||||
return_debug: !!options.return_debug,
|
||||
auto_rotate: options.auto_rotate ?? true
|
||||
};
|
||||
|
||||
var signed = this.getSignature(options.sign);
|
||||
|
||||
var resp = await fetch(this.apiBase + path, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"X-App-Id": signed.app_id,
|
||||
"X-Timestamp": signed.timestamp,
|
||||
"X-Signature": signed.signature
|
||||
},
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
|
||||
return await parseJSONResponse(resp);
|
||||
};
|
||||
|
||||
PassportOCRClient.prototype.recognizePassport = function (input, options) {
|
||||
return this.callOCR("/ocr/passport/base64", input, options);
|
||||
};
|
||||
|
||||
PassportOCRClient.prototype.recognizeMRZ = function (input, options) {
|
||||
return this.callOCR("/ocr/mrz/base64", input, options);
|
||||
};
|
||||
|
||||
PassportOCRClient.prototype.recognizeIdCard = function (input, options) {
|
||||
return this.callOCR("/ocr/idcard/base64", input, options);
|
||||
};
|
||||
|
||||
PassportOCRClient.prototype.recognizeVisaNumber = function (input, options) {
|
||||
return this.callOCR("/ocr/visa-number/base64", input, options);
|
||||
};
|
||||
|
||||
global.PassportOCRSDK = {
|
||||
create: function (config) {
|
||||
return new PassportOCRClient(config || {});
|
||||
}
|
||||
};
|
||||
})(window);
|
||||
45
public/static/js/pub.js
Normal file
@@ -0,0 +1,45 @@
|
||||
$(function(){
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// nav
|
||||
var _width=$(window).width();
|
||||
|
||||
|
||||
$('.menu-btn').click(function(event) {
|
||||
event.stopPropagation()
|
||||
$('.nav').stop().slideToggle();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
8
public/static/js/xm-select.js
Normal file
1
public/static/layui/css/layui.css
Normal file
BIN
public/static/layui/font/iconfont.eot
Normal file
409
public/static/layui/font/iconfont.svg
Normal file
|
After Width: | Height: | Size: 326 KiB |
BIN
public/static/layui/font/iconfont.ttf
Normal file
BIN
public/static/layui/font/iconfont.woff
Normal file
BIN
public/static/layui/font/iconfont.woff2
Normal file
1
public/static/layui/layui.js
Normal file
242
public/static/new_date/css/calendar.min.css
vendored
Normal file
@@ -0,0 +1,242 @@
|
||||
|
||||
|
||||
.dates_box .form-control,
|
||||
.dates_box input[type="text"],
|
||||
.dates_box input[type="email"],
|
||||
.dates_box input[type="number"],
|
||||
.dates_box input[type="password"],
|
||||
.dates_box input[type="tel"], /* 注意:phone 应该用 tel */
|
||||
.dates_box select {
|
||||
display: inline-block;
|
||||
height: auto;
|
||||
padding: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.dates_box {
|
||||
position: absolute;
|
||||
width: 250px;
|
||||
border: 1px solid #ccc;
|
||||
-webkit-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .1);
|
||||
-moz-box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .1);
|
||||
box-shadow: 1px 1px 2px 0 rgba(0, 0, 0, .1);
|
||||
background: #fff;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.choose_btn, .dates_choose {
|
||||
float: left;
|
||||
position: relative
|
||||
}
|
||||
|
||||
.dates_box_top {
|
||||
height: 26px;
|
||||
padding: 5px
|
||||
}
|
||||
|
||||
.dates_choose {
|
||||
width: 116px;
|
||||
border: 1px solid #ccc
|
||||
}
|
||||
|
||||
.choose_btn {
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
background: #eee
|
||||
}
|
||||
|
||||
.dates_choose .sign {
|
||||
display: inline-block;
|
||||
height: 0;
|
||||
line-height: 0;
|
||||
width: 0;
|
||||
border: 4px dashed transparent;
|
||||
vertical-align: middle;
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
.prev_choose {
|
||||
border-right: 1px solid #ccc
|
||||
}
|
||||
|
||||
.next_choose {
|
||||
float: right;
|
||||
border-left: 1px solid #ccc
|
||||
}
|
||||
|
||||
.choose_btn .sign {
|
||||
margin-top: 7px
|
||||
}
|
||||
|
||||
.prev_choose .sign {
|
||||
border-left-width: 0;
|
||||
border-right-color: #333
|
||||
}
|
||||
|
||||
.next_choose .sign {
|
||||
border-right-width: 0;
|
||||
border-left-color: #333
|
||||
}
|
||||
|
||||
.ipt_wrap {
|
||||
float: left;
|
||||
width: 74px;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
background: #fff;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.ipt_wrap input {
|
||||
vertical-align: -1px
|
||||
}
|
||||
|
||||
.ipt_wrap .dlt_status {
|
||||
border: none !important;
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.ipt_wrap .sign {
|
||||
border-bottom-width: 0;
|
||||
border-top-color: #333;
|
||||
margin-right: 4px
|
||||
}
|
||||
|
||||
.dates_btn, .dates_hms, .dates_table {
|
||||
border: 1px solid #ccc
|
||||
}
|
||||
|
||||
.ipt_wrap small {
|
||||
font-size: 12px;
|
||||
margin-right: 5px
|
||||
}
|
||||
|
||||
.dates_mm {
|
||||
float: right
|
||||
}
|
||||
|
||||
.dates_table {
|
||||
margin: 0 auto;
|
||||
width: 238px;
|
||||
border-collapse: collapse;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.dates_table thead tr th {
|
||||
background: #eee;
|
||||
border-bottom: 1px solid #ccc;
|
||||
height: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dates_table tr td {
|
||||
height: 24px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dates_mm_list span:hover, .dates_table tr td:hover, .dates_yy_list span:hover {
|
||||
background: #f2f2f2;
|
||||
cursor: pointer
|
||||
}
|
||||
|
||||
.other_day {
|
||||
color: #aaa
|
||||
}
|
||||
|
||||
.disable_day {
|
||||
color: #ddd;
|
||||
background: #f7f7f7
|
||||
}
|
||||
|
||||
.current_day, .dates_mm_list span.current, .dates_yy_list span.current {
|
||||
background: #ebebeb
|
||||
}
|
||||
|
||||
.dates_btn a, .dates_click, .time_tag {
|
||||
background: #eee
|
||||
}
|
||||
|
||||
.dates_bottom {
|
||||
padding: 5px;
|
||||
height: 36px;
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
.time_tag {
|
||||
padding: 0 4px;
|
||||
margin-right: 4px
|
||||
}
|
||||
|
||||
.dates_hms {
|
||||
float: left;
|
||||
width: 114px;
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.dates_hms li {
|
||||
float: left;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
vertical-align: middle
|
||||
}
|
||||
|
||||
.dates_hms li input {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
line-height: 14px;
|
||||
text-align: center;
|
||||
vertical-align: middle
|
||||
}
|
||||
|
||||
.dates_hms li input.dlt_status {
|
||||
width: 18px;
|
||||
border: none !important;
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.dates_btn {
|
||||
float: right;
|
||||
width: 118px;
|
||||
border-right: none
|
||||
}
|
||||
|
||||
.dates_btn a {
|
||||
float: left;
|
||||
cursor: pointer;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
padding: 0 7px;
|
||||
border-right: 1px solid #ccc;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.choose_btn:hover, .dates_btn a:hover {
|
||||
background: #fefefe
|
||||
}
|
||||
|
||||
.dates_mm_list, .dates_yy_list {
|
||||
width: 116px;
|
||||
height: 175px;
|
||||
overflow-y: auto;
|
||||
position: absolute;
|
||||
left: -1px;
|
||||
top: 24px;
|
||||
background: #fff;
|
||||
border: 1px solid #ccc
|
||||
}
|
||||
|
||||
.dates_mm_list span {
|
||||
float: left;
|
||||
line-height: 24px;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.dates_yy_list span {
|
||||
display: block;
|
||||
line-height: 24px;
|
||||
text-align: center;
|
||||
font-size: 12px
|
||||
}
|
||||
359
public/static/new_date/js/calendar.min.js
vendored
Normal file
@@ -0,0 +1,359 @@
|
||||
!function (a) {
|
||||
"function" == typeof define ? define("xvDate", [], function (b, c, d) {
|
||||
var e = {};
|
||||
a(e), d.exports = e.xvDate
|
||||
}) : a(window)
|
||||
}(function (a) {
|
||||
var b = {};
|
||||
a.xvDate = function (a) {
|
||||
var c = a.trigger || a.target;
|
||||
if ("object" == typeof c && c.length) for (var d = [], e = 0; e < c.length; e++) d.push(c[e]), b.enable(d[e], d, a);
|
||||
else d = c, b.enable(d, d, a)
|
||||
}, b.fn = b.prototype = {
|
||||
init: function (a) {
|
||||
this.creatView(a), this.initTimes(!1)
|
||||
}, gb: {}, creatView: function (a) {
|
||||
var c, d = a || {}, e = this, f = d.target || document.querySelector("#dates"), g = f;
|
||||
if (e.gb.algin = d.align ? d.align : g,e.gb.done = d.done, e.gb.format = d.format || "-", e.gb.hms = null, e.gb.zIndex = d.zIndex || 9999, e.gb.trigger = d.trigger, e.limitTime(d.min, "minTime"), e.limitTime(d.max, "maxTime"), e.gb.datesBox) e.gb.target === g || e.ishd(e.gb.datesBox) ? e.shde(e.gb.datesBox) : (b.removeEvent(document, "click", e.docArea), e.shde(e.gb.datesBox, 2)), e.gb.target = g, e.setPosition(e.gb.algin, e.gb.datesBox, {
|
||||
left: 0, top: 0
|
||||
}), e.setPosition(e.gb.algin, e.gb.datesBox), c = {that: e}, b.removeEvent(document, "click", e.docArea), b.addEvent(document, "click", e.docArea, c), e.gb.datesBox.style.zIndex = e.gb.zIndex; else {
|
||||
var h = e.gb.datesBox = e.creatEle("div");
|
||||
e.gb.datesBox.id = "xv_Dates_box", e.gb.target = g, e.gb.datesBox.className = "dates_box", e.gb.datesBox.style.display = "block", e.gb.datesBox.style.zIndex = e.gb.zIndex, e.append(e.gb.datesBox), h.innerHTML = "<div class='dates_box_top'><div class='dates_yy dates_choose'><span class='prev_choose choose_btn xv_Yy_prev' ><i class='sign'></i></span><span class='ipt_wrap xv_Year_wrap' ><input class='dlt_status xv_Ipt_year' style='width:32px;margin-left:4px;' type='text'><small>年</small><i class='sign'></i></span><span class='next_choose choose_btn xv_Yy_next' ><i class='sign'></i></span><div class='dates_yy_list xv_Dates_yy_list' style='display:none'>" + function () {
|
||||
for (var a = "", b = 1920; b < 2100; b++) a += "<span dateValue = " + b + ">" + b + "</span>";
|
||||
return a
|
||||
}() + "</div></div><div class='dates_mm dates_choose'><span class='prev_choose choose_btn xv_Mm_prev'><i class='sign'></i></span><span class='ipt_wrap xv_Moth_wrap' ><input class='dlt_status xv_Ipt_month' style='width:16px;margin-left:10px;' type='text'><small>月</small><i class='sign'></i></span><span class='next_choose choose_btn xv_Mm_next' ><i class='sign'></i></span><div class='dates_mm_list xv_Dates_mm_list' style='display:none'>" + function () {
|
||||
for (var a = "", b = 1; b < 13; b++) a += b < 10 ? "<span dateValue =" + b + ">0" + b + "月</span>" : "<span dateValue =" + b + ">" + b + "月</span>";
|
||||
return a
|
||||
}() + "</div></div></div>" + this.viewTb() + "<div class='dates_bottom'><ul class='dates_hms dates_hms'><li class='time_tag'>时间</li><li><input type='text' class='dlt_status xv_Hours'><span>:</span></li><li><input type='text' class='dlt_status xv_Minutes'><span>:</span></li><li><input type='text' class='dlt_status xv_Seconds'><span> </span></li></ul><div class='dates_btn'><a class='xv_Dates_clear'>清空</a><a class='xv_Dates_today'>今天</a><a class='xv_Dates_ok'>确认</a></div></div>", e.handleTime(), e.gb.datesHms = document.querySelector(".dates_hms"), e.setPosition(e.gb.algin, e.gb.datesBox, {
|
||||
left: 0, top: 0
|
||||
}), e.setPosition(e.gb.algin, e.gb.datesBox), c = {that: e}, b.addEvent(document, "click", e.docArea, c)
|
||||
}
|
||||
// 强制隐藏下拉框(确保每次打开都隐藏)
|
||||
if (e.gb.els) {
|
||||
e.gb.els.yyList.style.display = "none";
|
||||
e.gb.els.mmList.style.display = "none";
|
||||
}
|
||||
var i = this.gb.datesHms;
|
||||
i ? this.shde(i, 2) : this.shde(i, 1);
|
||||
var j = d.trigger || d.target;
|
||||
if ("object" == typeof j && j.length) {
|
||||
e.gb.trigger = [];
|
||||
for (var k = 0; k < j.length; k++) e.gb.trigger.push(j[k])
|
||||
} else e.gb.trigger = j
|
||||
}, docArea: function (a) {
|
||||
var b = a.srcElement || a.target, c = a.datas.that;
|
||||
!c.ishd(c.gb.datesBox) && !c.contain(c.gb.datesBox, b) && b !== c.gb.target && !c.isExistObj(c.gb.trigger, b) && c.shde(c.gb.datesBox, 1)
|
||||
}, limitTime: function (a, b) {
|
||||
var c = this.checkTime(a);
|
||||
this.gb[b] = c ? this.datesSplit(c) : null
|
||||
}, datesSplit: function (a) {
|
||||
return a ? (datesTimeArr = a.split(" "), datesArr = datesTimeArr[0].split(/[-\/]/), timesArr = this.gb.hms && datesTimeArr[1] ? datesTimeArr[1].split(":") : null, {
|
||||
year: datesArr[0],
|
||||
month: datesArr[1],
|
||||
date: datesArr[2],
|
||||
hours: timesArr ? timesArr[0] : 0,
|
||||
minutes: timesArr ? timesArr[1] : 0,
|
||||
seconds: timesArr ? timesArr[2] : 0
|
||||
}) : a
|
||||
}, handleTime: function () {
|
||||
var a = this;
|
||||
a.gb.td = document.querySelector("#dates_table").getElementsByTagName("td");
|
||||
for (var c = a.gb.els = {
|
||||
yearWrap: document.querySelector(".xv_Year_wrap"),
|
||||
monthWrap: document.querySelector(".xv_Moth_wrap"),
|
||||
yyList: document.querySelector(".xv_Dates_yy_list"),
|
||||
mmList: document.querySelector(".xv_Dates_mm_list"),
|
||||
yyConList: document.querySelector(".xv_Dates_yy_list").getElementsByTagName("span"),
|
||||
mmConList: document.querySelector(".xv_Dates_mm_list").getElementsByTagName("span"),
|
||||
yyPrev: document.querySelector(".xv_Yy_prev"),
|
||||
yyNext: document.querySelector(".xv_Yy_next"),
|
||||
mmPrev: document.querySelector(".xv_Mm_prev"),
|
||||
mmNext: document.querySelector(".xv_Mm_next"),
|
||||
datesClear: document.querySelector(".xv_Dates_clear"),
|
||||
datesToday: document.querySelector(".xv_Dates_today"),
|
||||
datesOk: document.querySelector(".xv_Dates_ok"),
|
||||
iptYear: document.querySelector(".xv_Ipt_year"),
|
||||
iptMonth: document.querySelector(".xv_Ipt_month"),
|
||||
iptHours: document.querySelector(".xv_Hours"),
|
||||
iptMinutes: document.querySelector(".xv_Minutes"),
|
||||
iptSeconds: document.querySelector(".xv_Seconds")
|
||||
}, d = [c.iptYear, c.iptMonth, c.iptHours, c.iptMinutes, c.iptSeconds], e = 0; e < d.length; e++) b.addEvent(d[e], "click", a.focusStatus);
|
||||
b.addEvent(c.iptYear, "blur", function () {
|
||||
var b = "^((19[0-9]{2})|(2[0-9]{3}))$", c = this, d = a.checkFocus(b, c, a.gb.time.year);
|
||||
d && (a.gb.time.year = d, a.insertDate())
|
||||
}), b.addEvent(c.iptMonth, "blur", function () {
|
||||
var b = "^((0[1-9])|(1[0-2])|[1-9])$", c = this, d = a.checkFocus(b, c, a.formatTime(a.gb.time.month));
|
||||
d && (a.gb.time.month = d, a.insertDate())
|
||||
}), b.addEvent(c.iptHours, "blur", function () {
|
||||
var b = this;
|
||||
a.gb.time.hours = a.checkFocus("^(([0-1][0-9])|(2[0-3])|[0-9])$", b, "00")
|
||||
}), b.addEvent(c.iptMinutes, "blur", function () {
|
||||
var b = this;
|
||||
a.gb.time.minutes = a.checkFocus("^(([0-5][0-9])|[0-9])$", b, "00")
|
||||
}), b.addEvent(c.iptSeconds, "blur", function () {
|
||||
var b = this;
|
||||
a.gb.time.seconds = a.checkFocus("^(([0-5][0-9])|[0-9])$", b, "00")
|
||||
}), b.addEvent(c.datesClear, "click", function () {
|
||||
a.gb.target.value = ""
|
||||
}), b.addEvent(c.datesOk, "click", function () {
|
||||
var b = a.gb.hms ? "hms" : "ymd", c = a.gb.time;
|
||||
a.compareTime(c.year, c.month, c.date, b) && a.getOkTime()
|
||||
}), b.addEvent(c.datesToday, "click", function () {
|
||||
a.initTimes(!0)
|
||||
}), b.addEvent(c.yearWrap, "click", a.yearLst, {
|
||||
els: c, that: a
|
||||
}), b.addEvent(a.gb.datesBox, "click", a.ymLst, {
|
||||
els: c, that: a
|
||||
}), a.ymClick(c.yyConList, c.yyList, "year"), a.ymClick(c.mmConList, c.mmList, "month"), b.addEvent(c.monthWrap, "click", function () {
|
||||
"none" === c.mmList.style.display ? document.activeElement !== c.iptMonth && (c.mmList.style.display = "block") : c.mmList.style.display = "none"
|
||||
});
|
||||
var f = {mmPrev: [-1, "month"], mmNext: [1, "month"], yyPrev: [-1, "year"], yyNext: [1, "year"]};
|
||||
for (e in f) b.addEvent(c[e], "click", a.datesBtn, {that: a, direction: f[e][0], type: f[e][1]});
|
||||
for (e = 0; e < a.gb.td.length; e++) b.addEvent(a.gb.td[e], "click", a.getDate, {that: a})
|
||||
}, getDate: function (a) {
|
||||
var b, c = this.innerHTML, d = a.datas.that, e = parseInt(this.getAttribute("m"), 10);
|
||||
b = 1 === d.gb.time.month && 12 === e ? d.gb.time.year - 1 : 12 === d.gb.time.month && 1 === e ? d.gb.time.year + 1 : d.gb.time.year, d.compareTime(b, e, c) && (d.gb.time.year = b, d.gb.time.month = e, d.gb.time.date = c, d.insertDate(), d.getOkTime())
|
||||
}, yearLst: function (a) {
|
||||
var b = a.datas.els, c = a.datas.that;
|
||||
if ("none" === b.yyList.style.display) {
|
||||
if (document.activeElement !== b.iptYear) {
|
||||
// 先显示下拉框
|
||||
b.yyList.style.display = "block";
|
||||
/************关键修改:在下拉框显示后,异步计算滚动位置 *********/
|
||||
setTimeout(function () {
|
||||
for (var d = 0; d < b.yyConList.length; d++) {
|
||||
if (b.yyConList[d].getAttribute("dateValue") == c.gb.time.year) {
|
||||
// 1. 获取元素位置并滚动到中间
|
||||
var e = b.yyConList[d].offsetTop;
|
||||
b.yyList.scrollTop = e - (b.yyList.clientHeight / 2);
|
||||
|
||||
// 2. 添加选中高亮样式(新增部分)
|
||||
// 先清除其他年份的选中状态
|
||||
for (var i = 0; i < b.yyConList.length; i++) {
|
||||
b.yyConList[i].classList.remove('current');
|
||||
}
|
||||
// 为当前年份添加选中样式
|
||||
b.yyConList[d].classList.add('current');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}, 10);
|
||||
/*********关键修改:在下拉框显示后,异步计算滚动位置 *********/
|
||||
}
|
||||
} else {
|
||||
b.yyList.style.display = "none";
|
||||
}
|
||||
}, ymLst: function (a) {
|
||||
var b = a.srcElement || a.target, c = a.datas.els, d = a.datas.that;
|
||||
d.contain(c.yearWrap, b) || d.ishd(c.yyList) || (c.yyList.style.display = "none"), d.contain(c.monthWrap, b) || d.ishd(c.mmList) || (c.mmList.style.display = "none")
|
||||
/************关键修改:在下拉框显示后,异步计算滚动位置 *********/
|
||||
setTimeout(function () {
|
||||
for (var i = 0; i < c.mmConList.length; i++) {
|
||||
if (c.mmConList[i].getAttribute("dateValue") == parseFloat(d.gb.time.month)) {
|
||||
for (var j = 0; j < c.mmConList.length; j++) {
|
||||
c.mmConList[j].classList.remove('current');
|
||||
}
|
||||
// 为当前年份添加选中样式
|
||||
c.mmConList[i].classList.add('current');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}, 10);
|
||||
/*********关键修改:在下拉框显示后,异步计算滚动位置 *********/
|
||||
}, focusStatus: function () {
|
||||
this.focus && (this.select(), this.className = "")
|
||||
}, combineTime: function (a, b) {
|
||||
var c;
|
||||
if (!a) return !1;
|
||||
var d = a.year.toString(), e = this.formatTime(a.month.toString()), f = this.formatTime(a.date.toString()),
|
||||
g = this.formatTime(a.hours.toString()), h = this.formatTime(a.minutes.toString()),
|
||||
i = this.formatTime(a.seconds.toString());
|
||||
switch (b) {
|
||||
case"hms":
|
||||
c = d + e + f + g + h + i;
|
||||
break;
|
||||
case"ymd":
|
||||
c = d + e + f;
|
||||
break;
|
||||
case"ym":
|
||||
c = d + e;
|
||||
break;
|
||||
case"y":
|
||||
c = d;
|
||||
break;
|
||||
default:
|
||||
c = d + e + f
|
||||
}
|
||||
return parseInt(c, 10)
|
||||
}, compareTime: function (a, b, c, d) {
|
||||
var e = this, f = e.gb.time, g = e.combineTime({
|
||||
year: a, month: b, date: c, hours: f.hours, minutes: f.seconds, seconds: f.minutes
|
||||
}, d), h = e.combineTime(e.gb.minTime, d) || "", i = e.combineTime(e.gb.maxTime, d) || "";
|
||||
return h && !i ? !(g < h) || null : !h && i ? !(g > i) || null : !h || !i || (!(g > i || g < h) || null)
|
||||
}, initTimes: function (a) {
|
||||
var b, c, d, e, f, g, h, i, j = this.gb.target, k = this.checkTime(j.value);
|
||||
|
||||
// 无论是否有预设值或限制,都优先使用当前日期
|
||||
i = new Date;
|
||||
b = i.getDate();
|
||||
c = i.getFullYear();
|
||||
d = i.getMonth() + 1;
|
||||
e = i.getHours();
|
||||
f = i.getMinutes();
|
||||
g = i.getSeconds();
|
||||
|
||||
// 保留原有的值检查逻辑(但不再作为主要取值来源)
|
||||
k && (k = this.datesSplit(k));
|
||||
|
||||
// 如果存在有效输入值,则使用输入值(否则使用当前日期)
|
||||
if (k && this.checkTime(j.value)) {
|
||||
b = k.date;
|
||||
c = k.year;
|
||||
d = k.month;
|
||||
e = k.hours;
|
||||
f = k.minutes;
|
||||
g = k.seconds;
|
||||
}
|
||||
|
||||
// 应用日期时间
|
||||
this.gb.time = {
|
||||
year: c, month: d, date: b, hours: e, minutes: f, seconds: g
|
||||
};
|
||||
this.insertDate();
|
||||
}, viewTb: function () {
|
||||
var a = ["日", "一", "二", "三", "四", "五", "六"], b = [], c = 0, d = this.creatEle("table"),
|
||||
e = this.creatEle("thead"), f = this.creatEle("tbody");
|
||||
d.className = "dates_table", d.id = "dates_table";
|
||||
for (var g = 1; g < 8; g++) {
|
||||
var h = this.creatEle("th");
|
||||
this.append(h, e), h.innerHTML = a[g - 1]
|
||||
}
|
||||
for (g = 1; g < 7; g++) {
|
||||
b[g] = this.creatEle("tr"), this.append(b[g], f);
|
||||
for (var i = 1; i < 8; i++) {
|
||||
var j = this.creatEle("td");
|
||||
j.setAttribute("index", c++), this.append(j, b[g])
|
||||
}
|
||||
}
|
||||
return this.append(e, d), this.append(f, d), d.outerHTML
|
||||
}, insertDate: function () {
|
||||
var a, b, c = this.gb.els, d = this.gb.time, e = c.yyConList, f = c.mmConList, g = c.iptYear,
|
||||
h = c.iptMonth, i = c.iptHours, j = c.iptMinutes, k = c.iptSeconds, l = d.year,
|
||||
m = parseInt(d.month, 10), n = d.date, o = d.hours, p = d.minutes, q = d.seconds, r = this.gb.td,
|
||||
s = new Date;
|
||||
s.setFullYear(l, m - 1), s.setDate(1);
|
||||
var t = s.getDay(), u = this.getDays(l, m - 1);
|
||||
this.dateStatus(f, m, "current"), this.dateStatus(e, l, "current");
|
||||
for (var v = 0; v < u; v++) r[t + v].innerHTML = v + 1, r[t + v].className = "", v + 1 === n ? r[t + v].className = "current_day" : n > u && (r[t + u - 1].className = "current_day", this.gb.time.date = u), r[t + v].setAttribute("m", m), r[t + v].setAttribute("y", l);
|
||||
/************************ 高亮选中的日期(直接使用 existing current_day 类) **************************/
|
||||
for (var v = 0; v < this.gb.td.length; v++) {
|
||||
var td = this.gb.td[v];
|
||||
td.className = ""; // 清除所有样式
|
||||
// 如果是当前月份的日期,并且匹配选中的日期
|
||||
if (parseInt(td.getAttribute("m")) === parseInt(this.gb.time.month) && parseInt(td.getAttribute("y")) === parseInt(this.gb.time.year) && parseInt(td.innerHTML) === parseInt(this.gb.time.date)) {
|
||||
td.className = "current_day"; // 直接使用 existing 类
|
||||
}
|
||||
}
|
||||
/********************** 高亮选中的日期(直接使用 existing current_day 类) ***************************/
|
||||
for (v = 0; v < t; v++) r[t - v - 1].className = "other_day", r[t - v - 1].innerHTML = this.getDays(l, m - 2) - v, m - 1 > 0 ? (a = m - 1, b = l) : (a = 12, b = l - 1), r[t - v - 1].setAttribute("m", a), r[t - v - 1].setAttribute("y", b);
|
||||
for (v = 0; v < r.length - t - u; v++) r[t + u + v].className = "other_day", r[t + u + v].innerHTML = v + 1, m + 1 > 12 ? (a = 1, b = l + 1) : (a = m + 1, b = l), r[t + u + v].setAttribute("m", a), r[t + u + v].setAttribute("y", b);
|
||||
var w = this.combineTime(this.gb.minTime) || "", x = this.combineTime(this.gb.maxTime) || "",
|
||||
y = {year: l, month: m, date: n, hours: this.gb.time.hours, minutes: this.gb.time.minutes, seconds: q};
|
||||
if (w) {
|
||||
for (v = 0; v < r.length; v++) y.year = r[v].getAttribute("y"), y.date = r[v].innerHTML, y.month = r[v].getAttribute("m"), this.combineTime(y) < w && (r[v].className = "disable_day");
|
||||
for (v = 0; v < e.length; v++) e[v].getAttribute("dateValue") < this.gb.minTime.year && (e[v].className = "disable_day");
|
||||
for (v = 0; v < f.length; v++) d.year + this.formatTime(f[v].getAttribute("dateValue")) < this.combineTime(this.gb.minTime, "ym") && (f[v].className = "disable_day")
|
||||
}
|
||||
if (x) {
|
||||
for (v = 0; v < r.length; v++) y.year = r[v].getAttribute("y"), y.date = r[v].innerHTML, y.month = r[v].getAttribute("m"), this.combineTime(y) > x && (r[v].className = "disable_day");
|
||||
for (v = 0; v < e.length; v++) e[v].getAttribute("dateValue") > this.gb.maxTime.year && (e[v].className = "disable_day");
|
||||
for (v = 0; v < f.length; v++) d.year + this.formatTime(f[v].getAttribute("dateValue")) > this.combineTime(this.gb.maxTime, "ym") && (f[v].className = "disable_day")
|
||||
}
|
||||
g.value = l, h.value = this.formatTime(m), i.value = this.formatTime(o), j.value = this.formatTime(p), k.value = this.formatTime(q)
|
||||
}, ymClick: function (a, b, c) {
|
||||
function d() {
|
||||
"month" === c ? (f = this.getAttribute("dateValue"), e = h.gb.time.year, g = h.gb.time.date) : "year" === c && (e = this.getAttribute("dateValue"), f = h.gb.time.month, g = h.gb.time.date), h.compareTime(e, f, g) && (h.gb.time.year = e, h.gb.time.month = f, h.gb.time.date = g, h.removeStatus(a), this.className = "current", b.style.display = "none", h.insertDate())
|
||||
}
|
||||
|
||||
for (var e, f, g, h = this, i = 0; i < a.length; i++) a[i].onclick = d
|
||||
}, ishd: function (a) {
|
||||
return "none" === a.style.display || null
|
||||
}, shde: function (a, b) {
|
||||
b ? 1 === b ? a.style.display = "none" : 2 === b && (a.style.display = "block") : a.style.display = "block" === a.style.display ? "none" : "block"
|
||||
}, isExistObj: function (a, b) {
|
||||
if ("object" == typeof a && a.length) {
|
||||
for (var c = 0; c < a.length; c++) if (a[c] === b) return !0
|
||||
} else if (a === b) return !0;
|
||||
return !1
|
||||
}, checkFocus: function (a, b, c, d) {
|
||||
b.className = "dlt_status";
|
||||
var e = b.value;
|
||||
return new RegExp(a).test(e) ? (this.gb.time[d] = this.formatTime(e), b.value = this.gb.time[d]) : b.value = c, b.value
|
||||
}, datesBtn: function (a) {
|
||||
var b = a.datas.that, c = b.gb.time.year, d = b.gb.time.month, e = parseInt(c, 10), f = parseInt(d, 10),
|
||||
g = b.gb.time.date, h = a.datas.type, i = a.datas.direction;
|
||||
if ("month" === h) {
|
||||
1 === f && i < 0 ? (d = 12, c = e + i) : 12 === f && i > 0 ? (d = 1, c = e + 1) : d = f + i;
|
||||
var j = b.getDays(c, d - 1);
|
||||
g > j && (g = j)
|
||||
} else "year" === h && (c = e + i);
|
||||
b.gb.time.year = c, b.gb.time.month = d, b.gb.time.date = g, b.insertDate()
|
||||
}, removeStatus: function (a) {
|
||||
for (var b = 0; b < a.length; b++) a[b].className = ""
|
||||
}, dateStatus: function (a, b, c) {
|
||||
for (var d = 0; d < a.length; d++) a[d].className = "", a[d].getAttribute("dateValue") === b && (a[d].className = c)
|
||||
}, getOkTime: function () {
|
||||
var a, b, c = {}, d = this.gb.format;
|
||||
for (var e in this.gb.time) c[e] = this.formatTime(this.gb.time[e]);
|
||||
b = " " + c.hours + ":" + c.minutes + ":" + c.seconds;
|
||||
a = this.gb.hms ? b : "";
|
||||
|
||||
// 设置最终值
|
||||
var selectedDate = c.year + d + c.month + d + c.date + a;
|
||||
this.gb.target.value = selectedDate;
|
||||
// ✅ 新增:触发回调(如果配置了 done)
|
||||
if (typeof this.gb.done === 'function') {
|
||||
this.gb.done(selectedDate); // 将选择的日期传给回调
|
||||
}
|
||||
|
||||
this.shde(this.gb.datesBox); // 关闭弹窗
|
||||
}, checkTime: function (a) {
|
||||
var b = "[-/]", c = this.gb.hms ? "(\\s){1}((0?[0-9])|(1[0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])" : "",
|
||||
d = a ? a.replace(/^(\s*)|(\s*)$/g, "").replace(/(\s)+/g, " ") : "";
|
||||
return !!new RegExp("^((19[0-9]{2})|(2[0-9]{3}))" + b + "((0?[1-9])|(1[0-2]))" + b + "((0?[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))" + c + "$").test(d) && d
|
||||
}, formatTime: function (a) {
|
||||
return /^(\d){1}$/.test(a) ? "0" + a : a
|
||||
}, getDays: function (a, b) {
|
||||
var c;
|
||||
return b < 0 ? (b = 11, a -= 1) : b > 11 && (b = 0, a += 1), b + 1 === 2 && (c = a % 4 == 0 && a % 100 != 0 || a % 400 == 0 ? 29 : 28), [31, c, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][b]
|
||||
}, creatEle: function (a, b) {
|
||||
return (b || document).createElement(a)
|
||||
}, append: function (a, b) {
|
||||
return (b || document.body).appendChild(a)
|
||||
}, setPosition: function (a, b, c) {
|
||||
if (c && "object" == typeof c) return b.style.left = 0, b.style.top = 0, !1;
|
||||
var d = this.getOffset(a), e = d.left, f = d.top, g = b.offsetHeight, h = a.offsetHeight,
|
||||
i = this.resetSizeAttr("scrollTop"), j = this.resetSizeAttr("offsetHeight"), k = f - i;
|
||||
b.style.top = j - k > g ? f + h - 1 + "px" : f - g + 1 + "px", b.style.left = e + "px"
|
||||
}, resetSizeAttr: function (a, b) {
|
||||
return (b || document.body)[a] || document.documentElement && document.documentElement[a]
|
||||
}, getOffset: function (a, b) {
|
||||
var c = b || {left: 0, top: 0};
|
||||
return a && (c.left += a.offsetLeft, c.top += a.offsetTop, a.offsetParent && (a = a.offsetParent, arguments.callee(a, c))), c
|
||||
}, contain: function (a, b) {
|
||||
return document.all ? a.contains(b) : 20 === a.compareDocumentPosition(b) || a === b || null
|
||||
}
|
||||
}, b.enable = function (c, d, e) {
|
||||
b.addEvent(c, "click", function () {
|
||||
a.xvDate.Dates ? a.xvDate.Dates.init(e, d) : a.xvDate.Dates = new b.fn.init(e, d)
|
||||
})
|
||||
}, b.getId = function (a, b) {
|
||||
return a; // 直接返回传入的元素
|
||||
}, b.addEvent = function (a, b, c, d) {
|
||||
a["evt" + b + c] = a["evt" + b + c] || null, a["evt" + b + c] || (a["evt" + b + c] = function (b) {
|
||||
b = b || window.event, b.datas = d || {}, c.call(a, b)
|
||||
}), a.addEventListener ? a.addEventListener(b, a["evt" + b + c], !1) : a.attachEvent && a.attachEvent("on" + b, a["evt" + b + c])
|
||||
}, b.removeEvent = function (a, b, c) {
|
||||
void 0 !== a.removeEventListener ? a.removeEventListener(b, a["evt" + b + c], !1) : void 0 !== a.detachEvent && c && a["evt" + b + c] && a.detachEvent("on" + b, a["evt" + b + c])
|
||||
}, b.fn.init.prototype = b.fn
|
||||
});
|
||||