陶杰
2025-01-13 efa9bfe98ba906e4c9b8f49c89f5da162a46bb0f
pages/login/supplier-reg.vue
@@ -1,18 +1,20 @@
<template>
   <view>
      <view v-if="source==='step'" style="padding: 20rpx 0rpx;color: red;;background-color: #e6e6e6;">
         <view style="padding: 20rpx;text-align: center;background-color: #fff;">仅限花满芫合伙人入驻</view>
         <view v-if="source==='step'" class="" style="background-color: #fff;margin-top: 20rpx;padding: 20rpx;">
            <u-steps current="1">
               <u-steps-item title="信息填写" class="u-steps-item">
               </u-steps-item>
               <u-steps-item title="提交申请" class="u-steps-item"></u-steps-item>
            </u-steps>
         </view>
      </view>
      <view class="main-container login-container img100 relative" style="margin-top: 0rpx;">
         <view v-if="source==='step'" style="padding: 20rpx 0rpx;color: red;;background-color: #e6e6e6;">
            <!-- #ifdef PUB_PARTNER -->
            <view style="padding: 20rpx;text-align: center;background-color: #fff;padding-top: 60rpx;">仅限花满芫合伙人入驻</view>
            <!-- #endif -->
            <view v-if="source==='step'" class="" style="background-color:#ffffff;padding: 20rpx;padding-top: 60rpx;">
               <u-steps current="1">
                  <u-steps-item title="信息填写" class="u-steps-item">
                  </u-steps-item>
                  <u-steps-item title="提交申请" class="u-steps-item"></u-steps-item>
               </u-steps>
            </view>
         </view>
         <image class="component-bg"
            src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/a5/a54508de179a4942918ecb2c5a4aa9f5bg.png"
            mode="scaleToFill" />
@@ -32,51 +34,93 @@
                  <view class="t-a titles-top">
                     <view class="title-1">HELLO</view>
                     <view class="title-2">欢迎入驻<span class="title-3">花满芫</span></view>
                     <!-- #ifdef PUB_CUSTOMER -->
                     <view class="title-2">{{!partnerId?'未绑定合伙人':`已绑定合伙人-${partnerName}`}}</view>
                     <!-- #endif -->
                  </view>
                  <!-- #ifdef PUB_CUSTOMER -->
                  <view class="t-a form-input">
                     <u-input placeholder="请输入店铺名称" :border="false" v-model="regCustomerName"></u-input>
                  </view>
                  <!-- #endif -->
                  <view class="t-a form-input" v-if="loginType=='code'">
                     <u-input placeholder="请输入手机号" :border="false" v-model="phoneNumber">
                     <u-input placeholder="请输入手机号" :border="false" v-model="phoneNumber" @blur="validatePhoneNumber()">
                        <template slot="suffix">
                           <view class="get-code" :style="{'color':getCodeBtnColor}" @click.stop="getCode()">
                              {{getCodeText}}
                              {{ getCodeText }}
                           </view>
                        </template>
                     </u-input>
                     <!-- <u-input type="text" name="userName" placeholder="请输入手机号" v-model="phoneNumber"
                     style="position: relative;z-index: 1;" /> -->
                  </view>
                  <view class="t-a form-input" v-if="loginType=='code'">
                     <!--       <input type="text" name="userName" placeholder="请输入手机验证码" v-model="smsCode"
                     style="position: relative;z-index: 1;" /> -->
                  <view class="t-a form-input">
                     <u-input placeholder="请输入手机验证码" :border="false" v-model="smsCode"></u-input>
                  </view>
                  <view class="t-a form-input" v-if="loginType=='code'">
                     <!-- <input type="text" :password="true" name="password" placeholder="请输入密码" v-model="password" /> -->
                     <u-input :password="true" :border="false" placeholder="请输入密码" v-model="password"></u-input>
                  </view>
                  <view class="flex flex-wrap-normal"
                         v-if="true">
                        <view :style="{'margin-top': '40rpx','margin-right': '12rpx','font-size':'24rpx'}"
                           @click="protocal=!protocal" class="component-radio" :class="[protocal?'cur':'']">
                        </view>
                        <!-- /pages/help/content?id=新手帮助 -->
                        <!-- 用户协议,隐私政策、卖家入驻协议、合伙人入驻协议 -->
                        <!-- #ifdef PUB_PARTNER -->
                        <view class="topic-gray">
                           请仔细阅读<span class="t-red"
                              @click="goto('/pages/help/content?id=用户协议',false)">《用户协议》</span>、
                              <span class="t-red" @click="goto('/pages/help/content?id=隐私政策',false)">《隐私政策》</span>
                              、<span class="t-red" @click="goto('/pages/help/content?id=合伙人入驻协议',false)">《合伙人入驻协议》</span>
                           如您同意该指引,请勾选开始使用本小程序
                        </view>
                        <!-- #endif -->
                        <!-- #ifdef PUB_SUPPLIER -->
                        <view class="topic-gray">
                           请仔细阅读<span class="t-red"
                              @click="goto('/pages/help/content?id=用户协议',false)">《用户协议》</span>、
                              <span class="t-red" @click="goto('/pages/help/content?id=隐私政策',false)">《隐私政策》</span>
                              、<span class="t-red" @click="goto('/pages/help/content?id=卖家入驻协议',false)">《卖家入驻协议》</span>
                           如您同意该指引,请勾选开始使用本小程序
                        </view>
                        <!-- #endif -->
                        <!-- #ifdef PUB_CUSTOMER -->
                        <view class="topic-gray">
                           请仔细阅读<span class="t-red"
                              @click="goto('/pages/help/content?id=用户协议',false)">《用户协议》</span>和 <span class="t-red"
                              @click="goto('/pages/help/content?id=隐私政策',false)">《隐私政策》</span>
                           如您同意该指引,请勾选开始使用本小程序
                        </view>
                        <!-- #endif -->
                     </view>
                  <button @tap="login()" class="bottom-button">注 册</button>
                  <!-- #ifndef PUB_CUSTOMER -->
                  <button @tap="reg('')" class="bottom-button">注 册</button>
                  <!-- #endif -->
                  <!-- #ifdef PUB_CUSTOMER -->
                  <!--            open-type="getUserInfo"-->
                  <button @tap="wxreg('')" class="bottom-button">注 册</button>
                  <!-- #endif -->
                  <view class="flex">
                     <view class="topic-font m-l-0 m-r-a" @click="backInfoPage" v-if="source==='step'">返回填写</view>
                     <view class="topic-font m-l-0 m-r-a" @click="backInfoPage" v-if="source==='step'">返回上一步
                     </view>
                     <!-- #ifdef PUB_CUSTOMER -->
                     <!-- v-if="source==='step'" -->
                     <!-- <view class="topic-font m-l-0 m-r-a" @click="scanPartnerCode">扫码绑定合伙人
                     </view> -->
                     <!-- #endif -->
                     <view class="topic-font m-l-a m-r-0" @click="toLogin">前往登录</view>
                  </view>
                  <view class="flex flex-wrap-normal"
                     style="position: fixed;bottom: 40rpx;left: 40rpx;right: 40rpx;" v-if="false">
                     <view :style="{'margin-top': '8rpx','margin-right': '12rpx','font-size':'24rpx'}"
                        @click="protocal=!protocal" class="component-radio" :class="[protocal?'cur':'']">
                     </view>
                     <view class="topic-gray" @click="toProtocol">请仔细阅读《花满芫合伙人供应商入口小程序隐私保护指引》如您同意该指引,请勾选开始使用本小程序
                     </view>
                  </view>
               </form>
            </view>
@@ -98,7 +142,8 @@
            phoneNumber: '',
            smsCode: '',
            partnerId: '',
            partnerName: '',
            checked: false,
            loginType: 'code', //pwd和code,密码和验证码登录
            pcfvalue: undefined,
@@ -107,6 +152,7 @@
            getCodeisWaiting: false,
            Timer: undefined,
            protocal: false,
            regCustomerName: '',
            source: '',
            // #ifdef PUB_SUPPLIER
            apitype: 'supplier',
@@ -114,14 +160,95 @@
            // #ifdef PUB_PARTNER
            apitype: 'partner',
            // #endif
            // #ifdef PUB_CUSTOMER
            apitype: 'customer',
            // #endif
         };
      },
      onLoad(options) {
         this.source = options.source || ''
         // #ifdef PUB_CUSTOMER
         var tjson = this.$storage.getItem('cache_customer_info')
         if (tjson) {
            var dto = JSON.parse(tjson)
            if (dto.partnerUserId) {
               this.partnerId = dto.partnerUserId || ''
               this.partnerName = dto.partnerUserName || '佚名'
            }
         }
         if (options.partnerUserId) {
            this.partnerId = options.partnerUserId || ''
            if (options.partnerUserName) {
               this.partnerName = options.partnerUserName || '佚名'
            }
            //扫码过来的,自然要清除分享商品的id
            this.$storage.removeItem('cache_sharePartnerUserId')
         }
         // #endif
      },
      methods: {
         backInfoPage(){
         // 手机号码正则表达式校验
         validatePhoneNumber() {
            // 手机号码正则表达式,可以根据需要调整
            const phoneRegex = /^[1][3-9][0-9]{9}$/;
            if (!phoneRegex.test(this.phoneNumber)) {
               this.$message.showToast('请填写正确手机号码')
            }
         },
         async scanPartnerCode() {
            // await this.$message.confirm('确定要绑定合伙人吗?')
            //扫二维码确认
            let that = this
            uni.scanCode({
               success: async function(res) {
                  console.log('条码内容:' + res.result);
                  if (!res.result) {
                     that.$message.showToast('未识别出合伙人信息,请用微信扫码打开')
                     return
                  }
                  var dto = undefined
                  try {
                     if (res.result && (res.result.startsWith('http://') || res.result.startsWith(
                           'https://')) && res.result.indexOf(
                           'partnerUserId') >= 0) {
                        var arr = res.result.split("?")[1].split("&")
                        dto = {}
                        for (var item of arr) {
                           var tarr = item.split("=")
                           if (tarr[1]) {
                              dto[tarr[0]] = tarr[1]
                           }
                        }
                        dto['name'] = dto['partnerUserName'] || ''
                        dto['userId'] = dto['partnerUserId'] || ''
                     } else {
                        dto = JSON.parse(res.result)
                     }
                     if (!!dto['userId']) {
                        that.partnerName = dto['name'] || ''
                        that.partnerId = dto['userId'] || ''
                        that.$message.showToast(`绑定合伙人${that.partnerName}成功`)
                     } else {
                        that.$message.showToast('二维码格式不正确扫码失败')
                     }
                  } catch (e) {
                     that.$message.showToast('二维码格式不正确扫码失败')
                  }
               },
               fail() {
                  that.$message.showToast('扫码失败')
               }
            });
         },
         backInfoPage() {
            console.log('backInfoPage')
            uni.navigateBack()
         },
@@ -161,7 +288,7 @@
                  userType: this.apitype
               }
            })
            if (code == 0) {
            if (code === 0) {
               uni.showToast({
                  title: '验证码已发送',
                  icon: "none"
@@ -198,7 +325,7 @@
            }, 1000)
         },
         toLogin() {
            uni.redirectTo({
            uni.reLaunch({
               url: '/pages/login/supplier-login'
            })
@@ -206,7 +333,48 @@
         changeAll(e) {
            this.pcfvalue = e.detail.value[0]
         },
         async login() {
         // async wxreg(e) {
         //   wx.login({
         //     success: async res => {
         //       if (res.code) {
         //
         //       }
         //     },
         //     fail() {
         //       this.$message.showToast('获取微信信息失败')
         //     }
         //   })
         // },
         wxreg(e) {
            if (!this.protocal) {
               this.$message.showToast('请同意协议')
               return;
            }
            let tmp = this
            wx.login({
               success: async res => {
                  console.log(res)
                  if (res.code) {
                     tmp.reg(res.code)
                  } else {
                     tmp.$message.showToast('微信登录失败');
                  }
               },
               error: res => {
                  console.log('wx.login error', res)
                  tmp.$message.showToast('获取微信信息失败:' + res);
               }
            });
         },
         async reg(wxcode) {
            // console.log('e', e)
            // this.$message.showLoading()
            // const res = await wx.getUserProfile({
            //   desc: '用于完善会员资料',
            // });
            // console.log(res);
            // this.$message.hideLoading()
            uni.showLoading({
               title: '登陆中'
            });
@@ -232,10 +400,16 @@
               });
               return;
            }
            // if (this.pcfvalue == undefined) {
            //    util.showMyToast('必须勾选《用户服务协议》及《隐私政策》');
            //    return;
            // }
            // #ifdef PUB_CUSTOMER
            if (!that.regCustomerName) {
               this.$message.showToast('店铺名称未填写')
               return
            }
            // #endif
            if (!this.protocal) {
               this.$message.showToast('请同意协议')
               return;
            }
            let post = {
               tel: this.phoneNumber,
               smsCode: this.smsCode,
@@ -243,24 +417,58 @@
               type: this.apitype
               // openId: '123456789'
            }
            if (this.source == 'step') {
               var tjson = this.$storage.getItem('cache_partner_info')
            if (this.source === 'step') {
               var tjson = ''
               // #ifdef PUB_PARTNER
               tjson = this.$storage.getItem('cache_partner_info')
               // #endif
               // #ifdef PUB_CUSTOMER
               tjson = this.$storage.getItem('cache_customer_info')
               // #endif
               if (!tjson) {
                  this.$message.showToast('没有合伙人信息请返回重新填写')
                  this.$message.showToast('没有填写用户信息请返回重新填写')
                  return
               }
               var dto = JSON.parse(tjson)
               // dto.partnerId = this.partnerId || undefined
               dto.partnerUserId = this.partnerId || undefined
               post.dto = dto
            } else {
               // #ifdef PUB_CUSTOMER
               var dto = {}
               dto.partnerUserId = this.partnerId || undefined
               //如果没有绑定,有商品详情的分享合伙人id的话缓存的话,尝试用这个
               if (!dto.partnerUserId) {
                  try {
                     var sharePartnerUserId = this.$storage.getItem('cache_sharePartnerUserId')
                     if (sharePartnerUserId) {
                        //试图绑定
                        this.$storage.removeItem('cache_sharePartnerUserId')
                        dto.partnerUserId = sharePartnerUserId
                     }
                  } catch (e) {
                     console.error('reg bind ', e)
                  }
               }
               dto.name = this.regCustomerName || ''
               post.dto = dto
               // #endif
            }
            post.wxcode = wxcode
            console.log('reg dto', post)
            // const {
            // code
            // } = await this.$http.request('get', '/api/login/admin')
            this.$message.showLoading()
            const resp = await this.$store.dispatch('regUser', post);
            this.$message.hideLoading()
            // uni.hideLoading()
            if (resp.code == 0) {
            if (resp.code === 0) {
               // myCache.cache("userToken", res.data.accessToken)
               // let userRes = await gzmzApi.getMemberInfo();
@@ -296,7 +504,6 @@
               //             this.toLogin()
               //          }, 1000);
               //       }
               //    } else {