Commit 7dea8521 by lishengfu

update

parent 71a7eae0
File mode changed
VUE_APP_OIDC_CONFIG = '{ "authority": "http://106.120.107.150:5000", "client_id": "teamix-personal-center-web-pc", "client_secret": "123456", "redirect_uri": "http://localhost:8080/callback.html", "response_type": "id_token token", "scope": "openid workapps.client api.workapps.user","post_logout_redirect_uri":"http://localhost:8080", "silent_redirect_uri": "http://localhost:8080/silent-renew.html", "automaticSilentRenew": true,"accessTokenExpiringNotificationTime":60,"filterProtocolClaims":true,"loadUserInfo":true,"loadUserInfo":true }'
VUE_APP_BASE_URL= "http://106.120.107.150:8090"
# https开关
VUE_APP_OPEN_HTTPS=false
VUE_APP_OIDC_CONFIG = '{ "authority": "https://passport.teammix.com", "client_id": "qqxb-activity-web-mobile", "client_secret": "qqxb#teammix#2019", "redirect_uri": "https://invite.activity.h5.hrs100.com/callback.html", "response_type": "id_token token", "scope": "workapps.client api.workapps.user api.workapps.org api.workapps.open openid","post_logout_redirect_uri":"https://invite.activity.h5.hrs100.com", "silent_redirect_uri": "https://invite.activity.h5.hrs100.com/silent-renew-oidc.html", "automaticSilentRenew": true,"accessTokenExpiringNotificationTime":60,"filterProtocolClaims":true,"loadUserInfo":true }'
VUE_APP_API_BASEURL = 'https://apiplus.qinqinxiaobao.com/v1/qqxb/user/api'
VUE_APP_OIDC_CONFIG = '{ "authority": "http://106.120.107.150:5000", "client_id": "qqxb-activity-web-mobile", "client_secret": "123456", "redirect_uri": "http://106.120.107.150:7774/callback.html", "response_type": "id_token token", "scope": "workapps.client api.workapps.user api.workapps.org api.workapps.open openid","post_logout_redirect_uri":"http://106.120.107.150:7774", "silent_redirect_uri": "http://106.120.107.150:7774/silent-renew-oidc.html", "automaticSilentRenew": true,"automaticSilentSignin":true,"accessTokenExpiringNotificationTime":60,"filterProtocolClaims":true,"loadUserInfo":true }'
VUE_APP_API_BASEURL = 'http://106.120.107.145:7778/v1/qqxb/user/api'
...@@ -1144,6 +1144,11 @@ ...@@ -1144,6 +1144,11 @@
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
"dev": true "dev": true
}, },
"@types/qs": {
"version": "6.9.3",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.3.tgz",
"integrity": "sha512-7s9EQWupR1fTc2pSMtXRQ9w9gLOcrJn+h7HOXw4evxyvVqMi4f+q7d2tnFe3ng3SNHjtK+0EzGMGFUQX4/AQRA=="
},
"@types/webpack-env": { "@types/webpack-env": {
"version": "1.15.2", "version": "1.15.2",
"resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.2.tgz", "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.2.tgz",
...@@ -2115,6 +2120,37 @@ ...@@ -2115,6 +2120,37 @@
"integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==",
"dev": true "dev": true
}, },
"axios": {
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
"integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
"requires": {
"follow-redirects": "1.5.10"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"follow-redirects": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "=3.1.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"babel-code-frame": { "babel-code-frame": {
"version": "6.26.0", "version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
...@@ -2270,8 +2306,7 @@ ...@@ -2270,8 +2306,7 @@
"base64-js": { "base64-js": {
"version": "1.3.1", "version": "1.3.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
"dev": true
}, },
"batch": { "batch": {
"version": "0.6.1", "version": "0.6.1",
...@@ -3565,6 +3600,11 @@ ...@@ -3565,6 +3600,11 @@
"randomfill": "^1.0.3" "randomfill": "^1.0.3"
} }
}, },
"crypto-js": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz",
"integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q=="
},
"css-color-names": { "css-color-names": {
"version": "0.0.4", "version": "0.0.4",
"resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
...@@ -7047,6 +7087,24 @@ ...@@ -7047,6 +7087,24 @@
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"dev": true "dev": true
}, },
"oidc-client": {
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/oidc-client/-/oidc-client-1.10.1.tgz",
"integrity": "sha512-/QB5Nl7c9GmT9ir1E+OVY3+yZZnuk7Qa9ZEAJqSvDq0bAyAU9KAgeKipTEfKjGdGLTeOLy9FRWuNpULMkfZydQ==",
"requires": {
"base64-js": "^1.3.0",
"core-js": "^2.6.4",
"crypto-js": "^3.1.9-1",
"uuid": "^3.3.2"
},
"dependencies": {
"core-js": {
"version": "2.6.11",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
"integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="
}
}
},
"on-finished": { "on-finished": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
...@@ -8228,10 +8286,14 @@ ...@@ -8228,10 +8286,14 @@
"dev": true "dev": true
}, },
"qs": { "qs": {
"version": "6.5.2", "version": "6.9.4",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
"dev": true },
"qs.js": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/qs.js/-/qs.js-0.1.12.tgz",
"integrity": "sha1-9fiBbk8Fy+gyRwR8rrAiJk+3mxU="
}, },
"query-string": { "query-string": {
"version": "4.3.4", "version": "4.3.4",
...@@ -8529,6 +8591,14 @@ ...@@ -8529,6 +8591,14 @@
"tough-cookie": "~2.5.0", "tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0", "tunnel-agent": "^0.6.0",
"uuid": "^3.3.2" "uuid": "^3.3.2"
},
"dependencies": {
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
}
} }
}, },
"request-promise-core": { "request-promise-core": {
...@@ -10179,8 +10249,7 @@ ...@@ -10179,8 +10249,7 @@
"uuid": { "uuid": {
"version": "3.4.0", "version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
"dev": true
}, },
"validate-npm-package-license": { "validate-npm-package-license": {
"version": "3.0.4", "version": "3.0.4",
......
...@@ -7,8 +7,13 @@ ...@@ -7,8 +7,13 @@
"build": "vue-cli-service build" "build": "vue-cli-service build"
}, },
"dependencies": { "dependencies": {
"@types/qs": "^6.9.3",
"amfe-flexible": "^2.2.1", "amfe-flexible": "^2.2.1",
"axios": "^0.19.2",
"core-js": "^3.6.4", "core-js": "^3.6.4",
"oidc-client": "^1.10.1",
"qs": "^6.9.4",
"qs.js": "^0.1.12",
"vant": "^2.8.3", "vant": "^2.8.3",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-axios": "^2.1.5", "vue-axios": "^2.1.5",
......
// import axios from "axios";
// const option = {
// lock: true,
// //text: "Loading",
// //spinner: "el-icon-loading",
// fullscreen:true,
// background: "rgba(0, 0, 0, 0)",
// //customClass:"loading-style"
// };
// let loadingInstance;
// //let configBaseUrl = process.env.VUE_APP_ORG_API_BASEURL;
// //console.log("==============>",configBaseUrl)
// let baseUrl = process.env.VUE_APP_ORG_API_BASEURL;
// // switch (process.env.NODE_ENV) {
// // case "development":
// // baseUrl = "http://192.168.1.161:7771"; //这里是本地的请求url
// // break;
// // case "alpha":
// // baseUrl = "http://192.168.1.161:7771"; //这里是测试环境中的url
// // break;
// // case "production":
// // baseUrl = "http://192.168.1.161:7771"; //生产环境url
// // break;
// // }
// //baseUrl = configBaseUrl;
// // 创建 axios 实例
// let http = axios.create({
// timeout: 60000,
// baseURL: baseUrl
// });
// // request拦截器
// http.interceptors.request.use(
// config => {
// loadingInstance = Loading.service(option);
// return config;
// },
// error => {
// loadingInstance.close();
// return Promise.reject(error); // reject这个错误信息
// }
// );
// // 添加响应拦截器
// http.interceptors.response.use(
// response => {
// //console.log("response====>",response)
// loadingInstance.close();
// let { data } = response;
// return data;
// },
// error => {
// loadingInstance.close();
// console.log(error);
// let info = {};
// let { status } = error.response;
// info = {
// code: status,
// data: "",
// msg: "系统出现未知错误"
// };
// return info;
// }
// );
// /**
// * 创建统一封装过的 axios 实例
// * @return {AxiosInstance}
// */
// export default function () {
// return http;
// }
// import axios from "./axios";
// let instance=axios();
// export default{
// get(url,params,headers){
// if(params){
// options.params=params;
// }
// }
// }
\ No newline at end of file
/* eslint-disable */
import qs from "qs";
import Oidc from "oidc-client";
// import "babel-polyfill";
const oidc_config = JSON.parse(process.env.VUE_APP_OIDC_CONFIG)
var mgr: Oidc.UserManager;
mgr = new Oidc.UserManager({
userStore: new Oidc.WebStorageStateStore({}),
authority: oidc_config.authority,
client_id: oidc_config.client_id,
redirect_uri: oidc_config.redirect_uri,
response_type: oidc_config.response_type,
scope: oidc_config.scope,
post_logout_redirect_uri: oidc_config.post_logout_redirect_uri,
silent_redirect_uri: oidc_config.silent_redirect_uri,
accessTokenExpiringNotificationTime: oidc_config.accessTokenExpiringNotificationTime,
automaticSilentRenew: oidc_config.filterProtocolClaims,
filterProtocolClaims: oidc_config.loadUserInfo,
loadUserInfo: oidc_config.loadUserInfo
});
Oidc.Log.logger = console;
Oidc.Log.level = Oidc.Log.INFO;
mgr!.events.addUserLoaded(function (user: any) {
console.log("初始化");
});
mgr!.events.addAccessTokenExpiring(function () {
console.log("过期前");
console.log("AccessToken Expiring:", arguments);
});
mgr!.events.addAccessTokenExpired(function () {
console.log("AccessToken Expired:", arguments);
mgr
.signoutRedirect()
.then(function (resp: any) {
console.log("signed out", resp);
})
.catch(function (err: any) {
console.log(err);
});
});
mgr!.events.addSilentRenewError(function () {
console.error("Silent Renew Error:", arguments);
});
mgr!.events.addUserSignedOut(function () {
console.log("UserSignedOut:", arguments);
mgr
.signoutRedirect()
.then(function (resp: any) {
window.location.href = "/";
})
.catch(function (err: any) {
console.log(err);
});
});
export default class SecurityService {
signinRedirectCallback() {
mgr
.signinRedirectCallback()
.then(function (user: any) {
// console.log("=============================");
// console.log(user);
})
.catch(function (err: any) {
// console.log(err);
});
}
signinSilentCallback() {
mgr.signinSilentCallback().catch(function (err: any) {
// console.log(err);
});
}
// Renew the token manually
renewToken(): Promise<Oidc.User | null> {
let self = this;
console.log("执行");
return new Promise((resolve, reject) => {
mgr
.signinSilent()
.then(function (user: Oidc.User | null) {
if (user == null) {
self.signIn();
} else {
return resolve(user);
}
})
.catch(function (err: any) {
alert(err);
console.log(err);
return reject(err);
});
});
}
// Get the user who is logged in
getUser(): Promise<Oidc.User | undefined> {
let self = this;
return new Promise<Oidc.User | undefined>((resolve, reject) => {
mgr
.getUser()
.then(function (user) {
if (user == null) {
// self.signIn();
return resolve(undefined);
} else {
if (!!user.expired) {
return resolve(undefined);
}
return resolve(user);
}
})
.catch(function (err: any) {
console.log(err);
return reject(err);
});
});
}
// Check if there is any user logged in
getSignedIn(): Promise<boolean> {
let self = this;
return new Promise((resolve, reject) => {
mgr
.getUser()
.then(function (user: any) {
let authcode = qs.parse(window.location.search).authcode;
if (authcode) {
mgr
.signinRedirect({
extraQueryParams: { authcode }
})
.catch(error => {
console.error(error);
});
return resolve(false);
} else if (user == null) {
self.signIn();
return resolve(false);
} else {
return resolve(true);
}
})
.catch(function (err: any) {
console.log(err);
return reject(err);
});
});
}
// Redirect of the current window to the authorization endpoint.
signIn(args = {}) {
mgr.signinRedirect(args).catch(function (err: any) {
console.log(err);
});
}
signInto(args: any = null) {
mgr.signinRedirect(args).catch(function (err: any) {
console.log(err);
});
}
// Redirect of the current window to the end session endpoint
signOut() {
mgr
.signoutRedirect()
.then(function (resp: any) {
console.log("signed out", resp);
})
.catch(function (err: any) {
console.log(err);
});
}
// Get the profile of the user logged in
getProfile(): Promise<Oidc.Profile | null> {
let self = this;
return new Promise((resolve, reject) => {
mgr
.getUser()
.then(function (user: Oidc.User | null) {
if (user == null) {
self.signIn();
return resolve(null);
} else {
return resolve(user.profile);
}
})
.catch(function (err: any) {
console.log(err);
return reject(err);
});
});
}
// Get the token id
getIdToken(): Promise<string | null> {
let self = this;
return new Promise((resolve, reject) => {
mgr
.getUser()
.then(function (user: Oidc.User | null) {
if (user == null) {
self.signIn();
return resolve(null);
} else {
return resolve(user.id_token);
}
})
.catch(function (err: any) {
console.log(err);
return reject(err);
});
});
}
// Get the session state
getSessionState(): Promise<any | null> {
let self = this;
return new Promise((resolve, reject) => {
mgr
.getUser()
.then(function (user: Oidc.User | null) {
if (user == null) {
self.signIn();
return resolve(null);
} else {
return resolve(user.session_state);
}
})
.catch(function (err: any) {
console.log(err);
return reject(err);
});
});
}
// Get the access token of the logged in user
getAcessToken(): Promise<string | null> {
let self = this;
return new Promise((resolve, reject) => {
mgr
.getUser()
.then(function (user: Oidc.User | null) {
if (user == null) {
self.signIn();
return resolve(null);
} else {
return resolve(user.access_token);
}
})
.catch(function (err: any) {
console.log(err);
return reject(err);
});
});
}
// Takes the scopes of the logged in user
getScope(): Promise<string | null> {
let self = this;
return new Promise((resolve, reject) => {
mgr
.getUser()
.then(function (user: Oidc.User | null) {
if (user == null) {
self.signIn();
return resolve(null);
} else {
return resolve(user.scope);
}
})
.catch(function (err: any) {
console.log(err);
return reject(err);
});
});
}
// Get the user roles logged in
getRole(): Promise<any | null> {
let self = this;
return new Promise((resolve, reject) => {
mgr
.getUser()
.then(function (user: Oidc.User | null) {
if (user == null) {
self.signIn();
return resolve(null);
} else {
return resolve(user.profile.role);
}
})
.catch(function (err: any) {
console.log(err);
return reject(err);
});
});
}
}
// import "babel-polyfill";
import Oidc from "oidc-client";
var mgr = new Oidc.UserManager({
userStore: new Oidc.WebStorageStateStore({}),
loadUserInfo: true,
filterProtocolClaims: true
});
mgr.signinRedirectCallback().then(function (user: any) {
let returnUrl = localStorage.getItem("returnUrl");
if (returnUrl) {
window.location.href = returnUrl;
} else {
window.location.href = "/";
}
}).catch(function (err: any) {
console.log(err);
});
// import "babel-polyfill";
import Oidc from 'oidc-client';
var mgr = new Oidc.UserManager({
userStore: new Oidc.WebStorageStateStore({}),
loadUserInfo: true,
filterProtocolClaims: true
});
mgr.signinSilentCallback();
...@@ -4,8 +4,10 @@ import router from './router' ...@@ -4,8 +4,10 @@ import router from './router'
import store from './store' import store from './store'
import "./assets/css/index.less" import "./assets/css/index.less"
import 'amfe-flexible/index.js' import 'amfe-flexible/index.js'
import server from '@/services/install';
Vue.config.productionTip = false Vue.config.productionTip = false
Vue.use(server);
new Vue({ new Vue({
router, router,
......
export default [
{
path: '/',
name: 'Home',
meta: {
title: '首页',
requiresAuth: true
},
component: () => import("@/views/Home.vue")
},
{
// 身份选择
path: '/select_identity',
name: 'SelectIdentity',
component: () => import("@/views/SelectIdentity.vue")
},
{
// 灵活用工
path: '/flex_employee',
name: 'FlexEmployee',
component: () => import("@/views/FlexEmployee.vue")
},
{
// 灵活用工详情
path: '/flex_employee_detial',
name: 'FlexEmployeeDetial',
component: () => import("@/views/FlexEmployeeDetial.vue")
},
{
// 企业员工
path: '/company_employee_details',
name: 'CompanyEmployeeDetails',
component: () => import("@/views/CompanyEmployeeDetails.vue")
}
]
\ No newline at end of file
import Vue from 'vue' import Vue from 'vue';
import VueRouter, { RouteConfig } from 'vue-router' import Router from 'vue-router';
import Mgr from '@/common/SecurityService';
Vue.use(VueRouter) import employee_router from './employee/employee-router';
const routes: Array<RouteConfig> = [ Vue.use(Router);
{
path: '/', let mgr = new Mgr();
name: 'Home',
component: () => import("../views/Home.vue")
},
{
// 身份选择
path: '/select_identity',
name: 'SelectIdentity',
component: () => import("../views/SelectIdentity.vue")
},
{
// 灵活用工
path: '/flex_employee',
name: 'FlexEmployee',
component: () => import("../views/FlexEmployee.vue")
},
{
// 灵活用工详情
path: '/flex_employee_detial',
name: 'FlexEmployeeDetial',
component: () => import("../views/FlexEmployeeDetial.vue")
},
{
// 企业员工
path: '/company_employee_details',
name: 'CompanyEmployeeDetails',
component: () => import("../views/CompanyEmployeeDetails.vue")
}
]
const isOpenHttps = process.env.VUE_APP_OPEN_HTTPS;
const router = new VueRouter({ /**
* 加载和设置路由
*/
const router = new Router({
mode: 'history', mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router base: process.env.BASE_URL,//'/',
routes: [
...employee_router
]
});
/**
* 使用授权码登录
* @param authCode 授权码
*/
function loginByAuthcode(authCode: any) {
let loginArgs = { extraQueryParams: { authcode: authCode } };
mgr.signIn(loginArgs);
}
/**
* 自动登录
* @param authcode 授权码
*/
function autoLogin(authcode: any) {
mgr.getUser().then(user => {
if (user == null) {
loginByAuthcode(authcode);
} else {
//如果已经登录,则先退出
localStorage.setItem("authcode", authcode);
mgr.signOut();
}
})
}
/**
* 请求路由前 一些操作
*/
router.beforeEach((to, from, next) => {
// console.log(isOpenHttps);
if (isOpenHttps === "true" && location.href.startsWith("http://")) {
location.href = location.href.replace("http://", "https://");
}
const requiresAuth = to.matched.some(record => record.meta.requiresAuth);
localStorage.setItem("returnUrl", to.path);
//更改标题
if (to.meta.title) {
document.title = to.meta.title;
}
let authcode = localStorage.getItem("authcode")
if (authcode) {
localStorage.removeItem("authcode");
loginByAuthcode(authcode)
} else {
let authcode = to.query.authcode;
if (authcode) {
autoLogin(authcode);
} else {
if (requiresAuth) {
mgr.getUser().then(user => {
if (user == null) {
mgr.signIn();
} else {
next();
}
});
}
else {
next();
}
}
}
});
export default router;
/**
* 员工相关接口
*/
export interface EmployeeInterface {
getUserInfo(params: any): Promise<any>;
putEmail(params: any): Promise<any>;
}
import EmployeeService from '@/servicesImpl/employee/employeeImpl';
import { EmployeeInterface } from '@/services/employee/employeeService';
/**
* 服务接口声明
*/
export interface Server {
EmployeeService: EmployeeInterface;
}
import Vue from 'vue';
import EmployeeService from "@/servicesImpl/employee/employeeImpl";
const components = {
EmployeeService
};
const install = function () {
Object.defineProperties(Vue.prototype, {
$server: {
get() {
return components;
}
}
})
}
export default install;
\ No newline at end of file
import request from '@/utils/method';
import store from '@/store';
import { EmployeeInterface } from '@/services/employee/employeeService';
import urls from '@/utils/urls';
/**
* 员工服务类
*/
class EmployeeService implements EmployeeInterface {
/**
* 请求头信息
*/
private header: any;
/**
* 当前版本
*/
private version: String;
/**
* 当前登录用户ID
*/
private sub: any;
/**
* 构造方法
*/
public constructor() {
// 获取登录token
store.getters.getAccessToken.then((res: any) => {
this.header = { Authorization: `Bearer ${res}` };
});
store.getters.getUserInfo.then((res: any) => {
// console.log(res);
this.sub = res.sub
})
this.version = "v1";
}
/**
* 获取用户信息
* @param params 请求参数
*/
public async getUserInfo(params: any): Promise<any> {
console.log(this.header);
// let result = await request.get("http://qinqinxiaobao.com", "", this.header);
// console.log(result);
return {
id: 1,
name: "333"
}
}
/**
* 修改邮箱
* @param params 请求参数
*/
public putEmail(params: any): Promise<any> {
// // /v2/internal/account/{userId}/download/{accountId}/summary
// let url3=aa('/v2/internal/account/{userId}/download/{accountId}/summary',params)
// let url1 = `${urls.employeeUrl}/${this.version}/internal/account/${params.userId}/download/${params.accountId}/summary`;
let url = `${urls.employeeUrl}/${this.version}/users/${this.sub}/email`;
return request.put(url, params, this.header);
}
}
export default new EmployeeService();
\ No newline at end of file
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex' import Vuex from 'vuex'
import employee from './modules/employee'
Vue.use(Vuex) Vue.use(Vuex)
export default new Vuex.Store({ const store = new Vuex.Store({
state: { // strict: process.env.NOOE_ENV !== "production",
},
mutations: {
},
actions: {
},
modules: { modules: {
employee
} }
}) })
export default store;
// import * as types from "../types";
// import { isNullOrEmpty } from "@/utils/public";
import Mgr from "@/common/SecurityService";
// import request from '@/utils/method';
// import urls from '@/utils/urls';
let mgr = new Mgr();
const initPageState = () => {
return {
userInfo: {},
accessToken: "",
anymouseAccessToken: "",
companyAccessToken: ""
}
};
const user = {
state: initPageState(),
mutations: {},
actions: {},
getters: {
async getUserInfo(state: Object | any) {
if (Object.keys(state.userInfo).length > 0) {
return state.userInfo;
}
let user = await mgr.getUser();
if (user) {
state.userInfo = user!.profile;
}
return state.userInfo;
},
async getAccessToken(state: Object | any) {
if (state.accessToken === "") {
let user = await mgr.getUser();
if (user) {
state.accessToken = user!.access_token;
}
}
return state.accessToken;
},
async getAnymouseAccessToken(state: Object | any) {
if (state.anymouseAccessToken === "") {
let aToken = localStorage.getItem("aat");
if (!!(aToken)) {
state.anymouseAccessToken = aToken;
} else {
// let url = `${urls.tokenUrl}/connect/token`;
// await request.post(url,)
}
}
return state.anymouseAccessToken;
}
}
};
export default user;
export const SAVE_USER="SAVE_USER";
\ No newline at end of file
/**
* 接口响应数据(基础)
*/
export interface ResponseData {
errcode: number;
data?: any;
errmsg: string;
}
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
import { Toast } from 'vant';
import { ResponseData } from '@/types/index';
let service: AxiosInstance | any;
service = axios.create({
baseURL: process.env.VUE_APP_SERVER_URL,
timeout: 60000,
});
/**
* 请求拦击器
*/
service.interceptors.request.use(
(config: AxiosRequestConfig) => {
return config;
},
(error: any) => {
Promise.reject(error);
}
);
/**
* 响应拦截器
*/
service.interceptors.response.use(
(response: AxiosResponse) => {
if (response.status === 200) {
const data: ResponseData = response.data;
// 认证中心接口 响应
if (!data.errcode) {
// console.log(data);
return data;
}
// 普通接口 响应
if (data.errcode === 0) {
return data.data;
} else {
Toast(data.errmsg);
}
return Promise.reject(new Error(response.data.errcode || "Error"));
}
},
(error: any) => Promise.reject(error)
);
export default service;
// /**
// * get请求方法(H5)
// * @param url
// * @param params
// * @returns {Promise}
// */
// export function mFetch(url: string, Headers = {}, params = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.get(url + param, {
// params: params,
// headers: Headers
// }).then((response: any) => {
// if (response.status === 200) {
// resolve(response.data);
// } else {
// Message.error(response.data.error_description);
// resolve(response.data);
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
// /**
// * post请求方法(H5)
// * @param url
// * @param data
// * @returns {Promise}
// */
// export function mPost(url: string, data = {}, Headers = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.post(url + param, data, { headers: Headers })
// .then((response: any) => {
// if (response.data.errcode === 0) {
// resolve(response.data);
// } else {
// Message.error(response.data.errmsg);
// resolve(response.data);
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
// /**
// * post请求方法(H5)
// * @param url
// * @param data
// * @Headers
// * @returns {Promise}
// */
// export function mBeforePost(url: string, data = {}, Headers = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.post(url + param, data, { headers: Headers })
// .then((response: any) => {
// if (response.data.errcode == undefined) {
// resolve(response.data);
// } else {
// if (response.data.errcode === 0) {
// resolve(response.data);
// } else {
// Message.error(response.data.errmsg);
// resolve(response.data);
// }
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
// /**
// * put请求方法(H5)
// * @param url
// * @param data
// * @returns {Promise}
// */
// export function mPut(url: string, data = {}, Headers = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.put(url + param, data, { headers: Headers })
// .then((response: any) => {
// if (response.data.errcode === 0) {
// resolve(response.data);
// } else {
// Message.error(response.data.errmsg);
// resolve(response.data);
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
// /**
// * delete请求方法(H5)
// * @param url
// * @param data
// * @returns {Promise}
// */
// export function mDelete(url: string, Headers = {}, params = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.delete(url + param, {
// data: params,
// headers: Headers
// }).then((response: any) => {
// if (response.status === 200) {
// resolve(response.data);
// } else {
// Message.error(response.data.error_description);
// resolve(response.data);
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
// /**
// * get请求方法
// * @param url
// * @param data
// * @returns {Promise}
// */
// export function toFetch(url: string, Headers = {}, params = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.get(url + param, {
// params: params,
// headers: Headers
// }).then((response: any) => {
// if (response.status === 200) {
// resolve(response.data);
// } else {
// Message.error(response.data.error_description);
// resolve(response.data);
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
// /**
// * post请求方法
// * @param url
// * @param data
// * @Headers
// * @returns {Promise}
// */
// export function toPost(url: string, data = {}, Headers = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.post(url + param, data, { headers: Headers })
// .then((response: any) => {
// if (response.data.errcode === 0) {
// resolve(response.data);
// } else {
// Message.error(response.data.errmsg);
// resolve(response.data);
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
// /**
// * post请求方法
// * @param url
// * @param data
// * @Headers
// * @returns {Promise}
// */
// export function beforePost(url: string, data = {}, Headers = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.post(url + param, data, { headers: Headers })
// .then((response: any) => {
// if (response.data.errcode == undefined) {
// resolve(response.data);
// } else {
// if (response.data.errcode === 0) {
// resolve(response.data);
// } else {
// Message.error(response.data.errmsg);
// resolve(response.data);
// }
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
// /**
// * put请求方法
// * @param url
// * @param data
// * @returns {Promise}
// */
// export function toPut(url: string, data = {}, Headers = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.put(url + param, data, { headers: Headers })
// .then((response: any) => {
// if (response.data.errcode === 0) {
// resolve(response.data);
// } else {
// Message.error(response.data.errmsg);
// resolve(response.data);
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
// /**
// * delete请求方法
// * @param url
// * @param data
// * @returns {Promise}
// */
// export function toDelete(url: string, Headers = {}, params = {}) {
// return new Promise((resolve, reject) => {
// let param = '?' + GetCommonPms();
// axios.delete(url + param, {
// data: params,
// headers: Headers
// }).then((response: any) => {
// if (response.status === 200) {
// resolve(response.data);
// } else {
// Message.error(response.data.error_description);
// resolve(response.data);
// }
// }).catch((err: any) => {
// reject(err);
// });
// });
// }
\ No newline at end of file
import service from './http';
import { GetCommonPms } from '@/utils/public';
class Request {
/**
* GET 请求
* @param url 请求链接
* @param params 请求参数
* @param headers 请求头信息
*/
public get(url: string, params: any = {}, headers: any = {}): Promise<any> {
return new Promise((resolve, reject) => {
resolve(service.get(`${url}?${GetCommonPms()}`, {
params: params,
headers: headers
}));
})
}
/**
*
* POST 请求
* @param url 请求链接
* @param params 请求参数
* @param headers 请求头信息
*/
public post(url: string, params: any = {}, headers: any = {}) {
return new Promise((resolve, reject) => {
resolve(service.post(`${url}?${GetCommonPms()}`, {
params: params,
headers: headers
}));
})
}
/**
*
* PUT 请求
* @param url 请求链接
* @param params 请求参数
* @param headers 请求头信息
*/
public put(url: string, params: any = {}, headers: any = {}) {
return new Promise((resolve, reject) => {
resolve(service.put(`${url}?${GetCommonPms()}`, {
params: params,
headers: headers
}));
})
}
/**
*
* DELETE 请求
* @param url 请求链接
* @param params 请求参数
* @param headers 请求头信息
*/
public delete(url: string, params: any = {}, headers: any = {}) {
return new Promise((resolve, reject) => {
resolve(service.delete(`${url}?${GetCommonPms()}`, {
params: params,
headers: headers
}));
})
}
}
export default new Request();
\ No newline at end of file
/**
* 服务基础链接
*/
class Urls {
/**
* 个人中心
*/
employeeUrl: String = process.env.VUE_APP_BASE_URL;
// /**
// * 认证中心
// */
// tokenUrl: String = process.env.VUE_APP_LOGIN_URL;
}
export default new Urls();
\ No newline at end of file
<template> <template>
<div class="home"> <div class="home">
<img alt="Vue logo" src="../assets/logo.png"> <img alt="Vue logo" src="../assets/logo.png" />
</div> </div>
</template> </template>
<script>
// @ is an alias to /src
export default { <script lang="ts">
name: 'Home' import Vue from "vue";
import { Component } from "vue-property-decorator";
import { formatDate, CheckPlatform } from "@/utils/public";
@Component({
name: "Home",
components: {}
})
export default class Home extends Vue {
private list: any = [];
created() {
this.$server.EmployeeService.getUserInfo({}).then(res => {
console.log(res);
});
}
} }
</script> </script>
\ No newline at end of file
import Vue from 'vue'
import VueRouter, { Route } from 'vue-router';
import { Server } from '@/services/index';
declare module 'vue/types/vue' {
interface Vue {
$router: VueRouter;
$route: Route;
$server: Server;
}
}
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
"src/**/*.tsx", "src/**/*.tsx",
"src/**/*.vue", "src/**/*.vue",
"tests/**/*.ts", "tests/**/*.ts",
"tests/**/*.tsx" "tests/**/*.tsx", "src/api/index.js"
], ],
"exclude": [ "exclude": [
"node_modules" "node_modules"
......
const path = require("path");
module.exports = {
// 基本路径
publicPath: "/",
// 输出文件目录
outputDir: "dist",
pages: {
app: {
entry: './src/main.ts',
template: 'public/index.html',
filename: 'index.html',
favicon: 'public/favicon.ico',
chunks: ['app', 'chunk-vendors'],
excludeChunks: ['silent-renew-oidc']
},
silentrenewoidc: {
entry: './src/common/silent-renew.ts',
template: 'public/silent-renew.html',
filename: 'silent-renew.html',
favicon: 'public/favicon.ico',
excludeChunks: ['app']
},
callback: {
entry: './src/common/callback.ts',
template: 'public/callback.html',
filename: 'callback.html',
favicon: 'public/favicon.ico',
excludeChunks: ['app']
},
},
// eslint-loader 是否在保存的时候检查
lintOnSave: true,
// webpack配置
// see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
chainWebpack: config => {
config.module
.rule('tsx')
.use('ts-loader')
.loader('ts-loader')
.tap(options => {
return Object.assign(options || {}, { allowTsInNodeModules: true });
});
},
configureWebpack: config => {
if (process.env.NODE_ENV === "production") {
// 为生产环境修改配置...
config.mode = "production";
} else {
// 为开发环境修改配置...
config.mode = "development";
}
},
// 生产环境是否生成 sourceMap 文件
productionSourceMap: true,
// css相关配置
css: {
// 是否使用css分离插件 ExtractTextPlugin
extract: true,
// 开启 CSS source maps?
sourceMap: false,
// css预设器配置项
loaderOptions: {},
// 启用 CSS modules for all css / pre-processor files.
modules: false
},
// use thread-loader for babel & TS in production build
// enabled by default if the machine has more than 1 cores
parallel: require("os").cpus().length > 1,
// PWA 插件相关配置
// see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
pwa: {},
// webpack-dev-server 相关配置
devServer: {
open: false,//process.platform === "darwin",
host: "0.0.0.0",
port: 8080,
https: false,
hotOnly: false,
proxy: {
"/api": {
target: "http://192.168.1.101:8080",
// target: "http://192.168.1.46:8001",
// target: "http://106.120.107.150:8001",
ws: true,
changeOrigin: true,
pathRewrite: {
"^/api": "/"
}
},
},
// historyApiFallback: {
// rewrites: [
// { from: /^\/single/, to: '/single.html' },
// ],
// },
before: app => { }
},
// 第三方插件配置
pluginOptions: {
'style-resources-loader': {
preProcessor: 'scss',
patterns: []
}
}
};
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment