Ver Fonte

修复请求体和加accessToken,除了登录接口

ming há 3 anos atrás
pai
commit
31728fee96
62 ficheiros alterados com 7960 adições e 19 exclusões
  1. 1 1
      .env.development
  2. 4 0
      .history/.env_20210715142421.development
  3. 4 0
      .history/.env_20211209144213.development
  4. 4 0
      .history/.env_20211209144220.development
  5. 4 0
      .history/.env_20211209144221.development
  6. 67 0
      .history/src/main_20210803095441.js
  7. 68 0
      .history/src/main_20211209142423.js
  8. 68 0
      .history/src/main_20211209142558.js
  9. 68 0
      .history/src/main_20211209142601.js
  10. 69 0
      .history/src/main_20211209142638.js
  11. 69 0
      .history/src/main_20211209142958.js
  12. 69 0
      .history/src/main_20211209143017.js
  13. 69 0
      .history/src/main_20211209143610.js
  14. 463 0
      .history/src/store/index_20210723102619.js
  15. 464 0
      .history/src/store/index_20211209135012.js
  16. 117 0
      .history/src/utils/request_20211209131131.js
  17. 117 0
      .history/src/utils/request_20211209131246.js
  18. 117 0
      .history/src/utils/request_20211209131254.js
  19. 117 0
      .history/src/utils/request_20211209131258.js
  20. 117 0
      .history/src/utils/request_20211209131412.js
  21. 117 0
      .history/src/utils/request_20211209131458.js
  22. 117 0
      .history/src/utils/request_20211209131545.js
  23. 117 0
      .history/src/utils/request_20211209131551.js
  24. 117 0
      .history/src/utils/request_20211209131556.js
  25. 117 0
      .history/src/utils/request_20211209131854.js
  26. 118 0
      .history/src/utils/request_20211209140352.js
  27. 118 0
      .history/src/utils/request_20211209140402.js
  28. 118 0
      .history/src/utils/request_20211209140415.js
  29. 123 0
      .history/src/utils/request_20211209140937.js
  30. 123 0
      .history/src/utils/request_20211209141044.js
  31. 124 0
      .history/src/utils/request_20211209141102.js
  32. 121 0
      .history/src/utils/request_20211209141107.js
  33. 127 0
      .history/src/utils/request_20211209141228.js
  34. 127 0
      .history/src/utils/request_20211209141249.js
  35. 121 0
      .history/src/utils/request_20211209141304.js
  36. 129 0
      .history/src/utils/request_20211209141523.js
  37. 129 0
      .history/src/utils/request_20211209141547.js
  38. 130 0
      .history/src/utils/request_20211209141711.js
  39. 119 0
      .history/src/utils/request_20211209141743.js
  40. 121 0
      .history/src/utils/request_20211209141838.js
  41. 121 0
      .history/src/utils/request_20211209141851.js
  42. 121 0
      .history/src/utils/request_20211209143032.js
  43. 121 0
      .history/src/utils/request_20211209143420.js
  44. 121 0
      .history/src/utils/request_20211209143916.js
  45. 121 0
      .history/src/utils/request_20211209143933.js
  46. 120 0
      .history/src/utils/request_20211209144029.js
  47. 120 0
      .history/src/utils/request_20211209144203.js
  48. 288 0
      .history/src/views/login_20211209135331.vue
  49. 291 0
      .history/src/views/login_20211209135552.vue
  50. 287 0
      .history/src/views/login_20211209135632.vue
  51. 295 0
      .history/src/views/login_20211209135918.vue
  52. 284 0
      .history/src/views/login_20211209142840.vue
  53. 284 0
      .history/src/views/login_20211209143025.vue
  54. 285 0
      .history/src/views/login_20211209143445.vue
  55. 285 0
      .history/src/views/login_20211209143516.vue
  56. 285 0
      .history/src/views/login_20211209143536.vue
  57. BIN
      dist.zip
  58. BIN
      dist1.zip
  59. 2 0
      src/main.js
  60. 1 0
      src/store/index.js
  61. 17 14
      src/utils/request.js
  62. 2 4
      src/views/login.vue

+ 1 - 1
.env.development

@@ -1,4 +1,4 @@
 	// development 开发环境
 	NODE_ENV='development'
 	// 下面的为接口地址。此处/api是我经过webpack设置跨域代理之后的地址
-	VUE_APP_BASE_URL='/'
+	VUE_APP_BASE_URL='https://qhome.usky.cn/fivapi/'

+ 4 - 0
.history/.env_20210715142421.development

@@ -0,0 +1,4 @@
+	// development 开发环境
+	NODE_ENV='development'
+	// 下面的为接口地址。此处/api是我经过webpack设置跨域代理之后的地址
+	VUE_APP_BASE_URL='/'

+ 4 - 0
.history/.env_20211209144213.development

@@ -0,0 +1,4 @@
+	// development 开发环境
+	NODE_ENV='development'
+	// 下面的为接口地址。此处/api是我经过webpack设置跨域代理之后的地址
+	VUE_APP_BASE_URL=''

+ 4 - 0
.history/.env_20211209144220.development

@@ -0,0 +1,4 @@
+	// development 开发环境
+	NODE_ENV='development'
+	// 下面的为接口地址。此处/api是我经过webpack设置跨域代理之后的地址
+	VUE_APP_BASE_URL='https://qhome.usky.cn/fivapi/'

+ 4 - 0
.history/.env_20211209144221.development

@@ -0,0 +1,4 @@
+	// development 开发环境
+	NODE_ENV='development'
+	// 下面的为接口地址。此处/api是我经过webpack设置跨域代理之后的地址
+	VUE_APP_BASE_URL='https://qhome.usky.cn/fivapi/'

+ 67 - 0
.history/src/main_20210803095441.js

@@ -0,0 +1,67 @@
+import { createApp } from 'vue/dist/vue.esm-bundler.js';
+import Antd from 'ant-design-vue';
+import App from './App.vue';
+import 'ant-design-vue/dist/antd.css';
+import UCore from './utils/UCore.js';
+import './assets/css/index.css';
+import router from './router';
+import Vuex from 'vuex'
+import store from './store/index.js';
+import axios from 'axios';
+import ElementPlus from 'element-plus';
+import 'element-plus/lib/theme-chalk/index.css';
+import 'dayjs/locale/zh-cn';
+import locale from 'element-plus/lib/locale/lang/zh-cn';
+//引入rem字体配置
+import '@/assets/js/flexible.js';
+//  引入字体样式
+import '@/assets/fonts/font.css';
+import * as echarts from 'echarts'
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend';
+import { ElMessage } from "element-plus";
+
+const app = createApp(App);
+
+app.config.globalProperties.$UCore = UCore;
+app.config.globalProperties.$axios = axios;
+
+app.use(router).use(store).use(ElementPlus, { locale }).use(Vuex).use(echarts).use(Antd).mount('#app');
+
+store.commit("getTimeAll");
+
+
+/*路由守卫*/
+router.beforeEach((to, from, next) => {
+    /* 路由发生变化修改页面title */
+    if (to.meta.title) {
+        document.title = to.meta.title
+    }
+
+    //如果目标路由为登陆时,恢复用户原始状态
+    if (to.path === '/') {
+        sessionStorage.removeItem("userInfo");
+        document.getElementById('routers').style.display = "none"
+    } else {
+        document.getElementById('routers').style.display = "block"
+    }
+    if (to.path !== '/') {
+        if (sessionStorage.getItem('userInfo') === null) {
+            next({ path: '/' })
+            document.getElementById('routers').style.display = "none"
+            setTimeout(() => {
+                ElMessage.warning({
+                    message: '请登录后重试!',
+                    type: 'warning'
+                });
+            }, 100);
+
+        } else {
+            next();
+        }
+    } else {
+        //路由的next必须存在,否则无法进入下一页
+        next()
+    }
+})

+ 68 - 0
.history/src/main_20211209142423.js

@@ -0,0 +1,68 @@
+import { createApp } from 'vue/dist/vue.esm-bundler.js';
+import Antd from 'ant-design-vue';
+import App from './App.vue';
+import 'ant-design-vue/dist/antd.css';
+import UCore from './utils/UCore.js';
+import './assets/css/index.css';
+import router from './router';
+import Vuex from 'vuex'
+import store from './store/index.js';
+import axios from 'axios';
+import ElementPlus from 'element-plus';
+import 'element-plus/lib/theme-chalk/index.css';
+import 'dayjs/locale/zh-cn';
+import locale from 'element-plus/lib/locale/lang/zh-cn';
+//引入rem字体配置
+import '@/assets/js/flexible.js';
+//  引入字体样式
+import '@/assets/fonts/font.css';
+import * as echarts from 'echarts'
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend';
+import { ElMessage } from "element-plus";
+
+const app = createApp(App);
+
+app.config.globalProperties.$UCore = UCore;
+app.config.globalProperties.$axios = axios;
+
+app.use(router).use(store).use(ElementPlus, { locale }).use(Vuex).use(echarts).use(Antd).mount('#app');
+
+store.commit("getTimeAll");
+
+
+/*路由守卫*/
+router.beforeEach((to, from, next) => {
+    /* 路由发生变化修改页面title */
+    if (to.meta.title) {
+        document.title = to.meta.title
+    }
+
+    //如果目标路由为登陆时,恢复用户原始状态
+    if (to.path === '/') {
+        sessionStorage.removeItem("userInfo");
+        sessionStorage.removeItem("assToken");
+        document.getElementById('routers').style.display = "none"
+    } else {
+        document.getElementById('routers').style.display = "block"
+    }
+    if (to.path !== '/') {
+        if (sessionStorage.getItem('userInfo') === null) {
+            next({ path: '/' })
+            document.getElementById('routers').style.display = "none"
+            setTimeout(() => {
+                ElMessage.warning({
+                    message: '请登录后重试!',
+                    type: 'warning'
+                });
+            }, 100);
+
+        } else {
+            next();
+        }
+    } else {
+        //路由的next必须存在,否则无法进入下一页
+        next()
+    }
+})

+ 68 - 0
.history/src/main_20211209142558.js

@@ -0,0 +1,68 @@
+import { createApp } from 'vue/dist/vue.esm-bundler.js';
+import Antd from 'ant-design-vue';
+import App from './App.vue';
+import 'ant-design-vue/dist/antd.css';
+import UCore from './utils/UCore.js';
+import './assets/css/index.css';
+import router from './router';
+import Vuex from 'vuex'
+import store from './store/index.js';
+import axios from 'axios';
+import ElementPlus from 'element-plus';
+import 'element-plus/lib/theme-chalk/index.css';
+import 'dayjs/locale/zh-cn';
+import locale from 'element-plus/lib/locale/lang/zh-cn';
+//引入rem字体配置
+import '@/assets/js/flexible.js';
+//  引入字体样式
+import '@/assets/fonts/font.css';
+import * as echarts from 'echarts'
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend';
+import { ElMessage } from "element-plus";
+
+const app = createApp(App);
+
+app.config.globalProperties.$UCore = UCore;
+app.config.globalProperties.$axios = axios;
+
+app.use(router).use(store).use(ElementPlus, { locale }).use(Vuex).use(echarts).use(Antd).mount('#app');
+
+store.commit("getTimeAll");
+
+
+/*路由守卫*/
+router.beforeEach((to, from, next) => {
+    /* 路由发生变化修改页面title */
+    if (to.meta.title) {
+        document.title = to.meta.title
+    }
+
+    //如果目标路由为登陆时,恢复用户原始状态
+    if (to.path === '/') {
+        sessionStorage.removeItem("userInfo");
+        localStorage.removeItem("assToken");
+        document.getElementById('routers').style.display = "none"
+    } else {
+        document.getElementById('routers').style.display = "block"
+    }
+    if (to.path !== '/') {
+        if (sessionStorage.getItem('userInfo') === null) {
+            next({ path: '/' })
+            document.getElementById('routers').style.display = "none"
+            setTimeout(() => {
+                ElMessage.warning({
+                    message: '请登录后重试!',
+                    type: 'warning'
+                });
+            }, 100);
+
+        } else {
+            next();
+        }
+    } else {
+        //路由的next必须存在,否则无法进入下一页
+        next()
+    }
+})

+ 68 - 0
.history/src/main_20211209142601.js

@@ -0,0 +1,68 @@
+import { createApp } from 'vue/dist/vue.esm-bundler.js';
+import Antd from 'ant-design-vue';
+import App from './App.vue';
+import 'ant-design-vue/dist/antd.css';
+import UCore from './utils/UCore.js';
+import './assets/css/index.css';
+import router from './router';
+import Vuex from 'vuex'
+import store from './store/index.js';
+import axios from 'axios';
+import ElementPlus from 'element-plus';
+import 'element-plus/lib/theme-chalk/index.css';
+import 'dayjs/locale/zh-cn';
+import locale from 'element-plus/lib/locale/lang/zh-cn';
+//引入rem字体配置
+import '@/assets/js/flexible.js';
+//  引入字体样式
+import '@/assets/fonts/font.css';
+import * as echarts from 'echarts'
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend';
+import { ElMessage } from "element-plus";
+
+const app = createApp(App);
+
+app.config.globalProperties.$UCore = UCore;
+app.config.globalProperties.$axios = axios;
+
+app.use(router).use(store).use(ElementPlus, { locale }).use(Vuex).use(echarts).use(Antd).mount('#app');
+
+store.commit("getTimeAll");
+
+
+/*路由守卫*/
+router.beforeEach((to, from, next) => {
+    /* 路由发生变化修改页面title */
+    if (to.meta.title) {
+        document.title = to.meta.title
+    }
+
+    //如果目标路由为登陆时,恢复用户原始状态
+    if (to.path === '/') {
+        sessionStorage.removeItem("userInfo");
+        localStorage.removeItem("assToken");
+        document.getElementById('routers').style.display = "none"
+    } else {
+        document.getElementById('routers').style.display = "block"
+    }
+    if (to.path !== '/') {
+        if (sessionStorage.getItem('userInfo') === null) {
+            next({ path: '/' })
+            document.getElementById('routers').style.display = "none"
+            setTimeout(() => {
+                ElMessage.warning({
+                    message: '请登录后重试!',
+                    type: 'warning'
+                });
+            }, 100);
+
+        } else {
+            next();
+        }
+    } else {
+        //路由的next必须存在,否则无法进入下一页
+        next()
+    }
+})

+ 69 - 0
.history/src/main_20211209142638.js

@@ -0,0 +1,69 @@
+import { createApp } from 'vue/dist/vue.esm-bundler.js';
+import Antd from 'ant-design-vue';
+import App from './App.vue';
+import 'ant-design-vue/dist/antd.css';
+import UCore from './utils/UCore.js';
+import './assets/css/index.css';
+import router from './router';
+import Vuex from 'vuex'
+import store from './store/index.js';
+import axios from 'axios';
+import ElementPlus from 'element-plus';
+import 'element-plus/lib/theme-chalk/index.css';
+import 'dayjs/locale/zh-cn';
+import locale from 'element-plus/lib/locale/lang/zh-cn';
+//引入rem字体配置
+import '@/assets/js/flexible.js';
+//  引入字体样式
+import '@/assets/fonts/font.css';
+import * as echarts from 'echarts'
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend';
+import { ElMessage } from "element-plus";
+
+const app = createApp(App);
+
+app.config.globalProperties.$UCore = UCore;
+app.config.globalProperties.$axios = axios;
+
+app.use(router).use(store).use(ElementPlus, { locale }).use(Vuex).use(echarts).use(Antd).mount('#app');
+
+store.commit("getTimeAll");
+
+
+/*路由守卫*/
+router.beforeEach((to, from, next) => {
+    /* 路由发生变化修改页面title */
+    if (to.meta.title) {
+        document.title = to.meta.title
+    }
+
+    //如果目标路由为登陆时,恢复用户原始状态
+    if (to.path === '/') {
+        sessionStorage.removeItem("userInfo");
+        console.log(localStorage)
+        localStorage.removeItem("assToken");
+        document.getElementById('routers').style.display = "none"
+    } else {
+        document.getElementById('routers').style.display = "block"
+    }
+    if (to.path !== '/') {
+        if (sessionStorage.getItem('userInfo') === null) {
+            next({ path: '/' })
+            document.getElementById('routers').style.display = "none"
+            setTimeout(() => {
+                ElMessage.warning({
+                    message: '请登录后重试!',
+                    type: 'warning'
+                });
+            }, 100);
+
+        } else {
+            next();
+        }
+    } else {
+        //路由的next必须存在,否则无法进入下一页
+        next()
+    }
+})

