Commit 562c4077 by 薛文刚

项目基本配置

parent 44796fd4
...@@ -1762,6 +1762,37 @@ ...@@ -1762,6 +1762,37 @@
"webpack-merge": "^4.2.2" "webpack-merge": "^4.2.2"
}, },
"dependencies": { "dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"debug": { "debug": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npm.taobao.org/debug/download/debug-4.2.0.tgz?cache=0&sync_timestamp=1600502871403&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.2.0.tgz", "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.2.0.tgz?cache=0&sync_timestamp=1600502871403&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.2.0.tgz",
...@@ -1771,11 +1802,35 @@ ...@@ -1771,11 +1802,35 @@
"ms": "2.1.2" "ms": "2.1.2"
} }
}, },
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"ms": { "ms": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz",
"integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=",
"dev": true "dev": true
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.2.0",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz",
"integrity": "sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
}
} }
} }
}, },
...@@ -4632,6 +4687,11 @@ ...@@ -4632,6 +4687,11 @@
"integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=", "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=",
"dev": true "dev": true
}, },
"driver.js": {
"version": "0.9.8",
"resolved": "https://registry.npmjs.org/driver.js/-/driver.js-0.9.8.tgz",
"integrity": "sha512-bczjyKdX6XmFyCDkwtRmlaORDwfBk1xXmRO0CAe5VwNQTM98aWaG2LAIiIdTe53iV/B7W5lXlIy2xYtf0JRb7Q=="
},
"duplexer": { "duplexer": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.2.tgz", "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.2.tgz",
...@@ -11804,63 +11864,6 @@ ...@@ -11804,63 +11864,6 @@
} }
} }
}, },
"vue-loader-v16": {
"version": "npm:vue-loader@16.0.0-beta.8",
"resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.0.0-beta.8.tgz?cache=0&sync_timestamp=1600850425972&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.0.0-beta.8.tgz",
"integrity": "sha1-H1I9n+qOjG5PW7mf12gWWvWEWHk=",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1601839122515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
"integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591687028262&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz",
"integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
"integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
"dev": true,
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
}
}
},
"vue-router": { "vue-router": {
"version": "3.4.6", "version": "3.4.6",
"resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.4.6.tgz?cache=0&sync_timestamp=1602077426782&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.4.6.tgz", "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.4.6.tgz?cache=0&sync_timestamp=1602077426782&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.4.6.tgz",
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
}, },
"dependencies": { "dependencies": {
"core-js": "^3.6.5", "core-js": "^3.6.5",
"driver.js": "^0.9.8",
"echarts": "^4.9.0", "echarts": "^4.9.0",
"element-ui": "^2.4.5", "element-ui": "^2.4.5",
"js-cookie": "^2.2.1", "js-cookie": "^2.2.1",
......
...@@ -8,4 +8,11 @@ ...@@ -8,4 +8,11 @@
export default {}; export default {};
</script> </script>
<style></style> <style lang="scss" scoped>
/*每个页面公共css */
@import "assets/styles/main.scss";
#app {
height: 100%;
width: 100%;
}
</style>
...@@ -6,6 +6,22 @@ import store from "./store"; ...@@ -6,6 +6,22 @@ import store from "./store";
import "./plugins/element.js"; import "./plugins/element.js";
import Util from "./utils/util"; import Util from "./utils/util";
import VueWechatTitle from "vue-wechat-title"; import VueWechatTitle from "vue-wechat-title";
import Watermark from "./utils/watermark.js"
import Driver from 'driver.js'
import 'driver.js/dist/driver.min.css'
Vue.prototype.$driver = new Driver({
className: "scoped-class", // className to wrap driver.js popover
animate: true, // Animate while changing highlighted element
opacity: 0.75, // Background opacity (0 means only popovers and without overlay)
padding: 1, // Distance of element from around the edges
allowClose: true, // Whether clicking on overlay should close or not
overlayClickNext: false, // Should it move to next step on overlay click
doneBtnText: "完成", // Text on the final button
closeBtnText: "关闭", // Text on the close button for this step
nextBtnText: "下一步", // Next button text for this step
prevBtnText: "上一步" // Previous button text for this step
})
import Nsloading from "./components/Loading.vue"; import Nsloading from "./components/Loading.vue";
Vue.prototype.$store = store; Vue.prototype.$store = store;
......
import axios from "axios"; import axios from "axios";
import { getToken } from "./auth.js"; // import { getToken } from "./auth.js";
import { Message } from "element-ui"; import { Message,MessageBox } from "element-ui";
import store from "@/store"; import qs from "qs";
let http = axios.create({
// baseURL: Config.baseUrl,
timeout: 60 * 1000
});
axios.defaults.timeout = 0;
axios.defaults.headers = { axios.defaults.headers = {
"X-Requested-With": "XMLHttpRequest" "X-Requested-With": "XMLHttpRequest"
}; };
axios.defaults.responseType = "json"; axios.defaults.responseType = "json";
// axios.defaults.withCredentials = true;
var instance = axios.create({
headers: { "content-type": "multipart/form-data" }
});
var down = axios.create({
headers: { "content-type": "multipart/form-data" }
});
down.defaults.responseType = "arraybuffer";
// request 请求拦截器 // request 请求拦截器
http.interceptors.request.use( axios.interceptors.request.use(
config => { config => {
debugger; config.headers["Content-Type"] = "application/x-www-form-urlencoded";
config.headers["Content-Type"] = "application/json; charset=utf-8";
// 请求前进行拦截, 验证是否已经登录等
const token = getToken();
if (token) {
if (config.url.indexOf("/login") === -1) {
config.headers.common["Authorization"] = token;
}
}
if (config.contentType) {
config.headers["Content-Type"] = config.contentType;
}
return config; return config;
}, },
error => { error => {
...@@ -36,138 +31,67 @@ http.interceptors.request.use( ...@@ -36,138 +31,67 @@ http.interceptors.request.use(
); );
// response 响应拦截器 // response 响应拦截器
http.interceptors.response.use( axios.interceptors.response.use(
response => { response => {
return response.data; const status = response.data.code;
}, const message = response.data.message;
error => { var relUrlIp = window.location.host.substring(
switch (error.response && error.response.status) { 0,
case 500: window.location.host.length - 5
Message({ );
type: "error", var self = this
message: "网络错误, 请稍候再试", if (status == "202") {
duration: 3000 MessageBox.confirm("系统登录超时,请重新登录", "提示", {
}); confirmButtonText: "确定",
break; cancelButtonText: "取消",
case 504:
Message({
type: "error",
message: error.response
? `请求失败:${error.response.statusText}`
: `请求失败`,
duration: 3000
});
break;
case 404:
Message({
type: "error",
message: "请求错误,未找到该请求",
duration: 3000
});
break;
case 401:
Message({
type: "warning", type: "warning",
message: "登录已失效, 请重新登录", })
duration: 3000 .then(() => {
}); if(relUrlIp =='47.92.225.109' ){
this.$store.dispatch("user/remove_token"); // window.open('http://47.92.225.109:8300/#/login', '_blank')
this.router.replace({ window.location.href = 'http://47.92.225.109:8300/#/login';
path: "/login", }else if(relUrlIp =='26.3.13.120'){
query: { window.location.href = 'http://26.3.13.120:8050/#/login';
redirect: this.router.currentRoute.fullPath }else if(relUrlIp =='10.142.16.177'){
window.location.href = 'http://10.142.16.177:8050/#/login';
} else{
// window.open('http://localhost:8080/#/login', '_blank')
window.location.href = 'http://localhost:8080/#/login';
} }
}); })
break; }
default: if (status < 0) {
Message({ Message({
type: "error", message: message,
message: error.response type: "error"
? `请求失败:${error.response.message}`
: `请求失败`,
duration: 3000
}); });
return Promise.reject(new Error(message));
} }
return response.data;
return Promise.reject(error); },
error => {
return Promise.reject(new Error(error));
} }
); );
var relUrlIp = window.location.host.substring( instance.interceptors.response.use(
0, response => {
window.location.host.length - 5 const status = response.data.code;
const message = response.data.message;
if (status < 0) {
Message({
message: message,
type: "error"
});
return Promise.reject(new Error(message));
}
return response.data;
},
error => {
return Promise.reject(new Error(error));
}
); );
let base = {
bigurl: "",
mapurl: "",
bigwfwurl: "",
bigservicesurl: "",
alyIP: "",
naotuPath: "",
XingZhen: "",
ZhiTu_url: "",
naotuurl: "",
Ptlogin: "",
ebss: "",
test: ""
};
if (
relUrlIp == "68.174.69.46" ||
relUrlIp == "68.175.7.118" ||
relUrlIp == "65.65.100.205" ||
relUrlIp == "68.175.7.150" ||
relUrlIp == "68.175.7.95" ||
relUrlIp == "68.174.25.98" ||
relUrlIp == "68.175.7.120"
) {
//地图后台服务路径 公安网
base.XingZhen = "http://68.174.69.95";
base.mapurl = "http://68.174.25.99:8051";
/*登陆*/
base.Ptlogin = "http://68.174.25.99:8061";
base.ebss = "http://68.174.25.107:8090";
/*脑图服务旧 公安网*/
base.bigurl = "http://77.1.24.51:8080";
/*东莞智通服务*/
base.ZhiTu_url = "http://39.99.159.210:8053";
/*脑图微服务新*/
base.bigwfwurl = "http://77.1.24.51:8050";
/*以图搜图*/
base.naotuurl = "http://47.92.226.24:8051";
base.bigservicesurl = "http://77.1.24.51:9040";
base.naotuPath = "http://68.174.25.90:8101";
/*阿里云ip*/
base.alyIP = "47.92.48.137";
} else if (relUrlIp == "47.92.48.137") {
//地图后台服务路径
base.XingZhen = "http://68.174.69.95";
base.mapurl = "http://47.92.48.137:8050";
base.bigurl = "http://47.92.48.137:8080";
base.bigwfwurl = "http://47.92.225.109:8050";
base.bigservicesurl = "http://47.92.225.109:9040";
base.naotuPath = "http://47.92.48.137:9099";
base.naotuurl = "http://39.99.159.210:8051";
base.ZhiTu_url = "http://39.99.159.210:8053";
/*阿里云ip*/
base.alyIP = "47.92.48.137";
base.test = "http://39.99.159.210:8052";
} else {
//地图后台服务路径
base.XingZhen = "http://192.168.1.110";
base.mapurl = "http://39.99.159.210:8051";
base.bigurl = "http://47.92.48.137:8080";
base.bigwfwurl = "http://47.92.225.109:8050";
base.bigservicesurl = "http://47.92.225.109:9040";
base.naotuPath = "http://47.92.48.137:9099";
base.naotuurl = "http://39.99.159.210:8051";
base.ZhiTu_url = "http://39.99.159.210:8053";
base.Ptlogin = "http://39.99.159.210:8052";
/*阿里云ip*/
base.alyIP = "localhost";
base.test = "http://39.99.159.210:8052";
}
/** /**
* 封装get方法 * 封装get方法
* @param url * @param url
...@@ -198,23 +122,47 @@ export function get(url, params) { ...@@ -198,23 +122,47 @@ export function get(url, params) {
export function post(url, params) { export function post(url, params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios.post(url, params).then( axios
response => { .post(url, qs.stringify(params))
resolve(response.data); .then(response => {
var urlIp = window.location.host.substring( resolve(response);
0, })
window.location.host.length - 5 .catch(err => {
); reject(err.data);
var logs = { });
ip: urlIp, });
request: url, }
params: params
}; /**
store.commit("user/SET_Logs", logs); * 封装post请求 multipart/form-data
}, * @param url
err => { * @param data
reject(err); * @returns {Promise}
} */
); export function postform(url, data) {
return new Promise((resolve, reject) => {
instance.post(url, data).then(response => {
resolve(response);
});
}).catch(err => {
reject(err.data);
});
}
/**
* 封装post请求 文件下载
* @param url
* @param data
* @returns {Promise}
*/
export function postdown(url, data) {
return new Promise((resolve, reject) => {
down.post(url, data).then(response => {
resolve(response);
});
}).catch(err => {
reject(err.data);
}); });
} }
export default axios;
/*
验证规则
*/
const validateisSFZH = (rule, value, callback) => {
// let patter = new RegExp("/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/");//验证是否身份证号
let patter = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;//验证是否手机号
if (!patter.test(value)) {
return callback(new Error("请输入正确格式的身份证号!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validateisNoiDentity = (rule, value, callback) => {
// let patter = new RegExp("/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/");//验证是否身份证号
let patter = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;//验证是否手机号
if (!value) {
callback()
}
if (!patter.test(value)) {
return callback(new Error("请输入正确格式的身份证号!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validateisIphone = (rule, value, callback) => {
// let patter = new RegExp("/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/");//验证是否身份证号
let patter = /^1[345789]\d{9}$/;//验证是否手机号
if (!value) {
callback()
}
if (!patter.test(value)) {
return callback(new Error("请输入正确格式的手机号!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validateisPhone = (rule, value, callback) => {
let patter = /^1[345789]\d{9}$/;//验证是否手机号
console.log(value)
// let patter = new RegExp("/^1[345789]\d{9}$/");//验证是否手机号
if (!patter.test(value)) {
return callback(new Error("请输入正确格式的手机号!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validateisNumber = (rule, value, callback) => {
let patter = /^[0-9]*$/;//验证是否是数字
if (!patter.test(value)) {
return callback(new Error("请输入正确的数字!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validateisWeight = (rule, value, callback) => {
let patter = /^(0(\.\d{1}){0,1}|[1-8]\d{1,3}(\.\d{1}){0,1}|9\d{1,2}(\.\d{1}){0,1}|999(\.0){0,1}|.{0})$/;
if (!patter.test(value)) {
return callback(new Error("请输入正确的体重!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validateisAj = (rule, value, callback) => {
let patter = /^A[0-9]{22}$/;//验证是否是案件编号
if (!patter.test(value)) {
return callback(new Error("请输入正确的案件编号!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validateisYczc = (rule, value, callback) => {
let patter = /^[A-Za-z0-9]{6}$/;//验证是否是车牌号
if (!patter.test(value)) {
return callback(new Error("请输入正确的车牌号!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validateisPassword = (rule, value, callback) => {
let patter = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6}$/;//验证是否是正确的6位密码
if (!patter.test(value)) {
return callback(new Error("请输入正确的正确的6位密码!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validateLowerCase = (rule, value, callback) => {
let patter = /^[a-z]+$/;//验证是否是小写字母
if (!patter.test(value)) {
return callback(new Error("请输入正确的是小写字母!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validatePowerCase = (rule, value, callback) => {
let patter = /^[A-Z]+$/;//验证是否是大写字母
if (!patter.test(value)) {
return callback(new Error("请输入正确的大写字母!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
const validatAlphabets = (rule, value, callback) => {
let patter = /^[A-Za-z]+$/;//验证是否是大小写字母
if (!patter.test(value)) {
return callback(new Error("请输入正确的大小写字母!"));
} else {
callback();//必须有此项回调,否则验证会一直不通过
}
};
//直接验证通过
const validatStraightly = (rule, value, callback) => {
callback()
};
const checkEmpty = (rule, value, callback) => {
console.log(value)
if (!value) {
return callback(new Error('不能为空'));
}
};
export default {
checkEmpty: [
{
required: true,
message: "不能为空",
trigger: "blur"
}
],
emptyAbleIphone: [{
validator: validateisIphone,
trigger: "blur",
message: "请输入正确格式的手机号"
}],
identity: [{
validator: validateisSFZH,
trigger: "blur",
message: "请输入正确格式的身份证号"
}],
emptyAbleIdentity: [{
validator: validateisNoiDentity,
trigger: "blur",
required: true,
message: "请输入正确格式的身份证号"
}],
mobilePhone: [{
validator: validateisPhone,
trigger: "blur",
message: "请输入正确格式的手机号"
}],
number: [{
required: true,
message: "数字不能为空"
}, {
validator: validateisNumber,
trigger: "blur",
message: "请输入正确的数字"
}],
caseNumber: [{
required: true,
message: "案件编号不能为空"
}, {
validator: validateisAj,
trigger: "blur",
message: "请输入正确格式的案件编号"
}],
//体重
weight: [{
validator: validateisWeight,
trigger: "blur",
message: "请输入正确的数字"
}],
carNumber: [{
required: true,
message: "车牌号不能为空"
}, {
validator: validateisYczc,
trigger: "blur",
message: "请输入正确格式的车牌号码"
}],
password: [{
required: true,
message: "密码不能为空"
}, {
validator: validateisPassword,
trigger: "blur",
message: "请输入正确格式的6位密码"
}],
lowerCase: [{
required: true,
message: "密码不能为空"
}, {
validator: validateLowerCase,
trigger: "blur",
message: "请输入正确格式的小写字母"
}],
powerCase: [{
required: true,
message: "大写不能为空"
}, {
validator: validatePowerCase,
trigger: "blur",
message: "请输入正确格式的大写字母"
}],
alphabets: [{
required: true,
message: "大小写不能为空"
}, {
validator: validatAlphabets,
trigger: "blur",
message: "请输入正确格式的大小写字母"
}],
//体重
validatStraightly: [{
trigger: "blur",
}],
}
\ No newline at end of file
let watermark = {}
let setWatermark = (str,str3,str4,str5) => {
let id = '1.23452384164.123412415'
if (document.getElementById(id) !== null) {
document.body.removeChild(document.getElementById(id))
}
let can = document.createElement('canvas')
can.width = 300
can.height = 230
let cans = can.getContext('2d')
cans.rotate(-20 * Math.PI / 180)
cans.font = '13px Vedana'
cans.fillStyle = 'rgba(0, 0, 0, 0.1)'
cans.textAlign = 'left'
cans.textBaseline = 'Middle'
cans.fillText(str, can.width / 3, can.height / 2)
cans.fillText(str3, can.width / 3, can.height / 1.73)
cans.fillText(str4, can.width / 3, can.height / 1.55)
cans.fillText(str5, can.width / 3, can.height / 1.38)
let div = document.createElement('div')
div.id = id
div.style.pointerEvents = 'none'
div.style.top = '70px'
div.style.left = '50px'
div.style.position = 'fixed'
div.style.zIndex = '100000'
div.style.width = document.documentElement.clientWidth - 125 + 'px'
div.style.height = document.documentElement.clientHeight - 125 + 'px'
div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'
document.body.appendChild(div)
return id
}
// 该方法只允许调用一次
watermark.set = (str,str3,str4,str5) => {
let id = setWatermark(str,str3,str4,str5)
setInterval(() => {
if (document.getElementById(id) === null) {
id = setWatermark(str,str3,str4,str5)
}
}, 500)
window.onresize = () => {
setWatermark(str,str3,str4,str5)
}
}
export default watermark
const path = require("path"); const path = require("path");
const CompressionPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i;
// function resolve(dir) { // function resolve(dir) {
// return path.join(__dirname, dir); // return path.join(__dirname, dir);
...@@ -27,6 +29,7 @@ module.exports = { ...@@ -27,6 +29,7 @@ module.exports = {
} }
}); });
}, },
lintOnSave: false, //关闭eslint
chainWebpack: config => { chainWebpack: config => {
const oneOfsMap = config.module.rule("scss").oneOfs.store; const oneOfsMap = config.module.rule("scss").oneOfs.store;
oneOfsMap.forEach(item => { oneOfsMap.forEach(item => {
...@@ -47,13 +50,17 @@ module.exports = { ...@@ -47,13 +50,17 @@ module.exports = {
}, },
proxy: { proxy: {
"/api": { "/api": {
target: "http://192.168.1.103:8050", //统一的请求头部每次修改都要重启才会生效 target: "http://192.168.0.137:8080/", //统一的请求头部每次修改都要重启才会生效 http://39.99.224.27:8006/
ws: true, ws: true,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
"^/api": "/api" '^/api': '/'
}
} }
} }
},
},
css: {
sourceMap: process.env.NODE_ENV === "development" ?true:false // 在开发环境下开启 CSS sourcemaps
} }
}; };
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 to comment