<template>
|
<view class="store-apply-page">
|
<view class="top-gradient"></view>
|
|
<view class="process-wrap">
|
<view class="process-step" :class="{ active: currentStep === 1 }" @tap="currentStep = 1">
|
<view class="step-dot"></view>
|
<text>门店信息</text>
|
</view>
|
<view class="process-line"></view>
|
<view class="process-step" :class="{ active: currentStep === 2 }" @tap="currentStep = 2">
|
<view class="step-dot step-index">2</view>
|
<text>主体资质</text>
|
</view>
|
</view>
|
|
<view v-if="currentStep === 1" class="form-card">
|
<text class="card-title">门店信息</text>
|
<text class="register-no">注册手机号:18155114565</text>
|
|
<view class="form-group">
|
<view class="label-row"><text class="label">门店名称</text><text class="required">*</text></view>
|
<input class="text-input" :value="previewMode === 'filled' ? '中铁快运南站旗舰店' : ''" placeholder="请输入门店名称" placeholder-class="placeholder" />
|
</view>
|
<view class="divider"></view>
|
|
<view class="form-group select-group">
|
<view class="label-row"><text class="label">所在城市</text><text class="required">*</text></view>
|
<view class="select-row">
|
<text class="select-text" :class="{ placeholder: previewMode === 'empty' }">{{ previewMode === 'filled' ? '安徽省/合肥市/庐阳区' : '请选择省市区' }}</text>
|
<u-icon name="arrow-right" size="18" color="#9FA6B2"></u-icon>
|
</view>
|
</view>
|
<view class="divider"></view>
|
|
<view class="form-group select-group">
|
<view class="label-row"><text class="label">门店地址</text><text class="required">*</text></view>
|
<view class="select-row">
|
<text class="select-text" :class="{ placeholder: previewMode === 'empty' }">{{ previewMode === 'filled' ? '九华山路201号' : '请选择地址' }}</text>
|
<u-icon name="arrow-right" size="18" color="#9FA6B2"></u-icon>
|
</view>
|
</view>
|
<view class="divider"></view>
|
|
<view class="form-group">
|
<view class="label-row"><text class="label">联系人</text><text class="required">*</text></view>
|
<input class="text-input" :value="previewMode === 'filled' ? '苏眠眠' : ''" placeholder="请输入联系人姓名" placeholder-class="placeholder" />
|
</view>
|
<view class="divider"></view>
|
|
<view class="form-group phone-group">
|
<view class="label-row"><text class="label">联系人电话</text><text class="required">*</text></view>
|
<view class="input-with-icon">
|
<input class="text-input" :value="previewMode === 'filled' ? '18155114565' : '18155114565'" placeholder="请输入联系人电话" placeholder-class="placeholder" />
|
<view class="clear-icon"></view>
|
</view>
|
</view>
|
<view class="divider"></view>
|
|
<view class="form-group">
|
<view class="label-row"><text class="label">联系人身份证号</text><text class="required">*</text></view>
|
<input class="text-input" :value="previewMode === 'filled' ? '340198273482934298' : ''" placeholder="请输入联系人电话" placeholder-class="placeholder" />
|
</view>
|
<view class="divider"></view>
|
|
<view class="upload-section">
|
<view class="upload-title-row between-row">
|
<view class="label-row"><text class="label">门店门头照片</text><text class="required">*</text></view>
|
<text class="upload-tip">最多上传3张照片</text>
|
</view>
|
<view class="upload-grid">
|
<view class="upload-box">
|
<image class="upload-icon" src="/static/image/btn_upload@2x.png" mode="widthFix"></image>
|
</view>
|
<template v-if="previewMode === 'filled'">
|
<view v-for="n in 2" :key="n" class="image-box">
|
<image class="preview-image" src="" mode="aspectFill"></image>
|
<text class="image-mark">删掉</text>
|
</view>
|
</template>
|
</view>
|
</view>
|
|
<view class="upload-section">
|
<view class="upload-title-row between-row">
|
<view class="label-row"><text class="label">门店内部招牌</text><text class="required">*</text></view>
|
<text class="upload-tip">最多上传3张照片</text>
|
</view>
|
<view class="upload-grid">
|
<view class="upload-box">
|
<image class="upload-icon" src="/static/image/btn_upload@2x.png" mode="widthFix"></image>
|
</view>
|
<template v-if="previewMode === 'filled'">
|
<view v-for="n in 3" :key="n" class="image-box">
|
<image class="preview-image" src="" mode="aspectFill"></image>
|
<text class="image-mark">删掉</text>
|
</view>
|
</template>
|
</view>
|
</view>
|
|
<view class="upload-section last-upload">
|
<view class="upload-title-row between-row">
|
<text class="label">其他材料</text>
|
<text class="upload-tip">最多上传3张照片</text>
|
</view>
|
<view class="upload-grid">
|
<view class="upload-box">
|
<image class="upload-icon" src="/static/image/btn_upload@2x.png" mode="widthFix"></image>
|
</view>
|
</view>
|
</view>
|
</view>
|
|
<view v-else class="form-card">
|
<text class="card-title">主体资质</text>
|
|
<view class="form-group subject-first-group">
|
<view class="label-row"><text class="label">门店类型</text><text class="required">*</text></view>
|
<view class="switch-row type-switch-row">
|
<view class="switch-pill" :class="{ active: qualificationType === 'personal' }" @tap="qualificationType = 'personal'">个人</view>
|
<view class="switch-pill" :class="{ active: qualificationType === 'company' }" @tap="qualificationType = 'company'">企业</view>
|
</view>
|
</view>
|
|
<template v-if="qualificationType === 'personal'">
|
<view class="form-group compact-group">
|
<view class="label-row"><text class="label">支付宝账号</text><text class="required">*</text></view>
|
<input class="text-input" :value="previewMode === 'filled' ? '18155114565@alipay.com' : ''" placeholder="请输入个人支付宝账号" placeholder-class="placeholder" />
|
</view>
|
<view class="divider"></view>
|
|
<view class="upload-section subject-upload-section">
|
<view class="upload-title-row">
|
<view class="label-row"><text class="label">身份证正反面</text><text class="required">*</text></view>
|
</view>
|
<view class="upload-grid double-upload-grid">
|
<view class="upload-box id-upload-box">
|
<image class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
|
<text class="upload-text">上传人像面</text>
|
</view>
|
<view class="upload-box id-upload-box">
|
<image class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
|
<text class="upload-text">上传国徽面</text>
|
</view>
|
</view>
|
</view>
|
|
<view class="upload-section subject-upload-section">
|
<view class="upload-title-row between-row">
|
<view class="label-row"><text class="label">有效劳动合同</text><text class="required">*</text></view>
|
<text class="upload-tip">最多上传3张照片</text>
|
</view>
|
<view class="upload-grid">
|
<view class="upload-box">
|
<image class="upload-icon" src="/static/image/btn_upload@2x.png" mode="widthFix"></image>
|
</view>
|
<template v-if="previewMode === 'filled'">
|
<view v-for="n in 3" :key="n" class="image-box">
|
<image class="preview-image" src="" mode="aspectFill"></image>
|
<text class="image-mark">删掉</text>
|
</view>
|
</template>
|
</view>
|
</view>
|
|
<view class="upload-section last-upload">
|
<view class="upload-title-row between-row">
|
<view class="label-row"><text class="label">社保缴纳证明</text><text class="required">*</text></view>
|
<text class="upload-tip">最多上传3张照片</text>
|
</view>
|
<view class="upload-grid">
|
<view class="upload-box">
|
<image class="upload-icon" src="/static/image/btn_upload@2x.png" mode="widthFix"></image>
|
</view>
|
<template v-if="previewMode === 'filled'">
|
<view class="image-box">
|
<image class="preview-image" src="" mode="aspectFill"></image>
|
<text class="image-mark">删掉</text>
|
</view>
|
</template>
|
</view>
|
</view>
|
</template>
|
|
<template v-else>
|
<view class="form-group compact-group">
|
<view class="label-row"><text class="label">法人姓名</text><text class="required">*</text></view>
|
<input class="text-input" :value="previewMode === 'filled' ? '张光宣' : ''" placeholder="请输入法人姓名" placeholder-class="placeholder" />
|
</view>
|
<view class="divider"></view>
|
|
<view class="form-group compact-group">
|
<view class="label-row"><text class="label">企业支付宝账号</text><text class="required">*</text></view>
|
<input class="text-input" :value="previewMode === 'filled' ? 'company@alipay.com' : ''" placeholder="请输入企业支付宝账号" placeholder-class="placeholder" />
|
</view>
|
<view class="divider"></view>
|
|
<view class="form-group compact-group">
|
<view class="label-row"><text class="label">法人身份证号</text><text class="required">*</text></view>
|
<input class="text-input" :value="previewMode === 'filled' ? '340198273482934298' : ''" placeholder="请输入法人身份证号码" placeholder-class="placeholder" />
|
</view>
|
<view class="divider"></view>
|
|
<view class="upload-section subject-upload-section">
|
<view class="upload-title-row">
|
<view class="label-row"><text class="label">法人身份证正反面</text><text class="required">*</text></view>
|
</view>
|
<view class="upload-grid double-upload-grid">
|
<view class="upload-box id-upload-box">
|
<image class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
|
<text class="upload-text">上传人像面</text>
|
</view>
|
<view class="upload-box id-upload-box">
|
<image class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
|
<text class="upload-text">上传国徽面</text>
|
</view>
|
</view>
|
</view>
|
|
<view class="upload-section last-upload">
|
<view class="upload-title-row">
|
<view class="label-row"><text class="label">营业执照</text><text class="required">*</text></view>
|
</view>
|
<view class="upload-grid">
|
<view class="upload-box license-upload-box">
|
<image class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
|
<text class="upload-text">点击上传</text>
|
</view>
|
</view>
|
</view>
|
</template>
|
</view>
|
|
<view class="bottom-btn-wrap">
|
<template v-if="currentStep === 1">
|
<view class="next-btn">下一步</view>
|
</template>
|
<template v-else>
|
<view class="footer-btn footer-plain-btn">上一步</view>
|
<view class="footer-btn footer-primary-btn">提交入驻申请</view>
|
</template>
|
</view>
|
</view>
|
</template>
|
|
<script>
|
export default {
|
data() {
|
return {
|
previewMode: 'filled',
|
currentStep: 2,
|
qualificationType: 'company'
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
.store-apply-page {
|
background: #f5fbff;
|
padding: 30rpx;
|
box-sizing: border-box;
|
}
|
|
.top-gradient {
|
position: absolute;
|
left: 0;
|
top: 0;
|
width: 100%;
|
height: 300rpx;
|
background: linear-gradient(180deg, #c6f0ff 0%, #effbff 100%);
|
z-index: 0;
|
}
|
|
.process-wrap,
|
.form-card,
|
.bottom-btn-wrap {
|
position: relative;
|
z-index: 1;
|
}
|
|
.process-wrap {
|
padding: 8rpx 28rpx 0;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
|
.process-step {
|
width: 130rpx;
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
color: #9ca3af;
|
font-size: 30rpx;
|
}
|
|
.process-step.active {
|
color: #222222;
|
}
|
|
.step-dot {
|
width: 26rpx;
|
height: 26rpx;
|
border-radius: 50%;
|
background: #16b0fa;
|
margin-bottom: 14rpx;
|
border: 5rpx solid #a2e2ff;
|
}
|
|
.step-index {
|
background: #b9bdc6;
|
font-size: 18rpx;
|
color: #ffffff;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
|
.process-line {
|
width: 200rpx;
|
height: 2rpx;
|
margin: 0 30rpx;
|
background-color: #a2e2ff;
|
}
|
|
.preview-pill {
|
min-width: 150rpx;
|
height: 56rpx;
|
padding: 0 18rpx;
|
border-radius: 28rpx;
|
background: #ffffff;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-size: 24rpx;
|
color: #6b7280;
|
box-shadow: 0 2rpx 10rpx rgba(18, 37, 58, 0.03);
|
}
|
|
.preview-pill.active {
|
background: #ebf8ff;
|
color: #18aaf7;
|
box-shadow: inset 0 0 0 2rpx #18aaf7;
|
}
|
|
.form-card {
|
background: #ffffff;
|
border-radius: 20rpx;
|
padding: 30rpx;
|
box-sizing: border-box;
|
margin-top: 40rpx;
|
box-shadow: 0 2rpx 20rpx rgba(0, 0, 0, 0.08);
|
}
|
|
.card-title {
|
display: block;
|
font-weight: 600;
|
font-size: 36rpx;
|
color: #222222;
|
}
|
|
.register-no {
|
display: block;
|
margin-top: 20rpx;
|
font-weight: 400;
|
font-size: 26rpx;
|
color: #6c717a;
|
}
|
|
.form-group {
|
padding: 30rpx 0;
|
box-sizing: border-box;
|
}
|
|
.subject-first-group {
|
padding-top: 24rpx;
|
padding-bottom: 24rpx;
|
}
|
|
.compact-group {
|
padding: 26rpx 0 22rpx;
|
}
|
|
.label-row {
|
display: flex;
|
align-items: center;
|
}
|
|
.label {
|
font-weight: 500;
|
font-size: 30rpx;
|
color: #222222;
|
}
|
|
.required {
|
margin-left: 2rpx;
|
font-size: 30rpx;
|
line-height: 1;
|
color: #ff4d4f;
|
}
|
|
.text-input,
|
.select-row {
|
height: 54rpx;
|
margin-top: 14rpx;
|
font-weight: 400;
|
font-size: 30rpx;
|
color: #111111;
|
}
|
|
.text-input {
|
width: 100%;
|
background: transparent;
|
}
|
|
.placeholder {
|
font-size: 28rpx;
|
color: #c1c7d0;
|
}
|
|
.select-row,
|
.input-with-icon {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
}
|
|
.select-text {
|
font-weight: 400;
|
font-size: 30rpx;
|
color: #333333;
|
}
|
|
.select-text.placeholder {
|
color: #c1c7d0;
|
}
|
|
.input-with-icon {
|
margin-top: 14rpx;
|
}
|
|
.input-with-icon .text-input {
|
margin-top: 0;
|
flex: 1;
|
}
|
|
.clear-icon {
|
width: 28rpx;
|
height: 28rpx;
|
border-radius: 50%;
|
background: #bfc3cb;
|
position: relative;
|
flex-shrink: 0;
|
}
|
|
.clear-icon::before,
|
.clear-icon::after {
|
content: '';
|
position: absolute;
|
left: 50%;
|
top: 50%;
|
width: 14rpx;
|
height: 2rpx;
|
background: #ffffff;
|
transform-origin: center;
|
}
|
|
.clear-icon::before {
|
transform: translate(-50%, -50%) rotate(45deg);
|
}
|
|
.clear-icon::after {
|
transform: translate(-50%, -50%) rotate(-45deg);
|
}
|
|
.divider {
|
height: 1rpx;
|
background: #e5e5e5;
|
}
|
|
.switch-row {
|
margin-top: 32rpx;
|
display: flex;
|
gap: 20rpx;
|
}
|
|
.type-switch-row {
|
margin-top: 32rpx;
|
}
|
|
.switch-pill {
|
width: 208rpx;
|
height: 72rpx;
|
border-radius: 36rpx;
|
background: #e8e8e8;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-size: 30rpx;
|
font-weight: 600;
|
color: #333333;
|
}
|
|
.switch-pill.active {
|
background: #10B2FA;
|
color: #ffffff;
|
}
|
|
.upload-section {
|
padding-top: 30rpx;
|
}
|
|
.subject-upload-section {
|
padding-top: 30rpx;
|
}
|
|
.last-upload {
|
padding-bottom: 8rpx;
|
}
|
|
.upload-title-row {
|
display: flex;
|
align-items: center;
|
}
|
|
.upload-tip {
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #999999;
|
margin-left: 20rpx;
|
}
|
|
.upload-grid {
|
margin-top: 32rpx;
|
display: flex;
|
align-items: flex-start;
|
flex-wrap: wrap;
|
gap: 12rpx;
|
}
|
|
.double-upload-grid {
|
gap: 16rpx;
|
}
|
|
.upload-box,
|
.image-box {
|
width: 144rpx;
|
height: 144rpx;
|
border-radius: 10rpx;
|
overflow: hidden;
|
position: relative;
|
}
|
|
.upload-box {
|
background: #f7f8fa;
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
justify-content: center;
|
}
|
|
.id-upload-box,
|
.license-upload-box {
|
width: 304rpx;
|
height: 196rpx;
|
background: #F7F7F7;
|
border-radius: 16rpx;
|
}
|
|
.camera-icon {
|
width: 48rpx;
|
height: 42rpx;
|
}
|
|
.upload-icon {
|
width: 144rpx;
|
height: 144rpx;
|
background: #d8dde6;
|
border-radius: 6rpx;
|
margin-bottom: 8rpx;
|
}
|
|
.upload-text {
|
font-weight: 400;
|
font-size: 28rpx;
|
color: #666666;
|
margin-top: 12rpx;
|
}
|
|
.preview-image {
|
width: 100%;
|
height: 100%;
|
background: #e9eef6;
|
}
|
|
.image-mark {
|
position: absolute;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
height: 24rpx;
|
line-height: 24rpx;
|
text-align: center;
|
font-size: 16rpx;
|
color: #ffffff;
|
background: rgba(0, 0, 0, 0.4);
|
}
|
|
.bottom-btn-wrap {
|
position: relative;
|
z-index: 1;
|
margin-top: 40rpx;
|
display: flex;
|
align-items: center;
|
gap: 16rpx;
|
}
|
|
.next-btn,
|
.footer-btn {
|
height: 88rpx;
|
border-radius: 44rpx;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-size: 32rpx;
|
font-weight: 500;
|
box-sizing: border-box;
|
}
|
|
.next-btn {
|
width: 100%;
|
background: #1faef6;
|
color: #ffffff;
|
}
|
|
.footer-btn {
|
flex: 1;
|
}
|
|
.footer-plain-btn {
|
border: 2rpx solid #61cfff;
|
background: #f5fcff;
|
color: #38b7fb;
|
}
|
|
.footer-primary-btn {
|
background: #1faef6;
|
color: #ffffff;
|
}
|
</style>
|