+ 69 - 0
.history/src/main_20211209142958.js

@@ -0,0 +1,69 @@
+import { createApp } from 'vue/dist/vue.esm-bundler.js';
+import Antd from 'ant-design-vue';
+import App from './App.vue';
+import 'ant-design-vue/dist/antd.css';
+import UCore from './utils/UCore.js';
+import './assets/css/index.css';
+import router from './router';
+import Vuex from 'vuex'
+import store from './store/index.js';
+import axios from 'axios';
+import ElementPlus from 'element-plus';
+import 'element-plus/lib/theme-chalk/index.css';
+import 'dayjs/locale/zh-cn';
+import locale from 'element-plus/lib/locale/lang/zh-cn';
+//引入rem字体配置
+import '@/assets/js/flexible.js';
+//  引入字体样式
+import '@/assets/fonts/font.css';
+import * as echarts from 'echarts'
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend';
+import { ElMessage } from "element-plus";
+
+const app = createApp(App);
+
+app.config.globalProperties.$UCore = UCore;
+app.config.globalProperties.$axios = axios;
+
+app.use(router).use(store).use(ElementPlus, { locale }).use(Vuex).use(echarts).use(Antd).mount('#app');
+
+store.commit("getTimeAll");
+
+
+/*路由守卫*/
+router.beforeEach((to, from, next) => {
+    /* 路由发生变化修改页面title */
+    if (to.meta.title) {
+        document.title = to.meta.title
+    }
+
+    //如果目标路由为登陆时,恢复用户原始状态
+    if (to.path === '/') {
+        console.log(localStorage)
+        localStorage.removeItem("assToken");
+        sessionStorage.removeItem("userInfo");
+        document.getElementById('routers').style.display = "none"
+    } else {
+        document.getElementById('routers').style.display = "block"
+    }
+    if (to.path !== '/') {
+        if (sessionStorage.getItem('userInfo') === null) {
+            next({ path: '/' })
+            document.getElementById('routers').style.display = "none"
+            setTimeout(() => {
+                ElMessage.warning({
+                    message: '请登录后重试!',
+                    type: 'warning'
+                });
+            }, 100);
+
+        } else {
+            next();
+        }
+    } else {
+        //路由的next必须存在,否则无法进入下一页
+        next()
+    }
+})

+ 69 - 0
.history/src/main_20211209143017.js

@@ -0,0 +1,69 @@
+import { createApp } from 'vue/dist/vue.esm-bundler.js';
+import Antd from 'ant-design-vue';
+import App from './App.vue';
+import 'ant-design-vue/dist/antd.css';
+import UCore from './utils/UCore.js';
+import './assets/css/index.css';
+import router from './router';
+import Vuex from 'vuex'
+import store from './store/index.js';
+import axios from 'axios';
+import ElementPlus from 'element-plus';
+import 'element-plus/lib/theme-chalk/index.css';
+import 'dayjs/locale/zh-cn';
+import locale from 'element-plus/lib/locale/lang/zh-cn';
+//引入rem字体配置
+import '@/assets/js/flexible.js';
+//  引入字体样式
+import '@/assets/fonts/font.css';
+import * as echarts from 'echarts'
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend';
+import { ElMessage } from "element-plus";
+
+const app = createApp(App);
+
+app.config.globalProperties.$UCore = UCore;
+app.config.globalProperties.$axios = axios;
+
+app.use(router).use(store).use(ElementPlus, { locale }).use(Vuex).use(echarts).use(Antd).mount('#app');
+
+store.commit("getTimeAll");
+
+
+/*路由守卫*/
+router.beforeEach((to, from, next) => {
+    /* 路由发生变化修改页面title */
+    if (to.meta.title) {
+        document.title = to.meta.title
+    }
+
+    //如果目标路由为登陆时,恢复用户原始状态
+    if (to.path === '/') {
+        console.log(sessionStorage)
+        sessionStorage.removeItem("assToken");
+        sessionStorage.removeItem("userInfo");
+        document.getElementById('routers').style.display = "none"
+    } else {
+        document.getElementById('routers').style.display = "block"
+    }
+    if (to.path !== '/') {
+        if (sessionStorage.getItem('userInfo') === null) {
+            next({ path: '/' })
+            document.getElementById('routers').style.display = "none"
+            setTimeout(() => {
+                ElMessage.warning({
+                    message: '请登录后重试!',
+                    type: 'warning'
+                });
+            }, 100);
+
+        } else {
+            next();
+        }
+    } else {
+        //路由的next必须存在,否则无法进入下一页
+        next()
+    }
+})

+ 69 - 0
.history/src/main_20211209143610.js

@@ -0,0 +1,69 @@
+import { createApp } from 'vue/dist/vue.esm-bundler.js';
+import Antd from 'ant-design-vue';
+import App from './App.vue';
+import 'ant-design-vue/dist/antd.css';
+import UCore from './utils/UCore.js';
+import './assets/css/index.css';
+import router from './router';
+import Vuex from 'vuex'
+import store from './store/index.js';
+import axios from 'axios';
+import ElementPlus from 'element-plus';
+import 'element-plus/lib/theme-chalk/index.css';
+import 'dayjs/locale/zh-cn';
+import locale from 'element-plus/lib/locale/lang/zh-cn';
+//引入rem字体配置
+import '@/assets/js/flexible.js';
+//  引入字体样式
+import '@/assets/fonts/font.css';
+import * as echarts from 'echarts'
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend';
+import { ElMessage } from "element-plus";
+import { removeToken } from './utils/auth';
+
+const app = createApp(App);
+
+app.config.globalProperties.$UCore = UCore;
+app.config.globalProperties.$axios = axios;
+
+app.use(router).use(store).use(ElementPlus, { locale }).use(Vuex).use(echarts).use(Antd).mount('#app');
+
+store.commit("getTimeAll");
+
+
+/*路由守卫*/
+router.beforeEach((to, from, next) => {
+    /* 路由发生变化修改页面title */
+    if (to.meta.title) {
+        document.title = to.meta.title
+    }
+
+    //如果目标路由为登陆时,恢复用户原始状态
+    if (to.path === '/') {
+        removeToken()
+        sessionStorage.removeItem("userInfo");
+        document.getElementById('routers').style.display = "none"
+    } else {
+        document.getElementById('routers').style.display = "block"
+    }
+    if (to.path !== '/') {
+        if (sessionStorage.getItem('userInfo') === null) {
+            next({ path: '/' })
+            document.getElementById('routers').style.display = "none"
+            setTimeout(() => {
+                ElMessage.warning({
+                    message: '请登录后重试!',
+                    type: 'warning'
+                });
+            }, 100);
+
+        } else {
+            next();
+        }
+    } else {
+        //路由的next必须存在,否则无法进入下一页
+        next()
+    }
+})

+ 463 - 0
.history/src/store/index_20210723102619.js

@@ -0,0 +1,463 @@
+import { createStore } from 'vuex'
+
+export default createStore({
+    state: {
+        query: null,
+        siteId: 1, //公共api请求参数->siteId
+        Time_Data: [], //公共api请求参数->Time_Data
+        timearr: [], //公共处理开始时间和结束时间中的时间段天数 值存储
+        itemStyle: [{
+                normal: {
+                    borderColor: "rgba(0,244,253,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(0,244,253,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(253,143,0,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(253,143,0,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(0,255,18,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(0,255,18,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(0,255,230,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(0,255,230,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(142,51,255,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(142,51,255,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(77,200,120,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(77,200,120,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(255,47,47,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(255,47,47,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(70,100,255,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(70,100,255,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(255,143,53,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(255,143,53,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(150,150,50,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(150,150,50,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(70,192,255,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(70,192,255,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(20,99,100,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(20,99,100,1)",
+                    },
+                },
+            },
+        ], //公共echarts图表样式
+        Time_All: [], //公共时间 返回数组 -> 年月日时分秒 时间戳
+
+
+        queryType: '', //设备监控--->数据报表api请求参数->queryType
+        run_off_Status: null, //设备监控--->运行状态统计->echarts->OFF次数分布和运行状态曲线图表 api信息存储
+        HistoricalCurve: null, //设备监控--->历史趋势->echarts->曲线图表 api信息存储
+        se_defaultTime: [], //设备监控--->历史趋势时间选择器v-model
+        th_defaultTime: [], //设备监控--->数据报表时间选择器v-model
+        fh_defaultTime: [], //设备监控--->运行状态统计时间选择器v-model
+        table_list: [{
+                name: "电流",
+                list: [
+                    { name: "A相电流", value: "Ia" },
+                    { name: "B相电流", value: "Ib" },
+                    { name: "C相电流", value: "Ic" },
+                ],
+            },
+            {
+                name: "功率",
+                list: [
+                    { name: "A相有功功率 kW", value: "Pa" },
+                    { name: "A相无功功率 kVar", value: "Qa" },
+                    { name: "B相有功功率 kW", value: "Pb" },
+                    { name: "B相无功功率 kVar", value: "Qb" },
+                    { name: "C相有功功率 kW", value: "Pc" },
+                    { name: "C相无功功率 kVar", value: "Qc" },
+                    { name: "总有功功率 kW", value: "P" },
+                    { name: "总无功功率 kW", value: "Q" },
+                    { name: "实时需量 kW", value: "Demand" },
+                ],
+            },
+            {
+                name: "电度",
+                list: [
+                    { name: "正有功电度 kWh", value: "Epp" },
+                    { name: "负有功电度 kWh", value: "Epn" },
+                    { name: "正无功电度 kvarh", value: "Eqp" },
+                    { name: "负无功电度 kvarh", value: "Eqn" },
+                ],
+            },
+            {
+                name: "电压",
+                list: [
+                    { name: "A相电压 kV", value: "Ua" },
+                    { name: "B相电压 kV", value: "Ub" },
+                    { name: "C相电压 kV", value: "Uc" },
+                    { name: "回路电压 V", value: "Ul" },
+                    { name: "AB线电压 V", value: "Uab" },
+                    { name: "BC线电压 V", value: "Ubc" },
+                    { name: "CA线电压 V", value: "Uca" },
+                ],
+            },
+            {
+                name: "温度 ℃",
+                list: [
+                    { name: "外接温度1", value: "T1" },
+                    { name: "外接温度2", value: "T2" },
+                    { name: "外接温度3", value: "T3" },
+                    { name: "外接温度4", value: "T4" },
+                    { name: "环境温度", value: "DeviceTemp" },
+                ],
+            },
+            {
+                name: "频率 Hz",
+                list: [{ name: "频率", value: "F" }],
+            },
+            {
+                name: "功率因数",
+                list: [
+                    { name: "A相功率因数", value: "COSa" },
+                    { name: "B相功率因数", value: "COSb" },
+                    { name: "C相功率因数", value: "COSc" },
+                    { name: "功率因数", value: "COS" },
+                ],
+            },
+            {
+                name: "谐波电流有效值 A",
+                list: [
+                    { name: "Ia总谐波电流", value: "IHa" },
+                    { name: "Ib总谐波电流", value: "IHa" },
+                    { name: "Ic总谐波电流", value: "IHc" },
+                ],
+            },
+            {
+                name: "通讯参数",
+                list: [{ name: "设备信号强度", value: "SignalIntensity" }],
+            },
+            {
+                name: "电压突变 次",
+                list: [
+                    { name: "电压暂升次数", value: "Upt" },
+                    { name: "电压暂降次数", value: "Udt" },
+                    { name: "电压中断次数", value: "Ust" },
+                ],
+            },
+        ], //设备监控--->数据报表->默认tabs数据
+        se_tabs: [
+            { label: '电流', name: "I" },
+            { label: '功率', name: "P" },
+            { label: '电度', name: "KWh" },
+            { label: '电压', name: "V" },
+            { label: '温度', name: "C" },
+            { label: '频率', name: "HZ" },
+            { label: '功率因数', name: "PS" },
+            { label: '谐波电流有效值', name: "RMS" },
+            { label: '通讯参数', name: "DDB" },
+            { label: '电压突变', name: "VT" },
+        ], //设备监控--->历史趋势->默认tabs数据
+
+        trendIco: null, //事件告警--->事件告警统计->echarts->柱状图 api信息存储
+        trendIco_state: null, //事件告警--->事件告警统计->select状态api信息存储
+        trendIco_table: [
+            { label: '发生时间', porp: 'soeTime' },
+            { label: '告警描述', porp: 'measName' },
+            { label: '设备', porp: 'deviceCode' },
+            { label: '告警类型', porp: 'alarmName' },
+            { label: '状态', porp: 'handlingStatus' },
+            { label: '处理人', porp: 'handler' },
+            { label: '处理时间', porp: 'handlingTime' },
+        ], //事件告警--->事件告警统计->表格默认值存储
+
+
+        trendIcoCount: null,
+    },
+    mutations: {
+        /**
+         * @公共api请求参数siteId
+         * @param {*}} state 
+         * @param {*} val 
+         */
+        increment(state, val) {
+            state.siteId = val
+        },
+        /**
+         * @数据报表 —> 多选按钮数据处理
+         * @param {*} state 
+         * @param {*} checked_list 
+         */
+        checkedCities_all(state, checked_list) {
+            state.queryType = ''
+            var checked = ''
+            for (let i in checked_list) {
+                checked_list[i] === "电流" ?
+                    checked = "I" :
+                    checked_list[i] === "功率" ?
+                    checked = "P" :
+                    checked_list[i] === "电度" ?
+                    checked = "KWh" :
+                    checked_list[i] === "电压" ?
+                    checked = "V" :
+                    checked_list[i] === "温度" ?
+                    checked = "C" :
+                    checked_list[i] === "频率" ?
+                    checked = "HZ" :
+                    checked_list[i] === "功率因数" ?
+                    checked = "PS" :
+                    checked_list[i] === "谐波电流有效值" ?
+                    checked = "RMS" :
+                    checked_list[i] === "通讯参数" ?
+                    checked = "DDB" :
+                    checked_list[i] === "电压突变" ?
+                    checked = "VT" :
+                    ""
+                state.queryType += checked_list.length > 1 ? checked + "," : checked;
+            }
+            state.queryType = checked_list.length > 1 ? state.queryType.slice(0, state.queryType.length - 1) : state.queryType
+        },
+        /**
+         * @历史趋势 -> echarts ->曲线图表 api信息存储
+         */
+        HistoricalCurve(state, data) {
+            state.HistoricalCurve = data
+        },
+        /**
+         * @公共处理时区方法
+         */
+        TimeAll_function(state, time) {
+            state.Time_Data = []
+            for (let i in time) {
+                var Y = time[i].getFullYear() < 10 ? '0' + time[i].getFullYear() : time[i].getFullYear()
+                var M = (time[i].getMonth() + 1) < 10 ? '0' + (time[i].getMonth() + 1) : (time[i].getMonth() + 1)
+                var D = time[i].getDate() < 10 ? '0' + time[i].getDate() : time[i].getDate()
+                var HH = time[i].getHours() < 10 ? '0' + time[i].getHours() : time[i].getHours()
+                var MM = time[i].getMinutes() < 10 ? '0' + time[i].getMinutes() : time[i].getMinutes()
+                var SS = time[i].getSeconds() < 10 ? '0' + time[i].getSeconds() : time[i].getSeconds()
+                    // console.log(Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS)
+                state.Time_Data.push(Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS)
+            }
+        },
+        /**
+         * @公共处理开始时间和结束时间中的时间段天数
+         * @param {*} state 
+         * @param {*} begin 开始时间和结束时间
+         */
+        getAll(state, begin) {
+            let arr1 = begin[0].split("-");
+            let arr2 = begin[1].split("-");
+            let arr1_ = new Date();
+            let arrTime = [];
+            arr1_.setUTCFullYear(arr1[0], arr1[1] - 1, arr1[2]);
+            let arr2_ = new Date();
+            arr2_.setUTCFullYear(arr2[0], arr2[1] - 1, arr2[2]);
+            let unixDb = arr1_.getTime();
+            let unixDe = arr2_.getTime();
+            for (let k = unixDb; k <= unixDe;) {
+                arrTime.push(datetimeparse(k, "YY-MM-DD"));
+                k = k + 24 * 60 * 60 * 1000;
+            }
+            state.timearr = arrTime
+                // return arrTime;
+                // 时间格式处理
+            function datetimeparse(timestamp, format, prefix) {
+                if (typeof timestamp == "string") {
+                    timestamp = Number(timestamp);
+                }
+                //转换时区
+                let currentZoneTime = new Date(timestamp);
+                let currentTimestamp = currentZoneTime.getTime();
+                let offsetZone = currentZoneTime.getTimezoneOffset() / 60; //如果offsetZone>0是西区,西区晚
+                let offset = null;
+                //客户端时间与服务器时间保持一致,固定北京时间东八区。
+                offset = offsetZone + 8;
+                currentTimestamp = currentTimestamp + offset * 3600 * 1000;
+
+                let newtimestamp = null;
+                if (currentTimestamp) {
+                    if (currentTimestamp.toString().length === 13) {
+                        newtimestamp = currentTimestamp.toString();
+                    } else if (currentTimestamp.toString().length === 10) {
+                        newtimestamp = currentTimestamp + "000";
+                    } else {
+                        newtimestamp = null;
+                    }
+                } else {
+                    newtimestamp = null;
+                }
+                let dateobj = newtimestamp ?
+                    new Date(parseInt(newtimestamp)) :
+                    new Date();
+                let YYYY = dateobj.getFullYear();
+                let MM =
+                    dateobj.getMonth() > 8 ?
+                    dateobj.getMonth() + 1 :
+                    "0" + (dateobj.getMonth() + 1);
+                let DD =
+                    dateobj.getDate() > 9 ? dateobj.getDate() : "0" + dateobj.getDate();
+                let HH =
+                    dateobj.getHours() > 9 ? dateobj.getHours() : "0" + dateobj.getHours();
+                let mm =
+                    dateobj.getMinutes() > 9 ?
+                    dateobj.getMinutes() :
+                    "0" + dateobj.getMinutes();
+                let ss =
+                    dateobj.getSeconds() > 9 ?
+                    dateobj.getSeconds() :
+                    "0" + dateobj.getSeconds();
+                let output = "";
+                let separator = "/";
+                if (format) {
+                    separator = format.match(/-/) ? "-" : "/";
+                    output += format.match(/yy/i) ? YYYY : "";
+                    output += format.match(/MM/) ?
+                        (output.length ? separator : "") + MM :
+                        "";
+                    output += format.match(/dd/i) ?
+                        (output.length ? separator : "") + DD :
+                        "";
+                    output += format.match(/hh/i) ? (output.length ? " " : "") + HH : "";
+                    output += format.match(/mm/) ? (output.length ? ":" : "") + mm : "";
+                    output += format.match(/ss/i) ? (output.length ? ":" : "") + ss : "";
+                } else {
+                    output += YYYY + separator + MM + separator + DD;
+                }
+                output = prefix ? prefix + output : output;
+                return newtimestamp ? output : "";
+            }
+        },
+        /**
+         * @公共echarts图表下载
+         */
+        getConnectedDataURL(state, refs) {
+            state || refs
+            var url = refs[0].getConnectedDataURL({
+                pixelRatio: 15,
+                backgroundColor: "black",
+                excludeComponents: ["toolbox"],
+                type: "png",
+            });
+            var $a = document.createElement("a");
+            var type = "png";
+            //图片名称
+            $a.download = refs[1] + "." + type;
+            $a.target = "_blank";
+            $a.href = url;
+            if (typeof MouseEvent === "function") {
+                var evt = new MouseEvent("click", {
+                    view: window,
+                    bubbles: true,
+                    cancelable: false,
+                });
+                $a.dispatchEvent(evt);
+            }
+        },
+        /**
+         * @公共时间 返回数组 -> 年月日时分秒 时间戳
+         */
+        getTimeAll(state) {
+            const time = new Date();
+            const Y = time.getFullYear(); //年
+            const M = time.getMonth(); //月
+            const D = time.getDate(); //日
+            const HH = time.getHours(); //时,
+            const MM = time.getMinutes(); //分
+            const SS = time.getSeconds(); //秒
+            const timestamp = new Date().getTime(); //时间戳
+            state.Time_All = [Y, M, D, HH, MM, SS, timestamp]
+            state.se_defaultTime = [new Date(Y, M, D, 0, 0, 0), new Date()] //设备监控--->历史趋势时间选择器v-model  //home设备总数
+            state.th_defaultTime = [new Date(Y, M, D, 0, 0, 0), new Date()] //设备监控--->数据报表时间选择器v-model  //home运维管理
+            state.fh_defaultTime = [new Date(Y, M, 1, 0, 0, 0), new Date()] //设备监控--->运行状态统计时间选择器v-model  //概览 -> 告警统计折线图
+        },
+    }
+})

