From 6ef1b14f735acdc3ff77a50da1bb09a5bb983dcc Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期三, 28 五月 2025 17:37:06 +0800
Subject: [PATCH] location,userinfo
---
composables/useLocation.ts | 55 +++++
pages/home/home.vue | 20 -
sub-pages/mine/settings.vue | 17 +
pages/login/login.vue | 4
pages/home/home-main.vue | 7
pages.json | 4
composables/useNavigator.ts | 52 +++++
plugins/http.js | 6
components/footer/customer-footer.vue | 11
store/index.ts | 6
manifest.json | 16 +
pages/home/community.vue | 275 ++++++++++++++++-----------
package.json | 2
main.js | 13 -
components/tabbar/top-tab-bar.vue | 2
sub-pages/mine/index.vue | 46 +++
store/user.ts | 13 +
17 files changed, 378 insertions(+), 171 deletions(-)
diff --git a/components/footer/customer-footer.vue b/components/footer/customer-footer.vue
index 423802c..f0a56cb 100644
--- a/components/footer/customer-footer.vue
+++ b/components/footer/customer-footer.vue
@@ -19,6 +19,8 @@
<script setup lang="ts">
import { ref, computed } from 'vue'
+import { useNavigator } from '@/composables/useNavigator'
+const { navigateTo, reLaunchTo} = useNavigator()
interface TabItem {
text: string
@@ -57,9 +59,12 @@
})
function go(index: number, item: TabItem) {
- uni.reLaunch({
- url: item.pagePath,
- })
+ // uni.reLaunch({
+ // url: item.pagePath,
+ // })
+
+ reLaunchTo(item.pagePath)
+
}
</script>
diff --git a/components/tabbar/top-tab-bar.vue b/components/tabbar/top-tab-bar.vue
index 82f73e1..014447a 100644
--- a/components/tabbar/top-tab-bar.vue
+++ b/components/tabbar/top-tab-bar.vue
@@ -16,7 +16,7 @@
<!-- 左侧图标 + 标题 -->
<view class="left">
<up-icon name="/static/images/tabbar/line-Film.png" size="40rpx" color="#fff" />
- <text class="title">光影旅程</text>
+ <text class="title">影途</text>
</view>
<!-- 右侧按钮 -->
diff --git a/composables/useLocation.ts b/composables/useLocation.ts
new file mode 100644
index 0000000..cacb128
--- /dev/null
+++ b/composables/useLocation.ts
@@ -0,0 +1,55 @@
+import { ref } from 'vue'
+import http from '@/plugins/http.js'
+import { useUserStore } from '../store/user'
+
+const userStore = useUserStore()
+export function useLocation() {
+ const latitude = ref<number | null>(null)
+ const longitude = ref<number | null>(null)
+ const error = ref<string | null>(null)
+ const address = ref<string | null>(null)
+ const province= ref<string | null>(null)
+
+ const getLocation = () => {
+ uni.getLocation({
+ type: 'wgs84',
+ geocode: true,
+ success: async (res:any) => {
+ latitude.value = res.latitude
+ longitude.value = res.longitude
+ const {
+ code,data
+ } = await http.request('get', '/api/pub/customer/home/address/parse', {
+ data: {},
+ params: {
+ // https://apis.map.qq.com/ws/geocoder/v1/?location=39.984154,116.307490&key=[你的key]&get_poi=1
+ location:`${res.latitude},${res.longitude}`
+ }
+ })
+
+ if (data && data.result && data.result.ad_info) {
+ address.value = data.result.address
+ province.value = data.result.ad_info.province
+ console.log("省的值",province.value )
+ // 更新地址信息到缓存中
+ userStore.updateAddress(data.result)
+ }
+ },
+ fail: (err:any) => {
+ error.value = '获取位置失败:' + (err.errMsg || '未知错误')
+ },
+ complete: function () {
+ console.log('getLocation 请求已完成');
+ }
+ })
+ }
+
+ return {
+ latitude,
+ longitude,
+ address,
+ province,
+ error,
+ getLocation
+ }
+}
diff --git a/composables/useNavigator.ts b/composables/useNavigator.ts
new file mode 100644
index 0000000..d2e5ad8
--- /dev/null
+++ b/composables/useNavigator.ts
@@ -0,0 +1,52 @@
+import { useUserStore } from '@/store/user'
+
+export const useNavigator = () => {
+ const userStore = useUserStore()
+ // 黑名单列表:未登录时禁止访问这些路径
+ const loginRequiredRoutes = [
+ '/sub-pages/mine/settings',
+ '/pages/settings/index',
+ '/sub-pages/mine/index',
+ ]
+
+ const navigateTo = (url: string) => {
+ const isLogin = userStore.hasLogin
+ const noQueryUrl = url.split('?')[0]
+
+ if (!isLogin && loginRequiredRoutes.includes(noQueryUrl)) {
+ uni.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+
+ uni.navigateTo({ url })
+ }
+
+ const reLaunchTo = (url: string) => {
+
+ const isLogin = userStore.hasLogin
+ const noQueryUrl = url.split('?')[0]
+
+ if (!isLogin && loginRequiredRoutes.includes(noQueryUrl)) {
+ uni.navigateTo({
+ url: '/pages/login/login'
+ })
+ return
+ }
+
+ uni.reLaunch({ url })
+ }
+
+ const toProtocol = (title: string) => {
+ uni.navigateTo({
+ url: `/sub-pages/protocol/protocol?title=${encodeURIComponent(title)}`
+ })
+ }
+
+ return {
+ navigateTo,
+ reLaunchTo,
+ toProtocol
+ }
+}
diff --git a/main.js b/main.js
index 226f769..25e2fac 100644
--- a/main.js
+++ b/main.js
@@ -6,18 +6,6 @@
import http from './plugins/http.js'
// import store from './store/index.js'
-// #ifndef VUE3
-import Vue from 'vue'
-import './uni.promisify.adaptor'
-Vue.config.productionTip = false
-App.mpType = 'app'
-const app = new Vue({
- ...App
-})
-app.$mount()
-// #endif
-
-// #ifdef VUE3
import {
createSSRApp
} from 'vue'
@@ -99,4 +87,3 @@
app
}
}
-// #endif
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 82d8aa6..3cc00b3 100644
--- a/manifest.json
+++ b/manifest.json
@@ -50,12 +50,22 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
- "appid" : "wx1441324401626290",
- // "appid" : "wxede6e3ad8e89693a",
+ // "appid" : "wx1441324401626290",
+ "appid" : "wxf2e5534be77e3a80",
"setting" : {
- "urlCheck" : false
+ "urlCheck" : false,
+ "es6" : true,
+ "minified" : true
},
"usingComponents" : true,
+ "permission" : {
+ "scope.userLocation" : {
+ "desc" : "获取当前位置功能"
+ }
+ },
+ "requiredPrivateInfos" : [ "chooseLocation", "getLocation" ],
+ "plugins": {},
+ "lazyCodeLoading": "requiredComponents",
"mergeVirtualHostAttributes" : true
},
"mp-alipay" : {
diff --git a/package.json b/package.json
index 7b5615c..2f686c9 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"uni-app": {
"scripts": {
"film": {
- "title": "光影",
+ "title": "影途",
"BROWSER": "Chrome",
"env": {
"UNI_PLATFORM": "mp-weixin",
diff --git a/pages.json b/pages.json
index ab98945..b3ecbda 100644
--- a/pages.json
+++ b/pages.json
@@ -12,7 +12,7 @@
{
"path": "pages/home/home",
"style": {
- "navigationBarTitleText": "片场",
+ "navigationBarTitleText": "影途",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}
@@ -118,7 +118,7 @@
],
"globalStyle": {
"navigationBarTextStyle": "black",
- "navigationBarTitleText": "片场",
+ "navigationBarTitleText": "影途",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
},
diff --git a/pages/home/community.vue b/pages/home/community.vue
index ba2bb99..f1e4cb8 100644
--- a/pages/home/community.vue
+++ b/pages/home/community.vue
@@ -1,119 +1,168 @@
<template>
- <view class="post-card">
- <!-- 用户信息 -->
- <view class="user-info">
- <up-avatar :src="avatar" size="80rpx" shape="circle" />
- <view class="user-text">
- <text class="nickname">{{ nickname }}</text>
- <text class="time">{{ time }}</text>
- </view>
+ <view class="post-card">
+ <!-- 用户信息 -->
+ <view class="user-info">
+ <up-avatar :src="avatar" size="80rpx" shape="circle" />
+ <view class="user-text">
+ <text class="nickname">{{ nickname }}</text>
+ <text class="time">{{ time }}</text>
</view>
-
- <view class="inner-content">
- <!-- 内容图片 -->
- <image class="main-image" :src="image" mode="aspectFill" />
-
- <!-- 描述内容 -->
- <view class="description">
- {{ content }}
+ </view>
+
+ <view class="inner-content">
+ <!-- 内容图片 -->
+ <image class="main-image" :src="image" mode="aspectFill" />
+ <!-- <image class="main-image" :src="image" mode="aspectFit" /> -->
+ <!-- <image class="main-image" :src="image" mode="scaleToFill" /> -->
+ <!-- <view class="main-image-wrapper" :style="{ backgroundImage: `url(${image})` }"></view> -->
+ <!-- 下面图片可以展示完全,但是拉伸变得模糊 -->
+ <!-- <image :src="image" class="main-image" ></image> -->
+ <!-- <up-image :show-loading="true" :src="image" width="100%" shape="square"></up-image> -->
+ <!-- 动态计算高度:能够展示完全,高度会拉伸很高 -->
+ <!-- <up-image v-if="imageHeight > 0" :src="image" width="100%" :height="imageHeight + 'px'" shape="square"
+ :show-loading="true" /> -->
+ <!-- 描述内容 -->
+ <view class="description">
+ {{ content }}
+ </view>
+
+ <!-- 底部操作栏 -->
+ <view class="footer">
+ <view class="action">
+ <up-icon name="heart-fill" size="30rpx" color="#fff" />
+ <text class="count">{{ likeCount }}</text>
</view>
-
- <!-- 底部操作栏 -->
- <view class="footer">
- <view class="action">
- <up-icon name="heart-fill" size="30rpx" color="#fff" />
- <text class="count">{{ likeCount }}</text>
- </view>
- <view class="action">
- <up-icon name="chat-fill" size="30rpx" color="#fff" />
- <text class="count">{{ commentCount }}</text>
- </view>
- <view class="action">
- <up-icon name="share" size="30rpx" color="#fff" />
- </view>
+ <view class="action">
+ <up-icon name="chat-fill" size="30rpx" color="#fff" />
+ <text class="count">{{ commentCount }}</text>
+ </view>
+ <view class="action">
+ <up-icon name="share" size="30rpx" color="#fff" />
</view>
</view>
</view>
- </template>
-
- <script setup lang="ts">
- interface Props {
- avatar?: string;
- nickname?: string;
- time?: string;
- image?: string;
- content?: string;
- likeCount?: number | string;
- commentCount?: number | string;
- }
-
- const props = defineProps<Props>();
- </script>
-
- <style scoped lang="scss">
- .post-card {
- background-color: #1e1e1e;
- border-radius: 24rpx;
- padding: 10rpx;
- color: #fff;
- font-size: 28rpx;
- margin-top: 20rpx;
- }
-
- .user-info {
- margin: 20rpx 30rpx;
- display: flex;
- align-items: center;
- }
-
- .user-text {
- font-size: 24rpx;
- margin-left: 16rpx;
- }
-
- .nickname {
- font-weight: bold;
- display: block;
- }
-
- .time {
- font-size: 18rpx;
- color: #aaa;
- }
-
- .inner-content {
- margin: 0 20rpx;
- }
-
- .main-image {
- width: 100%;
- height: 250rpx;
- border-radius: 24rpx;
- }
-
- .description {
- margin: 20rpx 0;
- font-size: 24rpx;
- font-weight: bold;
- color: #ddd;
- letter-spacing: 2rpx;
- }
-
- .footer {
- display: flex;
- justify-content: space-between;
- align-items: center;
- }
-
- .action {
- display: flex;
- align-items: center;
- }
-
- .count {
- margin-left: 10rpx;
- font-size: 26rpx;
- color: #ccc;
- }
- </style>
-
\ No newline at end of file
+ </view>
+</template>
+
+<script setup lang="ts">
+import { ref, watch,onMounted } from 'vue'
+import { onReady } from '@dcloudio/uni-app'
+
+interface Props {
+ avatar?: string;
+ nickname?: string;
+ time?: string;
+ image?: string;
+ content?: string;
+ likeCount?: number | string;
+ commentCount?: number | string;
+}
+
+const props = defineProps<Props>();
+const imageHeight = ref(0)
+
+const computeImageHeight = (src?: string) => {
+ if (!src) return
+ uni.getImageInfo({
+ src,
+ success: (res) => {
+ const screenWidth = uni.getSystemSetting().windowWidth
+ imageHeight.value = screenWidth * (res.height / res.width)
+ },
+ fail: () => {
+ console.warn('获取图片信息失败')
+ }
+ })
+}
+
+watch(
+ () => props.image,
+ (newImage) => {
+ if (!newImage) return
+ computeImageHeight(newImage)
+ },
+ { immediate: true }
+)
+
+onReady(() => {
+ computeImageHeight(props.image)
+})
+</script>
+
+<style scoped lang="scss">
+.post-card {
+ background-color: #1e1e1e;
+ border-radius: 24rpx;
+ padding: 10rpx;
+ color: #fff;
+ font-size: 28rpx;
+ margin-top: 20rpx;
+}
+
+.user-info {
+ margin: 20rpx 30rpx;
+ display: flex;
+ align-items: center;
+}
+
+.user-text {
+ font-size: 24rpx;
+ margin-left: 16rpx;
+}
+
+.nickname {
+ font-weight: bold;
+ display: block;
+}
+
+.time {
+ font-size: 18rpx;
+ color: #aaa;
+}
+
+.inner-content {
+ margin: 0 20rpx;
+}
+
+.main-image {
+ width: 100%;
+ height: 250rpx;
+ border-radius: 24rpx;
+}
+
+.description {
+ margin: 20rpx 0;
+ font-size: 24rpx;
+ font-weight: bold;
+ color: #ddd;
+ letter-spacing: 2rpx;
+}
+
+.footer {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.action {
+ display: flex;
+ align-items: center;
+}
+
+.count {
+ margin-left: 10rpx;
+ font-size: 26rpx;
+ color: #ccc;
+}
+
+.main-image-wrapper {
+ width: 100%;
+ width: 500px;
+ height: 200px;
+ /* 你可以根据需求自适应设置 */
+ background-size: contain;
+ /* 保证完整显示 */
+ background-repeat: no-repeat;
+ background-position: center;
+}
+</style>
\ No newline at end of file
diff --git a/pages/home/home-main.vue b/pages/home/home-main.vue
index 7c16251..3e545c6 100644
--- a/pages/home/home-main.vue
+++ b/pages/home/home-main.vue
@@ -1,6 +1,7 @@
<template>
<view>
- <view class="card" v-if="!showVideo">
+ <!-- <view class="card" v-if="!showVideo"> -->
+ <view class="card">
<view class="main-title">每一帧画面,都藏着一个等待探索的世界</view>
<view class="sub-title">
从经典场景到幕后故事,开启你的专属影视朝圣之旅
@@ -39,7 +40,7 @@
</view>
<!-- 视频播放区域 -->
- <view v-else class="video-wrapper">
+ <!-- <view v-else class="video-wrapper">
<video
:src="currentVideo"
controls
@@ -47,7 +48,7 @@
@ended="onVideoEnd"
style="width: 100%; height: 400rpx;"
></video>
- </view>
+ </view> -->
</view>
</template>
diff --git a/pages/home/home.vue b/pages/home/home.vue
index 5288e11..012b8ac 100644
--- a/pages/home/home.vue
+++ b/pages/home/home.vue
@@ -43,11 +43,7 @@
<Community v-for="(item, index) in communitys" :key="index" :avatar="item.avatar" :nickname="item.nickname"
:time="formatRelativeTime(item.createTime)" :image="item.coverUrl" :content="item.coverAlt"
:likeCount="item.likeCount" :commentCount="item.commentCount" />
- <view class="more">
- <!-- <view v-if="loadingCommunity">加载中...</view>
- <view v-if="noMoreCommunity">没有更多了</view> -->
- <up-loadmore :status="communityStatus" />
- </view>
+ <up-loadmore :status="communityStatus" :line="true" />
<view style="height: 300rpx;"></view>
</view>
@@ -57,7 +53,7 @@
<script setup lang="ts">
import { ref, computed, onMounted } from 'vue'
-import { onShow, onPullDownRefresh,onReachBottom } from '@dcloudio/uni-app'
+import { onShow, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
import HomeMain from './home-main.vue'
import TripCard from './trip-card.vue'
@@ -146,18 +142,18 @@
// 内容精选
getContentSelected()
// 光影社区
- communityPage.value=1
+ communityPage.value = 1
getCommunitys()
uni.stopPullDownRefresh() // 停止下拉刷新动画
})
-onReachBottom(()=>{
+onReachBottom(() => {
console.log('用户触底了')
getCommunitys()
})
const getContentSelected = async () => {
- tripCardList.value = await getFilmWorks(FilmWorksCategory.CONTENT_SELECTED, 20,1);
+ tripCardList.value = await getFilmWorks(FilmWorksCategory.CONTENT_SELECTED, 20, 1);
}
@@ -167,7 +163,7 @@
const getCommunitys = async () => {
- if (communityStatus.value==='nomore') return
+ if (communityStatus.value === 'nomore') return
communityStatus.value = 'loading'
@@ -191,10 +187,10 @@
}
}
const getCommunitys_bak = async () => {
- communitys.value = await getFilmWorks(FilmWorksCategory.COMMUNITY, 10,1);
+ communitys.value = await getFilmWorks(FilmWorksCategory.COMMUNITY, 10, 1);
}
// 内容精选
-const getFilmWorks = async (type: String, pageSize: Number,currentPage: Number) => {
+const getFilmWorks = async (type: String, pageSize: Number, currentPage: Number) => {
const {
code, data
} = await $http.request('get', '/api/filmWorks/list', {
diff --git a/pages/login/login.vue b/pages/login/login.vue
index a926a9a..1fae60e 100644
--- a/pages/login/login.vue
+++ b/pages/login/login.vue
@@ -6,7 +6,7 @@
</view>
<view class="logo-container">
- <text class="app-name">光影</text>
+ <text class="app-name">影途</text>
<text class="subtitle">登录后,体验更多功能</text>
</view>
@@ -148,7 +148,7 @@
}
})
if (code == 0) {
- debugger;
+
// 获取手机号码后,实现微信登录
const phoneNumber = data.phone_info.phoneNumber;
const purePhoneNumber = data.phone_info.purePhoneNumber;
diff --git a/plugins/http.js b/plugins/http.js
index 9d895af..3ede604 100644
--- a/plugins/http.js
+++ b/plugins/http.js
@@ -114,12 +114,12 @@
// #ifdef PUB_CUSTOMER
uni.reLaunch({
- url: '/pages/user/supplier-user'
+ url: '/pages/login/login'
})
// #endif
// #ifndef PUB_CUSTOMER
uni.reLaunch({
- url: '/pages/login/supplier-login'
+ url: '/pages/login/login'
})
// #endif
reject({
@@ -165,7 +165,7 @@
// #endif
// #ifndef PUB_CUSTOMER
uni.reLaunch({
- url: '/pages/login/supplier-login'
+ url: '/pages/login/login'
})
// #endif
reject({
diff --git a/store/index.ts b/store/index.ts
index 9ea779f..fd4b0e4 100644
--- a/store/index.ts
+++ b/store/index.ts
@@ -1,9 +1,9 @@
// stores/user.ts
import { defineStore } from 'pinia'
import { ref } from 'vue'
-import http from '@/plugins/http.js' // 请替换成你实际的 http 封装路径
-import storage from '@/plugins/storage' // 同样替换为你的封装路径
-import message from '@/plugins/message' // 你使用的消息组件封装
+import http from '@/plugins/http.js'
+import storage from '@/plugins/storage'
+import message from '@/plugins/message'
import { WechatLoginData } from '@/types/index'
diff --git a/store/user.ts b/store/user.ts
index 61a39ea..57b723e 100644
--- a/store/user.ts
+++ b/store/user.ts
@@ -11,6 +11,7 @@
const hasLogin = ref(false)
const isBind = ref(false)
const userInfo = ref<any>(null)
+ const address = ref<any>(null)
async function getCurrentInfo() {
const currentInfo = await http.request('get', '/api/current/user', {})
@@ -75,14 +76,26 @@
hasLogin.value = false
}
}
+
+
+ function updateAddress(addressParam:any) {
+
+ // 合并新信息到 userInfo 中
+ console.log("addressParam",addressParam)
+ address.value = addressParam
+ // 如果你有持久化,这里也同步一下
+ // storage.setItem('userInfo', userInfo.value)
+ }
return {
hasLogin,
isBind,
userInfo,
+ address,
loginwx,
getCurrentInfo,
initLoginState,
+ updateAddress,
}
})
diff --git a/sub-pages/mine/index.vue b/sub-pages/mine/index.vue
index fd50fa0..6a80c45 100644
--- a/sub-pages/mine/index.vue
+++ b/sub-pages/mine/index.vue
@@ -12,16 +12,18 @@
<view class="profile-content">
<view class="profile-header">
<view class="avatar-container">
- <image class="avatar" src="https://ai-public.mastergo.com/ai/img_res/e8ae645c666c247b895b488e60b048f5.jpg"
- mode="aspectFill" />
+ <image v-if="userStore.userInfo.customerDTO.cover" class="avatar"
+ :src="userStore.userInfo.customerDTO.cover" mode="aspectFill" />
+ <image v-else class="avatar"
+ src="https://ai-public.mastergo.com/ai/img_res/e8ae645c666c247b895b488e60b048f5.jpg" mode="aspectFill" />
<view class="add-icon">
<up-icon name="plus" size="20rpx" color="#333" />
</view>
</view>
<view class="user-info">
- <view class="username">小红薯 6786F040</view>
- <view class="user-id">小红书号:95619601810</view>
- <view class="location">IP 属地:江苏</view>
+ <view class="username">影途 {{ userStore?.userInfo?.customerDTO?.name }}</view>
+ <view class="user-id">影途号:{{ userStore?.userInfo?.customerDTO?.id }}</view>
+ <view class="location">IP 属地:{{ userStore.address?.ad_info?.province }}</view>
</view>
</view>
@@ -45,7 +47,7 @@
<view class="action-buttons">
<up-button text="编辑资料" size="mini" type="info" plain hairline
:custom-style="{ backgroundColor: 'transparent', borderColor: '#B1ABA9' }" />
- <up-icon name="setting" size="40rpx" />
+ <up-icon name="setting" size="40rpx" @click="gotoUrl('/sub-pages/mine/settings')" />
</view>
</view>
</view>
@@ -84,8 +86,38 @@
</template>
<script setup lang="ts">
-import { ref, computed } from 'vue';
+import { ref, computed, watch } from 'vue';
+import { onShow } from '@dcloudio/uni-app'
import SettingPopup from '@/components/setting/setting-popup.vue';
+import { usePlatformLoginType } from '@/composables/usePlatformLoginType'
+import { useUserStore } from '@/store/user'
+import { useLocation } from '@/composables/useLocation'
+import { useNavigator } from '@/composables/useNavigator'
+
+const { apitype } = usePlatformLoginType()
+const userStore = useUserStore()
+const { navigateTo } = useNavigator()
+const {getLocation,province } = useLocation()
+
+
+const gotoUrl = (url: string) => {
+ navigateTo(url)
+}
+
+watch(
+ () => userStore.userInfo, // 监听 userInfo 这个响应式属性
+ (newVal, oldVal) => {
+ console.log('userInfo 发生变化:', newVal)
+ },
+ { deep: true } // 如果 userInfo 是对象,需要深度监听其属性变化
+)
+
+onShow(() => {
+ console.log('我的')
+ getLocation()
+});
+
+
// 当前 tab 索引
const current = ref(0);
diff --git a/sub-pages/mine/settings.vue b/sub-pages/mine/settings.vue
index cacaa03..0770cc1 100644
--- a/sub-pages/mine/settings.vue
+++ b/sub-pages/mine/settings.vue
@@ -41,12 +41,12 @@
<!-- 法律文案 -->
<view class="portotal-actions">
<view class="action-row">
- <up-text size="10" :bold="true" text="《个人信息收集清单》" color="#38516E" />
- <up-text size="10" :bold="true" text="《第三方信息共享清单》" color="#38516E" />
+ <up-text size="10" :bold="true" text="《个人信息收集清单》" @click="toPortotalUni('个人信息收集清单')" color="#38516E" />
+ <up-text size="10" :bold="true" text="《第三方信息共享清单》" @click="toPortotalUni('个人信息收集清单')" color="#38516E" />
</view>
<view class="action-row">
- <up-text size="10" :bold="true" text="《用户服务协议》" color="#38516E" />
- <up-text size="10" :bold="true" text="《用户隐私政策》" color="#38516E" />
+ <up-text size="10" :bold="true" text="《用户服务协议》" @click="toPortotalUni('用户协议')" color="#38516E" />
+ <up-text size="10" :bold="true" text="《用户隐私政策》" @click="toPortotalUni('隐私政策')" color="#38516E" />
</view>
</view>
</view>
@@ -54,6 +54,13 @@
<script setup lang="ts">
import { ref } from 'vue'
+ import { useNavigator } from '@/composables/useNavigator'
+ const { toProtocol } = useNavigator()
+
+
+const toPortotalUni = (title:string) => {
+ toProtocol(title)
+}
// 菜单项类型定义
interface MenuItem {
@@ -148,7 +155,7 @@
.portotal-actions {
margin-top: 30rpx;
- margin-bottom: 100rpx;
+ margin-bottom: 200rpx;
display: flex;
flex-direction: column;
align-items: center;
--
Gitblit v1.9.3