7 changed files with 178 additions and 16 deletions
-
3src/api/index.js
-
32src/api/server.js
-
11src/pages.json
-
7src/subpackage/authorize/api/index.js
-
131src/subpackage/authorize/pages/index.vue
-
BINsrc/subpackage/authorize/static/images/authorize.png
-
10src/utils/polish.js
@ -1,6 +1,9 @@ |
|||
import server from './server'; |
|||
|
|||
// 公共
|
|||
export const douyinMiniAppLoginAndSync = params => server.post({ url: '/user/douyinMiniAppLoginAndSync', ...params }); // 抖音小程序授权
|
|||
|
|||
|
|||
export const login = params => server.post({ url: '/Admino/AdminUser/login', ...params }); // 登录
|
|||
export const stadiumFind = params => server.post({ url: '/stadium/find', ...params }); // 登录
|
|||
export const stadiumBookList = params => server.post({ url: '/stadium/book/list', ...params }); // 订场列表
|
@ -0,0 +1,7 @@ |
|||
import server from '@/api/server'; |
|||
|
|||
// 公共
|
|||
export const douyinMiniAppBaseAuth = params => server.post({ url: '/user/douyinMiniAppBaseAuth', ...params }); // 抖音小程序code登录
|
|||
|
|||
|
|||
|
@ -0,0 +1,131 @@ |
|||
<script setup> |
|||
import { onLoad } from '@dcloudio/uni-app'; |
|||
import { reactive, ref } from 'vue'; |
|||
import { showLoad, hideLoad, showModal } from "@/utils/polish"; |
|||
import { douyinMiniAppBaseAuth } from "../api"; |
|||
|
|||
let loginRes = ref(null); |
|||
let dyPhoneAuthorize = ref(false); |
|||
const APPID = tt.getEnvInfoSync()?.microapp?.appId ?? ''; |
|||
|
|||
onLoad(() => { |
|||
dysilentLogin(); |
|||
}); |
|||
|
|||
// 抖音获取登陆code, 手机解析需要获取code在点击之前 |
|||
let dyGetLoginCode = async function(){ |
|||
try{ |
|||
showLoad(); |
|||
let _loginRes = await uni.login(); |
|||
hideLoad(); |
|||
if(!_loginRes.code){ |
|||
return showModal({ |
|||
content: '获取登陆凭证失败!请稍后重试', |
|||
// success: _=> this.routeOperate(), |
|||
}) |
|||
} |
|||
return loginRes.value = _loginRes; |
|||
}catch(err){ |
|||
hideLoad(); |
|||
return showModal({ |
|||
content: '获取登陆凭证失败!请稍后重试', |
|||
// success: _=> this.routeOperate(), |
|||
}) |
|||
} |
|||
} |
|||
|
|||
// 静默登陆,审核多按钮登陆不过 |
|||
// 判断是否需要需要绑定手机,直接手机号登陆 |
|||
const dysilentLogin = async function(){ |
|||
try{ |
|||
let _loginRes = await dyGetLoginCode(); |
|||
let _bData = await douyinMiniAppBaseAuth({ data: { code: _loginRes.code, appid: APPID } }); |
|||
console.log(_bData); |
|||
|
|||
// await this.dyCheckPhoneStatus(_bData, true); |
|||
}catch(err){ |
|||
hideLoad(); |
|||
console.warn('silentLogin err --->', err); |
|||
} |
|||
} |
|||
|
|||
|
|||
// 抖音检查手机绑定状态 |
|||
let dyCheckPhoneStatus = async function(_bData, isSilent = false){ |
|||
if(_bData.data.code == 0){ |
|||
let _data = _bData.data.data; |
|||
if(_data?.user?.extension?.is_auth_mobile === false){ // 手机登陆 |
|||
let _codeInfo = await dyGetLoginCode(); |
|||
if(_codeInfo&&_codeInfo.code){ |
|||
dyPhoneAuthorize.value = true; |
|||
!isSilent&&showNone('未绑定手机,请用手机号登陆!'); |
|||
} |
|||
return; |
|||
} |
|||
// 成功后登陆操作 |
|||
if(_data?.token&&!isSilent)return this.successOperate(_bData); |
|||
}else if(_bData.data.code == 11005){ // 手机登陆 |
|||
let _codeInfo = await dyGetLoginCode(); |
|||
if(_codeInfo&&_codeInfo.code){ |
|||
dyPhoneAuthorize.value = true; |
|||
!isSilent&&showNone('未授权,请用手机号登陆!'); |
|||
} |
|||
}else{ |
|||
!isSilent&&showNone(_bData.data.message || '登陆失败!'); |
|||
} |
|||
} |
|||
|
|||
</script> |
|||
|
|||
<template> |
|||
<view class="authorize-index"> |
|||
<view class="ac-tit">您还未登录</view> |
|||
<view class="ac-tip">请先登录再进行操作</view> |
|||
<image class="ac-img" mode="aspectFit" src="@/subpackage/authorize/static/images/authorize.png"></image> |
|||
<view class="ac-btns"> |
|||
<button v-if="false" plain class="ab-btn" open-type="getPhoneNumber">抖音手机号授权快捷登录</button> |
|||
<button v-else plain class="ab-btn" >抖音用户信息授权登录</button> |
|||
<button plain class="ab-btn" hover-class="hover-active" @click="cancel">暂不登录</button> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<style lang="scss" scoped> |
|||
.authorize-index{ |
|||
padding-top: 124upx; |
|||
.ac-tit{ |
|||
text-align: center; |
|||
@include flcw(32upx, 44upx, #333, 500); |
|||
} |
|||
.ac-tip{ |
|||
margin-top: 20upx; |
|||
text-align: center; |
|||
@include flcw(28upx, 40upx, #9A9A9D); |
|||
} |
|||
.ac-img{ |
|||
display: block; |
|||
margin: 2upx auto 0; |
|||
width: 578upx; |
|||
height: 578upx; |
|||
} |
|||
.ac-btns{ |
|||
margin-top: 62upx; |
|||
width: 100%; |
|||
padding: 0 20upx; |
|||
.ab-btn{ |
|||
@include clearBtn; |
|||
margin-top: 24upx; |
|||
text-align: center; |
|||
border: 2upx solid $mColor; |
|||
border-radius: 44upx; |
|||
background-color: $mColor; |
|||
@include flcw(28up, 84upx, #fff); |
|||
&+.ab-btn{ |
|||
border-color: #C9C9CB; |
|||
color: #9a9a9d; |
|||
background-color: transparent; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</style> |
After Width: 578 | Height: 578 | Size: 26 KiB |
Write
Preview
Loading…
Cancel
Save
Reference in new issue