|
@@ -0,0 +1,376 @@
|
|
|
|
|
+<template>
|
|
|
|
|
+ <view class="container">
|
|
|
|
|
+ <!-- 警告头部 -->
|
|
|
|
|
+ <view class="header">
|
|
|
|
|
+ <view class="header-bg"></view>
|
|
|
|
|
+ <!-- 警告图标 -->
|
|
|
|
|
+ <view class="warn-icon-wrap">
|
|
|
|
|
+ <svg class="warn-icon" viewBox="0 0 120 120">
|
|
|
|
|
+ <circle cx="60" cy="60" r="52" fill="none" stroke="#FFFFFF" stroke-width="4" opacity="0.3"/>
|
|
|
|
|
+ <circle cx="60" cy="60" r="44" fill="rgba(255,255,255,0.15)"/>
|
|
|
|
|
+ <line x1="60" y1="32" x2="60" y2="70" stroke="#FFFFFF" stroke-width="6" stroke-linecap="round"/>
|
|
|
|
|
+ <circle cx="60" cy="86" r="5" fill="#FFFFFF"/>
|
|
|
|
|
+ </svg>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <text class="header-title">分数未达标</text>
|
|
|
|
|
+ <text class="header-subtitle">暂不符合先享后付开通条件</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 分数卡片 -->
|
|
|
|
|
+ <view class="score-card">
|
|
|
|
|
+ <text class="score-label">您的微信支付分</text>
|
|
|
|
|
+ <view class="score-value-row">
|
|
|
|
|
+ <text class="score-number">480</text>
|
|
|
|
|
+ <text class="score-unit">分</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="score-threshold">
|
|
|
|
|
+ <text class="threshold-text">550分及以上可开通</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <!-- 进度条 -->
|
|
|
|
|
+ <view class="progress-bar">
|
|
|
|
|
+ <view class="progress-track">
|
|
|
|
|
+ <view class="progress-fill" :style="{ width: '58%' }"></view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="progress-labels">
|
|
|
|
|
+ <text class="progress-label">0</text>
|
|
|
|
|
+ <text class="progress-label progress-label--goal">550</text>
|
|
|
|
|
+ <text class="progress-label">850+</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 如何提升分数 -->
|
|
|
|
|
+ <view class="tips-section">
|
|
|
|
|
+ <text class="section-title">如何提升支付分</text>
|
|
|
|
|
+
|
|
|
|
|
+ <view class="tip-card">
|
|
|
|
|
+ <view class="tip-item">
|
|
|
|
|
+ <view class="tip-num">1</view>
|
|
|
|
|
+ <view class="tip-content">
|
|
|
|
|
+ <text class="tip-title">完善个人信息</text>
|
|
|
|
|
+ <text class="tip-desc">在微信支付中完善实名信息、绑定银行卡等资料</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <view class="tip-item">
|
|
|
|
|
+ <view class="tip-num">2</view>
|
|
|
|
|
+ <view class="tip-content">
|
|
|
|
|
+ <text class="tip-title">保持良好的支付习惯</text>
|
|
|
|
|
+ <text class="tip-desc">按时支付各类生活缴费、信用卡还款等</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <view class="tip-item">
|
|
|
|
|
+ <view class="tip-num">3</view>
|
|
|
|
|
+ <view class="tip-content">
|
|
|
|
|
+ <text class="tip-title">多使用微信支付</text>
|
|
|
|
|
+ <text class="tip-desc">日常消费多使用微信支付,积累信用记录</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <view class="tip-item">
|
|
|
|
|
+ <view class="tip-num">4</view>
|
|
|
|
|
+ <view class="tip-content">
|
|
|
|
|
+ <text class="tip-title">遵守信用约定</text>
|
|
|
|
|
+ <text class="tip-desc">按时履约,避免产生违约记录</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 温馨提示 -->
|
|
|
|
|
+ <view class="notice-card">
|
|
|
|
|
+ <text class="notice-icon">💡</text>
|
|
|
|
|
+ <text class="notice-text">微信支付分每月1日更新,保持良好的信用行为有助于提升分数</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 品牌标语 -->
|
|
|
|
|
+ <view class="brand-wrap">
|
|
|
|
|
+ <BrandSlogan type="score" :score="550" :dark="true" :mono="true" />
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 底部按钮 -->
|
|
|
|
|
+ <view class="footer">
|
|
|
|
|
+ <button class="btn-back" @click="handleBack">暂不开通</button>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script setup lang="ts">
|
|
|
|
|
+import BrandSlogan from '@/components/BrandSlogan.vue'
|
|
|
|
|
+
|
|
|
|
|
+const handleBack = () => {
|
|
|
|
|
+ uni.navigateBack({
|
|
|
|
|
+ fail: () => {
|
|
|
|
|
+ uni.reLaunch({ url: '/pages/index/index' })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+</script>
|
|
|
|
|
+
|
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
|
+.container {
|
|
|
|
|
+ min-height: 100vh;
|
|
|
|
|
+ background: $color-bg-secondary;
|
|
|
|
|
+ padding-bottom: 160rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 警告头部 */
|
|
|
|
|
+.header {
|
|
|
|
|
+ background: linear-gradient(135deg, #FF9800, #F57C00);
|
|
|
|
|
+ padding: 48rpx 40rpx 44rpx;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.header-bg {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ top: -60rpx;
|
|
|
|
|
+ right: -40rpx;
|
|
|
|
|
+ width: 240rpx;
|
|
|
|
|
+ height: 240rpx;
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ background: rgba(255, 255, 255, 0.06);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.warn-icon-wrap {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ margin-bottom: 24rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.warn-icon {
|
|
|
|
|
+ width: 120rpx;
|
|
|
|
|
+ height: 120rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.header-title {
|
|
|
|
|
+ font-size: 44rpx;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ color: #FFFFFF;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ margin-bottom: 8rpx;
|
|
|
|
|
+ letter-spacing: 4rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.header-subtitle {
|
|
|
|
|
+ font-size: 26rpx;
|
|
|
|
|
+ color: rgba(255, 255, 255, 0.85);
|
|
|
|
|
+ display: block;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 分数卡片 */
|
|
|
|
|
+.score-card {
|
|
|
|
|
+ margin: -30rpx 30rpx 30rpx;
|
|
|
|
|
+ background: $color-bg-primary;
|
|
|
|
|
+ border-radius: 20rpx;
|
|
|
|
|
+ padding: 40rpx 32rpx 36rpx;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.06);
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ z-index: 1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.score-label {
|
|
|
|
|
+ font-size: 26rpx;
|
|
|
|
|
+ color: $color-text-secondary;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ margin-bottom: 12rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.score-value-row {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: baseline;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ margin-bottom: 16rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.score-number {
|
|
|
|
|
+ font-size: 96rpx;
|
|
|
|
|
+ font-weight: 800;
|
|
|
|
|
+ color: $color-warning;
|
|
|
|
|
+ line-height: 1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.score-unit {
|
|
|
|
|
+ font-size: 32rpx;
|
|
|
|
|
+ color: $color-text-secondary;
|
|
|
|
|
+ margin-left: 8rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.score-threshold {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ margin-bottom: 28rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.threshold-text {
|
|
|
|
|
+ font-size: 26rpx;
|
|
|
|
|
+ color: $color-error;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ background: rgba(244, 67, 54, 0.06);
|
|
|
|
|
+ padding: 10rpx 24rpx;
|
|
|
|
|
+ border-radius: 20rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 进度条 */
|
|
|
|
|
+.progress-bar {
|
|
|
|
|
+ padding: 0 8rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.progress-track {
|
|
|
|
|
+ height: 12rpx;
|
|
|
|
|
+ background: $color-bg-tertiary;
|
|
|
|
|
+ border-radius: 6rpx;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ margin-bottom: 12rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.progress-fill {
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ background: linear-gradient(90deg, $color-warning, #FF7043);
|
|
|
|
|
+ border-radius: 6rpx;
|
|
|
|
|
+ transition: width 0.6s ease;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.progress-labels {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.progress-label {
|
|
|
|
|
+ font-size: 20rpx;
|
|
|
|
|
+ color: $color-text-tertiary;
|
|
|
|
|
+
|
|
|
|
|
+ &--goal {
|
|
|
|
|
+ color: $color-error;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 提升建议 */
|
|
|
|
|
+.tips-section {
|
|
|
|
|
+ padding: 0 30rpx;
|
|
|
|
|
+ margin-bottom: 24rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .section-title {
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ color: $color-text-primary;
|
|
|
|
|
+ margin-bottom: 20rpx;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.tip-card {
|
|
|
|
|
+ background: $color-bg-primary;
|
|
|
|
|
+ border-radius: 16rpx;
|
|
|
|
|
+ padding: 28rpx 28rpx 8rpx;
|
|
|
|
|
+ box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.04);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.tip-item {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: flex-start;
|
|
|
|
|
+ margin-bottom: 24rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.tip-num {
|
|
|
|
|
+ width: 44rpx;
|
|
|
|
|
+ height: 44rpx;
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ background: $color-bg-tertiary;
|
|
|
|
|
+ color: $color-text-secondary;
|
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+ margin-right: 20rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.tip-content {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.tip-title {
|
|
|
|
|
+ font-size: 28rpx;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ color: $color-text-primary;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ margin-bottom: 6rpx;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.tip-desc {
|
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
|
+ color: $color-text-secondary;
|
|
|
|
|
+ line-height: 1.5;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 温馨提示 */
|
|
|
|
|
+.notice-card {
|
|
|
|
|
+ margin: 0 30rpx 24rpx;
|
|
|
|
|
+ background: rgba(255, 152, 0, 0.05);
|
|
|
|
|
+ border: 2rpx solid rgba(255, 152, 0, 0.15);
|
|
|
|
|
+ border-radius: 14rpx;
|
|
|
|
|
+ padding: 24rpx 28rpx;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: flex-start;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.notice-icon {
|
|
|
|
|
+ font-size: 36rpx;
|
|
|
|
|
+ margin-right: 16rpx;
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.notice-text {
|
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
|
+ color: $color-text-secondary;
|
|
|
|
|
+ line-height: 1.6;
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 品牌标语 */
|
|
|
|
|
+.brand-wrap {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ padding: 0 30rpx;
|
|
|
|
|
+ margin-bottom: 16rpx;
|
|
|
|
|
+ opacity: 0.5;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 底部按钮 */
|
|
|
|
|
+.footer {
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ bottom: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ right: 0;
|
|
|
|
|
+ padding: 24rpx 40rpx;
|
|
|
|
|
+ padding-bottom: calc(24rpx + env(safe-area-inset-bottom));
|
|
|
|
|
+ background: $color-bg-primary;
|
|
|
|
|
+ box-shadow: 0 -2rpx 12rpx rgba(0, 0, 0, 0.05);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-back {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 88rpx;
|
|
|
|
|
+ background: $color-bg-tertiary;
|
|
|
|
|
+ border-radius: 44rpx;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ font-size: 32rpx;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ color: $color-text-secondary;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+
|
|
|
|
|
+ &:active {
|
|
|
|
|
+ background: $color-border;
|
|
|
|
|
+ transform: scale(0.98);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|