소스 검색

no message

libushang 6 달 전
부모
커밋
0dc5e0de86
8개의 변경된 파일89개의 추가작업 그리고 5개의 파일을 삭제
  1. 11 0
      src/api/login.ts
  2. 1 1
      src/permission.ts
  3. 10 0
      src/router/index.ts
  4. 20 1
      src/store/modules/user.ts
  5. 0 1
      src/types/components.d.ts
  6. 14 2
      src/views/login.vue
  7. 3 0
      src/views/noyzyuser.vue
  8. 30 0
      src/views/yzylogin.vue

+ 11 - 0
src/api/login.ts

@@ -105,3 +105,14 @@ export function getTenantList(): AxiosPromise<TenantInfo> {
     method: 'get'
   });
 }
+
+// 粤政易登录
+export function yzyLogin(code) {
+  return request({
+    url: '/api/auth/yzylogin',
+    method: 'post',
+    data: {
+      code
+    }
+  });
+}

+ 1 - 1
src/permission.ts

@@ -10,7 +10,7 @@ import useSettingsStore from '@/store/modules/settings';
 import usePermissionStore from '@/store/modules/permission';
 
 NProgress.configure({ showSpinner: false });
-const whiteList = ['/login', '/register', '/social-callback'];
+const whiteList = ['/login', '/yzylogin', '/register', '/social-callback'];
 
 router.beforeEach(async (to, from, next) => {
   NProgress.start();

+ 10 - 0
src/router/index.ts

@@ -42,6 +42,16 @@ export const constantRoutes: RouteRecordRaw[] = [
     component: () => import('@/views/login.vue'),
     hidden: true
   },
+  {
+    path: '/yzylogin',
+    component: () => import('@/views/yzylogin.vue'),
+    hidden: true
+  },
+  {
+    path: '/noyzyuser',
+    component: () => import('@/views/noyzyuser.vue'),
+    hidden: true
+  },
   {
     path: '/:pathMatch(.*)*',
     component: () => import('@/views/error/404.vue'),

+ 20 - 1
src/store/modules/user.ts

@@ -1,6 +1,6 @@
 import { to } from 'await-to-js';
 import { getToken, removeToken, setToken } from '@/utils/auth';
-import { login as loginApi, logout as logoutApi, getInfo as getUserInfo } from '@/api/login';
+import { login as loginApi, logout as logoutApi, getInfo as getUserInfo, yzyLogin as yzyLoginApi } from '@/api/login';
 import { LoginData } from '@/api/types';
 import defAva from '@/assets/images/profile.jpg';
 import store from '@/store';
@@ -31,6 +31,24 @@ export const useUserStore = defineStore('user', () => {
     return Promise.reject(err);
   };
 
+  
+  /**
+   * 粤政易登录
+   * @param userInfo
+   * @returns
+   */
+  const yzyLogin = async (code: string): Promise<void> => {
+    const [err, res] = await to(yzyLoginApi(code));
+    if (res) {
+      const data = res.data;
+      setToken(data.access_token);
+      token.value = data.access_token;
+      return Promise.resolve();
+    }
+    return Promise.reject(err);
+  };
+
+
   // 获取用户信息
   const getInfo = async (): Promise<void> => {
     const [err, res] = await to(getUserInfo());
@@ -78,6 +96,7 @@ export const useUserStore = defineStore('user', () => {
     roles,
     permissions,
     login,
+    yzyLogin,
     getInfo,
     logout,
     setAvatar

+ 0 - 1
src/types/components.d.ts

@@ -107,7 +107,6 @@ declare module 'vue' {
     VideoContainer: typeof import('./../components/HKVideo/video-container.vue')['default']
     VideoContainer2: typeof import('./../components/HKVideo/video-container2.vue')['default']
     YMap: typeof import('./../components/Map/YMap.vue')['default']
-    YMapold: typeof import('./../components/Map/YMapold.vue')['default']
     YztMap: typeof import('./../components/Map/YztMap/index.vue')['default']
   }
   export interface ComponentCustomProperties {

+ 14 - 2
src/views/login.vue

@@ -5,7 +5,7 @@
       <div class="title2">茂名智慧应急一张图</div>
       <div class="login-box">
         <div class="login-tabs">
-          <div v-for="(item, index) in tabs" :key="index" :class="tabActive === index ? 'login-tab tab-active' : 'login-tab'">{{ item }}</div>
+          <div v-for="(item, index) in tabs" :key="index" :class="tabActive === index ? 'login-tab tab-active' : 'login-tab'" @click="handleTab(index)">{{ item }}</div>
         </div>
         <el-form-item prop="username">
           <el-input v-model="loginForm.username" type="text" size="large" auto-complete="off" placeholder="账号">
@@ -75,7 +75,7 @@ const userStore = useUserStore();
 const router = useRouter();
 const tabActive = ref(0);
 // '粤政易扫码登录',
-const tabs = reactive(['账号密码登录']);
+const tabs = reactive(['账号密码登录', '粤政易登录']);
 const loginForm = ref<LoginData>({
   tenantId: '000000',
   username: 'admin',
@@ -205,6 +205,17 @@ const doSocialLogin = (type: string) => {
   });
 };
 
+
+const handleTab = (tab) => {
+  if(tab == 1) {
+    // const redirect_uri = encodeURIComponent(import.meta.env.YZY_REDIRECT_URI);
+    // const tyrz_url = import.meta.env.YZY_TYRZ_URL + redirect_uri;
+    const redirect_uri = encodeURIComponent("http://19.155.220.206:8086/tyrz/login?src=yjdp&redirect="+redirect.value);
+    const tyrz_url = "https://xtbg.digitalgd.com.cn/zwrz/rz/sso/oauth/authorize?response_type=code&scope=all&client_id=zwrz_mmzhyj&redirect_uri="+redirect_uri;
+    window.location.href = tyrz_url;
+  }
+}
+
 onMounted(() => {
   getCode();
   initTenantList();
@@ -303,6 +314,7 @@ onMounted(() => {
   border-bottom: 1px solid #eeeeee;
   margin-bottom: 15px;
   .login-tab {
+    padding: 0 10px;
   }
   .tab-active {
     color: #5695eb;

+ 3 - 0
src/views/noyzyuser.vue

@@ -0,0 +1,3 @@
+<template>
+    当前粤政易账号没有匹配到系统用户
+    </template>

+ 30 - 0
src/views/yzylogin.vue

@@ -0,0 +1,30 @@
+<template>
+粤政易登录中...
+</template>
+
+<script setup lang="ts">
+import { useUserStore } from '@/store/modules/user';
+import { to } from 'await-to-js';
+
+const route = useRoute();
+const router = useRouter();
+const userStore = useUserStore();
+const code = ref('');
+const loading = ref(true);
+const redirect = ref(undefined);
+
+onMounted(async() => {
+    code.value = route.query && route.query.code as string;
+    redirect.value = route.query && route.query.redirect;
+
+    loading.value = true;
+    const [err] = await to(userStore.yzyLogin(code.value));
+      if (!err) {
+        const redirectUrl = redirect.value || '/';
+        await router.push(redirectUrl);
+        loading.value = false;
+      } else {
+        loading.value = false;
+      }
+})
+</script>