doum
2026-04-27 7a4b8764b68e0dbaeb90e292a8a4bd47cb379e68
small-program/pages/store-apply/store-apply.vue
@@ -128,12 +128,12 @@
         <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="switchQualification('personal')">个人</view>
               <view class="switch-pill" :class="{ active: qualificationType === 'company' }" @tap="switchQualification('company')">企业</view>
               <view class="switch-pill" :class="{ active: form.companyType ===0 }" @tap="form.companyType =0">个人</view>
               <view class="switch-pill" :class="{ active: form.companyType ===1}" @tap="form.companyType =1">企业</view>
            </view>
         </view>
         <template v-if="qualificationType === 'personal'">
         <template v-if="form.companyType ===0">
            <view class="form-group compact-group">
               <view class="label-row"><text class="label">支付宝账号</text><text class="required">*</text></view>
               <input class="text-input" v-model="form.aliAccount" placeholder="请输入个人支付宝账号" placeholder-class="placeholder" />
@@ -153,12 +153,12 @@
               <view class="upload-grid double-upload-grid">
                  <view class="upload-box id-upload-box" @click="chooseIdCardFront">
                     <image v-if="!form.idcardImg" class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
                     <image v-else class="preview-image" :src="getFullPath(form.idcardImg)" mode="aspectFill"></image>
                     <image v-else class="preview-image" :src="idcardImgUrl" mode="aspectFill"></image>
                     <text v-if="!form.idcardImg" class="upload-text">上传人像面</text>
                  </view>
                  <view class="upload-box id-upload-box" @click="chooseIdCardBack">
                     <image v-if="!form.idcardImgBack" class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
                     <image v-else class="preview-image" :src="getFullPath(form.idcardImgBack)" mode="aspectFill"></image>
                     <image v-else class="preview-image" :src="idcardImgBackUrl" mode="aspectFill"></image>
                     <text v-if="!form.idcardImgBack" class="upload-text">上传国徽面</text>
                  </view>
               </view>
@@ -228,13 +228,13 @@
               </view>
               <view class="upload-grid double-upload-grid">
                  <view class="upload-box id-upload-box" @click="chooseLegalPersonCardFront">
                     <image v-if="!form.legalPersonCard" class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
                     <image v-else class="preview-image" :src="getFullPath(form.legalPersonCard)" mode="aspectFill"></image>
                     <text v-if="!form.legalPersonCard" class="upload-text">上传人像面</text>
                     <image v-if="!form.legalPersonCardFront" class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
                     <image v-else class="preview-image" :src=" legalPersonCardFrontUrl" mode="aspectFill"></image>
                     <text v-if="!form.legalPersonCardFront" class="upload-text">上传人像面</text>
                  </view>
                  <view class="upload-box id-upload-box" @click="chooseLegalPersonCardBack">
                     <image v-if="!form.legalPersonCardBack" class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
                     <image v-else class="preview-image" :src="getFullPath(form.legalPersonCardBack)" mode="aspectFill"></image>
                     <image v-else class="preview-image" :src="legalPersonCardBackUrl" mode="aspectFill"></image>
                     <text v-if="!form.legalPersonCardBack" class="upload-text">上传国徽面</text>
                  </view>
               </view>
@@ -247,12 +247,23 @@
               <view class="upload-grid">
                  <view class="upload-box license-upload-box" @click="chooseBusinessImage">
                     <image v-if="!form.businessImg" class="camera-icon" src="/static/icon/ic_camera@2x.png" mode="widthFix"></image>
                     <image v-else class="preview-image" :src="getFullPath(form.businessImg)" mode="aspectFill"></image>
                     <image v-else class="preview-image" :src="businessImgUrl" mode="aspectFill"></image>
                     <text v-if="!form.businessImg" class="upload-text">点击上传</text>
                  </view>
               </view>
            </view>
         </template>
         <view class="agreement-row">
            <image class="agree-icon" :src="agreed ? '/static/icon/ic_accept_sel@2x.png' : '/static/icon/ic_accept@2x.png'" mode="aspectFit" @tap="agreed = !agreed"></image>
            <view class="agreement-text-wrap">
               <text class="agreement-text">我已阅读并同意</text>
               <text class="agreement-link" @click="goToService(5)">《风险承诺》</text>
               <text class="agreement-text">、</text>
               <text class="agreement-link" @click="goToService(6)">《行李寄存须知》</text>
               <text class="agreement-text">及</text>
               <text class="agreement-link" @click="goToService(7)">《代理点合作协议》</text>
            </view>
         </view>
      </view>
      <view class="bottom-btn-wrap">
@@ -279,6 +290,7 @@
      },
      data() {
         return {
            agreed:false,
            form: {
               telephone: '',
               companyType: 0,
@@ -301,6 +313,7 @@
               laborContractImgs: [],
               socialSecurityImgs: [],
               legalPersonCard: '',
               legalPersonCardFront: '',
               legalPersonCardBack: '',
               legalPersonName: '',
               legalPersonPhone: '',
@@ -308,11 +321,14 @@
               aliName: '',
               businessImg: ''
            },
            businessImgUrl:'',
            idcardImgUrl: '',
            idcardImgBackUrl: '',
            legalPersonCardFrontUrl: '',
            legalPersonCardBackUrl: '',
            previewMode: 'filled',
            imgPrefix: '',
            currentStep: 1,
            qualificationType: 'company',
            showAreaPicker: false,
            areaList: [],
            areaColumns: [],
@@ -324,7 +340,6 @@
            uploadedSocialSecurityImages: [],
            storeFrontImages: [],
            idCardImages: [],
            businessImages: [],
            permitImages: [],
            laborContractImages: [],
            socialSecurityImages: []
@@ -371,10 +386,11 @@
            }
            this.currentStep = 2
         },
         switchQualification(type) {
            this.qualificationType = type
            this.form.companyType = type === 'personal' ? 0 : 1
         },
         goToService(type) {
            uni.navigateTo({
               url: '/pages/rich-text/rich-text?type='+type
            })
         },
         async submitApply() {
            if (this.form.companyType === 0) {
               if (!this.form.idcardImg) {
@@ -415,6 +431,10 @@
                  return
               }
               if (!this.form.legalPersonCard) {
                  uni.showToast({ title: '请输入法人身份证号', icon: 'none' })
                  return
               }
               if (!this.form.legalPersonCardFront) {
                  uni.showToast({ title: '请上传法人身份证人像面', icon: 'none' })
                  return
               }
@@ -426,6 +446,12 @@
                  uni.showToast({ title: '请上传营业执照', icon: 'none' })
                  return
               }
               this.form.idcardImgBack = this.form.legalPersonCardBack
               this.form.idcardImg = this.form.legalPersonCardFront
            }
            if (!this.agreed) {
               uni.showToast({ title: '请先阅读并同意协议', icon: 'none' })
               return
            }
            uni.showLoading({ title: '提交中...', mask: true })
            try {
@@ -436,7 +462,7 @@
                  setTimeout(() => {
                     uni.navigateBack()
                  }, 1500)
               } else {
               }else {
                  uni.showToast({ title: res.msg || '提交失败', icon: 'none' })
               }
            } catch (error) {
@@ -468,6 +494,11 @@
                  this.form.telephone = data.telephone || this.userInfo.telephone || ''
                  this.form.legalPersonName = data.legalPersonName || ''
                  this.form.legalPersonPhone = data.legalPersonPhone || ''
                  this.businessImgUrl=data.businessImgUrl||''
                  this.idcardImgUrl=data.idcardImgUrl||''
                  this.idcardImgBackUrl=data.idcardImgBackUrl||''
                  this.legalPersonCardFrontUrl=data.idcardImgUrl||''
                  this.legalPersonCardBackUrl=data.idcardImgBackUrl||''
                  this.qualificationType = data.companyType === 0 ? 'personal' : 'company'
                  if (data.storeFrontImgs) {
                     this.storeFrontImages = data.storeFrontImgUrls
@@ -499,9 +530,6 @@
                  this.form.legalPersonCard = data.legalPersonCard || ''
                  this.form.legalPersonCardBack = data.legalPersonCardBack || ''
                  this.form.businessImg = data.businessImg || ''
                  if (data.businessImg) {
                     this.businessImages = [data.businessImgUrl]
                  }
               }
            } catch (error) {
               console.log('获取店铺信息失败', error)
@@ -650,7 +678,7 @@
                     const fullPaths = uploadResults.map(item => item.url || item.path || item)
                     this.uploadedImagesStoreFront = [...this.uploadedImagesStoreFront, ...fullPaths.map(url => ({ url }))]
                     this.storeFrontImages = [...this.storeFrontImages, ...fullPaths]
                     this.form.storeFrontImgs = this.storeFrontImages.map(url => this.getShortPath(url))
                     this.form.storeFrontImgs= [...this.form.storeFrontImgs, ...uploadResults.map(item => item.imgaddr)]
                     uni.hideLoading()
                     uni.showToast({
                        title: '上传成功',
@@ -693,7 +721,7 @@
                     const fullPaths = uploadResults.map(item => item.url || item.path || item)
                     this.uploadedImagesIdCard = [...this.uploadedImagesIdCard, ...fullPaths.map(url => ({ url }))]
                     this.idCardImages = [...this.idCardImages, ...fullPaths]
                     this.form.storeInteriorImgs = this.idCardImages.map(url => this.getShortPath(url))
                     this.form.storeInteriorImgs= [...this.form.storeInteriorImgs, ...uploadResults.map(item => item.imgaddr)]
                     uni.hideLoading()
                     uni.showToast({
                        title: '上传成功',
@@ -711,18 +739,8 @@
            this.form.businessImg = this.businessImages.map(url => this.getShortPath(url)).join(',')
         },
         async chooseBusinessImage() {
            const maxCount = 3
            const currentCount = this.businessImages.length
            const remainingCount = maxCount - currentCount
            if (remainingCount <= 0) {
               uni.showToast({
                  title: `最多上传${maxCount}张图片`,
                  icon: 'none'
               })
               return
            }
            uni.chooseImage({
               count: remainingCount,
               count: 1,
               sizeType: ['compressed'],
               sourceType: ['album', 'camera'],
               success: async (res) => {
@@ -732,11 +750,10 @@
                     mask: true
                  })
                  try {
                     const uploadResults = await this.uploadFiles(tempFilePaths, maxCount)
                     const fullPaths = uploadResults.map(item => item.url || item.path || item)
                     this.uploadedImagesBusiness = [...this.uploadedImagesBusiness, ...fullPaths.map(url => ({ url }))]
                     this.businessImages = [...this.businessImages, ...fullPaths]
                     this.form.businessImg = this.businessImages.map(url => this.getShortPath(url)).join(',')
                     const uploadResults = await this.uploadFiles(tempFilePaths, 1)
                     this.form.businessImg = uploadResults[0].imgaddr
                     this.businessImgUrl = uploadResults[0].url
                     console.log("=======================",this.businessImgUrl)
                     uni.hideLoading()
                     uni.showToast({
                        title: '上传成功',
@@ -779,7 +796,7 @@
                     const fullPaths = uploadResults.map(item => item.url || item.path || item)
                     this.uploadedImagesPermit = [...this.uploadedImagesPermit, ...fullPaths.map(url => ({ url }))]
                     this.permitImages = [...this.permitImages, ...fullPaths]
                     this.form.otherMaterialImgs = this.permitImages.map(url => this.getShortPath(url))
                     this.form.otherMaterialImgs= [...this.form.otherMaterialImgs, ...uploadResults.map(item => item.imgaddr)]
                     uni.hideLoading()
                     uni.showToast({
                        title: '上传成功',
@@ -801,7 +818,8 @@
                  uni.showLoading({ title: '上传中...', mask: true })
                  try {
                     const uploadResults = await this.uploadFiles(tempFilePaths, 1)
                     this.form.idcardImg = this.getShortPath(uploadResults[0].url || uploadResults[0].path || uploadResults[0])
                     this.form.idcardImg = uploadResults[0].imgaddr || uploadResults[0].path || uploadResults[0]
                     this.idcardImgUrl = uploadResults[0].url || uploadResults[0].path || uploadResults[0]
                     uni.hideLoading()
                     uni.showToast({ title: '上传成功', icon: 'success' })
                  } catch (error) {
@@ -820,7 +838,8 @@
                  uni.showLoading({ title: '上传中...', mask: true })
                  try {
                     const uploadResults = await this.uploadFiles(tempFilePaths, 1)
                     this.form.idcardImgBack = this.getShortPath(uploadResults[0].url || uploadResults[0].path || uploadResults[0])
                     this.form.idcardImgBack = uploadResults[0].imgaddr || uploadResults[0].path || uploadResults[0]
                     this.idcardImgBackUrl = uploadResults[0].url || uploadResults[0].path || uploadResults[0]
                     uni.hideLoading()
                     uni.showToast({ title: '上传成功', icon: 'success' })
                  } catch (error) {
@@ -839,7 +858,8 @@
                  uni.showLoading({ title: '上传中...', mask: true })
                  try {
                     const uploadResults = await this.uploadFiles(tempFilePaths, 1)
                     this.form.legalPersonCard = this.getShortPath(uploadResults[0].url || uploadResults[0].path || uploadResults[0])
                     this.form.legalPersonCardFront = uploadResults[0].imgaddr || uploadResults[0].path || uploadResults[0]
                     this.legalPersonCardFrontUrl = uploadResults[0].url || uploadResults[0].path || uploadResults[0]
                     uni.hideLoading()
                     uni.showToast({ title: '上传成功', icon: 'success' })
                  } catch (error) {
@@ -858,7 +878,8 @@
                  uni.showLoading({ title: '上传中...', mask: true })
                  try {
                     const uploadResults = await this.uploadFiles(tempFilePaths, 1)
                     this.form.legalPersonCardBack = this.getShortPath(uploadResults[0].url || uploadResults[0].path || uploadResults[0])
                     this.form.legalPersonCardBack = uploadResults[0].imgaddr || uploadResults[0].path || uploadResults[0]
                     this.legalPersonCardBackUrl = uploadResults[0].url || uploadResults[0].path || uploadResults[0]
                     uni.hideLoading()
                     uni.showToast({ title: '上传成功', icon: 'success' })
                  } catch (error) {
@@ -892,7 +913,7 @@
                     const fullPaths = uploadResults.map(item => item.url || item.path || item)
                     this.uploadedLaborContractImages = [...this.uploadedLaborContractImages, ...fullPaths.map(url => ({ url }))]
                     this.laborContractImages = [...this.laborContractImages, ...fullPaths]
                     this.form.laborContractImgs = this.laborContractImages.map(url => this.getShortPath(url))
                     this.form.laborContractImgs= [...this.form.laborContractImgs, ...uploadResults.map(item => item.imgaddr)]
                     uni.hideLoading()
                     uni.showToast({ title: '上传成功', icon: 'success' })
                  } catch (error) {
@@ -940,7 +961,7 @@
                     const fullPaths = uploadResults.map(item => item.url || item.path || item)
                     this.uploadedSocialSecurityImages = [...this.uploadedSocialSecurityImages, ...fullPaths.map(url => ({ url }))]
                     this.socialSecurityImages = [...this.socialSecurityImages, ...fullPaths]
                     this.form.socialSecurityImgs = this.socialSecurityImages.map(url => this.getShortPath(url))
                     this.form.socialSecurityImgs= [...this.form.socialSecurityImgs, ...uploadResults.map(item => item.imgaddr)]
                     uni.hideLoading()
                     uni.showToast({ title: '上传成功', icon: 'success' })
                  } catch (error) {
@@ -1285,7 +1306,33 @@
      color: #666666;
      margin-top: 12rpx;
   }
.agreement-row {
      margin-top: 60rpx;
      display: flex;
      align-items: flex-start;
   }
   .agree-icon {
      width: 34rpx;
      height: 34rpx;
      margin-top: 4rpx;
      flex-shrink: 0;
   }
   .agreement-text-wrap {
      margin-left: 14rpx;
      flex: 1;
      font-size: 24rpx;
      line-height: 1.8;
   }
   .agreement-text {
      color: #555555;
   }
   .agreement-link {
      color: #2E68C4;
   }
   .preview-image {
      width: 100%;
      height: 100%;