This commit is contained in:
gyq
2024-05-23 09:48:22 +08:00
parent f832e312bf
commit c6f49f161e
6 changed files with 719 additions and 604 deletions

View File

@@ -1,20 +1,69 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="zh-CN">
<head> <head>
<meta charset="UTF-8" /> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<!-- Open Graph data -->
<!-- <meta property="og:title" content="Title Here" /> -->
<!-- <meta property="og:url" content="http://www.example.com/" /> -->
<!-- <meta property="og:image" content="http://example.com/image.jpg" /> -->
<!-- <meta property="og:description" content="Description Here" /> -->
<script> <script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS
CSS.supports('top: constant(a)')) .supports('top: constant(a)'))
document.write( document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />') (coverSupport ? ', viewport-fit=cover' : '') +
'" />')
</script> </script>
<title></title> <!-- <script src="https://qzs.gdtimg.com/union/res/union_sdk/page/h5_sdk/i.js"></script> -->
<!--preload-links--> <link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
<!--app-context-->
</head> </head>
<body> <body>
<div id="app"><!--app-html--></div> <noscript>
<script type="module" src="/main.js"></script> <strong>Please enable JavaScript to continue.</strong>
</noscript>
<div id="app"></div>
<!-- <script type="text/javascript">
// H5 SDK 在线文档地址http://developers.adnet.qq.com/doc/web/js_develop
// 全局命名空间申明TencentGDT对象
window.TencentGDT = window.TencentGDT || [];
// 广告初始化
window.TencentGDT.push({
app_id: '1206941502', // {String} - appid - 必填
placement_id: '9019288881405424', // {String} - 广告位id - 必填
type: 'interstitial', // {String} - 原生广告类型 - 必填
muid_type: '1', // {String} - 移动终端标识类型1imei2idfa3mac号 - 选填
muid: '******', // {String} - 加密终端标识详细加密算法见API说明 - 选填
count: 1, // {Number} - 拉取广告的数量默认是3最高支持10 - 选填
onComplete: function(res) {
if (res && res.ret === 0) {
// 原生模板广告位调用 window.TencentGDT.NATIVE.renderAd(res[0], 'containerId') 进行模板广告的渲染
// res[0] 代表取广告数组第一个数据
TencentGDT.NATIVE.renderAd(res.data[0]);
} else {
// 加载广告API如广告回调无广告可使用loadAd再次拉取广告
// 注意拉取广告频率每分钟不要超过20次否则会被广告接口过滤影响广告位填充率
setTimeout(function() {
window.TencentGDT.NATIVE.loadAd(placement_id)
}, 3000)
}
}
});
// H5 SDK接入全局只需运行一次
(function() {
var doc = document,
h = doc.getElementsByTagName('head')[0],
s = doc.createElement('script');
s.async = true;
s.src = '//qzs.qq.com/qzone/biz/res/i.js';
h && h.insertBefore(s, h.firstChild);
})();
</script> -->
</body> </body>
</html> </html>

View File

@@ -84,7 +84,8 @@
"title" : "发票", "title" : "发票",
"sdkConfigs" : { "sdkConfigs" : {
"maps" : {} "maps" : {}
} },
"template" : "index.html"
}, },
"mp-alipay" : { "mp-alipay" : {
"usingComponents" : true "usingComponents" : true

View File

@@ -2,6 +2,7 @@
"dependencies": { "dependencies": {
"dayjs": "^1.11.11", "dayjs": "^1.11.11",
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"uview-ui": "^2.0.36" "uview-ui": "^2.0.36",
"weixin-js-sdk": "^1.6.5"
} }
} }

View File

