diff --git a/src/api/adminRequest.js b/src/api/adminRequest.js index cad7263..e650a61 100644 --- a/src/api/adminRequest.js +++ b/src/api/adminRequest.js @@ -1,96 +1,106 @@ -import axios from 'axios' -import { useRoute, useRouter } from 'vue-router' -import { useStore } from 'vuex'; -import { Toast, Dialog } from 'vant'; +import axios from "axios"; +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': '系统未知错误,请反馈给管理员' -} -const route = useRoute() -const router = useRouter() -const store = useStore() -const loadNoCloseArr = ['/upload/face', ] + 401: "登录状态已过期,即将返回首页重新登录", + 403: "当前操作没有权限", + 404: "访问资源不存在", + default: "系统未知错误,请反馈给管理员", +}; +const route = useRoute(); +const router = useRouter(); +const store = useStore(); +const loadNoCloseArr = ["/upload/face"]; // 判断当前的运行环境 process.env.NODE_ENV // isDev 为真 开发环境 --- npm run serve // isDev 为假 非开发环境(测试环境,生产环境)- npm run build -const isDev = process.env.NODE_ENV === 'development' +const isDev = process.env.NODE_ENV === "development"; const request = axios.create({ // 根据环境 设置不同的baseURL // 如果配置了单个的反向代理 --- 字符串模式 // 如果配置了多个的反向代理 --- 对象模式 - // baseURL: isDev ? 'http://visitor.scdswj.cn/prod-api' : 'http://visitor.scdswj.cn/prod-api' - baseURL: isDev ? 'http://192.168.31.118:8195' : 'http://visitor.scdswj.cn/prod-api' -}) + baseURL: isDev + ? "http://visitor.scdswj.cn/prod-api" + : "http://visitor.scdswj.cn/prod-api", + // baseURL: isDev ? 'http://192.168.31.118:8195' : 'http://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) -}) +request.interceptors.request.use( + (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) { - Toast.fail(message) - setTimeout(()=>{ - localStorage.removeItem('token'); - localStorage.removeItem('user'); - const redirectUrl = localStorage.getItem('redirect') - if(redirectUrl){ - window.location.href = redirectUrl - }else{ - window.location.href = '/userHome' +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(); } - },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 + } 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; + } else { + window.location.href = "/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 = "后端接口连接异常"; + } 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 +export default request; diff --git a/src/api/index.js b/src/api/index.js index 19fbf4e..e75eed3 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -1,98 +1,107 @@ -import axios from 'axios' -import { useRoute, useRouter } from 'vue-router' -import { useStore } from 'vuex'; -import { Toast, Dialog } from 'vant'; +import axios from "axios"; +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': '系统未知错误,请反馈给管理员' -} -const route = useRoute() -const router = useRouter() -const store = useStore() -const loadNoCloseArr = ['/upload/face', ] + 401: "登录状态已过期,即将返回首页重新登录。", + 403: "当前操作没有权限", + 404: "访问资源不存在", + default: "系统未知错误,请反馈给管理员", +}; +const route = useRoute(); +const router = useRouter(); +const store = useStore(); +const loadNoCloseArr = ["/upload/face"]; // 判断当前的运行环境 process.env.NODE_ENV // isDev 为真 开发环境 --- npm run serve // isDev 为假 非开发环境(测试环境,生产环境)- npm run build -const isDev = process.env.NODE_ENV === 'development' +const isDev = process.env.NODE_ENV === "development"; const request = axios.create({ // 根据环境 设置不同的baseURL // 如果配置了单个的反向代理 --- 字符串模式 // 如果配置了多个的反向代理 --- 对象模式 - // baseURL: isDev ? 'http://visitor.scdswj.cn/prod-api' : 'http://visitor.scdswj.cn/prod-api' - baseURL: isDev ? 'http://visitor.scdswj.cn/prod-api' : 'http://visitor.scdswj.cn/prod-api' -}) + baseURL: isDev + ? "http://visitor.scdswj.cn/prod-api" + : "http://visitor.scdswj.cn/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' // 请求拦截器 - 所有的请求开始之前先到此处 -request.interceptors.request.use((config) => { - // 可以设置 加载的动画效果 的展示 - // 在必要的路由设置一些额外的参数 ---- token信息携带放在此处 - console.log(config) - return config -}, (error) => { - return Promise.reject(error) -}) +request.interceptors.request.use( + (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) { - Toast.fail(message) - setTimeout(()=>{ - localStorage.removeItem('token'); - localStorage.removeItem('user'); - localStorage.removeItem('userToken'); - - const redirectUrl = localStorage.getItem('redirect') - if(redirectUrl){ - window.location.href = redirectUrl - }else{ - window.location.href = '/userHome' +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(); } - },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 = "后端接口连接异常"; - } 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) + } else { + Toast.clear(); + } + if (code === 401) { + Toast.fail(message); + setTimeout(() => { + localStorage.removeItem("token"); + localStorage.removeItem("user"); + localStorage.removeItem("userToken"); -}) + const redirectUrl = localStorage.getItem("redirect"); + if (redirectUrl) { + window.location.href = redirectUrl; + } else { + window.location.href = "/userHome"; + } + }, 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 = "后端接口连接异常"; + } 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 +export default request; diff --git a/src/assets/yaoqingbeijingtu.png b/src/assets/yaoqingbeijingtu.png index 8a0f42b..e48ccf2 100644 Binary files a/src/assets/yaoqingbeijingtu.png and b/src/assets/yaoqingbeijingtu.png differ diff --git a/src/router/index.js b/src/router/index.js index 1e078c0..6d2213e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,110 +1,106 @@ -import { createRouter, createWebHistory } from 'vue-router' +import { createRouter, createWebHistory } from "vue-router"; import register from "../views/register.vue"; - -const routerHistory = createWebHistory() + +const routerHistory = createWebHistory(); const routes = [ { - path: '/login', - name:'login', + path: "/login", + name: "login", // redirect: '/login', - component: () => import('../views/login.vue') + component: () => import("../views/login.vue"), }, { - path: '/visitorApply', - name:'visitorApply', + path: "/visitorApply", + name: "visitorApply", // redirect: '/login', - component: () => import('../views/visitorApply.vue'), - meta: { title: '我要预约' } + component: () => import("../views/visitorApply.vue"), + meta: { title: "我要预约" }, }, { - path: '/applyInquire', - name:'applyInquire', - component: () => import('../views/applyInquire.vue'), - meta: { title: '预约查询' } + path: "/applyInquire", + name: "applyInquire", + component: () => import("../views/applyInquire.vue"), + meta: { title: "预约查询" }, }, { - path: '/applyRecord', - name:'applyRecord', + path: "/applyRecord", + name: "applyRecord", // redirect: '/login', - component: () => import('../views/applyRecord.vue'), - meta: { title: '预约记录' } + component: () => import("../views/applyRecord.vue"), + meta: { title: "预约记录" }, }, - - { - path: '/apply', - name:'apply', - // redirect: '/login', - component: () => import('../views/apply.vue'), - meta: { title: '我要预约' } - }, - { - path: '/adminHome', - name:'adminHome', - // redirect: '/login', - component: () => import('../views/adminHome.vue'), - meta: { title: '智能访客' } - }, - { - path: '/visitorRecord', - name:'visitorRecord', - // redirect: '/login', - component: () => import('../views/visitorRecord.vue'), - meta: { title: '访客记录' } - }, - { - path: '/Invitation', - name:'Invitation', - // redirect: '/login', - component: () => import('../views/Invitation.vue'), - meta: { title: '我要邀约' } - }, - { - path: '/userHome', - name:'userHome', - // redirect: '/login', - component: () => import('../views/userHome.vue'), - meta: { title: '智能访客' } - }, - - { - path: '/register', - name:'register', - component: register - }, - { - path: '/home', - name:'home', - // redirect: '/login', - component: () => import('../views/home.vue'), - meta: { title: '员工信息' } - }, { - path: '/specialCrowd', - name:'specialCrowd', + path: "/apply", + name: "apply", // redirect: '/login', - component: () => import('../views/specialCrowd.vue'), - meta: { title: '特殊人员录入' } + component: () => import("../views/apply.vue"), + meta: { title: "我要预约" }, }, { - path:'/', - name:'', - component:()=>import('../views/userHome.vue'), - meta: { title: '智能访客' } - + path: "/adminHome", + name: "adminHome", + // redirect: '/login', + component: () => import("../views/adminHome.vue"), + meta: { title: "智能访客" }, }, - { path: '/:pathMatch(.*)', - redirect: '/userHome', - } -] + { + path: "/visitorRecord", + name: "visitorRecord", + // redirect: '/login', + component: () => import("../views/visitorRecord.vue"), + meta: { title: "访客记录" }, + }, + { + path: "/Invitation", + name: "Invitation", + // redirect: '/login', + component: () => import("../views/Invitation.vue"), + meta: { title: "我要邀约" }, + }, + { + path: "/userHome", + name: "userHome", + // redirect: '/login', + component: () => import("../views/userHome.vue"), + meta: { title: "智能访客" }, + }, + + { + path: "/register", + name: "register", + component: register, + }, + { + path: "/home", + name: "home", + // redirect: '/login', + component: () => import("../views/home.vue"), + meta: { title: "员工信息" }, + }, + { + path: "/specialCrowd", + name: "specialCrowd", + // redirect: '/login', + component: () => import("../views/specialCrowd.vue"), + meta: { title: "特殊人员录入" }, + }, + { + path: "/", + name: "", + component: () => import("../views/userHome.vue"), + meta: { title: "智能访客" }, + }, + { path: "/:pathMatch(.*)", redirect: "/userHome" }, +]; const router = createRouter({ - history: routerHistory, - routes -}) -const title = document.querySelector('title') + history: routerHistory, + routes, +}); +const title = document.querySelector("title"); router.beforeEach((to, from, next) => { - title.innerText = to.meta.title - next() -}) -export default router \ No newline at end of file + title.innerText = to.meta.title; + next(); +}); +export default router; diff --git a/src/views/Invitation.vue b/src/views/Invitation.vue index 4241a12..7f50264 100644 --- a/src/views/Invitation.vue +++ b/src/views/Invitation.vue @@ -1,143 +1,128 @@ - \ No newline at end of file + diff --git a/src/views/userHome.vue b/src/views/userHome.vue index aab4821..c65135e 100644 --- a/src/views/userHome.vue +++ b/src/views/userHome.vue @@ -1,249 +1,257 @@ - \ No newline at end of file + diff --git a/vite.config.js b/vite.config.js index f1a877a..54a1cad 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,9 +1,8 @@ -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' -import { resolve } from "path" - -import styleImport, { VantResolve } from 'vite-plugin-style-import'; +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import { resolve } from "path"; +import styleImport, { VantResolve } from "vite-plugin-style-import"; // https://vitejs.dev/config/ export default defineConfig({ @@ -13,19 +12,17 @@ export default defineConfig({ resolves: [VantResolve()], libs: [ { - libraryName: 'vant', + libraryName: "vant", esModule: true, resolveStyle: (name) => `../es/${name}/style`, //https://blog.csdn.net/yunchong_zhao/article/details/123552423 }, - ], - }), - ], server: { - host: '0.0.0.0',//设置地址:http://localhost + host: "0.0.0.0", //设置地址:http://localhost port: 4000, // 设置服务启动端口号 + hmr: false, // 关闭热更新 // open: true, // 设置服务启动时是否自动打开浏览器 // cors: true, // 允许跨域 // proxy: { @@ -38,10 +35,10 @@ export default defineConfig({ // } // } }, - resolve:{ - alias:{ - "@": resolve(__dirname, "src") - } + resolve: { + alias: { + "@": resolve(__dirname, "src"), + }, }, css: { // css预处理器 @@ -52,5 +49,4 @@ export default defineConfig({ }, }, }, - -}) +});