feat: 新增部分页面静态页面
This commit is contained in:
169
pages/user/AuthorizaManage/index.vue
Normal file
169
pages/user/AuthorizaManage/index.vue
Normal file
@@ -0,0 +1,169 @@
|
||||
<template>
|
||||
<s-layout title="设置" class="auth-manage-page">
|
||||
<view class="card">
|
||||
<view class="auth-item" v-for="item in items" :key="item.key" @click="openDialog(item.key)">
|
||||
<text class="label">{{ item.label }}</text>
|
||||
<up-icon name="arrow-right" color="#999" size="20"></up-icon>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<up-popup :show="showPopup" mode="bottom" @close="showPopup = false" :round="12" safeAreaInsetBottom>
|
||||
<view class="popup-body">
|
||||
<view class="title">{{ current.title }}</view>
|
||||
<view class="desc">{{ current.desc }}</view>
|
||||
<view class="btn-row">
|
||||
<up-button plain @click="showPopup = false">再想想</up-button>
|
||||
<up-button type="primary" @click="onGoSetting">去设置</up-button>
|
||||
</view>
|
||||
</view>
|
||||
</up-popup>
|
||||
</s-layout>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive } from 'vue';
|
||||
import sheep from '@/sheep';
|
||||
|
||||
const showPopup = ref(false);
|
||||
const currentKey = ref('');
|
||||
|
||||
const items = [
|
||||
{ key: 'album', label: '相册权限', title: '相册权限', desc: '关闭后,将无法上传相册中的照片或视频,也无法下载作品至你的相册' },
|
||||
{ key: 'camera', label: '相机权限', title: '相机权限', desc: '关闭后,将无法拍摄照片或视频上传' },
|
||||
{ key: 'location', label: '位置权限', title: '位置权限', desc: '关闭后,将无法获取位置信息,影响部分定位功能' },
|
||||
{ key: 'microphone', label: '麦克风权限', title: '麦克风权限', desc: '关闭后,将无法录制语音或视频的声音' },
|
||||
{ key: 'other', label: '其它权限', title: '其它权限', desc: '关闭后,可能影响部分功能的正常使用' },
|
||||
];
|
||||
|
||||
const current = reactive({ title: '', desc: '' });
|
||||
|
||||
function openDialog(key) {
|
||||
currentKey.value = key;
|
||||
const item = items.find((i) => i.key === key) || items[0];
|
||||
current.title = item.title;
|
||||
current.desc = item.desc;
|
||||
showPopup.value = true;
|
||||
}
|
||||
|
||||
function onGoSetting() {
|
||||
// 根据平台尝试申请或打开设置页
|
||||
const key = currentKey.value;
|
||||
// #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU
|
||||
let mpScope = '';
|
||||
if (key === 'album') mpScope = 'scope.writePhotosAlbum';
|
||||
else if (key === 'camera') mpScope = 'scope.camera';
|
||||
else if (key === 'location') mpScope = 'scope.userLocation';
|
||||
else if (key === 'microphone') mpScope = 'scope.record';
|
||||
if (mpScope) {
|
||||
uni.authorize({
|
||||
scope: mpScope,
|
||||
success() {
|
||||
uni.showToast({ title: '授权成功', icon: 'none' });
|
||||
},
|
||||
fail() {
|
||||
// 打开小程序设置页
|
||||
if (uni.openSetting) {
|
||||
uni.openSetting({
|
||||
success() {
|
||||
//
|
||||
},
|
||||
});
|
||||
} else {
|
||||
uni.showToast({ title: '请在系统设置中开启权限', icon: 'none' });
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
// #endif
|
||||
|
||||
// #ifdef H5
|
||||
// H5 无统一设置页,提示用户手动调整
|
||||
uni.showModal({
|
||||
title: current.title,
|
||||
content: '请在浏览器或系统设置中为本应用开启该权限',
|
||||
showCancel: true,
|
||||
confirmText: '知道了',
|
||||
});
|
||||
// #endif
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
// 在 APP 中打开系统设置或应用设置页
|
||||
openAppSetting();
|
||||
// #endif
|
||||
|
||||
showPopup.value = false;
|
||||
}
|
||||
|
||||
// APP 打开应用设置(参考 uview-plus 实现)
|
||||
function openAppSetting() {
|
||||
try {
|
||||
const isIOS = (plus.os.name && plus.os.name.toLowerCase().indexOf('ios') !== -1);
|
||||
if (isIOS) {
|
||||
var UIApplication = plus.ios.import('UIApplication');
|
||||
var application2 = UIApplication.sharedApplication();
|
||||
var NSURL2 = plus.ios.import('NSURL');
|
||||
var setting2 = NSURL2.URLWithString('app-settings:');
|
||||
application2.openURL(setting2);
|
||||
plus.ios.deleteObject(setting2);
|
||||
plus.ios.deleteObject(NSURL2);
|
||||
plus.ios.deleteObject(application2);
|
||||
} else {
|
||||
var Intent = plus.android.importClass('android.content.Intent');
|
||||
var Settings = plus.android.importClass('android.provider.Settings');
|
||||
var Uri = plus.android.importClass('android.net.Uri');
|
||||
var mainActivity = plus.android.runtimeMainActivity();
|
||||
var intent = new Intent();
|
||||
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
||||
var uri = Uri.fromParts('package', mainActivity.getPackageName(), null);
|
||||
intent.setData(uri);
|
||||
mainActivity.startActivity(intent);
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('openAppSetting fail', e);
|
||||
uni.showToast({ title: '打开设置失败,请手动前往系统设置', icon: 'none' });
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.card {
|
||||
background: #fff;
|
||||
border-radius: 12rpx;
|
||||
padding: 6rpx 0;
|
||||
margin: 20rpx;
|
||||
}
|
||||
.auth-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 28rpx 30rpx;
|
||||
border-bottom: 1rpx solid #f0f0f0;
|
||||
}
|
||||
.label {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
.popup-body {
|
||||
padding: 30rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.title {
|
||||
font-size: 30rpx;
|
||||
font-weight: 600;
|
||||
margin-bottom: 18rpx;
|
||||
}
|
||||
.desc {
|
||||
color: #999;
|
||||
font-size: 26rpx;
|
||||
line-height: 36rpx;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.btn-row {
|
||||
display: flex;
|
||||
gap: 18rpx;
|
||||
justify-content: center;
|
||||
}
|
||||
.btn-row up-button {
|
||||
width: 260rpx;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user