@@ -1,12 +1,8 @@
<template> <template>
<view class="content"> <view class="content">
<view class="content_top"> <view class="content_top">
<view :class="form.user_type == 1 ? 'content_topview':''" @click="clickakex(1)"> <view :class="form.user_type == 1 ? 'content_topview' : ''" @click="clickakex(1)">个人</view>
个人 <view :class="form.user_type == 2 ? 'content_topview' : ''" @click="clickakex(2)">企业</view>
</view>
<view :class="form.user_type == 2 ? 'content_topview':''" @click="clickakex(2)">
企业
</view>
</view> </view>
<view class="content_item"> <view class="content_item">
<view class="Box_box flex-between" v-if="form.user_type == 1"> <view class="Box_box flex-between" v-if="form.user_type == 1">
@@ -15,12 +11,10 @@
</view> </view>
<view class="Box_box flex-between" v-if="form.user_type == 2"> <view class="Box_box flex-between" v-if="form.user_type == 2">
<view>*单位名称</view> <view>*单位名称</view>
<view style="position: relative; width:70%;"> <view style="position: relative; width: 70%">
<input type="text" v-if="subCategoryList.length == 0" v-model="form.user_name" placeholder="请填写公司名称" <input type="text" v-if="subCategoryList.length == 0" v-model="form.user_name" placeholder="请填写公司名称" @input="onInput" />
@input="onInput" />
<view class="position" v-else> <view class="position" v-else>
<view class="positionitem" v-for="(item,index) in subCategoryList" :key="index" <view class="positionitem" v-for="(item, index) in subCategoryList" :key="index" @click="categorySubClick(item)">
@click="categorySubClick(item)">
{{ item.companyName }} {{ item.companyName }}
</view> </view>
</view> </view>
@@ -38,6 +32,33 @@
<view>*手机号</view> <view>*手机号</view>
<view><input type="text" v-model="form.mobile" placeholder="请填写联系电话" /></view> <view><input type="text" v-model="form.mobile" placeholder="请填写联系电话" /></view>
</view> </view>
<template v-if="form.user_type == 2">
<view class="Box_box flex-between" @click="showElse = !showElse">
<view>其他信息</view>
<view class="arrow">
<text class="t">地址开户行</text>
<u-icon name="arrow-down" class="arrow-icon" :class="{ active: showElse }"></u-icon>
</view>
</view>
<template v-if="showElse">
<view class="Box_box flex-between">
<view>公司地址</view>
<view><input type="text" v-model="form.c_address" placeholder="请填写公司地址" /></view>
</view>
<view class="Box_box flex-between">
<view>联系电话</view>
<view><input type="text" v-model="form.c_phone" placeholder="请填写公司联系电话" /></view>
</view>
<view class="Box_box flex-between">
<view>开户行名称</view>
<view><input type="text" v-model="form.c_bank_name" placeholder="请填写公司开户行名称" /></view>
</view>
<view class="Box_box flex-between">
<view>开户行账号</view>
<view><input type="text" v-model="form.c_bank_account" placeholder="请填写公司开户行账号" /></view>
</view>
</template>
</template>
<!-- <view class="Box_box flex-between"> <!-- <view class="Box_box flex-between">
<view>备注</view> <view>备注</view>
<view><input type="text" v-model="form.notes" placeholder="请输入内容" /></view> <view><input type="text" v-model="form.notes" placeholder="请输入内容" /></view>
@@ -56,20 +77,17 @@
</view> </view>
</view> --> </view> -->
<view class="preservation flex-colum"> <view class="preservation flex-colum">
<view v-if="form.status_note" <view v-if="form.status_note" style="width: 100%; color: #ff2b2b; padding: 28rpx 0; word-wrap: break-word">({{ form.status_note || '' }})</view>
style="width: 100%; color: #FF2B2B; padding: 28rpx 0;word-wrap: break-word;">
({{form.status_note|| '无'}})</view>
</view> </view>
</view> </view>
<view class="content_bottom" @click="saveMerchantBaseInfo"> <view class="content_bottom" @click="saveMerchantBaseInfo">确定</view>
确定
</view>
</view> </view>
</template> </template>
<script> <script>
// import jWeixin from 'jweixin-module's // import jWeixin from 'jweixin-module's
import _ from 'lodash' import wx from 'weixin-js-sdk';
import _ from 'lodash';
export default { export default {
data() { data() {
return { return {
@@ -78,58 +96,75 @@
form: { form: {
user_type: 2, user_type: 2,
img: '', img: '',
user_name: "", user_name: '',
user_duty: "", user_duty: '',
email: "", email: '',
mobile: '', mobile: '',
status_note: '' status_note: '',
c_address: '',
} c_phone: '',
} c_bank_name: '',
c_bank_account: ''
},
showElse: false
};
}, },
async onLoad(e) { async onLoad(e) {
this.form.id = e.id this.form.id = e.id;
this.form.open_id = e.open_id this.form.open_id = e.open_id;
if (e.view_type == 'fail') { if (e.view_type == 'fail') {
this.form.view_type = e.view_type this.form.view_type = e.view_type;
let res = await this.api.szzpyfailccho({ let res = await this.api.szzpyfailccho({
id: this.form.id, id: this.form.id,
view_type: this.form.view_type view_type: this.form.view_type
}) });
try { try {
if (res.code == 1) { if (res.code == 1) {
this.form = res.data.data this.form = res.data.data;
this.form.status_note = res.data.status_note this.form.status_note = res.data.status_note;
} }
} catch (e) { } catch (e) {
//TODO handle the exception //TODO handle the exception
} }
} }
}, },
methods: { methods: {
wxInit() {
wx.config({
debug: false, // true:调试时候弹窗
appId: res.appId, // 微信appid
timestamp: res.timestamp, // 时间戳
nonceStr: res.nonceStr, // 随机字符串
signature: res.signature, // 签名
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
'onMenuShareTimeline', // 分享到朋友圈接口
'onMenuShareAppMessage', // 分享到朋友接口
'onMenuShareQQ', // 分享到QQ接口
'onMenuShareWeibo' // 分享到微博接口
]
});
},
onInput(e) { onInput(e) {
if (this.form.user_type == 2) { if (this.form.user_type == 2) {
if ([...e.detail.value].length >= 6) { if ([...e.detail.value].length >= 6) {
console.log(100000) console.log(100000);
this.handleClick() this.handleClick();
} else { } else {
this.subCategoryList = [] this.subCategoryList = [];
} }
} }
}, },
handleClick: _.debounce(function () { handleClick: _.debounce(function () {
console.log(100000) console.log(100000);
this.getOrder() this.getOrder();
// 函数执行内容 // 函数执行内容
}, 500), }, 500),
categorySubClick(category) { categorySubClick(category) {
console.log(category, 86) console.log(category, 86);
this.form.user_name = category.companyName this.form.user_name = category.companyName;
this.form.user_duty = category.creditCode this.form.user_duty = category.creditCode;
this.subCategoryList = [] this.subCategoryList = [];
}, },
upload() { upload() {
uni.chooseImage({ uni.chooseImage({
@@ -144,17 +179,17 @@
filePath: tempFilePaths[0], filePath: tempFilePaths[0],
name: 'file', name: 'file',
formData: { formData: {
open_id: this.form.open_id, open_id: this.form.open_id
}, },
success: (uploadFileRes) => { success: (uploadFileRes) => {
uni.showToast({ uni.showToast({
title: '上传成功', title: '上传成功',
icon: 'none', icon: 'none'
}) });
uni.pro.hideLoading(); uni.pro.hideLoading();
let data = JSON.parse(uploadFileRes.data) let data = JSON.parse(uploadFileRes.data);
this.form.img = data.data[0] this.form.img = data.data[0];
console.log(this.form) console.log(this.form);
}, },
fail: () => { fail: () => {
uni.pro.hideLoading(); uni.pro.hideLoading();
@@ -162,7 +197,7 @@
}); });
}, },
fail: () => { fail: () => {
console.log(111) console.log(111);
uni.pro.hideLoading(); uni.pro.hideLoading();
} }
}); });
@@ -201,24 +236,50 @@
let res = await this.api.usersubopeninvoice({ let res = await this.api.usersubopeninvoice({
id: this.form.id, id: this.form.id,
open_id: this.form.open_id, open_id: this.form.open_id,
user_name: this.form.user_name, ...this.form
user_type: this.form.user_type, });
user_duty: this.form.user_duty,
email: this.form.email,
img: this.form.img,
mobile: this.form.mobile,
notes: this.form.notes
})
if (res.code == 1) { if (res.code == 1) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
icon: 'none' icon: 'none'
}); });
console.log('t_type===', res.data.t_type);
switch (res.data.t_type) {
case '1':
console.log(1);
// 内链
setTimeout(() => { setTimeout(() => {
if (res.data.url) { window.location.href = res.data.n_url;
window.location.href = res.data.url
}
}, 1000); }, 1000);
break;
case '2':
console.log(2);
// 外链
setTimeout(() => {
window.location.href = res.data.url;
}, 1000);
break;
// case '3':
// console.log(3);
// // 小程序
// setTimeout(() => {
// plus.share.getServices(function (plusRes) {
// var sweixin = null;
// for (var i = 0; i < plusRes.length; i++) {
// var t = plusRes[i];
// if (t.id == 'weixin') {
// sweixin = t;
// }
// }
// if (sweixin) {
// sweixin.launchMiniProgram({ ...res.data.mini });
// }
// });
// }, 1000);
// break;
default:
break;
}
// window.location.href = "https://i.hangzhouyiyao.cn/activities?appKey=3f4ca8be626445e8b306c2badafd6f46&appEntrance=1&business=money" // window.location.href = "https://i.hangzhouyiyao.cn/activities?appKey=3f4ca8be626445e8b306c2badafd6f46&appEntrance=1&business=money"
} }
// uni.request({ // uni.request({
@@ -258,14 +319,15 @@
// }); // });
}, },
clickakex(e) { clickakex(e) {
this.form.user_type = e this.form.user_type = e;
this.form.user_name = '' this.form.user_name = '';
this.form.img = '' this.form.img = '';
this.form.user_duty = '' this.form.user_duty = '';
this.form.email = '' this.form.email = '';
this.form.mobile = '' this.form.mobile = '';
}, },
async getOrder() { //搜索值 async getOrder() {
//搜索值
uni.request({ uni.request({
url: 'https://invoice.sxczgkj.cn/api/' + 'store/enterprise', url: 'https://invoice.sxczgkj.cn/api/' + 'store/enterprise',
data: { data: {
@@ -274,7 +336,7 @@
open_id: this.form.open_id open_id: this.form.open_id
}, },
method: 'POST', //请求方式,必须为大写 method: 'POST', //请求方式,必须为大写
success: res => { success: (res) => {
console.log('接口返回------', res); console.log('接口返回------', res);
setTimeout(() => { setTimeout(() => {
if (this.page == 1) { if (this.page == 1) {
@@ -282,22 +344,35 @@
} else { } else {
this.subCategoryList.push(...res.data.data); this.subCategoryList.push(...res.data.data);
} }
}, 500) }, 500);
} }
}); });
} }
} }
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
page { page {
background: #F9F9F9; background: #f9f9f9;
}
.arrow {
display: flex;
align-items: center;
.t {
margin-right: 8upx;
color: #808080;
font-size: 32upx;
}
.arrow-icon {
transition: all 0.3s ease-in-out;
&.active {
transform: rotate(180deg);
}
}
} }
.content { .content {
padding: 0 28rpx; padding: 0 28rpx 28upx;
.content_top { .content_top {
padding: 32rpx 110rpx; padding: 32rpx 110rpx;
@@ -306,7 +381,7 @@
justify-content: space-between; justify-content: space-between;
.content_topview { .content_topview {
background: #288EFB; background: #288efb;
color: #fff; color: #fff;
} }
@@ -314,7 +389,7 @@
width: 142rpx; width: 142rpx;
height: 56rpx; height: 56rpx;
background: #fff; background: #fff;
color: #288EFB; color: #288efb;
border-radius: 6rpx 6rpx 6rpx 6rpx; border-radius: 6rpx 6rpx 6rpx 6rpx;
font-family: Source Han Sans CN, Source Han Sans CN; font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400; font-weight: 400;
@@ -326,7 +401,7 @@
.content_item { .content_item {
width: 100%; width: 100%;
background: #FFFFFF; background: #ffffff;
border-radius: 18rpx 18rpx 18rpx 18rpx; border-radius: 18rpx 18rpx 18rpx 18rpx;
.Box_box { .Box_box {
@@ -358,7 +433,6 @@
border-bottom: 1rpx solid #ccc; border-bottom: 1rpx solid #ccc;
} }
} }
} }
.preservation { .preservation {
@@ -410,7 +484,7 @@
margin: 0 auto; margin: 0 auto;
width: 254rpx; width: 254rpx;
height: 156rpx; height: 156rpx;
background: #FFFFFF; background: #ffffff;
border: 1rpx dashed #707070; border: 1rpx dashed #707070;
} }
} }
@@ -420,15 +494,14 @@
margin: 100rpx auto; margin: 100rpx auto;
width: 80%; width: 80%;
height: 84rpx; height: 84rpx;
background: #288EFB; background: #288efb;
border-radius: 50rpx 50rpx 50rpx 50rpx; border-radius: 50rpx 50rpx 50rpx 50rpx;
font-family: Source Han Sans CN, Source Han Sans CN; font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400; font-weight: 400;
font-size: 36rpx; font-size: 36rpx;
color: #FFFFFF; color: #ffffff;
line-height: 84rpx; line-height: 84rpx;
text-align: center; text-align: center;
} }
} }
</style> </style>

View File

@@ -4,21 +4,11 @@
<view class="content_boxtopone"> <view class="content_boxtopone">
{{ datalsit.type }} {{ datalsit.type }}
</view> </view>
<view class="content_boxtoptow" v-if="datalsit.status == 0"> <view class="content_boxtoptow" v-if="datalsit.status == 0">客户未扫码</view>
客户未扫码 <view class="content_boxtoptow" v-if="datalsit.status == 1">开票中</view>
</view> <view class="content_boxtoptow" style="color: #fd482c" v-if="datalsit.status == 3">开票失败</view>
<view class="content_boxtoptow" v-if="datalsit.status ==1"> <view class="content_boxtoptow" style="color: #3dc85e" v-if="datalsit.status == 2">开票成功</view>
开票中 <view class="content_boxtoptow" v-if="datalsit.status == 4">已作废</view>
</view>
<view class="content_boxtoptow" style="color:#FD482C;" v-if="datalsit.status == 3">
开票失败
</view>
<view class="content_boxtoptow" style="color:#3DC85E;" v-if="datalsit.status == 2">
开票成功
</view>
<view class="content_boxtoptow" v-if="datalsit.status == 4">
已作废
</view>
</view> </view>
<view class="content_boxt_one"> <view class="content_boxt_one">
<view class="content_boxt_oneone" v-if="datalsit.status == 2"> <view class="content_boxt_oneone" v-if="datalsit.status == 2">
@@ -34,7 +24,7 @@
</view> </view>
<view class="classvie_item flex-start"> <view class="classvie_item flex-start">
<text class="classvie_itemone">发票金额</text> <text class="classvie_itemone">发票金额</text>
<text class="classvie_itemtow" style="color: #FF6565;">{{datalsit.price}}</text> <text class="classvie_itemtow" style="color: #ff6565">{{ datalsit.price }}</text>
</view> </view>
<view class="classvie_item flex-start"> <view class="classvie_item flex-start">
<text class="classvie_itemone">发票类型</text> <text class="classvie_itemone">发票类型</text>
@@ -49,7 +39,6 @@
<text class="classvie_itemtow">{{ datalsit.createtime }}</text> <text class="classvie_itemtow">{{ datalsit.createtime }}</text>
</view> </view>
</view> </view>
</view> </view>
</template> </template>
@@ -66,22 +55,21 @@
}; };
}, },
onLoad(e) { onLoad(e) {
this.ID = e.id this.ID = e.id;
this.status = e.status this.status = e.status;
}, },
onReady() { onReady() {
this.storeinvoicelist() this.storeinvoicelist();
}, },
methods: { methods: {
storeinvoicelist() { storeinvoicelist() {
uni.request({ uni.request({
url: uni.conf.baseUrl + 'store/invoicedetail', url: uni.conf.baseUrl + 'store/invoicedetail',
data: { data: {
id: this.ID, id: this.ID
}, },
method: 'POST', //请求方式,必须为大写 method: 'POST', //请求方式,必须为大写
success: res => { success: (res) => {
this.datalsit = res.data.data; this.datalsit = res.data.data;
// 获取uQRCode实例 // 获取uQRCode实例
var qr = new uQRCode(); var qr = new uQRCode();
@@ -102,7 +90,7 @@
}, },
savealbum(e) { savealbum(e) {
uni.pro.navigateBack(); uni.pro.navigateBack();
}, }
// savealbum(e) { // savealbum(e) {
// // #ifdef APP // // #ifdef APP
// uni.showLoading({ // uni.showLoading({
@@ -150,12 +138,12 @@
// // #endif // // #endif
// }, // },
} }
} };
</script> </script>
<style lang="scss"> <style lang="scss">
page { page {
background: #F9F9F9; background: #f9f9f9;
} }
.content { .content {
@@ -163,7 +151,7 @@
.content_boxtop { .content_boxtop {
padding: 22rpx 16rpx; padding: 22rpx 16rpx;
background: #FFFFFF; background: #ffffff;
border-radius: 18rpx 18rpx 18rpx 18rpx; border-radius: 18rpx 18rpx 18rpx 18rpx;
.content_boxtopone { .content_boxtopone {
@@ -185,13 +173,13 @@
margin-top: 32rpx; margin-top: 32rpx;
padding: 32rpx; padding: 32rpx;
border-radius: 18rpx 18rpx 18rpx 18rpx; border-radius: 18rpx 18rpx 18rpx 18rpx;
background: #FFFFFF; background: #ffffff;
.content_boxt_oneone { .content_boxt_oneone {
font-family: Source Han Sans CN, Source Han Sans CN; font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400; font-weight: 400;
font-size: 28rpx; font-size: 28rpx;
color: #FF6565; color: #ff6565;
} }
.classvie_item { .classvie_item {
@@ -220,7 +208,7 @@
.content_boxt_tow { .content_boxt_tow {
margin: 32rpx 0; margin: 32rpx 0;
width: 100%; width: 100%;
background: #FFFFFF; background: #ffffff;
border-radius: 18rpx 18rpx 18rpx 18rpx; border-radius: 18rpx 18rpx 18rpx 18rpx;
padding-bottom: 50rpx; padding-bottom: 50rpx;
@@ -238,16 +226,15 @@
margin: 50rpx auto 0 auto; margin: 50rpx auto 0 auto;
width: 558rpx; width: 558rpx;
height: 84rpx; height: 84rpx;
background: #288EFB; background: #288efb;
border-radius: 50rpx 50rpx 50rpx 50rpx; border-radius: 50rpx 50rpx 50rpx 50rpx;
font-family: Source Han Sans CN, Source Han Sans CN; font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400; font-weight: 400;
font-size: 36rpx; font-size: 36rpx;
color: #FFFFFF; color: #ffffff;
line-height: 84rpx; line-height: 84rpx;
text-align: center; text-align: center;
font-style: normal; font-style: normal;
} }
.content_boxt_towrelative { .content_boxt_towrelative {

View File

@@ -1,2 +1,6 @@
<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>发票</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)')) <!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>发票</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/static/index.2da1efab.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src="/chunk-vendors.js?v=1716359286335"></script><script src="/index.js?v=1716359286335"></script></body></html> .supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') +
'" />')</script><link rel=stylesheet href=/static/index.2da1efab.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src="/chunk-vendors.js?v=1716373696937"></script><script src="/index.js?v=1716373696937"></script></body></html>