From d7e2c8ac22f442bbcfd234aef38632b10ccbb323 Mon Sep 17 00:00:00 2001 From: fuxiaochun Date: Fri, 11 Aug 2023 20:13:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 5 + .env.production | 5 + src/assets/images/avatar@2x.png | Bin 0 -> 9123 bytes src/assets/images/icon_email.png | Bin 0 -> 1283 bytes src/assets/images/icon_email_h.png | Bin 0 -> 1310 bytes src/assets/images/icon_msg.png | Bin 0 -> 1294 bytes src/assets/images/icon_msg_h.png | Bin 0 -> 1320 bytes src/assets/images/icon_pwd.png | Bin 0 -> 1306 bytes src/assets/images/icon_pwd_h.png | Bin 0 -> 1342 bytes src/components/auth/Login.vue | 371 +++++++++++++++++++++++++++++ src/components/auth/Register.vue | 211 ++++++++++++++++ src/components/auth/index.vue | 82 +++++++ src/io/http.js | 5 + src/io/httpConfig.js | 39 ++- src/io/request.js | 67 ++++++ src/layouts/Header.vue | 42 +++- src/main.js | 2 +- src/views/home/index.vue | 5 +- vite.config.js | 4 +- 19 files changed, 810 insertions(+), 28 deletions(-) create mode 100644 .env.development create mode 100644 .env.production create mode 100644 src/assets/images/avatar@2x.png create mode 100644 src/assets/images/icon_email.png create mode 100644 src/assets/images/icon_email_h.png create mode 100644 src/assets/images/icon_msg.png create mode 100644 src/assets/images/icon_msg_h.png create mode 100644 src/assets/images/icon_pwd.png create mode 100644 src/assets/images/icon_pwd_h.png create mode 100644 src/components/auth/Login.vue create mode 100644 src/components/auth/Register.vue create mode 100644 src/components/auth/index.vue create mode 100644 src/io/request.js diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..145e790 --- /dev/null +++ b/.env.development @@ -0,0 +1,5 @@ +VITE_PUBLIC_PATH = / + +VITE_API_BASE_URL = 'http://test-admin.haituaigc.com' + +VITE_API_CHAT_URL = 'http://openai-test.haituaigc.com' \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..145e790 --- /dev/null +++ b/.env.production @@ -0,0 +1,5 @@ +VITE_PUBLIC_PATH = / + +VITE_API_BASE_URL = 'http://test-admin.haituaigc.com' + +VITE_API_CHAT_URL = 'http://openai-test.haituaigc.com' \ No newline at end of file diff --git a/src/assets/images/avatar@2x.png b/src/assets/images/avatar@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3eada69840b428ddbc79938d3fe7a9fe8c386205 GIT binary patch literal 9123 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/icon_email.png b/src/assets/images/icon_email.png new file mode 100644 index 0000000000000000000000000000000000000000..12f0f2a01f20ad4282a9e9e61a8b98af320182b0 GIT binary patch literal 1283 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n0+%tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!WpKsVXIz(~Q|QqR!L z#KgivN5ROz$Uxt~T;I?@*T~4qz|6|jSOE%@fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr62do`He}DBuh% z3@!9>^$ZORji3Q(p>JqmrI2P}lxAXVY;I<#si2?{o|%`DUtX*UHrm(M$}_LHBrz{J z)zigR322#KW@d_&v4M%HlaZUTk+Z3Zp`oj*rICpfkZ*48WNhSUXle-4>yn>bnwy$e z0@Is<&})KIFDTXI765H_NiE7OOHFYr%Fk5*hmKVyZnqfXG!Lpb1-Dy_aO%|uIz}Iq z29VMOObD3JKumZF2Xf$fBsCA1F^YgW;OU;X`3ww$=RLouvPQ`FL{ovlKVxt1U(*sbyhKJFfF4KTnjmd*CzMT4MX0y1g$t56ro? zoniN+N!Kp4?Y&YMFBZ1&_T&%^|MCZsL6d&2NS<90>{O?ayDDsbZJdJZqvsnGEBAk{ zEp}C9fB!7LRwe1fNB=3eO)fQwERkywj&6Ueypb!qt^0`SEUlv09kQVjH?7w67V=#= p)L-!aQQ?oToQE85+^l1fV9^r^yxsr+ literal 0 HcmV?d00001 diff --git a/src/assets/images/icon_email_h.png b/src/assets/images/icon_email_h.png new file mode 100644 index 0000000000000000000000000000000000000000..34729391ce05044850af08db2407b8e58389dbf9 GIT binary patch literal 1310 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/icon_pwd.png b/src/assets/images/icon_pwd.png new file mode 100644 index 0000000000000000000000000000000000000000..4601af4a2bead16144f05f6e36859a08840b6085 GIT binary patch literal 1306 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 +
+ +
    +
  • 短信验证
  • +
  • 邮箱验证
  • +
  • 密码登录 +
  • +
+
+
+
手机号码
+
+ +
+
+
+
验证码
+
+ + {{ + telBtnTxt }} +
+
+
+
+
+
邮箱
+
+ +
+
+
+
验证码
+
+ + {{ emailBtnTxt }} +
+
+
+
+
+
手机号/邮箱
+
+ +
+
+
+
密码
+
+ +
+
+
+
+ 登录 +
+
+ + + + + \ No newline at end of file diff --git a/src/components/auth/Register.vue b/src/components/auth/Register.vue new file mode 100644 index 0000000..463796f --- /dev/null +++ b/src/components/auth/Register.vue @@ -0,0 +1,211 @@ + + + + + \ No newline at end of file diff --git a/src/components/auth/index.vue b/src/components/auth/index.vue new file mode 100644 index 0000000..d717446 --- /dev/null +++ b/src/components/auth/index.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file diff --git a/src/io/http.js b/src/io/http.js index c3ebf5d..f5f75c7 100755 --- a/src/io/http.js +++ b/src/io/http.js @@ -16,6 +16,11 @@ const http = (url = '', data = {}, type = 'POST', otherConfig = {}) => { promise = axios({ method: type, url, + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + 'Accept': 'application/json; charset=UTF-8', + 'isLoading': config.isLoading, + }, params: data, timeout: config.timeout }); diff --git a/src/io/httpConfig.js b/src/io/httpConfig.js index c52b58a..4a144c3 100755 --- a/src/io/httpConfig.js +++ b/src/io/httpConfig.js @@ -7,15 +7,35 @@ import axios from 'axios'; import { localCache } from './cache'; import router from "@/router"; -import hostAPI from '@/config/host.config' import { showToast } from 'vant'; +import { useAuthModal } from '@/stores/authModal'; +import hostAPI from '@/config/host.config' export default function () { let _token = ''; let requestCount = 0;//请求数量 + const authModal = useAuthModal(); + + const showLoading = ()=>{ + if (requestCount === 0) { + let renderDom = document.createElement('div'); + renderDom.style.cssText = 'width:100%; height: 100%; position: absolute;left:0;top:0;z-index:9999;background-color: rgba(0,0,0,0.5);display: flex;justify-content: center; align-items: center;' + renderDom.setAttribute('id', 'requestLoading'); + renderDom.innerHTML = 'loading...'; + document.body.appendChild(renderDom); + } + requestCount++; + } + const hideLoading = ()=>{ + requestCount--; + if (requestCount === 0) { + document.body.removeChild(document.getElementById('requestLoading')); + } + }; + // axios.defaults.baseURL = '//' + window.location.host; - axios.defaults.baseURL = hostAPI; + axios.defaults.baseURL = import.meta.env.VITE_API_BASE_URL; // 请求超时时间为10秒 axios.defaults.timeout = 10000; @@ -23,7 +43,6 @@ export default function () { // 请求发送拦截,并在头部加入token axios.interceptors.request.use( function (config) { - let nextToken = localCache.get('auth') && localCache.get('auth').token; let toeknType = localCache.get('auth') && localCache.get('auth').token_type; if (config.url.indexOf('/auth/login') > -1) { @@ -39,11 +58,11 @@ export default function () { if (_token) { config.headers['Authorization'] = `${toeknType} ${_token}`; // 存在将token写入请求头 } - // if (config.headers.isLoading !== false) showLoading(); + if (config.headers.isLoading !== false) showLoading(); return config; }, function (error) { - // if (error.config.headers.isLoading !== false) hideLoading(); + if (error.config.headers.isLoading !== false) hideLoading(); return Promise.reject(error); } ); @@ -58,18 +77,19 @@ export default function () { showToast('账号过期或异地登录, 请重新登录'); localCache.remove('auth'); localCache.remove('userInfo'); - window.location.pathname='/home'; + authModal.setAuthModalType('login'); + authModal.showAuthModal(); // router.replace({name: 'Home', params: {auth: 'over'}}); } } } catch (e) { showToast('后台' + response.data.status + '错误返回格式不正确'); } - // if (response.config.headers.isLoading !== false) hideLoading(); + if (response.config.headers.isLoading !== false) hideLoading(); return response; }, function (error) { - // if (error.config.headers.isLoading !== false) hideLoading(); + if (error.config.headers.isLoading !== false) hideLoading(); if (error.response) { switch (error.response.data.status) { case 401: @@ -77,7 +97,8 @@ export default function () { showToast('账号过期或异地登录, 请重新登录'); localCache.remove('auth'); localCache.remove('userInfo'); - window.location.pathname='/home'; + authModal.setAuthModalType('login'); + authModal.showAuthModal(); break; case 500: // 500 服务端请求错误 diff --git a/src/io/request.js b/src/io/request.js new file mode 100644 index 0000000..954ae38 --- /dev/null +++ b/src/io/request.js @@ -0,0 +1,67 @@ + +import axios from 'axios' +import { localCache } from '@/io/cache' +import { message } from 'ant-design-vue' +const service = axios.create({ + baseURL: import.meta.env.VITE_API_BASE_URL, + timeout: 200000, + withCredentials: true +}) + + +service.interceptors.request.use( + config => { + const token = localCache.get('auth') && localCache.get('auth').token; + if (token) { + config.headers[ + 'Authorization' + ] = `Bearer ${token}` + } + if (config.requestBaseUrl == 'chat') { + config.baseURL = import.meta.env.VITE_API_CHAT_URL + } + return config + }, + error => { + return Promise.reject(error) + } +) + +service.interceptors.response.use( + + response => { + const { requestBaseUrl } = response.config + const res = response.data + if (requestBaseUrl == 'chat') { + return res + } else { + if (res.status != 0) { + message.error(res.msg || 'Error') + return Promise.reject(res.message || 'Error') + } else { + return res.data + } + } + }, + error => { + const res = error.response.data + const { requestBaseUrl } = error.config + if (requestBaseUrl == 'chat') { + if (res.errcode == 401) { + // localCache.remove('auth'); + // localCache.remove('userInfo'); + } + message.error(res.errmsg || 'Error') + return Promise.reject(res) + } else { + + message.error(res.errmsg || 'Error') + return Promise.reject(error) + } + + + + } +) + +export default service \ No newline at end of file diff --git a/src/layouts/Header.vue b/src/layouts/Header.vue index 039d047..b823cb4 100644 --- a/src/layouts/Header.vue +++ b/src/layouts/Header.vue @@ -3,13 +3,13 @@
首页