陶杰
2024-12-23 fa9c8374664a2afa5f5f995ad2697d5f4aa71203
1.微信登录
已修改1个文件
1362 ■■■■ 文件已修改
pages/login/supplier-login.vue 1362 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/login/supplier-login.vue
@@ -20,20 +20,22 @@
                            <!-- #endif -->
                        </view>
                    </view>
                    <view class="t-a input form-input" v-if="loginType=='pwd'">
                    <view class="t-a input form-input" v-if="loginType == 'pwd'">
                        <!-- <input type="text" name="userName" placeholder="请输入账号" v-model="userName" /> -->
                        <u-input placeholder="请输入账号" :border="false" v-model="userName" @blur="validatePhoneNumber()"></u-input>
                        <u-input placeholder="请输入账号" :border="false" v-model="userName"
                            @blur="validatePhoneNumber()"></u-input>
                    </view>
                    <view class="t-a input form-input" v-if="loginType=='pwd'">
                    <view class="t-a input form-input" v-if="loginType == 'pwd'">
                        <u-input :password="true" :border="false" placeholder="请输入密码" v-model="password"></u-input>
                    </view>
                    <view class="t-a input form-input" v-if="loginType=='code'">
                    <view class="t-a input form-input" v-if="loginType == 'code'">
                        <u-input placeholder="请输入手机号" :border="false" v-model="phoneNumber" @blur="validatePhoneNumber()">
                        <u-input placeholder="请输入手机号" :border="false" v-model="phoneNumber"
                            @blur="validatePhoneNumber()">
                            <template slot="suffix">
                                <view class="get-code" :style="{'color':getCodeBtnColor}" @click.stop="getCode()">
                                <view class="get-code" :style="{ 'color': getCodeBtnColor }" @click.stop="getCode()">
                                    {{ getCodeText }}
                                </view>
                            </template>
@@ -41,14 +43,14 @@
                    </view>
                    <view class="t-a form-input" v-if="loginType=='code'">
                    <view class="t-a form-input" v-if="loginType == 'code'">
                        <u-input placeholder="请输入手机验证码" :border="false" v-model="smsCode"></u-input>
                    </view>
                    <view class="flex flex-wrap-normal" v-if="true">
                        <view :style="{'margin-top': '24rpx','margin-right': '12rpx','font-size':'24rpx'}"
                            @click="protocal=!protocal" class="component-radio" :class="[protocal?'cur':'']">
                        <view :style="{ 'margin-top': '24rpx', 'margin-right': '12rpx', 'font-size': '24rpx' }"
                            @click="protocal = !protocal" class="component-radio" :class="[protocal ? 'cur' : '']">
                        </view>
                        <!-- /pages/help/content?id=新手帮助 -->
@@ -56,24 +58,24 @@
                        <!-- #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>
                            请仔细阅读<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>
                            请仔细阅读<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>
                            请仔细阅读<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 -->
@@ -87,28 +89,29 @@
                    <button @tap="login()" class="bottom-button">登 录</button>
                    <view class="flex">
                        <view class="topic-font" v-if="loginType=='pwd'&&apitype!=='loginAdmin'"
                            @click="loginType='code'">手机验证码登录</view>
                        <view class="topic-font" v-if="loginType=='code'&&apitype!=='loginAdmin'"
                            @click="loginType='pwd'">账号密码登录</view>
                        <view class="topic-font m-l-a m-r-0" v-if="apitype!=='loginAdmin'" @click="toReg">前往注册</view>
                        <view class="topic-font" v-if="loginType == 'pwd' && apitype !== 'loginAdmin'"
                            @click="loginType = 'code'">手机验证码登录</view>
                        <view class="topic-font" v-if="loginType == 'code' && apitype !== 'loginAdmin'"
                            @click="loginType = 'pwd'">账号密码登录</view>
                        <view class="topic-font m-l-a m-r-0" v-if="apitype !== 'loginAdmin'" @click="toReg">前往注册</view>
                        <!-- #ifdef PUB_CUSTOMER -->
                        <view class="topic-font m-l-a m-r-0" @click="toHome" v-if="!source">返回首页</view>
                        <view class="topic-font m-l-a m-r-0" @click="backpage" v-if="source==='jump'">返回上一页</view>
                        <view class="topic-font m-l-a m-r-0" @click="backpage" v-if="source === 'jump'">返回上一页</view>
                        <!-- #endif -->
                        <!-- #ifdef PUB_PARTNER -->
                        <view class="topic-font m-l-a m-r-0" @click="()=>{
                            if(apitype==='loginPartner'){
                        <view class="topic-font m-l-a m-r-0" @click="() => {
                            if (apitype === 'loginPartner') {
                                apitype = 'loginAdmin'
                                loginType = 'pwd'
                            }else{
                            } else {
                                apitype = 'loginPartner'
                            }
                        }">
                            切换为{{apitype!=='loginPartner'?'合伙人':'质检人员'}}登录
                            切换为{{ apitype !== 'loginPartner' ? '合伙人' : '质检人员' }}登录
                        </view>
                        <!-- #endif -->
                    </view>