+ 464 - 0
.history/src/store/index_20211209135012.js

@@ -0,0 +1,464 @@
+import { createStore } from 'vuex'
+
+export default createStore({
+    state: {
+        assToken: '',
+        query: null,
+        siteId: 1, //公共api请求参数->siteId
+        Time_Data: [], //公共api请求参数->Time_Data
+        timearr: [], //公共处理开始时间和结束时间中的时间段天数 值存储
+        itemStyle: [{
+                normal: {
+                    borderColor: "rgba(0,244,253,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(0,244,253,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(253,143,0,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(253,143,0,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(0,255,18,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(0,255,18,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(0,255,230,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(0,255,230,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(142,51,255,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(142,51,255,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(77,200,120,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(77,200,120,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(255,47,47,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(255,47,47,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(70,100,255,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(70,100,255,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(255,143,53,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(255,143,53,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(150,150,50,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(150,150,50,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(70,192,255,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(70,192,255,1)",
+                    },
+                },
+            },
+            {
+                normal: {
+                    borderColor: "rgba(20,99,100,1)",
+                    borderWidth: 2,
+                    color: "rgba(6, 68, 83, 1)",
+                    lineStyle: {
+                        width: 2, //折线宽度
+                        color: "rgba(20,99,100,1)",
+                    },
+                },
+            },
+        ], //公共echarts图表样式
+        Time_All: [], //公共时间 返回数组 -> 年月日时分秒 时间戳
+
+
+        queryType: '', //设备监控--->数据报表api请求参数->queryType
+        run_off_Status: null, //设备监控--->运行状态统计->echarts->OFF次数分布和运行状态曲线图表 api信息存储
+        HistoricalCurve: null, //设备监控--->历史趋势->echarts->曲线图表 api信息存储
+        se_defaultTime: [], //设备监控--->历史趋势时间选择器v-model
+        th_defaultTime: [], //设备监控--->数据报表时间选择器v-model
+        fh_defaultTime: [], //设备监控--->运行状态统计时间选择器v-model
+        table_list: [{
+                name: "电流",
+                list: [
+                    { name: "A相电流", value: "Ia" },
+                    { name: "B相电流", value: "Ib" },
+                    { name: "C相电流", value: "Ic" },
+                ],
+            },
+            {
+                name: "功率",
+                list: [
+                    { name: "A相有功功率 kW", value: "Pa" },
+                    { name: "A相无功功率 kVar", value: "Qa" },
+                    { name: "B相有功功率 kW", value: "Pb" },
+                    { name: "B相无功功率 kVar", value: "Qb" },
+                    { name: "C相有功功率 kW", value: "Pc" },
+                    { name: "C相无功功率 kVar", value: "Qc" },
+                    { name: "总有功功率 kW", value: "P" },
+                    { name: "总无功功率 kW", value: "Q" },
+                    { name: "实时需量 kW", value: "Demand" },
+                ],
+            },
+            {
+                name: "电度",
+                list: [
+                    { name: "正有功电度 kWh", value: "Epp" },
+                    { name: "负有功电度 kWh", value: "Epn" },
+                    { name: "正无功电度 kvarh", value: "Eqp" },
+                    { name: "负无功电度 kvarh", value: "Eqn" },
+                ],
+            },
+            {
+                name: "电压",
+                list: [
+                    { name: "A相电压 kV", value: "Ua" },
+                    { name: "B相电压 kV", value: "Ub" },
+                    { name: "C相电压 kV", value: "Uc" },
+                    { name: "回路电压 V", value: "Ul" },
+                    { name: "AB线电压 V", value: "Uab" },
+                    { name: "BC线电压 V", value: "Ubc" },
+                    { name: "CA线电压 V", value: "Uca" },
+                ],
+            },
+            {
+                name: "温度 ℃",
+                list: [
+                    { name: "外接温度1", value: "T1" },
+                    { name: "外接温度2", value: "T2" },
+                    { name: "外接温度3", value: "T3" },
+                    { name: "外接温度4", value: "T4" },
+                    { name: "环境温度", value: "DeviceTemp" },
+                ],
+            },
+            {
+                name: "频率 Hz",
+                list: [{ name: "频率", value: "F" }],
+            },
+            {
+                name: "功率因数",
+                list: [
+                    { name: "A相功率因数", value: "COSa" },
+                    { name: "B相功率因数", value: "COSb" },
+                    { name: "C相功率因数", value: "COSc" },
+                    { name: "功率因数", value: "COS" },
+                ],
+            },
+            {
+                name: "谐波电流有效值 A",
+                list: [
+                    { name: "Ia总谐波电流", value: "IHa" },
+                    { name: "Ib总谐波电流", value: "IHa" },
+                    { name: "Ic总谐波电流", value: "IHc" },
+                ],
+            },
+            {
+                name: "通讯参数",
+                list: [{ name: "设备信号强度", value: "SignalIntensity" }],
+            },
+            {
+                name: "电压突变 次",
+                list: [
+                    { name: "电压暂升次数", value: "Upt" },
+                    { name: "电压暂降次数", value: "Udt" },
+                    { name: "电压中断次数", value: "Ust" },
+                ],
+            },
+        ], //设备监控--->数据报表->默认tabs数据
+        se_tabs: [
+            { label: '电流', name: "I" },
+            { label: '功率', name: "P" },
+            { label: '电度', name: "KWh" },
+            { label: '电压', name: "V" },
+            { label: '温度', name: "C" },
+            { label: '频率', name: "HZ" },
+            { label: '功率因数', name: "PS" },
+            { label: '谐波电流有效值', name: "RMS" },
+            { label: '通讯参数', name: "DDB" },
+            { label: '电压突变', name: "VT" },
+        ], //设备监控--->历史趋势->默认tabs数据
+
+        trendIco: null, //事件告警--->事件告警统计->echarts->柱状图 api信息存储
+        trendIco_state: null, //事件告警--->事件告警统计->select状态api信息存储
+        trendIco_table: [
+            { label: '发生时间', porp: 'soeTime' },
+            { label: '告警描述', porp: 'measName' },
+            { label: '设备', porp: 'deviceCode' },
+            { label: '告警类型', porp: 'alarmName' },
+            { label: '状态', porp: 'handlingStatus' },
+            { label: '处理人', porp: 'handler' },
+            { label: '处理时间', porp: 'handlingTime' },
+        ], //事件告警--->事件告警统计->表格默认值存储
+
+
+        trendIcoCount: null,
+    },
+    mutations: {
+        /**
+         * @公共api请求参数siteId
+         * @param {*}} state 
+         * @param {*} val 
+         */
+        increment(state, val) {
+            state.siteId = val
+        },
+        /**
+         * @数据报表 —> 多选按钮数据处理
+         * @param {*} state 
+         * @param {*} checked_list 
+         */
+        checkedCities_all(state, checked_list) {
+            state.queryType = ''
+            var checked = ''
+            for (let i in checked_list) {
+                checked_list[i] === "电流" ?
+                    checked = "I" :
+                    checked_list[i] === "功率" ?
+                    checked = "P" :
+                    checked_list[i] === "电度" ?
+                    checked = "KWh" :
+                    checked_list[i] === "电压" ?
+                    checked = "V" :
+                    checked_list[i] === "温度" ?
+                    checked = "C" :
+                    checked_list[i] === "频率" ?
+                    checked = "HZ" :
+                    checked_list[i] === "功率因数" ?
+                    checked = "PS" :
+                    checked_list[i] === "谐波电流有效值" ?
+                    checked = "RMS" :
+                    checked_list[i] === "通讯参数" ?
+                    checked = "DDB" :
+                    checked_list[i] === "电压突变" ?
+                    checked = "VT" :
+                    ""
+                state.queryType += checked_list.length > 1 ? checked + "," : checked;
+            }
+            state.queryType = checked_list.length > 1 ? state.queryType.slice(0, state.queryType.length - 1) : state.queryType
+        },
+        /**
+         * @历史趋势 -> echarts ->曲线图表 api信息存储
+         */
+        HistoricalCurve(state, data) {
+            state.HistoricalCurve = data
+        },
+        /**
+         * @公共处理时区方法
+         */
+        TimeAll_function(state, time) {
+            state.Time_Data = []
+            for (let i in time) {
+                var Y = time[i].getFullYear() < 10 ? '0' + time[i].getFullYear() : time[i].getFullYear()
+                var M = (time[i].getMonth() + 1) < 10 ? '0' + (time[i].getMonth() + 1) : (time[i].getMonth() + 1)
+                var D = time[i].getDate() < 10 ? '0' + time[i].getDate() : time[i].getDate()
+                var HH = time[i].getHours() < 10 ? '0' + time[i].getHours() : time[i].getHours()
+                var MM = time[i].getMinutes() < 10 ? '0' + time[i].getMinutes() : time[i].getMinutes()
+                var SS = time[i].getSeconds() < 10 ? '0' + time[i].getSeconds() : time[i].getSeconds()
+                    // console.log(Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS)
+                state.Time_Data.push(Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS)
+            }
+        },
+        /**
+         * @公共处理开始时间和结束时间中的时间段天数
+         * @param {*} state 
+         * @param {*} begin 开始时间和结束时间
+         */
+        getAll(state, begin) {
+            let arr1 = begin[0].split("-");
+            let arr2 = begin[1].split("-");
+            let arr1_ = new Date();
+            let arrTime = [];
+            arr1_.setUTCFullYear(arr1[0], arr1[1] - 1, arr1[2]);
+            let arr2_ = new Date();
+            arr2_.setUTCFullYear(arr2[0], arr2[1] - 1, arr2[2]);
+            let unixDb = arr1_.getTime();
+            let unixDe = arr2_.getTime();
+            for (let k = unixDb; k <= unixDe;) {
+                arrTime.push(datetimeparse(k, "YY-MM-DD"));
+                k = k + 24 * 60 * 60 * 1000;
+            }
+            state.timearr = arrTime
+                // return arrTime;
+                // 时间格式处理
+            function datetimeparse(timestamp, format, prefix) {
+                if (typeof timestamp == "string") {
+                    timestamp = Number(timestamp);
+                }
+                //转换时区
+                let currentZoneTime = new Date(timestamp);
+                let currentTimestamp = currentZoneTime.getTime();
+                let offsetZone = currentZoneTime.getTimezoneOffset() / 60; //如果offsetZone>0是西区,西区晚
+                let offset = null;
+                //客户端时间与服务器时间保持一致,固定北京时间东八区。
+                offset = offsetZone + 8;
+                currentTimestamp = currentTimestamp + offset * 3600 * 1000;
+
+                let newtimestamp = null;
+                if (currentTimestamp) {
+                    if (currentTimestamp.toString().length === 13) {
+                        newtimestamp = currentTimestamp.toString();
+                    } else if (currentTimestamp.toString().length === 10) {
+                        newtimestamp = currentTimestamp + "000";
+                    } else {
+                        newtimestamp = null;
+                    }
+                } else {
+                    newtimestamp = null;
+                }
+                let dateobj = newtimestamp ?
+                    new Date(parseInt(newtimestamp)) :
+                    new Date();
+                let YYYY = dateobj.getFullYear();
+                let MM =
+                    dateobj.getMonth() > 8 ?
+                    dateobj.getMonth() + 1 :
+                    "0" + (dateobj.getMonth() + 1);
+                let DD =
+                    dateobj.getDate() > 9 ? dateobj.getDate() : "0" + dateobj.getDate();
+                let HH =
+                    dateobj.getHours() > 9 ? dateobj.getHours() : "0" + dateobj.getHours();
+                let mm =
+                    dateobj.getMinutes() > 9 ?
+                    dateobj.getMinutes() :
+                    "0" + dateobj.getMinutes();
+                let ss =
+                    dateobj.getSeconds() > 9 ?
+                    dateobj.getSeconds() :
+                    "0" + dateobj.getSeconds();
+                let output = "";
+                let separator = "/";
+                if (format) {
+                    separator = format.match(/-/) ? "-" : "/";
+                    output += format.match(/yy/i) ? YYYY : "";
+                    output += format.match(/MM/) ?
+                        (output.length ? separator : "") + MM :
+                        "";
+                    output += format.match(/dd/i) ?
+                        (output.length ? separator : "") + DD :
+                        "";
+                    output += format.match(/hh/i) ? (output.length ? " " : "") + HH : "";
+                    output += format.match(/mm/) ? (output.length ? ":" : "") + mm : "";
+                    output += format.match(/ss/i) ? (output.length ? ":" : "") + ss : "";
+                } else {
+                    output += YYYY + separator + MM + separator + DD;
+                }
+                output = prefix ? prefix + output : output;
+                return newtimestamp ? output : "";
+            }
+        },
+        /**
+         * @公共echarts图表下载
+         */
+        getConnectedDataURL(state, refs) {
+            state || refs
+            var url = refs[0].getConnectedDataURL({
+                pixelRatio: 15,
+                backgroundColor: "black",
+                excludeComponents: ["toolbox"],
+                type: "png",
+            });
+            var $a = document.createElement("a");
+            var type = "png";
+            //图片名称
+            $a.download = refs[1] + "." + type;
+            $a.target = "_blank";
+            $a.href = url;
+            if (typeof MouseEvent === "function") {
+                var evt = new MouseEvent("click", {
+                    view: window,
+                    bubbles: true,
+                    cancelable: false,
+                });
+                $a.dispatchEvent(evt);
+            }
+        },
+        /**
+         * @公共时间 返回数组 -> 年月日时分秒 时间戳
+         */
+        getTimeAll(state) {
+            const time = new Date();
+            const Y = time.getFullYear(); //年
+            const M = time.getMonth(); //月
+            const D = time.getDate(); //日
+            const HH = time.getHours(); //时,
+            const MM = time.getMinutes(); //分
+            const SS = time.getSeconds(); //秒
+            const timestamp = new Date().getTime(); //时间戳
+            state.Time_All = [Y, M, D, HH, MM, SS, timestamp]
+            state.se_defaultTime = [new Date(Y, M, D, 0, 0, 0), new Date()] //设备监控--->历史趋势时间选择器v-model  //home设备总数
+            state.th_defaultTime = [new Date(Y, M, D, 0, 0, 0), new Date()] //设备监控--->数据报表时间选择器v-model  //home运维管理
+            state.fh_defaultTime = [new Date(Y, M, 1, 0, 0, 0), new Date()] //设备监控--->运行状态统计时间选择器v-model  //概览 -> 告警统计折线图
+        },
+    }
+})

+ 117 - 0
.history/src/utils/request_20211209131131.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.data = qs.stringify(config.data);
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/json;charset=UTF-8'
+        )
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+            if (config.method == 'get') {
+                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+                let obj_val = '';
+                for (let k in config.data) {
+                    obj_val += k + "=" + config.data[k] + "&";
+                }
+                config.url += ext_str + obj_val;
+            }
+            // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 117 - 0
.history/src/utils/request_20211209131246.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.data = config.data;
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/json;charset=UTF-8'
+        )
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+            if (config.method == 'get') {
+                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+                let obj_val = '';
+                for (let k in config.data) {
+                    obj_val += k + "=" + config.data[k] + "&";
+                }
+                config.url += ext_str + obj_val;
+            }
+            // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 117 - 0
.history/src/utils/request_20211209131254.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        // config.data = config.data;
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/json;charset=UTF-8'
+        )
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+            if (config.method == 'get') {
+                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+                let obj_val = '';
+                for (let k in config.data) {
+                    obj_val += k + "=" + config.data[k] + "&";
+                }
+                config.url += ext_str + obj_val;
+            }
+            // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 117 - 0
.history/src/utils/request_20211209131258.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+// import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        // config.data = config.data;
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/json;charset=UTF-8'
+        )
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+            if (config.method == 'get') {
+                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+                let obj_val = '';
+                for (let k in config.data) {
+                    obj_val += k + "=" + config.data[k] + "&";
+                }
+                config.url += ext_str + obj_val;
+            }
+            // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 117 - 0
.history/src/utils/request_20211209131412.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+// import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        // config.data = qs.stringify(config.data);
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/json;charset=UTF-8'
+        )
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+            if (config.method == 'get') {
+                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+                let obj_val = '';
+                for (let k in config.data) {
+                    obj_val += k + "=" + config.data[k] + "&";
+                }
+                config.url += ext_str + obj_val;
+            }
+            // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 117 - 0
.history/src/utils/request_20211209131458.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.data = qs.stringify(config.data);
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        )
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+            if (config.method == 'get') {
+                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+                let obj_val = '';
+                for (let k in config.data) {
+                    obj_val += k + "=" + config.data[k] + "&";
+                }
+                config.url += ext_str + obj_val;
+            }
+            // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 117 - 0
.history/src/utils/request_20211209131545.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.data = qs.stringify(config.data);
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        )
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+            if (config.method == 'get') {
+                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+                let obj_val = '';
+                for (let k in config.data) {
+                    obj_val += k + "=" + config.data[k] + "&";
+                }
+                config.url += ext_str + obj_val;
+            }
+            // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 117 - 0
.history/src/utils/request_20211209131551.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        // config.data = qs.stringify(config.data);
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        )
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+            if (config.method == 'get') {
+                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+                let obj_val = '';
+                for (let k in config.data) {
+                    obj_val += k + "=" + config.data[k] + "&";
+                }
+                config.url += ext_str + obj_val;
+            }
+            // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 117 - 0
.history/src/utils/request_20211209131556.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+// import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        // config.data = qs.stringify(config.data);
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        )
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+            if (config.method == 'get') {
+                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+                let obj_val = '';
+                for (let k in config.data) {
+                    obj_val += k + "=" + config.data[k] + "&";
+                }
+                config.url += ext_str + obj_val;
+            }
+            // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 117 - 0
.history/src/utils/request_20211209131854.js

@@ -0,0 +1,117 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8'
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        )
+            config.data = qs.stringify(config.data);
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 118 - 0
.history/src/utils/request_20211209140352.js

@@ -0,0 +1,118 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            ''
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        )
+            config.data = qs.stringify(config.data);
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 118 - 0
.history/src/utils/request_20211209140402.js

@@ -0,0 +1,118 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            'accessToken':
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        )
+            config.data = qs.stringify(config.data);
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 118 - 0
.history/src/utils/request_20211209140415.js

@@ -0,0 +1,118 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        )
+            config.data = qs.stringify(config.data);
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 123 - 0
.history/src/utils/request_20211209140937.js

@@ -0,0 +1,123 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        } else {
+            config.headers['accessToken'] = localStorage.getItem('assToken')
+
+        }
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 123 - 0
.history/src/utils/request_20211209141044.js

@@ -0,0 +1,123 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        } else {
+            // config.headers['accessToken'] = localStorage.getItem('assToken')
+
+        }
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 124 - 0
.history/src/utils/request_20211209141102.js

@@ -0,0 +1,124 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+            config.headers['accessToken'] = localStorage.getItem('assToken')
+        } else {
+
+
+        }
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 121 - 0
.history/src/utils/request_20211209141107.js

@@ -0,0 +1,121 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+            config.headers['accessToken'] = localStorage.getItem('assToken')
+        }
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 127 - 0
.history/src/utils/request_20211209141228.js

@@ -0,0 +1,127 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/json;charset=UTF-8'
+        ) {
+            config.headers['accessToken'] = localStorage.getItem('assToken')
+        }
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 127 - 0
.history/src/utils/request_20211209141249.js

@@ -0,0 +1,127 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+        if (
+
+            config.headers['Content-Type'] !==
+            'application/json;charset=UTF-8'
+        ) {
+            config.headers['accessToken'] = localStorage.getItem('assToken')
+        }
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 121 - 0
.history/src/utils/request_20211209141304.js

@@ -0,0 +1,121 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 129 - 0
.history/src/utils/request_20211209141523.js

@@ -0,0 +1,129 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 129 - 0
.history/src/utils/request_20211209141547.js

@@ -0,0 +1,129 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/json'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 130 - 0
.history/src/utils/request_20211209141711.js

@@ -0,0 +1,130 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+        if (
+            config.headers['Content-Type'] !=
+            'application/json;charset=UTF-8'
+        ) {
+            config.headers['accessToken'] ===
+                localStorage.getItem('assToken')
+
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 119 - 0
.history/src/utils/request_20211209141743.js

@@ -0,0 +1,119 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 121 - 0
.history/src/utils/request_20211209141838.js

@@ -0,0 +1,121 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 121 - 0
.history/src/utils/request_20211209141851.js

@@ -0,0 +1,121 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            'accessToken': localStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 121 - 0
.history/src/utils/request_20211209143032.js

@@ -0,0 +1,121 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            'accessToken': sessionStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.token = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 121 - 0
.history/src/utils/request_20211209143420.js

@@ -0,0 +1,121 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': sessionStorage.getItem('assToken')
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.accessToken = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 121 - 0
.history/src/utils/request_20211209143916.js

@@ -0,0 +1,121 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            'accessToken': getToken()
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        // config.headers.accessToken = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 121 - 0
.history/src/utils/request_20211209143933.js

@@ -0,0 +1,121 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+            // 'accessToken': getToken()
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.accessToken = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 120 - 0
.history/src/utils/request_20211209144029.js

@@ -0,0 +1,120 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        baseURL: baseURL,
+        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.accessToken = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 120 - 0
.history/src/utils/request_20211209144203.js

@@ -0,0 +1,120 @@
+import axios from 'axios'
+import { ElMessage } from 'element-plus'
+// import store from '@/store'
+import { getToken } from '@/utils/auth'
+import qs from 'qs'
+
+// create an axios instance
+
+let baseURL = window.PLATFROM_CONFIG.baseUrl
+const service = axios.create({
+        // baseURL: baseURL,
+        baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        withCredentials: true, // send cookies when cross-domain requests
+        timeout: 5000, // request timeout
+        headers: {
+            'Content-Type': 'application/json;charset=UTF-8',
+        },
+    })
+    // request interceptor
+service.interceptors.request.use(
+    config => {
+
+        config.headers.accessToken = getToken()
+
+        if (
+            config.data &&
+            config.headers['Content-Type'] ===
+            'application/x-www-form-urlencoded;charset=UTF-8'
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
+        // do something before request is sent
+
+        // if (store.getters.token) {
+        //     // let each request carry token
+        //     // ['X-Token'] is a custom headers key
+        //     // please modify it according to the actual situation
+        //     config.headers['X-Token'] = getToken()
+        // }
+
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
+            }
+            config.url += ext_str + obj_val;
+        }
+        // return config;
+
+        return config
+    },
+    error => {
+        // do something with request error
+        console.log(error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+// response interceptor
+service.interceptors.response.use(
+    /**
+     * If you want to get http information such as headers or status
+     * Please return  response => response
+     */
+
+    /**
+     * Determine the request status by custom code
+     * Here is just an example
+     * You can also judge the status by HTTP Status Code
+     */
+    response => {
+        const res = response.data
+
+        // console.log(res)
+
+
+        return res
+
+        // if the custom code is not 20000, it is judged as an error.
+        // if (res.code !== 200) {
+        //     Message({
+        //         message: res.message || 'Error',
+        //         type: 'error',
+        //         duration: 5 * 1000
+        //     })
+
+        //     // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        //         // to re-login
+        //         MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+        //             confirmButtonText: 'Re-Login',
+        //             cancelButtonText: 'Cancel',
+        //             type: 'warning'
+        //         }).then(() => {
+        //             store.dispatch('user/resetToken').then(() => {
+        //                 location.reload()
+        //             })
+        //         })
+        //     }
+        //     return Promise.reject(new Error(res.message || 'Error'))
+        // } else {
+        //     return res
+        // }
+    },
+    error => {
+        // console.log('err' + error.response.data.msg) // for debug
+        ElMessage({
+            message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
+            type: 'error',
+            duration: 5 * 1000
+        })
+        return Promise.reject(error)
+    }
+
+)
+
+export default service

+ 288 - 0
.history/src/views/login_20211209135331.vue

@@ -0,0 +1,288 @@
+<template>
+  <div class="loginBox">
+    <div class="loginInnerBox">
+      <h2 class="bigTit">智慧用电监控平台</h2>
+      <p class="loginTitle">用户登录</p>
+
+      <el-form
+        :label-position="labelPosition"
+        :model="loginForm"
+        :rules="rules"
+        ref="loginForm"
+        class="demo-loginForm"
+      >
+        <el-form-item prop="username" class="oneSec">
+          <img class="icon" src="../assets/images/userIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.username"
+            max="6"
+            placeholder="请输入登录ID"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item prop="password" class="oneSec">
+          <img class="icon" src="../assets/images/passwordIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            placeholder="请输入密码"
+            maxlength="9"
+            auto-complete="new-password"
+            clearable
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+        <div class="remember">
+          <el-checkbox label="记住密码" v-model="isChecked"></el-checkbox>
+        </div>
+        <el-form-item>
+          <el-button @click="submitForm" class="submitBox">登录</el-button>
+          <!-- <el-button @click="resetForm">重置</el-button> -->
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import * as api from "../api/login/user.js";
+import { ElMessage } from "element-plus";
+export default {
+  data() {
+    return {
+      loginData: "",
+
+      labelPosition: "right",
+
+      loginForm: {
+        username: "",
+        password: "",
+      },
+
+      rules: {
+        username: [
+          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
+          { required: true, message: "请输入用户名", trigger: "blur" },
+          {
+            min: 3,
+            max: 6,
+            message: "用户名长度在 3 到 6 个字符",
+            trigger: "blur",
+          },
+        ],
+        password: [
+          { required: true, message: "请输密码", trigger: "blur" },
+          {
+            min: 3,
+            max: 9,
+            message: "密码长度在 3 到 9 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+
+      isChecked: true, // 记住密码
+    };
+  },
+  mounted() {
+    this.getCookie();
+    this.loginFree();
+  },
+
+  methods: {
+    loginFree() {
+      this.login_api({
+        username: "admin",
+        password: "admin123",
+      });
+      sessionStorage.setItem("userInfo", "admin");
+    },
+    //登录数据对接
+    login_api(query = {}) {
+      api.login_api(query).then((requset) => {
+        if (requset.status === "SUCCESS") {
+          this.loginData = requset.data;
+          console.log('this.loginData');
+          console.log(this.loginData);
+          this.$router.push({ path: "/home" });
+        } else {
+          ElMessage.error(requset.msg);
+        }
+      });
+    },
+
+    submitForm() {
+      // ref 用在组件中,就表示当前组件  通过 $refs.xxx可以拿到所有ref的集合
+      // this.$refs.loginForm  //当前的表单对象
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          //valid成功为ture,失败为false
+          //发送请求 ,调用登录接口
+
+          this.login_api({
+            name: this.loginForm.username,
+            password: this.loginForm.password,
+          });
+          sessionStorage.setItem("userInfo", this.loginForm.username);
+          // alert('submit!');
+        } else {
+          console.log("校验失败");
+          return false;
+        }
+      });
+
+      if (this.isChecked) {
+        // 记住密码
+        this.setCookie(this.loginForm.username, this.loginForm.password, 30); // 保存期限为30天
+      } else {
+        this.clearCookie(); // 清空 Cookie
+      }
+    },
+
+    // 设置Cookie
+    setCookie(username, password, exdays) {
+      // 用户名, 密码, 保存天数
+      let exdate = new Date(); // 获取时间
+      exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
+      // 字符串拼接cookie
+      window.document.cookie =
+        "userName=" + username + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "userPwd=" + password + ";path=/;expires=" + exdate.toGMTString();
+    },
+    // 读取Cookie
+    getCookie() {
+      // console.log(document.cookie);
+      if (document.cookie.length > 0) {
+        let arr = document.cookie.split("; "); // 这里显示的格式需要切割一下自己可输出看下
+        for (let i = 0; i < arr.length; i++) {
+          let arr2 = arr[i].split("="); // 再次切割
+          // 判断查找相对应的值
+          if (arr2[0] == "userName") {
+            this.loginForm.usernameText = arr2[1]; // 保存到保存数据的地方
+          } else if (arr2[0] == "userPwd") {
+            this.loginForm.passwordText = arr2[1];
+          }
+        }
+      }
+    },
+    // 清除Cookie
+    clearCookie() {
+      this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
+    },
+    // resetForm() {
+    //   //表单重置
+    //   this.$refs.loginForm.resetFields();
+    // },
+  },
+};
+</script>
+
+<style lang="scss">
+.bigTit {
+  position: absolute;
+  top: -90px;
+  left: 7px;
+  text-align: center;
+  width: 100%;
+  color: #00e1eb;
+  font-size: 0.625rem;
+
+  //   margin-left:-0.775rem;
+  font-family: PangMenZhengDao Regular, PangMenZhengDao Regular-Regular;
+  font-weight: bold;
+  letter-spacing: 17px;
+}
+.loginBox {
+  background-image: url(../assets/images/login-bg.png) !important;
+  background-repeat: no-repeat;
+  background-size: cover;
+  width: 100%;
+  height: 100vh;
+  min-width: 1024px;
+  min-height: 600px;
+  background-position: center center;
+  display: block;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: red;
+
+  .loginInnerBox {
+    position: relative;
+    width: 8.3875rem;
+    height: 5.8rem;
+    background-image: url(../assets/images/loginIn-bg.png) !important;
+    background-size: cover;
+    padding: 0.45rem 0.775rem;
+    // text-align: center;
+    .loginTitle {
+      font-size: 0.45rem;
+      color: #00e1eb;
+      text-align: center;
+      letter-spacing: 12px;
+    }
+    .oneSec {
+      text-align: left;
+      width: 6.85rem;
+      height: 0.7375rem;
+      line-height: 0.7375rem;
+      background: rgba(11, 161, 248, 0.4);
+      border: 1px solid #0ba1f8;
+      margin-top: 0.4875rem;
+      position: relative;
+      .icon {
+        position: absolute;
+        top: 0.2rem;
+        left: 0.2rem;
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      input {
+        background: transparent;
+        border: 0;
+        -webkit-appearance: none;
+        border-radius: 0;
+        // padding: 12px 5px 12px 0;
+        color: #fff;
+        height: 47px;
+        caret-color: #fff;
+        outline: none;
+        font-size: 0.325rem;
+        padding-left: 0.85rem;
+        line-height: 0.7375rem;
+        height: 0.7375rem;
+      }
+    }
+    .remember {
+      margin: 0.275rem 0;
+      .el-checkbox__inner {
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      .el-checkbox__label {
+        font-size: 0.325rem;
+        font-weight: 300;
+      }
+      .el-checkbox__inner::after {
+        top: 0.07rem;
+        width: 0.0625rem;
+        left: 0.1125rem;
+      }
+      .el-checkbox {
+        color: #fff;
+      }
+    }
+    .submitBox {
+      width: 6.85rem;
+      // height: 0.7375rem;
+      opacity: 1;
+      background: #00e1eb;
+      color: #001a2b;
+      font-size: 0.45rem;
+      text-align: center;
+      // line-height: 0.7375rem;
+      cursor: pointer;
+    }
+  }
+}
+</style>

+ 291 - 0
.history/src/views/login_20211209135552.vue

@@ -0,0 +1,291 @@
+<template>
+  <div class="loginBox">
+    <div class="loginInnerBox">
+      <h2 class="bigTit">智慧用电监控平台</h2>
+      <p class="loginTitle">用户登录</p>
+
+      <el-form
+        :label-position="labelPosition"
+        :model="loginForm"
+        :rules="rules"
+        ref="loginForm"
+        class="demo-loginForm"
+      >
+        <el-form-item prop="username" class="oneSec">
+          <img class="icon" src="../assets/images/userIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.username"
+            max="6"
+            placeholder="请输入登录ID"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item prop="password" class="oneSec">
+          <img class="icon" src="../assets/images/passwordIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            placeholder="请输入密码"
+            maxlength="9"
+            auto-complete="new-password"
+            clearable
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+        <div class="remember">
+          <el-checkbox label="记住密码" v-model="isChecked"></el-checkbox>
+        </div>
+        <el-form-item>
+          <el-button @click="submitForm" class="submitBox">登录</el-button>
+          <!-- <el-button @click="resetForm">重置</el-button> -->
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import * as api from "../api/login/user.js";
+import { ElMessage } from "element-plus";
+export default {
+  data() {
+    return {
+      loginData: "",
+
+      labelPosition: "right",
+
+      loginForm: {
+        username: "",
+        password: "",
+      },
+
+      rules: {
+        username: [
+          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
+          { required: true, message: "请输入用户名", trigger: "blur" },
+          {
+            min: 3,
+            max: 6,
+            message: "用户名长度在 3 到 6 个字符",
+            trigger: "blur",
+          },
+        ],
+        password: [
+          { required: true, message: "请输密码", trigger: "blur" },
+          {
+            min: 3,
+            max: 9,
+            message: "密码长度在 3 到 9 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+
+      isChecked: true, // 记住密码
+    };
+  },
+  mounted() {
+    this.getCookie();
+    this.loginFree();
+  },
+
+  methods: {
+    loginFree() {
+      this.login_api({
+        username: "admin",
+        password: "admin123",
+      });
+      sessionStorage.setItem("userInfo", "admin");
+    },
+    //登录数据对接
+    login_api(query = {}) {
+      api.login_api(query).then((requset) => {
+        if (requset.status === "SUCCESS") {
+          this.loginData = requset.data;
+          console.log('this.loginData');
+          console.log(this.loginData);
+
+          localStorage.setItem('assToken',requset.data)
+
+          this.$router.push({ path: "/home" });
+        } else {
+          ElMessage.error(requset.msg);
+        }
+      });
+    },
+
+    submitForm() {
+      // ref 用在组件中,就表示当前组件  通过 $refs.xxx可以拿到所有ref的集合
+      // this.$refs.loginForm  //当前的表单对象
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          //valid成功为ture,失败为false
+          //发送请求 ,调用登录接口
+
+          this.login_api({
+            name: this.loginForm.username,
+            password: this.loginForm.password,
+          });
+          sessionStorage.setItem("userInfo", this.loginForm.username);
+          // alert('submit!');
+        } else {
+          console.log("校验失败");
+          return false;
+        }
+      });
+
+      if (this.isChecked) {
+        // 记住密码
+        this.setCookie(this.loginForm.username, this.loginForm.password, 30); // 保存期限为30天
+      } else {
+        this.clearCookie(); // 清空 Cookie
+      }
+    },
+
+    // 设置Cookie
+    setCookie(username, password, exdays) {
+      // 用户名, 密码, 保存天数
+      let exdate = new Date(); // 获取时间
+      exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
+      // 字符串拼接cookie
+      window.document.cookie =
+        "userName=" + username + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "userPwd=" + password + ";path=/;expires=" + exdate.toGMTString();
+    },
+    // 读取Cookie
+    getCookie() {
+      // console.log(document.cookie);
+      if (document.cookie.length > 0) {
+        let arr = document.cookie.split("; "); // 这里显示的格式需要切割一下自己可输出看下
+        for (let i = 0; i < arr.length; i++) {
+          let arr2 = arr[i].split("="); // 再次切割
+          // 判断查找相对应的值
+          if (arr2[0] == "userName") {
+            this.loginForm.usernameText = arr2[1]; // 保存到保存数据的地方
+          } else if (arr2[0] == "userPwd") {
+            this.loginForm.passwordText = arr2[1];
+          }
+        }
+      }
+    },
+    // 清除Cookie
+    clearCookie() {
+      this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
+    },
+    // resetForm() {
+    //   //表单重置
+    //   this.$refs.loginForm.resetFields();
+    // },
+  },
+};
+</script>
+
+<style lang="scss">
+.bigTit {
+  position: absolute;
+  top: -90px;
+  left: 7px;
+  text-align: center;
+  width: 100%;
+  color: #00e1eb;
+  font-size: 0.625rem;
+
+  //   margin-left:-0.775rem;
+  font-family: PangMenZhengDao Regular, PangMenZhengDao Regular-Regular;
+  font-weight: bold;
+  letter-spacing: 17px;
+}
+.loginBox {
+  background-image: url(../assets/images/login-bg.png) !important;
+  background-repeat: no-repeat;
+  background-size: cover;
+  width: 100%;
+  height: 100vh;
+  min-width: 1024px;
+  min-height: 600px;
+  background-position: center center;
+  display: block;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: red;
+
+  .loginInnerBox {
+    position: relative;
+    width: 8.3875rem;
+    height: 5.8rem;
+    background-image: url(../assets/images/loginIn-bg.png) !important;
+    background-size: cover;
+    padding: 0.45rem 0.775rem;
+    // text-align: center;
+    .loginTitle {
+      font-size: 0.45rem;
+      color: #00e1eb;
+      text-align: center;
+      letter-spacing: 12px;
+    }
+    .oneSec {
+      text-align: left;
+      width: 6.85rem;
+      height: 0.7375rem;
+      line-height: 0.7375rem;
+      background: rgba(11, 161, 248, 0.4);
+      border: 1px solid #0ba1f8;
+      margin-top: 0.4875rem;
+      position: relative;
+      .icon {
+        position: absolute;
+        top: 0.2rem;
+        left: 0.2rem;
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      input {
+        background: transparent;
+        border: 0;
+        -webkit-appearance: none;
+        border-radius: 0;
+        // padding: 12px 5px 12px 0;
+        color: #fff;
+        height: 47px;
+        caret-color: #fff;
+        outline: none;
+        font-size: 0.325rem;
+        padding-left: 0.85rem;
+        line-height: 0.7375rem;
+        height: 0.7375rem;
+      }
+    }
+    .remember {
+      margin: 0.275rem 0;
+      .el-checkbox__inner {
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      .el-checkbox__label {
+        font-size: 0.325rem;
+        font-weight: 300;
+      }
+      .el-checkbox__inner::after {
+        top: 0.07rem;
+        width: 0.0625rem;
+        left: 0.1125rem;
+      }
+      .el-checkbox {
+        color: #fff;
+      }
+    }
+    .submitBox {
+      width: 6.85rem;
+      // height: 0.7375rem;
+      opacity: 1;
+      background: #00e1eb;
+      color: #001a2b;
+      font-size: 0.45rem;
+      text-align: center;
+      // line-height: 0.7375rem;
+      cursor: pointer;
+    }
+  }
+}
+</style>

+ 287 - 0
.history/src/views/login_20211209135632.vue

@@ -0,0 +1,287 @@
+<template>
+  <div class="loginBox">
+    <div class="loginInnerBox">
+      <h2 class="bigTit">智慧用电监控平台</h2>
+      <p class="loginTitle">用户登录</p>
+
+      <el-form
+        :label-position="labelPosition"
+        :model="loginForm"
+        :rules="rules"
+        ref="loginForm"
+        class="demo-loginForm"
+      >
+        <el-form-item prop="username" class="oneSec">
+          <img class="icon" src="../assets/images/userIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.username"
+            max="6"
+            placeholder="请输入登录ID"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item prop="password" class="oneSec">
+          <img class="icon" src="../assets/images/passwordIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            placeholder="请输入密码"
+            maxlength="9"
+            auto-complete="new-password"
+            clearable
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+        <div class="remember">
+          <el-checkbox label="记住密码" v-model="isChecked"></el-checkbox>
+        </div>
+        <el-form-item>
+          <el-button @click="submitForm" class="submitBox">登录</el-button>
+          <!-- <el-button @click="resetForm">重置</el-button> -->
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import * as api from "../api/login/user.js";
+import { ElMessage } from "element-plus";
+export default {
+  data() {
+    return {
+   
+      labelPosition: "right",
+
+      loginForm: {
+        username: "",
+        password: "",
+      },
+
+      rules: {
+        username: [
+          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
+          { required: true, message: "请输入用户名", trigger: "blur" },
+          {
+            min: 3,
+            max: 6,
+            message: "用户名长度在 3 到 6 个字符",
+            trigger: "blur",
+          },
+        ],
+        password: [
+          { required: true, message: "请输密码", trigger: "blur" },
+          {
+            min: 3,
+            max: 9,
+            message: "密码长度在 3 到 9 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+
+      isChecked: true, // 记住密码
+    };
+  },
+  mounted() {
+    this.getCookie();
+    this.loginFree();
+  },
+
+  methods: {
+    loginFree() {
+      this.login_api({
+        username: "admin",
+        password: "admin123",
+      });
+      sessionStorage.setItem("userInfo", "admin");
+    },
+    //登录数据对接
+    login_api(query = {}) {
+      api.login_api(query).then((requset) => {
+        if (requset.status === "SUCCESS") {
+     
+          localStorage.setItem('assToken',requset.data)
+
+          this.$router.push({ path: "/home" });
+        } else {
+          ElMessage.error(requset.msg);
+        }
+      });
+    },
+
+    submitForm() {
+      // ref 用在组件中,就表示当前组件  通过 $refs.xxx可以拿到所有ref的集合
+      // this.$refs.loginForm  //当前的表单对象
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          //valid成功为ture,失败为false
+          //发送请求 ,调用登录接口
+
+          this.login_api({
+            name: this.loginForm.username,
+            password: this.loginForm.password,
+          });
+          sessionStorage.setItem("userInfo", this.loginForm.username);
+          // alert('submit!');
+        } else {
+          console.log("校验失败");
+          return false;
+        }
+      });
+
+      if (this.isChecked) {
+        // 记住密码
+        this.setCookie(this.loginForm.username, this.loginForm.password, 30); // 保存期限为30天
+      } else {
+        this.clearCookie(); // 清空 Cookie
+      }
+    },
+
+    // 设置Cookie
+    setCookie(username, password, exdays) {
+      // 用户名, 密码, 保存天数
+      let exdate = new Date(); // 获取时间
+      exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
+      // 字符串拼接cookie
+      window.document.cookie =
+        "userName=" + username + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "userPwd=" + password + ";path=/;expires=" + exdate.toGMTString();
+    },
+    // 读取Cookie
+    getCookie() {
+      // console.log(document.cookie);
+      if (document.cookie.length > 0) {
+        let arr = document.cookie.split("; "); // 这里显示的格式需要切割一下自己可输出看下
+        for (let i = 0; i < arr.length; i++) {
+          let arr2 = arr[i].split("="); // 再次切割
+          // 判断查找相对应的值
+          if (arr2[0] == "userName") {
+            this.loginForm.usernameText = arr2[1]; // 保存到保存数据的地方
+          } else if (arr2[0] == "userPwd") {
+            this.loginForm.passwordText = arr2[1];
+          }
+        }
+      }
+    },
+    // 清除Cookie
+    clearCookie() {
+      this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
+    },
+    // resetForm() {
+    //   //表单重置
+    //   this.$refs.loginForm.resetFields();
+    // },
+  },
+};
+</script>
+
+<style lang="scss">
+.bigTit {
+  position: absolute;
+  top: -90px;
+  left: 7px;
+  text-align: center;
+  width: 100%;
+  color: #00e1eb;
+  font-size: 0.625rem;
+
+  //   margin-left:-0.775rem;
+  font-family: PangMenZhengDao Regular, PangMenZhengDao Regular-Regular;
+  font-weight: bold;
+  letter-spacing: 17px;
+}
+.loginBox {
+  background-image: url(../assets/images/login-bg.png) !important;
+  background-repeat: no-repeat;
+  background-size: cover;
+  width: 100%;
+  height: 100vh;
+  min-width: 1024px;
+  min-height: 600px;
+  background-position: center center;
+  display: block;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: red;
+
+  .loginInnerBox {
+    position: relative;
+    width: 8.3875rem;
+    height: 5.8rem;
+    background-image: url(../assets/images/loginIn-bg.png) !important;
+    background-size: cover;
+    padding: 0.45rem 0.775rem;
+    // text-align: center;
+    .loginTitle {
+      font-size: 0.45rem;
+      color: #00e1eb;
+      text-align: center;
+      letter-spacing: 12px;
+    }
+    .oneSec {
+      text-align: left;
+      width: 6.85rem;
+      height: 0.7375rem;
+      line-height: 0.7375rem;
+      background: rgba(11, 161, 248, 0.4);
+      border: 1px solid #0ba1f8;
+      margin-top: 0.4875rem;
+      position: relative;
+      .icon {
+        position: absolute;
+        top: 0.2rem;
+        left: 0.2rem;
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      input {
+        background: transparent;
+        border: 0;
+        -webkit-appearance: none;
+        border-radius: 0;
+        // padding: 12px 5px 12px 0;
+        color: #fff;
+        height: 47px;
+        caret-color: #fff;
+        outline: none;
+        font-size: 0.325rem;
+        padding-left: 0.85rem;
+        line-height: 0.7375rem;
+        height: 0.7375rem;
+      }
+    }
+    .remember {
+      margin: 0.275rem 0;
+      .el-checkbox__inner {
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      .el-checkbox__label {
+        font-size: 0.325rem;
+        font-weight: 300;
+      }
+      .el-checkbox__inner::after {
+        top: 0.07rem;
+        width: 0.0625rem;
+        left: 0.1125rem;
+      }
+      .el-checkbox {
+        color: #fff;
+      }
+    }
+    .submitBox {
+      width: 6.85rem;
+      // height: 0.7375rem;
+      opacity: 1;
+      background: #00e1eb;
+      color: #001a2b;
+      font-size: 0.45rem;
+      text-align: center;
+      // line-height: 0.7375rem;
+      cursor: pointer;
+    }
+  }
+}
+</style>

+ 295 - 0
.history/src/views/login_20211209135918.vue

@@ -0,0 +1,295 @@
+<template>
+  <div class="loginBox">
+    <div class="loginInnerBox">
+      <h2 class="bigTit">智慧用电监控平台</h2>
+      <p class="loginTitle">用户登录</p>
+
+      <el-form
+        :label-position="labelPosition"
+        :model="loginForm"
+        :rules="rules"
+        ref="loginForm"
+        class="demo-loginForm"
+      >
+        <el-form-item prop="username" class="oneSec">
+          <img class="icon" src="../assets/images/userIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.username"
+            max="6"
+            placeholder="请输入登录ID"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item prop="password" class="oneSec">
+          <img class="icon" src="../assets/images/passwordIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            placeholder="请输入密码"
+            maxlength="9"
+            auto-complete="new-password"
+            clearable
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+        <div class="remember">
+          <el-checkbox label="记住密码" v-model="isChecked"></el-checkbox>
+        </div>
+        <el-form-item>
+          <el-button @click="submitForm" class="submitBox">登录</el-button>
+          <!-- <el-button @click="resetForm">重置</el-button> -->
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import * as api from "../api/login/user.js";
+import { ElMessage } from "element-plus";
+export default {
+  data() {
+    return {
+   
+      labelPosition: "right",
+
+      loginForm: {
+        username: "",
+        password: "",
+      },
+
+      rules: {
+        username: [
+          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
+          { required: true, message: "请输入用户名", trigger: "blur" },
+          {
+            min: 3,
+            max: 6,
+            message: "用户名长度在 3 到 6 个字符",
+            trigger: "blur",
+          },
+        ],
+        password: [
+          { required: true, message: "请输密码", trigger: "blur" },
+          {
+            min: 3,
+            max: 9,
+            message: "密码长度在 3 到 9 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+
+      isChecked: true, // 记住密码
+    };
+  },
+  mounted() {
+    this.getCookie();
+    this.loginFree();
+  },
+
+  methods: {
+    loginFree() {
+      this.login_api({
+        username: "admin",
+        password: "admin123",
+      });
+      sessionStorage.setItem("userInfo", "admin");
+    },
+    //登录数据对接
+    login_api(query = {}) {
+      api.login_api(query).then((requset) => {
+        if (requset.status === "SUCCESS") {
+     
+          localStorage.setItem('assToken',requset.data)
+
+          setTimeout(function(){
+
+            console.log('获取token')
+            console.log(localStorage.getItem('assToken'))
+
+          },1000)
+         
+
+          this.$router.push({ path: "/home" });
+        } else {
+          ElMessage.error(requset.msg);
+        }
+      });
+    },
+
+    submitForm() {
+      // ref 用在组件中,就表示当前组件  通过 $refs.xxx可以拿到所有ref的集合
+      // this.$refs.loginForm  //当前的表单对象
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          //valid成功为ture,失败为false
+          //发送请求 ,调用登录接口
+
+          this.login_api({
+            name: this.loginForm.username,
+            password: this.loginForm.password,
+          });
+          sessionStorage.setItem("userInfo", this.loginForm.username);
+          // alert('submit!');
+        } else {
+          console.log("校验失败");
+          return false;
+        }
+      });
+
+      if (this.isChecked) {
+        // 记住密码
+        this.setCookie(this.loginForm.username, this.loginForm.password, 30); // 保存期限为30天
+      } else {
+        this.clearCookie(); // 清空 Cookie
+      }
+    },
+
+    // 设置Cookie
+    setCookie(username, password, exdays) {
+      // 用户名, 密码, 保存天数
+      let exdate = new Date(); // 获取时间
+      exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
+      // 字符串拼接cookie
+      window.document.cookie =
+        "userName=" + username + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "userPwd=" + password + ";path=/;expires=" + exdate.toGMTString();
+    },
+    // 读取Cookie
+    getCookie() {
+      // console.log(document.cookie);
+      if (document.cookie.length > 0) {
+        let arr = document.cookie.split("; "); // 这里显示的格式需要切割一下自己可输出看下
+        for (let i = 0; i < arr.length; i++) {
+          let arr2 = arr[i].split("="); // 再次切割
+          // 判断查找相对应的值
+          if (arr2[0] == "userName") {
+            this.loginForm.usernameText = arr2[1]; // 保存到保存数据的地方
+          } else if (arr2[0] == "userPwd") {
+            this.loginForm.passwordText = arr2[1];
+          }
+        }
+      }
+    },
+    // 清除Cookie
+    clearCookie() {
+      this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
+    },
+    // resetForm() {
+    //   //表单重置
+    //   this.$refs.loginForm.resetFields();
+    // },
+  },
+};
+</script>
+
+<style lang="scss">
+.bigTit {
+  position: absolute;
+  top: -90px;
+  left: 7px;
+  text-align: center;
+  width: 100%;
+  color: #00e1eb;
+  font-size: 0.625rem;
+
+  //   margin-left:-0.775rem;
+  font-family: PangMenZhengDao Regular, PangMenZhengDao Regular-Regular;
+  font-weight: bold;
+  letter-spacing: 17px;
+}
+.loginBox {
+  background-image: url(../assets/images/login-bg.png) !important;
+  background-repeat: no-repeat;
+  background-size: cover;
+  width: 100%;
+  height: 100vh;
+  min-width: 1024px;
+  min-height: 600px;
+  background-position: center center;
+  display: block;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: red;
+
+  .loginInnerBox {
+    position: relative;
+    width: 8.3875rem;
+    height: 5.8rem;
+    background-image: url(../assets/images/loginIn-bg.png) !important;
+    background-size: cover;
+    padding: 0.45rem 0.775rem;
+    // text-align: center;
+    .loginTitle {
+      font-size: 0.45rem;
+      color: #00e1eb;
+      text-align: center;
+      letter-spacing: 12px;
+    }
+    .oneSec {
+      text-align: left;
+      width: 6.85rem;
+      height: 0.7375rem;
+      line-height: 0.7375rem;
+      background: rgba(11, 161, 248, 0.4);
+      border: 1px solid #0ba1f8;
+      margin-top: 0.4875rem;
+      position: relative;
+      .icon {
+        position: absolute;
+        top: 0.2rem;
+        left: 0.2rem;
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      input {
+        background: transparent;
+        border: 0;
+        -webkit-appearance: none;
+        border-radius: 0;
+        // padding: 12px 5px 12px 0;
+        color: #fff;
+        height: 47px;
+        caret-color: #fff;
+        outline: none;
+        font-size: 0.325rem;
+        padding-left: 0.85rem;
+        line-height: 0.7375rem;
+        height: 0.7375rem;
+      }
+    }
+    .remember {
+      margin: 0.275rem 0;
+      .el-checkbox__inner {
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      .el-checkbox__label {
+        font-size: 0.325rem;
+        font-weight: 300;
+      }
+      .el-checkbox__inner::after {
+        top: 0.07rem;
+        width: 0.0625rem;
+        left: 0.1125rem;
+      }
+      .el-checkbox {
+        color: #fff;
+      }
+    }
+    .submitBox {
+      width: 6.85rem;
+      // height: 0.7375rem;
+      opacity: 1;
+      background: #00e1eb;
+      color: #001a2b;
+      font-size: 0.45rem;
+      text-align: center;
+      // line-height: 0.7375rem;
+      cursor: pointer;
+    }
+  }
+}
+</style>

+ 284 - 0
.history/src/views/login_20211209142840.vue

@@ -0,0 +1,284 @@
+<template>
+  <div class="loginBox">
+    <div class="loginInnerBox">
+      <h2 class="bigTit">智慧用电监控平台</h2>
+      <p class="loginTitle">用户登录</p>
+
+      <el-form
+        :label-position="labelPosition"
+        :model="loginForm"
+        :rules="rules"
+        ref="loginForm"
+        class="demo-loginForm"
+      >
+        <el-form-item prop="username" class="oneSec">
+          <img class="icon" src="../assets/images/userIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.username"
+            max="6"
+            placeholder="请输入登录ID"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item prop="password" class="oneSec">
+          <img class="icon" src="../assets/images/passwordIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            placeholder="请输入密码"
+            maxlength="9"
+            auto-complete="new-password"
+            clearable
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+        <div class="remember">
+          <el-checkbox label="记住密码" v-model="isChecked"></el-checkbox>
+        </div>
+        <el-form-item>
+          <el-button @click="submitForm" class="submitBox">登录</el-button>
+          <!-- <el-button @click="resetForm">重置</el-button> -->
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import * as api from "../api/login/user.js";
+import { ElMessage } from "element-plus";
+export default {
+  data() {
+    return {
+      labelPosition: "right",
+
+      loginForm: {
+        username: "",
+        password: "",
+      },
+
+      rules: {
+        username: [
+          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
+          { required: true, message: "请输入用户名", trigger: "blur" },
+          {
+            min: 3,
+            max: 6,
+            message: "用户名长度在 3 到 6 个字符",
+            trigger: "blur",
+          },
+        ],
+        password: [
+          { required: true, message: "请输密码", trigger: "blur" },
+          {
+            min: 3,
+            max: 9,
+            message: "密码长度在 3 到 9 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+
+      isChecked: true, // 记住密码
+    };
+  },
+  mounted() {
+    this.getCookie();
+    this.loginFree();
+  },
+
+  methods: {
+    loginFree() {
+      this.login_api({
+        username: "admin",
+        password: "admin123",
+      });
+      sessionStorage.setItem("userInfo", "admin");
+    },
+    //登录数据对接
+    login_api(query = {}) {
+      api.login_api(query).then((requset) => {
+        if (requset.status === "SUCCESS") {
+          localStorage.setItem("assToken", requset.data);
+          this.$router.push({ path: "/home" });
+        } else {
+          ElMessage.error(requset.msg);
+        }
+      });
+    },
+
+    submitForm() {
+      // ref 用在组件中,就表示当前组件  通过 $refs.xxx可以拿到所有ref的集合
+      // this.$refs.loginForm  //当前的表单对象
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          //valid成功为ture,失败为false
+          //发送请求 ,调用登录接口
+
+          this.login_api({
+            name: this.loginForm.username,
+            password: this.loginForm.password,
+          });
+          sessionStorage.setItem("userInfo", this.loginForm.username);
+          // alert('submit!');
+        } else {
+          console.log("校验失败");
+          return false;
+        }
+      });
+
+      if (this.isChecked) {
+        // 记住密码
+        this.setCookie(this.loginForm.username, this.loginForm.password, 30); // 保存期限为30天
+      } else {
+        this.clearCookie(); // 清空 Cookie
+      }
+    },
+
+    // 设置Cookie
+    setCookie(username, password, exdays) {
+      // 用户名, 密码, 保存天数
+      let exdate = new Date(); // 获取时间
+      exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
+      // 字符串拼接cookie
+      window.document.cookie =
+        "userName=" + username + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "userPwd=" + password + ";path=/;expires=" + exdate.toGMTString();
+    },
+    // 读取Cookie
+    getCookie() {
+      // console.log(document.cookie);
+      if (document.cookie.length > 0) {
+        let arr = document.cookie.split("; "); // 这里显示的格式需要切割一下自己可输出看下
+        for (let i = 0; i < arr.length; i++) {
+          let arr2 = arr[i].split("="); // 再次切割
+          // 判断查找相对应的值
+          if (arr2[0] == "userName") {
+            this.loginForm.usernameText = arr2[1]; // 保存到保存数据的地方
+          } else if (arr2[0] == "userPwd") {
+            this.loginForm.passwordText = arr2[1];
+          }
+        }
+      }
+    },
+    // 清除Cookie
+    clearCookie() {
+      this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
+    },
+    // resetForm() {
+    //   //表单重置
+    //   this.$refs.loginForm.resetFields();
+    // },
+  },
+};
+</script>
+
+<style lang="scss">
+.bigTit {
+  position: absolute;
+  top: -90px;
+  left: 7px;
+  text-align: center;
+  width: 100%;
+  color: #00e1eb;
+  font-size: 0.625rem;
+
+  //   margin-left:-0.775rem;
+  font-family: PangMenZhengDao Regular, PangMenZhengDao Regular-Regular;
+  font-weight: bold;
+  letter-spacing: 17px;
+}
+.loginBox {
+  background-image: url(../assets/images/login-bg.png) !important;
+  background-repeat: no-repeat;
+  background-size: cover;
+  width: 100%;
+  height: 100vh;
+  min-width: 1024px;
+  min-height: 600px;
+  background-position: center center;
+  display: block;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: red;
+
+  .loginInnerBox {
+    position: relative;
+    width: 8.3875rem;
+    height: 5.8rem;
+    background-image: url(../assets/images/loginIn-bg.png) !important;
+    background-size: cover;
+    padding: 0.45rem 0.775rem;
+    // text-align: center;
+    .loginTitle {
+      font-size: 0.45rem;
+      color: #00e1eb;
+      text-align: center;
+      letter-spacing: 12px;
+    }
+    .oneSec {
+      text-align: left;
+      width: 6.85rem;
+      height: 0.7375rem;
+      line-height: 0.7375rem;
+      background: rgba(11, 161, 248, 0.4);
+      border: 1px solid #0ba1f8;
+      margin-top: 0.4875rem;
+      position: relative;
+      .icon {
+        position: absolute;
+        top: 0.2rem;
+        left: 0.2rem;
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      input {
+        background: transparent;
+        border: 0;
+        -webkit-appearance: none;
+        border-radius: 0;
+        // padding: 12px 5px 12px 0;
+        color: #fff;
+        height: 47px;
+        caret-color: #fff;
+        outline: none;
+        font-size: 0.325rem;
+        padding-left: 0.85rem;
+        line-height: 0.7375rem;
+        height: 0.7375rem;
+      }
+    }
+    .remember {
+      margin: 0.275rem 0;
+      .el-checkbox__inner {
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      .el-checkbox__label {
+        font-size: 0.325rem;
+        font-weight: 300;
+      }
+      .el-checkbox__inner::after {
+        top: 0.07rem;
+        width: 0.0625rem;
+        left: 0.1125rem;
+      }
+      .el-checkbox {
+        color: #fff;
+      }
+    }
+    .submitBox {
+      width: 6.85rem;
+      // height: 0.7375rem;
+      opacity: 1;
+      background: #00e1eb;
+      color: #001a2b;
+      font-size: 0.45rem;
+      text-align: center;
+      // line-height: 0.7375rem;
+      cursor: pointer;
+    }
+  }
+}
+</style>

+ 284 - 0
.history/src/views/login_20211209143025.vue

@@ -0,0 +1,284 @@
+<template>
+  <div class="loginBox">
+    <div class="loginInnerBox">
+      <h2 class="bigTit">智慧用电监控平台</h2>
+      <p class="loginTitle">用户登录</p>
+
+      <el-form
+        :label-position="labelPosition"
+        :model="loginForm"
+        :rules="rules"
+        ref="loginForm"
+        class="demo-loginForm"
+      >
+        <el-form-item prop="username" class="oneSec">
+          <img class="icon" src="../assets/images/userIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.username"
+            max="6"
+            placeholder="请输入登录ID"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item prop="password" class="oneSec">
+          <img class="icon" src="../assets/images/passwordIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            placeholder="请输入密码"
+            maxlength="9"
+            auto-complete="new-password"
+            clearable
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+        <div class="remember">
+          <el-checkbox label="记住密码" v-model="isChecked"></el-checkbox>
+        </div>
+        <el-form-item>
+          <el-button @click="submitForm" class="submitBox">登录</el-button>
+          <!-- <el-button @click="resetForm">重置</el-button> -->
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import * as api from "../api/login/user.js";
+import { ElMessage } from "element-plus";
+export default {
+  data() {
+    return {
+      labelPosition: "right",
+
+      loginForm: {
+        username: "",
+        password: "",
+      },
+
+      rules: {
+        username: [
+          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
+          { required: true, message: "请输入用户名", trigger: "blur" },
+          {
+            min: 3,
+            max: 6,
+            message: "用户名长度在 3 到 6 个字符",
+            trigger: "blur",
+          },
+        ],
+        password: [
+          { required: true, message: "请输密码", trigger: "blur" },
+          {
+            min: 3,
+            max: 9,
+            message: "密码长度在 3 到 9 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+
+      isChecked: true, // 记住密码
+    };
+  },
+  mounted() {
+    this.getCookie();
+    this.loginFree();
+  },
+
+  methods: {
+    loginFree() {
+      this.login_api({
+        username: "admin",
+        password: "admin123",
+      });
+      sessionStorage.setItem("userInfo", "admin");
+    },
+    //登录数据对接
+    login_api(query = {}) {
+      api.login_api(query).then((requset) => {
+        if (requset.status === "SUCCESS") {
+          sessionStorage.setItem("assToken", requset.data);
+          this.$router.push({ path: "/home" });
+        } else {
+          ElMessage.error(requset.msg);
+        }
+      });
+    },
+
+    submitForm() {
+      // ref 用在组件中,就表示当前组件  通过 $refs.xxx可以拿到所有ref的集合
+      // this.$refs.loginForm  //当前的表单对象
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          //valid成功为ture,失败为false
+          //发送请求 ,调用登录接口
+
+          this.login_api({
+            name: this.loginForm.username,
+            password: this.loginForm.password,
+          });
+          sessionStorage.setItem("userInfo", this.loginForm.username);
+          // alert('submit!');
+        } else {
+          console.log("校验失败");
+          return false;
+        }
+      });
+
+      if (this.isChecked) {
+        // 记住密码
+        this.setCookie(this.loginForm.username, this.loginForm.password, 30); // 保存期限为30天
+      } else {
+        this.clearCookie(); // 清空 Cookie
+      }
+    },
+
+    // 设置Cookie
+    setCookie(username, password, exdays) {
+      // 用户名, 密码, 保存天数
+      let exdate = new Date(); // 获取时间
+      exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
+      // 字符串拼接cookie
+      window.document.cookie =
+        "userName=" + username + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "userPwd=" + password + ";path=/;expires=" + exdate.toGMTString();
+    },
+    // 读取Cookie
+    getCookie() {
+      // console.log(document.cookie);
+      if (document.cookie.length > 0) {
+        let arr = document.cookie.split("; "); // 这里显示的格式需要切割一下自己可输出看下
+        for (let i = 0; i < arr.length; i++) {
+          let arr2 = arr[i].split("="); // 再次切割
+          // 判断查找相对应的值
+          if (arr2[0] == "userName") {
+            this.loginForm.usernameText = arr2[1]; // 保存到保存数据的地方
+          } else if (arr2[0] == "userPwd") {
+            this.loginForm.passwordText = arr2[1];
+          }
+        }
+      }
+    },
+    // 清除Cookie
+    clearCookie() {
+      this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
+    },
+    // resetForm() {
+    //   //表单重置
+    //   this.$refs.loginForm.resetFields();
+    // },
+  },
+};
+</script>
+
+<style lang="scss">
+.bigTit {
+  position: absolute;
+  top: -90px;
+  left: 7px;
+  text-align: center;
+  width: 100%;
+  color: #00e1eb;
+  font-size: 0.625rem;
+
+  //   margin-left:-0.775rem;
+  font-family: PangMenZhengDao Regular, PangMenZhengDao Regular-Regular;
+  font-weight: bold;
+  letter-spacing: 17px;
+}
+.loginBox {
+  background-image: url(../assets/images/login-bg.png) !important;
+  background-repeat: no-repeat;
+  background-size: cover;
+  width: 100%;
+  height: 100vh;
+  min-width: 1024px;
+  min-height: 600px;
+  background-position: center center;
+  display: block;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: red;
+
+  .loginInnerBox {
+    position: relative;
+    width: 8.3875rem;
+    height: 5.8rem;
+    background-image: url(../assets/images/loginIn-bg.png) !important;
+    background-size: cover;
+    padding: 0.45rem 0.775rem;
+    // text-align: center;
+    .loginTitle {
+      font-size: 0.45rem;
+      color: #00e1eb;
+      text-align: center;
+      letter-spacing: 12px;
+    }
+    .oneSec {
+      text-align: left;
+      width: 6.85rem;
+      height: 0.7375rem;
+      line-height: 0.7375rem;
+      background: rgba(11, 161, 248, 0.4);
+      border: 1px solid #0ba1f8;
+      margin-top: 0.4875rem;
+      position: relative;
+      .icon {
+        position: absolute;
+        top: 0.2rem;
+        left: 0.2rem;
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      input {
+        background: transparent;
+        border: 0;
+        -webkit-appearance: none;
+        border-radius: 0;
+        // padding: 12px 5px 12px 0;
+        color: #fff;
+        height: 47px;
+        caret-color: #fff;
+        outline: none;
+        font-size: 0.325rem;
+        padding-left: 0.85rem;
+        line-height: 0.7375rem;
+        height: 0.7375rem;
+      }
+    }
+    .remember {
+      margin: 0.275rem 0;
+      .el-checkbox__inner {
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      .el-checkbox__label {
+        font-size: 0.325rem;
+        font-weight: 300;
+      }
+      .el-checkbox__inner::after {
+        top: 0.07rem;
+        width: 0.0625rem;
+        left: 0.1125rem;
+      }
+      .el-checkbox {
+        color: #fff;
+      }
+    }
+    .submitBox {
+      width: 6.85rem;
+      // height: 0.7375rem;
+      opacity: 1;
+      background: #00e1eb;
+      color: #001a2b;
+      font-size: 0.45rem;
+      text-align: center;
+      // line-height: 0.7375rem;
+      cursor: pointer;
+    }
+  }
+}
+</style>

+ 285 - 0
.history/src/views/login_20211209143445.vue

@@ -0,0 +1,285 @@
+<template>
+  <div class="loginBox">
+    <div class="loginInnerBox">
+      <h2 class="bigTit">智慧用电监控平台</h2>
+      <p class="loginTitle">用户登录</p>
+
+      <el-form
+        :label-position="labelPosition"
+        :model="loginForm"
+        :rules="rules"
+        ref="loginForm"
+        class="demo-loginForm"
+      >
+        <el-form-item prop="username" class="oneSec">
+          <img class="icon" src="../assets/images/userIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.username"
+            max="6"
+            placeholder="请输入登录ID"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item prop="password" class="oneSec">
+          <img class="icon" src="../assets/images/passwordIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            placeholder="请输入密码"
+            maxlength="9"
+            auto-complete="new-password"
+            clearable
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+        <div class="remember">
+          <el-checkbox label="记住密码" v-model="isChecked"></el-checkbox>
+        </div>
+        <el-form-item>
+          <el-button @click="submitForm" class="submitBox">登录</el-button>
+          <!-- <el-button @click="resetForm">重置</el-button> -->
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import * as api from "../api/login/user.js";
+import { ElMessage } from "element-plus";
+import { setToken } from '@/utils/auth'
+export default {
+  data() {
+    return {
+      labelPosition: "right",
+
+      loginForm: {
+        username: "",
+        password: "",
+      },
+
+      rules: {
+        username: [
+          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
+          { required: true, message: "请输入用户名", trigger: "blur" },
+          {
+            min: 3,
+            max: 6,
+            message: "用户名长度在 3 到 6 个字符",
+            trigger: "blur",
+          },
+        ],
+        password: [
+          { required: true, message: "请输密码", trigger: "blur" },
+          {
+            min: 3,
+            max: 9,
+            message: "密码长度在 3 到 9 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+
+      isChecked: true, // 记住密码
+    };
+  },
+  mounted() {
+    this.getCookie();
+    this.loginFree();
+  },
+
+  methods: {
+    loginFree() {
+      this.login_api({
+        username: "admin",
+        password: "admin123",
+      });
+      sessionStorage.setItem("userInfo", "admin");
+    },
+    //登录数据对接
+    login_api(query = {}) {
+      api.login_api(query).then((requset) => {
+        if (requset.status === "SUCCESS") {
+          sessionStorage.setItem("assToken", requset.data);
+          this.$router.push({ path: "/home" });
+        } else {
+          ElMessage.error(requset.msg);
+        }
+      });
+    },
+
+    submitForm() {
+      // ref 用在组件中,就表示当前组件  通过 $refs.xxx可以拿到所有ref的集合
+      // this.$refs.loginForm  //当前的表单对象
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          //valid成功为ture,失败为false
+          //发送请求 ,调用登录接口
+
+          this.login_api({
+            name: this.loginForm.username,
+            password: this.loginForm.password,
+          });
+          sessionStorage.setItem("userInfo", this.loginForm.username);
+          // alert('submit!');
+        } else {
+          console.log("校验失败");
+          return false;
+        }
+      });
+
+      if (this.isChecked) {
+        // 记住密码
+        this.setCookie(this.loginForm.username, this.loginForm.password, 30); // 保存期限为30天
+      } else {
+        this.clearCookie(); // 清空 Cookie
+      }
+    },
+
+    // 设置Cookie
+    setCookie(username, password, exdays) {
+      // 用户名, 密码, 保存天数
+      let exdate = new Date(); // 获取时间
+      exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
+      // 字符串拼接cookie
+      window.document.cookie =
+        "userName=" + username + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "userPwd=" + password + ";path=/;expires=" + exdate.toGMTString();
+    },
+    // 读取Cookie
+    getCookie() {
+      // console.log(document.cookie);
+      if (document.cookie.length > 0) {
+        let arr = document.cookie.split("; "); // 这里显示的格式需要切割一下自己可输出看下
+        for (let i = 0; i < arr.length; i++) {
+          let arr2 = arr[i].split("="); // 再次切割
+          // 判断查找相对应的值
+          if (arr2[0] == "userName") {
+            this.loginForm.usernameText = arr2[1]; // 保存到保存数据的地方
+          } else if (arr2[0] == "userPwd") {
+            this.loginForm.passwordText = arr2[1];
+          }
+        }
+      }
+    },
+    // 清除Cookie
+    clearCookie() {
+      this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
+    },
+    // resetForm() {
+    //   //表单重置
+    //   this.$refs.loginForm.resetFields();
+    // },
+  },
+};
+</script>
+
+<style lang="scss">
+.bigTit {
+  position: absolute;
+  top: -90px;
+  left: 7px;
+  text-align: center;
+  width: 100%;
+  color: #00e1eb;
+  font-size: 0.625rem;
+
+  //   margin-left:-0.775rem;
+  font-family: PangMenZhengDao Regular, PangMenZhengDao Regular-Regular;
+  font-weight: bold;
+  letter-spacing: 17px;
+}
+.loginBox {
+  background-image: url(../assets/images/login-bg.png) !important;
+  background-repeat: no-repeat;
+  background-size: cover;
+  width: 100%;
+  height: 100vh;
+  min-width: 1024px;
+  min-height: 600px;
+  background-position: center center;
+  display: block;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: red;
+
+  .loginInnerBox {
+    position: relative;
+    width: 8.3875rem;
+    height: 5.8rem;
+    background-image: url(../assets/images/loginIn-bg.png) !important;
+    background-size: cover;
+    padding: 0.45rem 0.775rem;
+    // text-align: center;
+    .loginTitle {
+      font-size: 0.45rem;
+      color: #00e1eb;
+      text-align: center;
+      letter-spacing: 12px;
+    }
+    .oneSec {
+      text-align: left;
+      width: 6.85rem;
+      height: 0.7375rem;
+      line-height: 0.7375rem;
+      background: rgba(11, 161, 248, 0.4);
+      border: 1px solid #0ba1f8;
+      margin-top: 0.4875rem;
+      position: relative;
+      .icon {
+        position: absolute;
+        top: 0.2rem;
+        left: 0.2rem;
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      input {
+        background: transparent;
+        border: 0;
+        -webkit-appearance: none;
+        border-radius: 0;
+        // padding: 12px 5px 12px 0;
+        color: #fff;
+        height: 47px;
+        caret-color: #fff;
+        outline: none;
+        font-size: 0.325rem;
+        padding-left: 0.85rem;
+        line-height: 0.7375rem;
+        height: 0.7375rem;
+      }
+    }
+    .remember {
+      margin: 0.275rem 0;
+      .el-checkbox__inner {
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      .el-checkbox__label {
+        font-size: 0.325rem;
+        font-weight: 300;
+      }
+      .el-checkbox__inner::after {
+        top: 0.07rem;
+        width: 0.0625rem;
+        left: 0.1125rem;
+      }
+      .el-checkbox {
+        color: #fff;
+      }
+    }
+    .submitBox {
+      width: 6.85rem;
+      // height: 0.7375rem;
+      opacity: 1;
+      background: #00e1eb;
+      color: #001a2b;
+      font-size: 0.45rem;
+      text-align: center;
+      // line-height: 0.7375rem;
+      cursor: pointer;
+    }
+  }
+}
+</style>

+ 285 - 0
.history/src/views/login_20211209143516.vue

@@ -0,0 +1,285 @@
+<template>
+  <div class="loginBox">
+    <div class="loginInnerBox">
+      <h2 class="bigTit">智慧用电监控平台</h2>
+      <p class="loginTitle">用户登录</p>
+
+      <el-form
+        :label-position="labelPosition"
+        :model="loginForm"
+        :rules="rules"
+        ref="loginForm"
+        class="demo-loginForm"
+      >
+        <el-form-item prop="username" class="oneSec">
+          <img class="icon" src="../assets/images/userIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.username"
+            max="6"
+            placeholder="请输入登录ID"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item prop="password" class="oneSec">
+          <img class="icon" src="../assets/images/passwordIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            placeholder="请输入密码"
+            maxlength="9"
+            auto-complete="new-password"
+            clearable
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+        <div class="remember">
+          <el-checkbox label="记住密码" v-model="isChecked"></el-checkbox>
+        </div>
+        <el-form-item>
+          <el-button @click="submitForm" class="submitBox">登录</el-button>
+          <!-- <el-button @click="resetForm">重置</el-button> -->
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import * as api from "../api/login/user.js";
+import { ElMessage } from "element-plus";
+import { setToken } from "@/utils/auth";
+export default {
+  data() {
+    return {
+      labelPosition: "right",
+
+      loginForm: {
+        username: "",
+        password: "",
+      },
+
+      rules: {
+        username: [
+          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
+          { required: true, message: "请输入用户名", trigger: "blur" },
+          {
+            min: 3,
+            max: 6,
+            message: "用户名长度在 3 到 6 个字符",
+            trigger: "blur",
+          },
+        ],
+        password: [
+          { required: true, message: "请输密码", trigger: "blur" },
+          {
+            min: 3,
+            max: 9,
+            message: "密码长度在 3 到 9 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+
+      isChecked: true, // 记住密码
+    };
+  },
+  mounted() {
+    this.getCookie();
+    this.loginFree();
+  },
+
+  methods: {
+    loginFree() {
+      this.login_api({
+        username: "admin",
+        password: "admin123",
+      });
+      sessionStorage.setItem("userInfo", "admin");
+    },
+    //登录数据对接
+    login_api(query = {}) {
+      api.login_api(query).then((requset) => {
+        if (requset.status === "SUCCESS") {
+          setToken(requset.data);
+          this.$router.push({ path: "/home" });
+        } else {
+          ElMessage.error(requset.msg);
+        }
+      });
+    },
+
+    submitForm() {
+      // ref 用在组件中,就表示当前组件  通过 $refs.xxx可以拿到所有ref的集合
+      // this.$refs.loginForm  //当前的表单对象
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          //valid成功为ture,失败为false
+          //发送请求 ,调用登录接口
+
+          this.login_api({
+            name: this.loginForm.username,
+            password: this.loginForm.password,
+          });
+          sessionStorage.setItem("userInfo", this.loginForm.username);
+          // alert('submit!');
+        } else {
+          console.log("校验失败");
+          return false;
+        }
+      });
+
+      if (this.isChecked) {
+        // 记住密码
+        this.setCookie(this.loginForm.username, this.loginForm.password, 30); // 保存期限为30天
+      } else {
+        this.clearCookie(); // 清空 Cookie
+      }
+    },
+
+    // 设置Cookie
+    setCookie(username, password, exdays) {
+      // 用户名, 密码, 保存天数
+      let exdate = new Date(); // 获取时间
+      exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
+      // 字符串拼接cookie
+      window.document.cookie =
+        "userName=" + username + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "userPwd=" + password + ";path=/;expires=" + exdate.toGMTString();
+    },
+    // 读取Cookie
+    getCookie() {
+      // console.log(document.cookie);
+      if (document.cookie.length > 0) {
+        let arr = document.cookie.split("; "); // 这里显示的格式需要切割一下自己可输出看下
+        for (let i = 0; i < arr.length; i++) {
+          let arr2 = arr[i].split("="); // 再次切割
+          // 判断查找相对应的值
+          if (arr2[0] == "userName") {
+            this.loginForm.usernameText = arr2[1]; // 保存到保存数据的地方
+          } else if (arr2[0] == "userPwd") {
+            this.loginForm.passwordText = arr2[1];
+          }
+        }
+      }
+    },
+    // 清除Cookie
+    clearCookie() {
+      this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
+    },
+    // resetForm() {
+    //   //表单重置
+    //   this.$refs.loginForm.resetFields();
+    // },
+  },
+};
+</script>
+
+<style lang="scss">
+.bigTit {
+  position: absolute;
+  top: -90px;
+  left: 7px;
+  text-align: center;
+  width: 100%;
+  color: #00e1eb;
+  font-size: 0.625rem;
+
+  //   margin-left:-0.775rem;
+  font-family: PangMenZhengDao Regular, PangMenZhengDao Regular-Regular;
+  font-weight: bold;
+  letter-spacing: 17px;
+}
+.loginBox {
+  background-image: url(../assets/images/login-bg.png) !important;
+  background-repeat: no-repeat;
+  background-size: cover;
+  width: 100%;
+  height: 100vh;
+  min-width: 1024px;
+  min-height: 600px;
+  background-position: center center;
+  display: block;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: red;
+
+  .loginInnerBox {
+    position: relative;
+    width: 8.3875rem;
+    height: 5.8rem;
+    background-image: url(../assets/images/loginIn-bg.png) !important;
+    background-size: cover;
+    padding: 0.45rem 0.775rem;
+    // text-align: center;
+    .loginTitle {
+      font-size: 0.45rem;
+      color: #00e1eb;
+      text-align: center;
+      letter-spacing: 12px;
+    }
+    .oneSec {
+      text-align: left;
+      width: 6.85rem;
+      height: 0.7375rem;
+      line-height: 0.7375rem;
+      background: rgba(11, 161, 248, 0.4);
+      border: 1px solid #0ba1f8;
+      margin-top: 0.4875rem;
+      position: relative;
+      .icon {
+        position: absolute;
+        top: 0.2rem;
+        left: 0.2rem;
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      input {
+        background: transparent;
+        border: 0;
+        -webkit-appearance: none;
+        border-radius: 0;
+        // padding: 12px 5px 12px 0;
+        color: #fff;
+        height: 47px;
+        caret-color: #fff;
+        outline: none;
+        font-size: 0.325rem;
+        padding-left: 0.85rem;
+        line-height: 0.7375rem;
+        height: 0.7375rem;
+      }
+    }
+    .remember {
+      margin: 0.275rem 0;
+      .el-checkbox__inner {
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      .el-checkbox__label {
+        font-size: 0.325rem;
+        font-weight: 300;
+      }
+      .el-checkbox__inner::after {
+        top: 0.07rem;
+        width: 0.0625rem;
+        left: 0.1125rem;
+      }
+      .el-checkbox {
+        color: #fff;
+      }
+    }
+    .submitBox {
+      width: 6.85rem;
+      // height: 0.7375rem;
+      opacity: 1;
+      background: #00e1eb;
+      color: #001a2b;
+      font-size: 0.45rem;
+      text-align: center;
+      // line-height: 0.7375rem;
+      cursor: pointer;
+    }
+  }
+}
+</style>

+ 285 - 0
.history/src/views/login_20211209143536.vue

@@ -0,0 +1,285 @@
+<template>
+  <div class="loginBox">
+    <div class="loginInnerBox">
+      <h2 class="bigTit">智慧用电监控平台</h2>
+      <p class="loginTitle">用户登录</p>
+
+      <el-form
+        :label-position="labelPosition"
+        :model="loginForm"
+        :rules="rules"
+        ref="loginForm"
+        class="demo-loginForm"
+      >
+        <el-form-item prop="username" class="oneSec">
+          <img class="icon" src="../assets/images/userIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.username"
+            max="6"
+            placeholder="请输入登录ID"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item prop="password" class="oneSec">
+          <img class="icon" src="../assets/images/passwordIcon.png" alt="" />
+          <el-input
+            v-model="loginForm.password"
+            type="password"
+            placeholder="请输入密码"
+            maxlength="9"
+            auto-complete="new-password"
+            clearable
+            autocomplete="off"
+          ></el-input>
+        </el-form-item>
+        <div class="remember">
+          <el-checkbox label="记住密码" v-model="isChecked"></el-checkbox>
+        </div>
+        <el-form-item>
+          <el-button @click="submitForm" class="submitBox">登录</el-button>
+          <!-- <el-button @click="resetForm">重置</el-button> -->
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import * as api from "../api/login/user.js";
+import { ElMessage } from "element-plus";
+import { setToken } from "@/utils/auth";
+export default {
+  data() {
+    return {
+      labelPosition: "right",
+
+      loginForm: {
+        username: "",
+        password: "",
+      },
+
+      rules: {
+        username: [
+          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
+          { required: true, message: "请输入用户名", trigger: "blur" },
+          {
+            min: 3,
+            max: 6,
+            message: "用户名长度在 3 到 6 个字符",
+            trigger: "blur",
+          },
+        ],
+        password: [
+          { required: true, message: "请输密码", trigger: "blur" },
+          {
+            min: 3,
+            max: 9,
+            message: "密码长度在 3 到 9 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+
+      isChecked: true, // 记住密码
+    };
+  },
+  mounted() {
+    this.getCookie();
+    this.loginFree();
+  },
+
+  methods: {
+    loginFree() {
+      this.login_api({
+        username: "admin",
+        password: "admin123",
+      });
+      sessionStorage.setItem("userInfo", "admin");
+    },
+    //登录数据对接
+    login_api(query = {}) {
+      api.login_api(query).then((requset) => {
+        if (requset.status === "SUCCESS") {
+          setToken(requset.data);
+          this.$router.push({ path: "/home" });
+        } else {
+          ElMessage.error(requset.msg);
+        }
+      });
+    },
+
+    submitForm() {
+      // ref 用在组件中,就表示当前组件  通过 $refs.xxx可以拿到所有ref的集合
+      // this.$refs.loginForm  //当前的表单对象
+      this.$refs.loginForm.validate((valid) => {
+        if (valid) {
+          //valid成功为ture,失败为false
+          //发送请求 ,调用登录接口
+
+          this.login_api({
+            name: this.loginForm.username,
+            password: this.loginForm.password,
+          });
+          sessionStorage.setItem("userInfo", this.loginForm.username);
+          // alert('submit!');
+        } else {
+          console.log("校验失败");
+          return false;
+        }
+      });
+
+      if (this.isChecked) {
+        // 记住密码
+        this.setCookie(this.loginForm.username, this.loginForm.password, 30); // 保存期限为30天
+      } else {
+        this.clearCookie(); // 清空 Cookie
+      }
+    },
+
+    // 设置Cookie
+    setCookie(username, password, exdays) {
+      // 用户名, 密码, 保存天数
+      let exdate = new Date(); // 获取时间
+      exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays);
+      // 字符串拼接cookie
+      window.document.cookie =
+        "userName=" + username + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "userPwd=" + password + ";path=/;expires=" + exdate.toGMTString();
+    },
+    // 读取Cookie
+    getCookie() {
+      // console.log(document.cookie);
+      if (document.cookie.length > 0) {
+        let arr = document.cookie.split("; "); // 这里显示的格式需要切割一下自己可输出看下
+        for (let i = 0; i < arr.length; i++) {
+          let arr2 = arr[i].split("="); // 再次切割
+          // 判断查找相对应的值
+          if (arr2[0] == "userName") {
+            this.loginForm.usernameText = arr2[1]; // 保存到保存数据的地方
+          } else if (arr2[0] == "userPwd") {
+            this.loginForm.passwordText = arr2[1];
+          }
+        }
+      }
+    },
+    // 清除Cookie
+    clearCookie() {
+      this.setCookie("", "", -1); // 修改2值都为空,天数为负1天就好了
+    },
+    // resetForm() {
+    //   //表单重置
+    //   this.$refs.loginForm.resetFields();
+    // },
+  },
+};
+</script>
+
+<style lang="scss">
+.bigTit {
+  position: absolute;
+  top: -90px;
+  left: 7px;
+  text-align: center;
+  width: 100%;
+  color: #00e1eb;
+  font-size: 0.625rem;
+
+  //   margin-left:-0.775rem;
+  font-family: PangMenZhengDao Regular, PangMenZhengDao Regular-Regular;
+  font-weight: bold;
+  letter-spacing: 17px;
+}
+.loginBox {
+  background-image: url(../assets/images/login-bg.png) !important;
+  background-repeat: no-repeat;
+  background-size: cover;
+  width: 100%;
+  height: 100vh;
+  min-width: 1024px;
+  min-height: 600px;
+  background-position: center center;
+  display: block;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: red;
+
+  .loginInnerBox {
+    position: relative;
+    width: 8.3875rem;
+    height: 5.8rem;
+    background-image: url(../assets/images/loginIn-bg.png) !important;
+    background-size: cover;
+    padding: 0.45rem 0.775rem;
+    // text-align: center;
+    .loginTitle {
+      font-size: 0.45rem;
+      color: #00e1eb;
+      text-align: center;
+      letter-spacing: 12px;
+    }
+    .oneSec {
+      text-align: left;
+      width: 6.85rem;
+      height: 0.7375rem;
+      line-height: 0.7375rem;
+      background: rgba(11, 161, 248, 0.4);
+      border: 1px solid #0ba1f8;
+      margin-top: 0.4875rem;
+      position: relative;
+      .icon {
+        position: absolute;
+        top: 0.2rem;
+        left: 0.2rem;
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      input {
+        background: transparent;
+        border: 0;
+        -webkit-appearance: none;
+        border-radius: 0;
+        // padding: 12px 5px 12px 0;
+        color: #fff;
+        height: 47px;
+        caret-color: #fff;
+        outline: none;
+        font-size: 0.325rem;
+        padding-left: 0.85rem;
+        line-height: 0.7375rem;
+        height: 0.7375rem;
+      }
+    }
+    .remember {
+      margin: 0.275rem 0;
+      .el-checkbox__inner {
+        width: 0.3rem;
+        height: 0.3rem;
+      }
+      .el-checkbox__label {
+        font-size: 0.325rem;
+        font-weight: 300;
+      }
+      .el-checkbox__inner::after {
+        top: 0.07rem;
+        width: 0.0625rem;
+        left: 0.1125rem;
+      }
+      .el-checkbox {
+        color: #fff;
+      }
+    }
+    .submitBox {
+      width: 6.85rem;
+      // height: 0.7375rem;
+      opacity: 1;
+      background: #00e1eb;
+      color: #001a2b;
+      font-size: 0.45rem;
+      text-align: center;
+      // line-height: 0.7375rem;
+      cursor: pointer;
+    }
+  }
+}
+</style>

BIN
dist.zip


BIN
dist1.zip


+ 2 - 0
src/main.js

@@ -21,6 +21,7 @@ import 'echarts/lib/component/tooltip';
 import 'echarts/lib/component/title';
 import 'echarts/lib/component/legend';
 import { ElMessage } from "element-plus";
+import { removeToken } from './utils/auth';
 
 const app = createApp(App);
 
@@ -41,6 +42,7 @@ router.beforeEach((to, from, next) => {
 
     //如果目标路由为登陆时,恢复用户原始状态
     if (to.path === '/') {
+        removeToken()
         sessionStorage.removeItem("userInfo");
         document.getElementById('routers').style.display = "none"
     } else {

+ 1 - 0
src/store/index.js

@@ -2,6 +2,7 @@ import { createStore } from 'vuex'
 
 export default createStore({
     state: {
+        assToken: '',
         query: null,
         siteId: 1, //公共api请求参数->siteId
         Time_Data: [], //公共api请求参数->Time_Data

+ 17 - 14
src/utils/request.js

@@ -8,26 +8,29 @@ import qs from 'qs'
 
 let baseURL = window.PLATFROM_CONFIG.baseUrl
 const service = axios.create({
-        baseURL: baseURL,
-        // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
+        // baseURL: baseURL,
+        baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
         withCredentials: true, // send cookies when cross-domain requests
         timeout: 5000, // request timeout
         headers: {
-            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
+            'Content-Type': 'application/json;charset=UTF-8',
         },
     })
     // request interceptor
 service.interceptors.request.use(
     config => {
 
-        config.data = qs.stringify(config.data);
-        config.headers.token = getToken()
+        config.headers.accessToken = getToken()
 
         if (
             config.data &&
             config.headers['Content-Type'] ===
             'application/x-www-form-urlencoded;charset=UTF-8'
-        )
+        ) {
+            config.data = qs.stringify(config.data);
+        }
+
+
         // do something before request is sent
 
         // if (store.getters.token) {
@@ -37,15 +40,15 @@ service.interceptors.request.use(
         //     config.headers['X-Token'] = getToken()
         // }
 
-            if (config.method == 'get') {
-                let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
-                let obj_val = '';
-                for (let k in config.data) {
-                    obj_val += k + "=" + config.data[k] + "&";
-                }
-                config.url += ext_str + obj_val;
+        if (config.method == 'get') {
+            let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
+            let obj_val = '';
+            for (let k in config.data) {
+                obj_val += k + "=" + config.data[k] + "&";
             }
-            // return config;
+            config.url += ext_str + obj_val;
+        }
+        // return config;
 
         return config
     },

+ 2 - 4
src/views/login.vue

@@ -46,11 +46,10 @@
 <script>
 import * as api from "../api/login/user.js";
 import { ElMessage } from "element-plus";
+import { setToken } from "@/utils/auth";
 export default {
   data() {
     return {
-      loginData: "",
-
       labelPosition: "right",
 
       loginForm: {
@@ -100,8 +99,7 @@ export default {
     login_api(query = {}) {
       api.login_api(query).then((requset) => {
         if (requset.status === "SUCCESS") {
-          this.loginData = requset.data;
-          console.log(this.loginData);
+          setToken(requset.data);
           this.$router.push({ path: "/home" });
         } else {
           ElMessage.error(requset.msg);