| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- <template>
- <view class="container">
- <!-- 自定义头部 -->
- <view class="custom-header">
- <view class="header-left" @click="navBack">
- <image class="back-icon" src="/static/icons/chevron_right_dark.svg" style="transform: rotate(180deg);"></image>
- </view>
- <text class="header-title">认证信息</text>
- <view class="header-right"></view>
- </view>
- <view class="header-placeholder"></view>
- <!-- 身份认证 -->
- <view class="card">
- <view class="section-header">
- <view class="orange-bar"></view>
- <text class="section-title">身份认证</text>
- <view class="tag-orange" v-if="authInfo.pendingAudit">认证中</view>
- <view class="tag-green" v-else-if="authInfo.authId">已认证</view>
- <view class="tag-gray" v-else>未认证</view>
- </view>
- <view class="info-row">
- <text class="label">真实姓名</text>
- <text class="value">{{ authInfo.realName || '未设置' }}</text>
- </view>
- <view class="info-row">
- <text class="label">证件号码</text>
- <text class="value">{{ maskIdCard(authInfo.idCard) || '未设置' }}</text>
- </view>
- <view class="id-card-row">
- <view class="id-card-box green-bg" v-if="authInfo.idCardFront">
- <image class="id-card-img" :src="authInfo.idCardFront" mode="aspectFill"></image>
- <view class="corner-tag">人像面</view>
- </view>
- <view class="id-card-box green-bg" v-else>
- <text class="id-text">ID Front</text>
- <view class="corner-tag">人像面</view>
- </view>
- <view class="id-card-box green-bg" v-if="authInfo.idCardBack">
- <image class="id-card-img" :src="authInfo.idCardBack" mode="aspectFill"></image>
- <view class="corner-tag">国徽面</view>
- </view>
- <view class="id-card-box green-bg" v-else>
- <text class="id-text">ID Back</text>
- <view class="corner-tag">国徽面</view>
- </view>
- </view>
- </view>
- <!-- 服务类型 -->
- <view class="card">
- <view class="section-header">
- <view class="orange-bar"></view>
- <text class="section-title">服务类型</text>
- </view>
- <view class="tags-row">
- <view class="service-tag" v-for="(type, index) in authInfo.serviceTypes" :key="index">{{ type }}</view>
- <text v-if="authInfo.serviceTypes.length === 0" class="empty-text">暂无服务类型</text>
- </view>
- </view>
- <!-- 资质证书 -->
- <view class="card">
- <view class="section-header">
- <view class="orange-bar"></view>
- <text class="section-title">资质证书</text>
- </view>
-
- <text class="sub-title">{{ authInfo.authQual ? '已认证' : '未认证' }}</text>
- <view class="cert-row">
- <view class="cert-box yellow-bg" v-for="(img, index) in authInfo.qualImages" :key="index">
- <image class="cert-img" :src="img" mode="aspectFill"></image>
- </view>
- <text v-if="authInfo.qualImages.length === 0" class="empty-text">暂无资质证书</text>
- </view>
- </view>
- <!-- 修改按钮 -->
- <view class="bottom-btn-area">
- <button class="action-btn disabled" v-if="authInfo.pendingAudit" disabled>认证审核中...</button>
- <button class="action-btn" v-else @click="editAuth">修改认证信息</button>
- <text class="tips" v-if="authInfo.pendingAudit">认证信息正在审核中,请耐心等待</text>
- <text class="tips" v-else>修改认证信息需要重新审核,审核期间无法接单</text>
- </view>
- </view>
- </template>
- <script>
- import { getAuthInfo } from '@/api/fulfiller'
- export default {
- data() {
- return {
- authInfo: {
- realName: '',
- idCard: '',
- idCardFront: '',
- idCardBack: '',
- serviceTypes: [],
- authId: false,
- authQual: false,
- pendingAudit: false,
- qualImages: []
- }
- }
- },
- onLoad() {
- this.loadAuthInfo()
- },
- methods: {
- navBack() {
- uni.navigateBack({
- delta: 1
- });
- },
- async loadAuthInfo() {
- try {
- const res = await getAuthInfo()
- if (res.code === 200 && res.data) {
- this.authInfo = {
- realName: res.data.realName || '',
- idCard: res.data.idCard || '',
- idCardFront: res.data.idCardFrontUrl || '',
- idCardBack: res.data.idCardBackUrl || '',
- serviceTypes: res.data.serviceTypeList || [],
- authId: res.data.authId || false,
- authQual: res.data.authQual || false,
- pendingAudit: res.data.pendingAudit || false,
- qualImages: res.data.qualImageUrls || []
- }
- }
- } catch (e) {
- console.error('加载认证信息失败', e)
- uni.showToast({ title: '加载失败', icon: 'none' })
- }
- },
- maskIdCard(idCard) {
- if (!idCard || idCard.length < 8) return idCard
- return idCard.substring(0, 4) + '**********' + idCard.substring(idCard.length - 4)
- },
- editAuth() {
- uni.showModal({
- title: '提示',
- content: '修改认证信息需要重新审核,审核期间无法接单,确定要继续吗?',
- success: (res) => {
- if (res.confirm) {
- uni.navigateTo({
- url: '/pages/mine/settings/auth/edit'
- })
- }
- }
- })
- }
- }
- }
- </script>
- <style>
- page {
- background-color: #F8F8F8;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
- }
- .custom-header {
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 88rpx;
- padding-top: var(--status-bar-height);
- background-color: #fff;
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding-left: 30rpx;
- padding-right: 30rpx;
- box-sizing: content-box;
- z-index: 100;
- }
- .header-placeholder {
- height: calc(88rpx + var(--status-bar-height));
- }
- .back-icon {
- width: 40rpx;
- height: 40rpx;
- }
- .header-title {
- font-size: 28rpx;
- font-weight: bold;
- color: #333;
- }
- .header-right {
- width: 40rpx;
- }
- .container {
- padding: 20rpx 30rpx;
- padding-bottom: 100rpx;
- }
- .card {
- background-color: #fff;
- border-radius: 20rpx;
- padding: 30rpx;
- margin-bottom: 30rpx;
- }
- .section-header {
- display: flex;
- align-items: center;
- margin-bottom: 30rpx;
- }
- .orange-bar {
- width: 8rpx;
- height: 32rpx;
- background-color: #FF5722;
- border-radius: 4rpx;
- margin-right: 16rpx;
- }
- .section-title {
- font-size: 32rpx;
- font-weight: bold;
- color: #333;
- flex: 1;
- }
- .tag-green {
- font-size: 24rpx;
- color: #4CAF50;
- background-color: #E8F5E9;
- padding: 4rpx 12rpx;
- border-radius: 8rpx;
- }
- .tag-orange {
- font-size: 24rpx;
- color: #FF9800;
- background-color: #FFF3E0;
- padding: 4rpx 12rpx;
- border-radius: 8rpx;
- }
- .tag-red {
- font-size: 24rpx;
- color: #F44336;
- background-color: #FFEBEE;
- padding: 4rpx 12rpx;
- border-radius: 8rpx;
- }
- .tag-gray {
- font-size: 24rpx;
- color: #999;
- background-color: #F5F5F5;
- padding: 4rpx 12rpx;
- border-radius: 8rpx;
- }
- .info-row {
- display: flex;
- justify-content: space-between;
- margin-bottom: 20rpx;
- }
- .label {
- font-size: 28rpx;
- color: #999;
- }
- .value {
- font-size: 28rpx;
- color: #333;
- font-weight: 500;
- }
- .id-card-row {
- display: flex;
- justify-content: space-between;
- margin-top: 20rpx;
- }
- .id-card-box {
- width: 48%;
- height: 180rpx;
- border-radius: 12rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- position: relative;
- overflow: hidden;
- }
- .green-bg {
- background-color: #E8F5E9;
- }
- .id-text {
- font-size: 36rpx;
- color: #4CAF50;
- font-weight: bold;
- }
- .corner-tag {
- position: absolute;
- right: 0;
- bottom: 0;
- background-color: rgba(0,0,0,0.5);
- color: #fff;
- font-size: 20rpx;
- padding: 4rpx 10rpx;
- border-top-left-radius: 8rpx;
- }
- .tags-row {
- display: flex;
- flex-wrap: wrap;
- }
- .service-tag {
- background-color: #FFF3E0;
- color: #FF9800;
- font-size: 26rpx;
- padding: 10rpx 30rpx;
- border-radius: 30rpx;
- margin-right: 20rpx;
- margin-bottom: 20rpx;
- }
- .sub-title {
- font-size: 28rpx;
- color: #666;
- margin-top: 10rpx;
- margin-bottom: 20rpx;
- display: block;
- }
- .cert-row {
- display: flex;
- flex-wrap: wrap;
- margin-bottom: 20rpx;
- }
- .cert-box {
- width: 180rpx;
- height: 180rpx;
- border-radius: 12rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- margin-right: 20rpx;
- margin-bottom: 20rpx;
- }
- .yellow-bg { background-color: #FFF8E1; }
- .blue-bg { background-color: #E3F2FD; }
- .green-light-bg { background-color: #F1F8E9; }
- .cert-text { font-size: 32rpx; font-weight: bold; }
- .cert-text.orange { color: #FFA000; }
- .cert-text.blue { color: #2196F3; }
- .cert-text.green { color: #8BC34A; }
- .id-card-img, .cert-img {
- width: 100%;
- height: 100%;
- border-radius: 12rpx;
- }
- .empty-text {
- font-size: 26rpx;
- color: #999;
- }
- .bottom-btn-area {
- margin-top: 40rpx;
- text-align: center;
- }
- .action-btn {
- background-color: #fff;
- color: #FF5722;
- border: 1px solid #FF5722;
- font-size: 32rpx;
- border-radius: 44rpx;
- height: 88rpx;
- line-height: 88rpx;
- }
- .action-btn.disabled {
- background-color: #F5F5F5;
- color: #999;
- border: 1px solid #E0E0E0;
- }
- .tips {
- display: block;
- font-size: 24rpx;
- color: #999;
- margin-top: 20rpx;
- }
- </style>
|