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 @@
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
"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": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.2.tgz",
......@@ -2115,6 +2120,37 @@
"integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==",
"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": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
......@@ -2270,8 +2306,7 @@
"base64-js": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
"dev": true
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
},
"batch": {
"version": "0.6.1",
......@@ -3565,6 +3600,11 @@
"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": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
......@@ -7047,6 +7087,24 @@
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"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": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
......@@ -8228,10 +8286,14 @@
"dev": true
},
"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
"version": "6.9.4",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
"integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
},
"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": {
"version": "4.3.4",
......@@ -8529,6 +8591,14 @@
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
"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": {
......@@ -10179,8 +10249,7 @@
"uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"dev": true
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
},
"validate-npm-package-license": {
"version": "3.0.4",
......
......@@ -7,8 +7,13 @@
"build": "vue-cli-service build"
},
"dependencies": {
"@types/qs": "^6.9.3",
"amfe-flexible": "^2.2.1",
"axios": "^0.19.2",
"core-js": "^3.6.4",
"oidc-client": "^1.10.1",
"qs": "^6.9.4",
"qs.js": "^0.1.12",
"vant": "^2.8.3",
"vue": "^2.6.11",
"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'
import store from './store'
import "./assets/css/index.less"
import 'amfe-flexible/index.js'
import server from '@/services/install';
Vue.config.productionTip = false
Vue.use(server);
new Vue({
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 VueRouter, { RouteConfig } from 'vue-router'
Vue.use(VueRouter)
const routes: Array<RouteConfig> = [
{
path: '/',
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 router = new VueRouter({
import Vue from 'vue';
import Router from 'vue-router';
import Mgr from '@/common/SecurityService';
import employee_router from './employee/employee-router';
Vue.use(Router);
let mgr = new Mgr();
const isOpenHttps = process.env.VUE_APP_OPEN_HTTPS;
/**
* 加载和设置路由
*/
const router = new Router({
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 Vuex from 'vuex'
import employee from './modules/employee'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
},
const store = new Vuex.Store({
// strict: process.env.NOOE_ENV !== "production",
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
/**
* 验证手机号
* @param tel 手机号
*/
export function isTel(tel: string) {
return /^1\d{10}$/.test(tel);
}
/**
* 验证邮箱
* @param email 邮箱
*/
export function isEmail(email: string) {
return /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(email);
}
/**
* 验证密码格式(8-16位,数字和英文字母的组合)
* @param password 密码
*/
export function isPassWord(password: string) {
// console.log(password);
return /^(?=.*?[0-9])(?=.*?[A-Za-z])[0-9A-Za-z]{8,16}$/.test(password);
}
/**
* 验证银行卡号
* @param banknum 银行卡号
*/
export function isBankNum(banknum: string) {
return /^([1-9]{1})(\d{15}|\d{18})$/.test(banknum);
}
/**
* 验证身份证号
* @param id 身份证号
*/
export function isIdCard(id: string) {
return /^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$/.test(id);
}
/**
* 模糊手机号
* @param mobile 手机号
*/
export function fuzzyMobile(mobile: string) {
let mobileFront = mobile.slice(0, 3);
let mobileEnd = mobile.slice(7);
return mobileFront + '****' + mobileEnd;
}
/**
* 模糊邮箱
* @param email 邮箱
*/
export function fuzzyEmail(email: string) {
let emailFront = email.slice(0, 1);
let index = email.indexOf('@');
let emailEnd = email.slice(index);
return emailFront + '****' + emailEnd;
}
/**
* 姓名格式化为‘'*' + 尾字’
* @param name 姓名
*/
export function fuzzyName(name: string) {
// console.log(name);
return '*' + name.slice(-1);
}
/**
* 身份证号格式化为‘首1+'******'+尾1’
* @param idnum 身份证
*/
export function fuzzyIdNum(idnum: string) {
if (idnum === "") {
return "";
}
return (idnum || "").slice(0, 1) + '****************' + (idnum || "").slice(-1);
}
/**
* 银行卡号格式化为‘首4+'******'+尾4’
* @param banknunm 银行卡号
*/
export function fuzzyBankNum(banknunm: string) {
if (banknunm === "") {
return "";
}
return (banknunm || "").slice(0, 4) + '********' + (banknunm || "").slice(-4);
}
/**
* 获取性别
* @param sex 性别数字
*/
export function gender(sex: number) {
let genderArr = ['', '男', '女'];
if (sex > 0) {
return genderArr[sex];
} else {
return '';
}
}
/**
* 获取认证方式
* @param value 认证关键字
*/
export function authMethod(value: string) {
let bankArray: { [key: string]: string } = {
"MANUAL": "手动认证",
"TWO": "二要素认证",
"BANK_FOUR": "四要素认证",
"MOBILE_THREE": "三要素认证"
};
for (let k in bankArray) {
if (k === value) {
return bankArray[k];
}
}
return "";
}
/**
* 检测字符串是否为空
* @param value 字符串
*/
export function isNullOrEmpty(value: string) {
if (value === null || value === undefined || value === "") {
return false;
}
return true;
}
/**
* 节流调用
* @param this 当前调用对象
* @param fn 是我们需要包装的事件回调
* @param delay 是时间间隔的阈值
*/
export function throttle(this: any, fn: Function, delay: number) {
// last为上一次触发回调的时间, timer是定时器
let last = 0, timer: any = null;
// 将throttle处理结果当作函数返回
return () => {
// 保留调用时的this上下文
let context = this;
// 保留调用时传入的参数
let args = this.arguments;
// 记录本次触发回调的时间
let now = +new Date();
// 判断上次触发的时间和本次触发的时间差是否小于时间间隔的阈值
if (now - last < delay) {
// 如果时间间隔小于我们设定的时间间隔阈值,则为本次触发操作设立一个新的定时器
clearTimeout(timer);
timer = setTimeout(function () {
last = now;
fn.apply(context, args);
}, delay);
} else {
// 如果时间间隔超出了我们设定的时间间隔阈值,那就不等了,无论如何要反馈给用户一次响应
last = now;
fn.apply(context, args);
}
};
}
/**
* 字符串转16进制
* @param s 字符串
*/
function bin2hex(s: string) {
var i,
l,
o = "",
n;
s += "";
for (i = 0, l = s.length; i < l; i++) {
n = s.charCodeAt(i).toString(16)
o += n.length < 2 ? "0" + n : n;
}
return o;
}
/**
* 获取画布
*/
function getCanvas() {
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
ctx!.fillStyle = "#f60";
ctx!.fillRect(125, 1, 62, 20);
var b64 = canvas.toDataURL().replace("data:image/png;base64,", "");
var bin = atob(b64);
var crc = bin2hex(bin.slice(-16, -12));
return crc;
}
/**
* 获取系统信息
*/
function getOsInfo() {
var userAgent = navigator.userAgent.toLowerCase();
var name = "Unknown";
var version = "Unknown";
if (userAgent.indexOf("win") > -1) {
name = "Windows";
if (userAgent.indexOf("windows nt 5.0") > -1) {
version = "Windows 2000";
} else if (
userAgent.indexOf("windows nt 5.1") > -1 ||
userAgent.indexOf("windows nt 5.2") > -1
) {
version = "Windows XP";
} else if (userAgent.indexOf("windows nt 6.0") > -1) {
version = "Windows Vista";
} else if (
userAgent.indexOf("windows nt 6.1") > -1 ||
userAgent.indexOf("windows 7") > -1
) {
version = "Windows 7";
} else if (
userAgent.indexOf("windows nt 6.2") > -1 ||
userAgent.indexOf("windows 8") > -1
) {
version = "Windows 8";
} else if (userAgent.indexOf("windows nt 6.3") > -1) {
version = "Windows 8.1";
} else if (
userAgent.indexOf("windows nt 6.2") > -1 ||
userAgent.indexOf("windows nt 10.0") > -1
) {
version = "Windows 10";
} else {
version = "Unknown";
}
} else if (userAgent.indexOf("iphone") > -1) {
name = "Iphone";
} else if (userAgent.indexOf("mac") > -1) {
name = "Mac";
} else if (
userAgent.indexOf("x11") > -1 ||
userAgent.indexOf("unix") > -1 ||
userAgent.indexOf("sunname") > -1 ||
userAgent.indexOf("bsd") > -1
) {
name = "Unix";
} else if (userAgent.indexOf("linux") > -1) {
if (userAgent.indexOf("android") > -1) {
name = "Android"
} else {
name = "Linux";
}
} else {
name = "Unknown";
}
// var os = new Object();
// os.name = name;
// os.version = version;
return version;
//document.write("系统:" + os.name + "版本:" + os.name)
}
/**
* 获取浏览器信息
*/
function getBrowerInfo() {
var Browser: any =
Browser ||
(function (window) {
var document = window.document,
navigator = window.navigator,
agent = navigator.userAgent.toLowerCase(),
//IE8+支持.返回浏览器渲染当前文档所用的模式
//IE6,IE7:undefined.IE8:8(兼容模式返回7).IE9:9(兼容模式返回7||8)
//IE10:10(兼容模式7||8||9)
IEMode = (<any>document).documentMode,
//chorme
chrome = (<any>window).chrome || false,
System = {
//user-agent
agent: agent,
//是否为IE
isIE: /trident/.test(agent),
//Gecko内核
isGecko: agent.indexOf("gecko") > 0 && agent.indexOf("like gecko") < 0,
//webkit内核
isWebkit: agent.indexOf("webkit") > 0,
//是否为标准模式
isStrict: document.compatMode === "CSS1Compat",
//是否支持subtitle
supportSubTitle: function () {
return "track" in document.createElement("track");
},
//是否支持scoped
supportScope: function () {
return "scoped" in document.createElement("style");
},
//获取IE的版本号
ieVersion: function () {
var rMsie = /(msie\s|trident.*rv:)([\w.]+)/;
var ma = window.navigator.userAgent.toLowerCase()
var match = rMsie.exec(ma);
try {
return match![2];
} catch (e) {
return IEMode;
}
},
//Opera版本号
operaVersion: function () {
try {
if ((<any>window).opera) {
return agent.match(/opera.([\d.]+)/)![1];
} else if (agent.indexOf("opr") > 0) {
return agent.match(/opr\/([\d.]+)/)![1];
}
} catch (e) {
return 0;
}
}
};
try {
//浏览器类型(IE、Opera、Chrome、Safari、Firefox)
(<any>System).type = System.isIE
? "IE"
: (<any>window).opera || agent.indexOf("opr") > 0
? "Opera"
: agent.indexOf("chrome") > 0
? "Chrome"
: //safari也提供了专门的判定方式
(<any>window).openDatabase
? "Safari"
: agent.indexOf("firefox") > 0
? "Firefox"
: "unknow";
//版本号
(<any>System).version = ((<any>System).type === "IE") ? System.ieVersion() :
((<any>System).type === "Firefox") ? agent.match(/firefox\/([\d.]+)/)![1] :
((<any>System).type === "Chrome") ? agent.match(/chrome\/([\d.]+)/)![1] :
((<any>System).type === "Opera") ? System.operaVersion() :
((<any>System).type === "Safari") ? agent.match(/version\/([\d.]+)/)![1] :
"0";
//浏览器外壳
(<any>System).shell = function () {
if (agent.indexOf("edge") > 0) {
(<any>System).version = agent.match(/edge\/([\d.]+)/)![1] || (<any>System).version;
return "edge浏览器";
}
//遨游浏览器
if (agent.indexOf("maxthon") > 0) {
(<any>System).version = agent.match(/maxthon\/([\d.]+)/)![1] || (<any>System).version;
return "傲游浏览器";
}
//QQ浏览器
if (agent.indexOf("qqbrowser") > 0) {
(<any>System).version = agent.match(/qqbrowser\/([\d.]+)/)![1] || (<any>System).version;
return "QQ浏览器";
}
//搜狗浏览器
if (agent.indexOf("se 2.x") > 0) {
return '搜狗浏览器';
}
//Chrome:也可以使用window.chrome && window.chrome.webstore判断
if (chrome && (<any>System).type !== "Opera") {
var external = window.external,
clientInfo = window.clientInformation,
//客户端语言:zh-cn,zh.360下面会返回undefined
clientLanguage = clientInfo.languages;
//猎豹浏览器:或者agent.indexOf("lbbrowser")>0
if (external && 'LiebaoGetVersion' in external) {
return '猎豹浏览器';
}
//百度浏览器
if (agent.indexOf("bidubrowser") > 0) {
(<any>System).version = agent.match(/bidubrowser\/([\d.]+)/)![1] ||
agent.match(/chrome\/([\d.]+)/)![1];
return "百度浏览器";
}
//360极速浏览器和360安全浏览器
if (System.supportSubTitle() && typeof clientLanguage === "undefined") {
//object.key()返回一个数组.包含可枚举属性和方法名称
var storeKeyLen = Object.keys(chrome.webstore).length,
v8Locale = "v8Locale" in window;
return storeKeyLen > 1 ? '360极速浏览器' : '360安全浏览器';
}
return "Chrome";
}
return (<any>System).type;
};
//浏览器名称(如果是壳浏览器,则返回壳名称)
(<any>System).name = (<any>System).shell();
//对版本号进行过滤过处理
// System.version = System.versionFilter(System.version);
} catch (e) { }
return {
client: System
};
})(window);
if (Browser.client.name == undefined || Browser.client.name == "") {
Browser.client.name = "Unknown";
Browser.client.version = "Unknown";
} else if (Browser.client.version == undefined) {
Browser.client.version = "Unknown";
}
// document.write(Browser.client.name + " " + Browser.client.version);
return Browser;
}
/**
* 获取公共参数
*/
export function GetCommonPms() {
const v = "1.0.1";
const did = getCanvas();
const dh = getOsInfo();
const BrowerInfo = getBrowerInfo();
const db = BrowerInfo.client.name;
const dv = BrowerInfo.client.version;
const t = new Date().getTime();
const pms = `v=${v}&&did=${did}&&dh=${dh}&&db=${db}&&dv=${dv}&&dm=&&lat=&&lng=&&t=${t}`;
return pms;
}
/**
* 判断是否是移动端
*/
export function isMobileBrowser() {
if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
return true;
}
return false;
}
function padLeftZero(str: string) {
return ('00' + str).substr(str.length)
}
/**
* 时间转换成字符串
* @param date 时间
* @param fmt 转换格式
*/
export function formatDate(date: Date, fmt = 'yyyy-MM-dd hh:mm:ss') {
if (!date) {
return "";
}
if (typeof date === 'string') {
date = new Date(date);
}
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
let o: any = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds()
}
for (let k in o) {
let str = o[k] + '';
if (new RegExp(`(${k})`).test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
}
}
return fmt;
}
/**
* 获取当前所在系统
*/
export function CheckPlatform() {
if (/Win/i.test(navigator.platform)) {
return "PC-WINDOWS";
} else if (/Mac/i.test(navigator.platform)) {
return "PC-MAC";
} else if (/android/.test(navigator.userAgent)) {
return "ANDROID";
} else if (/Linux/i.test(navigator.platform)) {
return "ANDROID";
} else if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.platform)) {
return "IOS";
} else {
return "";
}
}
\ 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>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<img alt="Vue logo" src="../assets/logo.png" />
</div>
</template>
<script>
// @ is an alias to /src
export default {
name: 'Home'
<script lang="ts">
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>
\ 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 @@
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
"tests/**/*.tsx", "src/api/index.js"
],
"exclude": [
"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