2637309949@qq.com před 5 roky
rodič
revize
881394e0c7

+ 1 - 1
.env.development

@@ -2,7 +2,7 @@
 ENV = 'development'
 
 # base api
-VUE_APP_BASE_API = '/dev-api'
+VUE_APP_BASE_API = '/'
 
 # vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
 # to control whether the babel-plugin-dynamic-import-node plugin is enabled.

+ 1 - 1
.env.production

@@ -2,5 +2,5 @@
 ENV = 'production'
 
 # base api
-VUE_APP_BASE_API = '/prod-api'
+VUE_APP_BASE_API = '/'
 

+ 1 - 1
.env.staging

@@ -4,5 +4,5 @@ NODE_ENV = production
 ENV = 'staging'
 
 # base api
-VUE_APP_BASE_API = '/stage-api'
+VUE_APP_BASE_API = '/'
 

+ 5 - 5
mock/article.js

@@ -29,7 +29,7 @@ for (let i = 0; i < count; i++) {
 
 export default [
   {
-    url: '/vue-element-admin/article/list',
+    url: '/api/article/list',
     type: 'get',
     response: config => {
       const { importance, type, title, page = 1, limit = 20, sort } = config.query
@@ -58,7 +58,7 @@ export default [
   },
 
   {
-    url: '/vue-element-admin/article/detail',
+    url: '/api/article/detail',
     type: 'get',
     response: config => {
       const { id } = config.query
@@ -74,7 +74,7 @@ export default [
   },
 
   {
-    url: '/vue-element-admin/article/pv',
+    url: '/api/article/pv',
     type: 'get',
     response: _ => {
       return {
@@ -92,7 +92,7 @@ export default [
   },
 
   {
-    url: '/vue-element-admin/article/create',
+    url: '/api/article/create',
     type: 'post',
     response: _ => {
       return {
@@ -103,7 +103,7 @@ export default [
   },
 
   {
-    url: '/vue-element-admin/article/update',
+    url: '/api/article/update',
     type: 'post',
     response: _ => {
       return {

+ 2 - 2
mock/remote-search.js

@@ -13,7 +13,7 @@ NameList.push({ name: 'mock-Pan' })
 export default [
   // username search
   {
-    url: '/vue-element-admin/search/user',
+    url: '/api/search/user',
     type: 'get',
     response: config => {
       const { name } = config.query
@@ -30,7 +30,7 @@ export default [
 
   // transaction list
   {
-    url: '/vue-element-admin/transaction/list',
+    url: '/api/transaction/list',
     type: 'get',
     response: _ => {
       return {

+ 3 - 3
mock/user.js

@@ -26,7 +26,7 @@ const users = {
 export default [
   // user login
   {
-    url: '/vue-element-admin/user/login',
+    url: '/api/user/login',
     type: 'post',
     response: config => {
       const { username } = config.body
@@ -49,7 +49,7 @@ export default [
 
   // get user info
   {
-    url: '/vue-element-admin/user/info\.*',
+    url: '/api/user/info\.*',
     type: 'get',
     response: config => {
       const { token } = config.query
@@ -72,7 +72,7 @@ export default [
 
   // user logout
   {
-    url: '/vue-element-admin/user/logout',
+    url: '/api/user/logout',
     type: 'post',
     response: _ => {
       return {

+ 6 - 6
package.json

@@ -1,8 +1,8 @@
 {
-  "name": "vue-element-admin",
-  "version": "4.2.1",
-  "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features",
-  "author": "Pan <panfree23@gmail.com>",
+  "name": "dolphin-ui",
+  "version": "1.0.0",
+  "description": "Dolphin ui for dolphin framework",
+  "author": "Double <2637309949@qq.com>",
   "license": "MIT",
   "scripts": {
     "dev": "vue-cli-service serve --port 8081",
@@ -37,10 +37,10 @@
   ],
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/PanJiaChen/vue-element-admin.git"
+    "url": "git+https://github.com/2637309949/dolphin-ui.git"
   },
   "bugs": {
-    "url": "https://github.com/PanJiaChen/vue-element-admin/issues"
+    "url": "https://github.com/2637309949/dolphin-ui/issues"
   },
   "dependencies": {
     "axios": "0.18.1",

+ 12 - 0
public/domain.js

@@ -0,0 +1,12 @@
+window.Domain = {
+    "name": "127.0.0.1",
+    "full_name": "127.0.0.1",
+    "contact_name": null,
+    "contact_email": null,
+    "contact_mobile": null,
+    "login_url": "127.0.0.1",
+    "api_url": "http://127.0.0.1:8082",
+    "static_url": null,
+    "theme": "default",
+    "auth_mode": 1
+}

+ 1 - 0
public/index.html

@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <html>
   <head>
+    <script src="/domain.js"></script>
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="renderer" content="webkit">

+ 5 - 5
src/api/article.js

@@ -2,7 +2,7 @@ import request from '@/utils/request'
 
 export function fetchList(query) {
   return request({
-    url: '/vue-element-admin/article/list',
+    url: '/api/article/list',
     method: 'get',
     params: query
   })
@@ -10,7 +10,7 @@ export function fetchList(query) {
 
 export function fetchArticle(id) {
   return request({
-    url: '/vue-element-admin/article/detail',
+    url: '/api/article/detail',
     method: 'get',
     params: { id }
   })
@@ -18,7 +18,7 @@ export function fetchArticle(id) {
 
 export function fetchPv(pv) {
   return request({
-    url: '/vue-element-admin/article/pv',
+    url: '/api/article/pv',
     method: 'get',
     params: { pv }
   })
@@ -26,7 +26,7 @@ export function fetchPv(pv) {
 
 export function createArticle(data) {
   return request({
-    url: '/vue-element-admin/article/create',
+    url: '/api/article/create',
     method: 'post',
     data
   })
@@ -34,7 +34,7 @@ export function createArticle(data) {
 
 export function updateArticle(data) {
   return request({
-    url: '/vue-element-admin/article/update',
+    url: '/api/article/update',
     method: 'post',
     data
   })

+ 8 - 0
src/api/cas.js

@@ -0,0 +1,8 @@
+
+export function url(redirect, state) {
+  window.open(`${window.Domain.api_url}/api/sys/cas/url?redirect_uri=${encodeURIComponent(`${window.location.origin}${redirect}`)}&state=${state}`, true)
+}
+
+export function logout(redirect, state) {
+  window.open(`${window.Domain.api_url}/api/sys/cas/logout?redirect_uri=${encodeURIComponent(`${window.location.origin}${redirect}`)}&state=${state}`, true)
+}

+ 2 - 2
src/api/remote-search.js

@@ -2,7 +2,7 @@ import request from '@/utils/request'
 
 export function searchUser(name) {
   return request({
-    url: '/vue-element-admin/search/user',
+    url: '/api/search/user',
     method: 'get',
     params: { name }
   })
@@ -10,7 +10,7 @@ export function searchUser(name) {
 
 export function transactionList(query) {
   return request({
-    url: '/vue-element-admin/transaction/list',
+    url: '/api/transaction/list',
     method: 'get',
     params: query
   })

+ 5 - 5
src/api/role.js

@@ -2,21 +2,21 @@ import request from '@/utils/request'
 
 export function getRoutes() {
   return request({
-    url: '/vue-element-admin/routes',
+    url: '/api/routes',
     method: 'get'
   })
 }
 
 export function getRoles() {
   return request({
-    url: '/vue-element-admin/roles',
+    url: '/api/roles',
     method: 'get'
   })
 }
 
 export function addRole(data) {
   return request({
-    url: '/vue-element-admin/role',
+    url: '/api/role',
     method: 'post',
     data
   })
@@ -24,7 +24,7 @@ export function addRole(data) {
 
 export function updateRole(id, data) {
   return request({
-    url: `/vue-element-admin/role/${id}`,
+    url: `/api/role/${id}`,
     method: 'put',
     data
   })
@@ -32,7 +32,7 @@ export function updateRole(id, data) {
 
 export function deleteRole(id) {
   return request({
-    url: `/vue-element-admin/role/${id}`,
+    url: `/api/role/${id}`,
     method: 'delete'
   })
 }

+ 5 - 6
src/api/user.js

@@ -2,23 +2,22 @@ import request from '@/utils/request'
 
 export function login(data) {
   return request({
-    url: '/vue-element-admin/user/login',
+    url: '/api/user/login',
     method: 'post',
     data
   })
 }
 
-export function getInfo(token) {
+export function getInfo() {
   return request({
-    url: '/vue-element-admin/user/info',
-    method: 'get',
-    params: { token }
+    url: '/api/sys/cas/profile',
+    method: 'get'
   })
 }
 
 export function logout() {
   return request({
-    url: '/vue-element-admin/user/logout',
+    url: '/api/user/logout',
     method: 'post'
   })
 }

+ 4 - 2
src/layout/components/Navbar.vue

@@ -53,6 +53,7 @@ import ErrorLog from '@/components/ErrorLog'
 import Screenfull from '@/components/Screenfull'
 import SizeSelect from '@/components/SizeSelect'
 import Search from '@/components/HeaderSearch'
+import { logoutUrl } from '@/utils/auth' // get token from cookie
 
 export default {
   components: {
@@ -76,7 +77,8 @@ export default {
     },
     async logout() {
       await this.$store.dispatch('user/logout')
-      this.$router.push(`/login?redirect=${this.$route.fullPath}`)
+      logoutUrl(this.$route.fullPath, { $router: this.$router })
+      // this.$router.push(`/login?redirect=${this.$route.fullPath}`)
     }
   }
 }
@@ -147,7 +149,7 @@ export default {
       margin-right: 30px;
 
       .avatar-wrapper {
-        margin-top: 10px;
+        margin-top: 8px;
         position: relative;
 
         .user-avatar {

+ 5 - 4
src/permission.js

@@ -3,7 +3,7 @@ import store from './store'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress' // progress bar
 import 'nprogress/nprogress.css' // progress bar style
-import { getToken } from '@/utils/auth' // get token from cookie
+import { getToken, loginUrl } from '@/utils/auth' // get token from cookie
 import getPageTitle from '@/utils/get-page-title'
 
 NProgress.configure({ showSpinner: false }) // NProgress Configuration
@@ -19,7 +19,6 @@ router.beforeEach(async(to, from, next) => {
 
   // determine whether the user has logged in
   const hasToken = getToken()
-
   if (hasToken) {
     if (to.path === '/login') {
       // if is logged in, redirect to the home page
@@ -49,7 +48,8 @@ router.beforeEach(async(to, from, next) => {
           // remove token and go to login page to re-login
           await store.dispatch('user/resetToken')
           Message.error(error || 'Has Error')
-          next(`/login?redirect=${to.path}`)
+          loginUrl(to.path, { next })
+          // next(`/login?redirect=${to.path}`)
           NProgress.done()
         }
       }
@@ -62,7 +62,8 @@ router.beforeEach(async(to, from, next) => {
       next()
     } else {
       // other pages that do not have permission to access are redirected to the login page.
-      next(`/login?redirect=${to.path}`)
+      loginUrl(to.path, { next })
+      // next(`/login?redirect=${to.path}`)
       NProgress.done()
     }
   }

+ 15 - 9
src/store/modules/user.js

@@ -75,20 +75,26 @@ const actions = {
   // user logout
   logout({ commit, state, dispatch }) {
     return new Promise((resolve, reject) => {
-      logout(state.token).then(() => {
+      if (window.Domain.auth_mode === 1) {
         commit('SET_TOKEN', '')
         commit('SET_ROLES', [])
         removeToken()
         resetRouter()
-
-        // reset visited views and cached views
-        // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
-        dispatch('tagsView/delAllViews', null, { root: true })
-
         resolve()
-      }).catch(error => {
-        reject(error)
-      })
+      } else {
+        logout(state.token).then(() => {
+          commit('SET_TOKEN', '')
+          commit('SET_ROLES', [])
+          removeToken()
+          resetRouter()
+          // reset visited views and cached views
+          // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
+          dispatch('tagsView/delAllViews', null, { root: true })
+          resolve()
+        }).catch(error => {
+          reject(error)
+        })
+      }
     })
   },
 

+ 26 - 1
src/utils/auth.js

@@ -1,6 +1,7 @@
 import Cookies from 'js-cookie'
+import cas from '@/api/cas'
 
-const TokenKey = 'Admin-Token'
+const TokenKey = 'access_token'
 
 export function getToken() {
   return Cookies.get(TokenKey)
@@ -13,3 +14,27 @@ export function setToken(token) {
 export function removeToken() {
   return Cookies.remove(TokenKey)
 }
+
+export function loginUrl(redirect, { state = '', $router, next } = {}) {
+  if (window.Domain.auth_mode === 1) {
+    cas.url(redirect, state)
+  } else {
+    if (next) {
+      next(`/login?redirect=${redirect}&state=${state}`)
+    } else if ($router) {
+      $router.push(`/login?redirect=${redirect}&state=${state}`)
+    }
+  }
+}
+
+export function logoutUrl(redirect, { state = '', $router, next } = {}) {
+  if (window.Domain.auth_mode === 1) {
+    cas.logouts(redirect, state)
+  } else {
+    if (next) {
+      next(`/logout?redirect=${redirect}&state=${state}`)
+    } else if ($router) {
+      $router.push(`/logout?redirect=${redirect}&state=${state}`)
+    }
+  }
+}

+ 6 - 6
src/utils/request.js

@@ -5,9 +5,9 @@ import { getToken } from '@/utils/auth'
 
 // create an axios instance
 const service = axios.create({
-  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
+  baseURL: window.Domain.api_url, // url = base url + request url
   // withCredentials: true, // send cookies when cross-domain requests
-  timeout: 5000 // request timeout
+  timeout: 10000 // request timeout
 })
 
 // request interceptor
@@ -19,7 +19,7 @@ service.interceptors.request.use(
       // 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()
+      config.headers['Authorization'] = `Bearer ${getToken()}`
     }
     return config
   },
@@ -46,15 +46,15 @@ service.interceptors.response.use(
     const res = response.data
 
     // if the custom code is not 20000, it is judged as an error.
-    if (res.code !== 20000) {
+    if (res.code !== 200) {
       Message({
-        message: res.message || 'Error',
+        message: res.msg || '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) {
+      if (res.code === 401 || 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',

+ 10 - 5
src/views/dashboard/admin/components/TransactionTable.vue

@@ -21,7 +21,7 @@
 </template>
 
 <script>
-import { transactionList } from '@/api/remote-search'
+// import { transactionList } from '@/api/remote-search'
 
 export default {
   filters: {
@@ -38,7 +38,12 @@ export default {
   },
   data() {
     return {
-      list: null
+      list: [{
+        order_no: '1ebf3eE1-f6c6-39dc-a3Fd-d1AD57',
+        username: 'admin',
+        price: 14202.6,
+        status: 'success'
+      }]
     }
   },
   created() {
@@ -46,9 +51,9 @@ export default {
   },
   methods: {
     fetchData() {
-      transactionList().then(response => {
-        this.list = response.data.items.slice(0, 8)
-      })
+      // transactionList().then(response => {
+      //   this.list = response.data.items.slice(0, 8)
+      // })
     }
   }
 }