个人中心图标替换,收藏页面筛选按钮条件显示,入住第二步弹窗按钮颜色

This commit is contained in:
丁杰 2026-06-08 11:12:16 +08:00
parent a28cc75da8
commit e96c468c38
3 changed files with 253 additions and 252 deletions

View File

@ -317,7 +317,7 @@ export default {
title: "购买工时", title: "购买工时",
path: "/pages/shop/manHour/saleList", path: "/pages/shop/manHour/saleList",
go_id_type: 1, go_id_type: 1,
url: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/72520b2a-804c-4987-84ca-25e5247e65a2.png", url: "https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/742bd9c9-0f38-4c10-b0fb-9b1ecebfc18c.png",
}, },
], ],
}, },

View File

@ -16,7 +16,8 @@
收藏的课程 收藏的课程
</view> </view>
</view> </view>
<view class="filter-area" @tap="toggleFilterPanel"> <view class="filter-area" @tap="toggleFilterPanel"
v-if="currentTab === 'brand' ? rawBrandList.length > 0 : rawCourseList.length > 0">
<text class="filter-text">筛选</text> <text class="filter-text">筛选</text>
<image class="filter-icon" :src="filterIcon" mode="aspectFit" :class="{ 'rotate': filterVisible }"></image> <image class="filter-icon" :src="filterIcon" mode="aspectFit" :class="{ 'rotate': filterVisible }"></image>
</view> </view>

View File

