diff --git a/.gitignore b/.gitignore index 27ba531..629f8c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ /build +*.css.map +nav.css + *~ # temporary files which can be created if a process still has a handle open of a deleted file diff --git a/Makefile b/Makefile index 764b313..913643a 100644 --- a/Makefile +++ b/Makefile @@ -2,10 +2,11 @@ build: clean makeassets ./build.sh serve: makeassets + sass --watch src/common/nav.scss src/common/nav.css & python3 -m http.server --directory src 80 makeassets: - sed -i "s/\(\/\*\ BEGIN\ ASSETS\ \*\/\).*/\1/" src/service-worker.js + sed -i "s/\(\/\*\ BEGIN\ ASSETS\ \*\/\).*/\1/" src/service-worker.js || sed -i "" "s/\(\/\*\ BEGIN\ ASSETS\ \*\/\).*/\1/" src/service-worker.js ./makeassets.sh >> src/service-worker.js clean: diff --git a/README.md b/README.md index 80130df..db3bc10 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,19 @@ # health-code-simulator +常见问题:[FAQ.md](https://codeberg.org/ilovexjp/health-code-simulator/src/branch/main/docs/FAQ.md) + +Telegram 频道:[@gh_ilovexjp](https://t.me/gh_ilovexjp) + +网页演示:[Cloudflare](https://ilovexjp.pages.dev) + +Reddit: [r/ILoveHealthCode](https://reddit.com/r/ILoveHealthCode) + ## Build ### Build for production ```shell -npm i -g uglify-js clean-css-cli html-minifier +npm i -g uglify-js clean-css-cli html-minifier sass make build ``` @@ -14,5 +22,6 @@ make build Requires python3. ```shell +npm i -g sass make serve ``` diff --git a/build.sh b/build.sh index bbfcaa7..92cbc07 100755 --- a/build.sh +++ b/build.sh @@ -4,7 +4,13 @@ BUILDPATH=./build mkdir $BUILDPATH echo "Copying files..." -cp -RX ./src/ $BUILDPATH/ +cp -R ./src/* $BUILDPATH/ + +echo "Compiling..." +sass --no-source-map ./src/common/nav.scss:./build/common/nav.css +rm ./build/common/nav.css.map +rm ./build/common/nav.scss +rm -rf ./build/common/components 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/} && @@ -23,4 +29,4 @@ done wait; -echo "Build completed" \ No newline at end of file +echo "Build complete" diff --git a/docs/FAQ.md b/docs/FAQ.md new file mode 100644 index 0000000..c056bdf --- /dev/null +++ b/docs/FAQ.md @@ -0,0 +1,93 @@ +# 常见问题 + +## 与新页面 / 新功能 / 错误反馈相关的问题 + +### 我找不到我所在地区的健康码模拟,该怎么办? + +由于开发能力有限,不太可能逐一满足每个人的需求,所以单独的新项目提议可能会被忽略。有时会在 [Telegram 频道](https://t.me/gh_ilovexjp) 上进行匿名调查,这时为你需要的项目投票即可。 + +无论你如何反馈,刷屏通常只会带来反效果。 + +### 为什么健康码模拟和真实的不同? + +如果你发现健康码模拟与真实健康码不同,请先检查: + +- 是否存在不同平台的版本?有时我们的模拟项目是针对特定平台(微信 / 支付宝 /网页)进行制作,可能与你所使用的平台不同。导航栏在不同操作系统下的显示也可能不相同。 +- 你发现的不同点是否存在于所有人的健康码中?有时你的健康码可能与其他人不同,比如模拟通常会是打过新冠疫苗加强针的健康码,可能会和没有疫苗接种的健康码不同。 +- 你所使用的是否为特定地区的健康码?模拟的健康码通常是依据使用该码的主要城市制作,可能与其它城市有所不同。 + +如果仍发现模拟健康码的不同之处,你可以到 [Reddit 社区](https://reddit.com/r/ILoveHealthCode) 反馈,或发送邮件至 ilovexjp@protonmail.com。 + +### 目前项目没有我想要的页面或功能,该向哪里反馈? + +这些提议通常都已经有人提出,你可以逛逛 [Reddit 社区](https://reddit.com/r/ILoveHealthCode)。如果没有人提出,可以在置顶贴内分享你的想法。 + +### 能不能增加黄码/红码功能? + +不会增加这个功能。项目的初衷是反抗这个在极权下极端防疫的反科学产物——健康码,而不是推崇、利用它。 + +### 能不能付费定制功能? + +目前不接受付费定制。 + +## 与使用相关的问题 + +### iPhone 14 Pro Max 1TB 上怎么用 / 我是华为手机,怎么用 / 小米在哪下 / 有没有 apk 安装包? + +本项目只有网页版,请使用浏览器访问网页演示:[ilovexjp.pages.dev](https://ilovexjp.pages.dev)。 + +### 我打不开网页演示,怎么办? + +请检查网络连接(在中国大陆访问通常需要代理)及代理工具。另外可以尝试自行部署或使用信任的人部署的版本。 + +### 如何全屏使用? + +添加至主屏幕(安装 PWA)后就可以全屏使用了。具体的方法因浏览器不同而不同,如 iOS Safari 中,点击下方“共享”按钮,再点击“添加至主屏幕”;Android Chrome / Firefox 中,点击右上角“菜单”按钮,再点击“添加至主屏幕”或“安装”。 + +### 如何离线使用? + +置顶的项目或访问过的项目会自动预加载。预加载完成后会在项目右侧“打勾”,“打勾”的项目在离线时将可以正常使用。 + +### 使用这个项目会不会上传我输入的数据? + +正常情况下,所有的输入数据都只会在本地处理,不会上传。但如果有恶意服务商篡改了网页源码,是有可能收集到你的所有输入的。所以,请选择你信任的服务商,或自行部署。 + +### 如何清空我输入过的数据? + +可以点击目录页下的“清除本地数据”,或在浏览器设置中清除访问数据。 + +### 使用这个项目会不会被人发现? + +会。 + +### 使用这个项目能不能通过机器扫描? + +不能。 + +### 我下载了源码压缩包,但页面加载出现异常,这是为什么? + +请不要直接解压缩源码并打开,源码需要部署在 Web 服务器上。 + +### 我正在用全面屏的 iPhone,但状态栏上的文字消失了,该怎么办? + +请点击项目目录页右上角的“帮助”按钮了解更多。 + +## 与部署相关的问题 + +### 我该如何自行部署这个项目? + +你需要一台 Web 服务器,或是部署到提供这类服务的平台上。请访问 [Codeberg Releases](https://codeberg.org/ilovexjp/health-code-simulator/releases) 下载最新供部署的 `health-code-simulator.zip` 源码,再将其复制到网站根目录下。如果在部署时遇到问题,请多多利用搜索引擎解决。 + +### 我自行部署了项目,但有些功能和网页演示中不同,怎么办? + +很多功能(预加载、摄像头等)可能需要开启 HTTPS 才能使用,请为服务器配置上 HTTPS 环境。 + +### 我自行将源码部署到了 Web 服务器上的非根目录下,但目录页面和行程卡的跳转出了问题,该如何修复? + +请修改 `common/base.js` 中的 `root_path` 常量,将其调整为健康码模拟在网站中的路径。 + +## 其它 + +### 我该如何参与开发? + +欢迎你的加入,请通过信任的邮件服务商发送邮件至 ilovexjp@protonmail.com,简要说明一下自己就可以!请在可以保证自身安全的前提下进行,不要透露可定位到个人的信息。 diff --git a/docs/lib-manual.md b/docs/lib-manual.md new file mode 100644 index 0000000..49da331 --- /dev/null +++ b/docs/lib-manual.md @@ -0,0 +1,213 @@ +# 通用库使用手册 + +## `base.js` + +### `addStorageField` + +```javascript +addStorageField(storage_id, selector, display_name, placeholder, filter = (x) => x) +``` + +将页面中元素与 `localStorage` 中的一个键值绑定。绑定的元素内容将与 `localStorage` 中对应的值同步,并为这些元素增加点击事件,引导用户改变该项的值。 + +- `storage_id: string` 必需,指定 `localStorage` 中存储的键值。 +- `selector: string` 必需,指定要绑定的元素 CSS 选择器。元素将通过 `document.querySelectorAll(selector)` 方法获取。 +- `display_name: string` 必需,显示在弹出提示框中的标题上(“修改 xxx:”)。 +- `placeholder: string` 必需,`localStorage` 中的值未设定时的默认值。 +- `filter: function`:可选,过滤器函数。接收 `localStorage` 中的值为参数,元素的 `innerHTML` 将设置为过滤器返回的内容。默认为 `(x) => x`。 + +`presetFilters` 提供了一些预设过滤器,如:`presetFilters.name`, `presetFilters.idcard(head = 2, tail = 2, mask = 18 - head - tail)`。 + +#### 示例 + +身份证号,只显示前三位和后三位: + +```javascript +addStorageField("_idcard", "#idcard", "身份证号", "110101195306153019", presetFilters.idcard(3, 3)) +``` + +### `initServiceWorker` + +```javascript +initServiceWorker(project_name) +``` + +初始化 Service Worker,用于预加载内容以供离线使用。 + +- `project_name: string | Array`:必需,一个或多个项目名称,需与项目在 `src/` 中的路径名相同。例如 `"ykm"`,`["ykm", "skm", "trip-card"]`。 + +### `setDynamicTime` + +```javascript +setDynamicTime(selector, start = 0, end = 19) +``` + +设置页面中动态更新的时间,指定元素的内容将定期与最新系统时间同步。格式为 `YYYY-MM-DD HH:mm:ss.SSSZ`,将通过提供的 `start` 及 `end` 截取此字符串。默认更新时间为 `1000ms`,可通过 `setUpdateInterval` 调整。 + +- `selector: string` 必需,指定要绑定的元素 CSS 选择器。元素将通过 `document.querySelectorAll(selector)` 方法获取。 +- `start: number` 可选,字符串起始下标,默认为 0。 +- `end: number` 可选,字符串截止下标,默认为 19。 + +### `setStaticTime` + +```javascript +setStaticTime(selector, start = 0, end = 19, traceback_hours = 0, traceback_range = 0, filter = (x) => x) +``` + +设置页面中元素的内容为向前推算的静态时间。格式为 `YYYY-MM-DD HH:mm:ss.SSSZ`,将通过提供的 `start` 及 `end` 截取此字符串。 + +- `selector: string` 必需,指定要绑定的元素 CSS 选择器。元素将通过 `document.querySelectorAll(selector)` 方法获取。 +- `start: number` 可选,字符串起始下标,默认为 0。 +- `end: number` 可选,字符串截止下标,默认为 19。 +- `traceback_hours: number` 可选,向前推算的小时数,默认为 0。 +- `traceback_range: number` 可选,向前推算的随机波动范围小时数,默认为 0。 +- `filter: function`:可选,过滤器函数。接收生成的字符串为参数,元素的 `innerHTML` 将设置为过滤器返回的内容。默认为 `(x) => x`。 + +最终生成的小时数范围为 `(now - traceback_hours - traceback_range / 2, now - traceback_hours + traceback_range / 2)`。 + +如果 HTML 标签上指定了 `data-traceback-time` 及 `data-traceback-range`,将依照标签属性的值设定这两项的值。 + +## `nav.css` + +`nav.css` 提供了模拟小程序及应用内浏览器导航栏 UI 的样式,由 `nav.scss` 编译而来。引入 `nav.css` 后,还需在 `html` 文件中加入下面的 HTML。 + +### `navbar` —— 导航栏 + +`navbar--wechat` + +微信小程序白色导航栏 + +```html + +``` + +`navbar--wechat-alternative` + +微信小程序透明背景或深色背景导航栏 + +```html + +``` + +`navbar--wechat-browser` + +微信应用内浏览器导航栏 + +```html + +``` + +`navbar--alipay` + +支付宝小程序白色导航栏 + +```html + +``` + +`navbar--alipay-alternative` + +支付宝小程序透明背景或深色背景导航栏 + +```html + +``` + +### `capsule` —— 小程序右上角“胶囊”按钮 + +`capsule--wechat` 微信小程序右上角按钮: +```html +
+ + + + + +
+ + + + +
+``` + +`capsule--alipay` + +支付宝小程序右上角按钮 + +```html +
+ + + + + +
+ + + + + +
+``` + +`capsule--alternative` + +透明背景或深色背景右上角按钮,可与 `capsule--wechat` 和 `capsule--alipay` 搭配。 + +```html +
...
+
...
+``` \ No newline at end of file diff --git a/makeassets.sh b/makeassets.sh index fa12a3a..1044982 100755 --- a/makeassets.sh +++ b/makeassets.sh @@ -2,12 +2,12 @@ cd src printf "assets={" printf "\"root\":[\"./\"," -find . -maxdepth 1 -type f -not -path '*/.*' -not -path './service-worker.js' | xargs printf "\"%s\"," "$@" +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 f -not -path "*/.*" -not -name "*.scss" -not -name "*.css.map" | xargs printf "\"%s\"," "$@" # find $DIR -type d -not -path '*/.*' | xargs printf "\"%s/\"," "$@" printf "]," done diff --git a/src/app.js b/src/app.js index ebf9de2..8282bc5 100644 --- a/src/app.js +++ b/src/app.js @@ -151,7 +151,18 @@ const apps = { help_text: "

点击地点名称、姓名、证件号可以修改对应信息;

点击核酸检测时间可以切换小时数;

点击“已采样”可以切换今日是否采样。

", menu: [{ title: "场所", icon: "place", link: "shaanxi-hc/checkin.html" }], - } + }, + "chongqing-hc": { + title: "渝康码", + icon: "chongqing-hc/static/logo.png", + link: "chongqing-hc/index.html", + color: "#f5aa06", + help_text: "

点击地点名称、姓名、证件号可以修改对应信息;

点击二维码可以切换至重庆市“场所码”。

", + menu: [ + { title: "场所", icon: "place", link: "chongqing-hc/checkin.html" }, + { title: "核酸", icon: "vaccines", link: "chongqing-hc/detail.html" }, + ] + }, }; function onIconFail(t) { diff --git a/src/chongqing-hc/app.css b/src/chongqing-hc/app.css new file mode 100644 index 0000000..6c5e81b --- /dev/null +++ b/src/chongqing-hc/app.css @@ -0,0 +1,786 @@ +view { + display: block; + box-sizing: border-box; +} + +body { + height: 100vh; + margin: 0; + font-family: "PingFang SC", sans-serif; +} + +.light-code { + height: 100vh; +} + +.yk_code_report { + font-size: 4.667vw; + height: calc(100% - 64.533vw); + margin: 0 auto; + padding-top: 8vw; + width: 88%; +} + +.report_tips_show { + margin-bottom: 6.4vw; + margin-top: 16vw; + text-align: center; +} + +.report_tips_title { + color: #000; + display: flex; + flex-direction: column; + font-size: 6.4vw; + font-weight: 700; + line-height: 7.467vw; + margin-top: 5.6vw; + text-align: center; +} + +.yk_code_report button { + width: 100%; +} + +.report_tips_image { + width: 43.2vw; +} + +.report_tips_getcode { + margin-top: 0.8vw; +} + +.report_tips_info { + color: #999; + display: flex; + margin-top: 2vw; +} + +.report_tips_info_text { + color: #999; + font-size: 3.733vw; + letter-spacing: 0; + margin-left: 2vw; + margin-top: 1.067vw; +} + +.light-code-container { + min-height: calc(100vh - 23.467vw); +} + +.top { + background-image: url("https://static-1300672061.file.myqcloud.com/cos/code_background.png"); + background-repeat: no-repeat; + background-size: 100% 100%; +} + +.top_bg_mine { + background-image: url("./static/mine_code_background.png") !important; +} + +.top_bg_other { + background-image: url("https://static-1300672061.file.myqcloud.com/ykm_home_v3_static/other_code_background.png") !important; +} + +.top-tip { + background: #f3f7ff; + color: #3c90f5; + font-size: 3.2vw; + height: 6.4vw; + line-height: 6.4vw; + opacity: .8; + text-align: center; +} + +.top-info { + box-sizing: border-box; + display: flex; + justify-content: space-between; + margin-top: 5.333vw; + padding: 0 5.333vw; +} + +.top-info, +.top-info-name { + align-items: center; +} + +.top-info-name { + color: #fff; + display: inline-flex; + font-family: PingFangSC-Semibold, PingFang SC; + font-size: 5.333vw; + font-weight: 500; + height: 7.467vw; + line-height: 7.467vw; +} + +.top-info-name-icon { + height: 5.333vw; + margin-left: 2.133vw; + width: 5.333vw; +} + +.top-info-exchange { + background: #eaf3ff; + border-radius: 4px; + box-sizing: border-box; + color: #4e95fe; + font-family: PingFangSC-Regular, PingFang SC; + font-size: 3.733vw; + font-weight: 400; + height: 7.467vw; + line-height: 7.467vw; + padding: 0 3.467vw; +} + +.code-area { + position: relative; +} + +.wyss_btn { + align-items: center; + background: linear-gradient(138deg, #fab71a 11%, #f8dc88 77%); + border-radius: 1.067vw 0 0 1.067vw; + box-shadow: -1px 4px 8px 1px rgba(43, 17, 7, .88), inset 1px 1px 1px 1px hsla(0, 0%, 100%, .72); + color: #8b3003; + display: flex; + flex-direction: column; + font-family: PingFang SC-Semibold, PingFang SC; + font-size: 3.733vw; + font-weight: 600; + justify-content: center; + padding: 1.333vw 3.733vw 1.333vw 2.667vw; + position: absolute; + right: 0; + text-shadow: 1px 1px 0 #fdedd3; + top: 50%; + transform: translateY(-50%); +} + +.code-container { + border-radius: 1.067vw; + box-sizing: border-box; + height: 59.733vw; + margin: 7.467vw auto 2.667vw; + padding: 1.867vw; + position: relative; + width: 59.733vw; +} + +.golden_border { + border-radius: 0.533vw; + overflow: hidden; + z-index: 1; +} + +.golden_border, +.golden_border::after { + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} + +.golden_border::after { + border: 12px solid; + border-image: linear-gradient(119deg, #d89231, #f5b32d, #f7e5ad, #f6c255, #fcd54d, #e08660) 6 6; + box-sizing: border-box; + content: ""; + display: block; +} + +.vaccines_done { + background-image: url("./static/qrcode_golden_shield.png"); + background-position: 50%; + background-repeat: no-repeat; + background-size: 100% 100%; + height: 12.8vw; + left: -5.6vw; + top: -2.133vw; + width: 10.667vw; +} + +.code-box, +.vaccines_done { + position: absolute; + z-index: 999; +} + +.code-box { + border-radius: 0.533vw; + height: 57.067vw; + left: 50%; + overflow: hidden; + top: 50%; + transform: translate(-50%, -50%); + width: 57.067vw; +} + +.code-cantconfirm { + background-image: url("https://static-1300672061.file.myqcloud.com/ykm_home_v3_static/none_code.png"); + background-position: 50%; + background-repeat: no-repeat; + background-size: 100% 100%; +} + +.cantconfirm_content { + display: flex; + flex-direction: column; + height: 100%; + justify-content: center; + position: absolute; + width: 100%; + z-index: 2; +} + +.cantconfirm_t1 { + font-size: 5.333vw; + font-weight: 600; +} + +.cantconfirm_t1, +.cantconfirm_t2 { + color: #4186ed; + font-family: PingFang SC-Semibold, PingFang SC; + text-align: center; +} + +.cantconfirm_t2 { + font-size: 3.2vw; + font-weight: 500; + margin-top: 2.667vw; +} + +.cantconfirm_btn { + background: #fab71a; + background: linear-gradient(180deg, #fab71a, #e99611); + border-radius: 6.4vw; + box-shadow: 0 8px 8px 1px rgba(87, 37, 16, .48), inset 0 2px 2px 1px hsla(0, 0%, 100%, .72); + color: #fff; + display: inline-block; + font-family: PingFang SC-Semibold, PingFang SC; + font-size: 4.533vw; + font-weight: 600; + height: 8.533vw; + line-height: 8.533vw; + margin: 5.333vw 4.267vw; + text-align: center; +} + +.code-unreport { + background-image: url("https://static-1300672061.file.myqcloud.com/ykm_home_v3_static/none_code.png"); + background-position: 50%; + background-repeat: no-repeat; + background-size: 100% 100%; +} + +.unreport_content { + display: flex; + flex-direction: column; + height: 100%; + justify-content: center; + position: absolute; + width: 100%; + z-index: 2; +} + +.unreport_t1 { + font-size: 5.333vw; + font-weight: 600; +} + +.unreport_t1, +.unreport_t2 { + color: #4186ed; + font-family: PingFang SC-Semibold, PingFang SC; + text-align: center; +} + +.unreport_t2 { + font-size: 3.2vw; + font-weight: 500; + margin-top: 2.667vw; +} + +.unreport_btn { + background: #2469bb; + background: linear-gradient(179deg, #4890f7, #2b65f6); + border-radius: 6.4vw; + box-shadow: 0 8px 8px 1px rgba(6, 20, 90, .48), inset 0 1px 2px 1px hsla(0, 0%, 100%, .72); + color: #fff; + display: inline-block; + font-family: PingFang SC-Semibold, PingFang SC; + font-size: 4.533vw; + font-weight: 600; + height: 8.533vw; + line-height: 8.533vw; + margin: 5.333vw 4.267vw; + text-align: center; +} + +.code-refresh { + background-image: url("https://static-1300672061.file.myqcloud.com/ykm_home_v3_static/none_code.png"); + background-position: 50%; + background-repeat: no-repeat; + background-size: 100% 100%; +} + +.refresh_content { + background: #fff; + color: #333; + display: flex; + flex-direction: column; + font-size: 4vw; + height: 100%; + justify-content: center; + overflow: hidden; + position: absolute; + width: 100%; + z-index: 2; +} + +.refresh_image { + height: 10.667vw; + margin-bottom: 1.333vw; + text-align: center; + width: 100%; +} + +.refresh_image>img { + height: 10.667vw; + width: 10.667vw; +} + +.refresh_text { + text-align: center; +} + +.code_qrcode { + background: #fff; + overflow: hidden; +} + +.code_self { + background-blend-mode: lighten; + background-origin: center; + background-position: 50%; + background-repeat: no-repeat; + background-size: cover; + height: 59.2vw; + margin-left: -1.067vw; + margin-top: -1.067vw; + width: 59.2vw; +} + +.code-state { + border-radius: 0.533vw; + font-family: PingFangSC-Semibold, PingFang SC; + font-size: 4.533vw; + font-weight: 600; + height: 7.467vw; + line-height: 7.467vw; + margin: 2.667vw auto 5.333vw; + text-align: center; + width: 56vw; +} + +.code-state__green { + background: #e5f4e9; + color: #03992c; +} + +.code-state__yellow { + background: #fefaef; + color: #ffbb06; +} + +.code-state__red { + background: #ffe4e3; + color: #fa2b26; +} + +.code-warming { + background: linear-gradient(138deg, #fab71a 11%, #f8dc88 77%); + border-radius: 0.533vw; + box-sizing: border-box; + color: #8b3003; + font-family: PingFang SC-Regular, PingFang SC; + font-size: 3.733vw; + font-weight: 400; + margin-left: 5.333vw; + padding: 2.667vw; + width: calc(100% - 10.667vw); +} + +.code-bottom { + border-top: 0.267vw solid hsla(0, 0%, 100%, .24); + display: flex; + height: 12.533vw; + justify-content: space-between; + line-height: 10.667vw; + margin: 5.333vw auto 0; + padding: 0.8vw; + width: calc(100% - 10.667vw); +} + +.code-timer { + color: #fff; + font-family: PingFangSC-Regular, PingFang SC; + font-size: 4vw; + font-weight: 500; + line-height: 10.667vw; +} + +.code-timer>.bigger { + font-size: 7.467vw !important; + font-weight: 500 !important; +} + +.code-report { + color: #fff; + font-family: PingFangSC-Regular, PingFang SC; + font-size: 12px; + font-weight: 400; + height: 10.667vw; + line-height: 10.667vw; + padding-left: 5.333vw; + position: relative; +} + +.code-report::after { + border-color: #fff #fff hsla(0, 0%, 100%, 0) hsla(0, 0%, 100%, 0); + border-style: solid; + border-width: 0.267vw; + content: ""; + display: inline-block; + height: 1.6vw; + margin-left: 1.067vw; + transform: rotate(45deg); + width: 1.6vw; +} + +.middle { + padding: 5.333vw 5.333vw 4vw; +} + +.blocks, +.middle { + display: flex; +} + +.blocks { + padding: 5.333vw; +} + +.block-item { + border: 0.267vw solid #eaeaeb; + border-radius: 1.333vw; + box-sizing: border-box; + overflow: hidden; + width: calc(50% - 2vw); +} + +.nucleic-block__active { + background: rgba(149, 212, 166, .2) !important; + border: 0.267vw solid #c3e7cc !important; +} + +.vaccines-block__active { + border: 0.267vw solid #d0e4fd !important; +} + +.nucleic-block { + margin-right: 2vw; +} + +.vaccines-block { + margin-left: 2vw; +} + +.block-title { + align-items: center; + color: #7a7a7a; + display: flex; + flex-wrap: nowrap; + font-family: PingFangSC-Regular, PingFang SC; + font-size: 4.267vw; + font-weight: 400; + justify-content: center; + line-height: 4.267vw; + padding: 4vw 2.4vw; + position: relative; + text-align: center; +} + +.block-title::before { + background-image: url("https://static-1300672061.file.myqcloud.com/ykm_home_v3_static/icon_warming_info.png"); + background-position: 50%; + background-repeat: no-repeat; + background-size: 100% 100%; + border-radius: 100%; + content: ""; + display: inline-block; + height: 4.267vw; + margin-right: 1.6vw; + width: 4.267vw; +} + +.block-title::after { + border-color: #000; + border-radius: 0.267vw; + border-style: solid; + border-width: 0.267vw 0.267vw 0 0; + box-sizing: border-box; + content: ""; + display: inline-block; + height: 2.133vw; + margin-left: 2.667vw; + transform: rotate(45deg); + width: 2.133vw; +} + +.nucleic-block__active>.block-title::before { + background-image: url("./static/icon_nucleic_active.png") !important; +} + +.vaccines-block__active>.block-title::before { + background-image: url("./static/icon_vicc_active.png") !important; +} + +.block-loading { + color: #999; + font-family: PingFangSC-Semibold, PingFang SC; + font-size: 3.733vw; + font-weight: 600; + height: 5.867vw; + line-height: 5.867vw; + padding-bottom: 7.467vw; + text-align: center; +} + +.block-container { + display: flex; + justify-content: center; + padding-bottom: 6.4vw; +} + +.block-number { + font-family: DIN Alternate-Bold, DIN Alternate; + font-size: 12.8vw; + font-weight: 700; + height: 12.8vw; + line-height: 12.8vw; +} + +.nucleic-block__active>.block-container>.block-number { + color: #04992c; +} + +.vaccines-block__active>.block-container>.block-number { + color: #333; +} + +.block-des { + height: 12.8vw; + padding-left: 1.6vw; +} + +.block-des-item { + color: #04992c; + font-family: PingFang SC-Medium, PingFang SC; + font-size: 3.733vw; + font-weight: 500; + height: 6.4vw; + line-height: 6.4vw; +} + +.nucleic-block__active>.block-container>.block-des>.block-des-item { + color: #04992c; +} + +.vaccines-block__active>.block-container>.block-des>.block-des-item { + color: #333; +} + +.block-none { + height: 12.8vw; + width: 100%; +} + +.order-time-sty { + background: rgba(52, 120, 246, .1); + color: #3478f6; + font-family: PingFang SC-Medium, PingFang SC; + font-size: 3.2vw; + font-weight: 500; + height: 7.467vw; + line-height: 7.467vw; + margin-top: 1.333vw; + text-align: center; + width: 100%; +} + +.block-none-des { + color: #999; + font-family: PingFangSC-Semibold, PingFang SC; + font-size: 3.733vw; + font-weight: 600; + height: 6.4vw; + line-height: 6.4vw; + text-align: center; + width: 100%; +} + +.bottom { + border: 0.133vw solid #e4e5e8; + border-radius: 1.333vw; + margin: 0 5.333vw 5.333vw; + padding: 2.667vw; + width: cacl(100% - 10.667vw); +} + +.bottom, +.bt-item { + display: flex; +} + +.bt-item { + align-items: center; + flex-direction: column; + justify-content: center; + width: 33.33%; +} + +.bt-item-icon { + background-size: 100% 100%; + height: 12.8vw; + width: 12.8vw; +} + +.bt_item_icon_chagnsuoma { + background-image: url("./static/icon_changsuoma.png"); +} + +.bt_item_icon_xingcengma { + background-image: url("./static/icon_xingcengma.png"); +} + +.bt_item_icon_yiwen { + background-image: url("./static/icon_yiwen.png"); +} + +.bt-item-text { + color: #000; + font-family: PingFangSC-Regular, PingFang SC; + font-size: 3.733vw; + font-weight: 400; + height: 5.333vw; + line-height: 5.333vw; +} + +.demo-class { + background-color: #04992c; + color: red; +} + +.pop-container { + background-color: #f0f2f4; + width: 100%; +} + +.pop-header { + align-items: center; + background: #fff; + border-radius: 16px 16px 0 0; + box-sizing: border-box; + display: flex; + height: 12.8vw; + justify-content: space-between; + line-height: 12.8vw; + padding: 0 3.2vw; +} + +.pop-header-text { + color: #000; + font-family: PingFangSC-Semibold, PingFang SC; + font-size: 4.267vw; + font-weight: 600; +} + +.pop-header-close { + background-image: url("https://static-1300672061.file.myqcloud.com/ykm_home_v3_static/light_code_pop_close.png"); + background-repeat: no-repeat; + background-size: 100% 100%; + height: 6.4vw; + width: 6.4vw; +} + +.pop-content { + height: 68.267vw; + overflow: auto; + padding: 0 3.2vw; +} + +.pop-content__none { + align-items: center; + background: #fff; + display: flex; + flex-direction: column; + height: 68.267vw; + overflow: hidden; + padding: 0 3.2vw; +} + +.others_codes_none { + margin: 8vw auto 2.667vw; + width: 48%; +} + +.others_codes_none_myname { + color: #000; + text-align: left; + width: 100%; +} + +.others_codes_none_myname, +.others_codes_none_tips { + font-family: PingFangSC-Regular, PingFang SC; + font-size: 4.267vw; + font-weight: 400; +} + +.others_codes_none_tips { + color: #7a7a7a; +} + +.pop-item { + background: #fff; + border: 0.267vw solid #fff; + border-radius: 1.067vw; + box-sizing: border-box; + color: #000; + height: 14.4vw; + line-height: 14.4vw; + margin-top: 2.667vw; + padding: 0 5.333vw; + width: 100%; +} + +.pop-item_active { + background: #f2f8ff !important; + border: 0.267vw solid #4293f4 !important; + color: #4293f4 !important; +} + +.pop-bottom, +.pop-bottom-whitebg { + box-sizing: border-box; + padding: 5.333vw 6.4vw 8vw; + width: 100%; +} + +.pop-bottom-whitebg { + background: #fff; +} \ No newline at end of file diff --git a/src/chongqing-hc/checkin.css b/src/chongqing-hc/checkin.css new file mode 100644 index 0000000..8bef635 --- /dev/null +++ b/src/chongqing-hc/checkin.css @@ -0,0 +1,393 @@ +view { + display: block; + box-sizing: border-box; +} + +body { + height: 100vh; + margin: 0; + font-family: "PingFang SC", sans-serif; +} + +/* .code-box, +body { + overflow: hidden; +} */ + +.code-warp { + background: #238bff url("./static/resultBackground2.png"); + background-repeat: no-repeat; + background-size: 100% 100%; + overflow-y: auto; + position: relative; +} + +.code-center { + position: relative; + width: 100vw; +} + +.backgroundImage { + height: 42.267vw; + position: absolute; + width: 100vw; +} + +.code-info { + height: 125.333vw; + left: 50%; + position: absolute; + top: 2.667vw; + transform: translateX(-50%); + width: 91.6vw; + z-index: 2; +} + +.sacn-info { + margin-left: 6.4vw; + margin-right: 6.4vw; + padding-bottom: 8vw; +} + +.sac-info-title { + color: #333; + font-size: 6.4vw; + font-weight: 500; + height: 6.4vw; + line-height: 6.4vw; + margin-bottom: 5.333vw; + text-align: left; +} + +.messageBox { + width: 100%; +} + +.messageList { + display: flex; + flex-direction: row; + justify-content: space-between; + margin: 3.733vw auto; +} + +.messageLeft { + color: #7a7a7a; + flex: 0 0 24vw; +} + +.messageIcon, +.messageLeft { + font-size: 4.267vw; + line-height: 6.133vw; +} + +.messageIcon { + flex: 1; + padding-left: 4vw; + text-align: right; +} + +.messageIcon img { + height: 6.133vw; + margin-left: 3.733vw; + vertical-align: top; + width: 4.267vw; +} + +.margin-right-one { + margin-right: 8vw; +} + +.title { + color: #000; + font-size: 6.4vw; + line-height: 6.4vw; + padding: 5.333vw 0 2.133vw 6.4vw; + text-align: left; +} + +.desc { + color: #7a7a7a; + font-size: 3.733vw; + font-weight: 400; + line-height: 4.267vw; + padding: 2.667vw 0 8.533vw 6.4vw; +} + +.code-type { + width: 100%; +} + +.code-image { + height: 38.4vw; + margin: 3.733vw auto 0; + width: 38.4vw; +} + +.code-image img { + animation-duration: 2s; + animation-iteration-count: infinite; + animation-name: scaleDraw; + animation-timing-function: ease-in-out; + display: block; + height: 32vw; + margin: 0 auto; + width: 32vw; +} + +.code-text { + font-size: 6.4vw; + font-weight: 500; + height: 7.467vw; + line-height: 7.467vw; + padding-bottom: 10.133vw; + text-align: center; +} + +.greenCollor { + color: #26a764; +} + +.redCollor { + color: #f52012; +} + +.yellowCollor { + color: #eeac12; +} + +.is-indeterminacy { + color: #000; +} + +@-webkit-keyframes scaleDraw { + 0% { + transform: scale(1); + } + + 25% { + transform: scale(1.1); + } + + 50% { + transform: scale(1); + } + + 75% { + transform: scale(1.1); + } +} + +@keyframes scaleDraw { + 0% { + transform: scale(1); + } + + 25% { + transform: scale(1.1); + } + + 50% { + transform: scale(1); + } + + 75% { + transform: scale(1.1); + } +} + +.code-fail { + background: #fff; + border-radius: 0 0 3.2vw 3.2vw; + margin-bottom: 8vw; +} + +.code-fail-text { + color: #999; + font-size: 4.267vw; + margin-left: 6.667vw; + margin-right: 6.667vw; + margin-top: 8vw; + padding-bottom: 24vw; + text-align: center; +} + +.codePlaceInfo { + background: #fff; + border-radius: 3.2vw 3.2vw 0 0; +} + +.codePlaceName { + color: #333; + font-family: "PingFang SC", sans-serif; + font-size: 6.4vw; + font-weight: 600; + line-height: 6.4vw; + padding: 6.933vw 0 0 6.4vw; +} + +.codePlaceArea { + color: #333; + font-size: 4.267vw; + line-height: 4.267vw; + margin: 5.333vw 0 0 6.4vw; +} + +.codePlaceDetails { + color: #7c8086; + font-size: 3.733vw; + line-height: 3.733vw; + padding: 1.867vw 0 5.067vw 6.4vw; +} + +.line-image { + height: 4.267vw; + width: 91.6vw; +} + +.line-image img { + height: 100%; + width: 100%; +} + +.code-success { + background: #fff; + border-radius: 0 0 3.2vw 3.2vw; + margin-bottom: 8vw; + position: relative; +} + +.shensu { + background: #fff; + border: 0.133vw solid #ebebeb; + border-radius: 1.867vw; + color: #666; + margin: 2.667vw auto 8vw; + padding: 0.667vw 2.667vw; + text-align: center; + width: 18.667vw; +} + +.paddingB { + padding-bottom: 0 !important; +} + +.quickly-btn { + background-color: #fff; + bottom: 0; + box-shadow: 0 -6px 8px 0 rgba(142, 155, 170, .24); + box-sizing: border-box; + display: flex; + height: 26.667vw; + justify-content: space-between; + left: 0; + padding: 5.333vw 6.4vw 0; + position: fixed; + width: 100%; + z-index: 1000; +} + +.order-time-sty { + background: rgba(52, 120, 246, .1); + border-bottom-left-radius: 1.6vw; + color: #3478f6; + font-family: "PingFang SC", sans-serif; + font-size: 3.2vw; + font-weight: 500; + height: 7.467vw; + line-height: 7.467vw; + margin-top: 1.333vw; + text-align: center; + width: 100%; +} + +.quickly-btn .btn-style { + border-radius: 4px; + color: #fff; + font-family: "PingFang SC", sans-serif; + font-size: 18px; + font-weight: 600; + height: 12.8vw; + line-height: 12.8vw; + text-align: center; + width: 40.267vw; +} + +.nucleic_48 { + align-items: center; + background: #edf7f2; + border-bottom-left-radius: 1.6vw; + border-top-left-radius: 1.6vw; + box-shadow: 0vw 1.6vw 4.267vw 0vw rgba(4, 43, 0, .24); + box-sizing: border-box; + display: flex; + flex-wrap: nowrap; + height: 16vw; + padding: 2.667vw 2.667vw 2.667vw 4vw; + position: absolute; + right: 0; + top: 4.267vw; +} + +.nucleic_48_icon1 { + background-image: url("./static/nucleic_in48_icon2.png"); + height: 9.6vw; + left: -3.733vw; + position: absolute; + top: -3.733vw; + width: 9.6vw; +} + +.nucleic_48_icon1, +.nucleic_48_icon2 { + background-repeat: no-repeat; + background-size: 100% 100%; +} + +.nucleic_48_icon2 { + background-image: url("./static/nucleic_in48_icon1.png"); + height: 3.733vw; + width: 3.733vw; +} + +.nucleic_48_t1 { + color: #04992c; + font-family: DIN Alternate-Bold, DIN Alternate; + font-size: 12.8vw; + font-weight: 600; + height: 10.667vw; + line-height: 10.667vw; +} + +.nucleic_48_t2 { + color: #04992c; + font-family: "PingFang SC", sans-serif; + font-size: 3.733vw; + font-weight: 500; + height: 9.067vw; + line-height: 4.533vw; + margin: 0vw 1.333vw; +} + +.nucleic_none { + background: #f6f6f6; + border-bottom-left-radius: 1.6vw; + border-top-left-radius: 1.6vw; + box-shadow: 0vw 1.6vw 4.267vw 0vw rgba(0, 0, 0, .24); + box-sizing: border-box; + padding-top: 2.667vw; + position: absolute; + right: 0; + top: 4.267vw; + width: 33.333vw; +} + +.nucleic_none_t1 { + color: #7a7a7a; + font-family: "PingFang SC", sans-serif; + font-size: 3.733vw; + font-weight: 500; + height: 5.333vw; + line-height: 5.333vw; + padding-left: 2.667vw; +} \ No newline at end of file diff --git a/src/chongqing-hc/checkin.html b/src/chongqing-hc/checkin.html new file mode 100644 index 0000000..bf1c2ae --- /dev/null +++ b/src/chongqing-hc/checkin.html @@ -0,0 +1,149 @@ + +重庆市“场所码” + + + + + + + + + + + +
+ + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + 扫码结果 + + + + + + + + 绿码 + + + + 扫码用户信息 + + + 姓名 + + + + + + + + 手机号码 + + + + + + + + 证件号码 + + + + + + + + + + + 24 + + 小时内 + 阴性 + + + + + + + + 返回渝康码首页 + 出示通信行程卡 + + + + + \ No newline at end of file diff --git a/src/chongqing-hc/detail.css b/src/chongqing-hc/detail.css new file mode 100644 index 0000000..353b54e --- /dev/null +++ b/src/chongqing-hc/detail.css @@ -0,0 +1,151 @@ +view { + display: block; + box-sizing: border-box; +} + +body { + height: 100vh; + margin: 0; + font-family: "PingFang SC", sans-serif; +} + +.user-message { + display: flex; + margin: 5.333vw 4vw 0; + width: 92vw; +} + +.user-message-content { + flex: 1; +} + +.user-message-icon { + flex: 0 0 10.667vw; + margin: 2.667vw 4vw 0 2.667vw; +} + +.user-message-icon-image { + height: 10.667vw; + margin: 0 auto; + width: 10.667vw; +} + +.user-message-icon-image img { + height: 100%; + width: 100%; +} + +.user-message-icon-text { + font-size: 3.733vw; + line-height: 6.4vw; + text-align: center; +} + +.color-pass { + color: #4fd965; +} + +.color-waring { + color: #fd6d6d; +} + +.user-message-title { + line-height: 8vw; + padding: 1.333vw 0; +} + +.nucleic-message-title, +.user-message-title { + color: #333; + font-size: 3.733vw; + position: relative; + text-indent: 2.667vw; +} + +.nucleic-message-title { + line-height: 4.8vw; + padding: 2.667vw 0; +} + +.nucleic-message-title::before, +.user-message-title::before { + background: #6870f0; + content: ""; + height: 4.8vw; + left: 0; + position: absolute; + top: 2.933vw; + width: 0.533vw; +} + +.user-message-text { + color: #333; + display: flex; + font-size: 3.733vw; + line-height: 4.8vw; + padding: 2.667vw 0; +} + +.text-tips { + white-space: nowrap; + flex: 0 0 15.2vw; + margin-left: 2.667vw; + text-align: justify; + text-align-last: justify; + text-justify: distribute-all-lines; +} + +.text-value { + flex: 1; + text-align: left; +} + +.nucleic-message { + margin: 5.333vw 4vw 0; + width: 92vw; +} + +.nucleic-message-text { + color: #333; + display: flex; + font-size: 3.733vw; + line-height: 4.8vw; + padding: 2.667vw 0; +} + +.jigou-text { + flex: 1; + margin-right: 2.667vw; +} + +.jigou-title { + white-space: nowrap; + flex: 0 0 15.2vw; + margin-left: 2.667vw; + text-align: justify; + text-align-last: justify; + text-justify: distribute-all-lines; +} + +.summary { + margin: 16vw 4vw 0; + width: 92vw; +} + +.stitle { + font-weight: 600; + margin-top: 2.667vw; + padding: 0 2.667vw; +} + +.stext, +.stitle { + /* font-family: PingFangSC-Regular; */ + font-size: 3.467vw; + line-height: 4.8vw; +} + +.stext { + color: #bbbec4; + padding: 2.667vw; +} \ No newline at end of file diff --git a/src/chongqing-hc/detail.html b/src/chongqing-hc/detail.html new file mode 100644 index 0000000..c9eb1fb --- /dev/null +++ b/src/chongqing-hc/detail.html @@ -0,0 +1,118 @@ + +核酸检测详情 + + + + + + + + + + + +
+ + + + + +
+ + + + +
+ + + + + + + 用户信息 + + 用户 + + + + 证件号码 + + + + 手机号码 + + + + + + + + 阴性 + + + + 检测报告 + + + 采样方式 + + + + + 采样点名 + + + + 采样时间 + + + + 检测机构 + + + + 检测时间 + + + + 检测结果 + :阴性 + + + + 服务说明: + 相关查询结果基于卫生健康部门数据库,数据由各检测机构提供,正在不断汇聚更新中。若有疑问,请咨询核酸检测机构。 + 相关查询结果由卫生健康部门数据库提供,若有疑问,请咨询核酸检测机构。 + + + \ No newline at end of file diff --git a/src/chongqing-hc/index.html b/src/chongqing-hc/index.html new file mode 100644 index 0000000..ec45b8a --- /dev/null +++ b/src/chongqing-hc/index.html @@ -0,0 +1,169 @@ + +我的渝康码 + + + + + + + + + + + +
+ + + + + +
+ + + + +
+ + + + + + + + 温馨提示:代人申领已移至首页防疫服务的“亲友代领” + + + + + + + 切换亮码人员 + + + + + + + + + + + + 绿码 + + + + 立即上报 + + + + + + 核酸检测 + + + 24 + + 小时 + 阴性 + + + + + + + 疫苗接种 + + + 3 + + + (共3剂) + + + + + + + + 场所码|入渝码 + + + + 通信行程卡 + + + + 我有疑问 + + + + + + + \ No newline at end of file diff --git a/src/chongqing-hc/manifest.json b/src/chongqing-hc/manifest.json new file mode 100644 index 0000000..41b48b5 --- /dev/null +++ b/src/chongqing-hc/manifest.json @@ -0,0 +1,16 @@ +{ + "short_name": "渝康码", + "name": "渝康码", + "icons": [ + { + "src": "static/logo.png", + "type": "image/png", + "sizes": "64x64" + } + ], + "id": "ilovexjp-chongqing-hc-simulator", + "start_url": ".", + "display": "standalone", + "scope": "/", + "description": "渝康码模拟" +} \ No newline at end of file diff --git a/src/chongqing-hc/static/icon_changsuoma.png b/src/chongqing-hc/static/icon_changsuoma.png new file mode 100644 index 0000000..c58a519 Binary files /dev/null and b/src/chongqing-hc/static/icon_changsuoma.png differ diff --git a/src/chongqing-hc/static/icon_nucleic_active.png b/src/chongqing-hc/static/icon_nucleic_active.png new file mode 100644 index 0000000..489690f Binary files /dev/null and b/src/chongqing-hc/static/icon_nucleic_active.png differ diff --git a/src/chongqing-hc/static/icon_vicc_active.png b/src/chongqing-hc/static/icon_vicc_active.png new file mode 100644 index 0000000..be35189 Binary files /dev/null and b/src/chongqing-hc/static/icon_vicc_active.png differ diff --git a/src/chongqing-hc/static/icon_xingcengma.png b/src/chongqing-hc/static/icon_xingcengma.png new file mode 100644 index 0000000..19d7e50 Binary files /dev/null and b/src/chongqing-hc/static/icon_xingcengma.png differ diff --git a/src/chongqing-hc/static/icon_yiwen.png b/src/chongqing-hc/static/icon_yiwen.png new file mode 100644 index 0000000..3483134 Binary files /dev/null and b/src/chongqing-hc/static/icon_yiwen.png differ diff --git a/src/chongqing-hc/static/line-result.png b/src/chongqing-hc/static/line-result.png new file mode 100644 index 0000000..b125378 Binary files /dev/null and b/src/chongqing-hc/static/line-result.png differ diff --git a/src/chongqing-hc/static/logo.png b/src/chongqing-hc/static/logo.png new file mode 100644 index 0000000..fea1e55 Binary files /dev/null and b/src/chongqing-hc/static/logo.png differ diff --git a/src/chongqing-hc/static/lvma-icon.svg b/src/chongqing-hc/static/lvma-icon.svg new file mode 100644 index 0000000..d2dca5f --- /dev/null +++ b/src/chongqing-hc/static/lvma-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/chongqing-hc/static/mine_code_background.png b/src/chongqing-hc/static/mine_code_background.png new file mode 100644 index 0000000..79bbfc8 Binary files /dev/null and b/src/chongqing-hc/static/mine_code_background.png differ diff --git a/src/chongqing-hc/static/nav_home.svg b/src/chongqing-hc/static/nav_home.svg new file mode 100644 index 0000000..3a92644 --- /dev/null +++ b/src/chongqing-hc/static/nav_home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/chongqing-hc/static/nucleic_in48_icon1.png b/src/chongqing-hc/static/nucleic_in48_icon1.png new file mode 100644 index 0000000..0f5b382 Binary files /dev/null and b/src/chongqing-hc/static/nucleic_in48_icon1.png differ diff --git a/src/chongqing-hc/static/nucleic_in48_icon2.png b/src/chongqing-hc/static/nucleic_in48_icon2.png new file mode 100644 index 0000000..3332125 Binary files /dev/null and b/src/chongqing-hc/static/nucleic_in48_icon2.png differ diff --git a/src/chongqing-hc/static/pass.svg b/src/chongqing-hc/static/pass.svg new file mode 100644 index 0000000..8529369 --- /dev/null +++ b/src/chongqing-hc/static/pass.svg @@ -0,0 +1,11 @@ + + + + 通过 + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/src/chongqing-hc/static/password-btn-white.svg b/src/chongqing-hc/static/password-btn-white.svg new file mode 100644 index 0000000..2af2014 --- /dev/null +++ b/src/chongqing-hc/static/password-btn-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/chongqing-hc/static/password-btn.svg b/src/chongqing-hc/static/password-btn.svg new file mode 100644 index 0000000..3ff9d22 --- /dev/null +++ b/src/chongqing-hc/static/password-btn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/chongqing-hc/static/password-btn2-white.svg b/src/chongqing-hc/static/password-btn2-white.svg new file mode 100644 index 0000000..1e27e5f --- /dev/null +++ b/src/chongqing-hc/static/password-btn2-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/chongqing-hc/static/password-btn2.svg b/src/chongqing-hc/static/password-btn2.svg new file mode 100644 index 0000000..1e5c131 --- /dev/null +++ b/src/chongqing-hc/static/password-btn2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/chongqing-hc/static/qrcode_golden_shield.png b/src/chongqing-hc/static/qrcode_golden_shield.png new file mode 100644 index 0000000..754c6b9 Binary files /dev/null and b/src/chongqing-hc/static/qrcode_golden_shield.png differ diff --git a/src/chongqing-hc/static/resultBackground2.png b/src/chongqing-hc/static/resultBackground2.png new file mode 100644 index 0000000..d5089a0 Binary files /dev/null and b/src/chongqing-hc/static/resultBackground2.png differ diff --git a/src/common/components/capsule.scss b/src/common/components/capsule.scss new file mode 100644 index 0000000..2d29934 --- /dev/null +++ b/src/common/components/capsule.scss @@ -0,0 +1,92 @@ +.capsule { + z-index: 9000; + box-sizing: border-box; + border-radius: 50px; + background-color: rgba(255, 255, 255, .6); + display: flex; + flex-direction: row; + justify-content: space-evenly; + align-items: center; + + &__menu-icon { + width: 16pt; + position: relative; + } + + &__exit-icon { + width: 15pt; + position: relative; + } + + &__splitter { + width: 0.25pt; + height: 14pt; + position: relative; + } + + &--wechat { + 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); + + .capsule__menu-icon { + fill: black; + left: 1pt; + } + .capsule__exit-icon { + fill: black; + stroke: black; + } + .capsule__splitter { + background-color: rgba(0, 0, 0, .2); + } + } + + &--alipay { + width: 79px; + height: 30px; + position: absolute; + right: 17px; + right: calc(17px + env(safe-area-inset-right, 0)); + top: 7px; + top: calc(7px + env(safe-area-inset-top, 0)); + border: 0.5pt solid #eeeeee; + + .capsule__menu-icon { + fill: #333; + left: 1pt; + top: 0.25pt; + } + .capsule__exit-icon { + fill: #333; + stroke: #333; + left: -2px; + } + .capsule__splitter { + left: -0.5pt; + height: 13.5pt; + background-color: #c4c4c4; + } + } + + &--alternative { + border: 0.5pt solid rgba(32, 32, 32, .33); + background-color: rgba(0, 0, 0, .2); + + .capsule__menu-icon { + fill: white; + } + .capsule__exit-icon { + fill: white; + stroke: white; + } + .capsule__splitter { + background-color: rgba(255, 255, 255, .8); + } + } +} \ No newline at end of file diff --git a/src/common/components/navbar.scss b/src/common/components/navbar.scss new file mode 100644 index 0000000..f788e11 --- /dev/null +++ b/src/common/components/navbar.scss @@ -0,0 +1,189 @@ +.navbar { + $height: 44px; + $right: 25.333vw; + $navbar: &; + // .nav-bar--wechat .android { + // --height: 48px; + // --right: 29.6vw; + // } + + line-height: normal; + + *:not(.capsule, .capsule *) { + box-sizing: content-box; + } + + padding: 0; + + @mixin wechat { + overflow: hidden; + padding-top: env(safe-area-inset-top, 0); + + #{$navbar}__inner { + align-items: center; + display: flex; + height: $height; + left: 0; + padding-right: $right; + padding-top: env(safe-area-inset-top, 0); + position: fixed; + top: 0; + width: calc(100% - #{$right}); + z-index: 5001; + color: black; + font-family: sans-serif; + + #{$navbar}__left { + -webkit-box-pack: center; + align-items: center; + display: flex; + padding-left: 16px; + position: relative; + width: $right; + + #{$navbar}__button-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; + background-repeat: no-repeat; + font-size: 12px; + height: 2em; + width: 1em; + + &:hover { + opacity: .5; + } + } + } + + #{$navbar}__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 * $right}); + + * { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } + + #{$navbar}__right { + margin-right: 16px; + } + } + } + + &--wechat { + @include wechat; + } + + &--wechat-alternative { + @include wechat; + + #{$navbar}__inner { + color: white; + + #{$navbar}__left { + #{$navbar}__button-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"); + } + } + } + + } + + &--wechat-browser { + @include wechat; + + #{$navbar}__inner { + background-color: #ededed; + + #{$navbar}__left { + padding-left: 15px; + + #{$navbar}__button-goback { + background-image: url("data:image/svg+xml,"); + height: 2em; + width: 2em; + opacity: 0.8; + } + } + + #{$navbar}__center { + font-weight: 500; + font-size: 16px; + opacity: .9; + } + } + } + + #{&}--wechat-alternative#{&}--wechat-browser { + #{$navbar}__inner { + #{$navbar}__left { + #{$navbar}__button-goback { + background-image: url("data:image/svg+xml,"); + opacity: 1; + } + } + } + } + + @mixin alipay { + box-sizing: content-box; + width: 100%; + height: 44px; + top: 0; + padding-top: env(safe-area-inset-top, 0); + color: black; + z-index: 5000; + + #{$navbar}__title { + font-size: 19px; + font-weight: bold; + margin-left: 16px; + } + + #{$navbar}__inner { + width: 100%; + height: $height; + position: fixed; + top: 0; + left: 0; + z-index: 5001; + display: flex; + padding-top: env(safe-area-inset-top, 0); + align-items: center; + font-family: sans-serif; + background-color: white; + } + } + + &--alipay { + @include alipay; + } + + &--alipay-alternative { + @include alipay; + + #{$navbar}__inner { + color: white; + background-color: transparent; + } + } + + &__placeholder { + background: #f8f8f8; + height: $height; + position: relative; + z-index: 50; + visibility: hidden; + } +} \ No newline at end of file diff --git a/src/common/github-logo.png b/src/common/github-logo.png deleted file mode 100644 index 182a1a3..0000000 Binary files a/src/common/github-logo.png and /dev/null differ diff --git a/src/common/codeberg-logo.svg b/src/common/images/codeberg-logo.svg similarity index 100% rename from src/common/codeberg-logo.svg rename to src/common/images/codeberg-logo.svg diff --git a/src/common/logo.jpg b/src/common/images/logo.jpg similarity index 100% rename from src/common/logo.jpg rename to src/common/images/logo.jpg diff --git a/src/common/telegram-logo.svg b/src/common/images/telegram-logo.svg similarity index 100% rename from src/common/telegram-logo.svg rename to src/common/images/telegram-logo.svg diff --git a/src/common/nav.css b/src/common/nav.css deleted file mode 100644 index ea20d5d..0000000 --- a/src/common/nav.css +++ /dev/null @@ -1,219 +0,0 @@ -.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,"); - 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,"); - 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; -} \ No newline at end of file diff --git a/src/common/nav.scss b/src/common/nav.scss new file mode 100644 index 0000000..3bbee40 --- /dev/null +++ b/src/common/nav.scss @@ -0,0 +1,2 @@ +@use "components/capsule.scss"; +@use "components/navbar.scss"; diff --git a/src/fujian-hc/checkin.html b/src/fujian-hc/checkin.html index 34ce6dc..e7f5eb9 100644 --- a/src/fujian-hc/checkin.html +++ b/src/fujian-hc/checkin.html @@ -128,28 +128,28 @@ - - - - -
-
+ + + + + - + 张贴码 - + -
- +
+ -
- +
+ @@ -275,7 +275,7 @@ - - - - + + + + - + 福建健康码 - + -
- +
+ -
- +
+ @@ -471,7 +471,7 @@
-
-
-
-
-
-
+