This commit is contained in:
gaofeng
2026-05-12 18:27:28 +08:00
commit 6d9aee81aa
3664 changed files with 274415 additions and 0 deletions

0
public/.htaccess Normal file
View File

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

27
public/index.php Normal file
View File

@@ -0,0 +1,27 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2019 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
use think\App;
// [ 应用入口文件 ]
require __DIR__ . '/../vendor/autoload.php';
// 执行HTTP应用并响应
$http = (new App())->http;
$_SERVER['SCRIPT_NAME'] = '/mys/index.php';
$_SERVER['PHP_SELF'] = '/mys/index.php';
$response = $http->run();
$response->send();
$http->end($response);

1023
public/json/nation.json Normal file

File diff suppressed because it is too large Load Diff

1023
public/json/nation_en.json Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

66
public/json/state.json Normal file
View File

@@ -0,0 +1,66 @@
[
{
"id": "01",
"text": "<option value='0100'>JOHOR 柔佛</option><option value='0101'>ASAHAN, JOHOR 亚沙汉, 柔佛</option><option value='0102'>AYER BALOI 亚逸巴罗</option><option value='0103'>AYER HITAM 亚逸依淡</option><option value='0104'>BAKRI 峇株巴辖</option><option value='0105'>BATU ANAM 巴株安南</option><option value='0106'>BATU PAHAT 峇株巴辖</option><option value='0107'>BEKOK 彼咯</option><option value='0108'>BENUT 笨珍</option><option value='0109'>BUKIT GAMBIR 武吉甘蜜</option><option value='0110'>BUKIT PASIR 武吉巴西</option><option value='0111'>CHAAH 查哈</option><option value='0112'>ENDAU 兴楼</option><option value='0113'>GELANG PATAH 振林山</option><option value='0114'>GEMAS 金马士</option><option value='0115'>GERSEK 格西</option><option value='0116'>G. TAIB ANDAK 泰益安达</option><option value='0117'>JEMENTAH 日叻务</option><option value='0118'>JOHOR BAHRU 新山</option><option value='0119'>KAHANG 加亨</option><option value='0120'>KLUANG 居銮</option><option value='0121'>KG KNGAN T DR 甘榜根登</option><option value='0122'>KOTA TINGGI 哥打丁宜</option><option value='0123'>KUKUP 龟咯</option><option value='0124'>KULAI 古来</option><option value='0125'>LABIS 拉美士</option><option value='0126'>LAYANG-LAYANG 拉央拉央</option><option value='0127'>MASAI 马西</option><option value='0128'>MERSING 丰盛港</option><option value='0129'>MUAR 麻坡</option><option value='0130'>PAGOH 巴莪</option><option value='0131'>PALOH 巴罗</option><option value='0132'>PANCHOR 班卒</option><option value='0133'>PARIT JAWA 巴力爪哇</option><option value='0134'>PARIT RAJA 巴力拉惹</option><option value='0135'>PARIT SULONG 巴力士隆</option><option value='0136'>PASIR GUDANG 巴西古当</option><option value='0137'>PEKAN NANAS 北干那那</option><option value='0138'>PENGERANG 边佳兰</option><option value='0139'>PONTIAN 笨珍</option><option value='0140'>RENGIT 龙引</option><option value='0141'>SEGAMAT 昔加末</option><option value='0142'>SKUDAI 士古来</option><option value='0143'>SEMERAH 四加亭</option><option value='0144'>SENAI 士乃</option><option value='0145'>SENGGARANG 新加兰</option><option value='0146'>SIMPANG RENGGAM 新邦令金</option><option value='0147'>SUNGAI MATI 双溪马立</option><option value='0148'>TANGKAK 东甲</option><option value='0149'>ULU TIRAM 乌鲁地南</option><option value='0150'>YONG PENG 永平</option><option value='0151'>SAGIL 沙吉</option><option value='0157'>BUKIT KEPONG 武吉甲洞</option><option value='0177'>LENGA 令金</option><option value='0191'>SUNGAI BALANG 双溪巴兰</option><option value='0192'>GEMAS BARU 金马士新镇</option><option value='0193'>RENGGAM 令金</option><option value='0194'>BANDAR PENAWAR 班台彭加兰</option><option value='0195'>LEDANG 礼让</option><option value='0196'>ISKANDAR PUTERI 依斯干达公主城</option><option value='0197'>KULAI JAYA 古来再也</option><option value='0198'>KANGKAR PULAI 江加埔莱</option>"
},
{
"id": "02",
"text": "<option value='0200'>KEDAH 吉打</option><option value='0201'>ALOR SETAR 亚罗士打</option><option value='0202'>BALING 华玲</option><option value='0203'>BANDAR BAHARU 万拉峇鲁</option><option value='0204'>BEDONG 美农</option><option value='0205'>GURUN 古润</option><option value='0206'>JITRA 日得拉</option><option value='0207'>KARANGAN 加央</option><option value='0208'>KEPALA BATAS 甲抛峇底</option><option value='0209'>KODIANG 高岭</option><option value='0210'>KOTA KUALA MUDA 哥打古鲁木</option><option value='0211'>KUALA KEDAH 吉打港口</option><option value='0212'>KUALA KETIL 瓜拉吉底</option><option value='0213'>KUALA NERANG 瓜拉尼浪</option><option value='0214'>KULIM 居林</option><option value='0215'>KUPANG 高巴</option><option value='0216'>LANGGAR 兰卡威</option><option value='0217'>LANGKAWI 浮罗交怡</option><option value='0218'>LUNAS 鲁乃</option><option value='0219'>MERBOK 美堡</option><option value='0220'>PADANG SERAI 巴东色海</option><option value='0221'>PENDANG 笨筒</option><option value='0222'>POKOK SENA 波各先那</option><option value='0223'>SERDANG 色当</option><option value='0224'>SIK 锡</option><option value='0225'>SUNGAI PETANI 双溪大年</option><option value='0226'>YAN 铅</option><option value='0234'>CHANGLOON 樟仑</option><option value='0281'>SG. BAKAP 双溪巴甲</option><option value='0284'>SIMPANG EMPAT 新邦安拔</option><option value='0285'>KOTA SARANG SEMUT 哥打沙拉姆</option><option value='0286'>JENIANG 仁岭</option><option value='0287'>SINTOK 新笃</option>"
},
{
"id": "03",
"text": "<option value='0300'>KELANTAN 吉兰丹</option><option value='0301'>AYER LANAS 亚逸拉那</option><option value='0302'>BACHOK 巴佐</option><option value='0303'>CHERANG RUKU 遮兰如库</option><option value='0304'>DABONG 达蓬</option><option value='0305'>GUA MUSANG 话望生</option><option value='0306'>JELI 日里</option><option value='0307'>K DESA PAHLAWAN 英雄村</option><option value='0308'>KETEREH 格底里</option><option value='0309'>KOTA BHARU 哥打巴鲁</option><option value='0310'>KUALA KRAI 瓜拉吉赖</option><option value='0311'>MACHANG 马樟</option><option value='0312'>MELOR 美罗</option><option value='0313'>PASIR MAS 巴西马</option><option value='0314'>PASIR PUTEH 巴西富地</option><option value='0315'>PULAI CHONDONG 布赖崇东</option><option value='0316'>RANTAU PANJANG 兰斗班让</option><option value='0317'>TANAH MERAH 丹那美拉</option><option value='0318'>TEMANGAN 德马昂</option><option value='0319'>TUMPAT 道北</option><option value='0320'>WAKAF BHARU 华卡峇鲁</option><option value='0321'>SELISING 士里辛</option><option value='0322'>KUALA BALAH 瓜拉巴拉</option>"
},
{
"id": "04",
"text": "<option value='0400'>MELAKA 马六甲</option><option value='0401'>ALOR GAJAH 亚罗牙也</option><option value='0402'>ASAHAN 亚沙汉</option><option value='0403'>BATANG MELAKA 巴登马六甲</option><option value='0404'>BEMBAN 文望</option><option value='0405'>DURIAN TUNGGAL 榴梿洞葛</option><option value='0406'>GEMAS 金马士</option><option value='0407'>JASIN 野新</option><option value='0408'>K/SUNGAI BARU 瓜拉双溪峇鲁</option><option value='0409'>LUBOK CHINA 鲁容</option><option value='0410'>MASJID TANAH 马士丹那</option><option value='0411'>MELAKA 马六甲</option><option value='0412'>MERLIMAU 万里茂</option><option value='0413'>SUNGAI RAMBAI 双溪南眉</option><option value='0414'>SUNGAI UDANG 双溪乌浪</option><option value='0415'>TAMPIN 淡边</option><option value='0416'>TANJONG KELING 丹绒吉宁</option><option value='0417'>SELANDAR 士兰道</option>"
},
{
"id": "05",
"text": "<option value='0500'>N SEMBILAN 森美兰</option><option value='0501'>ASAHAN 亚沙汉</option><option value='0502'>BAHAU 芙蓉</option><option value='0503'>BATANG MELAKA 巴登马六甲</option><option value='0504'>BATU KIKIR 巴都基基</option><option value='0505'>DURIAN TIPUS 榴梿蒂布</option><option value='0506'>GEMAS 金马士</option><option value='0507'>GEMENCHEH 日叻务</option><option value='0508'>JOHOL 汝来</option><option value='0509'>KOTA 哥打</option><option value='0510'>KUALA KLAWANG 瓜拉格拉旺</option><option value='0511'>KUALA PILAH 瓜拉庇劳</option><option value='0512'>LABU 拉务</option><option value='0513'>LENGGENG 林茂</option><option value='0514'>LINGGI 宁宜</option><option value='0515'>LUBOK CHINA 鲁容</option><option value='0516'>MANTIN 文丁</option><option value='0517'>NILAI 汝来</option><option value='0518'>PASIR PANJANG 巴西班让</option><option value='0519'>PEDAS 巴当</option><option value='0520'>PORT DICKSON 波德申</option><option value='0521'>RANTAU 仁保</option><option value='0522'>REMBAU 林茂</option><option value='0523'>ROMPIN 龙平</option><option value='0524'>SELIAU 士里奥</option><option value='0525'>SEREMBAN 芙蓉</option><option value='0526'>SRI MENANTI 斯里马南</option><option value='0527'>SI RUSA 士鲁沙</option><option value='0528'>SILIAU 士里奥</option><option value='0529'>SIMPANG PERTANG 新邦葫芦顶</option><option value='0530'>SUNGAI GADUT 双溪加笃</option><option value='0531'>TAMPIN 淡边</option><option value='0532'>TANJUNG IPOH 丹绒依波</option><option value='0533'>TITI 蒂蒂</option><option value='0534'>BUKIT PELANDOK 武吉巴弄</option><option value='0535'>CHUAH 朱湖</option><option value='0536'>LUKUT 芦骨</option><option value='0537'>TELUK KEMANG 直落甘望</option><option value='0538'>PENG.KEMPAS 彭加兰</option><option value='0539'>JELEBU 日叻务</option><option value='0540'>BANDAR SERI JEMPOL 斯里仁保</option><option value='0541'>JUASSEH 爪西</option><option value='0542'>B BARU JEMPOL 新仁保</option><option value='0543'>BANDAR ENSTEK 恩斯德</option><option value='0545'>PUSAT BANDAR PALONG 巴隆市中心</option>"
},
{
"id": "06",
"text": "<option value='0600'>PAHANG 彭亨</option><option value='0601'>BANDAR JENGKA 珍卡</option><option value='0602'>BENTA 文打</option><option value='0603'>BENTONG 文冬</option><option value='0604'>BESERAH 北索拉</option><option value='0605'>BUKIT FRASER 福隆港</option><option value='0606'>CHENOR 珍诺</option><option value='0607'>DONG 东</option><option value='0608'>GAMBANG 甘榜</option><option value='0609'>GENTING 云顶</option><option value='0610'>JERANTUT 而连突</option><option value='0611'>KARAK 加叻</option><option value='0612'>KEMAYAN 金马扬</option><option value='0613'>KUALA LIPIS 瓜拉立卑</option><option value='0614'>KUALA ROMPIN 瓜拉弄宾</option><option value='0615'>KUANTAN 关丹</option><option value='0616'>LANCHANG 兰樟</option><option value='0617'>LURAH BILUT 乌鲁比律</option><option value='0618'>MARAN 马兰</option><option value='0619'>MENGKARAK 孟加乐</option><option value='0620'>MENTAKAB 文德甲</option><option value='0621'>MERSING 丰盛港</option><option value='0622'>MUADZAM SHAH 慕阿占沙</option><option value='0623'>PADANG TENGKU 巴登东姑</option><option value='0624'>PEKAN 北根</option><option value='0625'>RAUB 劳勿</option><option value='0626'>RINGLET 林烈</option><option value='0627'>SEGAMAT 昔加末</option><option value='0628'>SUNGAI LEMBING 双溪林明</option><option value='0629'>SUNGAI RUAN 双溪如安</option><option value='0630'>TANAH RATA 丹那拉打</option><option value='0631'>TEMERLOH 淡马鲁</option><option value='0632'>TRIANG 直凉</option><option value='0633'>BDR TUN RAZAK 敦拉萨镇</option><option value='0634'>ROMPIN 龙平</option><option value='0635'>C HIGHLANDS 金马仑高原</option><option value='0636'>BANDAR BERA 百乐</option><option value='0637'>SEGA 士加</option><option value='0639'>BRINCHANG 布林章</option>"
},
{
"id": "07",
"text": "<option value='0700'>P PINANG 槟城</option><option value='0701'>AYER ITAM 亚依淡</option><option value='0702'>BALIK PULAU 浮罗山背</option><option value='0703'>BATU FERRINGHI 峇都丁宜</option><option value='0704'>BAYAN LEPAS 峇六拜</option><option value='0705'>BUKIT MERTAJAM 大山脚</option><option value='0706'>BUTTERWORTH 北海</option><option value='0707'>GELUGOR 日落洞</option><option value='0708'>GEORGETOWN 乔治市</option><option value='0709'>KEPALA BATAS 甲抛峇底</option><option value='0710'>NIBONG TEBAL 高渊</option><option value='0711'>PENAGA 槟榔</option><option value='0712'>PENANG HILL 槟城山</option><option value='0713'>PERAI 北赖</option><option value='0714'>PERMATANG PAUH 峇东埔</option><option value='0715'>PULAU PINANG 槟岛</option><option value='0716'>SIMPANG AMPAT 新邦安拔</option><option value='0717'>SUNGAI JAWI 双溪爪夷</option><option value='0718'>TANJONG BUNGAH 丹绒武雅</option><option value='0719'>TASEK GELUGOR 打昔汝莪</option><option value='0720'>USM P/PINANG 理科大学</option><option value='0721'>SUNGAI BAKAP 双溪巴甲</option><option value='0722'>JELUTONG 日落洞</option><option value='0723'>MINDEN 明登</option>"
},
{
"id": "08",
"text": "<option value='0800'>PERAK 霹雳</option><option value='0801'>AYER TAWAR 爱大华</option><option value='0802'>BAGAN DATOH 巴眼拿督</option><option value='0803'>BAGAN SERAI 巴眼士来</option><option value='0804'>BATU GAJAH 华都牙也</option><option value='0805'>BATU KURAU 巴都古劳</option><option value='0806'>BERUAS 乌鲁</option><option value='0807'>BIDOR 美罗</option><option value='0808'>BOTA 武吉</option><option value='0809'>CHKT KERUING 吉辇</option><option value='0810'>CHEMOR 积莪营</option><option value='0811'>CHENDERIANG 贞德隆</option><option value='0812'>CHENDERONG BALAI 贞德隆巴莱</option><option value='0813'>ENGGOR 英格</option><option value='0814'>GERIK 宜力</option><option value='0815'>GOPENG 务边</option><option value='0816'>HUTAN MELINTANG 森林美兰</option><option value='0817'>KLIAN INTAN 吉辇</option><option value='0818'>IPOH 怡保</option><option value='0819'>KAMPAR 金宝</option><option value='0820'>KAMPONG GAJAH 甘榜牙也</option><option value='0821'>KG KEPAYANG 甘榜甲巴央</option><option value='0822'>KAMUNTING 甘文丁</option><option value='0823'>KUALA KANGSAR 江沙</option><option value='0824'>KUALA SEPETANG 瓜拉十八丁</option><option value='0825'>LAHAT 拉哈</option><option value='0826'>LANGKAP 兰卡</option><option value='0827'>LENGGONG 玲珑</option><option value='0828'>LUMUT 红土坎</option><option value='0829'>MALIM NAWAR 万挠</option><option value='0830'>MAMBANG DIAWAN 万邦刁湾</option><option value='0831'>MANONG 马弄</option><option value='0832'>MATANG 马登</option><option value='0833'>MENGLEMBU 万里望</option><option value='0834'>PADANG RENGAS 巴登冷甲</option><option value='0835'>PANGKOR 邦咯</option><option value='0836'>PANTAI REMIS 班台</option><option value='0837'>PARIT 巴力</option><option value='0838'>PARIT BUNTAR 巴力文打</option><option value='0839'>PENGKALAN HULU 高乌</option><option value='0840'>PUSING 布先</option><option value='0841'>SAUK 沙威</option><option value='0842'>SELAMA 司南马</option><option value='0843'>SELEKOH 士力谷</option><option value='0844'>SEMANGGOL 实兆远</option><option value='0845'>SIMPANG 新邦</option><option value='0846'>SIMPANG AMPAT 新邦安拔</option><option value='0847'>SITIAWAN 实兆远</option><option value='0848'>SLIM RIVER 仕林河</option><option value='0849'>SUNGAI SIPUT 双溪西埔</option><option value='0850'>SUNGAI SUMUN 双溪苏门</option><option value='0851'>SUNGKAI 双溪甲巴央</option><option value='0852'>TAIPING 太平</option><option value='0853'>TANJUNG MALIM 丹绒马林</option><option value='0854'>TG.PIANDANG 丹绒比艾</option><option value='0855'>TG.RAMBUTAN 丹绒兰布丹</option><option value='0856'>TANJONG TUALANG 丹绒督亚冷</option><option value='0857'>TAPAH 打巴</option><option value='0858'>TAPAH ROAD 打巴路</option><option value='0859'>TELUK INTAN 安顺</option><option value='0860'>TEMOH 地摩</option><option value='0861'>TRONG 东</option><option value='0862'>TERONOH 地罗叻</option><option value='0863'>ULU KINTA 乌鲁近打</option><option value='0864'>ULU BERNAM 乌鲁冷岳</option><option value='0865'>SG SIPUT (U) 双溪西埔(乌鲁)</option><option value='0866'>BEHRANG STESEN 美冷</option><option value='0867'>TROLAK 督拉</option><option value='0880'>KUALA DIPANG 瓜拉迪邦</option><option value='0881'>KUALA KURAU 瓜拉古楼</option><option value='0882'>SERI MANJUNG 斯里曼绒</option><option value='0887'>CHIKUS 积莪营</option>"
},
{
"id": "09",
"text": "<option value='0900'>PERLIS 玻璃市</option><option value='0901'>ARAU 亚罗士打</option><option value='0902'>KAKI BUKIT 加基武吉</option><option value='0903'>KANGAR 加央</option><option value='0904'>KUALA PERLIS 瓜拉玻璃市</option><option value='0905'>PADANG BESAR 巴东勿刹</option><option value='0906'>SIMPANG AMPAT 新邦安拔</option>"
},
{
"id": "10",
"text": "<option value='1000'>SELANGOR 雪兰莪</option><option value='1001'>AMPANG 安邦</option><option value='1002'>BANTING 万津</option><option value='1003'>BTG.BERJUNTAI 巴生港口</option><option value='1004'>BATANG KALI 巴生</option><option value='1005'>BATU 9 CHERAS 蕉赖九英里</option><option value='1006'>BATU ARANG 煤炭山</option><option value='1007'>BATU CAVES 黑风洞</option><option value='1008'>BERANANG 万挠</option><option value='1009'>BUKIT ROTAN 武吉罗丹</option><option value='1010'>DENGKIL 龙溪</option><option value='1011'>HULU LANGAT 乌鲁冷岳</option><option value='1012'>JENJAROM 仁嘉隆</option><option value='1013'>JERAM 吉兰</option><option value='1014'>KAJANG 加影</option><option value='1015'>KAPAR 加埔</option><option value='1016'>KLANG 巴生</option><option value='1017'>KERLING 吉令</option><option value='1018'>K. KUBU BHARU 古布巴鲁</option><option value='1019'>KUALA LUMPUR 吉隆坡</option><option value='1020'>KUALA SELANGOR 瓜拉雪兰莪</option><option value='1021'>NILAI 汝来</option><option value='1022'>MANTIN 文丁</option><option value='1023'>PELABUHAN KLANG 巴生港口</option><option value='1024'>PETALING JAYA 八打灵再也</option><option value='1025'>PUCHONG 蒲种</option><option value='1026'>PULAU CAREY 加里岛</option><option value='1027'>PULAU KETAM 吉胆岛</option><option value='1028'>PULAU INDAH 英达岛</option><option value='1029'>RANTAU PANJANG 兰斗班让</option><option value='1030'>RASA 拉沙</option><option value='1031'>RAWANG 万挠</option><option value='1032'>SABAK BERNAM 沙白安南</option><option value='1033'>SEKINCAN 士基央</option><option value='1034'>SEMENYIH 士毛月</option><option value='1035'>SEPANG 雪邦</option><option value='1036'>SERENDAH 士林河</option><option value='1037'>SERI KEMBANGAN 斯里肯邦安</option><option value='1038'>SHAH ALAM 莎阿南</option><option value='1039'>SUBANG JAYA 梳邦再也</option><option value='1040'>SG AYER TAWAR 双溪亚依淡</option><option value='1041'>SUNGAI BESAR 双溪大年</option><option value='1042'>SUNGAI BULOH 双溪毛糯</option><option value='1043'>SUNGAI PELEK 双溪比力</option><option value='1044'>TANJONG KARANG 丹绒加弄</option><option value='1045'>TANJONG SEPAT 丹绒士拔</option><option value='1046'>TELOK P. GARANG 直落巴巷</option><option value='1047'>UKM BANGI 国立大学</option><option value='1048'>UPM SERDANG 博特拉大学</option><option value='1049'>HULU BERNAM 乌鲁冷岳</option><option value='1050'>BDR. BARU BANGI 万宜新镇</option><option value='1051'>PUTRAJAYA(SEBELUM 1.2.2001) 布城2001年2月1日前</option><option value='1052'>CYBERJAYA 赛城</option><option value='1053'>SELAYANG 士拉央</option><option value='1087'>BANDAR BARU SUNGAI BULOH 双溪毛糯新镇</option><option value='1088'>ULU YAM BARU 乌鲁音巴鲁</option><option value='1089'>GOMBAK 鹅唛</option><option value='1090'>SERDANG 士林河</option><option value='1092'>CHERAS 蕉赖</option><option value='1095'>BANDAR PUNCAK ALAM 万挠</option>"
},
{
"id": "11",
"text": "<option value='1100'>TERENGGANU 登嘉楼</option><option value='1101'>AJIL 亚依淡</option><option value='1102'>BESUT 勿述</option><option value='1103'>BUKIT BESI 武吉巴西</option><option value='1104'>DUNGUN 龙运</option><option value='1105'>JERTIH 日底</option><option value='1106'>BDR PERMAISURI 巴都拉惹</option><option value='1107'>KEMAMAN 甘马挽</option><option value='1108'>KEMASEK 甘马仕</option><option value='1109'>KIJAL 基惹</option><option value='1110'>KUALA BERANG 瓜拉伯浪</option><option value='1111'>KUALA BESUT 瓜拉勿述</option><option value='1112'>KUALA TERENGGANU 瓜拉登嘉楼</option><option value='1113'>MARANG 马江</option><option value='1114'>PAKA 巴加</option><option value='1115'>KERTEH 格底里</option><option value='1116'>MUKTAFI BILLAH SHAH 慕达比拉沙</option><option value='1117'>KAMPONG RAJA 甘榜拉惹</option><option value='1118'>CUKAI 朱盖</option><option value='1121'>KUALA NERUS 瓜拉尼鲁</option>"
},
{
"id": "12",
"text": "<option value='1200'>SABAH 沙巴</option><option value='1201'>BEAUFORT 保佛</option><option value='1202'>BELURAN 比鲁兰</option><option value='1203'>BONGAWAN 邦加湾</option><option value='1204'>INANAM 依那南</option><option value='1205'>KENINGAU 根地咬</option><option value='1206'>KOTA BELUD 古打毛律</option><option value='1207'>KOTA KINABALU 亚庇</option><option value='1208'>KOTA MARUDU 古打马鲁都</option><option value='1209'>KUALA PENYU 瓜拉班尤</option><option value='1210'>KUDAT 古达</option><option value='1211'>KUNAK 古纳</option><option value='1212'>LAHAD DATU 拿笃</option><option value='1213'>LAMAG 拉马</option><option value='1214'>LIKAS 里卡斯</option><option value='1215'>MEMBAKUT 孟巴卡</option><option value='1216'>MENUMBUK 孟努布</option><option value='1217'>NABAWAN 纳巴湾</option><option value='1218'>PAPAR 吧巴</option><option value='1219'>PENAMPANG 兵南邦</option><option value='1220'>RANAU 兰瑙</option><option value='1221'>SANDAKAN 山打根</option><option value='1222'>SEMPORNA 仙本那</option><option value='1223'>SIPITANG 实必丹</option><option value='1224'>TAMBUNAN 担布南</option><option value='1225'>TAMPARULI 担波罗里</option><option value='1226'>TANJUNG ARU 丹绒亚路</option><option value='1227'>TAWAU 斗湖</option><option value='1228'>TENOM 丹南</option><option value='1229'>TUARAN 斗亚兰</option><option value='1230'>K. KINABATANGAN 京那巴当岸</option><option value='1232'>PUTATAN 布打丹</option><option value='1233'>TELUPID 德鲁必</option>"
},
{
"id": "13",
"text": "<option value='1300'>SARAWAK 砂拉越</option><option value='1301'>ASAJAYA 亚沙再也</option><option value='1302'>BALINGIAN 巴林基安</option><option value='1303'>BARAM 巴南</option><option value='1304'>BAU 巴乌</option><option value='1305'>BEKENU 比克奴</option><option value='1306'>BELAGA 柏拉加</option><option value='1307'>BELAWAI 柏拉威</option><option value='1308'>BETONG 木中</option><option value='1309'>BINTANGOR 民都鲁</option><option value='1310'>BINTULU 民都鲁</option><option value='1311'>DALAT 达拉</option><option value='1312'>DARO 达罗</option><option value='1313'>DEBAK 德巴克</option><option value='1314'>ENGKILILI 英吉利里</option><option value='1315'>JULAU 如楼</option><option value='1316'>KABONG 加蓬</option><option value='1317'>KANOWIT 加纳逸</option><option value='1318'>KAPIT 加帛</option><option value='1319'>KOTA SAMARAHAN 古晋</option><option value='1320'>KUCHING 古晋</option><option value='1321'>LAWAS 老越</option><option value='1322'>LIMBANG 林梦</option><option value='1323'>LINGGA 林加</option><option value='1324'>LONG LAMA 隆拉玛</option><option value='1325'>LUBOK ANTU 鲁勃安都</option><option value='1326'>LUNDU 伦乐</option><option value='1327'>MATU 马都</option><option value='1328'>MIRI 美里</option><option value='1329'>MUKAH 木胶</option><option value='1330'>NANGA MEDAMIT 隆美达密</option><option value='1331'>NIAH 尼亚</option><option value='1332'>PEKENU 比克奴</option><option value='1333'>PUSA 布萨</option><option value='1334'>ROBAN 罗邦</option><option value='1335'>SARATOK 砂拉卓</option><option value='1336'>SARIKEI 泗里街</option><option value='1337'>SEBAUH 西布</option><option value='1338'>SEBUYAU 西布瑶</option><option value='1339'>SERIAN 实兰沟</option><option value='1340'>SIMUNJAN 实文然</option><option value='1341'>SONG 桑</option><option value='1342'>SPAOH 斯巴奥</option><option value='1343'>SRI AMAN 斯里阿曼</option><option value='1344'>SUNDAR 孙达</option><option value='1345'>TATAU 达岛</option><option value='1346'>TEBAKANG 德巴康</option><option value='1347'>SIBU 诗巫</option><option value='1348'>BINTANGOR 民都鲁</option><option value='1349'>TEBEDU 德比都</option><option value='1378'>PAKAN 巴干</option><option value='1379'>SIBUTI 西布地</option><option value='1380'>OYA 奥雅</option><option value='1381'>LAPANGAN TERBANG KOTA KINABALU 亚庇机场</option><option value='1382'>MARUDI 马鲁帝</option><option value='1383'>SIBURAN 西布兰</option>"
},
{
"id": "14",
"text": "<option value='1400'>W.PERSEKUTUAN 联邦直辖区</option><option value='1401'>KUALA LUMPUR 吉隆坡</option><option value='1402'>CHERAS 蕉赖</option><option value='1403'>BATU CAVES 黑风洞</option>"
},
{
"id": "15",
"text": "<option value='1501'>W.P LABUAN 纳闽</option>"
},
{
"id": "16",
"text": "<option value='1601'>PUTRAJAYA 布城</option>"
}
]

View File

@@ -0,0 +1,249 @@
[
{"value": "CHN", "text": "中国"},
{"value": "HKG", "text": "中国香港"},
{"value": "MAC", "text": "中国澳门"},
{"value": "TWN", "text": "中国台湾"},
{"value": "AFG", "text": "阿富汗"},
{"value": "ALB", "text": "阿尔巴尼亚"},
{"value": "DZA", "text": "阿尔及利亚"},
{"value": "ASM", "text": "美属萨摩亚"},
{"value": "AND", "text": "安道尔"},
{"value": "AGO", "text": "安哥拉"},
{"value": "AIA", "text": "安圭拉"},
{"value": "ATA", "text": "南极洲"},
{"value": "ATG", "text": "安提瓜和巴布达"},
{"value": "ARG", "text": "阿根廷"},
{"value": "ARM", "text": "亚美尼亚"},
{"value": "ABW", "text": "阿鲁巴"},
{"value": "AUS", "text": "澳大利亚"},
{"value": "AUT", "text": "奥地利"},
{"value": "AZE", "text": "阿塞拜疆"},
{"value": "BHS", "text": "巴哈马"},
{"value": "BHR", "text": "巴林"},
{"value": "BGD", "text": "孟加拉国"},
{"value": "BRB", "text": "巴巴多斯"},
{"value": "BLR", "text": "白俄罗斯"},
{"value": "BEL", "text": "比利时"},
{"value": "BLZ", "text": "伯利兹"},
{"value": "BEN", "text": "贝宁"},
{"value": "BMU", "text": "百慕大"},
{"value": "BTN", "text": "不丹"},
{"value": "BOL", "text": "玻利维亚"},
{"value": "BIH", "text": "波斯尼亚和黑塞哥维那"},
{"value": "BWA", "text": "博茨瓦纳"},
{"value": "BVT", "text": "布韦岛"},
{"value": "BRA", "text": "巴西"},
{"value": "IOT", "text": "英属印度洋领土"},
{"value": "GBN", "text": "英国国民海外领土"},
{"value": "GBO", "text": "英国海外公民"},
{"value": "GBP", "text": "英国保护人"},
{"value": "GBS", "text": "英国国民"},
{"value": "BRN", "text": "文莱"},
{"value": "BGR", "text": "保加利亚"},
{"value": "BFA", "text": "布基纳法索"},
{"value": "BDI", "text": "布隆迪"},
{"value": "KHM", "text": "柬埔寨"},
{"value": "CMR", "text": "喀麦隆"},
{"value": "CAN", "text": "加拿大"},
{"value": "CPV", "text": "佛得角"},
{"value": "CYM", "text": "开曼群岛"},
{"value": "CAF", "text": "中非共和国"},
{"value": "TCD", "text": "乍得"},
{"value": "CHL", "text": "智利"},
{"value": "CXR", "text": "圣诞岛"},
{"value": "CCK", "text": "科科斯(基林)岛"},
{"value": "COL", "text": "哥伦比亚"},
{"value": "COM", "text": "科摩罗"},
{"value": "COG", "text": "刚果"},
{"value": "COK", "text": "库克群岛"},
{"value": "CRI", "text": "哥斯达黎加"},
{"value": "CIV", "text": "科特迪瓦"},
{"value": "HRV", "text": "克罗地亚"},
{"value": "CUB", "text": "古巴"},
{"value": "CYP", "text": "塞浦路斯"},
{"value": "CZE", "text": "捷克共和国"},
{"value": "PRK", "text": "朝鲜民主主义人民共和国"},
{"value": "DPR", "text": "朝鲜民主主义人民共和国"},
{"value": "COD", "text": "刚果民主共和国"},
{"value": "DNK", "text": "丹麦"},
{"value": "DJI", "text": "吉布提"},
{"value": "DMA", "text": "多米尼加"},
{"value": "DOM", "text": "多米尼加共和国"},
{"value": "ECU", "text": "厄瓜多尔"},
{"value": "EGY", "text": "埃及"},
{"value": "SLV", "text": "萨尔瓦多"},
{"value": "GNQ", "text": "赤道几内亚"},
{"value": "ERI", "text": "厄立特里亚"},
{"value": "EST", "text": "爱沙尼亚"},
{"value": "ETH", "text": "埃塞俄比亚"},
{"value": "EUE", "text": "欧盟通行证"},
{"value": "FLK", "text": "福克兰群岛(马尔维纳斯群岛)"},
{"value": "FRO", "text": "法罗群岛"},
{"value": "FJI", "text": "斐济"},
{"value": "FIN", "text": "芬兰"},
{"value": "FXX", "text": "芬兰大都市区"},
{"value": "FRA", "text": "法国"},
{"value": "GUF", "text": "法属圭亚那"},
{"value": "PYF", "text": "法属波利尼西亚"},
{"value": "ATF", "text": "法属南方和南极地区"},
{"value": "GAB", "text": "加蓬"},
{"value": "GMB", "text": "冈比亚"},
{"value": "GEO", "text": "格鲁吉亚"},
{"value": "DGR", "text": "德国"},
{"value": "DEU", "text": "德国"},
{"value": "GHA", "text": "加纳"},
{"value": "GIB", "text": "直布罗陀"},
{"value": "GRC", "text": "希腊"},
{"value": "GRL", "text": "格林兰"},
{"value": "GRD", "text": "格林纳达"},
{"value": "GLP", "text": "瓜德罗普"},
{"value": "GUM", "text": "关岛"},
{"value": "GTM", "text": "危地马拉"},
{"value": "GNB", "text": "几内亚比绍"},
{"value": "GIN", "text": "几内亚"},
{"value": "GUY", "text": "圭亚那"},
{"value": "HTI", "text": "海地"},
{"value": "HMD", "text": "赫德岛和麦克唐纳群岛"},
{"value": "VAT", "text": "教廷(梵蒂冈城)"},
{"value": "HND", "text": "洪都拉斯"},
{"value": "HUN", "text": "匈牙利"},
{"value": "ISL", "text": "冰岛"},
{"value": "IND", "text": "印度"},
{"value": "IDN", "text": "印度尼西亚"},
{"value": "IRN", "text": "伊朗"},
{"value": "IRQ", "text": "伊拉克"},
{"value": "IRL", "text": "爱尔兰"},
{"value": "ISR", "text": "以色列"},
{"value": "ITA", "text": "意大利"},
{"value": "JAM", "text": "牙买加"},
{"value": "JPN", "text": "日本"},
{"value": "JOR", "text": "约旦"},
{"value": "KAZ", "text": "哈萨克斯坦"},
{"value": "KEN", "text": "肯尼亚"},
{"value": "KIR", "text": "基里巴斯"},
{"value": "KWT", "text": "科威特"},
{"value": "KGZ", "text": "吉尔吉斯斯坦"},
{"value": "LAO", "text": "老挝"},
{"value": "LVA", "text": "拉脱维亚"},
{"value": "LBN", "text": "黎巴嫩"},
{"value": "LSO", "text": "莱索托"},
{"value": "LBR", "text": "利比里亚"},
{"value": "LBY", "text": "利比亚"},
{"value": "LIE", "text": "列支敦士登"},
{"value": "LTU", "text": "立陶宛"},
{"value": "LUX", "text": "卢森堡"},
{"value": "MDG", "text": "马达加斯加"},
{"value": "MWI", "text": "马拉维"},
{"value": "MYS", "text": "马来西亚"},
{"value": "MDV", "text": "马尔代夫"},
{"value": "MLI", "text": "马里"},
{"value": "MLT", "text": "马耳他"},
{"value": "MHL", "text": "马绍尔群岛"},
{"value": "MTQ", "text": "马提尼克"},
{"value": "MRT", "text": "毛里塔尼亚"},
{"value": "MUS", "text": "毛里求斯"},
{"value": "MYT", "text": "马约特"},
{"value": "MEX", "text": "墨西哥"},
{"value": "FSM", "text": "密克罗尼西亚(联邦州)"},
{"value": "MCO", "text": "摩纳哥"},
{"value": "MNG", "text": "蒙古"},
{"value": "MNE", "text": "黑山"},
{"value": "MSR", "text": "蒙塞拉特岛"},
{"value": "MAR", "text": "摩洛哥"},
{"value": "MOZ", "text": "莫桑比克"},
{"value": "MMR", "text": "缅甸"},
{"value": "NAM", "text": "纳米比亚"},
{"value": "NRU", "text": "瑙鲁"},
{"value": "NNS", "text": "源国家"},
{"value": "NPL", "text": "尼泊尔"},
{"value": "NLD", "text": "荷兰"},
{"value": "ANT", "text": "荷兰安的列斯"},
{"value": "NTZ", "text": "中立区"},
{"value": "NCL", "text": "新喀里多尼亚"},
{"value": "NZL", "text": "新西兰"},
{"value": "NIC", "text": "尼加拉瓜"},
{"value": "NER", "text": "尼日尔"},
{"value": "NGA", "text": "尼日利亚"},
{"value": "NIU", "text": "纽埃"},
{"value": "NFK", "text": "诺福克岛"},
{"value": "MNP", "text": "北马里亚纳群岛"},
{"value": "NOR", "text": "挪威"},
{"value": "OMN", "text": "阿曼"},
{"value": "PAK", "text": "巴基斯坦"},
{"value": "PLW", "text": "帕劳"},
{"value": "PAN", "text": "巴拿马"},
{"value": "PNG", "text": "巴布亚新几内亚"},
{"value": "PRY", "text": "巴拉圭"},
{"value": "PER", "text": "秘鲁"},
{"value": "PHL", "text": "菲律宾"},
{"value": "PCN", "text": "皮特凯恩群岛"},
{"value": "POL", "text": "波兰"},
{"value": "PRI", "text": "波多黎各"},
{"value": "PRT", "text": "葡萄牙"},
{"value": "QAT", "text": "卡塔尔"},
{"value": "REU", "text": "留尼汪"},
{"value": "ROU", "text": "罗马尼亚"},
{"value": "RUS", "text": "俄罗斯"},
{"value": "RWA", "text": "卢旺达"},
{"value": "BLM", "text": "圣巴泰勒米"},
{"value": "SHN", "text": "圣赫勒拿"},
{"value": "KNA", "text": "圣基茨和尼维斯"},
{"value": "LCA", "text": "圣卢西亚"},
{"value": "MAF", "text": "圣马丁"},
{"value": "SPM", "text": "圣皮埃尔和密克隆"},
{"value": "VCT", "text": "圣文森特和格林纳丁斯"},
{"value": "WSM", "text": "萨摩亚"},
{"value": "SMR", "text": "圣马力诺"},
{"value": "STP", "text": "圣多美和普林西比"},
{"value": "SAU", "text": "沙特阿拉伯"},
{"value": "SEN", "text": "塞内加尔"},
{"value": "SYC", "text": "塞舌尔"},
{"value": "SLE", "text": "塞拉利昂"},
{"value": "SGP", "text": "新加坡"},
{"value": "SXM", "text": "荷属圣马丁"},
{"value": "SVK", "text": "斯洛伐克"},
{"value": "SVN", "text": "斯洛文尼亚"},
{"value": "SLB", "text": "所罗门群岛"},
{"value": "SOM", "text": "索马里"},
{"value": "ZAF", "text": "南非"},
{"value": "SGS", "text": "南乔治亚岛和南桑威奇群岛"},
{"value": "SSD", "text": "南苏丹"},
{"value": "ESP", "text": "西班牙"},
{"value": "LKA", "text": "斯里兰卡"},
{"value": "SDN", "text": "苏丹"},
{"value": "SUR", "text": "苏里南"},
{"value": "SJM", "text": "斯瓦尔巴和扬马延"},
{"value": "SWZ", "text": "斯威士兰"},
{"value": "SWE", "text": "瑞典"},
{"value": "CHE", "text": "瑞士"},
{"value": "SYR", "text": "叙利亚"},
{"value": "TJK", "text": "塔吉克斯坦"},
{"value": "TZA", "text": "坦桑尼亚"},
{"value": "THA", "text": "泰国"},
{"value": "TGO", "text": "多哥"},
{"value": "TKL", "text": "托克劳"},
{"value": "TON", "text": "汤加"},
{"value": "TTO", "text": "特立尼达和多巴哥"},
{"value": "TUN", "text": "突尼斯"},
{"value": "TUR", "text": "土耳其"},
{"value": "TKM", "text": "土库曼斯坦"},
{"value": "TCA", "text": "特克斯和凯科斯群岛"},
{"value": "TUV", "text": "图瓦卢"},
{"value": "UGA", "text": "乌干达"},
{"value": "UKR", "text": "乌克兰"},
{"value": "ARE", "text": "阿联酋"},
{"value": "GBR", "text": "英国"},
{"value": "USA", "text": "美国"},
{"value": "URY", "text": "乌拉圭"},
{"value": "UZB", "text": "乌兹别克斯坦"},
{"value": "VUT", "text": "瓦努阿图"},
{"value": "VEN", "text": "委内瑞拉"},
{"value": "VNM", "text": "越南"},
{"value": "VGB", "text": "英属维尔京群岛"},
{"value": "VIR", "text": "美属维尔京群岛"},
{"value": "WLF", "text": "瓦利斯和富图纳"},
{"value": "ESH", "text": "西撒哈拉"},
{"value": "YEM", "text": "也门"},
{"value": "ZMB", "text": "赞比亚"},
{"value": "ZWE", "text": "津巴布韦"}
]

View File

@@ -0,0 +1,249 @@
[
{"value": "CHN", "text": "China"},
{"value": "HKG", "text": "China Hong Kong"},
{"value": "MAC", "text": "China Macao"},
{"value": "TWN", "text": "China Taiwan"},
{"value": "AFG", "text": "Afghanistan"},
{"value": "ALB", "text": "Albania"},
{"value": "DZA", "text": "Algeria"},
{"value": "ASM", "text": "American Samoa"},
{"value": "AND", "text": "Andorra"},
{"value": "AGO", "text": "Angola"},
{"value": "AIA", "text": "Anguilla"},
{"value": "ATA", "text": "Antarctica"},
{"value": "ATG", "text": "Antigua and Barbuda"},
{"value": "ARG", "text": "Argentina"},
{"value": "ARM", "text": "Armenia"},
{"value": "ABW", "text": "Aruba"},
{"value": "AUS", "text": "Australia"},
{"value": "AUT", "text": "Austria"},
{"value": "AZE", "text": "Azerbaijan"},
{"value": "BHS", "text": "Bahamas"},
{"value": "BHR", "text": "Bahrain"},
{"value": "BGD", "text": "Bangladesh"},
{"value": "BRB", "text": "Barbados"},
{"value": "BLR", "text": "Belarus"},
{"value": "BEL", "text": "Belgium"},
{"value": "BLZ", "text": "Belize"},
{"value": "BEN", "text": "Benin"},
{"value": "BMU", "text": "Bermuda"},
{"value": "BTN", "text": "Bhutan"},
{"value": "BOL", "text": "Bolivia"},
{"value": "BIH", "text": "Bosnia and Herzegovina"},
{"value": "BWA", "text": "Botswana"},
{"value": "BVT", "text": "Bouvet Island"},
{"value": "BRA", "text": "Brazil"},
{"value": "IOT", "text": "British Indian Ocean Territory"},
{"value": "GBN", "text": "British National Overseas"},
{"value": "GBO", "text": "British Overseas Citizen"},
{"value": "GBP", "text": "British Protected Person"},
{"value": "GBS", "text": "British National"},
{"value": "BRN", "text": "Brunei"},
{"value": "BGR", "text": "Bulgaria"},
{"value": "BFA", "text": "Burkina Faso"},
{"value": "BDI", "text": "Burundi"},
{"value": "KHM", "text": "Cambodia"},
{"value": "CMR", "text": "Cameroon"},
{"value": "CAN", "text": "Canada"},
{"value": "CPV", "text": "Cape Verde"},
{"value": "CYM", "text": "Cayman Islands"},
{"value": "CAF", "text": "Central African Republic"},
{"value": "TCD", "text": "Chad"},
{"value": "CHL", "text": "Chile"},
{"value": "CXR", "text": "Christmas Island"},
{"value": "CCK", "text": "Cocos (Keeling) Islands"},
{"value": "COL", "text": "Colombia"},
{"value": "COM", "text": "Comoros"},
{"value": "COG", "text": "Congo"},
{"value": "COK", "text": "Cook Islands"},
{"value": "CRI", "text": "Costa Rica"},
{"value": "CIV", "text": "Côte d'Ivoire"},
{"value": "HRV", "text": "Croatia"},
{"value": "CUB", "text": "Cuba"},
{"value": "CYP", "text": "Cyprus"},
{"value": "CZE", "text": "Czech Republic"},
{"value": "PRK", "text": "Democratic People's Republic of Korea"},
{"value": "DPR", "text": "Democratic People's Republic of Korea"},
{"value": "COD", "text": "Democratic Republic of the Congo"},
{"value": "DNK", "text": "Denmark"},
{"value": "DJI", "text": "Djibouti"},
{"value": "DMA", "text": "Dominica"},
{"value": "DOM", "text": "Dominican Republic"},
{"value": "ECU", "text": "Ecuador"},
{"value": "EGY", "text": "Egypt"},
{"value": "SLV", "text": "El Salvador"},
{"value": "GNQ", "text": "Equatorial Guinea"},
{"value": "ERI", "text": "Eritrea"},
{"value": "EST", "text": "Estonia"},
{"value": "ETH", "text": "Ethiopia"},
{"value": "EUE", "text": "European Union Passport"},
{"value": "FLK", "text": "Falkland Islands (Malvinas)"},
{"value": "FRO", "text": "Faroe Islands"},
{"value": "FJI", "text": "Fiji"},
{"value": "FIN", "text": "Finland"},
{"value": "FXX", "text": "Metropolitan Finland"},
{"value": "FRA", "text": "France"},
{"value": "GUF", "text": "French Guiana"},
{"value": "PYF", "text": "French Polynesia"},
{"value": "ATF", "text": "French Southern and Antarctic Lands"},
{"value": "GAB", "text": "Gabon"},
{"value": "GMB", "text": "Gambia"},
{"value": "GEO", "text": "Georgia"},
{"value": "DGR", "text": "Germany"},
{"value": "DEU", "text": "Germany"},
{"value": "GHA", "text": "Ghana"},
{"value": "GIB", "text": "Gibraltar"},
{"value": "GRC", "text": "Greece"},
{"value": "GRL", "text": "Greenland"},
{"value": "GRD", "text": "Grenada"},
{"value": "GLP", "text": "Guadeloupe"},
{"value": "GUM", "text": "Guam"},
{"value": "GTM", "text": "Guatemala"},
{"value": "GNB", "text": "Guinea-Bissau"},
{"value": "GIN", "text": "Guinea"},
{"value": "GUY", "text": "Guyana"},
{"value": "HTI", "text": "Haiti"},
{"value": "HMD", "text": "Heard Island and McDonald Islands"},
{"value": "VAT", "text": "Holy See (Vatican City)"},
{"value": "HND", "text": "Honduras"},
{"value": "HUN", "text": "Hungary"},
{"value": "ISL", "text": "Iceland"},
{"value": "IND", "text": "India"},
{"value": "IDN", "text": "Indonesia"},
{"value": "IRN", "text": "Iran"},
{"value": "IRQ", "text": "Iraq"},
{"value": "IRL", "text": "Ireland"},
{"value": "ISR", "text": "Israel"},
{"value": "ITA", "text": "Italy"},
{"value": "JAM", "text": "Jamaica"},
{"value": "JPN", "text": "Japan"},
{"value": "JOR", "text": "Jordan"},
{"value": "KAZ", "text": "Kazakhstan"},
{"value": "KEN", "text": "Kenya"},
{"value": "KIR", "text": "Kiribati"},
{"value": "KWT", "text": "Kuwait"},
{"value": "KGZ", "text": "Kyrgyzstan"},
{"value": "LAO", "text": "Laos"},
{"value": "LVA", "text": "Latvia"},
{"value": "LBN", "text": "Lebanon"},
{"value": "LSO", "text": "Lesotho"},
{"value": "LBR", "text": "Liberia"},
{"value": "LBY", "text": "Libya"},
{"value": "LIE", "text": "Liechtenstein"},
{"value": "LTU", "text": "Lithuania"},
{"value": "LUX", "text": "Luxembourg"},
{"value": "MDG", "text": "Madagascar"},
{"value": "MWI", "text": "Malawi"},
{"value": "MYS", "text": "Malaysia"},
{"value": "MDV", "text": "Maldives"},
{"value": "MLI", "text": "Mali"},
{"value": "MLT", "text": "Malta"},
{"value": "MHL", "text": "Marshall Islands"},
{"value": "MTQ", "text": "Martinique"},
{"value": "MRT", "text": "Mauritania"},
{"value": "MUS", "text": "Mauritius"},
{"value": "MYT", "text": "Mayotte"},
{"value": "MEX", "text": "Mexico"},
{"value": "FSM", "text": "Federated States of Micronesia"},
{"value": "MCO", "text": "Monaco"},
{"value": "MNG", "text": "Mongolia"},
{"value": "MNE", "text": "Montenegro"},
{"value": "MSR", "text": "Montserrat"},
{"value": "MAR", "text": "Morocco"},
{"value": "MOZ", "text": "Mozambique"},
{"value": "MMR", "text": "Myanmar"},
{"value": "NAM", "text": "Namibia"},
{"value": "NRU", "text": "Nauru"},
{"value": "NNS", "text": "Country of Origin"},
{"value": "NPL", "text": "Nepal"},
{"value": "NLD", "text": "Netherlands"},
{"value": "ANT", "text": "Netherlands Antilles"},
{"value": "NTZ", "text": "Neutral Zone"},
{"value": "NCL", "text": "New Caledonia"},
{"value": "NZL", "text": "New Zealand"},
{"value": "NIC", "text": "Nicaragua"},
{"value": "NER", "text": "Niger"},
{"value": "NGA", "text": "Nigeria"},
{"value": "NIU", "text": "Niue"},
{"value": "NFK", "text": "Norfolk Island"},
{"value": "MNP", "text": "Northern Mariana Islands"},
{"value": "NOR", "text": "Norway"},
{"value": "OMN", "text": "Oman"},
{"value": "PAK", "text": "Pakistan"},
{"value": "PLW", "text": "Palau"},
{"value": "PAN", "text": "Panama"},
{"value": "PNG", "text": "Papua New Guinea"},
{"value": "PRY", "text": "Paraguay"},
{"value": "PER", "text": "Peru"},
{"value": "PHL", "text": "Philippines"},
{"value": "PCN", "text": "Pitcairn Islands"},
{"value": "POL", "text": "Poland"},
{"value": "PRI", "text": "Puerto Rico"},
{"value": "PRT", "text": "Portugal"},
{"value": "QAT", "text": "Qatar"},
{"value": "REU", "text": "Réunion"},
{"value": "ROU", "text": "Romania"},
{"value": "RUS", "text": "Russia"},
{"value": "RWA", "text": "Rwanda"},
{"value": "BLM", "text": "Saint Barthélemy"},
{"value": "SHN", "text": "Saint Helena"},
{"value": "KNA", "text": "Saint Kitts and Nevis"},
{"value": "LCA", "text": "Saint Lucia"},
{"value": "MAF", "text": "Saint Martin"},
{"value": "SPM", "text": "Saint Pierre and Miquelon"},
{"value": "VCT", "text": "Saint Vincent and the Grenadines"},
{"value": "WSM", "text": "Samoa"},
{"value": "SMR", "text": "San Marino"},
{"value": "STP", "text": "Sao Tome and Principe"},
{"value": "SAU", "text": "Saudi Arabia"},
{"value": "SEN", "text": "Senegal"},
{"value": "SYC", "text": "Seychelles"},
{"value": "SLE", "text": "Sierra Leone"},
{"value": "SGP", "text": "Singapore"},
{"value": "SXM", "text": "Sint Maarten (Dutch part)"},
{"value": "SVK", "text": "Slovakia"},
{"value": "SVN", "text": "Slovenia"},
{"value": "SLB", "text": "Solomon Islands"},
{"value": "SOM", "text": "Somalia"},
{"value": "ZAF", "text": "South Africa"},
{"value": "SGS", "text": "South Georgia and the South Sandwich Islands"},
{"value": "SSD", "text": "South Sudan"},
{"value": "ESP", "text": "Spain"},
{"value": "LKA", "text": "Sri Lanka"},
{"value": "SDN", "text": "Sudan"},
{"value": "SUR", "text": "Suriname"},
{"value": "SJM", "text": "Svalbard and Jan Mayen"},
{"value": "SWZ", "text": "Eswatini"},
{"value": "SWE", "text": "Sweden"},
{"value": "CHE", "text": "Switzerland"},
{"value": "SYR", "text": "Syria"},
{"value": "TJK", "text": "Tajikistan"},
{"value": "TZA", "text": "Tanzania"},
{"value": "THA", "text": "Thailand"},
{"value": "TGO", "text": "Togo"},
{"value": "TKL", "text": "Tokelau"},
{"value": "TON", "text": "Tonga"},
{"value": "TTO", "text": "Trinidad and Tobago"},
{"value": "TUN", "text": "Tunisia"},
{"value": "TUR", "text": "Turkey"},
{"value": "TKM", "text": "Turkmenistan"},
{"value": "TCA", "text": "Turks and Caicos Islands"},
{"value": "TUV", "text": "Tuvalu"},
{"value": "UGA", "text": "Uganda"},
{"value": "UKR", "text": "Ukraine"},
{"value": "ARE", "text": "United Arab Emirates"},
{"value": "GBR", "text": "United Kingdom"},
{"value": "USA", "text": "United States"},
{"value": "URY", "text": "Uruguay"},
{"value": "UZB", "text": "Uzbekistan"},
{"value": "VUT", "text": "Vanuatu"},
{"value": "VEN", "text": "Venezuela"},
{"value": "VNM", "text": "Vietnam"},
{"value": "VGB", "text": "British Virgin Islands"},
{"value": "VIR", "text": "U.S. Virgin Islands"},
{"value": "WLF", "text": "Wallis and Futuna"},
{"value": "ESH", "text": "Western Sahara"},
{"value": "YEM", "text": "Yemen"},
{"value": "ZMB", "text": "Zambia"},
{"value": "ZWE", "text": "Zimbabwe"}
]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,207 @@
{
"AFG": "AFG",
"ALB": "ALB",
"DZA": "DZA",
"AND": "AND",
"AGO": "AGO",
"ATG": "ATG",
"ARG": "ARG",
"ARM": "ARM",
"AUS": "AUS",
"AUT": "AUT",
"AZE": "AZE",
"BHS": "BHS",
"BHR": "BHR",
"BGD": "BGD",
"BRB": "BRB",
"BLR": "BLR",
"BEL": "BEL",
"BLZ": "BLZ",
"BEN": "BEN",
"BTN": "BTN",
"BOL": "BOL",
"BIH": "BIH",
"BWA": "BWA",
"BRA": "BRA",
"GBR": "GBR",
"GBN": "GBN",
"GBO": "GBO",
"GBD": "GBD",
"GBP": "GBP",
"GBS": "GBS",
"BRN": "BRN",
"BGR": "BGR",
"BFA": "BFA",
"BDI": "BDI",
"CPV": "CPV",
"KHM": "KHM",
"CMR": "CMR",
"CAN": "CAN",
"CAF": "CAF",
"TCD": "TCD",
"CHL": "CHL",
"CHN": "CHN",
"HKG": "HKG",
"MAC": "MAC",
"TWN": "TWN",
"COL": "COL",
"COM": "COM",
"COG": "COG",
"CRI": "CRI",
"HRV": "HRV",
"CUB": "CUB",
"CYP": "CYP",
"CZE": "CZE",
"PRK": "PRK",
"COD": "COD",
"DJI": "DJI",
"DMA": "DMA",
"DOM": "DOM",
"ECU": "ECU",
"EGY": "EGY",
"GNQ": "GNQ",
"ERI": "ERI",
"EST": "EST",
"ETH": "ETH",
"FJI": "FJI",
"PHL": "PHL",
"FIN": "FIN",
"FRA": "FRA",
"GAB": "GAB",
"GMB": "GMB",
"GEO": "GEO",
"DEU": "DEU",
"GHA": "GHA",
"GRC": "GRC",
"GRD": "GRD",
"GTM": "GTM",
"GIN": "GIN",
"GNB": "GNB",
"GUY": "GUY",
"HTI": "HTI",
"HND": "HND",
"HUN": "HUN",
"ISL": "ISL",
"IND": "IND",
"IDN": "IDN",
"IRN": "IRN",
"IRQ": "IRQ",
"IRL": "IRL",
"ISR": "ISR",
"ITA": "ITA",
"CIV": "CIV",
"JAM": "JAM",
"JPN": "JPN",
"JOR": "JOR",
"KAZ": "KAZ",
"KEN": "KEN",
"KIR": "KIR",
"KNA": "KNA",
"KOR": "KOR",
"RKS": "RKS",
"KWT": "KWT",
"KGZ": "KGZ",
"LAO": "LAO",
"LVA": "LVA",
"LBN": "LBN",
"LSO": "LSO",
"LBR": "LBR",
"LBY": "LBY",
"LIE": "LIE",
"LTU": "LTU",
"LUX": "LUX",
"MKD": "FYR",
"MDG": "MDG",
"MWI": "MWI",
"MYS": "MYS",
"MDV": "MDV",
"MLI": "MLI",
"MLT": "MLT",
"MHL": "MHL",
"MRT": "MRT",
"MUS": "MUS",
"MEX": "MEX",
"FSM": "FSM",
"MDA": "MDA",
"MCO": "MCO",
"MNG": "MNG",
"MNE": "MNE",
"MAR": "MAR",
"MOZ": "MOZ",
"MMR": "MMR",
"NAM": "NAM",
"NRU": "NRU",
"NPL": "NPL",
"NLD": "NLD",
"NZL": "NZL",
"VUT": "VUT",
"NIC": "NIC",
"NER": "NER",
"NGA": "NGA",
"NOR": "NOR",
"OMN": "OMN",
"XXX": "XXX",
"PAK": "PAK",
"PLW": "PLW",
"PSE": "PSE",
"PAN": "PAN",
"PNG": "PNG",
"PRY": "PRY",
"PER": "PER",
"POL": "POL",
"PRT": "PRT",
"QAT": "QAT",
"XXC": "XXC",
"XXB": "XXB",
"ROU": "ROU",
"RUS": "RUS",
"RWA": "RWA",
"SLV": "SLV",
"SMR": "SMR",
"WSM": "WSM",
"STP": "STP",
"SAU": "SAU",
"SEN": "SEN",
"SRB": "SRB",
"SYC": "SYC",
"SLE": "SLE",
"SVK": "SVK",
"SVN": "SVN",
"SLB": "SLB",
"SOM": "SOM",
"ZAF": "ZAF",
"ESP": "ESP",
"LKA": "LKA",
"LCA": "LCA",
"VCT": "VCT",
"XXA": "ZZD",
"SDN": "SDN",
"SUR": "SUR",
"SWZ": "SWZ",
"SWE": "SWE",
"CHE": "CHE",
"SYR": "SYR",
"TJK": "TJK",
"TZA": "TZA",
"THA": "THA",
"TLS": "TLS",
"TGO": "TGO",
"TON": "TON",
"TTO": "TTO",
"TUN": "TUN",
"TUR": "TUR",
"TKM": "TKM",
"TUV": "TUV",
"UGA": "UGA",
"UKR": "UKR",
"ARE": "ARE",
"USA": "USA",
"URY": "URY",
"UZB": "UZB",
"VAT": "VAT",
"VEN": "VEN",
"VNM": "VNM",
"YEM": "YEM",
"ZMB": "ZMB",
"ZWE": "ZWE"
}

8
public/nginx.htaccess Normal file
View File

@@ -0,0 +1,8 @@
location ~* (runtime|application)/{
return 403;
}
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}

2
public/robots.txt Normal file
View File

@@ -0,0 +1,2 @@
User-agent: *
Disallow:

19
public/router.php Normal file
View File

@@ -0,0 +1,19 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id$
if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) {
return false;
} else {
$_SERVER["SCRIPT_FILENAME"] = __DIR__ . '/index.php';
require __DIR__ . "/index.php";
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

View 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;
}

View 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
View 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;
}

View 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

File diff suppressed because one or more lines are too long

143
public/static/css/jump.css Normal file
View 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;
}
}

File diff suppressed because one or more lines are too long

View 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;
}

View File

@@ -0,0 +1,3 @@
:root {
--main-color: #00469d;
}

697
public/static/css/newin.css Normal file
View 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);
}
/* containerPC 单行不换行;手机允许换行让 #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; }

View 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;
}
}

View 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

File diff suppressed because one or more lines are too long

View 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

File diff suppressed because it is too large Load Diff

View 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
}

File diff suppressed because it is too large Load Diff

View 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
View 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
View 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
View 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

File diff suppressed because one or more lines are too long

BIN
public/static/image/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
public/static/image/pdf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
public/static/image/wx.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

BIN
public/static/image/zf3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
public/static/image/zfb.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View 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

File diff suppressed because one or more lines are too long

13
public/static/js/jquery-weui.min.js vendored Normal file

File diff suppressed because one or more lines are too long

6
public/static/js/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

399
public/static/js/mala.js Normal file
View 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
View 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 和 signatureapp_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
View File

@@ -0,0 +1,45 @@
$(function(){
// nav
var _width=$(window).width();
$('.menu-btn').click(function(event) {
event.stopPropagation()
$('.nav').stop().slideToggle();
});
})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View 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
}

View 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>&nbsp;</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
});