| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <template>
- <web-view :src="h5Url" @message="handleH5Message" style="width: 100vw; height: 100vh;"></web-view>
- </template>
- <script setup lang="ts">
- import { ref, watch } from 'vue'
- import { onLoad } from '@dcloudio/uni-app';
- // 接收参数
- const getCbfbmjump = ref('')
- const pageType = ref('')
- const dsType = ref('')
- // H5 地址(一开始为空,等参数拿到再赋值)
- const h5Url = ref('')
- // ==============================================
- // 🔥 核心修复:等两个参数都拿到,再拼接 URL
- // ==============================================
- watch(
- [getCbfbmjump, pageType, dsType],
- ([cbfbm, type, dsType]) => {
- if (cbfbm && type && dsType) {
- h5Url.value = `http://192.168.110.147:8848/map/index.html?data=${cbfbm}&type=${type}&displayType=${dsType}`
- console.log('✅ 最终 H5 地址:', h5Url.value)
- }
- },
- { immediate: true }
- )
- // ==============================================
- // 接收 H5 数据,正确返回上一页(addLand.vue)
- const handleH5Message = (e) => {
- console.log('收到 H5 回传:', e.detail.data)
- e.detail.data.forEach(item => {
- // 假设你要回传的是地块数据
- if (item.type === 'drawLandFinished' || item.type === 'landSelected') {
- // 延迟一点点,让页面返回成功再赋值
- // setTimeout(() => {
- const pages = getCurrentPages()
- const prevPage = pages[pages.length - 2]
- if (prevPage) {
- prevPage.$vm.selectedLandData = item
- }
- // }, 100)
- }
- })
- }
- // ==============================================
- // 接收上个页面传过来的参数
- // ==============================================
- onLoad((options: any) => {
- console.log(11111111,JSON.parse(decodeURIComponent(options.memberInfo)))
- try {
- if (options.memberInfo) {
- getCbfbmjump.value = JSON.parse(decodeURIComponent(options.memberInfo))
- }
- if (options.type) {
- pageType.value = options.type
- }
- if (options.displayType) {
- dsType.value = options.displayType
- }
- console.log('✅ 解析参数:', getCbfbmjump.value, pageType.value,dsType.value)
- } catch (e) {
- console.log('参数解析失败', e)
- }
- })
- </script>
|