@ -1,202 +1,200 @@
<template> <template>
<view class="qualification-page"> <view class="qualification-page">
<view class="section"> <view class="section">
<view class="section-title"> <view class="section-title">
<view class="title-bar"></view> <view class="title-bar"></view>
<text class="title-text">门店信息</text> <text class="title-text">门店信息</text>
</view> </view>
<view class="form-item-one box-cont"> <view class="form-item-one box-cont">
<view class="label-wrapper"> <view class="label-wrapper">
<text class="label required">店铺名称</text> <text class="label required">店铺名称</text>
<image class="label-icon" <image class="label-icon"
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108"
mode="aspectFit" @click="showTipPopup('name')"></image> mode="aspectFit" @click="showTipPopup('name')"></image>
</view> </view>
<input type="text" v-model="formData.name" placeholder="请输入营业执照的店铺名称" placeholder-class="placeholder" <input type="text" v-model="formData.name" placeholder="请输入营业执照的店铺名称" placeholder-class="placeholder"
class="input" @input="saveFormDataToLocalDebounce" /> class="input" @input="saveFormDataToLocalDebounce" />
</view> </view>
<view class="form-item-two box-cont" @click="showLocationPopup"> <view class="form-item-two box-cont" @click="showLocationPopup">
<text class="label required">门店所在地</text> <text class="label required">门店所在地</text>
<view class="picker-content"> <view class="picker-content">
<text :class="formData.dependency ? 'picker-value' : 'placeholder'"> <text :class="formData.dependency ? 'picker-value' : 'placeholder'">
{{ formData.dependency || '请选择' }} {{ formData.dependency || '请选择' }}
</text> </text>
<image <image
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3"
class="arrow-right" mode="aspectFit"></image> class="arrow-right" mode="aspectFit"></image>
</view> </view>
</view> </view>
<view class="form-item-two box-cont" @click="getAddressInfo"> <view class="form-item-two box-cont" @click="getAddressInfo">
<text class="label required">门店详细地址</text> <text class="label required">门店详细地址</text>
<view class="picker-content"> <view class="picker-content">
<text :class="formData.address ? 'picker-value' : 'placeholder'"> <text :class="formData.address ? 'picker-value' : 'placeholder'">
{{ formData.address || '请选择' }} {{ formData.address || '请选择' }}
</text> </text>
<image <image
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3"
class="arrow-right" mode="aspectFit"></image> class="arrow-right" mode="aspectFit"></image>
</view> </view>
</view> </view>
</view> </view>
<view class="section"> <view class="section">
<view class="section-title"> <view class="section-title">
<view class="title-bar"></view> <view class="title-bar"></view>
<text class="title-text">联系人信息</text> <text class="title-text">联系人信息</text>
</view> </view>
<view class="form-item box-cont"> <view class="form-item box-cont">
<text class="label required">您的身份</text> <text class="label required">您的身份</text>
<view class="radio-group"> <view class="radio-group">
<view class="radio-item" @click="setContactType('1')"> <view class="radio-item" @click="setContactType('1')">
<view class="radio" :class="{ checked: formData.contact_type === '1' }"> <view class="radio" :class="{ checked: formData.contact_type === '1' }">
<image v-if="formData.contact_type === '1'" <image v-if="formData.contact_type === '1'" src="/static/images/agree_y.png"
src="/static/images/agree_y.png" class="radio-icon-image" mode="aspectFit"></image>
class="radio-icon-image" mode="aspectFit"></image> </view>
</view> <text class="radio-label">法人</text>
<text class="radio-label">法人</text> </view>
</view> <view class="radio-item" @click="setContactType('2')">
<view class="radio-item" @click="setContactType('2')"> <view class="radio" :class="{ checked: formData.contact_type === '2' }">
<view class="radio" :class="{ checked: formData.contact_type === '2' }"> <image v-if="formData.contact_type === '2'" src="/static/images/agree_y.png"
<image v-if="formData.contact_type === '2'" class="radio-icon-image" mode="aspectFit"></image>
src="/static/images/agree_y.png" </view>
class="radio-icon-image" mode="aspectFit"></image> <text class="radio-label">其他</text>
</view> </view>
<text class="radio-label">其他</text> </view>
</view> </view>
</view>
</view>
<view class="form-item-one box-cont"> <view class="form-item-one box-cont">
<text class="label required">联系人</text> <text class="label required">联系人</text>
<input type="text" v-model="formData.contact_name" placeholder="请输入" placeholder-class="placeholder" <input type="text" v-model="formData.contact_name" placeholder="请输入" placeholder-class="placeholder"
class="input" @input="saveFormDataToLocalDebounce" /> class="input" @input="saveFormDataToLocalDebounce" />
</view> </view>
<view class="form-item-one box-cont"> <view class="form-item-one box-cont">
<text class="label required">联系人电话</text> <text class="label required">联系人电话</text>
<input type="number" v-model="formData.contact_phone" placeholder="请输入联系电话" <input type="number" v-model="formData.contact_phone" placeholder="请输入联系电话"
placeholder-class="placeholder" class="input" @input="saveFormDataToLocalDebounce" /> placeholder-class="placeholder" class="input" @input="saveFormDataToLocalDebounce" />
</view> </view>
<view class="form-item-one box-cont"> <view class="form-item-one box-cont">
<text class="label">备用联系人电话</text> <text class="label">备用联系人电话</text>
<input type="number" v-model="formData.backup_phone" placeholder="请输入备用联系电话" <input type="number" v-model="formData.backup_phone" placeholder="请输入备用联系电话"
placeholder-class="placeholder" class="input" @input="saveFormDataToLocalDebounce" /> placeholder-class="placeholder" class="input" @input="saveFormDataToLocalDebounce" />
</view> </view>
</view> </view>
<view class="form-item-one-yqr box-cont invite-code-container"> <view class="form-item-one-yqr box-cont invite-code-container">
<view class="invite-code-top"> <view class="invite-code-top">
<view class="label-wrapper"> <view class="label-wrapper">
<text class="label required">邀请码</text> <text class="label required">邀请码</text>
</view> </view>
<input type="text" v-model="formData.invite_code_other" placeholder="请输入邀请码" <input type="text" v-model="formData.invite_code_other" placeholder="请输入邀请码"
placeholder-class="placeholder" class="input" @input="handleInviteCodeInput" /> placeholder-class="placeholder" class="input" @input="handleInviteCodeInput" />
</view> </view>
<!-- 分割线 --> <!-- 分割线 -->
<view class="divider"></view> <view class="divider"></view>
<!-- 邀请人信息 --> <!-- 邀请人信息 -->
<view class="invite-info-container"> <view class="invite-info-container">
<!-- 默认提示 --> <!-- 默认提示 -->
<text v-if="!formData.invite_code_other" class="invite-tip"> <text v-if="!formData.invite_code_other" class="invite-tip">
请填写邀请人的邀请码若没有邀请人请填写13131313 请填写邀请人的邀请码若没有邀请人请填写13131313
</text> </text>
<!-- 验证中 --> <!-- 验证中 -->
<view v-else-if="inviteCodeValidating" class="invite-validating"> <view v-else-if="inviteCodeValidating" class="invite-validating">
<text>验证中...</text> <text>验证中...</text>
</view> </view>
<!-- 验证失败 --> <!-- 验证失败 -->
<view v-else-if="inviteCodeError" class="invite-error" :class="{ 'shake-animation': shakeInviteError }"> <view v-else-if="inviteCodeError" class="invite-error" :class="{ 'shake-animation': shakeInviteError }">
<text>邀请码无效</text> <text>邀请码无效</text>
</view> </view>
<!-- 特殊邀请码13131313 --> <!-- 特殊邀请码13131313 -->
<view v-else-if="formData.invite_code_other === '13131313' && !inviterInfo" class="invite-tip"> <view v-else-if="formData.invite_code_other === '13131313' && !inviterInfo" class="invite-tip">
请填写邀请人的邀请码若没有邀请人请填写13131313 请填写邀请人的邀请码若没有邀请人请填写13131313
</view> </view>
<!-- 显示邀请人信息 --> <!-- 显示邀请人信息 -->
<view v-else-if="inviterInfo" class="inviter-info"> <view v-else-if="inviterInfo" class="inviter-info">
<text class="inviter-label">邀请人</text> <text class="inviter-label">邀请人</text>
<text class="inviter-name">{{ inviterInfo.name || inviterInfo.nick_name }}</text> <text class="inviter-name">{{ inviterInfo.name || inviterInfo.nick_name }}</text>
<text class="inviter-divider">/</text> <text class="inviter-divider">/</text>
<text class="inviter-phone">{{ inviterInfo.account }}</text> <text class="inviter-phone">{{ inviterInfo.account }}</text>
</view> </view>
<!-- 其他情况接口返回成功但没有认证铁军的邀请码 --> <!-- 其他情况接口返回成功但没有认证铁军的邀请码 -->
<view v-else class="invite-error" :class="{ 'shake-animation': shakeInviteError }"> <view v-else class="invite-error" :class="{ 'shake-animation': shakeInviteError }">
<text>邀请码无效</text> <text>邀请码无效</text>
</view> </view>
</view> </view>
</view> </view>
<view class="popup" :class="{ show: showLocationPopupFlag }"> <view class="popup" :class="{ show: showLocationPopupFlag }">
<view class="popup-mask" @click="hideLocationPopup"></view> <view class="popup-mask" @click="hideLocationPopup"></view>
<view class="popup-content"> <view class="popup-content">
<view class="popup-header"> <view class="popup-header">
<text class="popup-title">选择所在地</text> <text class="popup-title">选择所在地</text>
<text class="popup-close" @click="hideLocationPopup">×</text> <text class="popup-close" @click="hideLocationPopup">×</text>
</view> </view>
<view class="region-body"> <view class="region-body">
<picker-view @change="bindChangeLocation" class="picker-scroll" :indicator-style="indicatorStyle" <picker-view @change="bindChangeLocation" class="picker-scroll" :indicator-style="indicatorStyle"
:value="locationValue"> :value="locationValue">
<picker-view-column> <picker-view-column>
<view class="picker-item" v-for="(item, index) in ChinaCitys" :key="index"> <view class="picker-item" v-for="(item, index) in ChinaCitys" :key="index">
{{ item.province }} {{ item.province }}
</view> </view>
</picker-view-column> </picker-view-column>
<picker-view-column> <picker-view-column>
<view class="picker-item" v-for="(item, index) in locatinCitys" :key="index"> <view class="picker-item" v-for="(item, index) in locatinCitys" :key="index">
{{ item.city }} {{ item.city }}
</view> </view>
</picker-view-column> </picker-view-column>
<picker-view-column> <picker-view-column>
<view class="picker-item" v-for="(item, index) in locationAreas" :key="index"> <view class="picker-item" v-for="(item, index) in locationAreas" :key="index">
{{ item.area }} {{ item.area }}
</view> </view>
</picker-view-column> </picker-view-column>
</picker-view> </picker-view>
</view> </view>
<view class="popup-footer"> <view class="popup-footer">
<view class="popup-btn cancel" @click="hideLocationPopup"> <view class="popup-btn confirm" @click="hideLocationPopup">
<text class="btn-text">取消</text> <text class="btn-text">取消</text>
</view> </view>
<view class="popup-btn confirm" @click="confirmLocationSelect"> <view class="popup-btn confirm" @click="confirmLocationSelect">
<text class="btn-text">确定</text> <text class="btn-text">确定</text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="tip-popup" :class="{ show: showTipPopupFlag }"> <view class="tip-popup" :class="{ show: showTipPopupFlag }">
<view class="tip-popup-mask" @click="hideTipPopup"></view> <view class="tip-popup-mask" @click="hideTipPopup"></view>
<view class="tip-popup-content"> <view class="tip-popup-content">
<image class="tip-popup-bg" <image class="tip-popup-bg"
src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ab410a5d-5819-47f2-a0fc-3fd6b90d6770" src="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ab410a5d-5819-47f2-a0fc-3fd6b90d6770"
mode="aspectFit"></image> mode="aspectFit"></image>
<view class="tip-popup-body"> <view class="tip-popup-body">
<view class="tip-title">{{ tipTitle }}</view> <view class="tip-title">{{ tipTitle }}</view>
<view class="tip-image-container"> <view class="tip-image-container">
<image class="tip-image" :class="currentTipType" :src="tipImage" mode="widthFix"></image> <image class="tip-image" :class="currentTipType" :src="tipImage" mode="widthFix"></image>
</view> </view>
<view class="tip-buttons"> <view class="tip-buttons">
<view class="tip-btn cancel" @click="hideTipPopup"> <view class="tip-btn cancel" @click="hideTipPopup">
<text class="btn-text">取消</text> <text class="btn-text">取消</text>
</view> </view>
<view class="tip-btn confirm" @click="hideTipPopup"> <view class="tip-btn confirm" @click="hideTipPopup">
<text class="btn-text">我已了解</text> <text class="btn-text">我已了解</text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<uni-popup ref="existingInvitePopup" type="center" :mask-click="false"> <uni-popup ref="existingInvitePopup" type="center" :mask-click="false">
<view class="invite-popup-content"> <view class="invite-popup-content">
@ -206,11 +204,13 @@
<view class="invite-popup-body"> <view class="invite-popup-body">
<view class="invite-item"> <view class="invite-item">
<text class="invite-label">邀请码</text> <text class="invite-label">邀请码</text>
<text class="invite-value">{{ existingInviterInfo && (existingInviterInfo.invite_code || existingInviterInfo.invite_code_other) }}</text> <text class="invite-value">{{ existingInviterInfo && (existingInviterInfo.invite_code ||
existingInviterInfo.invite_code_other) }}</text>
</view> </view>
<view class="invite-item"> <view class="invite-item">
<text class="invite-label">邀请人</text> <text class="invite-label">邀请人</text>
<text class="invite-value">{{ (existingInviterInfo && (existingInviterInfo.name || existingInviterInfo.nick_name)) || '' }}</text> <text class="invite-value">{{ (existingInviterInfo && (existingInviterInfo.name ||
existingInviterInfo.nick_name)) || '' }}</text>
</view> </view>
</view> </view>
<view class="invite-popup-footer"> <view class="invite-popup-footer">
@ -1659,93 +1659,93 @@ export default {
/* 邀请码和禁用样式 */ /* 邀请码和禁用样式 */
/* 输入框禁用样式 */ /* 输入框禁用样式 */
.input:disabled { .input:disabled {
color: #999999; color: #999999;
background-color: #F5F5F5; background-color: #F5F5F5;
} }
/* 邀请码确认弹窗样式 */ /* 邀请码确认弹窗样式 */
.invite-popup-content { .invite-popup-content {
width: 571rpx; width: 571rpx;
height: 535rpx; height: 535rpx;
background-image: url('https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/6f130301-f3df-467c-8a1c-dc49f85e5295.png'); background-image: url('https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/6f130301-f3df-467c-8a1c-dc49f85e5295.png');
background-size: cover; background-size: cover;
background-position: center; background-position: center;
border-radius: 30rpx; border-radius: 30rpx;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
padding: 40rpx; padding: 40rpx;
box-sizing: border-box; box-sizing: border-box;
} }
.invite-popup-header { .invite-popup-header {
width: 100%; width: 100%;
text-align: center; text-align: center;
margin-bottom: 40rpx; margin-bottom: 40rpx;
} }
.invite-popup-title { .invite-popup-title {
font-size: 36rpx; font-size: 36rpx;
font-weight: 500; font-weight: 500;
color: #333333; color: #333333;
} }
.invite-popup-body { .invite-popup-body {
flex: 1; flex: 1;
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 24rpx; gap: 24rpx;
margin-top: 20rpx; margin-top: 20rpx;
} }
.invite-item { .invite-item {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 20rpx; padding: 20rpx;
background-color: rgba(255, 255, 255, 0.9); background-color: rgba(255, 255, 255, 0.9);
border-radius: 16rpx; border-radius: 16rpx;
} }
.invite-label { .invite-label {
font-size: 28rpx; font-size: 28rpx;
color: #666666; color: #666666;
} }
.invite-value { .invite-value {
font-size: 28rpx; font-size: 28rpx;
color: #333333; color: #333333;
font-weight: 500; font-weight: 500;
} }
.invite-popup-footer { .invite-popup-footer {
width: 100%; width: 100%;
display: flex; display: flex;
gap: 20rpx; gap: 20rpx;
margin-top: 40rpx; margin-top: 40rpx;
} }
.invite-btn { .invite-btn {
flex: 1; flex: 1;
height: 88rpx; height: 88rpx;
border-radius: 44rpx; border-radius: 44rpx;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 32rpx; font-size: 32rpx;
font-weight: 500; font-weight: 500;
margin: 0 5rpx; margin: 0 5rpx;
} }
.invite-btn.cancel { .invite-btn.cancel {
background-color: #FFFFFF; background-color: #FFFFFF;
color: #FC437C; color: #FC437C;
border: 2rpx solid #FC437C; border: 2rpx solid #FC437C;
} }
.invite-btn.confirm { .invite-btn.confirm {
background: linear-gradient(90deg, #FC437C 0%, #FF618F 100%); background: linear-gradient(90deg, #FC437C 0%, #FF618F 100%);
color: #FFFFFF; color: #FFFFFF;
} }
</style> </style>