Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sup-server
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
sup-server
Commits
4c5dbe03
Commit
4c5dbe03
authored
Nov 11, 2022
by
huangjie122
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://47.105.106.177:66/root/sup-server
parents
f82abb44
b9b3cefe
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
403 additions
and
71 deletions
+403
-71
package-lock.json
dsk-srm-server/package-lock.json
+66
-28
package.json
dsk-srm-server/package.json
+1
-0
login.js
dsk-srm-server/src/api/login.js
+18
-0
index.js
dsk-srm-server/src/router/index.js
+14
-10
permission.js
dsk-srm-server/src/router/permission.js
+47
-0
index.js
dsk-srm-server/src/store/index.js
+6
-13
user-module.js
dsk-srm-server/src/store/modules/user-module.js
+96
-0
auth.js
dsk-srm-server/src/utils/auth.js
+31
-0
network.js
dsk-srm-server/src/utils/network.js
+109
-0
vue.config.js
dsk-srm-server/vue.config.js
+15
-20
No files found.
dsk-srm-server/package-lock.json
View file @
4c5dbe03
...
...
@@ -14949,29 +14949,6 @@
"webpack-merge"
:
"^5.7.3"
,
"webpack-virtual-modules"
:
"^0.4.2"
,
"whatwg-fetch"
:
"^3.6.2"
},
"dependencies"
:
{
"@vue/vue-loader-v15"
:
{
"version"
:
"npm:vue-loader@15.10.0"
,
"resolved"
:
"https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.0.tgz"
,
"integrity"
:
"sha512-VU6tuO8eKajrFeBzMssFUP9SvakEeeSi1BxdTH5o3+1yUyrldp8IERkSdXlMI2t4kxF2sqYUDsQY+WJBxzBmZg=="
,
"dev"
:
true
,
"requires"
:
{
"@vue/component-compiler-utils"
:
"^3.1.0"
,
"hash-sum"
:
"^1.0.2"
,
"loader-utils"
:
"^1.1.0"
,
"vue-hot-reload-api"
:
"^2.3.0"
,
"vue-style-loader"
:
"^4.1.0"
},
"dependencies"
:
{
"hash-sum"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz"
,
"integrity"
:
"sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA=="
,
"dev"
:
true
}
}
}
}
},
"@vue/cli-shared-utils"
:
{
...
...
@@ -15121,6 +15098,27 @@
}
}
},
"@vue/vue-loader-v15"
:
{
"version"
:
"npm:vue-loader@15.10.0"
,
"resolved"
:
"https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.0.tgz"
,
"integrity"
:
"sha512-VU6tuO8eKajrFeBzMssFUP9SvakEeeSi1BxdTH5o3+1yUyrldp8IERkSdXlMI2t4kxF2sqYUDsQY+WJBxzBmZg=="
,
"dev"
:
true
,
"requires"
:
{
"@vue/component-compiler-utils"
:
"^3.1.0"
,
"hash-sum"
:
"^1.0.2"
,
"loader-utils"
:
"^1.1.0"
,
"vue-hot-reload-api"
:
"^2.3.0"
,
"vue-style-loader"
:
"^4.1.0"
},
"dependencies"
:
{
"hash-sum"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz"
,
"integrity"
:
"sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA=="
,
"dev"
:
true
}
}
},
"@vue/web-component-wrapper"
:
{
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz"
,
...
...
@@ -15465,6 +15463,11 @@
"babel-runtime"
:
"6.x"
}
},
"asynckit"
:
{
"version"
:
"0.4.0"
,
"resolved"
:
"https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz"
,
"integrity"
:
"sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"at-least-node"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz"
,
...
...
@@ -15485,6 +15488,16 @@
"postcss-value-parser"
:
"^4.2.0"
}
},
"axios"
:
{
"version"
:
"1.1.3"
,
"resolved"
:
"https://registry.npmmirror.com/axios/-/axios-1.1.3.tgz"
,
"integrity"
:
"sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA=="
,
"requires"
:
{
"follow-redirects"
:
"^1.15.0"
,
"form-data"
:
"^4.0.0"
,
"proxy-from-env"
:
"^1.1.0"
}
},
"babel-helper-vue-jsx-merge-props"
:
{
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz"
,
...
...
@@ -16439,6 +16452,14 @@
"integrity"
:
"sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ=="
,
"dev"
:
true
},
"combined-stream"
:
{
"version"
:
"1.0.8"
,
"resolved"
:
"https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz"
,
"integrity"
:
"sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="
,
"requires"
:
{
"delayed-stream"
:
"~1.0.0"
}
},
"commander"
:
{
"version"
:
"8.3.0"
,
"resolved"
:
"https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
,
...
...
@@ -17201,6 +17222,11 @@
"object-keys"
:
"^1.1.1"
}
},
"delayed-stream"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz"
,
"integrity"
:
"sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
},
"depd"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz"
,
...
...
@@ -17932,8 +17958,17 @@
"follow-redirects"
:
{
"version"
:
"1.15.2"
,
"resolved"
:
"https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz"
,
"integrity"
:
"sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
,
"dev"
:
true
"integrity"
:
"sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
},
"form-data"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz"
,
"integrity"
:
"sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww=="
,
"requires"
:
{
"asynckit"
:
"^0.4.0"
,
"combined-stream"
:
"^1.0.8"
,
"mime-types"
:
"^2.1.12"
}
},
"forwarded"
:
{
"version"
:
"0.2.0"
,
...
...
@@ -19675,14 +19710,12 @@
"mime-db"
:
{
"version"
:
"1.52.0"
,
"resolved"
:
"https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
,
"integrity"
:
"sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
,
"dev"
:
true
"integrity"
:
"sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
},
"mime-types"
:
{
"version"
:
"2.1.35"
,
"resolved"
:
"https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz"
,
"integrity"
:
"sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="
,
"dev"
:
true
,
"requires"
:
{
"mime-db"
:
"1.52.0"
}
...
...
@@ -20948,6 +20981,11 @@
}
}
},
"proxy-from-env"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
,
"integrity"
:
"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"pseudomap"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz"
,
...
...
dsk-srm-server/package.json
View file @
4c5dbe03
...
...
@@ -8,6 +8,7 @@
"build"
:
"vue-cli-service build --production"
},
"dependencies"
:
{
"axios"
:
"^1.1.3"
,
"core-js"
:
"^3.8.3"
,
"element-ui"
:
"^2.15.10"
,
"vue"
:
"^2.6.14"
,
...
...
dsk-srm-server/src/api/login.js
0 → 100644
View file @
4c5dbe03
import
network
from
"@/utils/network"
;
export
const
loginApi
=
(
data
)
=>
network
({
url
:
""
,
method
:
"post"
,
data
});
export
const
loginOutApi
=
()
=>
network
({
url
:
""
,
method
:
"post"
,
});
export
const
getUserInfoApi
=
()
=>
network
({
url
:
""
,
method
:
"post"
});
dsk-srm-server/src/router/index.js
View file @
4c5dbe03
import
Vue
from
'vue'
import
VueRouter
from
'vue-router'
import
Vue
from
'vue'
;
import
VueRouter
from
'vue-router'
;
Vue
.
use
(
VueRouter
)
Vue
.
use
(
VueRouter
)
;
const
routes
=
[
]
]
;
const
router
=
new
VueRouter
({
mode
:
'history'
,
base
:
process
.
env
.
BASE_URL
,
routes
:[
routes
:
[
{
path
:
'/'
,
path
:
'/'
,
redirect
:
'/login'
,
},
{
path
:
'/login'
,
path
:
'/login'
,
// redirect: '/login',
name
:
'login'
,
name
:
'login'
,
component
:
()
=>
import
(
'@/login'
),
meta
:
{
title
:
"登录页"
,
needToken
:
false
}
},
]
})
})
;
export
default
router
export
default
router
;
dsk-srm-server/src/router/permission.js
0 → 100644
View file @
4c5dbe03
import
router
from
'./index'
;
import
store
from
'@/store/index'
;
import
{
Message
}
from
'element-ui'
;
import
{
getToken
}
from
'@/utils/auth'
;
// 路由前置守卫
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
to
.
meta
?.
title
&&
(
document
.
title
=
to
.
meta
.
title
);
// 从cookie中获取token
if
(
getToken
())
{
/**
* 判断前往的path是否为登录页
* 是重定向
* 否则根据用户基本信息 获取当前状态
*/
// 跳转拉取用户基本信息
if
(
!
store
.
state
.
user
.
userInfo
?.
userId
)
{
store
.
dispatch
(
"user/getUserInfo"
).
then
(()
=>
{
next
();
})
.
catch
(
err
=>
{
Message
.
error
(
err
.
msg
||
"获取用户信息失败!"
);
store
.
dispatch
(
'user/loginOut'
).
finally
(()
=>
{
location
.
href
=
'/login'
;
});
});
}
else
{
next
();
}
}
else
{
/**
* 判断当前前往页面是否需要token
* 不匹配 以及 未带token重定向到登录页
*/
if
(
to
.
meta
?.
needToken
===
false
)
{
next
();
}
else
{
next
({
path
:
"/login"
});
}
}
});
\ No newline at end of file
dsk-srm-server/src/store/index.js
View file @
4c5dbe03
import
Vue
from
'vue'
import
Vuex
from
'vuex'
Vue
.
use
(
Vuex
)
import
Vue
from
'vue'
;
import
Vuex
from
'vuex'
;
import
userModule
from
"./modules/user-module"
;
Vue
.
use
(
Vuex
)
;
export
default
new
Vuex
.
Store
({
state
:
{
},
getters
:
{
},
mutations
:
{
},
actions
:
{
},
modules
:
{
user
:
userModule
}
})
})
;
dsk-srm-server/src/store/modules/user-module.js
0 → 100644
View file @
4c5dbe03
import
{
loginApi
,
getUserInfoApi
,
loginOutApi
}
from
"@/api/login"
;
import
{
getToken
,
setToken
,
removeToken
}
from
"@/utils/auth"
;
const
state
=
{
token
:
getToken
(),
userInfo
:
{}
};
const
mutations
=
{
SET_TOKEN
(
state
,
params
)
{
state
.
token
=
params
;
},
SET_USER_INFO
(
state
,
params
)
{
state
.
userInfo
=
params
;
}
};
const
actions
=
{
/**
* 用户登录
* @param {Object} payload 参数
* @param {Function} commit 提交同步处理数据
*/
userLogin
(
payload
,
{
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
// 登录api调用
loginApi
(
payload
).
then
(
res
=>
{
// 获取token
commit
(
"SET_TOKEN"
,
res
.
data
);
setToken
(
res
.
data
);
resolve
(
res
);
}).
catch
(
err
=>
{
console
.
log
(
err
);
reject
(
err
);
});
});
},
/**
* 根据token 获取用户信息
* @param {Object} payload 参数
* @param {Function} commit 提交同步处理数据
*/
getUserInfo
(
payload
,
{
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
// 用户信息api调用
getUserInfoApi
().
then
(
res
=>
{
// 获取token
commit
(
"SET_USER_INFO"
,
res
.
data
);
resolve
(
res
);
}).
catch
(
err
=>
{
console
.
log
(
err
);
removeToken
();
reject
(
err
);
});
});
},
/**
* 退出登录
*/
loginOut
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
// 退出登录api调用
loginOutApi
().
then
(
res
=>
{
// 获取token
commit
(
"SET_TOKEN"
,
""
);
removeToken
();
resolve
(
res
);
}).
catch
(
err
=>
{
console
.
log
(
err
);
removeToken
();
reject
(
err
);
});
});
}
};
const
getters
=
{
};
export
default
{
namespaced
:
true
,
state
,
mutations
,
actions
,
getters
};
\ No newline at end of file
dsk-srm-server/src/utils/auth.js
0 → 100644
View file @
4c5dbe03
const
getToken
=
()
=>
{
try
{
return
localStorage
.
getItem
(
"userToken"
);
}
catch
(
error
)
{
}
};
const
setToken
=
(
token
)
=>
{
try
{
if
(
token
)
{
localStorage
.
setItem
(
"userToken"
,
toekn
);
}
}
catch
(
error
)
{
console
.
log
(
error
);
}
};
const
removeToken
=
()
=>
{
try
{
localStorage
.
removeItem
(
"userToken"
);
}
catch
(
error
)
{
console
.
log
(
error
);
}
};
export
{
getToken
,
setToken
,
removeToken
};
\ No newline at end of file
dsk-srm-server/src/utils/network.js
0 → 100644
View file @
4c5dbe03
import
axios
from
"axios"
;
import
{
Notification
,
MessageBox
,
Message
}
from
'element-ui'
;
import
{
getToken
}
from
'@/utils/auth'
;
import
qs
from
'qs'
;
import
store
from
'@/store/index'
;
axios
.
defaults
.
headers
[
'Content-Type'
]
=
'application/json;charset=utf-8'
;
axios
.
defaults
.
withCredentials
=
false
;
// 创建axios实例
const
service
=
axios
.
create
({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL
:
process
.
env
.
VUE_APP_BASE_API
,
// 超时
timeout
:
15000
});
// request拦截器
service
.
interceptors
.
request
.
use
(
config
=>
{
if
(
config
.
method
===
'post'
&&
config
.
headers
[
'Content-Type'
]
==
'application/x-www-form-urlencoded;charset=UTF-8'
)
{
config
.
data
=
qs
.
stringify
(
config
.
data
);
}
// 是否需要设置 token
const
isToken
=
(
config
.
headers
||
{}).
isToken
===
false
;
if
(
getToken
()
&&
!
isToken
)
{
config
.
headers
[
'Authorization'
]
=
getToken
();
// 让每个请求携带自定义token 请根据实际情况自行修改
}
// get请求映射params参数
if
(
config
.
method
===
'get'
&&
config
.
params
)
{
let
url
=
config
.
url
+
'?'
;
for
(
const
propName
of
Object
.
keys
(
config
.
params
))
{
const
value
=
config
.
params
[
propName
];
var
part
=
encodeURIComponent
(
propName
)
+
"="
;
if
(
value
!==
null
&&
typeof
(
value
)
!==
"undefined"
)
{
if
(
typeof
value
===
'object'
)
{
for
(
const
key
of
Object
.
keys
(
value
))
{
if
(
value
[
key
]
!==
null
&&
typeof
(
value
[
key
])
!==
'undefined'
)
{
let
params
=
propName
+
'['
+
key
+
']'
;
let
subPart
=
encodeURIComponent
(
params
)
+
'='
;
url
+=
subPart
+
encodeURIComponent
(
value
[
key
])
+
'&'
;
}
}
}
else
{
url
+=
part
+
encodeURIComponent
(
value
)
+
"&"
;
}
}
}
url
=
url
.
slice
(
0
,
-
1
);
config
.
params
=
{};
config
.
url
=
url
;
}
return
config
;
},
error
=>
{
return
Promise
.
reject
(
error
);
});
// 响应拦截器
service
.
interceptors
.
response
.
use
(
res
=>
{
// 未设置状态码则默认成功状态
const
code
=
res
.
data
.
code
||
200
;
// 获取错误信息
const
msg
=
res
.
data
.
msg
;
if
(
code
===
401
)
{
MessageBox
.
confirm
(
'登录状态已过期,您可以继续留在该页面,或者重新登录'
,
'系统提示'
,
{
confirmButtonText
:
'重新登录'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}
).
then
(()
=>
{
store
.
dispatch
(
'user/loginOut'
).
finally
(()
=>
{
location
.
href
=
'/login'
;
});
}).
catch
(()
=>
{
});
return
Promise
.
reject
(
'无效的会话,或者会话已过期,请重新登录。'
);
}
else
if
(
code
===
500
)
{
Message
({
message
:
msg
,
type
:
'error'
});
return
Promise
.
reject
(
msg
);
}
else
if
(
code
!==
200
)
{
Notification
.
error
({
title
:
msg
});
return
Promise
.
reject
(
res
.
data
);
}
else
{
return
res
.
data
;
}
},
error
=>
{
let
{
message
}
=
error
;
if
(
message
==
"Network Error"
)
{
message
=
"后端接口连接异常"
;
}
else
if
(
message
.
includes
(
"timeout"
))
{
message
=
"系统接口请求超时"
;
}
else
if
(
message
.
includes
(
"Request failed with status code"
))
{
message
=
"系统接口"
+
message
.
substr
(
message
.
length
-
3
)
+
"异常"
;
}
Message
({
message
:
message
,
type
:
'error'
,
duration
:
5
*
1000
});
return
Promise
.
reject
(
error
);
}
);
export
default
service
;
\ No newline at end of file
dsk-srm-server/vue.config.js
View file @
4c5dbe03
...
...
@@ -10,7 +10,7 @@ module.exports = defineConfig({
publicPath
:
process
.
env
.
BASE_URL
,
assetsDir
:
"static"
,
outputDir
:
process
.
env
.
VUE_APP_OUT_PUT_DIR
||
'dist'
,
productionSourceMap
:
isPro
,
productionSourceMap
:
!
isPro
,
configureWebpack
:
config
=>
{
config
.
output
.
path
=
path
.
resolve
(
__dirname
,
process
.
env
.
VUE_APP_OUT_PUT_DIR
);
config
.
output
.
filename
=
"static/js/[name].js"
;
...
...
@@ -85,23 +85,18 @@ module.exports = defineConfig({
});
},
// 本地代理服务器
// devServer: {
// overlay: {
// warnings: true,
// errors: true
// },
// host: '0.0.0.0',
// port: 6666,
// open: true,
// proxy: {
// [process.env.VUE_APP_BASE_API]: {
// target: ``,
// changeOrigin: true,
// pathRewrite: {
// ['^' + process.env.VUE_APP_BASE_API]: ''
// }
// },
// },
// disableHostCheck: true
// },
devServer
:
{
host
:
'localhost'
,
port
:
"8866"
,
open
:
true
,
proxy
:
{
[
process
.
env
.
VUE_APP_BASE_API
]:
{
target
:
`http://139.9.157.49:8088`
,
changeOrigin
:
true
,
pathRewrite
:
{
[
'^'
+
process
.
env
.
VUE_APP_BASE_API
]:
''
}
},
},
},
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment