1
0
mirror of https://codeberg.org/ilovexjp/health-code-simulator.git synced 2024-11-22 06:34:51 +08:00

Initial commit

This commit is contained in:
ilovexjp 2022-11-17 10:34:59 +00:00
commit 1c6d28235c
453 changed files with 40042 additions and 0 deletions

100
.gitignore vendored Normal file
View File

@ -0,0 +1,100 @@
/build
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# Swap
[._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
Sessionx.vim
# Temporary
.netrwhist
*~
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix

12
Makefile Normal file
View File

@ -0,0 +1,12 @@
build: clean makeassets
./build.sh
serve: makeassets
python3 -m http.server --directory src 80
makeassets:
sed -i "s/\(\/\*\ BEGIN\ ASSETS\ \*\/\).*/\1/" src/service-worker.js
./makeassets.sh >> src/service-worker.js
clean:
rm -rf build

18
README.md Normal file
View File

@ -0,0 +1,18 @@
# health-code-simulator
## Build
### Build for production
```shell
npm i -g uglify-js clean-css-cli html-minifier
make build
```
### Launch local server
Requires python3.
```shell
make serve
```

26
build.sh Executable file
View File

@ -0,0 +1,26 @@
echo "Building project..."
BUILDPATH=./build
mkdir $BUILDPATH
echo "Copying files..."
cp -RX ./src/ $BUILDPATH/
for file in $( find src -type f -name "*.html"); do
html-minifier $file --collapse-whitespace --remove-comments --remove-optional-tags --remove-redundant-attributes --remove-script-type-attributes --remove-tag-whitespace --use-short-doctype --minify-css true --minify-js > $BUILDPATH/${file#*src/} &&
echo "+"${file#*src/} &
done
for file in $( find src -type f -name "*.css"); do
cleancss -o $BUILDPATH/${file#*src/} $file &&
echo "+"${file#*src/} &
done
for file in $( find src -type f -name "*.js"); do
uglifyjs $file -c -o $BUILDPATH/${file#*src/} &&
echo "+"${file#*src/} &
done
wait;
echo "Build completed"

14
makeassets.sh Executable file
View File

@ -0,0 +1,14 @@
cd src
printf "assets={"
printf "\"root\":[\"./\","
find . -maxdepth 1 -type f -not -path '*/.*' -not -path './service-worker.js' | xargs printf "\"%s\"," "$@"
printf "],"
for DIR in $(find . -type d -mindepth 1 -maxdepth 1); do
printf "\""${DIR#*./}"\":["
printf "\"%s/\"," "${DIR#*./}"
find $DIR -type f -not -path '*/.*' | xargs printf "\"%s\"," "$@"
# find $DIR -type d -not -path '*/.*' | xargs printf "\"%s/\"," "$@"
printf "],"
done
printf "};"

356
src/app.css Normal file
View File

@ -0,0 +1,356 @@
body {
font-family: "PingFang SC", sans-serif;
margin: 20px 4%;
background-color: #fcfcfc;
}
.header {
margin: 20px 0;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.page-title-container {
display: flex;
flex-direction: row;
align-items: center;
}
.page-title {
font-size: 24px;
font-weight: bold;
color: #000;
}
.page-title-icon {
width: 30px;
height: 30px;
margin-right: 8px;
}
.icon {
width: 1.3em;
height: 1.3em;
margin: 0 2px;
opacity: .87;
}
.icon-align {
display: flex;
flex-direction: row;
align-items: center;
}
.sw-status {
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
color: rgba(0, 0, 0, .6);
}
.sw-help-text {
display: flex;
flex-direction: row;
align-items: center;
}
.sw-help-text > img {
width: 15px;
height: 15px;
margin: 2px;
filter: invert(0.4);
}
/* .sw-progress {
color: #000;
opacity: 0.4;
}
.sw-progress-bar {
margin-top: 4px;
width: min(100px, 23vw);
height: 5px;
background-color: rgba(0, 0, 0, .1);
}
.sw-progress-bar-fill {
height: 100%;
width: 0;
background-color: #000;
} */
.apps-list {
display: flex;
flex-direction: column;
align-items: stretch;
margin-bottom: 16px;
}
.app {
border-radius: 4px;
padding: 8px;
margin: 4px 0;
display: flex;
flex-direction: column;
background-color: #fff;
box-shadow: 0 2px 1px -1px rgb(0 0 0 / 20%), 0 1px 1px 0 rgb(0 0 0 / 14%),
0 1px 3px 0 rgb(0 0 0 / 12%);
transition: all 0.1s ease-out;
}
.app.selected {
opacity: 0.6;
}
.app:has(.app-menu-item.active[data-role="pin"]):not(.inactivated) {
order: -1;
}
.app.inactivated {
order: 1000 !important;
}
.app.inactivated .app-title {
color: rgba(0, 0, 0, 0.6);
font-size: 14px;
margin-left: 8px;
}
.app.inactivated .app-title::after {
content: "暂不可用";
margin-left: 5px;
font-weight: 400;
}
.app.inactivated .app-menu {
display: none;
}
.app.inactivated .app-content > img {
display: none;
}
.app.inactivated .app-title-icon {
display: none;
}
.app-content {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: stretch;
user-select: none;
}
.app-content > img {
height: 54px;
width: 54px;
margin-right: 10px;
padding: 2px;
border-radius: 100px;
border: 2px dotted #aaa;
}
.app-content > .app-description {
display: flex;
flex-direction: column;
justify-content: space-around;
}
.app-title {
font-size: 19px;
font-weight: 700;
flex-shrink: 0;
}
.app-title-wrapper {
display: flex;
flex-direction: row;
align-items: center;
}
.app-title-icon {
height: 18px;
width: 18px;
margin-left: 5px;
opacity: 0.6;
transition: margin-left 0.1s ease-out;
}
.app.selected .app-title-icon {
margin-left: 16px;
}
.app-menu {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
margin-top: 8px;
}
.app-menu-item {
height: 20px;
font-size: 15px;
background-color: rgba(0, 0, 0, 0.05);
color: rgba(0, 0, 0, 0.6);
border-radius: 4px;
padding: 4px 6px;
margin: 2px 9px 2px 0;
display: flex;
flex-direction: row;
align-items: center;
}
.app-menu-item.active {
background-color: rgba(0, 0, 0, 0.9);
color: rgba(255, 255, 255, 0.87);
}
.app-menu-item[data-role="link"]:hover {
background-color: rgba(0, 0, 0, 0.9);
color: rgba(255, 255, 255, 0.87);
}
.app-menu-app-icon {
height: 18px;
width: 18px;
}
.app-menu-item.active .app-menu-app-icon {
filter: invert(1);
}
.app-menu-item[data-role="link"]:hover .app-menu-app-icon {
filter: invert(1);
}
.app-menu-app-title {
margin-left: 2px;
}
footer {
margin: 24px 0;
}
.links-list {
margin: 10px;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
flex-wrap: wrap;
color: rgba(0, 0, 0, 0.67);
}
.link-wrapper {
margin: 2px 8px;
display: flex;
flex-direction: row;
align-items: center;
font-size: 14px;
}
.link-wrapper > img {
width: 20px;
height: 20px;
}
.link-wrapper > span {
margin-left: 6px;
}
.link-wrapper > a {
margin-left: 6px;
color: #999;
text-decoration: underline;
}
.links-list-help {
color: #999;
}
#last-update-version {
margin-left: 4px;
}
.app-help {
display: none;
font-size: 14px;
margin: 8px 4px 0 4px;
background-color: rgba(0, 0, 0, 0.05);
color: rgba(0, 0, 0, 0.75);
border-radius: 8px;
padding: 8px 12px;
line-height: 150%;
}
.app-help-subtitle {
font-weight: 700;
font-size: 18px;
margin: 4px 0;
}
.app-contributors-container {
margin-top: 8px;
}
.app-contributor {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
margin-top: 8px;
}
.app-contributor-namestrip {
margin-top: 4px;
}
.contributor-nametag {
font-weight: 700;
font-style: italic;
font-size: 17px;
color: transparent;
background: linear-gradient(-68deg, #0716f6 0, #00d1ff 100%);
background-clip: text;
-webkit-background-clip: text;
padding: 4px 2px;
margin-right: 4px;
}
.app-contributor-namestrip .contributor-nametag {
margin: 0;
display: inline-block;
height: 21px;
background: #093779;
background: linear-gradient(68deg, #f9c507 0, #ff0061 100%);
padding: 4px 12px;
border-top-left-radius: 50px;
border-bottom-left-radius: 50px;
color: #fff;
-webkit-text-stroke: 0.5px rgba(0, 0, 0, 0.8);
text-stroke: 0.5px rgba(0, 0, 0, 0.8);
}
.contributor-description {
font-style: italic;
font-size: 13px;
color: rgba(0, 0, 0, 0.6);
}
.app-contributor-namestrip .contributor-description {
display: flex;
align-items: center;
justify-content: center;
padding: 4px 12px 4px 6px;
height: 19px;
border: 1px solid rgba(0, 0, 0, 0.6);
border-left-width: 0;
border-top-right-radius: 50px;
border-bottom-right-radius: 50px;
background-color: #fff;
}

467
src/app.js Normal file
View File

@ -0,0 +1,467 @@
const apps = {
"trip-card": {
title: "通信大数据行程卡",
icon: "trip-card/static/img_arrow@2x.png",
link: "trip-card/index.html",
color: "#2ba667",
help_text: "<p>点击手机号或途经地点可以修改相关信息。</p>",
menu: [],
},
"ykm": {
title: "粤康码",
icon: "ykm/static/yss.jpeg",
link: "ykm/index.html",
color: "#aacc00",
help_text:
"<p>点击姓名、城市、场所地址等可以修改对应<p>点击二维码可以切换 “粤康码” 及 “粤康码场所通行” 页面。</p>",
menu: [
{ title: "场所", icon: "place", link: "ykm/checkin.html" },
{ title: "核酸", icon: "vaccines", link: "ykm/detail.html" },
{ title: "广州", icon: "map", link: "gwongzau-hc/checkin.html" },
],
},
"skm": {
title: "苏康码",
icon: "skm/src/jszwfw.png",
link: "skm/index.html",
color: "#a3a8eb99",
help_text:
"<p>点击姓名、证件号、场所地址等可以修改对应信息;</p><p>点击二维码可以展示签到页面。</p>",
menu: [
{ title: "场所", icon: "place", link: "skm/index.html#checkin" },
{ title: "核酸", icon: "vaccines", link: "skm/detail.html" },
],
},
"jkb": {
title: "北京健康宝",
icon: "jkb/static/logo_jiankangbao1@2x.png",
link: "jkb/index.html",
color: "#fa6666",
help_text:
"<p>点击姓名、证件号可以修改对应信息;</p><p>点击照片可以更改或移除照片,超过 4MB 的图片可能无法在本地保存;</p><p>点击右上角二维码标志可以在 “本人健康码自查询” 和 “本人信息扫码登记” 间切换;</p><p>点击 “未见异常” 可以切换 “通勤” 标志。</p>",
menu: [
{ title: "扫描", icon: "qr_code_scanner", link: "jkb/scan.html" },
{ title: "场所", icon: "place", link: "jkb/checkin.html" },
],
},
"tfjkt": {
title: "四川天府健康通",
icon: "tfjkt/static/message-icon.png",
link: "tfjkt/index.html",
color: "#0ba099",
help_text:
"<p>点击姓名、证件号、场所地址等可以修改对应信息;</p><p>点击“扫场所码”展示场所码。</p>",
menu: [{ title: "场所", icon: "place", link: "tfjkt/checkin.html" }],
},
"ssm": {
title: "随申码",
icon: "ssm/static/ssbapp-logo.png",
link: "ssm/index.html",
color: "#bf4046",
help_text:
"<p>点击姓名、证件号、场所地址等可以修改对应信息;</p><p>点击照片可以更改或移除照片,超过 4MB 的图片可能无法在本地保存;</p><p>点击二维码展示场所码。</p>",
menu: [{ title: "场所", icon: "place", link: "ssm/checkin.html" }],
},
"shandong-hc": {
title: "山东健康通行码",
icon: "shandong-hc/static/logo.png",
link: "shandong-hc/index.html",
color: "#68b82e",
help_text:
"<p>点击姓名、证件号、场所地址等可以修改对应信息;</p><p>点击二维码可以切换到场所码页面。</p>",
menu: [
{
title: "场所",
icon: "place",
link: "shandong-hc/index.html#checkin",
},
{ title: "威海", icon: "map", link: "weihai-hc/index.html" },
],
contributors: [
{
name: "LibertyNeverDies",
description: "参与制作",
style: "namestrip",
},
],
},
"hubei-hc": {
title: "湖北健康码",
icon: "hubei-hc/static/logo.png",
link: "hubei-hc/index.html",
color: "#9a1640",
help_text:
"<p>点击姓名、证件号码可以修改对应信息。</p>",
},
"wuhan-hc": {
title: "湖北健康码·武汉",
icon: "wuhan-hc/static/QRlogo.png",
link: "wuhan-hc/index.html",
color: "#af9bff",
help_text:
"<p>点击姓名、证件号等可以修改对应信息;</p><p>点击通信行程卡“点击核验”可以添加行程戳;</p><p>点击“已采样”标记可以隐藏该标记。</p>",
},
"hunan-hc": {
title: "湖南电子健康卡",
icon: "hunan-hc/static/logo-b18dcf7bf55c412ec04989061d0512ad.png",
link: "hunan-hc/index.html",
help_text: "<p>点击姓名、证件号、采样点、场所地址等可以修改对应信息。</p><p>点击“二维码”可以切换“健康卡”与“场所码”</p>",
menu: [{ title: "场所", icon: "place", link: "hunan-hc/checkin.html"}],
contributors: [
{ name: "uodedcli", description: "参与制作", style: "namestrip" },
],
},
"fujian-hc": {
title: "福建健康码",
icon: "fujian-hc/static/jkm_logo.png",
link: "fujian-hc/index.html",
color: "#3a5eff",
help_text:
"<p>点击姓名、证件号可以修改对应信息;</p><p>点击 “扫一扫” 进入场所张贴码。</p>",
menu: [{ title: "场所", icon: "place", link: "fujian-hc/checkin.html" }],
},
"zhejiang-hc": {
title: "浙江健康码",
icon: "zhejiang-hc/static/logo.ico",
link: "zhejiang-hc/index.html",
color: "#57ac6c",
help_text: "<p>点击城市名、姓名、证件号可以修改对应信息。</p>",
},
"henan-hc": {
title: "豫康码",
icon: "henan-hc/static/logo.png",
link: "henan-hc/index.html",
color: "#e84336",
help_text:
"<p>点击城市名、姓名、证件号可以修改对应信息;</p><p>点击二维码可以切换至“疫情防控场所码”。</p>",
menu: [{ title: "场所", icon: "place", link: "henan-hc/checkin.html" }],
},
"tianjin-hc": {
title: "天津数字防疫",
icon: "tianjin-hc/static/img/logo.png",
link: "tianjin-hc/index.html",
help_text:
"<p>前往“我的”一栏后点击任意位置,在配置页填写好姓名和身份证号、保存并返回后才可使用。</p>"
},
"shaanxi-hc": {
title: "陕西一码通",
icon: "shaanxi-hc/static/myCode/greenLogo.png",
link: "shaanxi-hc/index.html",
color: "#0bae81",
help_text:
"<p>点击地点名称、姓名、证件号可以修改对应信息;</p><p>点击核酸检测时间可以切换小时数;</p><p>点击“已采样”可以切换今日是否采样。</p>",
menu: [{ title: "场所", icon: "place", link: "shaanxi-hc/checkin.html" }],
}
};
function onIconFail(t) {
t.closest(".app").classList.add("inactivated");
}
function render() {
let html = "";
for (const [name, app] of Object.entries(apps)) {
let menu_html = "";
if (app.menu) {
for (const menu_item of app.menu) {
menu_html += `
<div class="app-menu-item" data-role="link" data-link="${menu_item.link || ""}">
<img class="app-menu-app-icon" src="common/icons/${menu_item.icon || "qr_code"}.svg"></img>
<span class="app-menu-app-title">${menu_item.title}</span>
</div>
`;
}
}
menu_html += `
<div class="app-menu-item ${
localStorage.getItem("pinned")
&& localStorage.getItem("pinned").split(",").indexOf(name) >= 0
&& "active" || ""
}" data-role="pin">
<img class="app-menu-app-icon" src="common/icons/push_pin.svg"></img>
</div>`;
if (app.help_text) {
menu_html += `
<div class="app-menu-item" data-role="help">
<img class="app-menu-app-icon" src="common/icons/info.svg"></img>
</div>
`;
}
let credits_html = "";
if (app.contributors) {
for (const contributor of app.contributors) {
if (contributor.style == "namestrip") {
credits_html += `
<div class="app-contributor app-contributor-namestrip">
<span class="contributor-nametag">${contributor.name}</span>
<span class="contributor-description">${contributor.description}</span>
</div>
`;
} else if (contributor.style == "text") {
credits_html += `
<div class="app-contributor">
<span class="contributor-nametag">${contributor.name}</span>
<span class="contributor-description">${contributor.description}</span>
</div>
`;
}
}
}
html += `
<div class="app" data-link="${app.link || ""}" data-role="app" data-app-name="${name}">
<div class="app-content">
<img src="${app.icon}" onerror="onIconFail(this);" style="border-color: ${app.color || "#aaa"};">
<div class="app-description">
<div class="app-title-wrapper">
<span class="app-title">${app.title}</span>
<img class="app-title-icon" src="common/icons/arrow_forward.svg"></img>
</div>
<div class="app-menu">
${menu_html}
</div>
</div>
</div>
<div class="app-help">
<div class="app-help-subtitle">使用说明</div>
${app.help_text}
${credits_html ? `
<div class="app-help-subtitle">致谢</div>
<div class="app-contributors-container">
${credits_html}
</div>
` : ""}
</div>
</div>`;
}
document.querySelector(".apps-list").innerHTML = html;
const elements = [
...document.querySelectorAll(".app:not(.inactivated)"),
...document.getElementsByClassName("app-menu-item")
];
if (elements.length) {
for (const element of elements) {
const data_link = element.attributes["data-link"] && element.attributes["data-link"].value;
const data_role = element.attributes["data-role"] && element.attributes["data-role"].value;
const parent_app = element.closest(".app");
if (data_link) {
element.addEventListener("click", (e) => {
e.stopPropagation();
if (element.classList.contains("inactivated")) return;
// try {
// navigator.serviceWorker.controller.postMessage({
// type: "download",
// content: parent_app.attributes["data-link"].value
// });
// } catch (e) {}
window.location.href = data_link;
});
} else if (data_role == "help") {
element.addEventListener("click", (e) => {
e.stopPropagation();
if (!element.classList.contains("active")) {
document.querySelectorAll(".app-help").forEach(element => {
element.classList.remove("active");
});
element.classList.add("active");
parent_app.querySelector(".app-help").style.display = "block";
} else {
element.classList.remove("active");
parent_app.querySelector(".app-help").style.display = "none";
}
});
} else if (data_role == "pin") {
const item_id = parent_app.attributes["data-app-name"] && parent_app.attributes["data-app-name"].value;
if (item_id) {
element.addEventListener("click", (e) => {
e.stopPropagation();
let list = localStorage.getItem("pinned") ? localStorage.getItem("pinned").split(",") : [];
if (!element.classList.contains("active")) {
element.classList.add("active");
parent_app.style.order = -1;
list.push(item_id);
localStorage.setItem("pinned", list.join(","));
try {
const app_name = parent_app.attributes["data-app-name"].value;
navigator.serviceWorker.controller.postMessage({
type: "download",
content: app_name
});
} catch (e) {}
} else {
element.classList.remove("active");
parent_app.style.order = 0;
list = list.filter(x => x != item_id);
if (list.length) localStorage.setItem("pinned", list.join(","));
else localStorage.removeItem("pinned");
}
});
}
}
}
}
const pinned_list = localStorage.getItem("pinned") ? localStorage.getItem("pinned").split(",") : [];
if (pinned_list) {
for (const element of document.querySelectorAll(".app:not(.inactivated)") || []) {
if (pinned_list.includes(element.attributes["data-app-name"].value)) {
element.style.order = -1;
}
element.addEventListener("touchstart", (e) => {
if (!(e.target.classList && e.target.classList[0].startsWith("app-menu-item")))
element.classList.add("selected");
});
element.addEventListener("touchmove", () => {
element.classList.remove("selected");
});
element.addEventListener("touchend", () => {
element.classList.remove("selected");
});
element.addEventListener("touchcancel", () => {
element.classList.remove("selected");
});
}
}
for (const element of document.querySelectorAll(".app-menu-item[data-role=link]") || []) {
element.addEventListener("touchstart", () => {
element.classList.add("active");
});
element.addEventListener("touchmove", () => {
element.classList.remove("active");
});
element.addEventListener("touchend", () => {
element.classList.remove("active");
});
element.addEventListener("touchcancel", () => {
element.classList.remove("active");
});
}
for (const element of document.querySelectorAll(".app-help") || []) {
element.addEventListener("click", (e) => {
e.stopPropagation();
});
}
window.updateServiceWorker = () => {};
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('./service-worker.js', {
scope: "./"
}).then((e) => {
window.updateServiceWorker = (t) => {
t && (t.innerText = "正在检查更新...");
e.addEventListener('updatefound', () => {
window.location.reload();
});
e.update().then((reg) => {
if (!reg.installing) t && (t.innerText = "未发现更新");
else t && (t.innerText = "正在应用更新...");
}).catch(() => {
t && (t.innerText = "检查更新失败");
});
};
let c = window.setInterval(() => {
if (navigator.serviceWorker.controller) {
window.clearInterval(c);
// document.querySelector(".sw-progress").style.display = "block";
// document.querySelector(".sw-progress-bar").style.display = "block";
navigator.serviceWorker.controller.postMessage({
type: "download",
content:
["root", "common", "trip-card"]
.concat(localStorage.getItem("pinned") ? localStorage.getItem("pinned").split(",") : [])
.filter((v,i,a)=>a.indexOf(v)==i)
});
window.setInterval(() => {
navigator.serviceWorker.controller.postMessage({
type: "check",
});
}, 4000);
}
}, 300);
}).catch((e) => {
// document.querySelector(".sw-status").innerText = "页面预加载失败";
});
const setCached = (item) => {
if (!item) return;
const app = document.querySelector(`.app[data-app-name=${item}]`);
app && (app.querySelector(".app-title-icon").attributes.src.value = "common/icons/download_done.svg");
};
navigator.serviceWorker.addEventListener("message", (e) => {
if (!e.data) return;
if (e.data.type == "progress") {
// const percentage = parseInt(e.data.content * 100) + "%";
// document.querySelector(".sw-progress").innerText = percentage;
// document.querySelector(".sw-progress").style.opacity = 0.4 + 0.6 * e.data.content;
// document.querySelector(".sw-progress-bar-fill").style.width = percentage;
} else if (e.data.type == "complete") {
document.getElementById("sw-help-text").style.display = "flex";
// document.querySelector(".sw-progress-bar-fill").style.width = "100%";
// document.querySelector(".sw-status").innerHTML = "";
// window.setTimeout(() => {
// document.querySelector(".sw-status").style.display = "none";
// }, 2000);
const cached_apps = e.data.content.cached;
if (typeof(cached_apps) == "string") {
setCached(cached_apps);
} else {
for (const item of cached_apps) {
setCached(item);
}
}
if (e.data.content.version) {
document.getElementById("last-update-version").innerText = `(${e.data.content.version})`;
}
} else if (e.data.type == "reload") {
window.location.reload();
}
});
}
document.getElementById("clear-local-data").addEventListener("click", () => {
if (navigator.serviceWorker && navigator.serviceWorker.controller)
window.confirm('要清除全部填充信息与页面缓存吗?') && clearCache();
else
window.confirm('要清除全部填充信息吗?') && clearCache();
})
if (!(navigator.standalone || window.matchMedia("(display-mode: standalone)").matches)) {
document.querySelector(".sw-status").innerHTML = `
<div class="icon-align" onclick="toggleDisplay('#pwa-install-help');">
<img class="icon" src="common/icons/add_box.svg">
<span>添加至主屏幕</span>
</div>`;
} else {
document.querySelector(".sw-status").innerHTML = `
<div class="icon-align" onclick="toggleDisplay('#pwa-usage-help');">
<img class="icon" src="common/icons/help.svg">
<span>帮助</span>
</div>`;
}
}
function toggleDisplay(selector, flex = false) {
const element = document.querySelector(selector);
if (!element) return false;
if (!element.style.display || element.style.display == "none") {
element.style.display = flex ? "flex" : "block";
} else {
element.style.display = "none";
}
}
function clearCache() {
localStorage.clear();
if (navigator.serviceWorker && navigator.serviceWorker.controller) {
document.querySelector(".apps-list").innerHTML = `
<p style="text-align: center">请稍候...</p>
`;
navigator.serviceWorker.controller.postMessage({
type: "clear",
});
} else {
window.location.reload();
}
}

131
src/common/base.js Normal file
View File

@ -0,0 +1,131 @@
const root_path = "";
const time_update_list = [];
let time_updater_init = false;
function updateTime() {
const d = new Date(new Date().getTime() + 8 * 3600 * 1000).toISOString().replace("T", " ");
for (const item of time_update_list) {
for (const element of document.querySelectorAll(item.selector)) {
element.innerHTML = item.filter(d.slice(item.start, item.end));
}
}
};
let time_interval = 1000;
function setDynamicTime(selector, start = 0, end = 19, filter = (x) => x) {
time_update_list.push({
selector: selector,
start: start,
end: end,
filter: filter,
});
updateTime();
if (!time_updater_init) {
time_updater_init = true;
window.setInterval(() => {
updateTime();
}, time_interval);
}
}
function setUpdateInterval(interval = 1000) {
time_interval = interval;
}
// 2022-01-01 00:00:00.000Z
// 012345678901234567890123
function setStaticTime(selector, start = 0, end = 19, traceback_hours = 0, traceback_range = 0, filter = (x) => x) {
for (const element of document.querySelectorAll(selector)) {
if (element.attributes["data-traceback-hours"])
traceback_hours = parseInt(element.attributes["data-traceback-hours"].value);
if (element.attributes["data-traceback-range"])
traceback_range = parseInt(element.attributes["data-traceback-range"].value);
const hours = traceback_hours + (Math.random() - 0.5) * traceback_range;
const d = new Date(new Date().getTime() + 8 * 3600 * 1000 - hours * 3600 * 1000).toISOString().replace("T", " ");
element.innerHTML = filter(d.slice(start, end));
}
}
const presetFilters = {
name: (x) => x.length == 2 ? x[0] + "*" : x[0] + "*".repeat(x.length - 2) + x.slice(-1),
name_preferlastname: (x) => x.length == 2 ? x[0] + "*" : x[0] + "*".repeat(x.length - 2) + x.slice(-1),
name_preferfirstname: (x) => x.length == 2 ? "*" + x[1] : x[0] + "*".repeat(x.length - 2) + x.slice(-1),
lastnameonly: (x) => x[0] + "*".repeat(x.length - 1),
firstnameonly: (x) => "*" + x.slice(1),
lastcharonly: (x) => "*".repeat(x.length - 1) + x.slice(-1),
idcard: (start = 2, end = 2, mask = 18 - start - end) => (x) => x.slice(0, start) + "*".repeat(mask) + x.slice(-end),
phone: (start = 3, end = 4, mask = 11 - start - end) => (x) => x.slice(0, start) + "*".repeat(mask) + x.slice(-end),
};
const fields = {};
function addStorageField(id, selector, name, placeholder, filter = (x) => x, callback = () => {}) {
const elements = document.querySelectorAll(selector);
const item = {
selector: selector,
placeholder: placeholder,
filter: filter,
};
if (id in fields) {
fields[id].push(item);
} else {
fields[id] = [item];
}
const init_value = localStorage.getItem(id) || placeholder;
for (const element of elements) {
element.innerHTML = filter(init_value);
element.addEventListener("click", () => {
let res = window.prompt("修改" + name + "", localStorage.getItem(id) || placeholder);
if (res == "" || res == null) {
localStorage.removeItem(id);
} else {
localStorage.setItem(id, res);
}
callback(res || placeholder);
for (const _item of fields[id]) {
const _elements = document.querySelectorAll(_item.selector);
for (const _element of _elements) {
_element.innerHTML = _item.filter(res || _item.placeholder);
}
}
});
}
callback(init_value);
}
function initServiceWorker(app) {
return new Promise((resolve, reject) => {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register(root_path + '/service-worker.js', {
scope: root_path + "/"
}).then((e) => {
if (app) {
if (typeof(app) == "string") app = [app];
let sw_timer = window.setInterval(() => {
if (navigator.serviceWorker.controller) {
window.clearInterval(sw_timer);
navigator.serviceWorker.controller.postMessage({
type: "download",
content: ["root", "common", "trip-card"].concat(app)
});
}
}, 300);
}
resolve();
}).catch((e) => {
reject();
})
} else {
reject();
}
});
}
function navigateHome() {
window.location.href = root_path + "/index.html";
}
function navigateToTripCard() {
window.location.href = root_path + "/trip-card/index.html";
}

View File

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="16"
height="16"
viewBox="0 0 4.2333332 4.2333335"
version="1.1"
id="svg1468"
sodipodi:docname="codeberg-logo_icon_blue.svg"
inkscape:version="1.2-alpha1 (b6a15bb, 2022-02-23)"
inkscape:export-filename="/home/mray/Projects/Codeberg/logo/icon/png/codeberg-logo_icon_blue.png"
inkscape:export-xdpi="384"
inkscape:export-ydpi="384"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<title
id="title16">Codeberg logo</title>
<defs
id="defs1462">
<linearGradient
xlink:href="#linearGradient6924"
id="linearGradient6918"
x1="42519.285"
y1="-7078.7891"
x2="42575.336"
y2="-6966.9307"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient6924">
<stop
style="stop-color:#2185d0;stop-opacity:0"
offset="0"
id="stop6920" />
<stop
id="stop6926"
offset="0.49517274"
style="stop-color:#2185d0;stop-opacity:0.48923996" />
<stop
style="stop-color:#2185d0;stop-opacity:0.63279623"
offset="1"
id="stop6922" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient6924-6"
id="linearGradient6918-3"
x1="42519.285"
y1="-7078.7891"
x2="42575.336"
y2="-6966.9307"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient6924-6">
<stop
style="stop-color:#2185d0;stop-opacity:0;"
offset="0"
id="stop6920-7" />
<stop
id="stop6926-5"
offset="0.49517274"
style="stop-color:#2185d0;stop-opacity:0.30000001;" />
<stop
style="stop-color:#2185d0;stop-opacity:0.30000001;"
offset="1"
id="stop6922-3" />
</linearGradient>
</defs>
<sodipodi:namedview
showborder="false"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.627417"
inkscape:cx="12.948893"
inkscape:cy="12.661631"
inkscape:document-units="px"
inkscape:current-layer="svg1468"
inkscape:document-rotation="0"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
units="px"
inkscape:snap-global="false"
inkscape:snap-page="true"
showguides="false"
inkscape:window-width="1531"
inkscape:window-height="873"
inkscape:window-x="69"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1">
<inkscape:grid
type="xygrid"
id="grid2067" />
</sodipodi:namedview>
<metadata
id="metadata1465">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Codeberg logo</dc:title>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:creator>
<cc:Agent>
<dc:title>Robert Martinez</dc:title>
</cc:Agent>
</dc:creator>
<dc:rights>
<cc:Agent>
<dc:title>Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.</dc:title>
</cc:Agent>
</dc:rights>
<dc:date>2020-04-09</dc:date>
<dc:publisher>
<cc:Agent>
<dc:title>Codeberg e.V.</dc:title>
</cc:Agent>
</dc:publisher>
<dc:source>codeberg.org</dc:source>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
id="g370484"
inkscape:label="logo"
transform="matrix(0.06551432,0,0,0.06551432,-2.232417,-1.431776)">
<path
id="path6733-5"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:url(#linearGradient6918-3);fill-opacity:1;stroke:none;stroke-width:3.67846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
d="m 42519.285,-7078.7891 a 0.76086879,0.56791688 0 0 0 -0.738,0.6739 l 33.586,125.8886 a 87.182358,87.182358 0 0 0 39.381,-33.7636 l -71.565,-92.5196 a 0.76086879,0.56791688 0 0 0 -0.664,-0.2793 z"
transform="matrix(0.37058478,0,0,0.37058478,-15690.065,2662.0533)"
inkscape:label="berg" />
<path
id="path360787"
style="opacity:1;fill:#2185d0;fill-opacity:1;stroke-width:17.0055;paint-order:markers fill stroke;stop-color:#000000"
d="m 11249.461,-1883.6961 c -12.74,0 -23.067,10.3275 -23.067,23.0671 0,4.3335 1.22,8.5795 3.522,12.2514 l 19.232,-24.8636 c 0.138,-0.1796 0.486,-0.1796 0.624,0 l 19.233,24.8646 c 2.302,-3.6721 3.523,-7.9185 3.523,-12.2524 0,-12.7396 -10.327,-23.0671 -23.067,-23.0671 z"
sodipodi:nodetypes="sccccccs"
inkscape:label="sky"
transform="matrix(1.4006354,0,0,1.4006354,-15690.065,2662.0533)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

20
src/common/g-icon.css Normal file

File diff suppressed because one or more lines are too long

BIN
src/common/github-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-3 10h-3v3c0 .55-.45 1-1 1s-1-.45-1-1v-3H8c-.55 0-1-.45-1-1s.45-1 1-1h3V8c0-.55.45-1 1-1s1 .45 1 1v3h3c.55 0 1 .45 1 1s-.45 1-1 1z"/></svg>

After

Width:  |  Height:  |  Size: 368 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z"/></svg>

After

Width:  |  Height:  |  Size: 220 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M5 18h14v2H5v-2zm4.6-2.7L5 10.7l2-1.9 2.6 2.6L17 4l2 2-9.4 9.3z"/></svg>

After

Width:  |  Height:  |  Size: 222 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92c-.5.51-.86.97-1.04 1.69-.08.32-.13.68-.13 1.14h-2v-.5c0-.46.08-.9.22-1.31.2-.58.53-1.1.95-1.52l1.24-1.26c.46-.44.68-1.1.55-1.8-.13-.72-.69-1.33-1.39-1.53-1.11-.31-2.14.32-2.47 1.27-.12.37-.43.65-.82.65h-.3C8.4 9 8 8.44 8.16 7.88c.43-1.47 1.68-2.59 3.23-2.83 1.52-.24 2.97.55 3.87 1.8 1.18 1.63.83 3.38-.19 4.4z"/></svg>

After

Width:  |  Height:  |  Size: 569 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/></svg>

After

Width:  |  Height:  |  Size: 307 B

1
src/common/icons/map.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48"><path d="m30.6 42-13.15-4.65L8.5 40.9q-.85.45-1.675-.05Q6 40.35 6 39.35v-27.9q0-.65.375-1.15.375-.5.975-.75L17.45 6l13.15 4.6 8.9-3.55q.85-.4 1.675.075Q42 7.6 42 8.6v28.25q0 .55-.375.95-.375.4-.925.6Zm-1.7-3.75V13l-9.8-3.3v25.25Zm3 0L39 35.9V10.3L31.9 13ZM9 37.65l7.1-2.7V9.7L9 12.05ZM31.9 13v25.25ZM16.1 9.7v25.25Z"/></svg>

After

Width:  |  Height:  |  Size: 387 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 12c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6-1.8C18 6.57 15.35 4 12 4s-6 2.57-6 6.2c0 2.34 1.95 5.44 6 9.14 4.05-3.7 6-6.8 6-9.14zM12 2c4.2 0 8 3.22 8 8.2 0 3.32-2.67 7.25-8 11.8-5.33-4.55-8-8.48-8-11.8C4 5.22 7.8 2 12 2z"/></svg>

After

Width:  |  Height:  |  Size: 386 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><g><rect fill="none" height="24" width="24"/></g><g><path d="M14,4v5c0,1.12,0.37,2.16,1,3H9c0.65-0.86,1-1.9,1-3V4H14 M17,2H7C6.45,2,6,2.45,6,3c0,0.55,0.45,1,1,1c0,0,0,0,0,0l1,0v5 c0,1.66-1.34,3-3,3v2h5.97v7l1,1l1-1v-7H19v-2c0,0,0,0,0,0c-1.66,0-3-1.34-3-3V4l1,0c0,0,0,0,0,0c0.55,0,1-0.45,1-1 C18,2.45,17.55,2,17,2L17,2z"/></g></svg>

After

Width:  |  Height:  |  Size: 467 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><g><rect fill="none" height="24" width="24"/></g><g><g><path d="M3,11h8V3H3V11z M5,5h4v4H5V5z"/><path d="M3,21h8v-8H3V21z M5,15h4v4H5V15z"/><path d="M13,3v8h8V3H13z M19,9h-4V5h4V9z"/><rect height="2" width="2" x="19" y="19"/><rect height="2" width="2" x="13" y="13"/><rect height="2" width="2" x="15" y="15"/><rect height="2" width="2" x="13" y="17"/><rect height="2" width="2" x="15" y="19"/><rect height="2" width="2" x="17" y="17"/><rect height="2" width="2" x="17" y="13"/><rect height="2" width="2" x="19" y="15"/></g></g></svg>

After

Width:  |  Height:  |  Size: 669 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><rect fill="none" height="24" width="24"/><path d="M9.5,6.5v3h-3v-3H9.5 M11,5H5v6h6V5L11,5z M9.5,14.5v3h-3v-3H9.5 M11,13H5v6h6V13L11,13z M17.5,6.5v3h-3v-3H17.5 M19,5h-6v6 h6V5L19,5z M13,13h1.5v1.5H13V13z M14.5,14.5H16V16h-1.5V14.5z M16,13h1.5v1.5H16V13z M13,16h1.5v1.5H13V16z M14.5,17.5H16V19h-1.5 V17.5z M16,16h1.5v1.5H16V16z M17.5,14.5H19V16h-1.5V14.5z M17.5,17.5H19V19h-1.5V17.5z M22,7h-2V4h-3V2h5V7z M22,22v-5h-2v3h-3v2 H22z M2,22h5v-2H4v-3H2V22z M2,2v5h2V4h3V2H2z"/></svg>

After

Width:  |  Height:  |  Size: 613 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><rect fill="none" height="24" width="24"/><path d="M11,5.5H8V4h0.5c0.55,0,1-0.45,1-1c0-0.55-0.45-1-1-1h-3c-0.55,0-1,0.45-1,1c0,0.55,0.45,1,1,1H6v1.5H3c-0.55,0-1,0.45-1,1 c0,0.55,0.45,1,1,1V15c0,1.1,0.9,2,2,2h1v4l2,1.5V17h1c1.1,0,2-0.9,2-2V7.5c0.55,0,1-0.45,1-1C12,5.95,11.55,5.5,11,5.5z M9,9H7.25 C6.84,9,6.5,9.34,6.5,9.75c0,0.41,0.34,0.75,0.75,0.75H9V12H7.25c-0.41,0-0.75,0.34-0.75,0.75c0,0.41,0.34,0.75,0.75,0.75H9L9,15H5 V7.5h4V9z M19.5,10.5V10c0.55,0,1-0.45,1-1c0-0.55-0.45-1-1-1h-5c-0.55,0-1,0.45-1,1c0,0.55,0.45,1,1,1v0.5c0,0.5-1.5,1.16-1.5,3V20 c0,1.1,0.9,2,2,2h4c1.1,0,2-0.9,2-2v-6.5C21,11.66,19.5,11,19.5,10.5z M16.5,10.5V10h1v0.5c0,1.6,1.5,2,1.5,3V14h-4 c0-0.21,0-0.39,0-0.5C15,12.5,16.5,12.1,16.5,10.5z M19,15.5V17h-4c0-0.51,0-1.02,0-1.5H19z M15,20c0,0,0-0.63,0-1.5h4V20H15z"/></svg>

After

Width:  |  Height:  |  Size: 930 B

BIN
src/common/logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

219
src/common/nav.css Normal file
View File

@ -0,0 +1,219 @@
.capsule {
z-index: 9000;
box-sizing: border-box;
width: 87px;
height: 32px;
position: fixed;
right: 7px;
right: calc(7px + env(safe-area-inset-right, 0));
top: 6px;
top: calc(6px + env(safe-area-inset-top, 0));
border: 0.5pt solid rgba(224, 224, 224, .67);
border-radius: 27px;
background-color: rgba(255, 255, 255, .6);
display: flex;
flex-direction: row;
justify-content: space-evenly;
align-items: center;
}
.capsule.dark, .dark .capsule {
border: 0.5pt solid rgba(32, 32, 32, .33);
background-color: rgba(0, 0, 0, .2);
}
.capsule > .capsule-menu-icon {
fill: black;
position: relative;
left: 1pt;
width: 16pt;
}
.capsule.dark > .capsule-menu-icon, .dark .capsule > .capsule-menu-icon {
fill: white;
}
.capsule > .capsule-exit-icon {
fill: black;
stroke: black;
width: 15pt;
}
.capsule.dark > .capsule-exit-icon, .dark .capsule > .capsule-exit-icon {
fill: white;
stroke: white;
}
.capsule > .splitter {
background-color: rgba(0, 0, 0, .2);
width: 0.25pt;
height: 14pt;
}
.capsule.dark > .splitter, .dark .capsule > .splitter {
background-color: rgba(255, 255, 255, .8);
}
.alipay-nav {
box-sizing: content-box;
position: fixed;
width: 100%;
height: 44px;
top: 0;
padding-top: env(safe-area-inset-top, 0);
display: flex;
align-items: center;
color: black;
background-color: white;
z-index: 5000;
}
.alipay-nav.dark {
color: white;
background-color: transparent;
}
.alipay-nav-title {
font-size: 19px;
font-weight: bold;
margin-left: 12.5px;
}
:root {
--height: 44px;
--right: 25.333vw;
}
.weui-navigation-bar {
overflow: hidden;
padding-top: env(safe-area-inset-top, 0);
}
.weui-navigation-bar *:not(.capsule, .capsule *) {
box-sizing: content-box;
}
.weui-navigation-bar .android {
--height: 48px;
--right: 29.6vw;
}
.weui-navigation-bar__inner {
align-items: center;
display: flex;
height: var(--height);
left: 0;
padding-right: var(--right);
padding-top: env(safe-area-inset-top, 0);
position: fixed;
top: 0;
width: calc(100% - var(--right));
z-index: 5001;
color: black;
font-family: "PingFang SC", sans-serif;
}
.dark .weui-navigation-bar__inner {
color: white;
}
.browser .weui-navigation-bar__inner {
background-color: #ededed;
}
.weui-navigation-bar__inner .weui-navigation-bar__left {
-webkit-box-pack: center;
align-items: center;
display: flex;
padding-left: 16px;
position: relative;
width: var(--right);
}
.browser .weui-navigation-bar__inner .weui-navigation-bar__left {
padding-left: 15px;
}
.weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn {
background-repeat: no-repeat;
display: inline-block;
vertical-align: middle;
}
.weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E");
background-position: 50% 50%;
background-size: cover;
font-size: 12px;
height: 2em;
width: 1em;
}
.browser .weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback {
background-image: url("data:image/svg+xml,<svg width='24' height='24' xmlns='http://www.w3.org/2000/svg'><path d='M12 10.586l5.657-5.657 1.414 1.414L13.414 12l5.657 5.657-1.414 1.414L12 13.414l-5.657 5.657-1.414-1.414L10.586 12 4.929 6.343 6.343 4.93 12 10.586z' fill-rule='evenodd'/></svg>");
background-position: 50% 50%;
background-size: cover;
font-size: 12px;
height: 2em;
width: 2em;
opacity: 0.8;
}
.dark .weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' fill='white' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E");
}
.dark.browser .weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback {
background-image: url("data:image/svg+xml,<svg width='24' height='24' xmlns='http://www.w3.org/2000/svg'><path d='M12 10.586l5.657-5.657 1.414 1.414L13.414 12l5.657 5.657-1.414 1.414L12 13.414l-5.657 5.657-1.414-1.414L10.586 12 4.929 6.343 6.343 4.93 12 10.586z' fill-rule='evenodd' fill='white'/></svg>");
opacity: 1;
}
.weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback:active {
opacity: .5;
}
.weui-navigation-bar__inner .weui-navigation-bar__center {
-webkit-box-pack: center;
align-items: center;
display: flex;
flex: 1;
font-size: 17px;
justify-content: center;
position: relative;
text-align: center;
font-weight: bold;
max-width: calc(100vw - 2 * var(--right));
}
.browser .weui-navigation-bar__inner .weui-navigation-bar__center {
font-weight: 500;
font-size: 16px;
opacity: .9;
}
.weui-navigation-bar__inner .weui-navigation-bar__center * {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.weui-navigation-bar__inner .weui-navigation-bar__loading {
font-size: 0;
}
.weui-navigation-bar__inner .weui-navigation-bar__loading .weui-loading {
margin-left: 0;
}
.weui-navigation-bar__inner .weui-navigation-bar__right {
margin-right: 16px;
}
.weui-navigation-bar__placeholder {
background: #f8f8f8;
height: var(--height);
position: relative;
z-index: 50;
visibility: hidden;
}

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1000px" height="1000px" viewBox="0 0 1000 1000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<defs>
<linearGradient x1="50%" y1="0%" x2="50%" y2="99.2583404%" id="linearGradient-1">
<stop stop-color="#2AABEE" offset="0%"></stop>
<stop stop-color="#229ED9" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Artboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<circle id="Oval" fill="url(#linearGradient-1)" cx="500" cy="500" r="500"></circle>
<path d="M226.328419,494.722069 C372.088573,431.216685 469.284839,389.350049 517.917216,369.122161 C656.772535,311.36743 685.625481,301.334815 704.431427,301.003532 C708.567621,300.93067 717.815839,301.955743 723.806446,306.816707 C728.864797,310.92121 730.256552,316.46581 730.922551,320.357329 C731.588551,324.248848 732.417879,333.113828 731.758626,340.040666 C724.234007,419.102486 691.675104,610.964674 675.110982,699.515267 C668.10208,736.984342 654.301336,749.547532 640.940618,750.777006 C611.904684,753.448938 589.856115,731.588035 561.733393,713.153237 C517.726886,684.306416 492.866009,666.349181 450.150074,638.200013 C400.78442,605.66878 432.786119,587.789048 460.919462,558.568563 C468.282091,550.921423 596.21508,434.556479 598.691227,424.000355 C599.00091,422.680135 599.288312,417.758981 596.36474,415.160431 C593.441168,412.561881 589.126229,413.450484 586.012448,414.157198 C581.598758,415.158943 511.297793,461.625274 375.109553,553.556189 C355.154858,567.258623 337.080515,573.934908 320.886524,573.585046 C303.033948,573.199351 268.692754,563.490928 243.163606,555.192408 C211.851067,545.013936 186.964484,539.632504 189.131547,522.346309 C190.260287,513.342589 202.659244,504.134509 226.328419,494.722069 Z" id="Path-3" fill="#FFFFFF"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

585
src/fujian-hc/app.css Normal file

File diff suppressed because one or more lines are too long

284
src/fujian-hc/checkin.html Normal file
View File

@ -0,0 +1,284 @@
<!DOCTYPE html>
<title>张贴码</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name="viewport" content="width=device-width,height=device-height,viewport-fit=cover,initial-scale=1,maximum-scale=1,user-scalable=0">
<meta name="theme-color" content="#D0E9FE">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="manifest" href="manifest.json">
<link rel="icon" type="image/png" href="./static/jkm_logo.png">
<link rel="apple-touch-icon" sizes="360x360" href="./static/jkm_logo.png">
<link rel="stylesheet" href="app.css">
<link rel="stylesheet" href="../common/nav.css">
<script src="../common/base.js"></script>
<style>
view {
display: block;
box-sizing: border-box;
}
body {
margin: 0;
background: #eef0f5;
min-height: 100vh;
position: relative;
font-family: "PingFang SC", sans-serif;
}
text {
text-align: left;
}
.label-style {
color: #919eab;
width: 35.467vw;
}
.content-style,
.label-style {
font-family: PingFangSC-Regular;
font-size: 4.267vw;
height: 5.867vw;
letter-spacing: 0;
line-height: 5.867vw;
}
.content-style {
color: #000;
text-align: right;
width: 54.267vw;
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con {
align-items: center;
display: flex;
justify-content: space-between;
margin: 4.8vw 0 0;
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con .nucleic-vaccination-item {
border-radius: 5.333vw;
box-shadow: 0 0 8.533vw 0 rgba(13, 25, 79, .1);
box-sizing: border-box;
height: max-content;
position: relative;
width: calc(50% - 1.2vw);
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con .nucleic-vaccination-item .status-icon {
border-radius: 5.333vw;
height: 100%;
width: 100%;
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con .nucleic-vaccination-item .nucleic-vaccination-name {
color: #27282e;
font-family: PingFangSC-Semibold;
font-size: 5.867vw;
font-weight: 700;
height: 8.267vw;
letter-spacing: 0;
line-height: 8.267vw;
position: relative;
z-index: 1;
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con .nucleic-vaccination-item .nucleic-vaccination-line {
background-image: linear-gradient(-45deg, rgba(39, 40, 46, 0), #27282e);
height: 0.267vw;
margin: 1.067vw 0 3.2vw;
opacity: .2;
width: 21.2vw;
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con .nucleic-vaccination-item .nucleic-vaccination-status {
color: #999;
font-size: 4.267vw;
height: 6vw;
letter-spacing: 0;
line-height: 6vw;
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con .nucleic-vaccination-item .nucleic-vaccination-status-icon {
bottom: 0;
height: 18.667vw;
position: absolute;
right: 0;
width: 18.667vw;
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con .nucleic-vaccination-item .nucleic-vaccination-status-icon .status-icon {
height: 18.667vw;
width: 18.667vw;
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con .nucleic-item.status-48-72-hours {
background-color: #f1f5fc;
border: 0.133vw solid hsla(0, 0%, 100%, .64);
box-shadow: 0 3.2vw 8.533vw 0 rgba(13, 37, 79, .16);
}
.wa-comp-fj-jkm-NucleicAcidTestAndVaccination.nucleic-vaccination-con .nucleic-item.status-negative {
background-color: #f6f1ff;
border: 0.133vw solid hsla(0, 0%, 100%, .64);
box-shadow: 0 3.2vw 8.533vw 0 rgba(54, 18, 125, .16);
}
</style>
<view align="center" backgroundColor="#EEF0F5" class="type-fj-jkm:Page" hideTitle="false" id="uuid_6e121430" left="0"
name="张贴码" showBack="false" showCustom="false" showFooter="false" showHome="true">
<view class="type-gsd-h5-react:Container" id="uuid_5e746185" slot="content"
style="background: linear-gradient(rgb(208, 233, 254) 0%, rgb(238, 240, 245) 520px);">
<view class="type-gsd-h5-react:Container" id="uuid_3aefb917" style="padding: 5.333vw;">
<view class="weui-navigation-bar">
<view class="weui-navigation-bar__placeholder"></view>
<view class="weui-navigation-bar__inner" style="color: black;">
<view class="weui-navigation-bar__left">
<div class="weui-navigation-bar__buttons" onclick="history.back();">
<div class="weui-navigation-bar__button weui-navigation-bar__btn_goback"></div>
</div>
</view>
<view class="weui-navigation-bar__center" style="font-weight: normal;">
<text>张贴码</text>
</view>
<view class="weui-navigation-bar__right">
</view>
</view>
<div class="capsule dark" onclick="navigateHome();">
<svg class="capsule-menu-icon" viewBox="0 0 64 28" xmlns="http://www.w3.org/2000/svg">
<circle cx="32" cy="14" r="9.5" />
<circle cx="54" cy="14" r="6" />
<circle cx="10" cy="14" r="6" />
</svg>
<div class="splitter"></div>
<svg class="capsule-exit-icon" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg">
<circle cx="30" cy="30" r="9" />
<circle cx="30" cy="30" r="23" stroke-width="6" fill="transparent" />
</svg>
</div>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_a4bb1b59"
style="padding: 5.333vw; border-radius: 5.333vw; background: rgb(255, 255, 255); box-shadow: 0vw 3.2vw 8.533vw 0vw rgba(0,13,69,0.10); filter: blur(32);">
<view class="type-gsd-h5-react:Container" id="uuid_d8935842"
style="display: flex; justify-content: space-between; align-items: flex-start;">
<text class="type-gsd-h5-react:Text" id="place"
style="color: rgb(39, 40, 46); font-size: 5.867vw; line-height: 8.267vw; font-weight: 500; font-family: PingFangSC-Medium; letter-spacing: 0vw;"></text>
<view class="type-gsd-h5-react:Container" id="uuid_8a562711"
style="height: 8.267vw; padding-left: 2.133vw; display: flex; align-items: center; flex-shrink: 0;">
<view class="type-gsd-h5-react:Container" id="uuid_64ac4334"
style="height: 5.333vw; padding-right: 1.6vw; padding-left: 1.6vw; display: flex; justify-content: center; align-items: center; border: 0.267vw solid rgb(136, 234, 188); border-radius: 0.533vw; background: rgb(219, 249, 234); flex-shrink: 0; flex-basis: 20.267vw;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_facbc198" mode="scaleToFill"
src="./static/success.png" style="width: 3.2vw; height: 3.2vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="uuid_6dde4d08"
style="margin-left: 1.067vw; color: rgb(43, 165, 102); font-size: 3.2vw; line-height: 3.2vw; font-weight: 400; font-family: PingFangSC-Regular; letter-spacing: 0vw; flex-shrink: 0;">登记成功</text>
</view>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_2c375512"
style="margin-top: 4.267vw; color: rgb(82, 86, 102); font-size: 4.267vw; line-height: 6vw; font-weight: 400; font-family: PingFangSC-Regular; letter-spacing: -0.3px;">
<view class="type-gsd-h5-react:Container" id="uuid_ea5ff845"
style="display: flex; justify-content: flex-start; align-items: center;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_67454747" mode="aspectFit"
src="./static/datetime.png" style="width: 4.267vw; height: 4.267vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="datetime"
style="margin-left: 2.667vw;"></text>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_46fecb38"
style="margin-top: 2.133vw; display: flex; justify-content: flex-start; align-items: center;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_fa758538" mode="aspectFit"
src="./static/place_address.png" style="width: 4.267vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="place-address"
style="margin-left: 2.667vw;"></text>
</view>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_c76e5532"
style="margin: 5.333vw 0vw 0vw; padding-top: 2.4vw; display: flex; flex-direction: column; border-radius: 5.333vw; background: rgb(255, 255, 255); position: relative; filter: blur(32); overflow: hidden;">
<view class="type-gsd-h5-react:Container" id="uuid_9f5b8851" style="padding: 2.4vw 5.333vw 2.667vw;">
<text class="type-gsd-h5-react:Text" id="name"
style="display: block; color: rgb(39, 40, 46); font-size: 5.867vw; line-height: 8.267vw; font-weight: 500; font-family: PingFangSC-Medium; letter-spacing: 0vw;"></text>
<text class="type-gsd-h5-react:Text" id="idcard"
style="margin-top: 1.067vw; display: block; color: rgb(82, 86, 102); font-size: 4.267vw; line-height: 5.067vw; font-family: Helvetica; letter-spacing: 0vw;"></text>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_f4b50588"
style="width: 78.667vw; height: 0.267vw; border-bottom: 0.133vw dashed rgb(147, 154, 160); align-self: center;"></view>
<view class="type-gsd-h5-react:Container" id="uuid_d9777907" style="padding: 6.667vw 5.333vw 6.4vw;">
<view class="type-gsd-h5-react:Container" id="uuid_3bc5ff80" style="display: flex; justify-content: center;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_af4f3746" mode="scaleToFill"
src="./static/icon_00.png" style="width: 26.667vw; height: 26.667vw;"></image>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_f4d0ff05"
style="width: 100%; margin-top: 5.333vw; display: inline-block; font-size: 5.867vw; line-height: 8.267vw; text-align: center; font-weight: 600; font-family: PingFangSC-Semibold; letter-spacing: 0.66px; color: #57AC6C;">
<text class="type-gsd-h5-react:Text" id="uuid_dec7e271">绿码</text><text class="type-gsd-h5-react:Text"
id="uuid_fbd0fd99"></text><text class="type-gsd-h5-react:Text" id="uuid_96c08382">健康状态为低风险</text>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_f4b50588"
style="width: 78.667vw; height: 0.267vw; border-bottom: 0.133vw dashed rgb(147, 154, 160); align-self: center;"></view>
<view bindtap="onuuid_194f0622$tap" class="wa-comp-fj-jkm-TravelCard type-gsd-h5-react:Container"
id="uuid_194f0622"
style="width: 100%; height: 22.667vw; padding-right: 4.267vw; padding-left: 5.333vw; display: flex; justify-content: space-between; align-items: center; flex-direction: row; border-bottom-right-radius: 5.333vw; border-bottom-left-radius: 5.333vw; background: rgb(255, 255, 255); position: relative; overflow: hidden;">
<view class="type-gsd-h5-react:Container" id="uuid_beb0e836"
style="width: 100%; display: flex; justify-content: space-between; align-items: center; z-index: 1; position: relative;"
onclick="navigateToTripCard();">
<view class="type-gsd-h5-react:Container" id="uuid_259dfd84">
<view class="type-gsd-h5-react:Container" id="uuid_8ba24d83"
style="display: flex; align-items: center; color: rgb(82, 86, 102); font-size: 5.333vw; line-height: 6.4vw; font-weight: bolder;">
<text class="type-gsd-h5-react:Text" id="uuid_b0d7cc24" style="font-size: 20px;">点击查询行程卡</text>
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_f0850377" mode="scaleToFill"
src="./static/icon-arrow-right@2x.png" style="width: 4.267vw; height: 4.267vw; margin-left: 0.533vw;">
</image>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_280c0677" style="margin-top: 1.333vw;">
<text class="type-gsd-h5-react:Text" id="uuid_e574bb50"
style="color: rgb(82, 86, 102); font-size: 4.267vw; font-weight: 400; font-family: PingFangSC-Regular; letter-spacing: 0vw;">查询本人在疫情期间7天内到访地信息</text>
</view>
</view>
</view>
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_f5ea9424" mode="scaleToFill"
src="./static/travel-card@2x.png"
style="width: 21.733vw; height: 19.333vw; position: absolute; right: 0vw; bottom: 0vw;"></image>
</view>
</view>
<view
class="wa-comp-fj-jkm-NucleicAcidTestAndVaccination nucleic-vaccination-con type-gsd-h5-react:Container type-WeApps_STD_COMP:Icon"
id="uuid_99915118"
style="width: 100%; display: flex; justify-content: space-between; align-items: center; flex-direction: row;">
<view bindtap="onuuid_5c181a64$tap" class="nucleic-vaccination-item type-gsd-h5-react:Container"
id="uuid_5c181a64" style="width: 43.6vw; height: 27.733vw; padding: 0vw; position: relative;">
<image alt="[图片]" class="status-icon type-gsd-h5-react:Image" id="uuid_0bbbf666" mode="aspectFit"
src="./static/nucleic-24h.png" style="width: 100%; height: 100%; display: block; line-height: 0vw;">
</image>
<view class="type-gsd-h5-react:Container" id="uuid_61e66366"
style="width: 100%; height: 100%; padding-right: 2.667vw; padding-left: 5.333vw; position: absolute; left: 0vw; top: 0vw;">
<text class="type-gsd-h5-react:Text" id="uuid_ae58c966"
style="height: 50%; display: flex; align-items: center; color: rgb(39, 40, 46); font-size: 5.6vw; font-weight: 600;">阴性</text>
<text class="type-gsd-h5-react:Text" id="uuid_b55b1166"
style="height: 50%; padding-right: 9.6vw; display: flex; align-items: center; color: rgb(82, 86, 102); font-size: 4.267vw; font-weight: 400;">核酸检测</text>
</view>
</view>
<view bindtap="onuuid_326c8e85$tap" class="nucleic-vaccination-item type-gsd-h5-react:Container"
id="uuid_326c8e85" style="width: 43.6vw; height: 27.733vw; padding: 0vw; position: relative;">
<image alt="[图片]" class="status-icon type-gsd-h5-react:Image" id="uuid_2774dd30" mode="aspectFit"
src="./static/vaccination-done.png" style="width: 100%; height: 100%; display: block; line-height: 0vw;">
</image>
<view class="type-gsd-h5-react:Container" id="uuid_e739c467"
style="width: 100%; height: 100%; padding-right: 2.667vw; padding-left: 5.333vw; position: absolute; left: 0vw; top: 0vw;">
<text class="type-gsd-h5-react:Text" id="uuid_4cf39b59"
style="height: 50%; display: flex; align-items: center; color: rgb(39, 40, 46); font-size: 5.6vw; font-weight: 600;">已加强接种</text>
<text class="type-gsd-h5-react:Text" id="uuid_0cc0d346"
style="height: 50%; padding-right: 9.6vw; display: flex; align-items: center; color: rgb(82, 86, 102); font-size: 4.267vw; font-weight: 400;">疫苗接种</text>
</view>
</view>
</view>
</view>
</view>
</view>
<script>
setStaticTime("#datetime");
addStorageField("_name", "#name", "名字", "习近平", presetFilters.name_keepfirstname);
addStorageField("_idcard", "#idcard", "身份证号", "110101195306153019", presetFilters.idcard());
addStorageField("_place", "#place", "场所名称", "四通桥");
addStorageField("_place_address", "#place-address", "场所地址", "福建省福州市长安街64号");
initServiceWorker("fujian-hc");
</script>

501
src/fujian-hc/index.html Normal file
View File

@ -0,0 +1,501 @@
<!DOCTYPE html>
<title>福建健康码</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name="viewport" content="width=device-width,height=device-height,viewport-fit=cover,initial-scale=1,maximum-scale=1,user-scalable=0">
<meta name="theme-color" content="#FFFFFF">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="manifest" href="manifest.json">
<link rel="icon" type="image/png" href="./static/jkm_logo.png">
<link rel="apple-touch-icon" sizes="360x360" href="./static/jkm_logo.png">
<link rel="stylesheet" href="app.css">
<link rel="stylesheet" href="../common/nav.css">
<script src="../common/base.js"></script>
<view class="weui-navigation-bar">
<view class="weui-navigation-bar__placeholder"></view>
<view class="weui-navigation-bar__inner nav" style="color: black;">
<view class="weui-navigation-bar__left">
</view>
<view class="weui-navigation-bar__center" style="font-weight: normal;">
<text>福建健康码</text>
</view>
<view class="weui-navigation-bar__right">
</view>
</view>
<div class="capsule" onclick="navigateHome();">
<svg class="capsule-menu-icon" viewBox="0 0 64 28" xmlns="http://www.w3.org/2000/svg">
<circle cx="32" cy="14" r="9.5" />
<circle cx="54" cy="14" r="6" />
<circle cx="10" cy="14" r="6" />
</svg>
<div class="splitter"></div>
<svg class="capsule-exit-icon" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg">
<circle cx="30" cy="30" r="9" />
<circle cx="30" cy="30" r="23" stroke-width="6" fill="transparent" />
</svg>
</div>
</view>
<view backgroundColor="#EEF0F5" class="type-fj-jkm:Page" style="position: absolute; top: 0;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id221" mode="widthFix" slot="content" src="./static/bg2@2x.png"
style="width: 100%; height: 61.333vw; margin-top: 0vw; margin-left: 0vw; position: static; left: 0vw; top: 0vw;">
</image>
<view class="type-gsd-h5-react:Container" id="id69" slot="content" style="position: relative;">
<view class="type-gsd-h5-react:Container" id="id57"
style="width: 100%; margin-top: 0vw; padding-right: 5.333vw; padding-bottom: 1.333vw; padding-left: 5.333vw; display: none; z-index: 99; text-align: left; background: rgb(255, 255, 255); position: fixed; top: 0vw; ">
<text class="type-gsd-h5-react:Text" id="id58"
style="color: #1D1F24; font-size: 4.533vw; line-height: 6.933vw; text-align: center; font-family: PingFangSC-Medium; letter-spacing: 0vw;">福建健康码</text>
</view>
<view class="type-gsd-h5-react:Container" id="id68" style="margin-top: -30.667vw;">
<view class="type-gsd-h5-react:Container" id="id6"
style="margin: 0vw 4.8vw; display: flex; align-items: center; flex-direction: column; border-radius: 5.333vw; background: rgb(255, 255, 255); position: relative; overflow: hidden; box-shadow: 0vw 0.533vw 6.4vw 0vw rgba(25,24,71,0.12); filter: blur(2);">
<view class="type-gsd-h5-react:Container" id="id24"
style="width: 100%; height: 19.467vw; padding-right: 5.867vw; padding-left: 6.4vw; display: flex; align-items: center; flex-direction: row; border-bottom-right-radius: 4vw; border-bottom-left-radius: 4vw; background: rgb(255, 255, 255); position: relative;">
<view class="type-gsd-h5-react:Container" id="id27"
style="display: flex; justify-content: space-between; flex: 1;">
<view class="type-gsd-h5-react:Container" style="display: flex; flex-direction: column; flex: auto;"
id="masked-info-container">
<view class="type-gsd-h5-react:Container" style="display: flex; align-items: center;">
<image alt="[图片]" bindtap="onuuid_e0931441$tap" class="type-gsd-h5-react:Image" id="uuid_e0931441"
mode="scaleToFill" src="./static/close.png" onclick="toggleInfoMask(false);"
style="width: 5.333vw; height: 5.333vw; margin-right: 1.6vw; display: block;"></image>
<text class="type-gsd-h5-react:Text" id="masked-name"
style="color: rgb(29, 31, 36); font-size: 6.4vw; line-height: 8.933vw; font-family: PingFangSC-Medium; letter-spacing: 0vw; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; word-break: break-all;"></text>
</view>
<text class="type-gsd-h5-react:Text" id="masked-idcard"
style="margin-top: 0.667vw; color: rgb(98, 102, 122); font-size: 4.267vw; line-height: 5.067vw; font-weight: 700; font-family: PingFangSC-Regular; letter-spacing: 0vw;"></text>
</view>
<view class="type-gsd-h5-react:Container" style="display: none; flex-direction: column; flex: auto;"
id="info-container">
<view class="type-gsd-h5-react:Container" style="display: flex; align-items: center;">
<image alt="[图片]" bindtap="onuuid_e0931441$tap" class="type-gsd-h5-react:Image" id="uuid_e0931441"
mode="scaleToFill" src="./static/open.png" onclick="toggleInfoMask(true);"
style="width: 5.333vw; height: 5.333vw; margin-right: 1.6vw; display: block;"></image>
<text class="type-gsd-h5-react:Text" id="name"
style="color: rgb(29, 31, 36); font-size: 6.4vw; line-height: 8.933vw; font-family: PingFangSC-Medium; letter-spacing: 0vw; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; word-break: break-all;"></text>
</view>
<text class="type-gsd-h5-react:Text" id="idcard"
style="margin-top: 0.667vw; color: rgb(98, 102, 122); font-size: 4.267vw; line-height: 5.067vw; font-weight: 700; font-family: PingFangSC-Regular; letter-spacing: 0vw;"></text>
</view>
<view bindtap="onid30$tap" class="type-gsd-h5-react:Container" id="id30"
style="display: flex; justify-content: flex-end; align-items: center; flex: none;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_1940d160" mode="scaleToFill"
src="./static/family-btn@2x.png" style="width: 5.333vw; height: 5.333vw;"></image>
<text class="type-gsd-h5-react:Text" id="id31"
style="padding-left: 1.067vw; color: #3858E6; font-size: 4.267vw; line-height: 7.467vw; text-align: right; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">亲友亮码</text>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="id35"
style="width: 4vw; height: 4vw; display: none; border-style: none; border-radius: 50%; background: #3858E6; position: absolute; left: -2vw; top: 19.067vw;">
</view>
<view class="type-gsd-h5-react:Container" id="id36"
style="width: 4vw; height: 4vw; display: none; border-radius: 50%; background: #3858E6; position: absolute; right: -2vw; top: 19.067vw;">
</view>
</view>
<view bindchangePhoto="onid25$changePhoto" bindgoFirstReport="onid25$goFirstReport"
bindgoReportAfter14days="onid25$goReportAfter14days" bindgoVerify="onid25$goVerify"
bindgoVisitedRegion="onid25$goVisitedRegion" bindmanualRefresh="onid25$manualRefresh"
bindpreviewOfflineCode="onid25$previewOfflineCode" bindshowReason="onid25$showReason"
bindtoUploadPhoto="onid25$toUploadPhoto" class="type-gsd-h5-react:Container" id="id25"
style="width: 80vw; height: 0.267vw; display: block; border-bottom: 0.133vw dashed #939AA0;"></view>
<view class="type-gsd-h5-react:Container" id="id38"
style="width: 100%; height: auto; border-bottom-right-radius: 5.333vw; border-bottom-left-radius: 5.333vw; overflow: hidden;">
<view class="type-gsd-h5-react:Container" id="id39"
style="width: 100%; display: inline-block; position: relative;">
<!-- Begin StandardHealthCodeWrapper -->
<view class="wa-comp-fj-jkm-StandardHealthCodeWrapper type-gsd-h5-react:Container" id="id2">
<view class="type-gsd-h5-react:Container" id="id32">
<view class="type-gsd-h5-react:Container" id="id11" style="padding-top: 5.333vw;">
<view class="wa-comp-fj-jkm-StandardHealthBaseCodeWrapper type-gsd-h5-react:Container" id="id4"
style="display: block;;">
<view class="type-gsd-h5-react:Container" id="id20" style="text-align: center;">
<view class="type-gsd-h5-react:Container" id="id24">
<view class="type-gsd-h5-react:Container" id="id52"
style="margin-bottom: 5.333vw; display: inline-block; color: rgb(29, 31, 36); font-size: 6.4vw; line-height: 7.733vw; font-weight: bold;"
title="日期、时间">
<text class="type-gsd-h5-react:Text" id="date" style="padding-right: 3.067vw;"></text>
<text class="type-gsd-h5-react:Text" id="time" style="padding-left: 3.067vw;"></text>
</view>
<view class="type-gsd-h5-react:Container" id="id29"
style="position: relative; height: var(--imgwidth);">
<view class="wa-comp-standard-city-code-BaseQrcode type-gsd-h5-react:Container" id="id1"
style="width: auto; margin: 0vw; display: inline-block; position: static; height: 26.667vw; z-index: 5; position: relative; transform: translateZ(1px);"
title="qrcode">
<view class="type-gsd-h5-react:Container" id="id13"
style="height: var(--imgwidth); width: var(--imgwidth);">
<view class="type-gsd-h5-react:Container" id="id6"
style="width: 100%; height: 100%; position: relative; display: flex; align-items: center; justify-content: center;">
<image alt="[图片]" binderror="onid14$error" bindload="onid14$load"
class="type-gsd-h5-react:Image" id="id14" mode="scaleToFill"
src="data:image/png;base64,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"
style="width: 100%; height: 100%;"></image>
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id5" mode="scaleToFill"
src="./static/logo21@2x.png"
style="width: 25%; height: 25%; z-index: 2; position: absolute;"></image>
</view>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_c0cf3c00"
style="display: flex; justify-content: center; align-items: center; flex-direction: row; position: absolute; left: 0vw; right: 0vw; top: -4.267vw; bottom: -4.267vw;"
title="跑边">
<view class="horse_run_con type-gsd-h5-react:Container" id="uuid_4e457a41"
style="display: flex; justify-content: center; align-items: center; flex-direction: row; position: relative; box-sizing: border-box; width: calc(var(--imgwidth) + 16px); height: calc(var(--imgwidth) + 16px);">
<view class="type-gsd-h5-react:Container" id="uuid_770fc067"
style="width: calc(var(--imgwidth) + 16px); height: calc(var(--imgwidth) + 16px); padding: 1.067vw; z-index: 0; border-radius: 1.333vw; background: linear-gradient(115deg, rgba(255, 180, 0, 0.5), rgb(255, 180, 0), rgba(247, 135, 52, 0.8)); position: absolute; left: 0vw; top: 0vw; box-sizing: border-box; overflow: hidden;">
<view class="type-gsd-h5-react:Container" id="uuid_5ed69025"
style="z-index: 2; border-radius: 1.067vw; background: rgb(255, 255, 255); position: absolute; left: 1.067vw; right: 1.067vw; top: 1.067vw; bottom: 1.067vw; transform: translateZ(1px);">
</view>
<view class="type-gsd-h5-react:Container" id="uuid_18d91490"
style="width: 200%; height: 100%; z-index: 1; background: linear-gradient(115deg, rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 0.01), rgb(255, 255, 0), rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 0.01)); background-size: 50% 100% !important; position: absolute; left: 0vw; top: 0vw; animation: start-pen-frames 0.75s linear infinite;">
</view>
</view>
</view>
</view>
<view class="side-tabs type-gsd-h5-react:Container" id="uuid_e4323b55" title="切换人像按钮"
style="transform: translate(calc(var(--imgwidth) / 2 + 14px), -50%)">
<view bindtap="onuuid_7cb54472$tap" class="tabs-item type-gsd-h5-react:Container"
id="uuid_7cb54472" style="background: url(./static/TAB_UP_OFF.svg);">
<image alt="[图片]" class="tabs-icon type-gsd-h5-react:Image" id="uuid_0fe30019"
mode="scaleToFill" src="./static/QR_ON.svg">
</image>
<text class="tabs-label type-gsd-h5-react:Text" id="uuid_dd617492">亮码</text>
</view>
<view bindtap="onuuid_5fcf6006$tap" class="tabs-item type-gsd-h5-react:Container"
id="uuid_5fcf6006" style="background: url(./static/TAB_DOWN_ON.svg);">
<image alt="[图片]" class="tabs-icon type-gsd-h5-react:Image" id="uuid_a9108235"
mode="scaleToFill" src="./static/CAM_OFF.svg">
</image>
<text class="tabs-label type-gsd-h5-react:Text" id="uuid_242b1819">人像</text>
</view>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="id30"
style="margin-top: 4.533vw; display: flex; justify-content: center; align-items: center; line-height: 4.8vw;"
>
<!-- <slot name="descSlot"></slot> -->
<view bindtap="onuuid_2eec5308$tap" class="type-gsd-h5-react:Container" id="uuid_2eec5308"
slot="descSlot"
style="display: flex; justify-content: center; align-items: center; flex-direction: row;">
<text class="type-gsd-h5-react:Text" id="id44"
style="padding-right: 0vw; padding-left: 0vw; font-size: 5.333vw; line-height: 7.467vw; font-weight: bolder;color: #2BA566;">绿码</text>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!-- End StandardHealthCodeWrapper -->
</view>
<view class="primary-button-con type-gsd-h5-react:Container" id="id40"
style="padding-top: 4.267vw; padding-bottom: 4.8vw; display: flex; align-items: center; flex-direction: column; border-style: none;"
>
<view class="wa-comp-fj-jkm-Button type-gsd-h5-react:Container type-fj-jkm:Button" id="uuid_99e59a32"
style="width: 58.667vw; height: 13.067vw;" onclick="window.location.href = 'checkin.html';">
<view class="btn-bg1 type-gsd-h5-react:Container" id="uuid_cb220d96"
style="width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; border: 0.267vw solid rgb(58, 94, 255); border-radius: 8.533vw; position: relative; box-shadow: 1.067vw 1.6vw 4.267vw 0 rgba(44,71,190,0.30), inset -0.8vw -0.8vw 1.067vw 0 rgba(44,71,190,0.60); filter: blur(0);">
<view class="type-gsd-h5-react:Container" id="uuid_44fe7c67" style="z-index: 3; position: relative;">
<text class="type-gsd-h5-react:Text" id="uuid_e98aca79" slot="textSlot"
style="color: rgb(255, 255, 255); font-size: 5.333vw; line-height: 9.6vw; font-weight: 600;">扫一扫</text>
</view>
<view class="high-light type-gsd-h5-react:Container" id="uuid_c6960684"></view>
</view>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_823e2a87"
style="display: flex; align-items: center; flex-direction: column; border-style: none; position: relative;"
>
<view class="type-gsd-h5-react:Container" id="uuid_f4b50588"
style="width: 78.667vw; height: 0.267vw; border-bottom: 0.133vw dashed rgb(147, 154, 160);"></view>
<view bindtap="onuuid_194f0622$tap"
class="wa-comp-fj-jkm-TravelCard type-gsd-h5-react:Container" id="uuid_194f0622"
style="width: 100%; height: 22.667vw; padding-right: 4.267vw; padding-left: 5.333vw; display: flex; justify-content: space-between; align-items: center; flex-direction: row; border-bottom-right-radius: 5.333vw; border-bottom-left-radius: 5.333vw; background: rgb(255, 255, 255); position: relative; overflow: hidden;">
<view class="type-gsd-h5-react:Container" id="uuid_beb0e836"
style="width: 100%; display: flex; justify-content: space-between; align-items: center; z-index: 1; position: relative;"
onclick="navigateToTripCard();">
<view class="type-gsd-h5-react:Container" id="uuid_259dfd84">
<view class="type-gsd-h5-react:Container" id="uuid_8ba24d83"
style="display: flex; align-items: center; color: rgb(82, 86, 102); font-size: 5.333vw; line-height: 6.4vw; font-weight: bolder;">
<text class="type-gsd-h5-react:Text" id="uuid_b0d7cc24" style="font-size: 20px;">点击查询行程卡</text>
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_f0850377" mode="scaleToFill"
src="./static/icon-arrow-right@2x.png"
style="width: 4.267vw; height: 4.267vw; margin-left: 0.533vw;"></image>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_280c0677" style="margin-top: 1.333vw;">
<text class="type-gsd-h5-react:Text" id="uuid_e574bb50"
style="color: rgb(82, 86, 102); font-size: 4.267vw; font-weight: 400; font-family: PingFangSC-Regular; letter-spacing: 0vw;">查询本人在疫情期间7天内到访地信息</text>
</view>
</view>
</view>
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_f5ea9424" mode="scaleToFill"
src="./static/travel-card@2x.png"
style="width: 21.733vw; height: 19.333vw; position: absolute; right: 0vw; bottom: 0vw;"></image>
</view>
<view class="triangle-right type-gsd-h5-react:Container" id="uuid_c6be1741"
style="height: 3.467vw; position: absolute; left: 0vw; top: -1.733vw;"></view>
<view class="triangle-left type-gsd-h5-react:Container" id="uuid_cec63a89"
style="position: absolute; right: 0vw; top: -1.733vw;"></view>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_e7a4e889" style="display: none; border-style: none;"
>
<view class="type-gsd-h5-react:Container" id="uuid_62f24a90"
style="width: 81.867vw; height: 0.133vw; display: none; border-bottom: 0.133vw dashed rgb(147, 154, 160);">
</view>
<view bindtap="onuuid_8e2bb990$tap" class="type-gsd-h5-react:Container" id="uuid_8e2bb990"
style="width: auto; height: 10.667vw; margin-top: 4.4vw; padding: 0vw 4vw; display: flex; justify-content: center; align-items: center; flex-direction: row; border-radius: 5.333vw; background: rgb(235, 237, 243);">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="uuid_98428890" mode="scaleToFill"
src="./static/family_health_code@2x.png"
style="width: 3.733vw; height: 3.733vw; display: inline-block;"></image>
<text class="type-gsd-h5-react:Text" id="uuid_ec6bad90"
style="margin-right: 4.4vw; margin-left: 2.667vw; display: inline-block; color: rgb(92, 94, 102); font-size: 4.267vw; text-align: center; align-items: center; font-family: PingFangSC-Medium; letter-spacing: 0vw;">亲友健康码</text>
<view class="type-WeApps_STD_COMP:Icon" id="uuid_4169f290" style="color: #919EAB; font-size: 1.6vw;"
type="arrow-right"></view>
</view>
</view>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_6eefe919" style="padding-right: 4.8vw; padding-left: 4.8vw;">
<view
class="wa-comp-fj-jkm-NucleicAcidTestAndVaccination nucleic-vaccination-con type-gsd-h5-react:Container type-WeApps_STD_COMP:Icon"
id="uuid_99915118"
style="width: 100%; display: flex; justify-content: space-between; align-items: center; flex-direction: row;">
<view bindtap="onuuid_5c181a64$tap" class="nucleic-vaccination-item type-gsd-h5-react:Container"
id="uuid_5c181a64" style="width: 43.6vw; height: 27.733vw; padding: 0vw; position: relative;">
<image alt="[图片]" class="status-icon type-gsd-h5-react:Image" id="uuid_0bbbf666" mode="aspectFit"
src="./static/nucleic-24h.png" style="width: 100%; height: 100%; display: block; line-height: 0vw;">
</image>
<view class="type-gsd-h5-react:Container" id="uuid_61e66366"
style="width: 100%; height: 100%; padding-right: 2.667vw; padding-left: 5.333vw; position: absolute; left: 0vw; top: 0vw;">
<text class="type-gsd-h5-react:Text" id="uuid_ae58c966"
style="height: 50%; display: flex; align-items: center; color: rgb(39, 40, 46); font-size: 5.6vw; font-weight: 600;">阴性</text>
<text class="type-gsd-h5-react:Text" id="uuid_b55b1166"
style="height: 50%; padding-right: 9.6vw; display: flex; align-items: center; color: rgb(82, 86, 102); font-size: 4.267vw; font-weight: 400;">核酸检测</text>
</view>
</view>
<view bindtap="onuuid_326c8e85$tap" class="nucleic-vaccination-item type-gsd-h5-react:Container"
id="uuid_326c8e85" style="width: 43.6vw; height: 27.733vw; padding: 0vw; position: relative;">
<image alt="[图片]" class="status-icon type-gsd-h5-react:Image" id="uuid_2774dd30" mode="aspectFit"
src="./static/vaccination-done.png" style="width: 100%; height: 100%; display: block; line-height: 0vw;">
</image>
<view class="type-gsd-h5-react:Container" id="uuid_e739c467"
style="width: 100%; height: 100%; padding-right: 2.667vw; padding-left: 5.333vw; position: absolute; left: 0vw; top: 0vw;">
<text class="type-gsd-h5-react:Text" id="uuid_4cf39b59"
style="height: 50%; display: flex; align-items: center; color: rgb(39, 40, 46); font-size: 5.6vw; font-weight: 600;">已打加强针</text>
<text class="type-gsd-h5-react:Text" id="uuid_0cc0d346"
style="height: 50%; padding-right: 9.6vw; display: flex; align-items: center; color: rgb(82, 86, 102); font-size: 4.267vw; font-weight: 400;">疫苗接种</text>
</view>
</view>
</view>
</view>
<view class="service-con type-gsd-h5-react:Container" id="id9"
style="width: 89.333vw; margin: 4.8vw auto 0vw; padding: 1.333vw 4.8vw; display: block; border-radius: 5.333vw; background: rgb(255, 255, 255); box-shadow: 0vw 3.2vw 8.533vw 0vw rgba(0,13,69,0.10); filter: blur(32);">
<view bindtap="onid15$tap" class="service-item type-gsd-h5-react:Container" id="id15-0"
style="height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id47-0" mode="scaleToFill" src="./static/menu-phone.png"
style="width: 9.067vw; height: 9.067vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="id11-0"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 5.867vw; text-align: left; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">有异常要打电话</text>
<button class="button--none type-gsd-h5-react:Button" formType="button" id="id80-0"
style="width: 100%; height: 21.333vw; display: none; opacity: 1; border: 0vw none rgba(0, 0, 0, 0); background: transparent; position: relative;"></button>
</view>
<view bindtap="onid15$tap" class="service-item type-gsd-h5-react:Container" id="id15-1"
style="height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id47-1" mode="scaleToFill"
src="./static/menu-grxxsz.png" style="width: 9.067vw; height: 9.067vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="id11-1"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 5.867vw; text-align: left; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">个人信息设置</text>
<button class="button--none type-gsd-h5-react:Button" formType="button" id="id80-1"
style="width: 100%; height: 21.333vw; display: none; opacity: 1; border: 0vw none rgba(0, 0, 0, 0); background: transparent; position: relative;"></button>
</view>
<view bindtap="onid15$tap" class="service-item type-gsd-h5-react:Container" id="id15-2"
style="height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id47-2" mode="scaleToFill"
src="./static/menu-grjkxxbb.png" style="width: 9.067vw; height: 9.067vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="id11-2"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 5.867vw; text-align: left; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">个人健康信息报备</text>
<button class="button--none type-gsd-h5-react:Button" formType="button" id="id80-2"
style="width: 100%; height: 21.333vw; display: none; opacity: 1; border: 0vw none rgba(0, 0, 0, 0); background: transparent; position: relative;"></button>
</view>
<view bindtap="onid15$tap" class="service-item type-gsd-h5-react:Container" id="id15-3"
style="height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id47-3" mode="scaleToFill"
src="./static/menu-gljtcyjkm.png" style="width: 9.067vw; height: 9.067vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="id11-3"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 5.867vw; text-align: left; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">添加和删除亲友健康码</text>
<button class="button--none type-gsd-h5-react:Button" formType="button" id="id80-3"
style="width: 100%; height: 21.333vw; display: none; opacity: 1; border: 0vw none rgba(0, 0, 0, 0); background: transparent; position: relative;"></button>
</view>
<view bindtap="onid15$tap" class="service-item type-gsd-h5-react:Container" id="id15-4"
style="height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id47-4" mode="scaleToFill" src="./static/menu-yw.png"
style="width: 9.067vw; height: 9.067vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="id11-4"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 5.867vw; text-align: left; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">有疑问想得到回答</text>
<button class="button--none type-gsd-h5-react:Button" formType="button" id="id80-4"
style="width: 100%; height: 21.333vw; display: none; opacity: 1; border: 0vw none rgba(0, 0, 0, 0); background: transparent; position: relative;"></button>
</view>
<view bindtap="onid15$tap" class="service-item type-gsd-h5-react:Container" id="id15-5"
style="height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id47-5" mode="scaleToFill"
src="./static/menu-bcjkm2.png" style="width: 9.067vw; height: 9.067vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="id11-5"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 5.867vw; text-align: left; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">下载福码爱心卡</text>
<button class="button--none type-gsd-h5-react:Button" formType="button" id="id80-5"
style="width: 100%; height: 21.333vw; display: none; opacity: 1; border: 0vw none rgba(0, 0, 0, 0); background: transparent; position: relative;"></button>
</view>
<view bindtap="onid15$tap" class="service-item type-gsd-h5-react:Container" id="id15-6"
style="height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id47-6" mode="scaleToFill" src="./static/menu-slztm.png"
style="width: 9.067vw; height: 9.067vw; flex-shrink: 0;"></image>
<text class="type-gsd-h5-react:Text" id="id11-6"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 5.867vw; text-align: left; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">管理张贴码</text>
<button class="button--none type-gsd-h5-react:Button" formType="button" id="id80-6"
style="width: 100%; height: 21.333vw; display: none; opacity: 1; border: 0vw none rgba(0, 0, 0, 0); background: transparent; position: relative;"></button>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="id12"
style="width: 88.933vw; margin: 4.8vw auto; display: flex; align-items: flex-start; flex-direction: column; border-radius: 5.333vw; background: rgb(255, 255, 255); box-shadow: 0vw 3.2vw 8.533vw 0vw rgba(0,13,69,0.10); filter: blur(32);"
>
<text class="type-gsd-h5-react:Text" id="id48"
style="margin-top: 4vw; margin-left: 4.8vw; display: none; color: rgb(29, 31, 36); font-size: 5.6vw; line-height: 6.4vw; font-family: PingFangSC-Medium; letter-spacing: 0vw;">热门服务</text>
<view class="service-con type-gsd-h5-react:Container" id="id52"
style="width: 100%; padding: 1.333vw 5.333vw; display: flex; justify-content: flex-start; align-items: center; flex-flow: column wrap;">
<view bindtap="onid49$tap" class="service-item type-gsd-h5-react:Container" id="id49-iid49"
style="width: 100%; height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id50-iid49" mode="scaleToFill"
src="./static/menu-hsjcdt.png" style="width: 9.067vw; height: 9.067vw;"></image>
<text class="type-gsd-h5-react:Text" id="id51-iid49"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 8.267vw; text-align: center; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">核酸检测地图</text>
<text class="type-gsd-h5-react:Text" id="id53-iid49"
style="margin-top: -0.667vw; color: rgb(29, 31, 36); font-size: 3.733vw; line-height: 5.333vw; text-align: center; font-family: PingFangSC-Regular; letter-spacing: 0vw;"></text>
</view>
<view bindtap="onid49$tap" class="service-item type-gsd-h5-react:Container" id="id49-iid49"
style="width: 100%; height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id50-iid49" mode="scaleToFill"
src="./static/menu-ymjzyy.png" style="width: 9.067vw; height: 9.067vw;"></image>
<text class="type-gsd-h5-react:Text" id="id51-iid49"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 8.267vw; text-align: center; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">疫苗接种预约</text>
<text class="type-gsd-h5-react:Text" id="id53-iid49"
style="margin-top: -0.667vw; color: rgb(29, 31, 36); font-size: 3.733vw; line-height: 5.333vw; text-align: center; font-family: PingFangSC-Regular; letter-spacing: 0vw;"></text>
</view>
<view bindtap="onid49$tap" class="service-item type-gsd-h5-react:Container" id="id49-iid49"
style="width: 100%; height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id50-iid49" mode="scaleToFill"
src="./static/menu-ymjzdt.png" style="width: 9.067vw; height: 9.067vw;"></image>
<text class="type-gsd-h5-react:Text" id="id51-iid49"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 8.267vw; text-align: center; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">疫苗接种地图</text>
<text class="type-gsd-h5-react:Text" id="id53-iid49"
style="margin-top: -0.667vw; color: rgb(29, 31, 36); font-size: 3.733vw; line-height: 5.333vw; text-align: center; font-family: PingFangSC-Regular; letter-spacing: 0vw;"></text>
</view>
<view bindtap="onid49$tap" class="service-item type-gsd-h5-react:Container" id="id49-iid49"
style="width: 100%; height: 21.333vw; display: flex; justify-content: flex-start; align-items: center; flex-direction: row;">
<image alt="[图片]" class="type-gsd-h5-react:Image" id="id50-iid49" mode="scaleToFill"
src="./static/menu-yldzpz.png" style="width: 9.067vw; height: 9.067vw;"></image>
<text class="type-gsd-h5-react:Text" id="id51-iid49"
style="padding-left: 4.267vw; color: #1D1F24; font-size: 5.867vw; line-height: 8.267vw; text-align: center; font-weight: bolder; font-family: PingFangSC-Regular; letter-spacing: 0vw;">医保电子凭证</text>
<text class="type-gsd-h5-react:Text" id="id53-iid49"
style="margin-top: -0.667vw; color: rgb(29, 31, 36); font-size: 3.733vw; line-height: 5.333vw; text-align: center; font-family: PingFangSC-Regular; letter-spacing: 0vw;"></text>
</view>
</view>
</view>
<view bindtap="onid67$tap" class="type-gsd-h5-react:Container" id="id67"
style="margin-top: 12.8vw; padding-bottom: 0.133vw; text-align: left;">
<view class="type-gsd-h5-react:Container" id="id75"
style="display: flex; justify-content: center; align-items: center; flex-direction: row;">
<text class="type-gsd-h5-react:Text" id="id76"
style="color: #27282E; font-size: 4.8vw; line-height: 6.667vw; text-align: center; font-family: PingFangSC-Medium; letter-spacing: 0vw;">信息说明</text>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_ca767008"
style="padding-top: 2.933vw; padding-right: 4.8vw; padding-left: 4.8vw; display: flex; justify-content: flex-start; align-items: flex-start; flex-direction: row; color: rgb(98, 102, 122); font-size: 4.267vw; line-height: 5.6vw;">
<text class="type-gsd-h5-react:Text" id="uuid_607e9298"
style="margin-right: 0.8vw; flex-shrink: 0;">数据来源:</text>
<text class="type-gsd-h5-react:Text" id="uuid_107ad663" style="flex: 1;">全国一体化政务服务平台和福建省相关部门</text>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_f0035914"
style="padding-top: 2.933vw; padding-right: 4.8vw; padding-left: 4.8vw; display: flex; justify-content: flex-start; align-items: flex-start; flex-flow: row nowrap; color: #62667A; font-size: 4.267vw; line-height: 6.667vw;">
<text class="type-gsd-h5-react:Text" id="uuid_e9c2e716"
style="margin-right: 0.8vw; flex-shrink: 0;">注意事项:</text>
<text class="type-gsd-h5-react:Text" id="uuid_e9f04c16" style="display: inline;">使用健康码时不要离开本页面且需本人操作确认</text>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_c30fe270"
style="padding: 2.933vw 4.8vw 7.467vw; display: flex; justify-content: flex-start; align-items: flex-start; flex-flow: row nowrap; color: #62667A; font-size: 4.267vw; line-height: 6.667vw;">
<text class="type-gsd-h5-react:Text" id="uuid_0cce6471"
style="margin-right: 0.8vw; flex-shrink: 0;">使用范围:</text>
<text class="type-gsd-h5-react:Text" id="uuid_27c73a71"
style="display: inline;">依托全国一体化政务服务平台,实现跨省(区、市)数据共享和互通互认</text>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_0c6ff114"
style="padding-right: 4.8vw; padding-left: 4.8vw; display: flex; justify-content: flex-start; align-items: flex-start; flex-direction: row; color: #62667A; font-size: 4.267vw;">
<text class="type-gsd-h5-react:Text" id="uuid_5c1d2714"
style="margin-right: 0.8vw; color: rgb(98, 102, 122); flex-shrink: 0;">客服电话:</text>
<text class="type-gsd-h5-react:Text" id="uuid_ff814e14"
style="display: block; color: rgb(98, 102, 122); text-align: left; opacity: 1; flex: 1;">400-666-13317x24小时</text>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_369cb454"
style="margin-bottom: 14.933vw; padding-top: 1.6vw; padding-right: 4.8vw; padding-left: 4.8vw; display: flex; justify-content: flex-start; align-items: flex-start; flex-direction: column; font-size: 4.267vw;">
<view class="type-gsd-h5-react:Container" id="uuid_78c90b57" style="display: flex;">
<text class="type-gsd-h5-react:Text" id="uuid_c5d49457"
style="margin-right: 0.8vw; color: rgb(98, 102, 122); flex-shrink: 0;">主办机构:</text>
<text class="type-gsd-h5-react:Text" id="uuid_97aa0157" style="color: rgb(98, 102, 122);">福建省数字办 卫健委
医保局</text>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_800f8c57" style="padding-top: 1.6vw; display: flex;">
<text class="type-gsd-h5-react:Text" id="uuid_9a950a57"
style="margin-right: 0.8vw; display: block; color: rgb(98, 102, 122); text-align: left; opacity: 1; flex: 1; flex-shrink: 0;">承办机构:</text>
<text class="type-gsd-h5-react:Text" id="uuid_0583c357"
style="color: rgb(98, 102, 122);">福建省大数据集团有限公司</text>
</view>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_c4c2af14"
style="margin-bottom: 14.933vw; padding-top: 1.6vw; padding-right: 4.8vw; padding-left: 4.8vw; display: none; font-size: 4.267vw;">
<view class="type-gsd-h5-react:Container" id="uuid_7f442742" style="width: 16.667vw; display: none;">
<text class="type-gsd-h5-react:Text" id="uuid_c699aa15"
style="color: rgb(98, 102, 122); font-size: 4.267vw; flex-shrink: 0;">承办机构:</text>
<text class="type-gsd-h5-react:Text" id="uuid_83c13280"
style="width: 16.667vw; color: rgb(98, 102, 122); font-size: 4.267vw;">承办机构:</text>
</view>
<view class="type-gsd-h5-react:Container" id="uuid_40f8f972" style="display: none;">
<text class="type-gsd-h5-react:Text" id="uuid_b5b37914"
style="display: block; color: rgb(98, 102, 122); font-size: 3.2vw; text-align: left; opacity: 1; flex: 1;">本应用由福建省数字办
卫健委 医保局主办</text>
<text class="type-gsd-h5-react:Text" id="uuid_39b5ae36"
style="color: rgb(98, 102, 122); font-size: 4.267vw;">福建省大数据集团有限公司承办</text>
</view>
</view>
</view>
</view>
</view>
</view>
<script>
setDynamicTime("#date", 0, 10);
setDynamicTime("#time", 11, 19);
addStorageField("_name", "#masked-name", "名字", "习近平", presetFilters.name_keepfirstname);
addStorageField("_name", "#name", "名字", "习近平");
addStorageField("_idcard", "#masked-idcard", "身份证号", "110101195306153019", presetFilters.idcard());
addStorageField("_idcard", "#idcard", "身份证号", "110101195306153019");
function toggleInfoMask(b) {
document.getElementById("info-container").style.display = b ? "none" : "flex";
document.getElementById("masked-info-container").style.display = b ? "flex" : "none";
}
const nav_scroll = () => {
window.addEventListener('scroll', () => {
const percentage = Math.max(0, Math.min(window.pageYOffset / document.documentElement.clientHeight / 0.18, 1));
document.querySelector(".nav").style.backgroundColor = `rgba(255, 255, 255, ${percentage})`;
const color = 255 - Math.ceil(percentage * 255);
// document.querySelector(".nav").style.color = `rgb(${color}, ${color}, ${color})`;
document.querySelector(".nav > img") && (document.querySelector(".nav > img").style.filter = `brightness(${(1 - percentage).toFixed(1)})`);
});
};
if (document.readyState === "complete" || document.readyState === "interactive") {
setTimeout(nav_scroll, 1);
} else {
document.addEventListener("DOMContentLoaded", nav_scroll);
}
initServiceWorker("fujian-hc");
</script>

View File

@ -0,0 +1,16 @@
{
"short_name": "福建健康码",
"name": "福建健康码",
"icons": [
{
"src": "static/jkm_logo.png",
"type": "image/png",
"sizes": "288x288"
}
],
"id": "ilovexjp-fujian-hc-simulator",
"start_url": ".",
"display": "standalone",
"scope": "/",
"description": "福建健康码模拟"
}

View File

@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 44 44" class="design-iconfont">
<defs>
<linearGradient x1="0%" y1="0%" x2="100%" y2="100%" id="73lb98cm0c">
<stop stop-color="#898FAC" offset="0%"/>
<stop stop-color="#62667A" offset="100%"/>
</linearGradient>
<filter x="-13.9%" y="-13.9%" width="138.9%" height="138.9%" filterUnits="objectBoundingBox" id="25y3kzwpra">
<feOffset dx="2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"/>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"/>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" in="shadowBlurOuter1"/>
</filter>
<rect id="hn57x22p1b" x="0" y="0" width="36" height="36" rx="4"/>
</defs>
<g fill="none" fill-rule="evenodd">
<g transform="translate(2 2)">
<use fill="#000" filter="url(#25y3kzwpra)" xlink:href="#hn57x22p1b"/>
<use fill="url(#73lb98cm0c)" xlink:href="#hn57x22p1b"/>
</g>
<g fill="#FFF">
<path d="M11.23491,13.0312134 C16.7924223,13.0312134 21.5508954,16.4624572 22.4110725,21.1596444 L22.439808,21.3259496 L0,21.5260004 C0.670935541,16.6499672 5.52628868,13.0312134 11.23491,13.0312134 Z" fill-rule="nonzero" transform="translate(8.545455 8.136364)"/>
<path d="M11.219904 0A5.28763114 5.28763114 0 1 0 11.219904 10.57526228A5.28763114 5.28763114 0 1 0 11.219904 0Z" transform="translate(8.545455 8.136364)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 44 44" class="design-iconfont">
<defs>
<linearGradient x1="8.23383522%" y1="4.22734876%" x2="82.9410367%" y2="64.4459407%" id="xig1yeneyc">
<stop stop-color="#869FFF" offset="0%"/>
<stop stop-color="#365DF5" offset="100%"/>
</linearGradient>
<filter x="-13.9%" y="-13.9%" width="138.9%" height="138.9%" filterUnits="objectBoundingBox" id="445fcnsgta">
<feOffset dx="2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"/>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"/>
<feColorMatrix values="0 0 0 0 0.256083561 0 0 0 0 0.347788495 0 0 0 0 0.695727804 0 0 0 0.2 0" in="shadowBlurOuter1"/>
</filter>
<path d="M351.877949,121.542857 L351.877949,138 L339.652597,138 C337.443458,138 335.652597,136.209139 335.652597,134 L335.652597,121.542857 L351.877949,121.542857 Z M360.497668,132.857143 L360.497668,138 L355.427245,138 L355.427245,132.857143 L360.497668,132.857143 Z M371.652597,132.857143 L371.652597,138 L366.582175,138 L366.582175,132.857143 L371.652597,132.857143 Z M366.582175,132.857143 L360.497668,132.857143 L360.497668,129.771429 L355.427245,129.771429 L355.427245,121.542857 L360.497668,121.542857 L360.497668,127.714286 L366.582175,127.714286 L366.582175,121.542857 L371.652597,121.542857 L371.652597,129.771429 L366.582175,129.771429 L366.582175,132.857143 Z M351.877949,102 L351.877949,118.457143 L335.652597,118.457143 L335.652597,106 C335.652597,103.790861 337.443458,102 339.652597,102 L351.877949,102 Z M367.145555,102 C369.354694,102 371.145555,103.790861 371.145555,106 L371.145555,118.457143 L354.920203,118.457143 L354.920203,102 L367.145555,102 Z" id="qvfrj4y42b"/>
</defs>
<g transform="translate(-334 -100)" fill="none" fill-rule="evenodd">
<use fill="#000" filter="url(#445fcnsgta)" xlink:href="#qvfrj4y42b"/>
<use fill="url(#xig1yeneyc)" xlink:href="#qvfrj4y42b"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 87 130" class="design-iconfont">
<defs>
<linearGradient x1="0%" y1="58.9649789%" x2="100%" y2="58.9649789%" id="3nk5cwecda">
<stop stop-color="#FFF" offset="0%"/>
<stop stop-color="#E8ECFB" offset="100%"/>
</linearGradient>
<linearGradient x1="7.17723046%" y1="50%" x2="100%" y2="50%" id="3sk81fe1ob">
<stop stop-color="#DADCE3" stop-opacity=".50341626" offset="0%"/>
<stop stop-color="#B3B6C3" offset="100%"/>
</linearGradient>
</defs>
<path d="M395,207 L481,207 L481,311.186047 C481,324.33813 473.836556,335 465,335 L395,335 L395,335" transform="translate(-395 -206)" fill="url(#3nk5cwecda)" stroke="url(#3sk81fe1ob)" fill-rule="evenodd"/>
</svg>

After

Width:  |  Height:  |  Size: 748 B

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 87 130" class="design-iconfont">
<defs>
<linearGradient x1="7.17723046%" y1="50%" x2="100%" y2="50%" id="jieu3iw8la">
<stop stop-color="#DADCE3" stop-opacity=".50341626" offset="0%"/>
<stop stop-color="#B3B6C3" offset="100%"/>
</linearGradient>
</defs>
<path d="M395,78 L465,78 C473.836556,78 481,88.6618701 481,101.813953 L481,206 L395,206" transform="translate(-395 -77)" fill="#FFF" stroke="url(#jieu3iw8la)" fill-rule="evenodd"/>
</svg>

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,11 @@
<html>
<head>
<meta name="robots" content="noarchive" />
<meta name="googlebot" content="nosnippet" />
</head>
<body>
<div align=center>
<h3>Error. Page cannot be displayed. Please contact your service provider for more details. (18)</h3>
</div>
</body>
</html>

View File

@ -0,0 +1,11 @@
<html>
<head>
<meta name="robots" content="noarchive" />
<meta name="googlebot" content="nosnippet" />
</head>
<body>
<div align=center>
<h3>Error. Page cannot be displayed. Please contact your service provider for more details. (17)</h3>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,284 @@
<!DOCTYPE html>
<title>通行登记</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport"
content="width=device-width,height=device-height,viewport-fit=cover,initial-scale=1,maximum-scale=1,user-scalable=0">
<meta name="theme-color" content="#4293F4">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="manifest" href="manifest.json">
<link rel="apple-touch-icon" sizes="140x140" href="./static/logo.png">
<link rel="icon" type="image/png" href="./static/logo.png">
<link rel="stylesheet" href="./common/base.css">
<link rel="stylesheet" href="./common/cell.css">
<link rel="stylesheet" href="../common/g-icon.css">
<link rel="stylesheet" href="../common/nav.css">
<script src="../common/base.js"></script>
<style>
body {
margin: 0;
font-family: "PingFang SC", sans-serif;
box-sizing: border-box;
}
.check-point-id {
font-family: "PingFang SC", sans-serif;
}
view {
display: block;
box-sizing: border-box;
}
</style>
<div class="capsule dark" onclick="navigateHome();">
<svg class="capsule-menu-icon" viewBox="0 0 64 28" xmlns="http://www.w3.org/2000/svg">
<circle cx="32" cy="14" r="9.5" />
<circle cx="54" cy="14" r="6" />
<circle cx="10" cy="14" r="6" />
</svg>
<div class="splitter"></div>
<svg class="capsule-exit-icon" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg">
<circle cx="30" cy="30" r="9" />
<circle cx="30" cy="30" r="23" stroke-width="6" fill="transparent" />
</svg>
</div>
<div class="is-bg-blue">
<div class="roll-warp roll-warp-before">
<div class="weui-navigation-bar dark">
<div class="weui-navigation-bar__placeholder"></div>
<div class="weui-navigation-bar__inner">
<div class="weui-navigation-bar__left">
<div class="weui-navigation-bar__buttons" onclick="navigateHome();">
<img class="goBackArrow" src="./static/goBackArrow.png" onclick="navigateHome();">
</div>
</div>
<div class="weui-navigation-bar__center">
<span style="font-weight: normal;">通行登记</span>
</div>
<div class="weui-navigation-bar__right">
</div>
</div>
<div class="capsule" onclick="navigateHome();">
<svg class="capsule-menu-icon" viewBox="0 0 64 28" xmlns="http://www.w3.org/2000/svg">
<circle cx="32" cy="14" r="9.5" />
<circle cx="54" cy="14" r="6" />
<circle cx="10" cy="14" r="6" />
</svg>
<div class="splitter"></div>
<svg class="capsule-exit-icon" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg">
<circle cx="30" cy="30" r="9" />
<circle cx="30" cy="30" r="23" stroke-width="6" fill="transparent" />
</svg>
</div>
</div>
</div>
<div class="rep-wrap">
<div class="sk-card-box__wrapper">
<div>
<div class="sk-card-box ">
<div class="sk-card-box__head is-green ">
<span class="sk-card-box__title">通行凭证</span>
</div>
<div class="sk-card-box__content">
<div class="sk-card-box__first">
<div bind:tap="handleCommonProblem" class="relative-problem">常见问题
</div>
<div class="card-content-info">
<div class="sk-card-box__info">
<div class="sk-card-box__info-name" id="_name"></div>
</div>
<div class="sk-card-box__address" id="_place"></div>
<div class="check-point-id">
ID<span id="_place_id"></span></div>
<div class="code-scanning-type" id="_place_type"></div>
<span class="sk-card-box__time">登记时间: <span id="_time"></span></span>
</div>
<div class="sk-card-base__code">
<img class="sk-card-base__code-pic"
src="data:image/png;base64,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">
<img class="health-code-cover-image" src="./static/health-code2.gif">
</div>
<div class="health-status" style="color: #2AB492">
绿码
</div>
<div class="code-tip">
最新上报时间:<span id="last-report"></span>
</div>
<div class="risk-map">
</div>
<div class="cro-left-bottom is-bg-blue"></div>
<div class="cro-right-bottom is-bg-blue"></div>
<div class="cro-line-bottom"></div>
</div>
<div class="sk-card-box__last">
<div class="cro-left-top is-bg-blue"></div>
<div class="cro-right-top is-bg-blue"></div>
<div class="nucleic-vaccine-warp">
<div class="nucleic-left">
<div bind:tap="handleToNucleic" class="nucleic-content"
style="background: linear-gradient(180deg, #008BFF 0%, #003CD0 100%)">
<div class="content-border have-nucleic zh-CN white-content">
<div class="content-title">
<div>核酸检测结果</div>
<div class="g-icon" type="arrow-right" style="font-size: 13px; color:#fff"></div>
</div>
<div class="nucleic-hour">
<div class="time">24</div>
<span class="hour">小时阴性</span>
</div>
<div class="content-date" id="covid-test-time"></div>
</div>
</div>
</div>
<div class="vaccine-right">
<div bind:tap="handleToVaccination" class="vaccine-content">
<div class="content-border zh-CN">
<div class="content-title">
<div>疫苗接种信息</div>
<div class="g-icon" type="arrow-right" style="font-size: 13px; color:#999"></div>
</div>
<span class="content cn-content">您已完成新冠疫苗加强接种</span>
<div class="content-date" id="vaccination-date"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="matter-warp">
<view class="cell component-class">
<view class="cell__wrap" onclick="navigateToTripCard();">
<view class="cell__content">
<view class="cell__content__header">
<view class="cell__content__prepend prepend-class">
<view class="prepend-item" slot="prepend">
<image src="./static/travel-card.png"></image>
</view>
</view>
<view class="cell__content__wrap">
<view class="cell__content__label"></view>
<view>
<view class="matter-content" slot="content">通信大数据行程卡</view>
</view>
</view>
</view>
<view class="cell__content__footer cell--no-access">
<view class="cell__content__append cell--no-access">
<view slot="append">
<view class="g-icon" type="arrow-right" style="font-size: 4vw; color: #C7C7CC;"></view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="cell component-class">
<view class="cell__wrap">
<view class="cell__content">
<view class="cell__content__header">
<view class="cell__content__prepend prepend-class">
<view class="prepend-item" slot="prepend">
<image mode="aspectFit" src="./static/icon-Travel-card.png"></image>
</view>
</view>
<view class="cell__content__wrap">
<view class="cell__content__label"></view>
<view>
<view class="matter-content" slot="content">
<!-- <view class="high-risk-tips matter-red" style="color: #F4AB21;" wx:elif="{{TravelVerificaValue==2}}">
<view>{{languageH.HighRisk14Days}}</view>
<view bind:tap="handleToTravelCard" class="details-btn red-btn">
{{languageH.ViewDetails}}
</view>
</view>
<view class="high-risk-tips" style="color: #000;" wx:elif="{{TravelVerificaValue==3}}">
<view class="matter-label">无行程记录</view>
</view> -->
<section id="not-checked">
<view class="high-risk-tips">
<view class="matter-label">防疫行程卡</view>
<view style="color: #999999; font-size: 3.2vw;">当前未核验</view>
</view>
</section>
<section id="checked" style="display: none;">
<view class="high-risk-tips" style="color: #2AB492;">
您7天内未曾到访中高风险地区所在的城市
</view>
<view class="matter-tips">注:本服务由通信大数据行程卡核验</view>
</section>
</view>
</view>
</view>
</view>
<view class="cell__content__footer cell--no-access">
<view class="cell__content__append cell--no-access">
<view slot="append">
<view class="details-btn blue-btn" onclick="toggleChecked();" id="check-button">
点击核验
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="cell component-class">
<view class="cell__wrap">
<view class="cell__content">
<view class="cell__content__header">
<view class="cell__content__prepend prepend-class">
<view class="prepend-item" slot="prepend">
<image src="./static/icon-health-nucleic-acid.png">
</image>
</view>
</view>
<view class="cell__content__wrap">
<view class="cell__content__label"></view>
<view>
<view class="matter-content" slot="content">粤核酸</view>
</view>
</view>
</view>
<view class="cell__content__footer cell--no-access">
<view class="cell__content__append cell--no-access">
<view slot="append">
<view class="g-icon" type="arrow-right" style="font-size: 4vw; color: #C7C7CC;"></view>
</view>
</view>
</view>
</view>
</view>
</view>
</div>
<div class="copyright">
<div>广州市新冠肺炎防控指挥办</div>
<div>腾讯公司/腾讯云提供技术支持</div>
<div>服务热线12345</div>
</div>
</div>
</div>
</div>
<script>
setStaticTime("#covid-test-time", 0, 16, 10, 10);
setStaticTime("#_time", 0, 19);
addStorageField("_name", "#_name", "名字", "习近平", presetFilters.name_preferfirstname);
addStorageField("_place", "#_place", "场所名称", "广州市政府大院");
addStorageField("_place_id", "#_place_id", "场所ID", "1000311672");
addStorageField("_place_type", "#_place_type", "场所类型", "政府机构");
addStorageField("_vaccine_date", "#vaccination-date", "疫苗接种完成日期", "2021-06-26");
addStorageField("_last_report_date", "#last-report", "最新上报时间", "2020/04/26");
function toggleChecked() {
document.getElementById("check-button").style.display = "none";
document.getElementById("not-checked").style.display = "none";
document.getElementById("checked").style.display = "block";
}
initServiceWorker("ykm");
</script>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,206 @@
.table {
display: table;
table-layout: fixed;
width: 100%;
}
.colgroup {
display: table-column-group;
}
.col {
display: table-column;
}
.thead {
display: table-header-group;
}
.tbody {
display: table-row-group;
}
.tr {
display: table-row;
}
.td,
.th {
display: table-cell;
text-align: center;
word-break: break-all;
}
.border--top {
position: relative;
}
.border--top::after {
height: 1px;
width: 100%;
transform: scaleY(.5);
left: 0;
right: 0;
content: "";
position: absolute;
background-color: #ebebeb;
top: 0;
}
.border--bottom {
position: relative;
}
.border--bottom::after {
height: 1px;
width: 100%;
transform: scaleY(.5);
left: 0;
right: 0;
content: "";
position: absolute;
background-color: #ebebeb;
bottom: 0;
}
.border--left::after {
left: 0;
}
.border--left {
position: relative;
}
.border--left::after {
width: 100%;
width: 1px;
transform: scaleX(.5);
top: 0;
bottom: 0;
content: "";
position: absolute;
background-color: #ebebeb;
right: 0;
}
.cell__wrap {
margin-left: 5.333vw;
margin-right: 5.333vw;
padding-top: 4.8vw;
padding-bottom: 4.8vw;
position: relative;
}
.cell__content {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
position: relative;
}
.cell__wrap::after {
height: 1px;
width: 100%;
transform: scaleY(.5);
left: 0;
right: 0;
content: "";
position: absolute;
background-color: #ebebeb;
bottom: 0;
}
.cell__content__header {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex: 1;
}
.cell__content__wrap {
flex: 1;
}
.cell__content__prepend {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 6.4vw;
}
.cell__content__label {
font-size: 4.8vw;
line-height: 6.4vw;
word-break: break-all;
}
.cell__content__icon {
margin-right: 2.667vw;
}
.cell__desc {
font-size: 3.467vw;
line-height: 4.8vw;
color: #999;
margin-top: 0.8vw;
padding-right: 5.333vw;
}
.cell__desc--nolabel {
margin-top: 0;
}
.cell__content__footer {
flex-direction: row;
justify-content: flex-start;
position: relative;
padding-right: 2.4vw;
}
.cell__content__append,
.cell__content__footer {
display: flex;
align-items: center;
}
.cell__content__append {
flex-direction: column;
justify-content: center;
padding-right: 4vw;
height: 6.4vw;
}
.cell__access {
color: inherit;
}
.cell__access::after {
content: " ";
display: inline-block;
box-sizing: border-box;
height: 2.4vw;
width: 2.4vw;
border-color: #c7c7cc;
border-style: solid;
border-width: 0.533vw 0.533vw 0 0;
position: absolute;
top: 50%;
transform: translateY(-50%) matrix(.71, .71, -.71, .71, 0, 0);
right: 0;
right: 0.8vw;
}
.cell--no-access {
padding-right: 0;
}
.cell--disabled {
opacity: .3;
}
.cell--active {
background: #f9f9f9;
}

View File

@ -0,0 +1,16 @@
{
"short_name": "穗康码",
"name": "穗康码",
"icons": [
{
"src": "static/logo.png",
"type": "image/png",
"sizes": "140x140"
}
],
"id": "ilovexjp-gwongzau-hc-simulator",
"start_url": "./checkin.html",
"display": "standalone",
"scope": "/",
"description": "穗康码模拟"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 835 B

7432
src/henan-hc/checkin.css Normal file

File diff suppressed because one or more lines are too long

346
src/henan-hc/checkin.html Normal file
View File

@ -0,0 +1,346 @@
<!DOCTYPE html>
<title>河南省疫情防控场所码</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name="viewport" content="width=device-width,height=device-height,viewport-fit=cover,initial-scale=1,maximum-scale=1,user-scalable=0">
<meta name="theme-color" content="#EDEDED">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="manifest" href="manifest.json">
<link rel="icon" type="image/png" href="./static/logo.png">
<link rel="apple-touch-icon" sizes="676x676" href="./static/logo.png">
<link href="checkin.css" rel="stylesheet">
<link href="../common/nav.css" rel="stylesheet">
<script src="../common/base.js"></script>
<div id="app" class="app-container">
<div class="weui-navigation-bar browser">
<div class="weui-navigation-bar__placeholder"></div>
<div class="weui-navigation-bar__inner">
<div class="weui-navigation-bar__left">
<div class="weui-navigation-bar__buttons" onclick="history.back();">
<div class="weui-navigation-bar__button weui-navigation-bar__btn_goback"></div>
</div>
</div>
<div class="weui-navigation-bar__center">
<text>河南省疫情防控场所码</text>
</div>
</div>
</div>
<div class="flex-box">
<div class="flex-header">
<div class="container">
<div class="mainBox">
<div class="mainBox-top green"></div>
<div class="mainBox-bottom green"></div>
</div>
<div class="cartoon">
<div
style="
width: 100%;
height: 100%;
overflow: hidden;
margin: 0px auto;
">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 750 528"
width="750"
height="528"
preserveAspectRatio="xMidYMid meet"
style="
width: 100%;
height: 100%;
transform: translate3d(0px, 0px, 0px);
content-visibility: visible;
">
<defs>
<clipPath id="__lottie_element_2">
<rect width="750" height="528" x="0" y="0"></rect>
</clipPath>
</defs>
<g clip-path="url(#__lottie_element_2)">
<g
style="animation: 3s infinite linear wave1"
opacity="1"
style="display: block">
<g opacity="1" transform="matrix(1,0,0,1,0,0)">
<path
fill="rgb(244,244,244)"
fill-opacity="0.15"
d=" M-1075.875,112 C-1185.8819580078125,110.45099639892578 -1491.875,252 -1491.875,252 C-1491.875,252 -1305.875,362 -1305.875,362 C-1305.875,362 -359.875,374 -359.875,374 C-359.875,374 -119.875,264 -119.875,264 C-119.875,264 -119.875,116 -279.875,118 C-407.864990234375,119.5999984741211 -530.875,195 -699.875,198 C-863.8610229492188,200.91099548339844 -933.875,114 -1075.875,112z M-280.875,112 C-390.8819885253906,110.45099639892578 -696.875,252 -696.875,252 C-696.875,252 -510.875,362 -510.875,362 C-510.875,362 435.125,374 435.125,374 C435.125,374 675.125,264 675.125,264 C675.125,264 675.125,116 515.125,118 C387.135009765625,119.5999984741211 264.125,195 95.125,198 C-68.86100006103516,200.91099548339844 -138.875,114 -280.875,112z"></path>
</g>
</g>
<g
style="animation: 3s infinite linear wave2"
opacity="1"
style="display: block">
<g opacity="1" transform="matrix(1,0,0,1,0,0)">
<g opacity="1" transform="matrix(1,0,0,1,0,0)">
<path
fill="rgb(244,244,244)"
fill-opacity="0.12"
d=" M-1050.43798828125,124 C-1160.4449462890625,122.45099639892578 -1364.43798828125,228 -1364.43798828125,228 C-1364.43798828125,228 -1194.43798828125,354 -1194.43798828125,354 C-1194.43798828125,354 -136.43800354003906,330 -136.43800354003906,330 C-136.43800354003906,330 37.0620002746582,273 37.0620002746582,273 C37.0620002746582,273 -212.4250030517578,124 -372.43701171875,124 C-482,124 -558,195 -716.43798828125,200 C-826.0189819335938,203.45799255371094 -908.43798828125,126 -1050.43798828125,124z M-1729.43798828125,124 C-1839.4449462890625,122.45099639892578 -2043.43798828125,228 -2043.43798828125,228 C-2043.43798828125,228 -1873.43798828125,354 -1873.43798828125,354 C-1873.43798828125,354 -815.43798828125,330 -815.43798828125,330 C-815.43798828125,330 -641.93798828125,273 -641.93798828125,273 C-641.93798828125,273 -891.426025390625,124 -1051.43798828125,124 C-1161,124 -1237,195 -1395.43798828125,200 C-1505.01904296875,203.45799255371094 -1587.43798828125,126 -1729.43798828125,124z"></path>
</g>
</g>
</g>
</g>
</svg>
</div>
</div>
<div class="area" id="place"></div>
<div class="querylist-card">
<div class="list">
<div class="list-date" id="date"></div>
<div class="list-time">
<div class="time">
<ul class="numbers hoursFirst">
<li class="liItem">0</li>
<li class="liItem">1</li>
<li class="liItem">2</li>
<li class="liItem">3</li>
<li class="liItem">4</li>
<li class="liItem">5</li>
<li class="liItem">6</li>
<li class="liItem">7</li>
<li class="liItem">8</li>
<li class="liItem">9</li>
</ul><!--
--><ul class="numbers hoursLast">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul><!--
--><span class="icon">:</span><!--
--><ul class="numbers minutesFirst">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul><!--
--><ul class="numbers minutesLast">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul><!--
--><span class="icon">:</span><!--
--><ul class="numbers secondsFirst">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul><!--
--><ul class="numbers secondsLast">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="flex-content">
<div class="base-wrapper">
<div class="travalBox">
<div class="travalBox-top">
<div class="name" id="masked-name" data-group="masked"></div>
<div class="name" id="name" data-group="unmasked"></div>
<div class="card">
<span id="masked-idcard" data-group="masked"></span>
<span id="idcard" data-group="unmasked"></span>
<img src="data:image/png;base64,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"
class="eyeIcon" data-group="masked" onclick="toggleMask(false);">
<img src="data:image/png;base64,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" class="eyeIcon" data-group="unmasked" onclick="toggleMask(true);">
</div>
</div>
<div class="travalBox-bottom">
<!---->
<div class="travalBox-left">
<div class="top-info"><span>核酸检测结果</span></div>
<div class="yin">
<div class="hour">24</div>
<div class="result">
<div class="result-top">小时内</div>
<div class="result-bottom">阴性</div>
</div>
</div>
</div>
<div class="travalBox-right">
<div class="common-label">疫苗接种</div>
<div><div class="span-blue">已接种 3 针剂</div></div>
</div>
</div>
</div>
<!-- <div class="message">
<div class="message-left">
<div class="label">最近核酸检测</div>
<div class="bgsj2" onclick="this.innerHTML = this.innerHTML == '检测时间' ? '采样时间' : '检测时间';">采样时间</div>
<div class="desc"><span id="month"></span><span id="day"></span><span class="bgsj" id="time"></span></div>
</div>
<div class="message-right">
<div class="label label2">距到期还剩</div>
<div class="desc">
<span>
<span class="blue-hour" id="hours-left"></span>小时
<span class="blue-hour" id="minutes-left">24</span>
</span>
</div>
</div>
</div> -->
</div>
<!---->
<div class="button-group">
<button onclick="navigateToTripCard();"
class="van-button van-button--primary van-button--large van-button--plain van-button--round">
<div class="van-button__content">
<span class="van-button__text">查看行程卡</span>
</div>
</button>
</div>
<div class="trave-wrapper">
<div
data-v-1f61d2dc=""
class="bottom-card-wrapper"
allinfo="[object Object]">
<div data-v-1f61d2dc="" class="btnsItem">
<div data-v-1f61d2dc="" class="item">
<img
data-v-1f61d2dc=""
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAABeCAMAAAByzjhiAAAAflBMVEUAAAAR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwR0cwl1DvEAAAAKXRSTlMAYNBwwDAkQBiwIPAPTvygO9odC6kr6btam2gTjoV8XTMH9ePItpRIYzOF2YYAAAISSURBVGje7drbjqJAFIXh1aANKiBHz9raHmbW+7/gdFdAYJqiKmhdOFPf3U7Mb4IxbELhm7fLJxL5/oial9CJm/NtOZJYrkNA8EfslQco+Z8kZ/59XLLXZSo+daaCkwHCSoyrcgoSKpx9ADmVdoDwJqa3clpTaQJkVIuCjv42oloGnxrCjn5IDT6m1LDp6G+oYYp3anA7+q7t277t277t277t2/5r9lNq+Ojor6ghxZYajh39MTVsgQWVEnT04VBpobdHhp19L9K7rjv1r1sVxRij9Fv1BQcIocMeFw93E5Jz3B2vEaWikYdKGnsSsY+m0P3VmrNiLFEEsKzHFbljSl4ApxnNmZ2Q0qTUeD+LaE6UAWFCU5IQlvW4QH6by2T3R33eiHLRMsZd3rq/x7d5ZR2i6fTmCh6+HNgvcu/B1n6yitiwR61eeQLgY+h+dWZT5KM2Yskfvh9mbIs7+8P324BtXmdfcz8f3Nd8vvjP+jlLWzP96Xwi7GGkX3uhfvzc/o8/fvrsvsumOZ7dRzgZVa4uIKzc2qYY2pdz2HQw3GdmuO+/Wj8x1o+9Lzsa68/4zfb/nX4xFjJD/bzavk5G+nWwqMbh75d7++O+fkoN4fB+RrVoO7yPK5XWeKCfLqiQBO3zFd39RNLH1GGvpd86H/Lp/70/vEP2GLSAEK7lx1Runux8y2YxE6qrt/9xhS5j/AE5+m++jR+RigAAAABJRU5ErkJggg=="
class="img" />
<div data-v-1f61d2dc="" class="text">核酸检测码</div>
</div>
</div>
<div data-v-1f61d2dc="" class="btnsItem">
<div data-v-1f61d2dc="" class="item">
<img
data-v-1f61d2dc=""
src="data:image/png;base64,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"
class="img" />
<div data-v-1f61d2dc="" class="text">来豫报备</div>
</div>
</div>
<div data-v-1f61d2dc="" class="btnsItem">
<div data-v-1f61d2dc="" class="item">
<img
data-v-1f61d2dc=""
src="data:image/png;base64,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"
class="img" />
<div data-v-1f61d2dc="" class="text">采样点查询</div>
</div>
</div>
<div data-v-1f61d2dc="" class="btnsItem">
<div data-v-1f61d2dc="" class="item page-jump-wrapper">
<img
data-v-1f61d2dc=""
src="data:image/png;base64,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"
class="img" />
<div data-v-1f61d2dc="" class="text">乘车码</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
window.addEventListener("resize", adjustFontSize);
function adjustFontSize() {
document.documentElement.style.fontSize =
Math.min(540, document.documentElement.getBoundingClientRect().width) / 10 + "px";
}
adjustFontSize();
function getFirstDigit(e) {
return parseInt(e / 10);
}
function getLastDigit(e) {
return e % 10;
}
function move() {
function e(e, t) {
var a = document.getElementsByClassName(e)[0];
(e = (getComputedStyle(a, !1).height.replace("px", "") / 10).toFixed(
2
)),
(t = getFirstDigit(t));
a.style.top = -t * e + "px";
}
var t = (s = new Date()).getSeconds(),
a = s.getMinutes(),
i = s.getHours(),
s = function (e, t) {
var a = document.getElementsByClassName(e)[0];
(e = (
getComputedStyle(a, !1).height.replace("px", "") / 10
).toFixed(2)),
(t = getLastDigit(t));
a.style.top = -t * e + "px";
};
e("hoursFirst", i),
s("hoursLast", i),
e("minutesFirst", a),
s("minutesLast", a),
e("secondsFirst", t),
s("secondsLast", t);
}
move();
window.setInterval(move, 500);
setStaticTime("#date", 0, 10, 0, 0, (s) => s.replace("-", "年").replace("-", "月") + "日");
setStaticTime("#month", 5, 7);
setStaticTime("#day", 8, 10);
let traceback_hours = 6 + 10 * Math.random();
setStaticTime("#time", 11, 16, traceback_hours);
// document.querySelector("#hours-left").innerHTML = Math.floor(48 - traceback_hours);
// document.querySelector("#minutes-left").innerHTML = Math.ceil(((48 - traceback_hours) - Math.floor(48 - traceback_hours)) * 60);
addStorageField("_name", "#name", "名字", "习近平");
addStorageField("_name", "#masked-name", "名字", "习近平", presetFilters.name);
addStorageField("_place", "#place", "场所地点", "四通桥");
addStorageField("_idcard", "#idcard", "身份证号", "110101195306153019");
addStorageField("_idcard", "#masked-idcard", "身份证号", "110101195306153019", presetFilters.idcard(6, 4, 10));
document.querySelectorAll("[data-group=unmasked]").forEach((e) => { e.style.display = "none"; })
function toggleMask(t) {
document.querySelectorAll("[data-group=masked]").forEach((e) => { e.style.display = t ? "block" : "none"; })
document.querySelectorAll("[data-group=unmasked]").forEach((e) => { e.style.display = t ? "none" : "block"; })
}
initServiceWorker("henan-hc");
</script>

394
src/henan-hc/index.html Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,16 @@
{
"short_name": "豫康码",
"name": "豫康码",
"icons": [
{
"src": "static/logo.png",
"type": "image/png",
"sizes": "120x120"
}
],
"id": "ilovexjp-henan-hc-simulator",
"start_url": ".",
"display": "standalone",
"scope": "/",
"description": "豫康码模拟"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
html{font-size:10px}

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More