diff --git a/Appbuild/.hbuilderx/launch.json b/Appbuild/.hbuilderx/launch.json
deleted file mode 100644
index 582561b0c..000000000
--- a/Appbuild/.hbuilderx/launch.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
- // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
- "version": "0.0",
- "configurations": [{
- "app-plus" :
- {
- "launchtype" : "local"
- },
- "default" :
- {
- "launchtype" : "local"
- },
- "type" : "uniCloud"
- }
- ]
-}
diff --git a/Appbuild/App.vue b/Appbuild/App.vue
deleted file mode 100644
index baa5bea63..000000000
--- a/Appbuild/App.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
diff --git a/Appbuild/README.md b/Appbuild/README.md
deleted file mode 100644
index a11ec4391..000000000
--- a/Appbuild/README.md
+++ /dev/null
@@ -1,280 +0,0 @@
-# 存客宝 - UniApp 套壳应用
-
-这是一个基于 UniApp 开发的安卓套壳应用,主要功能是作为内置浏览器加载目标网站,并提供完整的组件通信功能。
-
-## 🚀 主要特性
-
-- **全屏 WebView** - 无边框、无导航栏的全屏显示
-- **双向通信** - UniApp 与网页之间的完整消息通信
-- **无缝体验** - 用户无法察觉这是一个套壳应用
-- **错误处理** - 完善的加载失败和网络错误处理
-- **备用地址** - 支持主地址失败时自动切换到备用地址
-- **调试模式** - 可选的调试信息显示
-
-## 📱 应用配置
-
-### 1. 修改目标网站
-
-在 `config.js` 文件中修改目标网站地址:
-
-```javascript
-webConfig: {
- // 主要目标网站URL(请替换为您的实际网站)
- mainUrl: 'https://your-target-website.com',
-
- // 备用网站URL(如果主网站无法访问)
- fallbackUrl: 'https://backup-website.com',
-}
-```
-
-### 2. 应用设置
-
-```javascript
-appConfig: {
- // 应用名称
- appName: '存客宝',
-
- // 应用版本
- version: '1.0.0',
-
- // 是否显示加载动画
- showLoading: true,
-
- // 加载超时时间(毫秒)
- loadingTimeout: 10000,
-
- // 是否启用调试模式
- debug: false
-}
-```
-
-## 🔄 通信功能
-
-### UniApp 向网页发送消息
-
-网页可以通过以下方式接收来自 UniApp 的消息:
-
-```javascript
-// 监听来自 UniApp 的消息
-window.addEventListener("uniAppMessage", function (event) {
- const message = event.detail;
- console.log("收到 UniApp 消息:", message);
-
- switch (message.type) {
- case "userInfo":
- // 处理用户信息
- console.log("用户信息:", message.data);
- break;
- case "deviceInfo":
- // 处理设备信息
- console.log("设备信息:", message.data);
- break;
- case "shareResult":
- // 处理分享结果
- console.log("分享结果:", message.data);
- break;
- case "paymentResult":
- // 处理支付结果
- console.log("支付结果:", message.data);
- break;
- case "confirmResult":
- // 处理确认结果
- console.log("确认结果:", message.data);
- break;
- }
-});
-```
-
-### 网页向 UniApp 发送消息
-
-网页可以通过 `window.uniAppBridge` 对象与 UniApp 通信:
-
-```javascript
-// 检查桥接是否可用
-if (window.uniAppBridge) {
- // 获取用户信息
- window.uniAppBridge.getUserInfo();
-
- // 获取设备信息
- window.uniAppBridge.getDeviceInfo();
-
- // 显示 Toast
- window.uniAppBridge.showToast("操作成功!", 2000);
-
- // 显示 Alert
- window.uniAppBridge.showAlert("提示", "这是一个提示信息");
-
- // 显示 Confirm
- window.uniAppBridge.showConfirm("确认", "确定要执行此操作吗?");
-
- // 分享
- window.uniAppBridge.share({
- url: "https://example.com",
- title: "分享标题",
- summary: "分享描述",
- });
-
- // 支付
- window.uniAppBridge.payment({
- amount: 100,
- orderId: "order123",
- description: "商品描述",
- });
-
- // 发送自定义消息
- window.uniAppBridge.postMessage("customType", {
- key: "value",
- data: "custom data",
- });
-}
-```
-
-## 🛠️ 开发指南
-
-### 1. 环境准备
-
-确保已安装 HBuilderX 并配置好 UniApp 开发环境。
-
-### 2. 修改配置
-
-1. 打开 `config.js` 文件
-2. 修改 `mainUrl` 为您的目标网站地址
-3. 根据需要修改其他配置项
-
-### 3. 编译打包
-
-1. 在 HBuilderX 中打开项目
-2. 选择 "发行" -> "原生 App-云打包"
-3. 选择 Android 平台
-4. 配置应用图标和签名信息
-5. 点击打包
-
-### 4. 测试通信功能
-
-在目标网站中添加以下测试代码:
-
-```html
-
-
-
- 测试页面
-
-
- UniApp 套壳应用测试
-
-
-
-
-
-
-
-
-
-
-
-```
-
-## 📋 消息类型说明
-
-### 从网页到 UniApp
-
-| 消息类型 | 说明 | 参数 |
-| --------------- | ------------ | -------------------------------- |
-| `getUserInfo` | 获取用户信息 | 无 |
-| `getDeviceInfo` | 获取设备信息 | 无 |
-| `toast` | 显示 Toast | `{message, duration}` |
-| `alert` | 显示 Alert | `{title, content}` |
-| `confirm` | 显示 Confirm | `{title, content}` |
-| `share` | 分享功能 | `{url, title, summary}` |
-| `payment` | 支付功能 | `{amount, orderId, description}` |
-| `navigate` | 页面导航 | `{url}` |
-
-### 从 UniApp 到网页
-
-| 消息类型 | 说明 | 数据 |
-| --------------- | -------- | --------------------- |
-| `userInfo` | 用户信息 | 用户数据对象 |
-| `deviceInfo` | 设备信息 | 设备数据对象 |
-| `shareResult` | 分享结果 | `{success, error?}` |
-| `paymentResult` | 支付结果 | `{success, orderId?}` |
-| `confirmResult` | 确认结果 | `{confirmed}` |
-
-## 🔧 自定义功能
-
-### 添加新的消息类型
-
-1. 在 `config.js` 中添加新的消息类型:
-
-```javascript
-messageTypes: {
- // ... 现有类型
- CUSTOM_ACTION: "customAction";
-}
-```
-
-2. 在 `index.vue` 中添加处理逻辑:
-
-```javascript
-case this.config.communication.messageTypes.CUSTOM_ACTION:
- this.handleCustomAction(data);
- break;
-```
-
-3. 实现处理方法:
-
-```javascript
-handleCustomAction(data) {
- // 处理自定义操作
- console.log('自定义操作:', data);
- // 返回结果给网页
- this.sendToIframe('customActionResult', { success: true });
-}
-```
-
-## 🚨 注意事项
-
-1. **网络安全** - 确保目标网站使用 HTTPS 协议
-2. **权限配置** - 在 `manifest.json` 中配置必要的网络权限
-3. **兼容性** - 测试不同 Android 版本的兼容性
-4. **性能优化** - 避免频繁的消息通信,影响性能
-5. **错误处理** - 完善错误处理机制,提升用户体验
-
-## 📞 技术支持
-
-如有问题或需要技术支持,请联系开发团队。
diff --git a/Appbuild/components/WebViewBridge.vue b/Appbuild/components/WebViewBridge.vue
deleted file mode 100644
index 329791d0a..000000000
--- a/Appbuild/components/WebViewBridge.vue
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
- {{ isConnected ? '已连接' : '未连接' }}
-
-
-
-
- 调试信息
- 当前URL: {{ currentUrl }}
- 连接状态: {{ isConnected ? '已连接' : '未连接' }}
- 消息计数: {{ messageCount }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Appbuild/config.js b/Appbuild/config.js
deleted file mode 100644
index 954f5baa7..000000000
--- a/Appbuild/config.js
+++ /dev/null
@@ -1,74 +0,0 @@
-// 应用配置文件
-const config = {
- // 目标网站配置
- webConfig: {
- // 主要目标网站URL(请替换为您的实际网站)
- mainUrl: "https://kr-op.quwanzhi.com",
-
- // // 备用网站URL(如果主网站无法访问)
- fallbackUrl: "https://kr-op.quwanzhi.com",
-
- // 测试页面URL(用于开发测试)
- testUrl: "https://kr-op.quwanzhi.com/test/postMessage",
- // testUrl: "http://localhost:3000/test/postMessage",
-
- // 是否启用HTTPS强制跳转
- forceHttps: false,
-
- // 是否允许跨域请求
- allowCrossOrigin: true,
- },
-
- // 应用配置
- appConfig: {
- // 应用名称
- appName: "存客宝",
-
- // 应用版本
- version: "1.0.0",
-
- // 是否启用超时检测
- enableTimeout: false, // 设为 false 禁用超时检测
-
- // 加载超时时间(毫秒)- 设为0禁用超时检测
- loadingTimeout: 30000, // 增加到30秒
-
- // 是否启用调试模式
- debug: true, // 开发时设为 true,生产时设为 false
-
- // 是否使用测试页面
- useTestPage: true, // 开发时设为 true,生产时设为 false
- },
-
- // 通信配置
- communication: {
- // 消息类型定义
- messageTypes: {
- GET_USER_INFO: "getUserInfo",
- GET_DEVICE_INFO: "getDeviceInfo",
- NAVIGATE: "navigate",
- SHARE: "share",
- PAYMENT: "payment",
- TOAST: "toast",
- ALERT: "alert",
- CONFIRM: "confirm",
- },
-
- // 允许的域名白名单
- allowedDomains: ["kr-op.quwanzhi.com", "quwanzhi.com", "localhost"],
- },
-
- // 用户配置
- userConfig: {
- // 默认用户信息
- defaultUser: {
- id: "user123",
- name: "测试用户",
- avatar: "https://example.com/avatar.jpg",
- phone: "13800138000",
- email: "test@example.com",
- },
- },
-};
-
-export default config;
diff --git a/Appbuild/jsconfig.json b/Appbuild/jsconfig.json
deleted file mode 100644
index 39a384c21..000000000
--- a/Appbuild/jsconfig.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "paths": {
- "@/*": ["./*"],
- "@components/*": ["./components/*"],
- "@pages/*": ["./pages/*"],
- "@static/*": ["./static/*"],
- "@utils/*": ["./utils/*"],
- "@api/*": ["./api/*"],
- "@store/*": ["./store/*"],
- "@styles/*": ["./styles/*"]
- },
- "target": "es6",
- "module": "commonjs",
- "allowSyntheticDefaultImports": true,
- "esModuleInterop": true,
- "skipLibCheck": true
- },
- "include": [
- "**/*.js",
- "**/*.vue",
- "**/*.json"
- ],
- "exclude": [
- "node_modules",
- "unpackage",
- "dist"
- ]
-}
\ No newline at end of file
diff --git a/Appbuild/pages.json b/Appbuild/pages.json
deleted file mode 100644
index aa2c325c0..000000000
--- a/Appbuild/pages.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "pages": [
- {
- "path": "pages/index/index",
- "style": {
- "navigationBarTitleText": "存客宝",
- "navigationStyle": "custom",
- "app-plus": {
- "titleNView": false,
- "bounce": "none"
- }
- }
- }
-
- ],
- "globalStyle": {
- "navigationBarTextStyle": "black",
- "navigationBarTitleText": "存客宝",
- "navigationBarBackgroundColor": "#F8F8F8",
- "backgroundColor": "#F8F8F8",
- "navigationStyle": "custom",
- "app-plus": {
- "titleNView": false,
- "bounce": "none",
- "background": "transparent"
- }
- },
- "uniIdRouter": {}
-}
\ No newline at end of file
diff --git a/Appbuild/pages/index/index.css b/Appbuild/pages/index/index.css
deleted file mode 100644
index 43435c771..000000000
--- a/Appbuild/pages/index/index.css
+++ /dev/null
@@ -1,160 +0,0 @@
-.container {
- width: 100%;
- height: 100vh;
- position: relative;
- background-color: #000;
- overflow: hidden;
-}
-
-/* 确保web-view在app基座中正确显示 */
-.webview {
- width: 100% !important;
- height: 100% !important;
- position: absolute !important;
- top: 0 !important;
- left: 0 !important;
- right: 0 !important;
- bottom: 0 !important;
- z-index: 1;
-}
-
-/* 针对app基座的特殊处理 */
-/* #ifdef APP-PLUS */
-.container {
- height: 100vh !important;
- overflow: hidden !important;
-}
-
-.webview {
- width: 100% !important;
- height: 100% !important;
- position: absolute !important;
- top: 0 !important;
- left: 0 !important;
- right: 0 !important;
- bottom: 0 !important;
- z-index: 1 !important;
-}
-/* #endif */
-
-.loading-container {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- z-index: 2;
- display: flex;
- flex-direction: column;
- align-items: center;
- background-color: rgba(255, 255, 255, 0.95);
- padding: 30px;
- border-radius: 15px;
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
-}
-
-.loading-spinner {
- width: 50px;
- height: 50px;
- border: 4px solid #f3f3f3;
- border-top: 4px solid #3498db;
- border-radius: 50%;
- animation: spin 1s linear infinite;
- margin-bottom: 15px;
-}
-
-@keyframes spin {
- 0% {
- transform: rotate(0deg);
- }
-
- 100% {
- transform: rotate(360deg);
- }
-}
-
-.loading-text {
- font-size: 16px;
- color: #333;
- font-weight: 500;
-}
-
-.error-container {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- z-index: 2;
- display: flex;
- flex-direction: column;
- align-items: center;
- background-color: rgba(255, 255, 255, 0.95);
- padding: 30px;
- border-radius: 15px;
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
- min-width: 280px;
-}
-
-.error-text {
- font-size: 16px;
- color: #e74c3c;
- margin-bottom: 20px;
- text-align: center;
- line-height: 1.5;
-}
-
-.reload-btn,
-.fallback-btn,
-.clear-btn {
- background-color: #3498db;
- color: white;
- border: none;
- padding: 12px 24px;
- border-radius: 8px;
- font-size: 14px;
- margin: 5px;
- min-width: 120px;
-}
-
-.fallback-btn {
- background-color: #95a5a6;
-}
-
-.clear-btn {
- background-color: #e74c3c;
-}
-
-.debug-info {
- position: absolute;
- top: 300px;
- right: 10px;
- z-index: 3;
- background-color: rgba(0, 0, 0, 0.7);
- color: white;
- padding: 10px;
- border-radius: 5px;
- font-size: 12px;
- display: flex;
- flex-direction: column;
-}
-
-/* 自定义高度样式 */
-.webview.custom-height {
- height: var(--custom-height, 100%) !important;
-}
-
-/* 针对不同高度的预设样式 */
-.webview.height-50 {
- height: 50vh !important;
-}
-
-.webview.height-75 {
- height: 75vh !important;
-}
-
-.webview.height-90 {
- height: 90vh !important;
-}
-
-.webview.height-full {
- height: 100vh !important;
-}
diff --git a/Appbuild/pages/index/index.vue b/Appbuild/pages/index/index.vue
deleted file mode 100644
index 2802f6bc7..000000000
--- a/Appbuild/pages/index/index.vue
+++ /dev/null
@@ -1,1110 +0,0 @@
-
-
-
-
-
-
-
-
-
- 加载中...
-
-
-
-
- {{ error }}
-
-
-
-
-
-
-
- 当前URL: {{ currentUrl }}
- 加载状态: {{ loading ? '加载中' : '已加载' }}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-hdpi.png b/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-hdpi.png
deleted file mode 100644
index 3f6534026..000000000
Binary files a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-hdpi.png and /dev/null differ
diff --git a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-xhdpi.png b/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-xhdpi.png
deleted file mode 100644
index a6f29768d..000000000
Binary files a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-xhdpi.png and /dev/null differ
diff --git a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-xxhdpi.png b/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-xxhdpi.png
deleted file mode 100644
index 8c9358de8..000000000
Binary files a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-xxhdpi.png and /dev/null differ
diff --git a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-xxxhdpi.png b/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-xxxhdpi.png
deleted file mode 100644
index 06caa7359..000000000
Binary files a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/.manifest/icon-android-xxxhdpi.png and /dev/null differ
diff --git a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/__uniappautomator.js b/Appbuild/unpackage/cache/wgt/__UNI__96F2246/__uniappautomator.js
deleted file mode 100644
index 2471e2ebf..000000000
--- a/Appbuild/unpackage/cache/wgt/__UNI__96F2246/__uniappautomator.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var n;
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-function __spreadArrays(){for(var s=0,i=0,il=arguments.length;in;n++)r(e,e._deferreds[n]);e._deferreds=null}function c(e,n){var t=!1;try{e((function(e){t||(t=!0,i(n,e))}),(function(e){t||(t=!0,f(n,e))}))}catch(o){if(t)return;t=!0,f(n,o)}}var a=setTimeout;o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,n){var o=new this.constructor(t);return r(this,new function(e,n,t){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof n?n:null,this.promise=t}(e,n,o)),o},o.prototype.finally=e,o.all=function(e){return new o((function(t,o){function r(e,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var u=n.then;if("function"==typeof u)return void u.call(n,(function(n){r(e,n)}),o)}i[e]=n,0==--f&&t(i)}catch(c){o(c)}}if(!n(e))return o(new TypeError("Promise.all accepts an array"));var i=Array.prototype.slice.call(e);if(0===i.length)return t([]);for(var f=i.length,u=0;i.length>u;u++)r(u,i[u])}))},o.resolve=function(e){return e&&"object"==typeof e&&e.constructor===o?e:new o((function(n){n(e)}))},o.reject=function(e){return new o((function(n,t){t(e)}))},o.race=function(e){return new o((function(t,r){if(!n(e))return r(new TypeError("Promise.race accepts an array"));for(var i=0,f=e.length;f>i;i++)o.resolve(e[i]).then(t,r)}))},o._immediateFn="function"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){a(e,0)},o._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)};var l=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw Error("unable to locate global object")}();"Promise"in l?l.Promise.prototype.finally||(l.Promise.prototype.finally=e):l.Promise=o},"object"==typeof exports&&"undefined"!=typeof module?n():"function"==typeof define&&define.amd?define(n):n();var getRandomValues="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto),rnds8=new Uint8Array(16);function rng(){if(!getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return getRandomValues(rnds8)}for(var byteToHex=[],i=0;i<256;++i)byteToHex[i]=(i+256).toString(16).substr(1);function v4(options,buf,offset){var i=buf&&offset||0;"string"==typeof options&&(buf="binary"===options?new Array(16):null,options=null);var rnds=(options=options||{}).random||(options.rng||rng)();if(rnds[6]=15&rnds[6]|64,rnds[8]=63&rnds[8]|128,buf)for(var ii=0;ii<16;++ii)buf[i+ii]=rnds[ii];return buf||function(buf,offset){var i=offset||0,bth=byteToHex;return[bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]]].join("")}(rnds)}var hasOwnProperty=Object.prototype.hasOwnProperty,isArray=Array.isArray,PATH_RE=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;function getPaths(path,data){if(isArray(path))return path;if(data&&(val=data,key=path,hasOwnProperty.call(val,key)))return[path];var val,key,res=[];return path.replace(PATH_RE,(function(match,p1,offset,string){return res.push(offset?string.replace(/\\(\\)?/g,"$1"):p1||match),string})),res}function getDataByPath(data,path){var dataPath,paths=getPaths(path,data);for(dataPath=paths.shift();null!=dataPath;){if(null==(data=data[dataPath]))return;dataPath=paths.shift()}return data}var elementMap=new Map;function transEl(el){var _a;if(!function(el){if(el){var tagName=el.tagName;return 0===tagName.indexOf("UNI-")||"BODY"===tagName||0===tagName.indexOf("V-UNI-")||el.__isUniElement}return!1}(el))throw Error("no such element");var element,elementId,elem={elementId:(element=el,elementId=element._id,elementId||(elementId=v4(),element._id=elementId,elementMap.set(elementId,{id:elementId,element:element})),elementId),tagName:el.tagName.toLocaleLowerCase().replace("uni-","")};if(el.__vue__)(vm=el.__vue__)&&(vm.$parent&&vm.$parent.$el===el&&(vm=vm.$parent),vm&&!(null===(_a=vm.$options)||void 0===_a?void 0:_a.isReserved)&&(elem.nodeId=function(vm){if(vm._$weex)return vm._uid;if(vm._$id)return vm._$id;if(vm.uid)return vm.uid;var parent_1=function(vm){for(var parent=vm.$parent;parent;){if(parent._$id)return parent;parent=parent.$parent}}(vm);if(!vm.$parent)return"-1";var vnode=vm.$vnode,context=vnode.context;return context&&context!==parent_1&&context._$id?context._$id+";"+parent_1._$id+","+vnode.data.attrs._i:parent_1._$id+","+vnode.data.attrs._i}(vm)));else var vm;return"video"===elem.tagName&&(elem.videoId=elem.nodeId),elem}function getVm(el){return el.__vue__?{isVue3:!1,vm:el.__vue__}:{isVue3:!0,vm:el.__vueParentComponent}}function getScrollViewMain(el){var _a=getVm(el),isVue3=_a.isVue3,vm=_a.vm;return isVue3?vm.exposed.$getMain():vm.$refs.main}var FUNCTIONS={input:{input:function(el,value){var _a=getVm(el),isVue3=_a.isVue3,vm=_a.vm;isVue3?vm.exposed&&vm.exposed.$triggerInput({value:value}):(vm.valueSync=value,vm.$triggerInput({},{value:value}))}},textarea:{input:function(el,value){var _a=getVm(el),isVue3=_a.isVue3,vm=_a.vm;isVue3?vm.exposed&&vm.exposed.$triggerInput({value:value}):(vm.valueSync=value,vm.$triggerInput({},{value:value}))}},"scroll-view":{scrollTo:function(el,x,y){var main=getScrollViewMain(el);main.scrollLeft=x,main.scrollTop=y},scrollTop:function(el){return getScrollViewMain(el).scrollTop},scrollLeft:function(el){return getScrollViewMain(el).scrollLeft},scrollWidth:function(el){return getScrollViewMain(el).scrollWidth},scrollHeight:function(el){return getScrollViewMain(el).scrollHeight}},swiper:{swipeTo:function(el,index){el.__vue__.current=index}},"movable-view":{moveTo:function(el,x,y){el.__vue__._animationTo(x,y)}},switch:{tap:function(el){el.click()}},slider:{slideTo:function(el,value){var vm=el.__vue__,slider=vm.$refs["uni-slider"],offsetWidth=slider.offsetWidth,boxLeft=slider.getBoundingClientRect().left;vm.value=value,vm._onClick({x:(value-vm.min)*offsetWidth/(vm.max-vm.min)+boxLeft})}}};function createTouchList(touchInits){var _a,touches=touchInits.map((function(touch){return function(touch){if(document.createTouch)return document.createTouch(window,touch.target,touch.identifier,touch.pageX,touch.pageY,touch.screenX,touch.screenY);return new Touch(touch)}(touch)}));return document.createTouchList?(_a=document).createTouchList.apply(_a,touches):touches}var WebAdapter={getWindow:function(pageId){return window},getDocument:function(pageId){return document},getEl:function(elementId){var element=elementMap.get(elementId);if(!element)throw Error("element destroyed");return element.element},getOffset:function(node){var rect=node.getBoundingClientRect();return Promise.resolve({left:rect.left+window.pageXOffset,top:rect.top+window.pageYOffset})},querySelector:function(context,selector){return"page"===selector&&(selector="body"),Promise.resolve(transEl(context.querySelector(selector)))},querySelectorAll:function(context,selector){var elements=[],nodeList=document.querySelectorAll(selector);return[].forEach.call(nodeList,(function(node){try{elements.push(transEl(node))}catch(e){}})),Promise.resolve({elements:elements})},queryProperties:function(context,names){return Promise.resolve({properties:names.map((function(name){var value=getDataByPath(context,name.replace(/-([a-z])/g,(function(g){return g[1].toUpperCase()})));return"document.documentElement.scrollTop"===name&&0===value&&(value=getDataByPath(context,"document.body.scrollTop")),value}))})},queryAttributes:function(context,names){return Promise.resolve({attributes:names.map((function(name){return String(context.getAttribute(name))}))})},queryStyles:function(context,names){var style=getComputedStyle(context);return Promise.resolve({styles:names.map((function(name){return style[name]}))})},queryHTML:function(context,type){return Promise.resolve({html:(html="outer"===type?context.outerHTML:context.innerHTML,html.replace(/\n/g,"").replace(/(]*>)(]*>[^<]*<\/span>)(.*?<\/uni-text>)/g,"$1$3").replace(/<\/?[^>]*>/g,(function(replacement){return-1":"