Merge branch 'dev' of github.com:jetlinks/jetlinks-ui-vue into dev
This commit is contained in:
commit
02d91eaec4
|
@ -7,16 +7,25 @@ export {}
|
||||||
|
|
||||||
declare module '@vue/runtime-core' {
|
declare module '@vue/runtime-core' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
|
ABadge: typeof import('ant-design-vue/es')['Badge']
|
||||||
AButton: typeof import('ant-design-vue/es')['Button']
|
AButton: typeof import('ant-design-vue/es')['Button']
|
||||||
ACard: typeof import('ant-design-vue/es')['Card']
|
ACard: typeof import('ant-design-vue/es')['Card']
|
||||||
|
ACheckbox: typeof import('ant-design-vue/es')['Checkbox']
|
||||||
ACol: typeof import('ant-design-vue/es')['Col']
|
ACol: typeof import('ant-design-vue/es')['Col']
|
||||||
|
ADatePicker: typeof import('ant-design-vue/es')['DatePicker']
|
||||||
|
ADivider: typeof import('ant-design-vue/es')['Divider']
|
||||||
AForm: typeof import('ant-design-vue/es')['Form']
|
AForm: typeof import('ant-design-vue/es')['Form']
|
||||||
AFormItem: typeof import('ant-design-vue/es')['FormItem']
|
AFormItem: typeof import('ant-design-vue/es')['FormItem']
|
||||||
|
AInput: typeof import('ant-design-vue/es')['Input']
|
||||||
|
AInputGroup: typeof import('ant-design-vue/es')['InputGroup']
|
||||||
|
AInputNumber: typeof import('ant-design-vue/es')['InputNumber']
|
||||||
|
AInputPassword: typeof import('ant-design-vue/es')['InputPassword']
|
||||||
AModal: typeof import('ant-design-vue/es')['Modal']
|
AModal: typeof import('ant-design-vue/es')['Modal']
|
||||||
APopconfirm: typeof import('ant-design-vue/es')['Popconfirm']
|
APopconfirm: typeof import('ant-design-vue/es')['Popconfirm']
|
||||||
ARow: typeof import('ant-design-vue/es')['Row']
|
ARow: typeof import('ant-design-vue/es')['Row']
|
||||||
ASelect: typeof import('ant-design-vue/es')['Select']
|
ASelect: typeof import('ant-design-vue/es')['Select']
|
||||||
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
|
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
|
||||||
|
AUpload: typeof import('ant-design-vue/es')['Upload']
|
||||||
BadgeStatus: typeof import('./src/components/BadgeStatus/index.vue')['default']
|
BadgeStatus: typeof import('./src/components/BadgeStatus/index.vue')['default']
|
||||||
CardBox: typeof import('./src/components/CardBox/index.vue')['default']
|
CardBox: typeof import('./src/components/CardBox/index.vue')['default']
|
||||||
GeoComponent: typeof import('./src/components/GeoComponent/index.vue')['default']
|
GeoComponent: typeof import('./src/components/GeoComponent/index.vue')['default']
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
import { get } from '@/utils/request'
|
||||||
|
|
||||||
|
// 三方应用账户信息
|
||||||
|
export const applicationInfo = (code: string) => get(`/application/sso/bind-code/${code}`)
|
|
@ -108,6 +108,8 @@
|
||||||
import { getImage } from '@/utils/comm';
|
import { getImage } from '@/utils/comm';
|
||||||
import { Form } from 'ant-design-vue';
|
import { Form } from 'ant-design-vue';
|
||||||
|
|
||||||
|
import { applicationInfo } from '@/api/bind';
|
||||||
|
|
||||||
const useForm = Form.useForm;
|
const useForm = Form.useForm;
|
||||||
|
|
||||||
interface formData {
|
interface formData {
|
||||||
|
@ -115,6 +117,16 @@ interface formData {
|
||||||
password: string;
|
password: string;
|
||||||
captcha: string;
|
captcha: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 三方应用信息
|
||||||
|
const getAppInfo = async () => {
|
||||||
|
const code: string = '73ab60c88979a1475963a5dde31e374b';
|
||||||
|
const res = await applicationInfo(code);
|
||||||
|
console.log('getAppInfo: ', res);
|
||||||
|
};
|
||||||
|
getAppInfo();
|
||||||
|
|
||||||
|
// 登录表单
|
||||||
const formData = ref<formData>({
|
const formData = ref<formData>({
|
||||||
username: '',
|
username: '',
|
||||||
password: '',
|
password: '',
|
||||||
|
|
|
@ -109,22 +109,25 @@
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
<div style="margin-top: 20">
|
<div style="margin-top: 20px">
|
||||||
<a-divider plain style="height: 12">
|
<a-divider plain style="height: 12px">
|
||||||
<div
|
<div
|
||||||
style="color: '#807676d9', fontSize: 12"
|
style="color: #807676d9, font-size: 12px"
|
||||||
>
|
>
|
||||||
其他方式登录
|
其他方式登录
|
||||||
</div>
|
</div>
|
||||||
</a-divider>
|
</a-divider>
|
||||||
<div
|
<div
|
||||||
style="position: 'relative', bottom: '10px'"
|
style="position: relative, bottom: 10px; text-align: center"
|
||||||
v-for="(item, index) in bindings"
|
|
||||||
:key="index"
|
|
||||||
>
|
>
|
||||||
<Button type="link" @Click="handle">
|
<a-button
|
||||||
|
v-for="(item, index) in bindings"
|
||||||
|
:key="index"
|
||||||
|
type="link"
|
||||||
|
@Click="handleClickOther(item)"
|
||||||
|
>
|
||||||
<img
|
<img
|
||||||
style="width: 32, height: 33"
|
style="width: 32px, height: 33px"
|
||||||
:alt="item.name"
|
:alt="item.name"
|
||||||
:src="
|
:src="
|
||||||
iconMap.get(
|
iconMap.get(
|
||||||
|
@ -132,7 +135,7 @@
|
||||||
) || defaultImg
|
) || defaultImg
|
||||||
"
|
"
|
||||||
/>
|
/>
|
||||||
</Button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -174,7 +177,7 @@ import {
|
||||||
import Cookies from 'js-cookie';
|
import Cookies from 'js-cookie';
|
||||||
import { useUserInfo } from '@/store/userInfo';
|
import { useUserInfo } from '@/store/userInfo';
|
||||||
import { LocalStore } from '@/utils/comm';
|
import { LocalStore } from '@/utils/comm';
|
||||||
import { TOKEN_KEY, Version_Code } from '@/utils/variable';
|
import { BASE_API_PATH, TOKEN_KEY, Version_Code } from '@/utils/variable';
|
||||||
|
|
||||||
const store = useUserInfo();
|
const store = useUserInfo();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
@ -203,6 +206,11 @@ const codeConfig = ref(false);
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
const bindings = ref<any[]>();
|
const bindings = ref<any[]>();
|
||||||
|
|
||||||
|
const defaultImg = getImage('/apply/provider1.png');
|
||||||
|
const iconMap = new Map();
|
||||||
|
iconMap.set('dingtalk-ent-app', getImage('/bind/dingtalk.png'));
|
||||||
|
iconMap.set('wechat-webapp', getImage('/bind/wechat-webapp.png'));
|
||||||
|
|
||||||
const onFinish = async () => {
|
const onFinish = async () => {
|
||||||
form.remember
|
form.remember
|
||||||
? Cookies.set('user', encodeURIComponent(JSON.stringify(form)), {
|
? Cookies.set('user', encodeURIComponent(JSON.stringify(form)), {
|
||||||
|
@ -213,18 +221,20 @@ const onFinish = async () => {
|
||||||
try {
|
try {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const res: any = await authLogin(form);
|
const res: any = await authLogin(form);
|
||||||
if (res.status === 200) {
|
if (res.success) {
|
||||||
store.$patch({
|
store.$patch({
|
||||||
...res.result,
|
...res.result,
|
||||||
username: form.username,
|
username: form.username,
|
||||||
});
|
});
|
||||||
LocalStore.set(TOKEN_KEY, res?.result.token);
|
LocalStore.set(TOKEN_KEY, res?.result.token);
|
||||||
const resp: any = await getInitSet();
|
const resp: any = await getInitSet();
|
||||||
if (resp.status === 200) {
|
if (resp.success) {
|
||||||
router.push('/demo');
|
router.push('/demo');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
form.verifyCode = '';
|
||||||
|
getCode();
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -253,11 +263,11 @@ const getCookie = () => {
|
||||||
|
|
||||||
const getOpen = () => {
|
const getOpen = () => {
|
||||||
systemVersion().then((res: any) => {
|
systemVersion().then((res: any) => {
|
||||||
if (res.status === 200 && res.result) {
|
if (res.success && res.result) {
|
||||||
LocalStore.set(Version_Code, res.result.edition);
|
LocalStore.set(Version_Code, res.result.edition);
|
||||||
if (res.result.edition !== 'community') {
|
if (res.result.edition !== 'community') {
|
||||||
bindInfo().then((res: any) => {
|
bindInfo().then((res: any) => {
|
||||||
if (res.status === 200) {
|
if (res.success) {
|
||||||
bindings.value = res.result;
|
bindings.value = res.result;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -266,6 +276,16 @@ const getOpen = () => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleClickOther = (item: any) => {
|
||||||
|
LocalStore.set('onLogin', 'no');
|
||||||
|
window.open(`${BASE_API_PATH}/application/sso/${item.id}/login`);
|
||||||
|
window.onstorage = (e) => {
|
||||||
|
if (e.newValue) {
|
||||||
|
window.location.href = '/';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
const screenRotation = (width: number, height: number) => {
|
const screenRotation = (width: number, height: number) => {
|
||||||
LoginWarpStyle.backgroundImage = `url(${bgImage})`;
|
LoginWarpStyle.backgroundImage = `url(${bgImage})`;
|
||||||
};
|
};
|
||||||
|
@ -335,11 +355,12 @@ screenRotation(screenWidth.value, screenHeight.value);
|
||||||
|
|
||||||
.top {
|
.top {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: center;
|
// text-align: center;
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
height: 44px;
|
height: 44px;
|
||||||
line-height: 44px;
|
line-height: 44px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
@ -371,6 +392,7 @@ screenRotation(screenWidth.value, screenHeight.value);
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
font-family: Avenir, 'Helvetica Neue', Arial, Helvetica,
|
font-family: Avenir, 'Helvetica Neue', Arial, Helvetica,
|
||||||
sans-serif;
|
sans-serif;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
|
@ -426,6 +448,27 @@ screenRotation(screenWidth.value, screenHeight.value);
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.verifyCode {
|
||||||
|
.login-code-input {
|
||||||
|
width: 70%;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.login-code {
|
||||||
|
width: 30%;
|
||||||
|
height: 32px;
|
||||||
|
float: left;
|
||||||
|
background-color: #e4e6e7;
|
||||||
|
img {
|
||||||
|
cursor: pointer;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.login-code-img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue