9433cfb9创建于 2025年12月31日历史提交
<template>
  <view>
    <page-head :title="title"></page-head>
    <view class="uni-common-mt">
      <form @submit="openLocation">
        <view class="uni-list">
          <view class="uni-list-cell">
            <view class="uni-list-cell-left">
              <view class="uni-label">经度</view>
            </view>
            <view class="uni-list-cell-db">
              <input v-model.number="longitude" class="uni-input" type="text" :disabled="true" />
            </view>
          </view>
          <view class="uni-list-cell">
            <view class="uni-list-cell-left">
              <view class="uni-label">纬度</view>
            </view>
            <view class="uni-list-cell-db">
              <input v-model.number="latitude" class="uni-input" type="text" :disabled="true" />
            </view>
          </view>
          <view class="uni-list-cell">
            <view class="uni-list-cell-left">
              <view class="uni-label">位置名称</view>
            </view>
            <view class="uni-list-cell-db">
              <input v-model="name" class="uni-input" type="text" :disabled="true" />
            </view>
          </view>
          <view class="uni-list-cell">
            <view class="uni-list-cell-left">
              <view class="uni-label">详细位置</view>
            </view>
            <view class="uni-list-cell-db">
              <input v-model="address" class="uni-input" type="text" :disabled="true" />
            </view>
          </view>
        </view>
        <view class="uni-padding-wrap">
          <view class="tips">注意:需要正确配置地图服务商的Key才能正常显示位置</view>
          <view class="uni-btn-v uni-common-mt">
            <button type="primary" formType="submit">查看位置</button>
          </view>
        </view>
      </form>
    </view>
  </view>
</template>
<script lang="uts" setup>
  type DialogPagesNum = {
    value: number
  }

  import {
    state,
    setLifeCycleNum
  } from '@/store/index.uts'

  // 响应式数据
  const title = ref('openLocation')
  const longitude = ref(116.39747)
  const latitude = ref(39.9085)
  const name = ref('天安门')
  const address = ref('北京市东城区东长安街')
  // 自动化测试
  const dialogPagesNum = reactive({ value: -1 } as DialogPagesNum)

  // 生命周期钩子
  onPageShow(() => {
    console.log("Page Show")
    // 自动化测试
    setLifeCycleNum(state.lifeCycleNum + 1)
  })

  onPageHide(() => {
    console.log("Page Hide")
    // 自动化测试
    setLifeCycleNum(state.lifeCycleNum - 1)
  })

  // 自动化测试
  const test = () => {
    const pages = getCurrentPages()
    const page = pages[pages.length - 1]
    // #ifdef APP || WEB
    const dialogPages = page.getDialogPages()
    dialogPagesNum.value = dialogPages.length
    // #endif
  }

  // 方法
  const openLocation = () => {
    uni.openLocation({
      longitude: longitude.value,
      latitude: latitude.value,
      name: name.value,
      address: address.value
    })
    // 自动化测试
    setTimeout(() => {
      test()
    }, 500)
  }

  // 自动化测试
  const pageSetLifeCycleNum = (value: number) => {
    setLifeCycleNum(value)
  }

  // 自动化测试
  const getLifeCycleNum = (): number => {
    return state.lifeCycleNum
  }

  defineExpose({
    dialogPagesNum,
    openLocation,
    pageSetLifeCycleNum,
    getLifeCycleNum,
  })
</script>

<style>
  .uni-list-cell-left {
    padding: 0 15px;
  }

  .tips {
    font-size: 12px;
    margin-top: 15px;
    opacity: .8;
  }
</style>