wenhongquan 3 years ago
parent
commit
dc07027e68
6 changed files with 170 additions and 80 deletions
  1. 27 19
      index.html
  2. 1 0
      package.json
  3. 73 59
      src/api/login.js
  4. 13 1
      src/store/modules/user.js
  5. 54 0
      src/views/login.vue
  6. 2 1
      vite.config.js

+ 27 - 19
index.html

@@ -8,7 +8,15 @@
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
     <link rel="icon" href="/favicon.ico">
 
+
     <title>南宁北排管理系统</title>
+<!--  <script src="https://g.alicdn.com/code/npm/@ali/dingtalk-h5-remote-debug-sdk/0.1.3/app.bundle.js"></script>-->
+<!--  <script>-->
+<!--    h5RemoteDebugSdk.init({-->
+<!--      uuid: "3bf251f3-07bf-4f09-b2c1-cdd84eed819a",-->
+<!--      observerElement: document.documentElement,-->
+<!--    });-->
+<!--  </script>-->
     <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
     <style>
         html,
@@ -18,14 +26,14 @@
             margin: 0px;
             padding: 0px;
         }
-        
+
         .chromeframe {
             margin: 0.2em 0;
             background: #ccc;
             color: #000;
             padding: 0.2em 0;
         }
-        
+
         #loader-wrapper {
             position: fixed;
             top: 0;
@@ -34,7 +42,7 @@
             height: 100%;
             z-index: 999999;
         }
-        
+
         #loader {
             display: block;
             position: relative;
@@ -53,7 +61,7 @@
             animation: spin 2s linear infinite;
             z-index: 1001;
         }
-        
+
         #loader:before {
             content: "";
             position: absolute;
@@ -70,7 +78,7 @@
             -ms-animation: spin 3s linear infinite;
             animation: spin 3s linear infinite;
         }
-        
+
         #loader:after {
             content: "";
             position: absolute;
@@ -87,7 +95,7 @@
             -webkit-animation: spin 1.5s linear infinite;
             animation: spin 1.5s linear infinite;
         }
-        
+
         @-webkit-keyframes spin {
             0% {
                 -webkit-transform: rotate(0deg);
@@ -100,7 +108,7 @@
                 transform: rotate(360deg);
             }
         }
-        
+
         @keyframes spin {
             0% {
                 -webkit-transform: rotate(0deg);
@@ -113,7 +121,7 @@
                 transform: rotate(360deg);
             }
         }
-        
+
         #loader-wrapper .loader-section {
             position: fixed;
             top: 0;
@@ -125,15 +133,15 @@
             -ms-transform: translateX(0);
             transform: translateX(0);
         }
-        
+
         #loader-wrapper .loader-section.section-left {
             left: 0;
         }
-        
+
         #loader-wrapper .loader-section.section-right {
             right: 0;
         }
-        
+
         .loaded #loader-wrapper .loader-section.section-left {
             -webkit-transform: translateX(-100%);
             -ms-transform: translateX(-100%);
@@ -141,7 +149,7 @@
             -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
             transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
         }
-        
+
         .loaded #loader-wrapper .loader-section.section-right {
             -webkit-transform: translateX(100%);
             -ms-transform: translateX(100%);
@@ -149,13 +157,13 @@
             -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
             transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
         }
-        
+
         .loaded #loader {
             opacity: 0;
             -webkit-transition: all 0.3s ease-out;
             transition: all 0.3s ease-out;
         }
-        
+
         .loaded #loader-wrapper {
             visibility: hidden;
             -webkit-transform: translateY(-100%);
@@ -164,15 +172,15 @@
             -webkit-transition: all 0.3s 1s ease-out;
             transition: all 0.3s 1s ease-out;
         }
-        
+
         .no-js #loader-wrapper {
             display: none;
         }
-        
+
         .no-js h1 {
             color: #222222;
         }
-        
+
         #loader-wrapper .load_title {
             font-family: 'Open Sans';
             color: #FFF;
@@ -185,7 +193,7 @@
             opacity: 1;
             line-height: 30px;
         }
-        
+
         #loader-wrapper .load_title span {
             font-weight: normal;
             font-style: italic;
@@ -208,4 +216,4 @@
     <script type="module" src="/src/main.js"></script>
 </body>
 
-</html>
+</html>

+ 1 - 0
package.json

@@ -19,6 +19,7 @@
         "@element-plus/icons-vue": "1.1.4",
         "@vue/babel-plugin-jsx": "^1.1.1",
         "axios": "0.26.1",
+        "dingtalk-jsapi": "^2.15.2",
         "echarts": "5.3.2",
         "element-plus": "2.1.8",
         "file-saver": "2.0.5",

+ 73 - 59
src/api/login.js

