调试接口
This commit is contained in:
12
env/.env
vendored
12
env/.env
vendored
@ -1,5 +1,5 @@
|
||||
VITE_APP_TITLE = '茶艺师管理端'
|
||||
VITE_APP_PORT = 9003
|
||||
VITE_APP_PORT = 9002
|
||||
|
||||
VITE_UNI_APPID = '__UNI__932EB7D'
|
||||
VITE_WX_APPID = 'wx1a89a1b47d08b83e'
|
||||
@ -10,17 +10,17 @@ VITE_APP_PUBLIC_BASE=/
|
||||
# 登录页面
|
||||
VITE_LOGIN_URL = '/pages/login/login'
|
||||
# 第一个请求地址
|
||||
VITE_SERVER_BASEURL = 'https://76458.com'
|
||||
VITE_SERVER_BASEURL = 'https://cz.stnav.com'
|
||||
|
||||
VITE_UPLOAD_BASEURL = 'https://76458.com/upload'
|
||||
VITE_UPLOAD_BASEURL = 'https://cz.stnav.com/upload'
|
||||
|
||||
# h5是否需要配置代理
|
||||
VITE_APP_PROXY=true
|
||||
VITE_APP_PROXY_PREFIX = '/storeapi'
|
||||
|
||||
# 第二个请求地址 (目前alova中可以使用)
|
||||
VITE_SERVER_BASEURL = 'https://76458.com'
|
||||
VITE_SERVER_BASEURL = 'https://cz.stnav.com'
|
||||
|
||||
# 上传图片请求地址
|
||||
VITE_UPLOAD_BASEURL = 'https://76458.com/storeapi/upload/image'
|
||||
VITE_UPLOAD_IMAGE_URL = 'https://76458.com/'
|
||||
VITE_UPLOAD_BASEURL = 'https://cz.stnav.com/storeapi/upload/image'
|
||||
VITE_UPLOAD_IMAGE_URL = 'https://cz.stnav.com/'
|
||||
@ -43,7 +43,7 @@ export function login(loginForm: ILoginForm) {
|
||||
* @param loginForm 登录表单
|
||||
*/
|
||||
export function mobileLogin(loginForm: IMobileLoginForm) {
|
||||
return http.Post<IUserLogin>('/storeapi/storeLogin/account',
|
||||
return http.Post<IUserLogin>('/teamapi/TeamLogin/account',
|
||||
loginForm,
|
||||
{
|
||||
meta: { ignoreAuth: true } // 忽略认证
|
||||
@ -51,19 +51,11 @@ export function mobileLogin(loginForm: IMobileLoginForm) {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
*/
|
||||
export function getUserInfo() {
|
||||
return http.Post<IUserInfoVo>('/storeapi/user/info')
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
*/
|
||||
export function logout() {
|
||||
return http.Post('/storeapi/storeLogin/logout')
|
||||
}
|
||||
return http.Post('/teamapi/TeamLogin/logout')}
|
||||
|
||||
/**
|
||||
* 获取微信登录凭证
|
||||
|
||||
@ -3,14 +3,6 @@ import type { IUserAddressListResult, IUserAddressDetailsResult, IUserCouponList
|
||||
import type { IOrderListResult } from '@/api/types/teaSpecialist-order'
|
||||
import type { IUserResult } from '@/api/types/user'
|
||||
|
||||
|
||||
/**
|
||||
* 获取用户个人信息
|
||||
*/
|
||||
export function getUserInfo() {
|
||||
return http.Post<IUserResult>('/storeapi/user/info')
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户信息
|
||||
*/
|
||||
@ -27,6 +19,14 @@ export function updateUserInfo(data: IUpdateUserInfoParams) {
|
||||
return http.Post('/storeapi/user/updateUser', data)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
*/
|
||||
export function getUserInfo() {
|
||||
return http.Post<any>('/teamapi/user/info')
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取流水明细
|
||||
*/
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<!-- 使用 type="home" 属性设置首页,其他页面不需要设置,默认为page -->
|
||||
<route lang="jsonc" type="home">{
|
||||
"layout": "tabbar",
|
||||
"needLogin": false,
|
||||
"needLogin": true,
|
||||
"style": {
|
||||
// 'custom' 表示开启自定义导航栏,默认 'default'
|
||||
"navigationStyle": "custom",
|
||||
@ -12,27 +12,11 @@
|
||||
<template>
|
||||
<view class="home-bg pb-200rpx">
|
||||
<!-- 顶部导航栏 -->
|
||||
<!-- <view class="navbar-wrapper" :style="{ paddingTop: `${statusBarHeight}px` }">
|
||||
<view class="navbar-content">
|
||||
<view class="greeting-text">
|
||||
你好, {{ userInfo.nickname || '茶艺师' }}
|
||||
</view>
|
||||
<view class="navbar-icons">
|
||||
<view class="icon-btn" @click="handleMenuClick">
|
||||
<image class="menu-icon" :src="menuIcon" mode="aspectFit" />
|
||||
</view>
|
||||
<view class="icon-btn" @click="router.navigateTo('/pages/my/my')">
|
||||
<wd-img width="48rpx" height="48rpx"
|
||||
:src="userInfo.avatar || `${OSS}images/store/my/image1.png`" mode="aspectFill" round />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="home-bg w-[100%] fixed top-0 left-0 z-100">
|
||||
<wd-navbar safeAreaInsetTop :bordered="false" custom-style="background-color: transparent !important;">
|
||||
<template #left>
|
||||
<view class="flex items-center line-1 w-450rpx" @click="router.navigateTo('/bundle/account/switch')">
|
||||
<view class="mr-10rpx font-400 leading-44rpx text-32rpx pl-10rpx line-1">你好123, {{ userInfo.nickname || '茶艺师' }}</view>
|
||||
<view class="mr-10rpx font-400 leading-44rpx text-32rpx pl-10rpx line-1">你好, {{ userInfo.nickname || '茶艺师' }}</view>
|
||||
</view>
|
||||
</template>
|
||||
</wd-navbar>
|
||||
@ -238,249 +222,240 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { inject, onMounted, ref } from 'vue'
|
||||
import { router } from '@/utils/tools'
|
||||
import { inject, onMounted, ref } from 'vue'
|
||||
import { router } from '@/utils/tools'
|
||||
import { useUserStore } from '@/store'
|
||||
|
||||
const OSS = inject('OSS')
|
||||
const navbarHeight = inject('navbarHeight')
|
||||
const OSS = inject('OSS')
|
||||
const navbarHeight = inject('navbarHeight')
|
||||
|
||||
// 获取状态栏高度(用于自定义导航栏的安全区域适配)
|
||||
const statusBarHeight = ref(0)
|
||||
onMounted(() => {
|
||||
const systemInfo = uni.getWindowInfo()
|
||||
statusBarHeight.value = systemInfo.statusBarHeight || 0
|
||||
})
|
||||
// 用户信息
|
||||
const userStore = useUserStore()
|
||||
const userInfo = userStore.userInfo
|
||||
|
||||
// 用户信息(模拟数据)
|
||||
const userInfo = ref({
|
||||
nickname: '茶艺师昵称',
|
||||
avatar: '',
|
||||
})
|
||||
|
||||
// 等级信息(模拟数据 - 5个等级)
|
||||
const levelList = ref([
|
||||
{
|
||||
level: 1,
|
||||
performanceCommission: 50,
|
||||
overtimeCommission: 55,
|
||||
currentPerformance: 150,
|
||||
targetPerformance: 1000,
|
||||
remainingPerformance: 850,
|
||||
progressPercent: 0,
|
||||
icon: `${OSS}icon/icon_level1.png`
|
||||
},
|
||||
{
|
||||
level: 2,
|
||||
performanceCommission: 60,
|
||||
overtimeCommission: 65,
|
||||
currentPerformance: 300,
|
||||
targetPerformance: 2000,
|
||||
remainingPerformance: 1700,
|
||||
progressPercent: 0,
|
||||
icon: `${OSS}icon/icon_level2.png`
|
||||
},
|
||||
// {
|
||||
// level: 3,
|
||||
// performanceCommission: 70,
|
||||
// overtimeCommission: 75,
|
||||
// currentPerformance: 1500,
|
||||
// targetPerformance: 5000,
|
||||
// remainingPerformance: 3500,
|
||||
// progressPercent: 0,
|
||||
// icon: `${OSS}icon/icon_level3.png`
|
||||
// },
|
||||
// {
|
||||
// level: 4,
|
||||
// performanceCommission: 80,
|
||||
// overtimeCommission: 85,
|
||||
// currentPerformance: 3000,
|
||||
// targetPerformance: 10000,
|
||||
// remainingPerformance: 7000,
|
||||
// progressPercent: 0,
|
||||
// icon: `${OSS}icon/icon_level4.png`
|
||||
// },
|
||||
// {
|
||||
// level: 5,
|
||||
// performanceCommission: 90,
|
||||
// overtimeCommission: 95,
|
||||
// currentPerformance: 8000,
|
||||
// targetPerformance: 20000,
|
||||
// remainingPerformance: 12000,
|
||||
// progressPercent: 0,
|
||||
// icon: `${OSS}icon/icon_level5.png`
|
||||
// },
|
||||
])
|
||||
// 等级信息(模拟数据 - 5个等级)
|
||||
const levelList = ref([
|
||||
{
|
||||
level: 1,
|
||||
performanceCommission: 50,
|
||||
overtimeCommission: 55,
|
||||
currentPerformance: 150,
|
||||
targetPerformance: 1000,
|
||||
remainingPerformance: 850,
|
||||
progressPercent: 0,
|
||||
icon: `${OSS}icon/icon_level1.png`
|
||||
},
|
||||
{
|
||||
level: 2,
|
||||
performanceCommission: 60,
|
||||
overtimeCommission: 65,
|
||||
currentPerformance: 300,
|
||||
targetPerformance: 2000,
|
||||
remainingPerformance: 1700,
|
||||
progressPercent: 0,
|
||||
icon: `${OSS}icon/icon_level2.png`
|
||||
},
|
||||
// {
|
||||
// level: 3,
|
||||
// performanceCommission: 70,
|
||||
// overtimeCommission: 75,
|
||||
// currentPerformance: 1500,
|
||||
// targetPerformance: 5000,
|
||||
// remainingPerformance: 3500,
|
||||
// progressPercent: 0,
|
||||
// icon: `${OSS}icon/icon_level3.png`
|
||||
// },
|
||||
// {
|
||||
// level: 4,
|
||||
// performanceCommission: 80,
|
||||
// overtimeCommission: 85,
|
||||
// currentPerformance: 3000,
|
||||
// targetPerformance: 10000,
|
||||
// remainingPerformance: 7000,
|
||||
// progressPercent: 0,
|
||||
// icon: `${OSS}icon/icon_level4.png`
|
||||
// },
|
||||
// {
|
||||
// level: 5,
|
||||
// performanceCommission: 90,
|
||||
// overtimeCommission: 95,
|
||||
// currentPerformance: 8000,
|
||||
// targetPerformance: 20000,
|
||||
// remainingPerformance: 12000,
|
||||
// progressPercent: 0,
|
||||
// icon: `${OSS}icon/icon_level5.png`
|
||||
// },
|
||||
])
|
||||
|
||||
// 当前等级索引
|
||||
const currentLevelIndex = ref(1) // 默认显示第2个等级(索引1)
|
||||
// 当前等级索引
|
||||
const currentLevelIndex = ref(1) // 默认显示第2个等级(索引1)
|
||||
|
||||
// 当前显示的等级信息(用于兼容旧代码)
|
||||
const levelInfo = computed(() => levelList.value[currentLevelIndex.value])
|
||||
// 当前显示的等级信息(用于兼容旧代码)
|
||||
const levelInfo = computed(() => levelList.value[currentLevelIndex.value])
|
||||
|
||||
// 今日订单列表(模拟数据)
|
||||
const todayOrders = ref<Array<any>>([
|
||||
{
|
||||
id: 1,
|
||||
date: '2025-09-21',
|
||||
start_time: '15:00',
|
||||
end_time: '18:00',
|
||||
location: '苓苑共享茶室空间',
|
||||
address: '上海浦东新区新金桥路58号新银东大厦15楼F室',
|
||||
service_type: '到店服务',
|
||||
status: '待服务',
|
||||
latitude: 31.2304,
|
||||
longitude: 121.4737,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
date: '2025-09-22',
|
||||
start_time: '15:00',
|
||||
end_time: '18:00',
|
||||
location: '苓苑共享茶室空间',
|
||||
address: '上海浦东新区新金桥路58号新银东大厦15楼F室',
|
||||
service_type: '到店服务',
|
||||
status: '待服务',
|
||||
latitude: 31.2304,
|
||||
longitude: 121.4737,
|
||||
},
|
||||
])
|
||||
// 今日订单列表(模拟数据)
|
||||
const todayOrders = ref<Array<any>>([
|
||||
{
|
||||
id: 1,
|
||||
date: '2025-09-21',
|
||||
start_time: '15:00',
|
||||
end_time: '18:00',
|
||||
location: '苓苑共享茶室空间',
|
||||
address: '上海浦东新区新金桥路58号新银东大厦15楼F室',
|
||||
service_type: '到店服务',
|
||||
status: '待服务',
|
||||
latitude: 31.2304,
|
||||
longitude: 121.4737,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
date: '2025-09-22',
|
||||
start_time: '15:00',
|
||||
end_time: '18:00',
|
||||
location: '苓苑共享茶室空间',
|
||||
address: '上海浦东新区新金桥路58号新银东大厦15楼F室',
|
||||
service_type: '到店服务',
|
||||
status: '待服务',
|
||||
latitude: 31.2304,
|
||||
longitude: 121.4737,
|
||||
},
|
||||
])
|
||||
|
||||
// 公告列表(模拟数据)
|
||||
const announcements = ref<Array<any>>([
|
||||
{
|
||||
id: 1,
|
||||
title: '必备课,茶文化基础与通识,了解茶的起源?',
|
||||
time: '2025-08-09 17:21',
|
||||
image: `${OSS}images/banner1.png`,
|
||||
type: 'image',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: '行为举止要领,茶艺师职业礼仪与行茶举止规范?',
|
||||
time: '2025-08-09 17:21',
|
||||
image: `${OSS}images/banner1.png`,
|
||||
type: 'video',
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
title: '行为举止要领,茶艺师职业礼仪与行茶举止规范?',
|
||||
time: '2025-08-09 17:21',
|
||||
image: `${OSS}images/banner1.png`,
|
||||
type: 'image',
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
title: '行为举止要领,茶艺师职业礼仪与行茶举止规范?',
|
||||
time: '2025-08-09 17:21',
|
||||
image: `${OSS}images/banner1.png`,
|
||||
type: 'image',
|
||||
},
|
||||
])
|
||||
// 公告列表(模拟数据)
|
||||
const announcements = ref<Array<any>>([
|
||||
{
|
||||
id: 1,
|
||||
title: '必备课,茶文化基础与通识,了解茶的起源?',
|
||||
time: '2025-08-09 17:21',
|
||||
image: `${OSS}images/banner1.png`,
|
||||
type: 'image',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: '行为举止要领,茶艺师职业礼仪与行茶举止规范?',
|
||||
time: '2025-08-09 17:21',
|
||||
image: `${OSS}images/banner1.png`,
|
||||
type: 'video',
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
title: '行为举止要领,茶艺师职业礼仪与行茶举止规范?',
|
||||
time: '2025-08-09 17:21',
|
||||
image: `${OSS}images/banner1.png`,
|
||||
type: 'image',
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
title: '行为举止要领,茶艺师职业礼仪与行茶举止规范?',
|
||||
time: '2025-08-09 17:21',
|
||||
image: `${OSS}images/banner1.png`,
|
||||
type: 'image',
|
||||
},
|
||||
])
|
||||
|
||||
onLoad(() => {
|
||||
calculateProgress()
|
||||
})
|
||||
|
||||
// 计算进度百分比
|
||||
function calculateProgress() {
|
||||
levelList.value.forEach((level) => {
|
||||
const { currentPerformance, targetPerformance } = level
|
||||
level.progressPercent = Math.min((currentPerformance / targetPerformance) * 100, 100)
|
||||
onLoad(() => {
|
||||
calculateProgress()
|
||||
})
|
||||
}
|
||||
|
||||
// 页面加载时计算进度
|
||||
onMounted(() => {
|
||||
calculateProgress()
|
||||
})
|
||||
|
||||
// 处理等级卡片滑动
|
||||
function handleLevelScroll(e: any) {
|
||||
// const scrollLeft = e.detail.scrollLeft
|
||||
// const systemInfo = uni.getSystemInfoSync()
|
||||
// // 每个卡片项的宽度:100vw - 120rpx,加上左右margin各30rpx
|
||||
// // 1rpx = windowWidth / 750
|
||||
// const rpxToPx = systemInfo.windowWidth / 750
|
||||
// // 卡片宽度 + 左右margin = (100vw - 120rpx) + 60rpx = 100vw - 60rpx
|
||||
// const itemWidthPx = systemInfo.windowWidth - (60 * rpxToPx)
|
||||
// const index = Math.round(scrollLeft / itemWidthPx)
|
||||
// if (index >= 0 && index < levelList.value.length) {
|
||||
// currentLevelIndex.value = index
|
||||
// }
|
||||
}
|
||||
|
||||
// 格式化日期
|
||||
function formatDate(dateStr: string, type: 'day' | 'month') {
|
||||
if (!dateStr)
|
||||
return ''
|
||||
// 处理格式如 "2025-09-21" 的日期字符串
|
||||
const parts = dateStr.split('-')
|
||||
if (parts.length >= 3) {
|
||||
if (type === 'day') {
|
||||
return Number.parseInt(parts[2]).toString()
|
||||
}
|
||||
else {
|
||||
return Number.parseInt(parts[1]).toString()
|
||||
}
|
||||
}
|
||||
// 如果不是标准格式,尝试使用Date对象解析
|
||||
const date = new Date(dateStr)
|
||||
if (!Number.isNaN(date.getTime())) {
|
||||
if (type === 'day') {
|
||||
return date.getDate().toString()
|
||||
}
|
||||
else {
|
||||
return (date.getMonth() + 1).toString()
|
||||
}
|
||||
}
|
||||
return ''
|
||||
}
|
||||
|
||||
// 菜单点击
|
||||
function handleMenuClick() {
|
||||
console.log('菜单点击')
|
||||
}
|
||||
|
||||
// 当前订单索引(用于指示点)
|
||||
const currentOrderIndex = ref(0)
|
||||
|
||||
// 滚动事件处理
|
||||
function handleScroll(e: any) {
|
||||
const scrollLeft = e.detail.scrollLeft
|
||||
const systemInfo = uni.getWindowInfo()
|
||||
// 每个订单项的宽度:100vw - 120rpx,转换为 px
|
||||
// 1rpx = windowWidth / 750
|
||||
const rpxToPx = systemInfo.windowWidth / 750
|
||||
const itemWidthPx = systemInfo.windowWidth - (120 * rpxToPx) + (20 * rpxToPx) // 加上间距
|
||||
const index = Math.round(scrollLeft / itemWidthPx)
|
||||
if (index >= 0 && index < todayOrders.value.length) {
|
||||
currentOrderIndex.value = index
|
||||
}
|
||||
}
|
||||
|
||||
// 导航点击
|
||||
function handleNavigate(order: any) {
|
||||
if (order.latitude && order.longitude) {
|
||||
uni.openLocation({
|
||||
latitude: order.latitude,
|
||||
longitude: order.longitude,
|
||||
name: order.location,
|
||||
address: order.address,
|
||||
// 计算进度百分比
|
||||
function calculateProgress() {
|
||||
levelList.value.forEach((level) => {
|
||||
const { currentPerformance, targetPerformance } = level
|
||||
level.progressPercent = Math.min((currentPerformance / targetPerformance) * 100, 100)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 更多公告
|
||||
function handleMoreAnnouncement() {
|
||||
console.log('更多公告')
|
||||
}
|
||||
// 页面加载时计算进度
|
||||
onMounted(() => {
|
||||
calculateProgress()
|
||||
})
|
||||
|
||||
// 公告点击
|
||||
function handleAnnouncementClick(item: any) {
|
||||
console.log('公告点击', item)
|
||||
}
|
||||
// 处理等级卡片滑动
|
||||
function handleLevelScroll(e: any) {
|
||||
// const scrollLeft = e.detail.scrollLeft
|
||||
// const systemInfo = uni.getSystemInfoSync()
|
||||
// // 每个卡片项的宽度:100vw - 120rpx,加上左右margin各30rpx
|
||||
// // 1rpx = windowWidth / 750
|
||||
// const rpxToPx = systemInfo.windowWidth / 750
|
||||
// // 卡片宽度 + 左右margin = (100vw - 120rpx) + 60rpx = 100vw - 60rpx
|
||||
// const itemWidthPx = systemInfo.windowWidth - (60 * rpxToPx)
|
||||
// const index = Math.round(scrollLeft / itemWidthPx)
|
||||
// if (index >= 0 && index < levelList.value.length) {
|
||||
// currentLevelIndex.value = index
|
||||
// }
|
||||
}
|
||||
|
||||
// 格式化日期
|
||||
function formatDate(dateStr: string, type: 'day' | 'month') {
|
||||
if (!dateStr)
|
||||
return ''
|
||||
// 处理格式如 "2025-09-21" 的日期字符串
|
||||
const parts = dateStr.split('-')
|
||||
if (parts.length >= 3) {
|
||||
if (type === 'day') {
|
||||
return Number.parseInt(parts[2]).toString()
|
||||
}
|
||||
else {
|
||||
return Number.parseInt(parts[1]).toString()
|
||||
}
|
||||
}
|
||||
// 如果不是标准格式,尝试使用Date对象解析
|
||||
const date = new Date(dateStr)
|
||||
if (!Number.isNaN(date.getTime())) {
|
||||
if (type === 'day') {
|
||||
return date.getDate().toString()
|
||||
}
|
||||
else {
|
||||
return (date.getMonth() + 1).toString()
|
||||
}
|
||||
}
|
||||
return ''
|
||||
}
|
||||
|
||||
// 菜单点击
|
||||
function handleMenuClick() {
|
||||
console.log('菜单点击')
|
||||
}
|
||||
|
||||
// 当前订单索引(用于指示点)
|
||||
const currentOrderIndex = ref(0)
|
||||
|
||||
// 滚动事件处理
|
||||
function handleScroll(e: any) {
|
||||
const scrollLeft = e.detail.scrollLeft
|
||||
const systemInfo = uni.getWindowInfo()
|
||||
// 每个订单项的宽度:100vw - 120rpx,转换为 px
|
||||
// 1rpx = windowWidth / 750
|
||||
const rpxToPx = systemInfo.windowWidth / 750
|
||||
const itemWidthPx = systemInfo.windowWidth - (120 * rpxToPx) + (20 * rpxToPx) // 加上间距
|
||||
const index = Math.round(scrollLeft / itemWidthPx)
|
||||
if (index >= 0 && index < todayOrders.value.length) {
|
||||
currentOrderIndex.value = index
|
||||
}
|
||||
}
|
||||
|
||||
// 导航点击
|
||||
function handleNavigate(order: any) {
|
||||
if (order.latitude && order.longitude) {
|
||||
uni.openLocation({
|
||||
latitude: order.latitude,
|
||||
longitude: order.longitude,
|
||||
name: order.location,
|
||||
address: order.address,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 更多公告
|
||||
function handleMoreAnnouncement() {
|
||||
console.log('更多公告')
|
||||
}
|
||||
|
||||
// 公告点击
|
||||
function handleAnnouncementClick(item: any) {
|
||||
console.log('公告点击', item)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
@ -106,10 +106,6 @@
|
||||
})
|
||||
/** 结束 **/
|
||||
|
||||
/** 服务协议和隐私政策 **/
|
||||
const agree = ref<boolean>(false)
|
||||
/** 结束 **/
|
||||
|
||||
onLoad((args) => {
|
||||
// 从个人登录页面进入
|
||||
if (args.type === 'edit') {
|
||||
@ -122,13 +118,18 @@
|
||||
})
|
||||
|
||||
const mobile = {
|
||||
// 验证手机号
|
||||
/**
|
||||
* 验证手机号
|
||||
* @param e
|
||||
*/
|
||||
handleInputMobile: (e: {value: string}) => {
|
||||
model.mobile = e.value
|
||||
disabled.value = !testMobile(model.mobile)
|
||||
},
|
||||
|
||||
// 发送验证码
|
||||
/**
|
||||
* 发送验证码
|
||||
*/
|
||||
handleCountDown: () => {
|
||||
if (disabled.value) {
|
||||
toast.show({
|
||||
@ -147,7 +148,9 @@
|
||||
})
|
||||
},
|
||||
|
||||
// 验证码倒计时结束
|
||||
/**
|
||||
* 验证码倒计时结束
|
||||
*/
|
||||
handleFinishCountDown: () => {
|
||||
startCountDown.value = false
|
||||
},
|
||||
@ -155,7 +158,6 @@
|
||||
// 登录
|
||||
handleToLogin: () => {
|
||||
// TODO 如果是edit的话就是修改手机号
|
||||
|
||||
if (!testMobile(model.mobile)) {
|
||||
toast.show({
|
||||
iconClass: 'info-circle',
|
||||
@ -174,7 +176,7 @@
|
||||
return
|
||||
}
|
||||
|
||||
router.navigateTo('/pages/login/set-password')
|
||||
router.navigateTo(`/pages/login/set-password?type=${pageType}&mobile=${model.mobile}&userId=${userId.value}`)
|
||||
},
|
||||
|
||||
// 获取手机号
|
||||
@ -182,21 +184,6 @@
|
||||
console.log("🚀 ~ e:", e)
|
||||
},
|
||||
|
||||
handleAgree: (e: any) => {
|
||||
console.log('e', e)
|
||||
},
|
||||
|
||||
// 跳转到服务协议页面
|
||||
handleToService: () => {
|
||||
disabled.value = !disabled.value
|
||||
console.log("🚀 ~ disabled:", disabled)
|
||||
},
|
||||
|
||||
// 跳转到隐私政策页面
|
||||
handleToPrivacy: () => {
|
||||
|
||||
},
|
||||
|
||||
// 修改手机成功后返回
|
||||
handleToBack: () => {
|
||||
uni.navigateBack()
|
||||
|
||||
@ -20,37 +20,35 @@
|
||||
<view class="font-400 text-30rpx text-[#606266] leading-44rpx">密码</view>
|
||||
<view class="mt-20rpx">
|
||||
<wd-input
|
||||
v-model="model.mobile"
|
||||
v-model="model.password"
|
||||
type="text"
|
||||
placeholder="请输入密码"
|
||||
inputmode="numeric"
|
||||
no-border
|
||||
custom-class="!bg-[#F6F7F8] !border !border-solid !border-[#EAECF0] !rounded-16rpx"
|
||||
custom-input-class="!px-32rpx !h-104rpx"
|
||||
@input="mobile.handleInputMobile"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view>
|
||||
<view class="mt-40rpx">
|
||||
<view class="font-400 text-30rpx text-[#606266] leading-44rpx">再次确认</view>
|
||||
<view class="mt-20rpx">
|
||||
<wd-input
|
||||
v-model="model.mobile"
|
||||
v-model="model.password_confirm"
|
||||
type="text"
|
||||
placeholder="再次确认新的密码"
|
||||
inputmode="numeric"
|
||||
no-border
|
||||
custom-class="!bg-[#F6F7F8] !border !border-solid !border-[#EAECF0] !rounded-16rpx"
|
||||
custom-input-class="!px-32rpx !h-104rpx"
|
||||
@input="mobile.handleInputMobile"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
</wd-form>
|
||||
</view>
|
||||
|
||||
<view class="h-90rpx leading-90rpx mx-60rpx rounded-8rpx text-center mt-112rpx bg-[#4C9F44] text-[#fff]" :class="disabled ? 'opacity-40' : ''" @click="mobile.handleToLogin">确定</view>
|
||||
<view class="h-90rpx leading-90rpx mx-60rpx rounded-8rpx text-center mt-112rpx bg-[#4C9F44] text-[#fff]" :class="disabled ? 'opacity-40' : ''" @click="Mobile.handleToLogin">确定</view>
|
||||
|
||||
<!-- 手机号修改成功 -->
|
||||
<wd-popup v-model="showEditSuccessPopup" lock-scroll custom-style="border-radius: 32rpx 32rpx 0rpx 0rpx;" position="bottom">
|
||||
@ -62,7 +60,7 @@
|
||||
</view>
|
||||
<view class="text-[#303133] text-36rpx leading-46rpx text-center mt-48rpx">密码修改成功</view>
|
||||
<view class="text-[#9CA3AF] text-28rpx leading-44rpx mt-16rpx text-center">请记住你的登录密码</view>
|
||||
<view class="w-630rpx h-90rpx leading-90rpx text-center bg-[#4C9F44] rounded-8rpx text-[#fff] mt-174rpx mx-auto" @click="mobile.handleToBack">好的</view>
|
||||
<view class="w-630rpx h-90rpx leading-90rpx text-center bg-[#4C9F44] rounded-8rpx text-[#fff] mt-174rpx mx-auto" @click="router.reLaunch('/pages/login/login')">好的</view>
|
||||
</view>
|
||||
</wd-popup>
|
||||
</view>
|
||||
@ -70,59 +68,34 @@
|
||||
|
||||
|
||||
<script lang="ts" setup>
|
||||
import {mobile as testMobile} from '@/utils/test'
|
||||
import { mobile } from '@/utils/test'
|
||||
import { useToast } from 'wot-design-uni'
|
||||
import { router } from '@/utils/tools'
|
||||
import { resetPassword } from '@/api/user'
|
||||
|
||||
const OSS = inject('OSS')
|
||||
const toast = useToast()
|
||||
const disabled = ref<boolean>(true)
|
||||
|
||||
/** 页面 **/
|
||||
let pageType = 'login' // 页面类型 login:登录 edit:修改手机号
|
||||
const page = ref<{title: string, desc: string}>({title: '其他手机号登录', desc: '请输入你要登录的手机号'})
|
||||
const showEditSuccessPopup = ref<boolean>(false) // 显示手机号修改成功弹窗
|
||||
const userId = ref<number>(0) // 用户ID,修改手机号时需要传
|
||||
// 手机号修改成功弹窗
|
||||
const showEditSuccessPopup = ref<boolean>(false)
|
||||
|
||||
/** 验证码倒计时 **/
|
||||
const countDownTime = ref<number>(1 * 60 * 1000) // 60s倒计时
|
||||
const startCountDown = ref<boolean>(false) // 是否开始倒计时
|
||||
const countDown = ref<any>(null) // 倒计时组件
|
||||
|
||||
/** 表单相关 **/
|
||||
const model = reactive<{
|
||||
mobile: string
|
||||
code: string
|
||||
}>({
|
||||
const model = ref({
|
||||
mobile: '',
|
||||
code: ''
|
||||
code: '',
|
||||
password: '',
|
||||
password_confirm: ''
|
||||
})
|
||||
/** 结束 **/
|
||||
|
||||
/** 服务协议和隐私政策 **/
|
||||
const agree = ref<boolean>(false)
|
||||
/** 结束 **/
|
||||
|
||||
onLoad((args) => {
|
||||
// 从个人登录页面进入
|
||||
if (args.type === 'edit') {
|
||||
userId.value = Number(args.userId) || 0 // userId仅做测试使用,实际请传真实用户ID
|
||||
|
||||
page.value.title = '修改手机号'
|
||||
page.value.desc = '手机号一年内可修改2次'
|
||||
pageType = 'edit'
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
const mobile = {
|
||||
// 验证手机号
|
||||
handleInputMobile: (e: {value: string}) => {
|
||||
model.mobile = e.value
|
||||
disabled.value = !testMobile(model.mobile)
|
||||
},
|
||||
|
||||
// 发送验证码
|
||||
handleCountDown: () => {
|
||||
if (disabled.value) {
|
||||
const Mobile = {
|
||||
// 重置密码
|
||||
handleToLogin: async () => {
|
||||
if (!mobile(model.value.mobile)) {
|
||||
toast.show({
|
||||
iconClass: 'info-circle',
|
||||
msg: '手机号码错误请重新输入',
|
||||
@ -131,74 +104,46 @@
|
||||
return
|
||||
}
|
||||
|
||||
startCountDown.value = true
|
||||
nextTick(() => {
|
||||
countDown.value?.start()
|
||||
if (!model.value.code) {
|
||||
toast.show({
|
||||
iconClass: 'info-circle',
|
||||
msg: '验证码不存在',
|
||||
direction: 'vertical'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 发送验证码请求
|
||||
if (!model.value.password) {
|
||||
toast.show({
|
||||
iconClass: 'info-circle',
|
||||
msg: '请输入新密码',
|
||||
direction: 'vertical'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if (model.value.password !== model.value.password_confirm) {
|
||||
toast.show({
|
||||
iconClass: 'info-circle',
|
||||
msg: '两次输入密码不一致',
|
||||
direction: 'vertical'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
const res = await resetPassword({
|
||||
mobile: model.value.mobile,
|
||||
code: model.value.code,
|
||||
password: model.value.password,
|
||||
password_confirm: model.value.password_confirm
|
||||
})
|
||||
},
|
||||
|
||||
// 验证码倒计时结束
|
||||
handleFinishCountDown: () => {
|
||||
startCountDown.value = false
|
||||
},
|
||||
|
||||
// 登录
|
||||
handleToLogin: () => {
|
||||
// TODO 如果是edit的话就是修改手机号
|
||||
|
||||
if (pageType === 'login' && !agree.value) {
|
||||
toast.show({
|
||||
iconClass: 'info-circle',
|
||||
msg: '请同意服务协议和隐私政策',
|
||||
direction: 'vertical'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if (!testMobile(model.mobile)) {
|
||||
toast.show({
|
||||
iconClass: 'info-circle',
|
||||
msg: '手机号码错误请重新输入',
|
||||
direction: 'vertical'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if (!model.code) {
|
||||
toast.show({
|
||||
iconClass: 'info-circle',
|
||||
msg: '验证码错误',
|
||||
direction: 'vertical'
|
||||
})
|
||||
return
|
||||
}
|
||||
},
|
||||
|
||||
// 获取手机号
|
||||
handleGetPhoneNumber: (e: object) => {
|
||||
console.log("🚀 ~ e:", e)
|
||||
},
|
||||
|
||||
handleAgree: (e: any) => {
|
||||
console.log('e', e)
|
||||
},
|
||||
|
||||
// 跳转到服务协议页面
|
||||
handleToService: () => {
|
||||
disabled.value = !disabled.value
|
||||
console.log("🚀 ~ disabled:", disabled)
|
||||
},
|
||||
|
||||
// 跳转到隐私政策页面
|
||||
handleToPrivacy: () => {
|
||||
|
||||
showEditSuccessPopup.value = true
|
||||
},
|
||||
|
||||
// 修改手机成功后返回
|
||||
handleToBack: () => {
|
||||
uni.navigateBack()
|
||||
router.navigateBack()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -15,14 +15,14 @@
|
||||
<template #right>
|
||||
<view class="right-slot mr-16rpx flex items-center">
|
||||
<!-- 消息图标(带红点) -->
|
||||
<view class="nav-icon-item relative mr-30rpx" @click="router.navigateTo('/bundle/notice/notice')">
|
||||
<!-- <view class="nav-icon-item relative mr-30rpx" @click="router.navigateTo('/bundle/notice/notice')">
|
||||
<wd-img :src="`${OSS}icon/icon_notify.png`" width="36rpx" height="36rpx"></wd-img>
|
||||
<view class="message-dot absolute right-6rpx top-10rpx h-16rpx w-16rpx border-2rpx border-[#fff] rounded-full border-solid bg-[#FF0000]" />
|
||||
<text
|
||||
class="icon-label text-20rpx text-[#606266] top-20rpx">
|
||||
消息
|
||||
</text>
|
||||
</view>
|
||||
</view> -->
|
||||
<!-- 设置图标 -->
|
||||
<view class="nav-icon-item relative mr-24rpx" @click="router.navigateTo('/bundle/store/setting')">
|
||||
<wd-img :src="`${OSS}icon/icon_setting.png`" width="36rpx" height="36rpx"></wd-img>
|
||||
@ -47,19 +47,19 @@
|
||||
<view class="flex items-center">
|
||||
<!-- 头像 -->
|
||||
<view class="avatar-wrapper">
|
||||
<wd-img width="120rpx" height="120rpx" :src="`${OSS}images/chayishi/avatar.png`"
|
||||
<wd-img width="120rpx" height="120rpx" :src="userInfo.avatar || `${OSS}images/chayishi/avatar.png`"
|
||||
mode="aspectFill" round />
|
||||
</view>
|
||||
<!-- 昵称和账号 -->
|
||||
<view class="ml-22rpx flex-1" @click="router.navigateTo('/bundle/profile/profile')">
|
||||
<view class="ml-22rpx flex-1" @click="My.handleToProfile">
|
||||
<view class="flex items-center">
|
||||
<text class="nickname text-36rpx text-[#303133] font-bold leading-50rpx">Jasmine</text>
|
||||
<text class="nickname text-36rpx text-[#303133] font-bold leading-50rpx">{{ userInfo.nickname || '请登录' }}</text>
|
||||
<view>
|
||||
<wd-icon name="arrow-right" size="24rpx" color="#303133" class="ml-8rpx" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="mt-8rpx text-24rpx text-[#303133] leading-34rpx">
|
||||
账号: 152****3412
|
||||
<view class="mt-8rpx text-24rpx text-[#303133] leading-34rpx" v-if="userInfo.account">
|
||||
账号: {{ hidePhoneMiddle(userInfo.account) }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -86,7 +86,7 @@
|
||||
<!-- 可提现金额 -->
|
||||
<view class="flex-1 text-center">
|
||||
<view class="">
|
||||
<price-format color="#000000" :first-size="32" :second-size="32" :subscript-size="20" :price="23.02"></price-format>
|
||||
<price-format color="#000000" :first-size="32" :second-size="32" :subscript-size="20" :price="otherInfo.user_money"></price-format>
|
||||
</view>
|
||||
<view class="mt-8rpx text-24rpx text-[#909399] leading-34rpx">
|
||||
可提现金额
|
||||
@ -95,7 +95,7 @@
|
||||
<!-- 不可提现金额 -->
|
||||
<view class="flex-1 text-center">
|
||||
<view>
|
||||
<price-format color="#000000" :first-size="32" :second-size="32" :subscript-size="20" :price="23.02"></price-format>
|
||||
<price-format color="#000000" :first-size="32" :second-size="32" :subscript-size="20" :price="otherInfo.no_reflect_amount"></price-format>
|
||||
</view>
|
||||
<view class="mt-8rpx text-24rpx text-[#909399] leading-34rpx">
|
||||
不可提现金额
|
||||
@ -117,12 +117,12 @@
|
||||
}" class="work-schedule-card mx-30rpx mt-30rpx rounded-24rpx bg-white p-30rpx">
|
||||
<!-- 标题和免费出行按钮 -->
|
||||
<view class="mb-24rpx flex items-center justify-between">
|
||||
<view class="flex items-center">
|
||||
<view class="flex items-center" v-if="otherInfo.is_mileage == 1">
|
||||
<wd-img width="32rpx" height="32rpx" :src="`${OSS}images/chayishi/work_task.png`"
|
||||
class="mr-12rpx" />
|
||||
<text class="text-32rpx text-[#303133] font-bold">上班安排</text>
|
||||
</view>
|
||||
<view @click="My.handleFreeTravel">
|
||||
<view @click="My.handleFreeTravel" v-if="otherInfo.is_mileage == 0">
|
||||
<wd-img width="180rpx" height="64rpx" :src="`${OSS}images/chayishi/free_go.png`"
|
||||
class="mr-12rpx" />
|
||||
</view>
|
||||
@ -144,17 +144,17 @@
|
||||
<!-- 工作日 -->
|
||||
<view class="schedule-item mb-20rpx flex items-center">
|
||||
<text class="label-text w-140rpx text-24rpx text-[#606266] leading-40rpx">工作日:</text>
|
||||
<text class="flex-1 text-24rpx text-[#303133] leading-40rpx">周一,周二,周三,周四,周五,周六</text>
|
||||
<text class="flex-1 text-24rpx text-[#303133] leading-40rpx">{{ otherInfo.work || '-' }}</text>
|
||||
</view>
|
||||
<!-- 工作时间 -->
|
||||
<view class="schedule-item mb-20rpx flex items-center">
|
||||
<text class="label-text w-140rpx text-24rpx text-[#606266] leading-40rpx">工作时间:</text>
|
||||
<text class="flex-1 text-24rpx text-[#303133] leading-40rpx">08:00~20:00</text>
|
||||
<text class="flex-1 text-24rpx text-[#303133] leading-40rpx">{{ otherInfo.work_time }}</text>
|
||||
</view>
|
||||
<!-- 住址 -->
|
||||
<view class="schedule-item flex items-start">
|
||||
<text class="label-text w-140rpx pt-4rpx text-24rpx text-[#606266] leading-40rpx">住址:</text>
|
||||
<text class="flex-1 text-24rpx text-[#303133] leading-40rpx">上海浦东新区新金桥路58号新银东大厦15楼F室</text>
|
||||
<text class="flex-1 text-24rpx text-[#303133] leading-40rpx">{{ otherInfo.address || '-' }}</text>
|
||||
</view>
|
||||
<!-- 上下班状态 -->
|
||||
<view class="schedule-item flex items-center mt-20rpx">
|
||||
@ -253,82 +253,127 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { router } from '@/utils/tools'
|
||||
import { router, hidePhoneMiddle } from '@/utils/tools'
|
||||
import { useUserStore } from '@/store'
|
||||
import { getUserInfo } from '@/api/user'
|
||||
|
||||
const OSS = inject('OSS')
|
||||
const navbarHeight = inject('navbarHeight')
|
||||
const rightPadding = inject('capsuleOffset')
|
||||
const OSS = inject('OSS')
|
||||
const navbarHeight = inject('navbarHeight')
|
||||
const rightPadding = inject('capsuleOffset')
|
||||
|
||||
// 上下班切换
|
||||
const isWork = ref<boolean>(true)
|
||||
// 用户信息
|
||||
const userStore = useUserStore()
|
||||
const userInfo = userStore.userInfo
|
||||
const otherInfo = ref<{
|
||||
user_money: number // 可提现金额
|
||||
no_reflect_amount: number // 不可提现金额
|
||||
work: string // 工作日
|
||||
address: string // 住址
|
||||
work_time: string // 工作时间
|
||||
is_mileage: number // 是否开启里程
|
||||
}>({
|
||||
user_money: 0,
|
||||
no_reflect_amount: 0,
|
||||
work: '',
|
||||
address: '',
|
||||
work_time: '',
|
||||
is_mileage: 0
|
||||
})
|
||||
|
||||
// 模拟是否有个人信息(静态页面,后续可以替换为实际的API判断)
|
||||
const hasProfileInfo = ref(true) // 改为 false 可以测试跳转到填写页面
|
||||
// 上下班切换
|
||||
const isWork = ref<boolean>(true)
|
||||
|
||||
const My = {
|
||||
// 跳转到消息页面
|
||||
handleToMessage: () => {
|
||||
// TODO: 跳转到消息页面
|
||||
console.log('跳转到消息页面')
|
||||
},
|
||||
// 模拟是否有个人信息(静态页面,后续可以替换为实际的API判断)
|
||||
const hasProfileInfo = ref(true) // 改为 false 可以测试跳转到填写页面
|
||||
|
||||
// 跳转到设置页面
|
||||
handleToSettings: () => {
|
||||
// TODO: 跳转到设置页面
|
||||
console.log('跳转到设置页面')
|
||||
},
|
||||
|
||||
// 跳转到个人信息
|
||||
handleToProfile: () => {
|
||||
// TODO: 跳转到个人信息页面
|
||||
console.log('跳转到个人信息页面')
|
||||
},
|
||||
onShow(() => {
|
||||
My.handleGetUserInfo()
|
||||
})
|
||||
|
||||
// 跳转到提现页面
|
||||
handleToWithdraw: () => {
|
||||
// TODO: 跳转到提现页面
|
||||
console.log('跳转到提现页面')
|
||||
},
|
||||
const My = {
|
||||
/**
|
||||
* 获取个人信息
|
||||
*/
|
||||
handleGetUserInfo: async () => {
|
||||
const res = await getUserInfo()
|
||||
otherInfo.value = res
|
||||
},
|
||||
|
||||
// 免费出行
|
||||
handleFreeTravel: () => {
|
||||
// TODO: 免费出行功能
|
||||
console.log('免费出行')
|
||||
},
|
||||
/**
|
||||
* 跳转到消息页面
|
||||
*/
|
||||
handleToMessage: () => {
|
||||
// TODO: 跳转到消息页面
|
||||
console.log('跳转到消息页面')
|
||||
},
|
||||
|
||||
// 服务点击事件
|
||||
handleServiceClick: (type: string) => {
|
||||
if (type === 'profile') {
|
||||
// 如果有个人信息,跳转到展示页面;否则跳转到填写页面
|
||||
if (hasProfileInfo.value) {
|
||||
router.navigateTo('/pages/my/profile-display')
|
||||
/**
|
||||
* 跳转到设置页面
|
||||
*/
|
||||
handleToSettings: () => {
|
||||
// TODO: 跳转到设置页面
|
||||
console.log('跳转到设置页面')
|
||||
},
|
||||
|
||||
/**
|
||||
* 跳转到个人信息
|
||||
*/
|
||||
handleToProfile: () => {
|
||||
// TODO: 跳转到个人信息页面
|
||||
console.log('跳转到个人信息页面')
|
||||
if (userStore.isLoggedIn) {
|
||||
router.navigateTo('/bundle/profile/profile')
|
||||
} else {
|
||||
router.navigateTo('/pages/login/login')
|
||||
}
|
||||
},
|
||||
|
||||
// 跳转到提现页面
|
||||
handleToWithdraw: () => {
|
||||
// TODO: 跳转到提现页面
|
||||
console.log('跳转到提现页面')
|
||||
},
|
||||
|
||||
// 免费出行
|
||||
handleFreeTravel: () => {
|
||||
// TODO: 免费出行功能
|
||||
console.log('免费出行')
|
||||
},
|
||||
|
||||
// 服务点击事件
|
||||
handleServiceClick: (type: string) => {
|
||||
if (type === 'profile') {
|
||||
// 如果有个人信息,跳转到展示页面;否则跳转到填写页面
|
||||
if (hasProfileInfo.value) {
|
||||
router.navigateTo('/pages/my/profile-display')
|
||||
}
|
||||
else {
|
||||
router.navigateTo('/pages/my/profile-edit')
|
||||
}
|
||||
}
|
||||
else if (type === 'service') {
|
||||
// 跳转到服务方式页面
|
||||
router.navigateTo('/pages/my/service-method')
|
||||
}
|
||||
else if (type === 'worktime') {
|
||||
// 跳转到工作时间页面
|
||||
router.navigateTo('/pages/my/work-time')
|
||||
}
|
||||
else if (type === 'upload') {
|
||||
// 跳转到上传资料页面
|
||||
router.navigateTo('/pages/my/upload-data')
|
||||
}
|
||||
else if (type === 'record') {
|
||||
// 跳转到行程记录页面
|
||||
router.navigateTo('/pages/my/travel-record')
|
||||
}
|
||||
else {
|
||||
router.navigateTo('/pages/my/profile-edit')
|
||||
// TODO: 根据类型跳转到对应页面
|
||||
console.log('点击服务:', type)
|
||||
}
|
||||
}
|
||||
else if (type === 'service') {
|
||||
// 跳转到服务方式页面
|
||||
router.navigateTo('/pages/my/service-method')
|
||||
}
|
||||
else if (type === 'worktime') {
|
||||
// 跳转到工作时间页面
|
||||
router.navigateTo('/pages/my/work-time')
|
||||
}
|
||||
else if (type === 'upload') {
|
||||
// 跳转到上传资料页面
|
||||
router.navigateTo('/pages/my/upload-data')
|
||||
}
|
||||
else if (type === 'record') {
|
||||
// 跳转到行程记录页面
|
||||
router.navigateTo('/pages/my/travel-record')
|
||||
}
|
||||
else {
|
||||
// TODO: 根据类型跳转到对应页面
|
||||
console.log('点击服务:', type)
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import type { IUserInfoVo } from '@/api/types/login'
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref } from 'vue'
|
||||
import { getUserInfo as _getUserInfo } from '@/api/user'
|
||||
import {
|
||||
getUserInfo as _getUserInfo,
|
||||
login as _login,
|
||||
logout as _logout,
|
||||
wxLogin as _wxLogin,
|
||||
|
||||
@ -158,3 +158,11 @@ export function getCurrentDate() {
|
||||
return `${year}-${month}-${day}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* 隐藏手机号中间四位
|
||||
* @param phone 手机号
|
||||
* @returns 隐藏中间四位的手机号
|
||||
*/
|
||||
export function hidePhoneMiddle(phone: string): string {
|
||||
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
|
||||
}
|
||||
Reference in New Issue
Block a user