@@ -119,66 +122,96 @@
                {{optionsStr}}
            </view> -->
        </view>
        <!-- #ifdef PUB_CUSTOMER -->
        <view class="flex" style="justify-content: center; margin-top: 150px;">
            <u--image :showLoading="true" v-if="false"
                src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/6e/6e74997e6d4c4a29be3903b35bc1f38fwechat.png"
                width="40rpx" height="40rpx" @click="handleWechatClick">
            </u--image>
            <u-grid :border="false" :col="1">
                <u-grid-item @click="handleWechatClick">
                    <u--image :showLoading="true"
                        src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/6e/6e74997e6d4c4a29be3903b35bc1f38fwechat.png"
                        width="40rpx" height="40rpx" @click="handleWechatClick">
                    </u--image>
                    <text class="third-login-text" @click="handleWechatClick">微信登录</text>
                </u-grid-item>
            </u-grid>
        </view>
        <!-- #endif -->
    </view>
</template>
<script>
    export default {
        async onLoad(options) {
            this.source = options.source || ''
            this.sharePartnerUserId = options.sharePartnerUserId || ''
            // #ifdef PUB_CUSTOMER
            var query = options.q && decodeURIComponent(options.q) || ''
            var querydto = {}
            if (query) {
                try {
                    var keyvalues = query.split("?")[1].split("&")
export default {
    async onLoad(options) {
        this.source = options.source || ''
        this.sharePartnerUserId = options.sharePartnerUserId || ''
        // #ifdef PUB_CUSTOMER
        var query = options.q && decodeURIComponent(options.q) || ''
        var querydto = {}
        if (query) {
            try {
                var keyvalues = query.split("?")[1].split("&")
                for (var item of keyvalues) {
                    var tarr = item.split("=")
                    querydto[tarr[0]] = tarr[1]
                }
            } catch (e) {
                console.error('error', e)
            }
        }
        try {
            if (!querydto.partnerUserId) {
                if (options.query && options.query.scene || options.scene) {
                    //说明是特殊小程序二维码扫码跳转的
                    var keyvalues = decodeURIComponent(options.query && options.query.scene || options.scene).split("&")
                    for (var item of keyvalues) {
                        var tarr = item.split("=")
                        querydto[tarr[0]] = tarr[1]
                    }
                } catch (e) {
                    console.error('error', e)
                }
            }
            try {
                if (!querydto.partnerUserId) {
                    if (options.query && options.query.scene || options.scene) {
                        //说明是特殊小程序二维码扫码跳转的
                        var keyvalues = decodeURIComponent(options.query&&options.query.scene || options.scene).split("&")
                        for (var item of keyvalues) {
                            var tarr = item.split("=")
                            querydto[tarr[0]] = tarr[1]
                        }
                    }
                }
            } catch (e) {
                console.error('error2', e)
            }
        } catch (e) {
            console.error('error2', e)
        }
            console.log('options query111', options, querydto)
            // this.optionsStr = JSON.stringify(options) || ''
            if (querydto.partnerUserId) {
                //通过接口获取名称,兼容,url上不能放中文的情况
        console.log('options query111', options, querydto)
        // this.optionsStr = JSON.stringify(options) || ''
        if (querydto.partnerUserId) {
            //通过接口获取名称,兼容,url上不能放中文的情况
                if (this.$storage.getItem('token')) {
                    console.log('to login 1')
                    this.$message.showLoading()
                    //稍微等一会,避免currentInfo还在同步
                    let tmp = this
                    setTimeout(async () => {
                        try {
                            tmp.$message.hideLoading()
                            if (tmp.currentInfo && tmp.currentInfo.id || tmp.$storage.getItem('token')) {
                                await tmp.$store.dispatch('getCurrentInfo');
                                //已经登录的直接判断,并且绑定
                                tmp.$nextTick(async () => {
                                    if (!tmp.currentInfo.customerDTO) {
            if (this.$storage.getItem('token')) {
                console.log('to login 1')
                this.$message.showLoading()
                //稍微等一会,避免currentInfo还在同步
                let tmp = this
                setTimeout(async () => {
                    try {
                        tmp.$message.hideLoading()
                        if (tmp.currentInfo && tmp.currentInfo.id || tmp.$storage.getItem('token')) {
                            await tmp.$store.dispatch('getCurrentInfo');
                            //已经登录的直接判断,并且绑定
                            tmp.$nextTick(async () => {
                                if (!tmp.currentInfo.customerDTO) {
                                    tmp.$message.showToast(
                                        '您尚未完善信息无法绑定')
                                    setTimeout(() => {
                                        uni.reLaunch({
                                            url: '/pages/home/home'
                                        })
                                    }, 500)
                                    return
                                } else {
                                    if (tmp.currentInfo.customerDTO
                                        .partnerId) {
                                        tmp.$message.showToast(
                                            '您尚未完善信息无法绑定')
                                            '您已绑定,请联系客服解除绑定')
                                        setTimeout(() => {
                                            uni.reLaunch({
                                                url: '/pages/home/home'
@@ -186,619 +219,678 @@
                                        }, 500)
                                        return
                                    } else {
                                        if (tmp.currentInfo.customerDTO
                                            .partnerId) {
                                            tmp.$message.showToast(
                                                '您已绑定,请联系客服解除绑定')
                                        //前往绑定页面
                                        //直接绑定
                                        //调用接口绑定
                                        tmp.$message.showLoading()
                                        const {
                                            code,
                                            data
                                        } = await tmp.$http.request('post',
                                            '/api/customer/bind/partner', {
                                            data: {
                                                partnerUserId: querydto
                                                    .partnerUserId
                                            }
                                        })
                                        tmp.$message.hideLoading()
                                        if (code == 0) {
                                            tmp.$message.showToast(`绑定合伙人成功`)
                                            await tmp.$store.dispatch('getCurrentInfo')
                                            //跳转到个人页面
                                            setTimeout(() => {
                                                uni.reLaunch({
                                                    url: '/pages/home/home'
                                                })
                                            }, 500)
                                            return
                                        } else {
                                            //前往绑定页面
                                            //直接绑定
                                            //调用接口绑定
                                            tmp.$message.showLoading()
                                            const {
                                                code,
                                                data
                                            } = await tmp.$http.request('post',
                                                '/api/customer/bind/partner', {
                                                    data: {
                                                        partnerUserId: querydto
                                                            .partnerUserId
                                                    }
                                                })
                                            tmp.$message.hideLoading()
                                            if (code == 0) {
                                                tmp.$message.showToast(`绑定合伙人成功`)
                                                await tmp.$store.dispatch('getCurrentInfo')
                                                //跳转到个人页面
                                                setTimeout(() => {
                                                    uni.reLaunch({
                                                        url: '/pages/home/home'
                                                    })
                                                }, 500)
                                            }
                                        }
                                    }
                                })
                                //这种已经登录的
                                //确定是注册绑定还是重新绑定
                                // tmp.$nextTick(() => {
                                //     var tt = {
                                //         title: '提示:您已登录,是直接用该账号绑定,还是退出并注册新账号绑定合伙人',
                                //         content: '',
                                //         showCancel: true,
                                //         cancelText: '直接绑定',
                                //         cancelColor: '#000000',
                                //         confirmText: '退出注册',
                                //         confirmColor: '#20613D'
                                //     }
                                //     uni.showModal({
                                //         ...tt,
                                //         success: async (res) => {
                                //             if (res.confirm) {
                                //                 //清空登录信息,
                                //                 this.$store.commit('updateLogin',
                                //                     false)
                                //                 setTimeout(() => {
                                //                     uni.navigateTo({
                                //                         url: `/sub_pages/customer/customer-info/customer-info?source=step&partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                                //                     })
                                //                 }, 200)
                                //             }
                                //             if (res.cancel) {
                                //                 if (!tmp.currentInfo.customerDTO) {
                                //                     tmp.$message.showToast(
                                //                         '您尚未完善信息无法绑定')
                                //                     return
                                //                 } else {
                                //                     if (tmp.currentInfo.customerDTO
                                //                         .partnerId) {
                                //                         tmp.$message.showToast(
                                //                             '您已绑定,请联系客服解除绑定')
                                //                         return
                                //                     } else {
                                //                         //前往绑定页面
                                //                         uni.reLaunch({
                                //                             url: `/pages/user/supplier-user?partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                                //                         })
                                //                     }
                                //                 }
                                //             }
                                //         },
                                //         fail(res) {
                                //             console.log('res uni model', res)
                                //         }
                                //     })
                                // })
                            } else {
                                console.log('to login 3')
                                //退出登录了,或者失效了
                                // uni.navigateTo({
                                //     url: `/sub_pages/customer/customer-info/customer-info?source=step&partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                                // })
                                if (!querydto.partnerUserName) {
                                    tmp.$message.showLoading()
                                    const resname = await tmp.$http.request('get',
                                        '/api/customer/partner/name', {
                                            params: {
                                                id: querydto.partnerUserId
                                            }
                                        })
                                    tmp.$message.hideLoading()
                                    if (resname.code == 0) {
                                        querydto.partnerUserName = resname.data || ''
                                    }
                                }
                                uni.navigateTo({
                                    url: `/pages/login/supplier-reg?partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName||''}`
                            })
                            //这种已经登录的
                            //确定是注册绑定还是重新绑定
                            // tmp.$nextTick(() => {
                            //     var tt = {
                            //         title: '提示:您已登录,是直接用该账号绑定,还是退出并注册新账号绑定合伙人',
                            //         content: '',
                            //         showCancel: true,
                            //         cancelText: '直接绑定',
                            //         cancelColor: '#000000',
                            //         confirmText: '退出注册',
                            //         confirmColor: '#20613D'
                            //     }
                            //     uni.showModal({
                            //         ...tt,
                            //         success: async (res) => {
                            //             if (res.confirm) {
                            //                 //清空登录信息,
                            //                 this.$store.commit('updateLogin',
                            //                     false)
                            //                 setTimeout(() => {
                            //                     uni.navigateTo({
                            //                         url: `/sub_pages/customer/customer-info/customer-info?source=step&partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                            //                     })
                            //                 }, 200)
                            //             }
                            //             if (res.cancel) {
                            //                 if (!tmp.currentInfo.customerDTO) {
                            //                     tmp.$message.showToast(
                            //                         '您尚未完善信息无法绑定')
                            //                     return
                            //                 } else {
                            //                     if (tmp.currentInfo.customerDTO
                            //                         .partnerId) {
                            //                         tmp.$message.showToast(
                            //                             '您已绑定,请联系客服解除绑定')
                            //                         return
                            //                     } else {
                            //                         //前往绑定页面
                            //                         uni.reLaunch({
                            //                             url: `/pages/user/supplier-user?partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                            //                         })
                            //                     }
                            //                 }
                            //             }
                            //         },
                            //         fail(res) {
                            //             console.log('res uni model', res)
                            //         }
                            //     })
                            // })
                        } else {
                            console.log('to login 3')
                            //退出登录了,或者失效了
                            // uni.navigateTo({
                            //     url: `/sub_pages/customer/customer-info/customer-info?source=step&partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                            // })
                            if (!querydto.partnerUserName) {
                                tmp.$message.showLoading()
                                const resname = await tmp.$http.request('get',
                                    '/api/customer/partner/name', {
                                    params: {
                                        id: querydto.partnerUserId
                                    }
                                })
                            }
                        } catch (e2) {
                            console.log('to login error', e2)
                        }
                    }, 2000)
                                tmp.$message.hideLoading()
                                if (resname.code == 0) {
                                    querydto.partnerUserName = resname.data || ''
                                }
                } else {
                    if (!querydto.partnerUserName) {
                        this.$message.showLoading()
                        const resname = await this.$http.request('get', '/api/customer/partner/name', {
                            params: {
                                id: querydto.partnerUserId
                            }
                        })
                        this.$message.hideLoading()
                        if (resname.code == 0) {
                            querydto.partnerUserName = resname.data || ''
                            uni.navigateTo({
                                url: `/pages/login/supplier-reg?partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName || ''}`
                            })
                        }
                    } catch (e2) {
                        console.log('to login error', e2)
                    }
                    // console.log('to login 2',
                    //     `/sub_pages/customer/customer-info/customer-info?source=step&partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                    // )
                    // uni.navigateTo({
                    //     url: `/sub_pages/customer/customer-info/customer-info?source=step&partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                    // })
                    uni.navigateTo({
                        url: `/pages/login/supplier-reg?partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName||''}`
                }, 2000)
            } else {
                if (!querydto.partnerUserName) {
                    this.$message.showLoading()
                    const resname = await this.$http.request('get', '/api/customer/partner/name', {
                        params: {
                            id: querydto.partnerUserId
                        }
                    })
                }
            }
            // #endif
        },
        onShareAppMessage() {
            let that = this;
            var name = that.currentInfo.customerDTO && that.currentInfo.customerDTO.name || that.currentInfo.supplierDTO &&
                that.currentInfo.supplierDTO.name || that.currentInfo.partnerDTO && that.currentInfo.partnerDTO.name || ''
            var url =
                `/pages/login/supplier-login?shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${name||''}`; //你的转发页面路径拼接参数
            return {
                title: "花满芫",
                path: url,
            }
        },
        onShareTimeline() {
            let that = this;
            var name = that.currentInfo.customerDTO && that.currentInfo.customerDTO.name || that.currentInfo.supplierDTO &&
                that.currentInfo.supplierDTO.name || that.currentInfo.partnerDTO && that.currentInfo.partnerDTO.name || ''
            var url =
                `/pages/login/supplier-login?shareId=${this.currentInfo&&this.currentInfo.id||''}&shareName=${name||''}`; //你的转发页面路径拼接参数
            return {
                title: "花满芫",
                path: url,
            }
        },
        data() {
            return {
                optionsStr: '',
                openId: '-1',
                userName: '',
                password: '',
                // userName: '',
                // password: '',
                phoneNumber: '',
                smsCode: '',
                source: '', //来源
                sharePartnerUserId: '', //分享跳转登录的id
                checked: false,
                loginType: 'pwd', //pwd和code,密码和验证码登录
                pcfvalue: undefined,
                getCodeText: '获取验证码',
                getCodeBtnColor: "#20613D",
                getCodeisWaiting: false,
                Timer: undefined,
                protocal:false,
                // #ifdef PUB_SUPPLIER
                apitype: 'loginSupplier',
                // #endif
                // #ifdef PUB_PARTNER
                apitype: 'loginPartner',
                // #endif
                // #ifdef PUB_CUSTOMER
                apitype: 'loginCustomer',
                // #endif
                // return 'loginPartner'
            };
        },
        methods: {
            // 手机号码正则表达式校验
            validatePhoneNumber() {
                // 手机号码正则表达式,可以根据需要调整
                const phoneRegex = /^[1][3-9][0-9]{9}$/;
                if (this.loginType == 'pwd') {
                    if (!phoneRegex.test(this.userName)) {
                        this.$message.showToast('请填写正确手机号码')
                    }
                }
                if (this.loginType == 'code') {
                    if (!phoneRegex.test(this.phoneNumber)) {
                        this.$message.showToast('请填写正确手机号码')
                    }
                }
            },
            async getCode() {
                console.log('getCode')
                uni.hideKeyboard() //隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。
                if (this.getCodeisWaiting) {
                    return;
                }
                if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(this.phoneNumber))) { //校验手机号码是否有误
                    this.$message.showToast('请填写正确手机号码')
                    return false;
                }
                this.getCodeText = "发送中..." //发送验证码
                this.getCodeisWaiting = true;
                this.getCodeBtnColor = "#000" //追加样式,修改颜色
                //示例用定时器模拟请求效果
                //setTimeout(()用于在指定的毫秒数后调用函数或计算表达式
                const {
                    code
                } = await this.$http.request('post', '/api/sms/send/code', {
                    data: {
                        tel: this.phoneNumber,
                        userType: this.apitype.replace("login", "").toLowerCase()
                    this.$message.hideLoading()
                    if (resname.code == 0) {
                        querydto.partnerUserName = resname.data || ''
                    }
                }
                // console.log('to login 2',
                //     `/sub_pages/customer/customer-info/customer-info?source=step&partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                // )
                // uni.navigateTo({
                //     url: `/sub_pages/customer/customer-info/customer-info?source=step&partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName}`
                // })
                uni.navigateTo({
                    url: `/pages/login/supplier-reg?partnerUserId=${querydto.partnerUserId}&partnerUserName=${querydto.partnerUserName || ''}`
                })
                if (code == 0) {
                    uni.showToast({
                        title: '验证码已发送',
                        icon: "none"
                    });
                    this.setTimer(); //调用定时器方法
                } else {
                    this.getCodeText = "获取验证码" //发送验证码
            }
        }
        // #endif
    },
    onShareAppMessage() {
        let that = this;
        var name = that.currentInfo.customerDTO && that.currentInfo.customerDTO.name || that.currentInfo.supplierDTO &&
            that.currentInfo.supplierDTO.name || that.currentInfo.partnerDTO && that.currentInfo.partnerDTO.name || ''
        var url =
            `/pages/login/supplier-login?shareId=${this.currentInfo && this.currentInfo.id || ''}&shareName=${name || ''}`; //你的转发页面路径拼接参数
        return {
            title: "花满芫",
            path: url,
        }
    },
    onShareTimeline() {
        let that = this;
        var name = that.currentInfo.customerDTO && that.currentInfo.customerDTO.name || that.currentInfo.supplierDTO &&
            that.currentInfo.supplierDTO.name || that.currentInfo.partnerDTO && that.currentInfo.partnerDTO.name || ''
        var url =
            `/pages/login/supplier-login?shareId=${this.currentInfo && this.currentInfo.id || ''}&shareName=${name || ''}`; //你的转发页面路径拼接参数
        return {
            title: "花满芫",
            path: url,
        }
    },
    data() {
        return {
            optionsStr: '',
            openId: '-1',
            userName: '',
            password: '',
            // userName: '',
            // password: '',
            phoneNumber: '',
            smsCode: '',
            source: '', //来源
            sharePartnerUserId: '', //分享跳转登录的id
            checked: false,
            loginType: 'pwd', //pwd和code,密码和验证码登录
            pcfvalue: undefined,
            getCodeText: '获取验证码',
            getCodeBtnColor: "#20613D",
            getCodeisWaiting: false,
            Timer: undefined,
            protocal: false,
            // #ifdef PUB_SUPPLIER
            apitype: 'loginSupplier',
            // #endif
            // #ifdef PUB_PARTNER
            apitype: 'loginPartner',
            // #endif
            // #ifdef PUB_CUSTOMER
            apitype: 'loginCustomer',
            // #endif
            // return 'loginPartner'
        };
    },
    methods: {
        handleWechatClick() {
            let that = this
            // 微信登录
            uni.login({
                "provider": "weixin",
                "onlyAuthorize": true, // 微信登录仅请求授权认证
                success: async function (event) {
                    console.log("客户端成功获取授权临时票据(code),向业务服务器发起登录请求。")
                    console.log(event)
                    const { code } = event
                    console.log('code', code)
                    that.$message.showLoading();
                    const resp = await that.$store.dispatch('loginwx', { code })
                    if (resp && resp.data) {
                        that.$forceUpdate()
                        uni.reLaunch({
                            url: '/pages/home/home'
                        })
                    }
                    // const resp = await that.$http.request('get', '/api/wx/jscode2session', {
                    //     params: {
                    //         jsCode: code,
                    //         userType: that.apitype.replace("login", "").toLowerCase()
                    //     }
                    // });
                    that.$message.hideLoading();
                    // console.log('resp', resp)
                    // if (resp && resp.data) {
                    //     var cts = resp.data;
                    //     var openid = cts.openid; //openid 用户唯一标识
                    //     if (cts && cts.openid) {
                    //         that.$storage.setItem('openid', cts.openid);
                    //     }
                    //     var session_key = cts.session_key; //session_key  会话密钥
                    //     if (true) {
                    //         if (!!cts.errmsg) {
                    //             that.$message.showToast('获取失败' + cts.errmsg);
                    //         } else {
                    //             //成功了,再调用
                    //             uni.getUserInfo({
                    //             provider: 'weixin',
                    //             success: function (infoRes) {
                    //                 console.log("uni.getUserInfo")
                    //                 console.log(infoRes)
                    //                 console.log('用户信息:', infoRes.userInfo);
                    //             },
                    //             fail: function (err) {
                    //                 console.error('获取用户信息失败:', err);
                    //             },
                    //             });
                    //         }
                    //     }
                    // }
                },
                fail: function (err) {
                    // 登录授权失败
                    // err.code是错误码
                }
            })
        },
        // 手机号码正则表达式校验
        validatePhoneNumber() {
            // 手机号码正则表达式,可以根据需要调整
            const phoneRegex = /^[1][3-9][0-9]{9}$/;
            if (this.loginType == 'pwd') {
                if (!phoneRegex.test(this.userName)) {
                    this.$message.showToast('请填写正确手机号码')
                }
            }
            if (this.loginType == 'code') {
                if (!phoneRegex.test(this.phoneNumber)) {
                    this.$message.showToast('请填写正确手机号码')
                }
            }
        },
        async getCode() {
            console.log('getCode')
            uni.hideKeyboard() //隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。
            if (this.getCodeisWaiting) {
                return;
            }
            if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(this.phoneNumber))) { //校验手机号码是否有误
                this.$message.showToast('请填写正确手机号码')
                return false;
            }
            this.getCodeText = "发送中..." //发送验证码
            this.getCodeisWaiting = true;
            this.getCodeBtnColor = "#000" //追加样式,修改颜色
            //示例用定时器模拟请求效果
            //setTimeout(()用于在指定的毫秒数后调用函数或计算表达式
            const {
                code
            } = await this.$http.request('post', '/api/sms/send/code', {
                data: {
                    tel: this.phoneNumber,
                    userType: this.apitype.replace("login", "").toLowerCase()
                }
            })
            if (code == 0) {
                uni.showToast({
                    title: '验证码已发送',
                    icon: "none"
                });
                this.setTimer(); //调用定时器方法
            } else {
                this.getCodeText = "获取验证码" //发送验证码
                this.getCodeisWaiting = false;
                this.getCodeBtnColor = "#20613D";
            }
            // setTimeout(() => {
            //     uni.showToast({
            //         title: '验证码已发送',
            //         icon: "none"
            //     }); //弹出提示框
            //     //示例默认1234,生产中请删除这一句。
            //     // this.code = '1234'; //发送验证码,进行填入
            //     this.setTimer(); //调用定时器方法
            // }, 1000)
        },
        //setTimer: 需要每隔一段时间执行一件事的的时候就需要使用SetTimer函数
        setTimer() {
            let holdTime = 60; //定义变量并赋值
            this.getCodeText = "重新获取(60)"
            //setInterval()是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。
            //setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭。
            this.Timer = setInterval(() => {
                if (holdTime <= 0) {
                    this.getCodeisWaiting = false;
                    this.getCodeBtnColor = "#20613D";
                    this.getCodeText = "获取验证码"
                    clearInterval(this.Timer); //清除该函数
                    return; //返回前面
                }
                // setTimeout(() => {
                //     uni.showToast({
                //         title: '验证码已发送',
                //         icon: "none"
                //     }); //弹出提示框
                //     //示例默认1234,生产中请删除这一句。
                //     // this.code = '1234'; //发送验证码,进行填入
                //     this.setTimer(); //调用定时器方法
                // }, 1000)
            },
            //setTimer: 需要每隔一段时间执行一件事的的时候就需要使用SetTimer函数
            setTimer() {
                let holdTime = 60; //定义变量并赋值
                this.getCodeText = "重新获取(60)"
                //setInterval()是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。
                //setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭。
                this.Timer = setInterval(() => {
                    if (holdTime <= 0) {
                        this.getCodeisWaiting = false;
                        this.getCodeBtnColor = "#20613D";
                        this.getCodeText = "获取验证码"
                        clearInterval(this.Timer); //清除该函数
                        return; //返回前面
                    }
                    this.getCodeText = "重新获取(" + holdTime + ")"
                    holdTime--;
                }, 1000)
            },
            toHome() {
                uni.reLaunch({
                    url: '/pages/home/home'
                })
            },
            toReg() {
                // uni.switchTab({
                //     url: '/pages/index/index'
                // })
                var addstr = ''
                // #ifdef PUB_PARTNER
                addstr = '?source=step'
                uni.navigateTo({
                    url: '/sub_pages/partner/partner-info/partner-info' + addstr
                })
                // #endif
                // #ifdef PUB_SUPPLIER
                uni.reLaunch({
                    url: '/pages/login/supplier-reg'
                })
                // #endif
                // #ifdef PUB_CUSTOMER
                // addstr = '?source=step'
                // uni.navigateTo({
                //     url: '/sub_pages/customer/customer-info/customer-info' + addstr
                // })
                uni.reLaunch({
                    url: '/pages/login/supplier-reg'
                })
                // todo 如果是有分享id的,可能需要提前进行绑定
                this.getCodeText = "重新获取(" + holdTime + ")"
                holdTime--;
            }, 1000)
        },
        toHome() {
            uni.reLaunch({
                url: '/pages/home/home'
            })
        },
        toReg() {
            // uni.switchTab({
            //     url: '/pages/index/index'
            // })
            var addstr = ''
            // #ifdef PUB_PARTNER
            addstr = '?source=step'
            uni.navigateTo({
                url: '/sub_pages/partner/partner-info/partner-info' + addstr
            })
            // #endif
            // #ifdef PUB_SUPPLIER
            uni.reLaunch({
                url: '/pages/login/supplier-reg'
            })
            // #endif
            // #ifdef PUB_CUSTOMER
            // addstr = '?source=step'
            // uni.navigateTo({
            //     url: '/sub_pages/customer/customer-info/customer-info' + addstr
            // })
            uni.reLaunch({
                url: '/pages/login/supplier-reg'
            })
            // todo 如果是有分享id的,可能需要提前进行绑定
                // #endif
            },
            changeAll(e) {
                this.pcfvalue = e.detail.value[0]
            },
            async login() {
                if(!this.protocal){
                    this.$message.showToast('请同意用户协议')
                    return
                }
                uni.showLoading({
                    title: '登陆中'
                });
                var that = this;
                if (this.loginType == 'pwd') {
                    if (!that.userName) {
                        uni.showToast({
                            title: '请输入用户名',
                            icon: 'none'
                        });
                        return;
                    }
                    if (!that.password) {
                        uni.showToast({
                            title: '请输入密码',
                            icon: 'none'
                        });
                        return;
                    }
                    that.phoneNumber = ''
                }
                if (this.loginType == 'code') {
                    if (!that.phoneNumber) {
                        uni.showToast({
                            title: '请输入手机号',
                            icon: 'none'
                        });
                        return;
                    }
                    if (!that.smsCode) {
                        uni.showToast({
                            title: '请输入手机验证码',
                            icon: 'none'
                        });
                        return;
                    }
                }
                // if (this.pcfvalue == undefined) {
                //     util.showMyToast('必须勾选《用户服务协议》及《隐私政策》');
                //     return;
                // }
                let post = {
                    username: this.userName,
                    password: this.password,
                    tel: this.phoneNumber,
                    smsCode: this.smsCode
                    // openId: '123456789'
                }
                // const {
                // code
                // } = await this.$http.request('get', '/api/login/admin')
                const resp = await this.$store.dispatch(this.apitype, post);
                // uni.hideLoading()
                if (resp.code === 0) {
                    // myCache.cache("userToken", res.data.accessToken)
                    // let userRes = await gzmzApi.getMemberInfo();
                    // if (userRes.status) {
                    //     myCache.cache("userInfo", JSON.stringify(userRes.data))
                    // }
                    // setTimeout(() => {
                    //     uni.navigateBack();
                    // }, 1000);
                } else {
                    // uni.showToast({
                    //     title: '登录失败!',
                    //     icon: 'none'
                    // });
            // #endif
        },
        changeAll(e) {
            this.pcfvalue = e.detail.value[0]
        },
        async login() {
            if (!this.protocal) {
                this.$message.showToast('请同意用户协议')
                return
            }
            uni.showLoading({
                title: '登陆中'
            });
            var that = this;
            if (this.loginType == 'pwd') {
                if (!that.userName) {
                    uni.showToast({
                        title: '请输入用户名',
                        icon: 'none'
                    });
                    return;
                }
            },
            tc1(id) {
                uni.navigateTo({
                    url: '/pages/users/xieyi?id=' + id,
                });
                if (!that.password) {
                    uni.showToast({
                        title: '请输入密码',
                        icon: 'none'
                    });
                    return;
                }
                that.phoneNumber = ''
            }
            if (this.loginType == 'code') {
                if (!that.phoneNumber) {
                    uni.showToast({
                        title: '请输入手机号',
                        icon: 'none'
                    });
                    return;
                }
                if (!that.smsCode) {
                    uni.showToast({
                        title: '请输入手机验证码',
                        icon: 'none'
                    });
                    return;
                }
            }
            // if (this.pcfvalue == undefined) {
            //     util.showMyToast('必须勾选《用户服务协议》及《隐私政策》');
            //     return;
            // }
            let post = {
                username: this.userName,
                password: this.password,
                tel: this.phoneNumber,
                smsCode: this.smsCode
                // openId: '123456789'
            }
            // const {
            // code
            // } = await this.$http.request('get', '/api/login/admin')
            const resp = await this.$store.dispatch(this.apitype, post);
            // uni.hideLoading()
            if (resp.code === 0) {
                // myCache.cache("userToken", res.data.accessToken)
                // let userRes = await gzmzApi.getMemberInfo();
                // if (userRes.status) {
                //     myCache.cache("userInfo", JSON.stringify(userRes.data))
                // }
                // setTimeout(() => {
                //     uni.navigateBack();
                // }, 1000);
            } else {
                // uni.showToast({
                //     title: '登录失败!',
                //     icon: 'none'
                // });
                return;
            }
        },
        tc1(id) {
            uni.navigateTo({
                url: '/pages/users/xieyi?id=' + id,
            });
        }
    };
    }
};
</script>
<style lang="scss" scoped>
    .form-input {
        background-color: #f8f7fc;
        border-radius: 50rpx;
        margin-bottom: 50rpx;
        border: 1px solid #e9e9e9;
.form-input {
    background-color: #f8f7fc;
    border-radius: 50rpx;
    margin-bottom: 50rpx;
    border: 1px solid #e9e9e9;
        /deep/ .u-input {
            padding-left: 60rpx !important;
            padding-right: 40rpx !important;
        }
    /deep/ .u-input {
        padding-left: 60rpx !important;
        padding-right: 40rpx !important;
    }
        /deep/ input {
            height: 70rpx;
            line-height: 70rpx;
        }
    /deep/ input {
        height: 70rpx;
        line-height: 70rpx;
    }
}
</style>
<style lang="scss" scoped>
    @import './login.scss';
@import './login.scss';
    .main-container {
        margin: 20px 0;
.main-container {
    margin: 20px 0;
}
.img-a {
    position: absolute;
    width: 100%;
    top: -150rpx;
    right: 0;
}
.img-b {
    position: absolute;
    width: 50%;
    bottom: 0;
    left: -120rpx;
}
.to-home {
    margin-top: 30rpx;
    font-size: 30rpx;
    color: #5af;
    display: flex;
    flex-direction: row-reverse;
}
.t-login {
    width: 100%;
    margin: 0 auto;
    font-size: 28rpx;
    color: #000;
}
.t-login .bg {
    width: 100%;
    position: relative;
}
.t-login .login {
    width: 650rpx;
    margin: 60rpx auto;
    margin-top: 0rpx;
    font-size: 28rpx;
    color: #000;
}
.t-login button {
    font-size: 28rpx;
    background: #5677fc;
    color: #fff;
    height: 90rpx;
    line-height: 90rpx;
    border-radius: 50rpx;
    box-shadow: 0 5px 7px 0 rgba(86, 119, 252, 0.2);
}
.t-login input {
    padding: 0 20rpx 0 60rpx;
    height: 90rpx;
    line-height: 90rpx;
    margin-bottom: 50rpx;
    background: #f8f7fc;
    border: 1px solid #e9e9e9;
    font-size: 28rpx;
    border-radius: 50rpx;
}
.t-login .t-a {
    position: relative;
    .get-code {
        // position: absolute;
        // right: 40rpx;
        // top: 25rpx;
    }
}
    .img-a {
        position: absolute;
        width: 100%;
        top: -150rpx;
        right: 0;
    }
.t-login .t-a .icon {
    width: 40rpx;
    height: 40rpx;
    position: absolute;
    left: 24rpx;
    top: 14rpx;
    margin-right: 20rpx;
}
    .img-b {
        position: absolute;
        width: 50%;
        bottom: 0;
        left: -120rpx;
    }
.t-login .t-a .line {
    width: 2rpx;
    height: 40rpx;
    background-color: #dedede;
    position: absolute;
    top: 28rpx;
    left: 98rpx;
}
    .to-home {
        margin-top: 30rpx;
        font-size: 30rpx;
        color: #5af;
        display: flex;
        flex-direction: row-reverse;
    }
.t-login .t-b {
    text-align: left;
    font-size: 46rpx;
    color: #000;
    padding: 300rpx 0 30rpx 0;
    font-weight: bold;
}
    .t-login {
        width: 100%;
        margin: 0 auto;
        font-size: 28rpx;
        color: #000;
    }
.t-login .t-b2 {
    text-align: left;
    font-size: 32rpx;
    color: #aaaaaa;
    padding: 0rpx 0 120rpx 0;
}
    .t-login .bg {
        width: 100%;
        position: relative;
    }
.t-login .t-c {
    position: absolute;
    right: 22rpx;
    top: 22rpx;
    background: #5677fc;
    color: #fff;
    font-size: 24rpx;
    border-radius: 50rpx;
    height: 50rpx;
    line-height: 50rpx;
    padding: 0 25rpx;
    z-index: 999;
}
    .t-login .login {
        width: 650rpx;
        margin: 60rpx auto;
        margin-top: 0rpx;
        font-size: 28rpx;
        color: #000;
    }
.t-login .t-d {
    text-align: center;
    color: #999;
    margin: 80rpx 0;
}
    .t-login button {
        font-size: 28rpx;
        background: #5677fc;
        color: #fff;
        height: 90rpx;
        line-height: 90rpx;
        border-radius: 50rpx;
        box-shadow: 0 5px 7px 0 rgba(86, 119, 252, 0.2);
    }
.t-login .t-e {
    text-align: center;
    width: 250rpx;
    margin: 80rpx auto 0;
}
    .t-login input {
        padding: 0 20rpx 0 60rpx;
        height: 90rpx;
        line-height: 90rpx;
        margin-bottom: 50rpx;
        background: #f8f7fc;
        border: 1px solid #e9e9e9;
        font-size: 28rpx;
        border-radius: 50rpx;
    }
.t-login .t-g {
    float: left;
    width: 50%;
}
    .t-login .t-a {
        position: relative;
.t-login .t-e image {
    width: 50rpx;
    height: 50rpx;
}
        .get-code {
            // position: absolute;
            // right: 40rpx;
            // top: 25rpx;
        }
    }
.t-login .t-f {
    text-align: center;
    margin: 200rpx 0 0 0;
    color: #666;
}
    .t-login .t-a .icon {
        width: 40rpx;
        height: 40rpx;
        position: absolute;
        left: 24rpx;
        top: 14rpx;
        margin-right: 20rpx;
    }
.t-login .t-f text {
    margin-left: 20rpx;
    color: #aaaaaa;
    font-size: 27rpx;
}
    .t-login .t-a .line {
        width: 2rpx;
        height: 40rpx;
        background-color: #dedede;
        position: absolute;
        top: 28rpx;
        left: 98rpx;
    }
// .t-login .uni-input-placeholder {
//     color: #000;
// }
    .t-login .t-b {
        text-align: left;
        font-size: 46rpx;
        color: #000;
        padding: 300rpx 0 30rpx 0;
        font-weight: bold;
    }
.cl {
    zoom: 1;
}
    .t-login .t-b2 {
        text-align: left;
        font-size: 32rpx;
        color: #aaaaaa;
        padding: 0rpx 0 120rpx 0;
    }
.cl:after {
    clear: both;
    display: block;
    visibility: hidden;
    height: 0;
    content: '\20';
}
    .t-login .t-c {
        position: absolute;
        right: 22rpx;
        top: 22rpx;
        background: #5677fc;
        color: #fff;
        font-size: 24rpx;
        border-radius: 50rpx;
        height: 50rpx;
        line-height: 50rpx;
        padding: 0 25rpx;
        z-index: 999;
    }
    .t-login .t-d {
        text-align: center;
        color: #999;
        margin: 80rpx 0;
    }
    .t-login .t-e {
        text-align: center;
        width: 250rpx;
        margin: 80rpx auto 0;
    }
    .t-login .t-g {
        float: left;
        width: 50%;
    }
    .t-login .t-e image {
        width: 50rpx;
        height: 50rpx;
    }
    .t-login .t-f {
        text-align: center;
        margin: 200rpx 0 0 0;
        color: #666;
    }
    .t-login .t-f text {
        margin-left: 20rpx;
        color: #aaaaaa;
        font-size: 27rpx;
    }
    // .t-login .uni-input-placeholder {
    //     color: #000;
    // }
    .cl {
        zoom: 1;
    }
    .cl:after {
        clear: both;
        display: block;
        visibility: hidden;
        height: 0;
        content: '\20';
    }
.third-login-text{
    font-size: 18rpx;
    margin-top:5rpx;
}
</style>