@@ -1,59 +1,73 @@
-import request from '@/utils/request'
-
-// 登录方法
-export function login(username, password, code, uuid) {
-  const data = {
-    username,
-    password,
-    code,
-    uuid
-  }
-  return request({
-    url: '/login',
-    headers: {
-      isToken: false
-    },
-    method: 'post',
-    data: data
-  })
-}
-
-// 注册方法
-export function register(data) {
-  return request({
-    url: '/register',
-    headers: {
-      isToken: false
-    },
-    method: 'post',
-    data: data
-  })
-}
-
-// 获取用户详细信息
-export function getInfo() {
-  return request({
-    url: '/getInfo',
-    method: 'get'
-  })
-}
-
-// 退出方法
-export function logout() {
-  return request({
-    url: '/logout',
-    method: 'post'
-  })
-}
-
-// 获取验证码
-export function getCodeImg() {
-  return request({
-    url: '/captchaImage',
-    headers: {
-      isToken: false
-    },
-    method: 'get',
-    timeout: 20000
-  })
-}
+import request from '@/utils/request'
+
+// 登录方法
+export function login(username, password, code, uuid) {
+  const data = {
+    username,
+    password,
+    code,
+    uuid
+  }
+  return request({
+    url: '/login',
+    headers: {
+      isToken: false
+    },
+    method: 'post',
+    data: data
+  })
+}
+
+export function ddlogin(code) {
+  const data = {
+    code:code
+  }
+  return request({
+    url: '/login',
+    headers: {
+      isToken: false
+    },
+    method: 'post',
+    params: data
+  })
+}
+
+// 注册方法
+export function register(data) {
+  return request({
+    url: '/register',
+    headers: {
+      isToken: false
+    },
+    method: 'post',
+    data: data
+  })
+}
+
+// 获取用户详细信息
+export function getInfo() {
+  return request({
+    url: '/getInfo',
+    method: 'get'
+  })
+}
+
+// 退出方法
+export function logout() {
+  return request({
+    url: '/logout',
+    method: 'post'
+  })
+}
+
+// 获取验证码
+export function getCodeImg() {
+  return request({
+    url: '/captchaImage',
+    headers: {
+      isToken: false
+    },
+    method: 'get',
+    timeout: 20000
+  })
+}

+ 13 - 1
src/store/modules/user.js

@@ -1,6 +1,7 @@
 import { login, logout, getInfo } from '@/api/login'
 import { getToken, setToken, removeToken } from '@/utils/auth'
 import defAva from '@/assets/images/profile.jpg'
+import {ddlogin} from "../../api/login";
 
 const user = {
     state: {
@@ -50,6 +51,17 @@ const user = {
                 })
             })
         },
+       DDLogin({ commit }, code) {
+         return new Promise((resolve, reject) => {
+           ddlogin(code).then(res => {
+             setToken(res.token)
+             commit('SET_TOKEN', res.token)
+             resolve()
+           }).catch(error => {
+             reject(error)
+           })
+         })
+       },
 
         // 获取用户信息
         GetInfo({ commit, state }) {
@@ -101,4 +113,4 @@ const user = {
     }
 }
 
-export default user
+export default user

+ 54 - 0
src/views/login.vue

@@ -68,11 +68,65 @@
 import { getCodeImg } from "@/api/login";
 import Cookies from "js-cookie";
 import { encrypt, decrypt } from "@/utils/jsencrypt";
+import  dd from 'dingtalk-jsapi';
+import {ddlogin} from "../api/login";
 
 const store = useStore();
 const router = useRouter();
 const { proxy } = getCurrentInstance();
 
+
+
+
+try{
+  dd.runtime.permission.requestAuthCode({
+  corpId: "corpid",
+  onSuccess: function(result) {
+    /*{
+        code: 'hYLK98jkf0m' //string authCode
+    }*/
+    store.dispatch("DDLogin", result.code).then(() => {
+      router.push({ path: redirect.value || "/" });
+    }).catch(() => {
+      loading.value = false;
+    });
+
+    // console.log(result)
+  },
+  onFail : function(err) {}
+
+})
+
+
+
+
+}catch (e){
+
+}
+
+
+// dd.config({
+//   agentId: '', // 必填,微应用ID
+//   corpId: '',//必填,企业ID
+//   timeStamp: '', // 必填,生成签名的时间戳
+//   nonceStr: '', // 必填,自定义固定字符串。
+//   signature: '', // 必填,签名
+//   type:0,
+//   jsApiList : [
+//     'runtime.info',
+//     'biz.contact.choose',
+//     'device.notification.confirm',
+//     'device.notification.alert',
+//     'device.notification.prompt',
+//     'biz.ding.post',
+//     'biz.util.openLink',
+//   ] // 必填,需要使用的jsapi列表,注意:不要带dd。
+// });
+
+// dd.error(function (err) {
+//   alert('dd error: ' + JSON.stringify(err));
+// })//该方法必须带上,用来捕获鉴权出现的异常信息,否则不方便排查出现的问题
+
 const loginForm = ref({
   username: "admin",
   password: "admin123",

+ 2 - 1
vite.config.js

@@ -34,10 +34,11 @@ export default defineConfig(({ mode, command }) => {
             port: 8085,
             host: true,
             open: true,
+            cors:true,
             proxy: {
                 // 'http://nnbpbg.xt.wenhq.top:8083'
                 "/dev-api": {
-                    target: "http://localhost:8080/api",
+                    target: "http://192.168.100.3:8080/api",
                     // target:"http://nnbpbg.xt.wenhq.top:8083/api",
                     changeOrigin: true,
                     rewrite: (p) => p.replace(/^\/dev-api/, ""),