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'; |
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 login = params => server.post({ url: '/Admino/AdminUser/login', ...params }); // 登录
|
||||
export const stadiumFind = params => server.post({ url: '/stadium/find', ...params }); // 登录
|
export const stadiumFind = params => server.post({ url: '/stadium/find', ...params }); // 登录
|
||||
export const stadiumBookList = params => server.post({ url: '/stadium/book/list', ...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