Эх сурвалжийг харах

1、修改登录接口;
2、另外封装axios(目前未使用);
3、区分测试环境与线上环境(目前未使用);
4、车险录单-保险公司选择永诚保险不填写意外险信息,点击保费计算不调用yongcheng报价接口问题

lihongxiao 3 жил өмнө
parent
commit
4effd740e6

+ 4 - 1
config/dev.env.js

@@ -3,5 +3,8 @@ const merge = require('webpack-merge')
 const prodEnv = require('./prod.env')
 
 module.exports = merge(prodEnv, {
-  NODE_ENV: '"development"'
+  NODE_ENV: '"development"',
+  // BASE_URL: '"http://39.98.239.48/web-api"',
+  BASE_URL: '"http://192.168.0.111:9001/"' //测试服务器
+
 })

+ 12 - 2
config/index.js

@@ -6,11 +6,21 @@ const path = require('path')
 
 module.exports = {
   dev: {
-
     // Paths
     assetsSubDirectory: 'static',
     assetsPublicPath: '/',
-    proxyTable: {},
+    proxyTable: {            //解决跨域问题
+      "/api":{        //设置第一代理
+    target: 'http://39.98.239.48/web-api',    
+    secure: false,
+    //secure:false,                    //如果是https接口,需要配置这个参数
+    ws:true,
+    changeOrigin: true,            //如果接口跨域需要配置这个参数
+    pathRewrite: {
+        '^/api': '/'        
+    }
+  }
+},
     // Various Dev Server settings
     host: '127.0.0.1', // can be overwritten by process.env.HOST
     port: 8090, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined

+ 2 - 1
config/prod.env.js

@@ -1,4 +1,5 @@
 'use strict'
 module.exports = {
-  NODE_ENV: '"production"'
+  NODE_ENV: '"production"',
+  BASE_URL:'"http://39.98.239.48/web-api"'
 }

+ 24 - 0
src/api/user.js

@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+
+export function login(data) {
+  return request({
+    url: '/login',
+    method: 'post',
+    data
+  })
+}
+
+export function findNavTree(data) {
+  return request({
+    url: '/menu/findNavTree',
+    method: 'post',
+    data
+  })
+}
+
+export function logout() {
+  return request({
+    url: '/vue-element-admin/user/logout',
+    method: 'post'
+  })
+}

+ 4 - 2
src/config/global.js

@@ -13,8 +13,10 @@
 // export const h5BaseUrl = 'http://test.baoxianzhanggui.com:8091'  // h5测试
 // export const baseUrl = 'http://www.baoxianzhanggui.com:8080'   
 // 新服务器
-// export const baseUrl = 'http://39.98.239.48/web-api' //测试服务器
-export const baseUrl = 'http://192.168.0.111:8080' //测试服务器
+export const baseUrl = 'http://39.98.239.48/web-api' //测试服务器
+// export const baseUrl = 'http://192.168.0.111:8080' //测试服务器
+// export const baseUrl = 'http://192.168.0.111:9001' //测试服务器
+
 
 export const h5BaseUrl = 'http://39.98.239.48/h5'  //h5测试
 

+ 13 - 3
src/http/axios.js

@@ -12,7 +12,7 @@ export default function $axios(options) {
       baseURL: config.baseUrl,
       headers: config.headers,
       timeout: config.timeout,
-      withCredentials: config.withCredentials
+      // withCredentials: config.withCredentials
 
     })
     // request 拦截器
@@ -27,7 +27,8 @@ export default function $axios(options) {
         // console.log('准备发送请求...')
         // 2. 带上token
         if (token) {
-          config.headers.token = token
+          // config.headers.token = token
+          config.headers.Authorization = 'Bearer '+token
         } else {
           // 重定向到登录页面
           router.push('/login')
@@ -78,7 +79,16 @@ export default function $axios(options) {
         } else {
           data = response.data
         }
-
+        if(response.status==401){
+          this.$message({
+            message: '登录信息已过期,请重新登录!!!',
+            type: 'error',
+            duration: 2000
+          })
+          Cookies.remove('token')
+          router.push('/login')
+        }
+        
         // 根据返回的code值来做不同的处理
         switch (data.rc) {
           case 1:

+ 1 - 1
src/http/config.js

@@ -7,7 +7,7 @@ export default {
   baseUrl: baseUrl,
   // 请求头信息
   headers: {
-    // 'Content-Type': 'application/json;charset=UTF-8'
+    // "Content-Type": "application/x-www-form-urlencoded",
   },
   // 参数
   data: {},

+ 1 - 1
src/http/moudules/dept.js

@@ -73,7 +73,7 @@ export const batchDelete = (data) => {
 export const findDeptTree = () => {
     return axios({
         url: '/dept/findTree',
-        method: 'get'
+        method: 'get',
     })
 }
 

+ 2 - 1
src/http/moudules/menu.js

@@ -25,7 +25,8 @@ export const findNavTree = (params) => {
     return axios({
         url: '/menu/findNavTree',
         method: 'get',
-        params
+        params,
+     
     })
 }
 // 查找导航菜单树

+ 1 - 0
src/main.js

@@ -40,6 +40,7 @@ Vue.use(api)
 Vue.use(router)
 Vue.use(dateFormat)//日期组件格式化
 Vue.prototype.global = global
+
 new Vue({
   el: '#app',
   i18n,

+ 4 - 1
src/router/index.js

@@ -12,6 +12,9 @@ import Generator from '@/views/Generator/Generator'
 import api from '@/http/api'
 import store from '@/store'
 import { getIFramePath, getIFrameUrl } from '@/utils/iframe'
+import { getToken } from '@/utils/auth'
+import axios from 'axios'
+import { findNavTree } from '@/api/user'
 
 Vue.use(Router)
 
@@ -76,7 +79,7 @@ const router = new Router({
 router.beforeEach((to, from, next) => {
   // 登录界面登录成功之后,会把用户信息保存在会话
   // 存在时间为会话生命周期,页面关闭即失效。
-  let token = Cookies.get('token')
+  let token =getToken()
   //let userName = sessionStorage.getItem('user')
   let userName = Cookies.get('user')
   if (to.path === '/login') {

+ 54 - 1
src/store/modules/user.js

@@ -1,6 +1,9 @@
+import { getToken, setToken, removeToken } from '@/utils/auth'
+import { login } from '@/api/user'
 export default {
     state: {
         perms: [],  // 用户权限标识集合
+        token: getToken(),
     },
     getters: {
    
@@ -8,8 +11,58 @@ export default {
     mutations: {
         setPerms(state, perms){  // 用户权限标识集合
             state.perms = perms;
-        }
+        },
+        SET_TOKEN: (state, token) => {
+            state.token = token
+          },
     },
     actions: {
+        login({ commit }, userInfo) {
+            return new Promise((resolve, reject) => {
+              login(userInfo).then(response => {
+                const { data } = response
+                commit('SET_TOKEN', data)
+                setToken(data)
+                resolve()
+              }).catch(res => {
+                reject(res)
+              })
+            })
+          },
+          getInfo({ commit, state }) {
+            return new Promise((resolve, reject) => {
+              getInfo(state.token).then(response => {
+                const { data } = response
+                if (!data) {
+                  reject('Verification failed, please Login again.')
+                }
+                const { roles, name, avatar, introduction } = data
+                if (!roles || roles.length <= 0) {
+                  reject('getInfo: roles must be a non-null array!')
+                }
+                commit('SET_ROLES', roles)
+                commit('SET_NAME', name)
+                commit('SET_AVATAR', avatar)
+                commit('SET_INTRODUCTION', introduction)
+                resolve(data)
+              }).catch(error => {
+                reject(error)
+              })
+            })
+          },
+          logout({ commit, state, dispatch }) {
+            return new Promise((resolve, reject) => {
+              logout(state.token).then(() => {
+                commit('SET_TOKEN', '')
+                commit('SET_ROLES', [])
+                removeToken()
+                resolve()
+              }).catch(error => {
+                reject(error)
+              })
+            })
+          },
+      
+       
     }
 }

+ 15 - 0
src/utils/auth.js

@@ -0,0 +1,15 @@
+import Cookies from 'js-cookie'
+
+const TokenKey = 'token'
+
+export function getToken() {
+  return Cookies.get(TokenKey)
+}
+
+export function setToken(token) {
+  return Cookies.set(TokenKey, token)
+}
+
+export function removeToken() {
+  return Cookies.remove(TokenKey)
+}

+ 80 - 0
src/utils/request.js

@@ -0,0 +1,80 @@
+import axios from 'axios'
+import { MessageBox, Message } from 'element-ui'
+import store from '@/store'
+import { getToken } from '@/utils/auth'
+
+// create an axios instance
+const service = axios.create({
+  baseURL: process.env.BASE_URL, // url = base url + request url
+  // withCredentials: true, // send cookies when cross-domain requests
+  timeout: 50000 // request timeout
+})
+
+// request interceptor
+service.interceptors.request.use(
+  config => {
+    // 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['token'] = getToken()
+    }
+    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
+    if (res.code !== 200) {
+      Message({
+        message: res.msg || 'Error',
+        type: 'error',
+        duration: 5 * 1000
+      })
+      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+        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('resetToken').then(() => {
+            location.reload()
+          })
+        })
+      }
+      return Promise.reject(new Error(res.message || 'Error'))
+    } else {
+      return res
+    }
+  },
+  error => {
+    console.log('err' + error) // for debug
+    Message({
+      message: error.message,
+      type: 'error',
+      duration: 5 * 1000
+    })
+    return Promise.reject(error)
+  }
+)
+
+export default service

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 528 - 175
src/views/Letter/Letter.vue


+ 51 - 2
src/views/Login.vue

@@ -66,6 +66,8 @@ import { mapState } from 'vuex'
 import Cookies from "js-cookie"
 import ThemePicker from "@/components/ThemePicker"
 import LangSelector from "@/components/LangSelector"
+import { login } from '@/api/user'
+
 export default {
   name: 'Login',
   components: {
@@ -124,8 +126,26 @@ export default {
         password: this.loginForm.password,
         captcha: this.loginForm.captcha.toLowerCase()
       }
+            
+      // this.$store.dispatch('login', userInfo)
+      //     .then(() => {
+      //       if (this.rememberPassword) { //是否保存密码
+      //       Cookies.set('accountInfo', { 'account': this.loginForm.account, 'password': this.loginForm.password, })
+      //     } else {
+      //       Cookies.remove('accountInfo')
+      //     }
+      //     Cookies.set('user', userInfo.account) /
+      //     sessionStorage.setItem('user', userInfo.account) // 保存用户到本地会话
+      //     this.$store.commit('menuRouteLoaded', false) // 要求重新加载导航菜单
+      //     this.$router.push('/')
+      //     this.loading = false
+      //   })
+      //   .catch(() => {
+      //     this.loading = false
+      //   })
+    
       this.$api.login.login(userInfo).then((res) => {
-        if (res.msg != null) {
+        if (res.code != 200) {
           this.$message({
             message: res.msg,
             type: 'error',
@@ -137,7 +157,7 @@ export default {
           } else {
             Cookies.remove('accountInfo')
           }
-          Cookies.set('token', res.data.token, { expires: 1, }) // 放置token到Cookie
+          Cookies.set('token', res.data) // 放置token到Cookie
           Cookies.set('user', userInfo.account) // 放置token到Cookie
           sessionStorage.setItem('user', userInfo.account) // 保存用户到本地会话
           this.$store.commit('menuRouteLoaded', false) // 要求重新加载导航菜单
@@ -151,9 +171,38 @@ export default {
           duration: 2000
         })
       });
+
+      // this.$api.login.login(userInfo).then((res) => {
+      //   if (res.msg != null) {
+      //     this.$message({
+      //       message: res.msg,
+      //       type: 'error',
+      //       duration: 2000
+      //     })
+      //   } else {
+      //     if (this.rememberPassword) { //是否保存密码
+      //       Cookies.set('accountInfo', { 'account': this.loginForm.account, 'password': this.loginForm.password, })
+      //     } else {
+      //       Cookies.remove('accountInfo')
+      //     }
+      //     Cookies.set('token', res.data.token, { expires: 1, }) // 放置token到Cookie
+      //     Cookies.set('user', userInfo.account) // 放置token到Cookie
+      //     sessionStorage.setItem('user', userInfo.account) // 保存用户到本地会话
+      //     this.$store.commit('menuRouteLoaded', false) // 要求重新加载导航菜单
+      //     this.$router.push('/') // 登录成功,跳转到主页
+      //   }
+      //   this.loading = false
+      // }).catch((res) => {
+      //   this.$message({
+      //     message: res.message,
+      //     type: 'error',
+      //     duration: 2000
+      //   })
+      // });
     },
     refreshCaptcha() {
       this.loginForm.src = this.global.baseUrl + "/captcha.jpg?t=" + new Date().getTime();
+      // this.loginForm.src = process.env.BASE_URL + "/captcha.jpg?t=" + new Date().getTime();
     },
     reset() {
       this.$refs.loginForm.resetFields()

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно