文件
OmniCard/mpuniapp/pages/API/phoneContact/chooseContact.uvue

141 行
4.3 KiB
Plaintext

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<template>
<!-- #ifdef APP -->
<scroll-view style="flex: 1;padding: 6px;">
<!-- #endif -->
<text class="uni-h2">联系人选择 uni.chooseContact</text>
<text>调用系统的联系人选择界面</text>
<text class="uni-h3">快捷操作</text>
<text class="margin-v">调用状态:{{ invokeState }}</text>
<button class="margin-v" @tap="choosePhoneContact">选择联系人</button>
<button class="margin-v" @tap="clearResult">清空结果</button>
<button class="margin-v" @tap="clearLogs">清空日志</button>
<text class="uni-h3">选择结果</text>
<text class="field-label">displayName</text>
<text class="log-text">{{ displayName }}</text>
<text class="field-label">phoneNumber</text>
<text class="log-text">{{ phoneNumber }}</text>
<text class="field-label">phoneNumberList({{ phoneNumberList.length }})</text>
<view class="log-list" v-if="phoneNumberList.length > 0">
<text class="log-item" v-for="item in phoneNumberList" :key="item">{{ item }}</text>
</view>
<text class="log-text" v-else>尚未返回手机号列表</text>
<text class="uni-h3">回调信息</text>
<text class="margin-v">success:{{ successText }}</text>
<text class="margin-v">fail:{{ failText }}</text>
<text class="margin-v">complete:{{ completeText }}</text>
<text class="uni-h3">最近日志</text>
<view class="log-list" v-if="logs.length > 0">
<text class="log-item" v-for="item in logs" :key="item">{{ item }}</text>
</view>
<text class="log-text" v-else>暂无日志</text>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif -->
</template>
<script setup lang="uts">
const invokeState = ref<string>('尚未调用')
const displayName = ref<string>('尚未选择联系人')
const phoneNumber = ref<string>('尚未选择手机号')
const phoneNumberList = ref<Array<string>>(new Array<string>())
const successText = ref<string>('尚未触发')
const failText = ref<string>('尚未触发')
const completeText = ref<string>('尚未触发')
const logs = ref<Array<string>>(new Array<string>())
function appendLog(text : string) : void {
logs.value.unshift(`${Date.now()} ${text}`)
if (logs.value.length > 10) {
logs.value.pop()
}
}
function resetCallbackTexts() : void {
successText.value = '尚未触发'
failText.value = '尚未触发'
completeText.value = '尚未触发'
}
function clearResult() : void {
invokeState.value = '尚未调用'
displayName.value = '尚未选择联系人'
phoneNumber.value = '尚未选择手机号'
phoneNumberList.value = new Array<string>()
resetCallbackTexts()
appendLog('已清空 chooseContact 结果')
}
function clearLogs() : void {
logs.value = new Array<string>()
}
function describeComplete(result : ChooseContactComplete) : string {
if (result instanceof UniError) {
return `${result.errMsg} (${result.errCode})`
}
const successResult = result as ChooseContactSuccess
return `${successResult.errMsg} / ${successResult.displayName} / ${successResult.phoneNumber}`
}
function choosePhoneContact() : void {
invokeState.value = '调用中'
resetCallbackTexts()
appendLog('开始调用 chooseContact')
uni.chooseContact({
success: (result : ChooseContactSuccess) => {
invokeState.value = 'success'
displayName.value = result.displayName
phoneNumber.value = result.phoneNumber
phoneNumberList.value = result.phoneNumberList
successText.value = `${result.errMsg} / ${result.displayName} / ${result.phoneNumber}`
failText.value = '本次未触发'
appendLog(`chooseContact success ${result.displayName} ${result.phoneNumber}`)
},
fail: (err : ChooseContactFail) => {
invokeState.value = 'fail'
failText.value = `${err.errMsg} (${err.errCode})`
appendLog(`chooseContact fail ${err.errMsg}`)
},
complete: (result : ChooseContactComplete) => {
completeText.value = describeComplete(result)
appendLog(`chooseContact complete ${completeText.value}`)
}
})
}
</script>
<style>
.margin-v {
margin: 5px 0;
}
.field-label {
margin-top: 6px;
font-size: 14px;
}
.log-text {
margin: 5px 0;
padding: 10px;
font-size: 14px;
border: 1px solid #ccc;
}
.log-list {
margin: 5px 0;
padding: 10px;
border: 1px solid #ccc;
display: flex;
flex-direction: column;
}
.log-item {
font-size: 14px;
margin: 4px 0;
}
</style>