Forráskód Böngészése

添加登录页面接口信息

FinalYu 2 éve
szülő
commit
843758e4f8

+ 11 - 0
chuanyi_client/package-lock.json

@@ -11,6 +11,7 @@
       "dependencies": {
         "axios": "^0.27.2",
         "element-ui": "^2.15.10",
+        "file-saver": "^2.0.5",
         "font-awesome": "^4.7.0",
         "js-cookie": "^3.0.1",
         "jsencrypt": "^3.2.1",
@@ -5943,6 +5944,11 @@
         "node": ">=4"
       }
     },
+    "node_modules/file-saver": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
+      "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+    },
     "node_modules/file-uri-to-path": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
@@ -20680,6 +20686,11 @@
         "escape-string-regexp": "^1.0.5"
       }
     },
+    "file-saver": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
+      "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+    },
     "file-uri-to-path": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",

+ 1 - 0
chuanyi_client/package.json

@@ -14,6 +14,7 @@
   "dependencies": {
     "axios": "^0.27.2",
     "element-ui": "^2.15.10",
+    "file-saver": "^2.0.5",
     "font-awesome": "^4.7.0",
     "js-cookie": "^3.0.1",
     "jsencrypt": "^3.2.1",

+ 0 - 8
chuanyi_client/src/api/index.js

@@ -1,8 +0,0 @@
-import request from "@/utils/request";
-
-export default{
-    //前端登录请求
-    frontUserLogin(data){
-        return request.post('user/frontUserLogin',data);
-    }
-}

+ 52 - 0
chuanyi_client/src/api/user.js

@@ -0,0 +1,52 @@
+import request from "@/utils/request";
+
+/**
+ * 登录功能
+ * @param userName
+ * @param password
+ * @param verifyCode
+ * @returns {AxiosPromise}
+ */
+export function login(userName, password, verifyCode) {
+    const data = {
+        userName,
+        password,
+        verifyCode
+    }
+    return request({
+        url: '/user/frontUserLogin',
+        headers: {
+            isToken: false
+        },
+        method: 'post',
+        data: data
+    })
+}
+
+/**
+ * 获取公钥
+ * @returns {AxiosPromise}
+ */
+export function getPublicKey() {
+    return request({
+        url: '/user/getPublicKey',
+        headers: {
+            isToken: false
+        },
+        method: 'get'
+    })
+}
+
+/**
+ * 获取验证码
+ * @returns {AxiosPromise}
+ */
+export function getCode() {
+    return request({
+        url: '/user/getCodeImage',
+        headers: {
+            isToken: false
+        },
+        method: 'get'
+    })
+}

+ 1 - 1
chuanyi_client/src/router/index.js

@@ -34,7 +34,7 @@ const routes = [
         path: '/index',
         name: 'index',
         component: () => import('@/views/index'),
-        redirect: 'index',
+        // redirect: 'index',
         children: [
             {
                 path: 'index',

+ 8 - 0
chuanyi_client/src/utils/errorCode.js

@@ -2,5 +2,13 @@ export default {
     '401': '认证失败,无法访问系统资源',
     '403': '当前操作没有权限',
     '404': '访问资源不存在',
+
+    '900': '初始化未完成,请稍候再试',
+    '901': '数据正在处理,请勿重复提交',
+    '902': '下载文件出现错误,请联系管理员',
+    '903': '正在下载文件,请稍候',
+    '904': '系统接口连接异常',
+    '905': '系统接口请求超时',
+
     'default': '系统未知错误,请反馈给管理员'
 }

+ 28 - 24
chuanyi_client/src/utils/jsencrypt.js

@@ -1,30 +1,34 @@
 import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'
 
 // 密钥对生成 http://web.chacuo.net/netrsakeypair
+// 生成密钥位数:1024位(bit)
+// 密钥格式:PKCS#8
+// 输出格式:PEM/Base64
 
-const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
-  'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
-
-const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
-  '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
-  'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
-  'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
-  'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
-  'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
-  'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
-  'UP8iWi1Qw0Y='
-
-// 加密
-export function encrypt(txt) {
-  const encryptor = new JSEncrypt()
-  encryptor.setPublicKey(publicKey) // 设置公钥
-  return encryptor.encrypt(txt) // 对数据进行加密
-}
-
-// 解密
-export function decrypt(txt) {
-  const encryptor = new JSEncrypt()
-  encryptor.setPrivateKey(privateKey) // 设置私钥
-  return encryptor.decrypt(txt) // 对数据进行解密
+/**
+ * RSA根据公钥加密
+ * @param txt
+ * @param publicKey
+ * @returns {string | false | Promise<ArrayBuffer>}
+ */
+export function encrypt(txt, publicKey) {
+    const encryptor = new JSEncrypt()
+    // 设置公钥
+    encryptor.setPublicKey(publicKey)
+    // 对数据进行加密
+    return encryptor.encrypt(txt)
 }
 
+/**
+ * RSA内容解密
+ * @param txt
+ * @param privateKey
+ * @returns {string | false | Promise<ArrayBuffer>}
+ */
+export function decrypt(txt, privateKey) {
+    const encryptor = new JSEncrypt()
+    // 设置私钥
+    encryptor.setPrivateKey(privateKey)
+    // 对数据进行解密
+    return encryptor.decrypt(txt)
+}

+ 9 - 9
chuanyi_client/src/utils/request.js

@@ -5,7 +5,7 @@ import {getToken} from '@/utils/auth'
 import errorCode from '@/utils/errorCode'
 import {tansParams, blobValidate} from "@/utils/cqcy";
 import cache from '@/plugins/cache'
-// import {saveAs} from 'file-saver'
+import {saveAs} from 'file-saver'
 
 let downloadLoadingInstance;
 // 是否显示重新登录
@@ -15,9 +15,9 @@ axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
 // 创建axios实例
 const service = axios.create({
     // axios中请求配置有baseURL选项,表示请求URL公共部分
-    baseURL: "http://localhost:8081/",
+    baseURL: "http://192.168.0.40:8081",
     // 超时
-    timeout: 6000
+    timeout: 30000
 })
 
 // request拦截器
@@ -51,7 +51,7 @@ service.interceptors.request.use(config => {
             const s_time = sessionObj.time;                // 请求时间
             const interval = 1000;                         // 间隔时间(ms),小于此时间视为重复提交
             if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
-                const message = '数据正在处理,请勿重复提交';
+                const message = errorCode[901];
                 console.warn(`[${s_url}]: ` + message)
                 return Promise.reject(new Error(message))
             } else {
@@ -104,7 +104,7 @@ service.interceptors.response.use(res => {
                 title: msg
             })
             // return Promise.reject('error')
-            return Promise.reject(res.data.msg)
+            return Promise.reject(new Error(res.data.msg))
         } else {
             return res.data
         }
@@ -113,9 +113,9 @@ service.interceptors.response.use(res => {
         console.log('err' + error)
         let {message} = error;
         if (message == "Network Error") {
-            message = "后端接口连接异常";
+            message = errorCode[904];
         } else if (message.includes("timeout")) {
-            message = "系统接口请求超时";
+            message = errorCode[905];
         } else if (message.includes("Request failed with status code")) {
             message = "系统接口" + message.substr(message.length - 3) + "异常";
         }
@@ -131,7 +131,7 @@ service.interceptors.response.use(res => {
 // 通用下载方法
 export function download(url, params, filename, config) {
     downloadLoadingInstance = Loading.service({
-        text: "正在下载数据,请稍候",
+        text: errorCode[903],
         spinner: "el-icon-loading",
         background: "rgba(0, 0, 0, 0.7)",
     })
@@ -156,7 +156,7 @@ export function download(url, params, filename, config) {
         downloadLoadingInstance.close();
     }).catch((r) => {
         console.error(r)
-        Message.error('下载文件出现错误,请联系管理员!')
+        Message.error(errorCode[902])
         downloadLoadingInstance.close();
     })
 }

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 39 - 34
chuanyi_client/src/views/login.vue


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott