@@ -6,20 +6,16 @@ export default { | |||
// 是否允许用户注册 | |||
"enableSignUp": true, | |||
//请求数据的接口地址;可以配置多个,开发环境下登录页会出现选择菜单供您选择 | |||
//黑龙江正式地址 | |||
"apiHost": [ | |||
"http://localhost:31173/" | |||
"http://1.190.222.34:9001/" | |||
], | |||
"webHost":"http://localhost:20472/", | |||
//学校测试环境地址: | |||
"webHost":"http://1.190.222.34:9000/", | |||
//本地: | |||
// "apiHost": [ | |||
// "http://218.84.232.3:9003/" | |||
// "http://localhost:9003/" | |||
// ], | |||
// "webHost":"http://218.84.232.3:8000/", | |||
//学校正式环境地址: | |||
// "apiHost": [ | |||
// "http://10.30.0.10:9002/" | |||
// ], | |||
// "webHost":"http://10.30.0.10:8000/", | |||
// "webHost":"http://localhost:8000/", | |||
// 开发环境下自动填充登录账号密码,与接口地址一一对应,只在开发环境下显示 | |||
"devAccount": [ | |||
{ username: "system", password: "www.qj.com" } | |||
@@ -1207,6 +1207,18 @@ | |||
"style": { | |||
"navigationBarTitleText": "考试安排" | |||
} | |||
}, | |||
{ "path": "pages/weixinLogin", | |||
"style": { | |||
"navigationStyle": "custom", | |||
"disableScroll": true | |||
} | |||
}, | |||
{ "path": "pages/wxLogin", | |||
"style": { | |||
"navigationStyle": "custom", | |||
"disableScroll": true | |||
} | |||
} | |||
@@ -32,7 +32,12 @@ | |||
<l-icon slot="title" type="lock" /> | |||
</l-input> | |||
<l-button @click="login(null)" size="lg" color="blue" class="margin-top-sm block" block>登 录</l-button> | |||
<!-- <l-button v-if="enableSignUp" @click="signUp" size="lg" line="blue" class="margin-top-sm block" block> | |||
<l-button @click="signUp('/pages/wxLogin')" size="lg" color="blue" class="margin-top-sm block" block>微信登录</l-button> | |||
<view class="otherLogin"> | |||
<navigator url="/pages/weixinLogin" class="textBtn">新生首次登录</text></navigator> | |||
</view> | |||
<!-- <l-button v-if="enableSignUp" @click="signUp('/pages/signup')" size="lg" line="blue" class="margin-top-sm block" block> | |||
教师注册 | |||
</l-button> --> | |||
@@ -61,9 +66,6 @@ | |||
</view> | |||
<!-- 页面底部版权文字 --> | |||
<view class="footer">{{ copyRightDisplay }}</view> | |||
<!-- #ifdef H5 --> | |||
<view class="footermii" @click="openmii">新ICP备2020001276号-2</view> | |||
<!-- #endif --> | |||
</view> | |||
</template> | |||
@@ -105,11 +107,8 @@ export default { | |||
}, | |||
// 点击新用户注册 | |||
signUp() { | |||
this.NAV_TO('/pages/signup') | |||
}, | |||
openmii() { | |||
window.open('https://beian.miit.gov.cn','_blank'); | |||
signUp(url) { | |||
this.NAV_TO(url) | |||
}, | |||
// 切换后台地址 | |||
@@ -272,6 +271,15 @@ page { | |||
margin-top: 20rpx; | |||
} | |||
} | |||
.otherLogin{ | |||
display: flex; | |||
justify-content: flex-end; | |||
.textBtn{ | |||
width: 100px; | |||
color: #606266; | |||
} | |||
} | |||
.more { | |||
margin-top: 30rpx; | |||
@@ -282,20 +290,6 @@ page { | |||
} | |||
.footer { | |||
position: absolute; | |||
left: 0; | |||
right: 0; | |||
bottom: 30px; | |||
bottom: calc(30px + env(safe-area-inset-bottom)); | |||
text-align: center; | |||
font-size: 14px; | |||
color: #555; | |||
/* #ifdef MP-ALIPAY */ | |||
bottom: 30px; | |||
/* #endif */ | |||
} | |||
.footermii { | |||
position: absolute; | |||
left: 0; | |||
right: 0; | |||
@@ -304,7 +298,7 @@ page { | |||
text-align: center; | |||
font-size: 14px; | |||
color: #555; | |||
/* #ifdef MP-ALIPAY */ | |||
bottom: 10px; | |||
/* #endif */ | |||
@@ -0,0 +1,399 @@ | |||
<template> | |||
<view class="page"> | |||
<view class="content"> | |||
<view class="head-banner"> | |||
<!-- 标题文字 --> | |||
<view class="main-title"> | |||
绑定微信 | |||
<!-- <text v-if="DEV" class="margin-left-sm text-red">(开发模式)</text> --> | |||
<!-- <text class="text-gray margin-left-sm" style="font-size: 0.7em;">{{ APP_VERSION }}</text> --> | |||
</view> | |||
<!-- 首页 Logo --> | |||
<view mode="aspectFit" class="logo"> | |||
<image src="~@/static/wx.png" mode="widthFix" class="logoImg"></image> | |||
</view> | |||
<!-- 【仅生产环境】使用账号的原因,无此项则微信审核通不过 --> | |||
<!-- <view v-if="!DEV" class="intro"> | |||
<view class="intro">注册登录智慧校园账号后,您将可以体验力软框架产品中的所有功能与业务</view> | |||
<view class="intro">OA · 进销存 · 工作流审批 · 数据可视化</view> | |||
<view class="intro text-gray" style="font-size: 0.9em;"> | |||
如果您之前已在智慧校园 PC 端中注册过体验账号,可以直接使用原账号登录,无需另行注册 | |||
</view> | |||
</view> --> | |||
</view> | |||
<!-- 账户密码表单 --> | |||
<l-input v-if="ready" v-model="username" placeholder="身份证号" left> | |||
<l-icon slot="title" type="people" /> | |||
</l-input> | |||
<l-input v-if="ready" v-model="password" placeholder="请输入身份证后八位" password left> | |||
<l-icon slot="title" type="lock" /> | |||
</l-input> | |||
<l-button v-if="ready" @click="loginClick(null)" size="lg" color="blue" class="margin-top-sm block" block>确 认</l-button> | |||
<view class="otherLogin"> | |||
<navigator url="/pages/login" class="textBtn">常规登陆</text></navigator> | |||
</view> | |||
<!-- <l-button v-if="enableSignUp" @click="signUp" size="lg" line="blue" class="margin-top-sm block" block> | |||
教师注册 | |||
</l-button> --> | |||
<!-- 【仅小程序】一键登录按钮 --> | |||
<!-- #ifdef MP --> | |||
<l-button v-if="MPLogin" @click="login(PLATFORM)" size="lg" line="green" class="margin-top-sm block" block> | |||
{{ PLATFORM_TEXT }}一键登录 | |||
</l-button> | |||
<!-- #endif --> | |||
<!-- 【仅开发模式】显示,后台地址切换 --> | |||
<!-- <view v-if="DEV" class="more"> | |||
<view @click="showApiRootSelector = true" class="morebtn">后台地址(点击切换):</view> | |||
<view class="morebtn">{{ currentApiRoot }}</view> | |||
</view> --> | |||
<!-- 【仅开发模式】选择 API 地址的弹层 --> | |||
<l-modal | |||
v-if="DEV && ready" | |||
v-model="showApiRootSelector" | |||
@radioIndex="changeApiRoot" | |||
:radio="currentApiRoot" | |||
:range="apiRootList" | |||
type="radio" | |||
/> | |||
</view> | |||
<!-- 页面底部版权文字 --> | |||
<view class="footer">{{ copyRightDisplay }}</view> | |||
</view> | |||
</template> | |||
<script> | |||
import moment from 'moment'; | |||
export default { | |||
data() { | |||
return { | |||
username: '', | |||
password: '', | |||
code:'', | |||
ready: false, | |||
showApiRootSelector: false, | |||
currentApiRoot: '', | |||
apiRootList: [], | |||
devAccountList: [] | |||
} | |||
}, | |||
async onLoad() { | |||
if(this.getHashSearchParam("code")){ | |||
this.code = this.getHashSearchParam("code") | |||
} | |||
await this.init() | |||
}, | |||
methods: { | |||
// 页面初始化 | |||
async init() { | |||
const index = this.DEV ? this.CONFIG('devApiHostIndex') : this.CONFIG('prodApiHostIndex') | |||
this.apiRootList = this.CONFIG('apiHost') | |||
this.currentApiRoot = this.apiRootList[index] | |||
// 如果是开发模式,填入测试账号密码 | |||
if (this.DEV) { | |||
this.devAccountList = this.CONFIG('devAccount') | |||
const account = this.devAccountList[index] || { username: '', password: '' } | |||
this.username = account.username | |||
this.password = account.password | |||
} | |||
// this.ready = true | |||
this.loginInit() | |||
}, | |||
getHashSearchParam(key) { | |||
let search = location.search | |||
let array = [] | |||
if(search){ | |||
search = search.substring(1) | |||
array = search.split("&") | |||
let res = array.find((item)=>item.split("=")[0] == key) | |||
return res.split("=")[1] | |||
} | |||
return '' | |||
}, | |||
// 点击新用户注册 | |||
signUp() { | |||
this.NAV_TO('/pages/signup') | |||
}, | |||
loginInit(){ | |||
if (this.code) { | |||
this.LOADING("加载中...") | |||
this.HTTP_POST("weixinapi/getweixinaccess_token?code="+this.code,null).then(success=>{ | |||
this.HIDE_LOADING() | |||
if(!success){ | |||
location.href = "http://" + window.location.host; | |||
return | |||
} | |||
if(success.logined){ | |||
// var logininfo = { | |||
// account: account, | |||
// token: success.baseinfo.token, | |||
// date: moment().format('yyyy-MM-dd hh:mm:ss') | |||
// }; | |||
this.SET_STORAGE("token",success.baseinfo.token) | |||
// this.SET_STORAGE("logininfo",logininfo) | |||
// this.SET_STORAGE("userinfo",success) | |||
location.href = "http://" + window.location.host + "/#/pages/my/newpassword"; | |||
// location.href = "http://" + window.location.host; | |||
}else{ | |||
this.ready = true | |||
this.openid = success.openid | |||
} | |||
}) | |||
} else { | |||
this.HIDE_LOADING(); | |||
this.HTTP_GET("weixinapi/weixinconfig").then(success=>{ | |||
if(!success){ | |||
return | |||
} | |||
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + success.appid + "&redirect_uri=" + encodeURIComponent('http://' + window.location.host + '/#/pages/weixinLogin') + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; | |||
}) | |||
} | |||
}, | |||
loginClick(){ | |||
// 点击登录 | |||
// 账号密码登录时,验证输入,输入有误则返回 | |||
if (!this.check()) { | |||
return | |||
} | |||
let up = true | |||
var postData = { | |||
username: this.username, | |||
password: this.password, | |||
openid: this.openid, | |||
up: up | |||
}; | |||
this.LOADING("正在登录,请稍后") | |||
this.HTTP_POST("weixinapi/loginbyidcard", postData).then(success=>{ | |||
this.HIDE_LOADING() | |||
if(!success){ | |||
return | |||
} | |||
// var logininfo = { | |||
// account: this.username, | |||
// token: success.baseinfo.token, | |||
// date: moment().format('yyyy-MM-dd hh:mm:ss') | |||
// }; | |||
this.SET_STORAGE("token",success.baseinfo.token) | |||
// this.SET_STORAGE('logininfo', logininfo); | |||
// this.SET_STORAGE('userinfo', success); | |||
// this.username = "" | |||
// this.password = "" | |||
// if (success.pwd === true) { | |||
// this.SET_STORAGE('pwd', true); | |||
// this.TOAST("绑定失败!您的密码不满足强度要求,请您先修改密码后再执行系统其他操作"); | |||
// } else { | |||
// this.SET_STORAGE('pwd', false); | |||
// } | |||
location.href = "http://" + window.location.host + "/#/pages/my/newpassword"; | |||
}) | |||
}, | |||
// 切换后台地址 | |||
changeApiRoot(newIndex) { | |||
const newApiRoot = this.apiRootList[newIndex] | |||
this.currentApiRoot = newApiRoot | |||
this.SET_GLOBAL('apiRoot', newApiRoot) | |||
// 如果是开发模式,填入测试账号密码 | |||
if (this.DEV && this.devAccountList && this.devAccountList[newIndex]) { | |||
const account = this.devAccountList[newIndex] || { username: '', password: '' } | |||
this.username = account.username | |||
this.password = account.password | |||
} | |||
}, | |||
// 发起登录 | |||
// type=null 时表示使用账号密码登录 | |||
// type='weixin'/'alipay'/'dingtalk' 时表示使用小程序一键登录 | |||
async login(type) { | |||
const { username, password, check } = this | |||
// 账号密码登录时,验证输入,输入有误则返回 | |||
if (!type && !check()) { | |||
return | |||
} | |||
this.LOADING('登录中…') | |||
// 根据不同的登录方式,调用 API | |||
let loginResult = null | |||
// 不是小程序,则提交用户名、密码登录 | |||
// 是小程序,则申请授权码登录 | |||
if (!type) { | |||
let postResult = await this.POST('learun/adms/user/login', { username, password: this.MD5(password) }) | |||
if(postResult[1].data.code=='200'){ | |||
loginResult=postResult[1].data.data; | |||
}else{ | |||
this.TOAST(postResult[1].data.info); | |||
} | |||
} else { | |||
const [codeErr, { code } = {}] = await uni.login({ provider: type }) | |||
if (codeErr || !code) { | |||
this.HIDE_LOADING() | |||
this.CONFIRM('登录失败', '无法获取小程序登录授权码') | |||
return | |||
} | |||
loginResult = await this.HTTP_POST('learun/adms/user/openid_login', { code, type }, '登录时发生错误') | |||
} | |||
if (!loginResult) { | |||
return | |||
} | |||
// loginUser 中合并 role、post 两个字段 | |||
const { baseinfo, mpinfo, post, role } = loginResult | |||
const user = { ...baseinfo, post, role } | |||
const token = baseinfo.token | |||
// 返回的用户信息中,有 mpinfo 字段表示是否是小程序 | |||
if (mpinfo && Array.isArray(mpinfo) && mpinfo.includes(type)) { | |||
user.miniProgram = true | |||
} | |||
this.SET_GLOBAL('token', token) | |||
this.SET_GLOBAL('loginUser', user) | |||
this.SET_STORAGE('token', token) | |||
this.HIDE_LOADING() | |||
// this.TAB_TO('/pages/home') | |||
this.NAV_TO('/pages/my/newpassword') | |||
}, | |||
// 验证用户输入 | |||
check() { | |||
const { username, password } = this | |||
if (username.length <= 0 || password.length <= 0) { | |||
this.CONFIRM('输入错误', '账号或密码不能为空,请重新输入') | |||
return false | |||
} | |||
return true | |||
} | |||
}, | |||
computed: { | |||
// 页面底部公司名、版权信息 | |||
copyRightDisplay() { | |||
const year = new Date().getFullYear() | |||
const company = this.CONFIG('company') | |||
return `Copyright © ${year} ${company}` | |||
}, | |||
// 是否显示小程序登录按键 | |||
MPLogin() { | |||
return this.CONFIG(`miniProgramAccount.${this.PLATFORM}`).includes('login') | |||
}, | |||
// 是否展示注册按钮 | |||
enableSignUp() { | |||
return this.CONFIG('enableSignUp') | |||
} | |||
} | |||
} | |||
</script> | |||
<style lang="less"> | |||
page { | |||
height: 100%; | |||
} | |||
/* #ifdef MP-ALIPAY */ | |||
.page { | |||
height: 100%; | |||
position: absolute; | |||
} | |||
/* #endif */ | |||
</style> | |||
<style lang="less" scoped> | |||
.page { | |||
height: 100%; | |||
width: 100%; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
.content { | |||
text-align: center; | |||
width: 100%; | |||
padding: 0 38rpx; | |||
} | |||
.head-banner { | |||
margin-bottom: 40rpx; | |||
.logo { | |||
// background-image: url('~@/static/logo.png'); | |||
background-size: contain; | |||
height: 120rpx; | |||
width: 120rpx; | |||
text-align: center; | |||
display: inline-block; | |||
border-radius: 5px; | |||
} | |||
.logoImg { | |||
width: 100%; | |||
} | |||
.main-title { | |||
display: block; | |||
margin: 20rpx 0; | |||
color: #555; | |||
font-size: 1.4em; | |||
margin-bottom: 30rpx; | |||
} | |||
.intro { | |||
margin-top: 20rpx; | |||
} | |||
} | |||
.otherLogin{ | |||
display: flex; | |||
justify-content: flex-end; | |||
.textBtn{ | |||
width: 100px; | |||
color: #606266; | |||
} | |||
} | |||
.more { | |||
margin-top: 30rpx; | |||
.morebtn { | |||
color: #555; | |||
} | |||
} | |||
.footer { | |||
position: absolute; | |||
left: 0; | |||
right: 0; | |||
bottom: 10px; | |||
bottom: calc(10px + env(safe-area-inset-bottom)); | |||
text-align: center; | |||
font-size: 14px; | |||
color: #555; | |||
/* #ifdef MP-ALIPAY */ | |||
bottom: 10px; | |||
/* #endif */ | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,399 @@ | |||
<template> | |||
<view class="page"> | |||
<view class="content"> | |||
<view class="head-banner"> | |||
<!-- 标题文字 --> | |||
<view class="main-title"> | |||
微信登录 | |||
<!-- <text v-if="DEV" class="margin-left-sm text-red">(开发模式)</text> --> | |||
<!-- <text class="text-gray margin-left-sm" style="font-size: 0.7em;">{{ APP_VERSION }}</text> --> | |||
</view> | |||
<!-- 首页 Logo --> | |||
<view mode="aspectFit" class="logo"> | |||
<image src="~@/static/wx.png" mode="widthFix" class="logoImg"></image> | |||
</view> | |||
<!-- 【仅生产环境】使用账号的原因,无此项则微信审核通不过 --> | |||
<!-- <view v-if="!DEV" class="intro"> | |||
<view class="intro">注册登录智慧校园账号后,您将可以体验力软框架产品中的所有功能与业务</view> | |||
<view class="intro">OA · 进销存 · 工作流审批 · 数据可视化</view> | |||
<view class="intro text-gray" style="font-size: 0.9em;"> | |||
如果您之前已在智慧校园 PC 端中注册过体验账号,可以直接使用原账号登录,无需另行注册 | |||
</view> | |||
</view> --> | |||
</view> | |||
<!-- 账户密码表单 --> | |||
<l-input v-if="ready" v-model="username" placeholder="用户名" left> | |||
<l-icon slot="title" type="people" /> | |||
</l-input> | |||
<l-input v-if="ready" v-model="password" placeholder="密码" password left> | |||
<l-icon slot="title" type="lock" /> | |||
</l-input> | |||
<l-button v-if="ready" @click="loginClick(null)" size="lg" color="blue" class="margin-top-sm block" block>确 认</l-button> | |||
<view class="otherLogin"> | |||
<navigator url="/pages/login" class="textBtn">常规登陆</text></navigator> | |||
</view> | |||
<!-- <l-button v-if="enableSignUp" @click="signUp" size="lg" line="blue" class="margin-top-sm block" block> | |||
教师注册 | |||
</l-button> --> | |||
<!-- 【仅小程序】一键登录按钮 --> | |||
<!-- #ifdef MP --> | |||
<l-button v-if="MPLogin" @click="login(PLATFORM)" size="lg" line="green" class="margin-top-sm block" block> | |||
{{ PLATFORM_TEXT }}一键登录 | |||
</l-button> | |||
<!-- #endif --> | |||
<!-- 【仅开发模式】显示,后台地址切换 --> | |||
<!-- <view v-if="DEV" class="more"> | |||
<view @click="showApiRootSelector = true" class="morebtn">后台地址(点击切换):</view> | |||
<view class="morebtn">{{ currentApiRoot }}</view> | |||
</view> --> | |||
<!-- 【仅开发模式】选择 API 地址的弹层 --> | |||
<l-modal | |||
v-if="DEV && ready" | |||
v-model="showApiRootSelector" | |||
@radioIndex="changeApiRoot" | |||
:radio="currentApiRoot" | |||
:range="apiRootList" | |||
type="radio" | |||
/> | |||
</view> | |||
<!-- 页面底部版权文字 --> | |||
<view class="footer">{{ copyRightDisplay }}</view> | |||
</view> | |||
</template> | |||
<script> | |||
import moment from 'moment'; | |||
export default { | |||
data() { | |||
return { | |||
username: '', | |||
password: '', | |||
code:'', | |||
ready: false, | |||
showApiRootSelector: false, | |||
currentApiRoot: '', | |||
apiRootList: [], | |||
devAccountList: [] | |||
} | |||
}, | |||
async onLoad() { | |||
if(this.getHashSearchParam("code")){ | |||
this.code = this.getHashSearchParam("code") | |||
} | |||
await this.init() | |||
}, | |||
methods: { | |||
// 页面初始化 | |||
async init() { | |||
const index = this.DEV ? this.CONFIG('devApiHostIndex') : this.CONFIG('prodApiHostIndex') | |||
this.apiRootList = this.CONFIG('apiHost') | |||
this.currentApiRoot = this.apiRootList[index] | |||
// 如果是开发模式,填入测试账号密码 | |||
if (this.DEV) { | |||
this.devAccountList = this.CONFIG('devAccount') | |||
const account = this.devAccountList[index] || { username: '', password: '' } | |||
this.username = account.username | |||
this.password = account.password | |||
} | |||
// this.ready = true | |||
this.loginInit() | |||
}, | |||
getHashSearchParam(key) { | |||
let search = location.search | |||
let array = [] | |||
if(search){ | |||
search = search.substring(1) | |||
array = search.split("&") | |||
let res = array.find((item)=>item.split("=")[0] == key) | |||
return res.split("=")[1] | |||
} | |||
return '' | |||
}, | |||
// 点击新用户注册 | |||
signUp() { | |||
this.NAV_TO('/pages/signup') | |||
}, | |||
loginInit(){ | |||
if (this.code) { | |||
this.LOADING("加载中...") | |||
this.HTTP_POST("weixinapi/getweixinaccess_token?code="+this.code,null).then(success=>{ | |||
this.HIDE_LOADING() | |||
if(!success){ | |||
location.href = "http://" + window.location.host; | |||
return | |||
} | |||
if(success.logined){ | |||
// var logininfo = { | |||
// account: account, | |||
// token: success.baseinfo.token, | |||
// date: moment().format('yyyy-MM-dd hh:mm:ss') | |||
// }; | |||
this.SET_STORAGE("token",success.baseinfo.token) | |||
// this.SET_STORAGE("logininfo",logininfo) | |||
// this.SET_STORAGE("userinfo",success) | |||
location.href = "http://" + window.location.host; | |||
// location.href = "http://" + window.location.host; | |||
}else{ | |||
this.ready = true | |||
this.openid = success.openid | |||
} | |||
}) | |||
} else { | |||
this.HIDE_LOADING(); | |||
this.HTTP_GET("weixinapi/weixinconfig").then(success=>{ | |||
if(!success){ | |||
return | |||
} | |||
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + success.appid + "&redirect_uri=" + encodeURIComponent('http://' + window.location.host + '/#/pages/wxLogin') + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; | |||
}) | |||
} | |||
}, | |||
loginClick(){ | |||
// 点击登录 | |||
// 账号密码登录时,验证输入,输入有误则返回 | |||
if (!this.check()) { | |||
return | |||
} | |||
let up = true | |||
var postData = { | |||
username: this.username, | |||
password: this.MD5(this.password), | |||
openid: this.openid, | |||
up: up | |||
}; | |||
this.LOADING("正在登录,请稍后") | |||
this.HTTP_POST("weixinapi/login", postData).then(success=>{ | |||
this.HIDE_LOADING() | |||
if(!success){ | |||
return | |||
} | |||
// var logininfo = { | |||
// account: this.username, | |||
// token: success.baseinfo.token, | |||
// date: moment().format('yyyy-MM-dd hh:mm:ss') | |||
// }; | |||
this.SET_STORAGE("token",success.baseinfo.token) | |||
location.href = "http://" + window.location.host | |||
// this.SET_STORAGE('logininfo', logininfo); | |||
// this.SET_STORAGE('userinfo', success); | |||
// this.username = "" | |||
// this.password = "" | |||
// if (success.pwd === true) { | |||
// this.SET_STORAGE('pwd', true); | |||
// this.TOAST("绑定失败!您的密码不满足强度要求,请您先修改密码后再执行系统其他操作"); | |||
// } else { | |||
// this.SET_STORAGE('pwd', false); | |||
// } | |||
// location.href = "http://" + window.location.host + "/#/pages/my/newpassword"; | |||
}) | |||
}, | |||
// 切换后台地址 | |||
changeApiRoot(newIndex) { | |||
const newApiRoot = this.apiRootList[newIndex] | |||
this.currentApiRoot = newApiRoot | |||
this.SET_GLOBAL('apiRoot', newApiRoot) | |||
// 如果是开发模式,填入测试账号密码 | |||
if (this.DEV && this.devAccountList && this.devAccountList[newIndex]) { | |||
const account = this.devAccountList[newIndex] || { username: '', password: '' } | |||
this.username = account.username | |||
this.password = account.password | |||
} | |||
}, | |||
// 发起登录 | |||
// type=null 时表示使用账号密码登录 | |||
// type='weixin'/'alipay'/'dingtalk' 时表示使用小程序一键登录 | |||
async login(type) { | |||
const { username, password, check } = this | |||
// 账号密码登录时,验证输入,输入有误则返回 | |||
if (!type && !check()) { | |||
return | |||
} | |||
this.LOADING('登录中…') | |||
// 根据不同的登录方式,调用 API | |||
let loginResult = null | |||
// 不是小程序,则提交用户名、密码登录 | |||
// 是小程序,则申请授权码登录 | |||
if (!type) { | |||
let postResult = await this.POST('learun/adms/user/login', { username, password: this.MD5(password) }) | |||
if(postResult[1].data.code=='200'){ | |||
loginResult=postResult[1].data.data; | |||
}else{ | |||
this.TOAST(postResult[1].data.info); | |||
} | |||
} else { | |||
const [codeErr, { code } = {}] = await uni.login({ provider: type }) | |||
if (codeErr || !code) { | |||
this.HIDE_LOADING() | |||
this.CONFIRM('登录失败', '无法获取小程序登录授权码') | |||
return | |||
} | |||
loginResult = await this.HTTP_POST('learun/adms/user/openid_login', { code, type }, '登录时发生错误') | |||
} | |||
if (!loginResult) { | |||
return | |||
} | |||
// loginUser 中合并 role、post 两个字段 | |||
const { baseinfo, mpinfo, post, role } = loginResult | |||
const user = { ...baseinfo, post, role } | |||
const token = baseinfo.token | |||
// 返回的用户信息中,有 mpinfo 字段表示是否是小程序 | |||
if (mpinfo && Array.isArray(mpinfo) && mpinfo.includes(type)) { | |||
user.miniProgram = true | |||
} | |||
this.SET_GLOBAL('token', token) | |||
this.SET_GLOBAL('loginUser', user) | |||
this.SET_STORAGE('token', token) | |||
this.HIDE_LOADING() | |||
this.TAB_TO('/pages/home') | |||
}, | |||
// 验证用户输入 | |||
check() { | |||
const { username, password } = this | |||
if (username.length <= 0 || password.length <= 0) { | |||
this.CONFIRM('输入错误', '账号或密码不能为空,请重新输入') | |||
return false | |||
} | |||
return true | |||
} | |||
}, | |||
computed: { | |||
// 页面底部公司名、版权信息 | |||
copyRightDisplay() { | |||
const year = new Date().getFullYear() | |||
const company = this.CONFIG('company') | |||
return `Copyright © ${year} ${company}` | |||
}, | |||
// 是否显示小程序登录按键 | |||
MPLogin() { | |||
return this.CONFIG(`miniProgramAccount.${this.PLATFORM}`).includes('login') | |||
}, | |||
// 是否展示注册按钮 | |||
enableSignUp() { | |||
return this.CONFIG('enableSignUp') | |||
} | |||
} | |||
} | |||
</script> | |||
<style lang="less"> | |||
page { | |||
height: 100%; | |||
} | |||
/* #ifdef MP-ALIPAY */ | |||
.page { | |||
height: 100%; | |||
position: absolute; | |||
} | |||
/* #endif */ | |||
</style> | |||
<style lang="less" scoped> | |||
.page { | |||
height: 100%; | |||
width: 100%; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
.content { | |||
text-align: center; | |||
width: 100%; | |||
padding: 0 38rpx; | |||
} | |||
.head-banner { | |||
margin-bottom: 40rpx; | |||
.logo { | |||
// background-image: url('~@/static/logo.png'); | |||
background-size: contain; | |||
height: 120rpx; | |||
width: 120rpx; | |||
text-align: center; | |||
display: inline-block; | |||
border-radius: 5px; | |||
} | |||
.logoImg { | |||
width: 100%; | |||
} | |||
.main-title { | |||
display: block; | |||
margin: 20rpx 0; | |||
color: #555; | |||
font-size: 1.4em; | |||
margin-bottom: 30rpx; | |||
} | |||
.intro { | |||
margin-top: 20rpx; | |||
} | |||
} | |||
.otherLogin{ | |||
display: flex; | |||
justify-content: flex-end; | |||
.textBtn{ | |||
width: 100px; | |||
color: #606266; | |||
} | |||
} | |||
.more { | |||
margin-top: 30rpx; | |||
.morebtn { | |||
color: #555; | |||
} | |||
} | |||
.footer { | |||
position: absolute; | |||
left: 0; | |||
right: 0; | |||
bottom: 10px; | |||
bottom: calc(10px + env(safe-area-inset-bottom)); | |||
text-align: center; | |||
font-size: 14px; | |||
color: #555; | |||
/* #ifdef MP-ALIPAY */ | |||
bottom: 10px; | |||
/* #endif */ | |||
} | |||
} | |||
</style> |