修复若干bug
This commit is contained in:
parent
fc3bd046e9
commit
d8d6be6206
|
|
@ -1,22 +1,20 @@
|
|||
<template>
|
||||
<view class="brand-card-comp" @click="onClick">
|
||||
<image class="brand-bg" :src="item.bgSrc" mode="aspectFill"></image>
|
||||
<image class="mask-bg" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/9bca353c-fa74-407e-a69e-6f5e9aa43955.png" mode="widthFix"></image>
|
||||
<image class="mask-bg"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/9bca353c-fa74-407e-a69e-6f5e9aa43955.png"
|
||||
mode="widthFix"></image>
|
||||
|
||||
<view class="card-content">
|
||||
<view class="avatar-wrapper" style="border-color: #F7E5D7;">
|
||||
<image class="avatar-img" :src="item.avatar || 'https://dummyimage.com/100x100/ccc/fff.png&text=logo'"></image>
|
||||
<image class="avatar-img" :src="item.avatar || 'https://dummyimage.com/100x100/ccc/fff.png&text=logo'">
|
||||
</image>
|
||||
</view>
|
||||
|
||||
<text class="brand-name">{{ item.name }}</text>
|
||||
|
||||
<view class="tags-container">
|
||||
<view
|
||||
class="tag-item"
|
||||
v-for="(tag, idx) in displayTags"
|
||||
:key="idx"
|
||||
:style="getTagStyle(tag)"
|
||||
>
|
||||
<view class="tag-item" v-for="(tag, idx) in displayTags" :key="idx" :style="getTagStyle(tag)">
|
||||
<image class="tag-icon" v-if="tag.icon" :src="tag.icon"></image>
|
||||
<text class="tag-text">{{ tag.text }}</text>
|
||||
</view>
|
||||
|
|
@ -84,7 +82,15 @@ export default {
|
|||
// 1. 保留 emit,方便外层如果有特殊需求可以监听到
|
||||
this.$emit('click', this.item);
|
||||
|
||||
// 2. 直接在此处处理跳转逻辑
|
||||
// 2. 检查登录状态
|
||||
if (!uni.getStorageSync("accessToken")) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/blogPopup/blogPopup'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 3. 直接在此处处理跳转逻辑
|
||||
if (this.item && this.item.id) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/jingxuan/brand-detail?id=${this.item.id}`
|
||||
|
|
@ -128,6 +134,7 @@ export default {
|
|||
overflow: hidden;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.brand-bg {
|
||||
width: 100%;
|
||||
height: 184rpx;
|
||||
|
|
@ -136,6 +143,7 @@ export default {
|
|||
left: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.mask-bg {
|
||||
width: 100%;
|
||||
height: 251rpx;
|
||||
|
|
@ -145,6 +153,7 @@ export default {
|
|||
z-index: 2;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.card-content {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
|
|
@ -156,6 +165,7 @@ export default {
|
|||
align-items: center;
|
||||
padding-bottom: 24rpx;
|
||||
}
|
||||
|
||||
.avatar-wrapper {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
|
|
@ -169,10 +179,12 @@ export default {
|
|||
margin-top: -38rpx;
|
||||
margin-bottom: 12rpx;
|
||||
}
|
||||
|
||||
.avatar-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.brand-name {
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
|
|
@ -180,6 +192,7 @@ export default {
|
|||
line-height: 34rpx;
|
||||
margin-bottom: 12rpx;
|
||||
}
|
||||
|
||||
.tags-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
|
@ -187,6 +200,7 @@ export default {
|
|||
gap: 20rpx;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.tag-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -196,12 +210,14 @@ export default {
|
|||
background-color: transparent;
|
||||
padding: 7rpx 12rpx;
|
||||
}
|
||||
|
||||
.tag-icon {
|
||||
width: 24rpx;
|
||||
height: 22rpx;
|
||||
margin-right: 6rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.tag-text {
|
||||
font-size: 20rpx;
|
||||
line-height: 28rpx;
|
||||
|
|
|
|||
|
|
@ -2,10 +2,8 @@
|
|||
<view class="skill-item" @click="handleClick">
|
||||
<view class="cover-box">
|
||||
<image class="cover" :src="item.coverSrc" mode="aspectFill"></image>
|
||||
<image
|
||||
class="play-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/5c1ddfef-a200-424a-a9dc-03d9395568f6.png"
|
||||
></image>
|
||||
<image v-if="item.video" class="play-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/5c1ddfef-a200-424a-a9dc-03d9395568f6.png"></image>
|
||||
</view>
|
||||
<view class="skill-info">
|
||||
<view class="skill-title line-2">{{ item.title }}</view>
|
||||
|
|
@ -14,10 +12,9 @@
|
|||
<text class="type-text">{{ item.type || '平台课程' }}</text>
|
||||
</view>
|
||||
<view class="skill-stats">
|
||||
<image
|
||||
class="view-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/2409b64a-56bb-4d9e-a4cc-5b3444fcf097.png"
|
||||
></image>
|
||||
<image class="view-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/2409b64a-56bb-4d9e-a4cc-5b3444fcf097.png">
|
||||
</image>
|
||||
{{ formatViews(item.views) }}观看 · {{ item.time }}
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -69,13 +66,20 @@ export default {
|
|||
// 1. 保留 emit,方便外层如果有特殊需求可以监听到
|
||||
this.$emit('click', this.item);
|
||||
|
||||
// 2. 直接在此处处理跳转逻辑
|
||||
// 2. 检查登录状态
|
||||
if (!uni.getStorageSync("accessToken")) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/blogPopup/blogPopup'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 3. 直接在此处处理跳转逻辑
|
||||
if (this.item && this.item.id) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/jingxuan/skill-detail?id=${this.item.id}`
|
||||
});
|
||||
}
|
||||
// 跳转到技能/课程详情页
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -188,5 +192,4 @@ export default {
|
|||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
<template>
|
||||
<view class="homePage">
|
||||
<image class="page-bg" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/0901dc51-ff5a-427f-aab1-993d80aced79.png" mode="widthFix"></image>
|
||||
<image class="page-bg"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/0901dc51-ff5a-427f-aab1-993d80aced79.png"
|
||||
mode="widthFix"></image>
|
||||
|
||||
<view class="header-section">
|
||||
<view class="user-info" @tap="handleLoginRedirect">
|
||||
|
|
@ -11,7 +13,8 @@
|
|||
</view>
|
||||
</view>
|
||||
|
||||
<view class="status-toggle" :class="{ 'is-closed': !isOpenStore }" @tap="toggleStatus" v-if="isLogin && isSettled">
|
||||
<view class="status-toggle" :class="{ 'is-closed': !isOpenStore }" @tap="toggleStatus"
|
||||
v-if="isLogin && userInfo.id_type > 0">
|
||||
<text class="status-text">{{ isOpenStore ? '营业中' : '休息中' }}</text>
|
||||
<view class="toggle-dot"></view>
|
||||
</view>
|
||||
|
|
@ -19,7 +22,9 @@
|
|||
|
||||
<view class="setup-modal-mask" v-if="showSetupModal" catchtouchmove="true">
|
||||
<view class="setup-modal-content">
|
||||
<image class="modal-bg" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ac2cb4aa-a7c5-4776-98f4-b77e9c0cfa85.png"></image>
|
||||
<image class="modal-bg"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ac2cb4aa-a7c5-4776-98f4-b77e9c0cfa85.png">
|
||||
</image>
|
||||
|
||||
<view class="modal-header">
|
||||
<text>温馨提示</text>
|
||||
|
|
@ -31,7 +36,9 @@
|
|||
<view class="missing-list">
|
||||
<view class="missing-item" v-if="!hasBusinessTime">
|
||||
<view class="item-left">
|
||||
<image class="item-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21b26b44-5e36-4291-8900-705a3d5bfa90.png"></image>
|
||||
<image class="item-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21b26b44-5e36-4291-8900-705a3d5bfa90.png">
|
||||
</image>
|
||||
<view class="item-texts">
|
||||
<text class="item-title">营业时间未配置</text>
|
||||
<text class="item-desc">请完善店铺的营业时间</text>
|
||||
|
|
@ -42,7 +49,9 @@
|
|||
|
||||
<view class="missing-item" v-if="!hasServiceSkill">
|
||||
<view class="item-left">
|
||||
<image class="item-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21b26b44-5e36-4291-8900-705a3d5bfa90.png"></image>
|
||||
<image class="item-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21b26b44-5e36-4291-8900-705a3d5bfa90.png">
|
||||
</image>
|
||||
<view class="item-texts">
|
||||
<text class="item-title">服务技能未配置</text>
|
||||
<text class="item-desc">请完善服务技能</text>
|
||||
|
|
@ -53,10 +62,13 @@
|
|||
|
||||
<view class="missing-item" v-if="!isCertified">
|
||||
<view class="item-left">
|
||||
<image class="item-icon" :src="isUnderReview ? 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25c444be-a66e-45d6-b50d-922149ff059f.png' : 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21b26b44-5e36-4291-8900-705a3d5bfa90.png'"></image>
|
||||
<image class="item-icon"
|
||||
:src="isUnderReview ? 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25c444be-a66e-45d6-b50d-922149ff059f.png' : 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21b26b44-5e36-4291-8900-705a3d5bfa90.png'">
|
||||
</image>
|
||||
<view class="item-texts">
|
||||
<!-- 只有在审核中时赋予蓝色样式 blue-text -->
|
||||
<text class="item-title" :class="{'blue-text': isUnderReview}">{{ isUnderReview ? '资质认证中' : '资质未认证' }}</text>
|
||||
<text class="item-title" :class="{ 'blue-text': isUnderReview }">{{ isUnderReview ?
|
||||
'资质认证中' : '资质未认证' }}</text>
|
||||
<text class="item-desc">请完成资质认证</text>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -75,7 +87,8 @@
|
|||
</view>
|
||||
|
||||
<view class="settlement-guide card-box" v-if="isLogin && isUserInfoLoaded && !isCertified">
|
||||
<view class="guide-header" :style="{ backgroundImage: 'url(' + (isSettled ? 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/c3a6cdd8-0447-4b50-a8cc-7bab1eedb502.png' : 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/138ccbc3-486d-4287-b67f-f809de99e408.png') + ')' }">
|
||||
<view class="guide-header"
|
||||
:style="{ backgroundImage: 'url(' + (isSettled ? 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/c3a6cdd8-0447-4b50-a8cc-7bab1eedb502.png' : 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/138ccbc3-486d-4287-b67f-f809de99e408.png') + ')' }">
|
||||
<view class="guide-body">
|
||||
<text class="guide-text">{{ isSettled ? '完成认证,开启您的接单之路' : '入驻美融融,生意更轻松' }}</text>
|
||||
<view class="guide-btn" @tap="goToSettle">{{ isSettled ? '去认证' : '去入驻' }}</view>
|
||||
|
|
@ -95,9 +108,14 @@
|
|||
<view class="header-left">
|
||||
<text class="title">接单管理</text>
|
||||
<text class="update-time">更新时间:{{ orderBasic.updateTime }}</text>
|
||||
<image class="refresh-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/31c6eebc-5538-4c66-9b32-24dced170a99.png" @tap="fetchOrderNum"></image>
|
||||
<image class="refresh-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/31c6eebc-5538-4c66-9b32-24dced170a99.png"
|
||||
@tap="fetchOrderNum"></image>
|
||||
</view>
|
||||
<view class="header-right" @tap="goToOrderList">更多数据 <image class="more-right-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ee119e24-1cb2-43df-86e6-61af8e9fd0ad.png">
|
||||
</image>
|
||||
</view>
|
||||
<view class="header-right" @tap="goToOrderList">更多数据 <image class="more-right-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ee119e24-1cb2-43df-86e6-61af8e9fd0ad.png"></image></view>
|
||||
</view>
|
||||
<view class="stats-content">
|
||||
<view class="stat-item">
|
||||
|
|
@ -120,28 +138,35 @@
|
|||
<view class="header-left">
|
||||
<text class="title">当日实时数据</text>
|
||||
<text class="update-time">更新时间:{{ orderDetail.updateTime }}</text>
|
||||
<image class="refresh-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/31c6eebc-5538-4c66-9b32-24dced170a99.png" @tap="fetchRealTimeData"></image>
|
||||
<image class="refresh-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/31c6eebc-5538-4c66-9b32-24dced170a99.png"
|
||||
@tap="fetchRealTimeData"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="detail-content">
|
||||
<view class="score-dashboard">
|
||||
<view class="ring-track"></view>
|
||||
<view class="ring-progress" :style="{'background': progressGradient}"></view>
|
||||
<view class="ring-progress" :style="{ 'background': progressGradient }"></view>
|
||||
<view class="dot start-dot" v-if="displayScore > 0"></view>
|
||||
<view class="dot end-dot" v-if="displayScore > 0" :style="{'transform': `rotate(-${displayScoreDeg}deg) translateY(-67rpx)`}"></view>
|
||||
<view class="dot end-dot" v-if="displayScore > 0"
|
||||
:style="{ 'transform': `rotate(-${displayScoreDeg}deg) translateY(-67rpx)` }"></view>
|
||||
<text class="score-num">{{ displayScore.toFixed(1) }}</text>
|
||||
<image class="score-tag-img" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/52005bc0-2896-407d-8826-f34539637d20.png" mode="aspectFit"></image>
|
||||
<image class="score-tag-img"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/52005bc0-2896-407d-8826-f34539637d20.png"
|
||||
mode="aspectFit"></image>
|
||||
</view>
|
||||
|
||||
<view class="detail-grid">
|
||||
<view class="grid-item">
|
||||
<text class="label">访问人数</text>
|
||||
<view class="val-box"><text class="val">{{ orderDetail.visitors }}</text> <text class="unit">人</text></view>
|
||||
<view class="val-box"><text class="val">{{ orderDetail.visitors }}</text> <text
|
||||
class="unit">人</text></view>
|
||||
<text class="yesterday">昨日{{ orderDetail.yVisitors }}人</text>
|
||||
</view>
|
||||
<view class="grid-item">
|
||||
<text class="label">下单量</text>
|
||||
<view class="val-box"><text class="val">{{ orderDetail.orders }}</text> <text class="unit">单</text></view>
|
||||
<view class="val-box"><text class="val">{{ orderDetail.orders }}</text> <text
|
||||
class="unit">单</text></view>
|
||||
<text class="yesterday">昨日{{ orderDetail.yOrders }}单</text>
|
||||
</view>
|
||||
<view class="grid-item">
|
||||
|
|
@ -157,7 +182,9 @@
|
|||
</view>
|
||||
|
||||
<view class="notice-bar card-box">
|
||||
<image class="notice-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/75f624b8-a6ed-4787-9380-1a087062805b.png"></image>
|
||||
<image class="notice-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/75f624b8-a6ed-4787-9380-1a087062805b.png">
|
||||
</image>
|
||||
<swiper class="notice-swiper" vertical autoplay circular interval="3000">
|
||||
<swiper-item v-for="(msg, index) in noticeList" :key="index" @tap="goToNotice(msg)">
|
||||
<text class="notice-text line-1">{{ msg.title }}</text>
|
||||
|
|
@ -169,31 +196,28 @@
|
|||
<view class="brands-section card-box">
|
||||
<view class="card-header">
|
||||
<view class="header-left"><text class="title" style="margin-left: 10rpx;">精选品牌</text></view>
|
||||
<view class="header-right" @tap="goToBrandList">更多品牌 <image class="more-right-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ee119e24-1cb2-43df-86e6-61af8e9fd0ad.png"></image></view>
|
||||
<view class="header-right" @tap="goToBrandList">更多品牌 <image class="more-right-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ee119e24-1cb2-43df-86e6-61af8e9fd0ad.png">
|
||||
</image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="brand-grid">
|
||||
<brand-card
|
||||
class="brand-card-wrap"
|
||||
v-for="(item, index) in brands"
|
||||
:key="index"
|
||||
:item="item"
|
||||
:tagKeys="item.tagKeys"
|
||||
></brand-card>
|
||||
<brand-card class="brand-card-wrap" v-for="(item, index) in brands" :key="index" :item="item"
|
||||
:tagKeys="item.tagKeys"></brand-card>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="skills-section card-box">
|
||||
<view class="card-header">
|
||||
<view class="header-left"><text class="title">技能集市</text></view>
|
||||
<view class="header-right" @tap="goToSkillList">更多技能 <image class="more-right-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ee119e24-1cb2-43df-86e6-61af8e9fd0ad.png"></image> </view>
|
||||
<view class="header-right" @tap="goToSkillList">更多技能 <image class="more-right-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ee119e24-1cb2-43df-86e6-61af8e9fd0ad.png">
|
||||
</image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="skill-list">
|
||||
<skill-card
|
||||
v-for="(item, index) in skills"
|
||||
:key="index"
|
||||
:item="item"
|
||||
></skill-card>
|
||||
<skill-card v-for="(item, index) in skills" :key="index" :item="item"></skill-card>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
|
@ -236,16 +260,49 @@ export default {
|
|||
displayScore: 0,
|
||||
animationTimer: null,
|
||||
|
||||
noticeList: [{ id: 0, title: '', url: '' }],
|
||||
noticeList: [{
|
||||
id: 0,
|
||||
title: '',
|
||||
url: ''
|
||||
}],
|
||||
|
||||
quickActions: [
|
||||
{ name: '扫码验券', icon: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/b128e423-e4b5-4ad6-bdf5-522de7a9bc68.png' , path: '/pages/shop/verify/verify-order'},
|
||||
{ name: '服务管理', icon: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/a90f02a2-9d39-440a-ad20-a4337bcd1b38.png' , path: '/pages/artisan/service-list'},
|
||||
{ name: '工位管理', icon: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4c503603-6c2f-4a7a-9329-5e54b8ca769e.png' , path: '/pages/shop/workSpace/list'},
|
||||
{ name: '财务管理', icon: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/728c659e-e395-4473-b83e-7e04539f7ec6.png' , path: '/pages/wallet/wallet'}
|
||||
quickActions: [{
|
||||
name: '扫码验券',
|
||||
icon: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/b128e423-e4b5-4ad6-bdf5-522de7a9bc68.png',
|
||||
path: '/pages/shop/verify/verify-order'
|
||||
},
|
||||
{
|
||||
name: '服务管理',
|
||||
icon: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/a90f02a2-9d39-440a-ad20-a4337bcd1b38.png',
|
||||
path: '/pages/artisan/service-list'
|
||||
},
|
||||
{
|
||||
name: '工位管理',
|
||||
icon: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4c503603-6c2f-4a7a-9329-5e54b8ca769e.png',
|
||||
path: '/pages/shop/workSpace/list'
|
||||
},
|
||||
{
|
||||
name: '财务管理',
|
||||
icon: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/728c659e-e395-4473-b83e-7e04539f7ec6.png',
|
||||
path: '/pages/wallet/wallet'
|
||||
}
|
||||
],
|
||||
orderBasic: { updateTime: '--:--', waitStart: 0, waitFinish: 0, finished: 0 },
|
||||
orderDetail: { updateTime: '--:--', score: '0.0', visitors: 0, yVisitors: 0, orders: 0, yOrders: 0, amount: '0.00', yAmount: '0.00' },
|
||||
orderBasic: {
|
||||
updateTime: '--:--',
|
||||
waitStart: 0,
|
||||
waitFinish: 0,
|
||||
finished: 0
|
||||
},
|
||||
orderDetail: {
|
||||
updateTime: '--:--',
|
||||
score: '0.0',
|
||||
visitors: 0,
|
||||
yVisitors: 0,
|
||||
orders: 0,
|
||||
yOrders: 0,
|
||||
amount: '0.00',
|
||||
yAmount: '0.00'
|
||||
},
|
||||
|
||||
brands: [],
|
||||
skills: []
|
||||
|
|
@ -278,9 +335,11 @@ export default {
|
|||
// 修复:使用 authDetails 里的真实接口返回字段判定服务技能
|
||||
hasServiceSkill() {
|
||||
// 检查 userInfo 中是否有值
|
||||
const fromUser = this.userInfo && Array.isArray(this.userInfo.servers_kill) && this.userInfo.servers_kill.length > 0;
|
||||
const fromUser = this.userInfo && Array.isArray(this.userInfo.servers_kill) && this.userInfo.servers_kill
|
||||
.length > 0;
|
||||
// 检查 authDetails 中是否有值
|
||||
const fromAuth = this.authDetails && Array.isArray(this.authDetails.servers_kill) && this.authDetails.servers_kill.length > 0;
|
||||
const fromAuth = this.authDetails && Array.isArray(this.authDetails.servers_kill) && this.authDetails
|
||||
.servers_kill.length > 0;
|
||||
|
||||
// 只要有一边配了,就算已配置
|
||||
return this.isLogin && (fromUser || fromAuth);
|
||||
|
|
@ -378,15 +437,24 @@ export default {
|
|||
// 金额转换万单位处理
|
||||
formatMoney(amount) {
|
||||
let num = parseFloat(amount);
|
||||
if (isNaN(num)) return { val: '0', unit: '元' };
|
||||
if (isNaN(num)) return {
|
||||
val: '0',
|
||||
unit: '元'
|
||||
};
|
||||
|
||||
if (num >= 10000) {
|
||||
// 达到一万及以上,除以10000,最多保留两位小数(parseFloat会自动去掉末尾的0)
|
||||
let val = parseFloat((num / 10000).toFixed(2));
|
||||
return { val: val, unit: '万元' };
|
||||
return {
|
||||
val: val,
|
||||
unit: '万元'
|
||||
};
|
||||
}
|
||||
// 小于一万,原样返回,单位为元
|
||||
return { val: num, unit: '元' };
|
||||
return {
|
||||
val: num,
|
||||
unit: '元'
|
||||
};
|
||||
},
|
||||
// 处理登录跳转
|
||||
handleLoginRedirect() {
|
||||
|
|
@ -403,11 +471,15 @@ export default {
|
|||
},
|
||||
goToBusinessTime() {
|
||||
this.showSetupModal = false;
|
||||
uni.navigateTo({ url: '/pages/shop/business-time' });
|
||||
uni.navigateTo({
|
||||
url: '/pages/shop/business-time'
|
||||
});
|
||||
},
|
||||
goToServiceSkill() {
|
||||
this.showSetupModal = false;
|
||||
uni.navigateTo({ url: '/pages/shop/service-skills' });
|
||||
uni.navigateTo({
|
||||
url: '/pages/shop/service-skills'
|
||||
});
|
||||
},
|
||||
|
||||
// 专门给【提示弹窗】点击用的 (查看进度 / 去认证)
|
||||
|
|
@ -431,10 +503,14 @@ export default {
|
|||
goToSettle() {
|
||||
if (!this.isSettled) {
|
||||
// 完全没入驻过(新手),从头开始
|
||||
uni.navigateTo({ url: '/pages/ruzhu/ruzhu' });
|
||||
uni.navigateTo({
|
||||
url: '/pages/ruzhu/ruzhu'
|
||||
});
|
||||
} else if (this.isUnderReview) {
|
||||
// 如果在横幅里处于审核中,也送去进度页
|
||||
uni.navigateTo({ url: '/pages/ruzhu/ruzhu?type=1' });
|
||||
uni.navigateTo({
|
||||
url: '/pages/ruzhu/ruzhu?type=1'
|
||||
});
|
||||
} else {
|
||||
// 已经开启入驻但没完成表单,继续去填表!
|
||||
this.navigateToForm();
|
||||
|
|
@ -457,24 +533,47 @@ export default {
|
|||
},
|
||||
|
||||
goToBrandList() {
|
||||
uni.navigateTo({ url: '/pages/jingxuan/selected-brands' });
|
||||
if (!this.isLogin) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/blogPopup/blogPopup'
|
||||
});
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pages/jingxuan/selected-brands'
|
||||
});
|
||||
},
|
||||
goToSkillList() {
|
||||
uni.navigateTo({ url: '/pages/jingxuan/selected-skills' });
|
||||
if (!this.isLogin) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/blogPopup/blogPopup'
|
||||
});
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pages/jingxuan/selected-skills'
|
||||
});
|
||||
},
|
||||
// 处理金刚区点击事件 (包含扫码验券核心逻辑)
|
||||
handleQuickAction(item) {
|
||||
if (item.name === '扫码验券') {
|
||||
uni.navigateTo({
|
||||
url: '/pages/shop/verify/verify-order',
|
||||
fail: (err) => { console.error('跳转失败:', err); }
|
||||
fail: (err) => {
|
||||
console.error('跳转失败:', err);
|
||||
}
|
||||
});
|
||||
return;
|
||||
} // 2. 通用跳转逻辑
|
||||
else if (item.path) {
|
||||
uni.navigateTo({
|
||||
url: item.path,
|
||||
fail: () => { uni.showToast({ title: '页面开发中...', icon: 'none' }); }
|
||||
fail: () => {
|
||||
uni.showToast({
|
||||
title: '页面开发中...',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
|
@ -491,7 +590,7 @@ export default {
|
|||
|
||||
getUserInfo() {
|
||||
request.post("/sj/user/getUser").then((result) => {
|
||||
if(result.code == 200 && result.data) {
|
||||
if (result.code == 200 && result.data) {
|
||||
this.userInfo = result.data;
|
||||
this.isUserInfoLoaded = true; // 数据回来了,允许相关 UI 进行渲染
|
||||
uni.setStorageSync("sjId", result.data.id);
|
||||
|
|
@ -532,7 +631,7 @@ export default {
|
|||
|
||||
fetchOrderNum() {
|
||||
request.post("/sj/poster/orderNum").then(res => {
|
||||
if(res.code == 200 && res.data) {
|
||||
if (res.code == 200 && res.data) {
|
||||
this.orderBasic = {
|
||||
updateTime: this.formatTime(res.data.now_date),
|
||||
waitStart: res.data.dfw || 0,
|
||||
|
|
@ -546,7 +645,7 @@ export default {
|
|||
// 获取:首页实时数据
|
||||
fetchRealTimeData() {
|
||||
request.post("/sj/poster/realTimeData").then(res => {
|
||||
if(res.code == 200 && res.data) {
|
||||
if (res.code == 200 && res.data) {
|
||||
const today = res.data.today || {};
|
||||
const yesterday = res.data.yesterday || {};
|
||||
|
||||
|
|
@ -566,8 +665,11 @@ export default {
|
|||
|
||||
// 获取:通知公告列表
|
||||
fetchNoticeList() {
|
||||
request.post('/sj/notice/list', { page: 1, limit: 5 }).then(res => {
|
||||
if(res.code == 200 && res.data && res.data.list.length > 0) {
|
||||
request.post('/sj/notice/list', {
|
||||
page: 1,
|
||||
limit: 5
|
||||
}).then(res => {
|
||||
if (res.code == 200 && res.data && res.data.list.length > 0) {
|
||||
this.noticeList = res.data.list;
|
||||
}
|
||||
});
|
||||
|
|
@ -575,8 +677,11 @@ export default {
|
|||
|
||||
// 获取:品牌列表
|
||||
fetchBrandList() {
|
||||
request.post('/sj/brand/list', { page: 1, limit: 4 }).then(res => {
|
||||
if(res.code == 200 && res.data && res.data.list) {
|
||||
request.post('/sj/brand/list', {
|
||||
page: 1,
|
||||
limit: 4
|
||||
}).then(res => {
|
||||
if (res.code == 200 && res.data && res.data.list) {
|
||||
this.brands = res.data.list.map(item => {
|
||||
let tags = [];
|
||||
if (item.franchise_state === 1) tags.push('franchise');
|
||||
|
|
@ -586,8 +691,10 @@ export default {
|
|||
return {
|
||||
id: item.id,
|
||||
name: item.name,
|
||||
bgSrc: item.cover_img || 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/d02b2d8b-0e01-4c6d-bbee-c60dccf4867c.jpg',
|
||||
avatar: item.logo_img || 'https://dummyimage.com/100x100/ccc/fff.png&text=Avatar',
|
||||
bgSrc: item.cover_img ||
|
||||
'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/d02b2d8b-0e01-4c6d-bbee-c60dccf4867c.jpg',
|
||||
avatar: item.logo_img ||
|
||||
'https://dummyimage.com/100x100/ccc/fff.png&text=Avatar',
|
||||
tagKeys: tags
|
||||
};
|
||||
});
|
||||
|
|
@ -597,8 +704,11 @@ export default {
|
|||
|
||||
// 获取:技能集市列表
|
||||
fetchSkillList() {
|
||||
request.post('/sj/skill/list', { page: 1, limit: 4 }).then(res => {
|
||||
if(res.code == 200 && res.data && res.data.list) {
|
||||
request.post('/sj/skill/list', {
|
||||
page: 1,
|
||||
limit: 4
|
||||
}).then(res => {
|
||||
if (res.code == 200 && res.data && res.data.list) {
|
||||
this.skills = res.data.list.map(item => {
|
||||
return {
|
||||
id: item.id,
|
||||
|
|
@ -606,8 +716,10 @@ export default {
|
|||
type: item.link_name || '平台课程',
|
||||
views: item.browse_num || 0,
|
||||
time: item.create_time ? item.create_time.split(' ')[0] : '',
|
||||
coverSrc: item.cover_img || 'https://dummyimage.com/200x150/ccc/fff.png&text=Video',
|
||||
typeIcon: item.link_logo || ''
|
||||
coverSrc: item.cover_img ||
|
||||
'https://dummyimage.com/200x150/ccc/fff.png&text=Video',
|
||||
typeIcon: item.link_logo || '',
|
||||
video: item.video || ''
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
@ -618,15 +730,35 @@ export default {
|
|||
|
||||
// 跳转:通知详情页
|
||||
goToNotice(msg) {
|
||||
if(msg.id) { uni.navigateTo({ url: `/pages/notice/detail?id=${msg.id}` }); }
|
||||
if (!this.isLogin) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/blogPopup/blogPopup'
|
||||
});
|
||||
return
|
||||
}
|
||||
if (msg.id) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/notice/detail?id=${msg.id}`
|
||||
});
|
||||
}
|
||||
},
|
||||
// 跳转:通知公告列表页
|
||||
goToNoticeList() {
|
||||
uni.navigateTo({ url: '/pages/notice/notice_list' });
|
||||
if (!this.isLogin) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/blogPopup/blogPopup'
|
||||
});
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pages/notice/notice_list'
|
||||
});
|
||||
},
|
||||
// 跳转:订单列表页
|
||||
goToOrderList() {
|
||||
uni.switchTab({ url: '/pages/order/userorder-list' });
|
||||
uni.switchTab({
|
||||
url: '/pages/order/userorder-list'
|
||||
});
|
||||
},
|
||||
|
||||
// 营业中 / 休息中 按钮逻辑判断
|
||||
|
|
@ -644,7 +776,10 @@ export default {
|
|||
let newStatus = currentStatus == 1 ? 2 : 1;
|
||||
|
||||
// 加入一个防连点的 Loading
|
||||
uni.showLoading({ title: '切换中...', mask: true });
|
||||
uni.showLoading({
|
||||
title: '切换中...',
|
||||
mask: true
|
||||
});
|
||||
|
||||
// 发起请求告诉后端
|
||||
request.post("/sj/sjordertaking", {
|
||||
|
|
@ -655,11 +790,17 @@ export default {
|
|||
// 因为上一次的严格判断误伤了你,这里回归你最原始的写法,直接假定成功
|
||||
this.userInfo.order_taking = newStatus; // 强行改一下本地状态让按钮动过去
|
||||
this.getUserInfo(); // 无论如何刷新一下真实数据
|
||||
uni.showToast({ title: newStatus == 1 ? '已开启营业' : '已休息', icon: 'none' });
|
||||
uni.showToast({
|
||||
title: newStatus == 1 ? '已开启营业' : '已休息',
|
||||
icon: 'none'
|
||||
});
|
||||
}).catch(() => {
|
||||
// 只有在彻底断网报错的情况下,才会弹下面这个
|
||||
uni.hideLoading();
|
||||
uni.showToast({ title: '网络异常,切换失败', icon: 'none' });
|
||||
uni.showToast({
|
||||
title: '网络异常,切换失败',
|
||||
icon: 'none'
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
|
|
@ -697,14 +838,17 @@ export default {
|
|||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
page {
|
||||
background: #f5f6f8;
|
||||
}
|
||||
}
|
||||
|
||||
/* ============ 提示弹窗样式 ============ */
|
||||
.setup-modal-mask {
|
||||
/* ============ 提示弹窗样式 ============ */
|
||||
.setup-modal-mask {
|
||||
position: fixed;
|
||||
top: 0; left: 0; right: 0; bottom: 0;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 9999;
|
||||
display: flex;
|
||||
|
|
@ -713,7 +857,8 @@ export default {
|
|||
|
||||
.setup-modal-content {
|
||||
width: 630rpx;
|
||||
height: 775rpx; /* 根据要求绝对固定宽高 */
|
||||
height: 775rpx;
|
||||
/* 根据要求绝对固定宽高 */
|
||||
background: #FFFFFF;
|
||||
border-radius: 32rpx;
|
||||
position: relative;
|
||||
|
|
@ -722,7 +867,8 @@ export default {
|
|||
|
||||
.modal-bg {
|
||||
position: absolute;
|
||||
top: 0; left: 0;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 630rpx;
|
||||
height: 265rpx;
|
||||
z-index: 0;
|
||||
|
|
@ -761,7 +907,8 @@ export default {
|
|||
.missing-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 46rpx; /* 间距拉开显得不那么拥挤 */
|
||||
gap: 46rpx;
|
||||
/* 间距拉开显得不那么拥挤 */
|
||||
|
||||
.missing-item {
|
||||
display: flex;
|
||||
|
|
@ -776,7 +923,8 @@ export default {
|
|||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-right: 16rpx;
|
||||
flex-shrink: 0; /* 防止图标被挤压变形 */
|
||||
flex-shrink: 0;
|
||||
/* 防止图标被挤压变形 */
|
||||
margin-top: 6rpx;
|
||||
}
|
||||
|
||||
|
|
@ -808,10 +956,18 @@ export default {
|
|||
font-weight: 400;
|
||||
margin-top: -45rpx;
|
||||
|
||||
&.orange { color: #FF7B00; }
|
||||
&.grey { color: #999999; }
|
||||
&.orange {
|
||||
color: #FF7B00;
|
||||
}
|
||||
|
||||
&.grey {
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
/* 增加浅绿色样式 */
|
||||
&.light-green { color: #5CAC81; }
|
||||
&.light-green {
|
||||
color: #5CAC81;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -836,10 +992,11 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* ==================================== */
|
||||
}
|
||||
|
||||
.homePage {
|
||||
/* ==================================== */
|
||||
|
||||
.homePage {
|
||||
position: relative;
|
||||
min-height: 100vh;
|
||||
padding: 0 24rpx;
|
||||
|
|
@ -877,6 +1034,7 @@ export default {
|
|||
.header-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.title {
|
||||
margin-right: 20rpx;
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
|
|
@ -887,6 +1045,7 @@ export default {
|
|||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.update-time {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 400;
|
||||
|
|
@ -895,14 +1054,15 @@ export default {
|
|||
line-height: 28rpx;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
margin-top: -4rpx;
|
||||
}
|
||||
|
||||
.refresh-icon {
|
||||
width: 18rpx;
|
||||
height: 18rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.header-right {
|
||||
font-weight: 400;
|
||||
font-size: 20rpx;
|
||||
|
|
@ -922,24 +1082,32 @@ export default {
|
|||
.user-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.avatar {
|
||||
width: 96rpx;
|
||||
height: 96rpx;
|
||||
width: 76rpx;
|
||||
height: 76rpx;
|
||||
border-radius: 50%;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-weight: 500;
|
||||
height: 42rpx;
|
||||
font-family: PingFangTC, PingFangTC;
|
||||
font-weight: bold;
|
||||
font-size: 30rpx;
|
||||
color: #333333;
|
||||
line-height: 42rpx;
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
|
||||
.desc {
|
||||
height: 28rpx;
|
||||
font-family: PingFangTC, PingFangTC;
|
||||
font-weight: 400;
|
||||
font-size: 20rpx;
|
||||
color: #858796;
|
||||
line-height: 28rpx;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -953,18 +1121,19 @@ export default {
|
|||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
|
||||
background-image: linear-gradient(
|
||||
316deg,
|
||||
background-image: linear-gradient(316deg,
|
||||
rgba(255, 161, 203, 1) 0,
|
||||
rgba(251, 143, 180, 1) 49.381741%,
|
||||
rgba(255, 130, 239, 1) 100%
|
||||
);
|
||||
rgba(255, 130, 239, 1) 100%);
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0; left: 0; width: 100%; height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url("https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/269c1024-34ec-42af-8b20-1ce047c9851b.png") no-repeat center;
|
||||
background-size: 100% 100%;
|
||||
opacity: 0;
|
||||
|
|
@ -999,11 +1168,13 @@ export default {
|
|||
&::before {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.status-text {
|
||||
transform: translateX(46rpx);
|
||||
}
|
||||
|
||||
.toggle-dot {
|
||||
transform: translate(-113rpx ,2rpx);
|
||||
transform: translate(-113rpx, 2rpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1059,11 +1230,13 @@ export default {
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.action-icon {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
margin-bottom: 13rpx;
|
||||
}
|
||||
|
||||
.action-text {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
|
|
@ -1076,13 +1249,15 @@ export default {
|
|||
}
|
||||
|
||||
.order-stats-basic {
|
||||
background: linear-gradient( 176deg, #F0F4FF 0%, #FFFFFF 100%);
|
||||
background: linear-gradient(176deg, #F0F4FF 0%, #FFFFFF 100%);
|
||||
border-radius: 20rpx;
|
||||
border: 1rpx solid #FFFFFF;
|
||||
|
||||
.stats-content {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
text-align: center;
|
||||
|
||||
.num {
|
||||
display: block;
|
||||
font-weight: 500;
|
||||
|
|
@ -1091,6 +1266,7 @@ export default {
|
|||
line-height: 56rpx;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.label {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
|
|
@ -1211,6 +1387,7 @@ export default {
|
|||
color: #333333;
|
||||
line-height: 56rpx;
|
||||
}
|
||||
|
||||
.unit {
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
|
|
@ -1237,6 +1414,8 @@ export default {
|
|||
display: flex;
|
||||
align-items: center;
|
||||
padding: 13rpx 30rpx;
|
||||
min-height: 66rpx;
|
||||
box-sizing: border-box;
|
||||
background: url("https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/3d9c6b4b-ef6f-4242-abd4-6194d13e02dc.png");
|
||||
background-size: contain;
|
||||
|
||||
|
|
@ -1271,6 +1450,7 @@ export default {
|
|||
|
||||
.brands-section {
|
||||
padding: 20rpx 20rpx;
|
||||
|
||||
.brand-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
|
@ -1288,10 +1468,14 @@ export default {
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.skill-item {
|
||||
display: flex;
|
||||
margin-bottom: 30rpx;
|
||||
&:last-child { margin-bottom: 0; }
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.cover-box {
|
||||
position: relative;
|
||||
|
|
@ -1306,11 +1490,14 @@ export default {
|
|||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.play-icon {
|
||||
position: absolute;
|
||||
top: 50%; left: 50%;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 39rpx; height: 39rpx;
|
||||
width: 39rpx;
|
||||
height: 39rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1331,6 +1518,7 @@ export default {
|
|||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.skill-type {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -1343,6 +1531,7 @@ export default {
|
|||
margin-right: 8rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.type-text {
|
||||
background: #f9d3d760;
|
||||
border-radius: 7rpx;
|
||||
|
|
@ -1353,12 +1542,14 @@ export default {
|
|||
padding: 2rpx 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.skill-stats {
|
||||
font-size: 22rpx;
|
||||
color: #999;
|
||||
margin-top: 10rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.view-icon {
|
||||
width: 26rpx;
|
||||
height: 22rpx;
|
||||
|
|
@ -1370,7 +1561,17 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
.line-1 { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
||||
.line-2 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
|
||||
.line-1 {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.line-2 {
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -17,39 +17,25 @@
|
|||
<text>{{ useMockData ? '关闭模拟数据' : '开启模拟数据' }}</text>
|
||||
</view> -->
|
||||
|
||||
<view class="banner-section" v-if="bannerList && bannerList.length || info.video">
|
||||
<view class="banner-section" v-if="bannerList && bannerList.length">
|
||||
|
||||
<!-- 原生视频组件 (就地播放) -->
|
||||
<video v-if="info.video && isVideoPlaying" id="myVideo" class="banner-video" :src="info.video" autoplay controls
|
||||
object-fit="cover"></video>
|
||||
|
||||
<!-- 轮播图区域 (当视频播放时隐藏) -->
|
||||
<swiper v-else class="banner-swiper" circular @change="onSwiperChange" :autoplay="!info.video">
|
||||
<!-- 轮播图区域 -->
|
||||
<swiper class="banner-swiper" circular @change="onSwiperChange" :autoplay="false" :current="currentBannerIndex">
|
||||
<!-- 视频作为第一项 -->
|
||||
<swiper-item v-if="info.video">
|
||||
<video id="myVideo" class="banner-video" :src="info.video" :autoplay="currentBannerIndex === 0" controls
|
||||
object-fit="cover" :show-center-play-btn="false" :show-play-btn="false" @play="onVideoPlay"
|
||||
@pause="onVideoPause" @ended="onVideoEnded"></video>
|
||||
</swiper-item>
|
||||
<!-- 图片轮播 -->
|
||||
<swiper-item v-for="(item, index) in bannerList" :key="index">
|
||||
<image class="banner-img" :src="item" mode="aspectFill"></image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
|
||||
<!-- 居中的视频播放大图标 (当视频播放时隐藏) -->
|
||||
<image v-if="info.video && !isVideoPlaying" class="center-play-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb720bb0-4ada-49f6-9ce5-38abfd613d5d.png"
|
||||
@click="playVideoInPlace"></image>
|
||||
|
||||
<!-- 视频/图片 相册切换组件 (当视频播放时隐藏) -->
|
||||
<view class="album" v-if="(info.video || bannerList.length > 0) && !isVideoPlaying">
|
||||
<view class="album-left" @click="info.video ? playVideoInPlace() : goAlbum()">
|
||||
{{ info.video ? "视频" : "图片" }}
|
||||
</view>
|
||||
<view class="album-line"></view>
|
||||
<view class="album-right" @click="goAlbum">
|
||||
<view class="album-right-text">相册</view>
|
||||
<image src="/static/images/icons/right7_13.png" class="album-right-img"></image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 指示器 (当视频播放时隐藏) -->
|
||||
<view class="indicator" v-if="!isVideoPlaying && bannerList.length > 0">
|
||||
<text>{{ currentBannerIndex + 1 }} / {{ bannerList.length }}</text>
|
||||
<!-- 指示器 -->
|
||||
<view class="indicator" v-if="bannerList.length > 0">
|
||||
<text>{{ currentBannerIndex + 1 }} / {{ totalSlides }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
|
@ -164,6 +150,27 @@
|
|||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 拨打电话选择弹窗 -->
|
||||
<view class="phone-popup" :class="{ show: showPhonePopup }">
|
||||
<view class="phone-popup-mask" @click="closePhonePopup"></view>
|
||||
<view class="phone-popup-content">
|
||||
<view class="phone-popup-header">
|
||||
<text class="phone-popup-title">拨打电话</text>
|
||||
</view>
|
||||
<view class="phone-popup-body">
|
||||
<view class="phone-option" v-if="info.contact_phone" @click="selectPhone(info.contact_phone)">
|
||||
<text class="phone-number">{{ info.contact_phone }}</text>
|
||||
</view>
|
||||
<view class="phone-option" v-if="info.alternate_phone" @click="selectPhone(info.alternate_phone)">
|
||||
<text class="phone-number">{{ info.alternate_phone }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="phone-popup-cancel" @click="closePhonePopup">
|
||||
<text class="cancel-text">取消</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<tipsPopup2 :show="tipShow" @closePopup="closePopup" sureText="确认" @okBtn="okBtn">
|
||||
{{ tipsText }}
|
||||
</tipsPopup2>
|
||||
|
|
@ -196,6 +203,7 @@ export default {
|
|||
tipShow: false, // 弹窗控制
|
||||
tipsText: "", // 弹窗提示文本
|
||||
tipType: "", // 弹窗类型判断
|
||||
showPhonePopup: false, // 拨打电话弹窗
|
||||
|
||||
isCollected: false, // 是否已收藏
|
||||
// 未收藏时的灰色星星
|
||||
|
|
@ -204,7 +212,6 @@ export default {
|
|||
iconCollectOn: 'https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/fe2011b0-a34d-46ee-911a-0ea6f099ad77.png',
|
||||
// ==================================
|
||||
|
||||
isVideoPlaying: false, // 是否正在就地播放视频
|
||||
phoneIconTop: 20, // 顶部电话图标初始Top
|
||||
phoneIconRight: 50, // 顶部电话图标初始Right
|
||||
|
||||
|
|
@ -296,6 +303,10 @@ export default {
|
|||
showTabSection() {
|
||||
return this.availableTabs.length > 0;
|
||||
},
|
||||
// 总轮播数(视频+图片)
|
||||
totalSlides() {
|
||||
return this.bannerList.length + (this.info.video ? 1 : 0);
|
||||
},
|
||||
canSubmit() {
|
||||
const d = this.formData;
|
||||
const baseValid = d.contact_name && d.contact_phone && d.province_code && d.city_code && d.area_code && d.intention;
|
||||
|
|
@ -439,18 +450,49 @@ export default {
|
|||
|
||||
// 拨打电话面板
|
||||
makeCall() {
|
||||
// 兼容可能存在的多种手机号字段
|
||||
const phone = this.info.contact_phone || '';
|
||||
if (phone) {
|
||||
if (!this.isLogin) {
|
||||
this.tipsText = "您现在还未登录,是否确定登录?";
|
||||
this.tipShow = true;
|
||||
this.tipType = "login";
|
||||
return; // 拦截请求,不再往下执行
|
||||
}
|
||||
|
||||
const contactPhone = this.info.contact_phone || '';
|
||||
const alternatePhone = this.info.alternate_phone || '';
|
||||
|
||||
// 两个号码都存在,弹出自定义弹窗让用户选择
|
||||
if (contactPhone && alternatePhone) {
|
||||
this.showPhonePopup = true;
|
||||
} else if (contactPhone) {
|
||||
// 仅客服电话
|
||||
this.doMakeCall(contactPhone);
|
||||
} else if (alternatePhone) {
|
||||
// 仅备用电话
|
||||
this.doMakeCall(alternatePhone);
|
||||
} else {
|
||||
uni.showToast({ title: '暂无联系电话', icon: 'none' });
|
||||
}
|
||||
},
|
||||
|
||||
// 选择电话号码
|
||||
selectPhone(phone) {
|
||||
this.closePhonePopup();
|
||||
this.doMakeCall(phone);
|
||||
},
|
||||
|
||||
// 关闭电话弹窗
|
||||
closePhonePopup() {
|
||||
this.showPhonePopup = false;
|
||||
},
|
||||
|
||||
// 执行拨号
|
||||
doMakeCall(phone) {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: String(phone),
|
||||
fail: (err) => {
|
||||
console.log('取消拨打或拨打失败', err);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
uni.showToast({ title: '暂无联系电话', icon: 'none' });
|
||||
}
|
||||
},
|
||||
|
||||
goAlbum() {
|
||||
|
|
@ -459,9 +501,18 @@ export default {
|
|||
});
|
||||
},
|
||||
|
||||
// 就地播放视频
|
||||
playVideoInPlace() {
|
||||
this.isVideoPlaying = true;
|
||||
// 视频事件处理
|
||||
onVideoPlay() {
|
||||
console.log('视频开始播放');
|
||||
},
|
||||
onVideoPause() {
|
||||
console.log('视频暂停');
|
||||
},
|
||||
onVideoEnded() {
|
||||
// 视频播放结束,切换到下一张图片
|
||||
if (this.bannerList.length > 0) {
|
||||
this.currentBannerIndex = 1;
|
||||
}
|
||||
},
|
||||
|
||||
// 悬浮按钮切换 Mock 数据
|
||||
|
|
@ -472,7 +523,6 @@ export default {
|
|||
},
|
||||
|
||||
getBrandDetails() {
|
||||
this.isVideoPlaying = false; // 每次刷新数据重置播放状态
|
||||
if (this.useMockData) {
|
||||
this.injectMockData();
|
||||
return;
|
||||
|
|
@ -1132,4 +1182,100 @@ export default {
|
|||
.popup-btn.confirm .btn-text {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* 拨打电话弹窗样式 */
|
||||
.phone-popup {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 999;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.phone-popup.show {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.phone-popup-mask {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.phone-popup-content {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: #F5F5F5;
|
||||
border-radius: 24rpx 24rpx 0 0;
|
||||
transform: translateY(100%);
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.phone-popup.show .phone-popup-content {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.phone-popup-header {
|
||||
padding: 30rpx;
|
||||
text-align: center;
|
||||
background-color: #FFFFFF;
|
||||
border-radius: 24rpx 24rpx 0 0;
|
||||
}
|
||||
|
||||
.phone-popup-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.phone-popup-body {
|
||||
background-color: #FFFFFF;
|
||||
margin-top: 2rpx;
|
||||
}
|
||||
|
||||
.phone-option {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 30rpx;
|
||||
border-bottom: 1rpx solid #EEEEEE;
|
||||
}
|
||||
|
||||
.phone-option:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.phone-label {
|
||||
font-size: 26rpx;
|
||||
color: #999999;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.phone-number {
|
||||
font-size: 34rpx;
|
||||
color: #333333;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.phone-popup-cancel {
|
||||
margin-top: 16rpx;
|
||||
padding: 30rpx;
|
||||
text-align: center;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
.cancel-text {
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -2,7 +2,8 @@
|
|||
<view class="collection-page">
|
||||
|
||||
<custom-navbar title="我的收藏" :showBack="true" backgroundColor="#FFFFFF" :show-headle="true" borderBottom="none"
|
||||
headleSrc="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/51ebca5d-95c5-4fb8-8aa3-560a79100d25.png" @onHeadleClick="goToSearch">
|
||||
headleSrc="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/51ebca5d-95c5-4fb8-8aa3-560a79100d25.png"
|
||||
@onHeadleClick="goToSearch">
|
||||
</custom-navbar>
|
||||
|
||||
<view class="nav-placeholder" :style="{ height: navHeight + 'px' }"></view>
|
||||
|
|
@ -10,18 +11,10 @@
|
|||
<view class="tab-bar-wrap" :style="{ top: navHeight + 'px' }">
|
||||
<view class="tab-bar">
|
||||
<view class="tab-items">
|
||||
<view
|
||||
class="tab-item"
|
||||
:class="{ active: currentTab === 'brand' }"
|
||||
@tap="switchTab('brand')"
|
||||
>
|
||||
<view class="tab-item" :class="{ active: currentTab === 'brand' }" @tap="switchTab('brand')">
|
||||
收藏的品牌
|
||||
</view>
|
||||
<view
|
||||
class="tab-item"
|
||||
:class="{ active: currentTab === 'course' }"
|
||||
@tap="switchTab('course')"
|
||||
>
|
||||
<view class="tab-item" :class="{ active: currentTab === 'course' }" @tap="switchTab('course')">
|
||||
收藏的课程
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -32,7 +25,8 @@
|
|||
</view>
|
||||
</view>
|
||||
|
||||
<view class="filter-panel" :class="{ 'show': filterVisible }" :style="{ top: filterTop + 'px' }" catchtouchmove="true">
|
||||
<view class="filter-panel" :class="{ 'show': filterVisible }" :style="{ top: filterTop + 'px' }"
|
||||
catchtouchmove="true">
|
||||
<view class="filter-mask" @tap="closeFilterPanel"></view>
|
||||
<view class="filter-container">
|
||||
|
||||
|
|
@ -40,13 +34,8 @@
|
|||
<view class="filter-group" v-for="group in brandFilterData" :key="group.id">
|
||||
<view class="group-title">{{ group.title }}</view>
|
||||
<view class="pill-list">
|
||||
<view
|
||||
class="pill-item"
|
||||
v-for="sub in group.children"
|
||||
:key="sub.id"
|
||||
:class="{ active: selectedSecondIds.includes(sub.id) }"
|
||||
@tap="toggleSecondSelect(sub.id)"
|
||||
>
|
||||
<view class="pill-item" v-for="sub in group.children" :key="sub.id"
|
||||
:class="{ active: selectedSecondIds.includes(sub.id) }" @tap="toggleSecondSelect(sub.id)">
|
||||
{{ sub.title }}
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -54,18 +43,12 @@
|
|||
</scroll-view>
|
||||
|
||||
<view v-else class="course-filter">
|
||||
<view
|
||||
class="course-type-item"
|
||||
:class="{ active: selectedCourseType === 'platform' }"
|
||||
@tap="selectCourseType('platform')"
|
||||
>
|
||||
<view class="course-type-item" :class="{ active: selectedCourseType === 'platform' }"
|
||||
@tap="selectCourseType('platform')">
|
||||
平台课程
|
||||
</view>
|
||||
<view
|
||||
class="course-type-item"
|
||||
:class="{ active: selectedCourseType === 'brand' }"
|
||||
@tap="selectCourseType('brand')"
|
||||
>
|
||||
<view class="course-type-item" :class="{ active: selectedCourseType === 'brand' }"
|
||||
@tap="selectCourseType('brand')">
|
||||
品牌课程
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -79,30 +62,24 @@
|
|||
|
||||
<view class="collection-content" v-if="currentTab === 'brand'">
|
||||
<view class="brand-grid" v-if="filteredBrandList.length > 0">
|
||||
<brand-card
|
||||
class="brand-card-wrap"
|
||||
v-for="(item, index) in filteredBrandList"
|
||||
:key="index"
|
||||
:item="item"
|
||||
:tagKeys="item.tagKeys"
|
||||
@click="goToBrandDetail(item)"
|
||||
></brand-card>
|
||||
<brand-card class="brand-card-wrap" v-for="(item, index) in filteredBrandList" :key="index" :item="item"
|
||||
:tagKeys="item.tagKeys" @click="goToBrandDetail(item)"></brand-card>
|
||||
</view>
|
||||
<view class="empty-state" v-else>
|
||||
<image class="empty-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/da814ede-1adc-4f90-8cdf-5357a12fab27.png"></image>
|
||||
<image class="empty-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/da814ede-1adc-4f90-8cdf-5357a12fab27.png">
|
||||
</image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="collection-content" v-else>
|
||||
<view class="course-list" v-if="filteredCourseList.length > 0">
|
||||
<skill-card
|
||||
v-for="(item, index) in filteredCourseList"
|
||||
:key="index"
|
||||
:item="item"
|
||||
></skill-card>
|
||||
<skill-card v-for="(item, index) in filteredCourseList" :key="index" :item="item"></skill-card>
|
||||
</view>
|
||||
<view class="empty-state" v-else>
|
||||
<image class="empty-icon" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/da814ede-1adc-4f90-8cdf-5357a12fab27.png"></image>
|
||||
<image class="empty-icon"
|
||||
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/da814ede-1adc-4f90-8cdf-5357a12fab27.png">
|
||||
</image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
|
@ -216,7 +193,7 @@ export default {
|
|||
title: first.title,
|
||||
children: ((subRes.code === 200 || subRes.state === 1) && subRes.data) ? subRes.data : []
|
||||
}
|
||||
} catch(e) {
|
||||
} catch (e) {
|
||||
return { id: first.id, title: first.title, children: [] }
|
||||
}
|
||||
});
|
||||
|
|
@ -243,9 +220,9 @@ export default {
|
|||
// 课程筛选
|
||||
selectCourseType(type) {
|
||||
// 点击已选中的则取消选中
|
||||
if(this.selectedCourseType === type){
|
||||
if (this.selectedCourseType === type) {
|
||||
this.selectedCourseType = ''
|
||||
}else{
|
||||
} else {
|
||||
this.selectedCourseType = type
|
||||
}
|
||||
},
|
||||
|
|
@ -445,7 +422,8 @@ export default {
|
|||
|
||||
/* 将页面左右 padding 转移到内容区,保证 Tab 背景贯穿全屏 */
|
||||
.tab-bar-wrap {
|
||||
position: sticky; /* 吸顶,保证滑动页面时一直显示在最前面 */
|
||||
position: sticky;
|
||||
/* 吸顶,保证滑动页面时一直显示在最前面 */
|
||||
background: #fff;
|
||||
padding: 10rpx 24rpx;
|
||||
z-index: 101;
|
||||
|
|
@ -496,6 +474,7 @@ export default {
|
|||
width: 16rpx;
|
||||
height: 10rpx;
|
||||
transition: transform 0.3s ease;
|
||||
|
||||
/* 展开时图标倒转 */
|
||||
&.rotate {
|
||||
transform: rotate(180deg);
|
||||
|
|
@ -510,39 +489,52 @@ export default {
|
|||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 100; /* 低于 Tab区的101,保证隐藏时躲在其后 */
|
||||
pointer-events: none; /* 面板关闭时,穿透点击到底部列表 */
|
||||
overflow: hidden; /* 防止抽屉向上滑出时外溢 */
|
||||
z-index: 100;
|
||||
/* 低于 Tab区的101,保证隐藏时躲在其后 */
|
||||
pointer-events: none;
|
||||
/* 面板关闭时,穿透点击到底部列表 */
|
||||
overflow: hidden;
|
||||
/* 防止抽屉向上滑出时外溢 */
|
||||
|
||||
&.show {
|
||||
pointer-events: auto; /* 打开时恢复点击拦截 */
|
||||
pointer-events: auto;
|
||||
|
||||
/* 打开时恢复点击拦截 */
|
||||
.filter-mask {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.filter-container {
|
||||
transform: translateY(50rpx); /* 滑出 */
|
||||
transform: translateY(50rpx);
|
||||
/* 滑出 */
|
||||
}
|
||||
}
|
||||
|
||||
.filter-mask {
|
||||
position: absolute;
|
||||
top: 0; left: 0; right: 0; bottom: 0;
|
||||
background: rgba(0,0,0,0.4);
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.filter-container {
|
||||
position: absolute;
|
||||
top: 0; left: 0; right: 0;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: #fff;
|
||||
border-radius: 0 0 30rpx 30rpx;
|
||||
padding: 40rpx 30rpx;
|
||||
max-height: 80vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-shadow: 0 10rpx 20rpx rgba(0,0,0,0.05);
|
||||
transform: translateY(-100%); /* 默认隐藏在上方(即Tab背后) */
|
||||
box-shadow: 0 10rpx 20rpx rgba(0, 0, 0, 0.05);
|
||||
transform: translateY(-100%);
|
||||
/* 默认隐藏在上方(即Tab背后) */
|
||||
transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||
}
|
||||
}
|
||||
|
|
@ -551,6 +543,7 @@ export default {
|
|||
.filter-scroll {
|
||||
max-height: 50vh;
|
||||
}
|
||||
|
||||
.filter-group {
|
||||
margin-bottom: 30rpx;
|
||||
|
||||
|
|
@ -571,7 +564,8 @@ export default {
|
|||
|
||||
/* 通用胶囊按钮 */
|
||||
.pill-item {
|
||||
width: calc(25% - 16rpx); /* 25%是一行四个,减去间距 */
|
||||
width: calc(25% - 16rpx);
|
||||
/* 25%是一行四个,减去间距 */
|
||||
height: 58rpx;
|
||||
background: #F5F5F5;
|
||||
font-weight: 400;
|
||||
|
|
@ -586,7 +580,8 @@ export default {
|
|||
|
||||
border-radius: 12rpx;
|
||||
transition: all 0.3s;
|
||||
box-sizing: border-box; /* 防止 padding 会撑大盒子 */
|
||||
box-sizing: border-box;
|
||||
/* 防止 padding 会撑大盒子 */
|
||||
|
||||
&.active {
|
||||
background: #FFF0F2;
|
||||
|
|
@ -621,7 +616,8 @@ export default {
|
|||
padding-top: 20rpx;
|
||||
/* border-top: 1rpx solid #F5F5F5; */
|
||||
|
||||
.reset-btn, .confirm-btn {
|
||||
.reset-btn,
|
||||
.confirm-btn {
|
||||
width: 47%;
|
||||
text-align: center;
|
||||
padding: 20rpx 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue