diff --git a/src/api/adminRequest.js b/src/api/adminRequest.js index b741820..e9a1233 100644 --- a/src/api/adminRequest.js +++ b/src/api/adminRequest.js @@ -1,13 +1,13 @@ import axios from "axios"; -import { useRoute, useRouter } from "vue-router"; -import { useStore } from "vuex"; -import { Toast, Dialog } from "vant"; +import {useRoute, useRouter} from "vue-router"; +import {useStore} from "vuex"; +import {Toast, Dialog} from "vant"; // import { getItem, setItem, removeItem, dalert } from '@/com/index' const errorCode = { - 401: "登录状态已过期,即将返回首页重新登录", - 403: "当前操作没有权限", - 404: "访问资源不存在", - default: "系统未知错误,请反馈给管理员", + 401: "登录状态已过期,即将返回首页重新登录", + 403: "当前操作没有权限", + 404: "访问资源不存在", + default: "系统未知错误,请反馈给管理员", }; const route = useRoute(); const router = useRouter(); @@ -18,89 +18,91 @@ const loadNoCloseArr = ["/upload/face"]; // isDev 为假 非开发环境(测试环境,生产环境)- npm run build const isDev = process.env.NODE_ENV === "development"; const request = axios.create({ - // 根据环境 设置不同的baseURL - // 如果配置了单个的反向代理 --- 字符串模式 - // 如果配置了多个的反向代理 --- 对象模式 - baseURL: isDev - ? "https://visitor.scdswj.cn/prod-api" - : "https://visitor.scdswj.cn/prod-api", - // baseURL: isDev ? 'http://192.168.31.118:8195' : 'https://visitor.scdswj.cn/prod-api' + // 根据环境 设置不同的baseURL + // 如果配置了单个的反向代理 --- 字符串模式 + // 如果配置了多个的反向代理 --- 对象模式 + baseURL: isDev + ? "/dev-api" + : "/prod-api", + // baseURL: isDev ? 'http://192.168.31.118:8195' : 'https://visitor.scdswj.cn/prod-api' }); // 'http://rap2api.taobao.org/app/mock/297766/example/1643070528065' // 请求拦截器 - 所有的请求开始之前先到此处 request.interceptors.request.use( - (config) => { - // 可以设置 加载的动画效果 的展示 - // 在必要的路由设置一些额外的参数 ---- token信息携带放在此处 - console.log(config); - return config; - }, - (error) => { - return Promise.reject(error); - } + (config) => { + // 可以设置 加载的动画效果 的展示 + // 在必要的路由设置一些额外的参数 ---- token信息携带放在此处 + console.log(config); + return config; + }, + (error) => { + return Promise.reject(error); + } ); // 响应拦截器 --- 所有请求的相应先到此处 request.interceptors.response.use( - (response) => { - // 可以设置 加载的动画效果 的隐藏 - const code = response.data.code || 200; - const message = - errorCode[code] || response.data.msg || errorCode["default"]; - if (code === 200) { - if (loadNoCloseArr.includes(response.config.url)) { - // 设置请求不关闭加载动画接口 - } else { - Toast.clear(); - } - } else { - Toast.clear(); - } - if (code === 401) { - console.log("进了"); - Toast.fail(message); - setTimeout(() => { - localStorage.removeItem("token"); - localStorage.removeItem("user"); - const redirectUrl = localStorage.getItem("redirect"); - if (redirectUrl) { - window.location.href = redirectUrl; + (response) => { + // 可以设置 加载的动画效果 的隐藏 + const code = response.data.code || 200; + const message = + errorCode[code] || response.data.msg || errorCode["default"]; + if (code === 200) { + if (loadNoCloseArr.includes(response.config.url)) { + // 设置请求不关闭加载动画接口 + } else { + Toast.clear(); + } } else { - window.location.href = "/adminHome"; + Toast.clear(); } - }, 2000); - return Promise.reject("登录状态已过期,即将返回首页重新登录。"); - } else if (code === 500) { - // Message({ message: msg, type: 'error' }) - Toast.fail(message); - return Promise.reject(response.data); - } else if (code === 601) { - // Message({ message: msg, type: 'warning' }) - Toast.fail(message); - return Promise.reject("error"); - } else if (code !== 200) { - Toast.fail(message); - return Promise.reject("error"); - } else { - return response.data; + if (code === 401) { + console.log("调试:401 登录状态已过期!"); + localStorage.removeItem("token"); + localStorage.removeItem("user"); + Toast.fail(message); + setTimeout(() => { + // const redirectUrl = localStorage.getItem("redirect"); + // if (redirectUrl) { + // window.location.href = redirectUrl; + // } else { + // window.location.href = "/adminHome"; + // } + // 使用 router 而不是直接修改 window.location + router.push("/adminHome"); + }, 2000); + return Promise.reject("登录状态已过期,即将返回首页重新登录。"); + } else if (code === 500) { + // Message({ message: msg, type: 'error' }) + Toast.fail(message); + return Promise.reject(response.data); + } else if (code === 601) { + // Message({ message: msg, type: 'warning' }) + Toast.fail(message); + return Promise.reject("error"); + } else if (code !== 200) { + Toast.fail(message); + return Promise.reject("error"); + } else { + return response.data; + } + }, + (error) => { + Toast.clear(); + console.log(error.message); + let {message} = error; + if (message === "Network Error") { + message = "后端接口连接异常(" + window.location.href + ")"; + } else if (message.includes("timeout")) { + message = "系统接口请求超时"; + } else if (message.includes("Request failed with status code")) { + message = "系统管理接口 " + message.substr(message.length - 3) + " 异常!"; + } + console.log(message); + Toast.fail(message); + return Promise.reject(error.response); } - }, - (error) => { - Toast.clear(); - console.log(error.message); - let { message } = error; - if (message === "Network Error") { - message = "后端接口连接异常"; - } else if (message.includes("timeout")) { - message = "系统接口请求超时"; - } else if (message.includes("Request failed with status code")) { - message = "系统接口" + message.substr(message.length - 3) + "异常"; - } - console.log(message); - Toast.fail(message); - return Promise.reject(error.response); - } ); export default request; diff --git a/src/api/index.js b/src/api/index.js index 6f2da2a..2d9fee8 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -18,12 +18,12 @@ const loadNoCloseArr = ["/upload/face"]; // isDev 为假 非开发环境(测试环境,生产环境)- npm run build const isDev = process.env.NODE_ENV === "development"; const request = axios.create({ - // 根据环境 设置不同的baseURL + // 根据环境 设置不同的baseURL https://visitor.scdswj.cn/prod-api // 如果配置了单个的反向代理 --- 字符串模式 // 如果配置了多个的反向代理 --- 对象模式 baseURL: isDev - ? "https://visitor.scdswj.cn/prod-api" - : "https://visitor.scdswj.cn/prod-api", + ? "/dev-api" + : "/prod-api", // baseURL: isDev ? "http://192.168.31.124:8195" : "http://192.168.31.124:8195", }); // 'http://rap2api.taobao.org/app/mock/297766/example/1643070528065' @@ -58,11 +58,11 @@ request.interceptors.response.use( Toast.clear(); } if (code === 401) { - Toast.fail(message); - setTimeout(() => { localStorage.removeItem("token"); localStorage.removeItem("user"); localStorage.removeItem("userToken"); + Toast.fail(message); + setTimeout(() => { const redirectUrl = localStorage.getItem("redirect"); if (redirectUrl) { @@ -96,7 +96,7 @@ request.interceptors.response.use( } else if (message.includes("timeout")) { message = "系统接口请求超时"; } else if (message.includes("Request failed with status code")) { - message = "系统接口" + message.substr(message.length - 3) + "异常"; + message = "系统后台接口" + message.substr(message.length - 3) + "异常"; } console.log(message); Toast.fail(message); diff --git a/src/api/upload.js b/src/api/upload.js index 24e8f63..2498f4d 100644 --- a/src/api/upload.js +++ b/src/api/upload.js @@ -1,5 +1,5 @@ import request from "./index"; -// 来访预约接口 +// 内部人员头像上传接口 export function uploadApi(data){ return request({ url: '/upload/face', @@ -8,7 +8,7 @@ export function uploadApi(data){ }) } -// 来访人头像上传接口 +// 访客头像上传接口 export function uploadGuestFaceApi(data){ return request({ url: '/upload/guestFace', diff --git a/src/assets/style/index.scss b/src/assets/style/index.scss index c61eb43..c611365 100644 --- a/src/assets/style/index.scss +++ b/src/assets/style/index.scss @@ -7,4 +7,51 @@ $md-size: .3733rem /* 28/75 */; $size30: .4rem /* 30/75 */; $lg-size: .4267rem /* 32/75 */; // 颜色 -$white: #ffffff; \ No newline at end of file +$white: #ffffff; + +/* PC端适配 - 使用缩放保持比例 */ +@media screen and (min-width: 769px) { + body { + background-color: #f5f5f5; + display: flex; + justify-content: center; + align-items: center; + min-height: 100vh; + margin: 0; + } + + #app { + // 假设设计稿是750px宽度,我们可以按比例缩放 + width: 750px; + height: 100vh; + transform-origin: center top; + + // 计算缩放比例,假设PC端最小宽度为1200px + // 可以根据实际需要调整这个值 + transform: scale(0.8); // 例如缩放到80% + + // 或者根据实际视口宽度动态计算 + // transform: scale(calc(100vw / 750)); + + box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); + } + + // 为特定高度的屏幕调整缩放 + @media screen and (min-width: 1200px) { + #app { + transform: scale(1); + } + } + + @media screen and (min-width: 1000px) and (max-width: 1199px) { + #app { + transform: scale(0.9); + } + } + + @media screen and (min-width: 769px) and (max-width: 999px) { + #app { + transform: scale(0.8); + } + } +} diff --git a/src/components/face-model.vue b/src/components/face-model.vue index 109a3df..d6dbb87 100644 --- a/src/components/face-model.vue +++ b/src/components/face-model.vue @@ -12,149 +12,195 @@
注:点击照片框进行人脸照片上传