123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <template>
- <div class="login">
- <div class="login-header">
- <img class="logo" src="../assets/logo.png" />
- <h2>{{ $t('login.title') }}</h2>
- </div>
- <div class="login-form">
- <van-field
- v-model="loginForm.tenantId"
- name=""
- label=""
- :placeholder="$t('login.form.tenantId')"
- :rules="[{ required: true, message: $t('login.form.tenantId') }]"
- />
- <van-field
- v-model="loginForm.username"
- name=""
- label=""
- :placeholder="$t('login.form.username')"
- :rules="[{ required: true, message: $t('login.form.username') }]"
- />
- <van-field
- v-model="loginForm.password"
- type="password"
- name=""
- label=""
- :placeholder="$t('login.form.password')"
- :rules="[{ required: true, message: $t('login.form.password') }]"
- />
- <van-form @submit="onSubmit">
- <van-cell-group inset> </van-cell-group>
- <div style="margin: 16px">
- <van-button round block type="primary" native-type="submit">
- {{$t('common.submit')}}
- </van-button>
- </div>
- <div
- class="check-warp"
- style="text-align: left; justify-content: left"
- >
- <div class="check-icon-warp">
- <van-checkbox
- icon-size="16px"
- v-model="rememberMe"
- ></van-checkbox>
- </div>
- {{$t('login.rememberPassword')}}
- </div>
- </van-form>
- </div>
- <div class="login-btn">
- <div class="check-warp">
- <div class="check-icon-warp">
- <van-checkbox
- icon-size="16px"
- v-model="clause"
- ></van-checkbox>
- </div>
- {{ $t('login.agreement.text') }}
- <span>{{ $t('login.agreement.clause') }}</span>
- {{ $t('login.agreement.and') }}
- <span>{{ $t('login.agreement.agreement') }}</span>
- </div>
- </div>
- </div>
- </template>
- <style lang="scss" scoped>
- .login {
- height: 100vh;
- width: 100%;
- background-size: 100% 100%;
- background: #fff;
- .check-warp {
- display: flex;
- align-items: center;
- justify-content: center;
- .check-icon-warp {
- margin-right: 5px;
- }
- span {
- color: #3370ff;
- margin: 0 4px;
- }
- }
- .login-form {
- padding: 5px 20px;
- }
- .login-btn {
- font-size: 12px;
- position: fixed;
- bottom: 50px;
- left: 0;
- right: 0;
- }
- .van-cell {
- border: 5px;
- background: #f1f1f1;
- margin-bottom: 12px;
- height: 50px;
- box-sizing: border-box;
- line-height: 44px;
- padding: 3px 12px;
- font-size: 16px;
- }
- .login-header {
- background: url(../assets/images/login-header.png) no-repeat;
- height: 200px;
- background-size: cover;
- padding: 44px 20px 17px;
- box-sizing: border-box;
- .logo {
- height: 45px;
- }
- h2 {
- margin-top: 40px;
- }
- }
- }
- </style>
- <script setup>
- import 'vant/lib/index.css'
- import { ref, getCurrentInstance, onMounted } from 'vue'
- import { setUserInfo, setToken, getUserInfo,getToken } from '@/utils/auth'
- import { showSuccessToast, showFailToast,showConfirmDialog } from 'vant'
- import * as dd from 'dingtalk-jsapi'
- import axios from 'axios'
- import { useRoute } from 'vue-router'
- const route = useRoute()
- const proxy = getCurrentInstance().proxy
- const loginForm = ref({
- username: '',
- password: '',
- rememberMe: false,
- tenantId: '',
- code: '',
- uuid: '',
- })
- const rememberMe = ref(false)
- const clause = ref(false)
- const radioChange = () => {
- console.log(loginForm.rememberMe)
-
- }
- const onSubmit = () => {
- proxy
- .post('login', loginForm.value, 'post', {
- tenantId: loginForm.value.tenantId,
- })
- .then((res) => {
- console.log(res)
- if (res.code == 200) {
- setToken(res.token)
- getInfo()
- }
- })
- }
- const getInfo = () => {
- proxy.post('getInfo', {}, 'get').then((res) => {
- console.log(res)
- if (res.code == 200) {
- setUserInfo(res.user)
- window.localStorage.setItem('tenantId', loginForm.value.tenantId)
- if (rememberMe.value) {
- window.localStorage.setItem(
- 'username',
- loginForm.value.username
- )
- window.localStorage.setItem(
- 'password',
- loginForm.value.password
- )
- window.localStorage.setItem('rememberMe', rememberMe.value)
- } else {
- window.localStorage.setItem('username', '')
- window.localStorage.setItem('password', '')
- window.localStorage.setItem('tenantId', '')
- window.localStorage.setItem('rememberMe', false)
- }
- showSuccessToast('登录成功')
- proxy.$router.push('/main')
- }
- })
- }
- console.log(process.env)
- onMounted(() => {
- let username = window.localStorage.getItem('username')
- let password = window.localStorage.getItem('password')
- let tenantId = window.localStorage.getItem('tenantId')
- let rememberMeCopy = window.localStorage.getItem('rememberMe')
- if (rememberMeCopy == 'true') {
- loginForm.value.username = username
- loginForm.value.password = password
- rememberMe.value = true
- loginForm.value.tenantId = tenantId
- }
- })
- const loginData = ref({})
- let code = ref('')
- const ddLoginInit = () => {
- if(getToken()){
-
- }
- dd.ready(function () {
- dd.ui.webViewBounce.disable();
- dd.runtime.permission.requestAuthCode({
- corpId: route.query.id,
- onSuccess: function (info) {
- code.value = info.code
-
- proxy
- .post('/open/dingApi/getUserToken', { code: code.value,corpId:route.query.id })
- .then((res) => {
- window.localStorage.setItem('corpId',route.query.id)
-
- setToken(res.data)
- getInfo()
- })
- },
- onFail: function (err) {
-
- },
- })
- })
- }
- ddLoginInit()
- </script>
|