Commit d0eb3bec authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 0a00901d e3a722de
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
"china-division": "^2.5.0", "china-division": "^2.5.0",
"clipboard": "^2.0.6", "clipboard": "^2.0.6",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"crypto-js": "^4.1.1",
"date-fns": "^2.14.0", "date-fns": "^2.14.0",
"echarts": "^5.2.2", "echarts": "^5.2.2",
"element-china-area-data": "^5.0.2", "element-china-area-data": "^5.0.2",
......
...@@ -31,16 +31,17 @@ ...@@ -31,16 +31,17 @@
border-bottom: 1px solid rgb(224, 224, 224) !important; border-bottom: 1px solid rgb(224, 224, 224) !important;
} }
.ant-tabs-tab{ .ant-tabs-tab {
font-weight: bold; font-weight: bold;
color: rgba(0, 0, 0, 0.65); color: rgba(0, 0, 0, 0.65);
i{ i {
color:#1890ff color: #1890ff;
} }
} }
.ant-spin-nested-loading,.ant-spin-container{ .ant-spin-nested-loading,
width:100%; .ant-spin-container {
height:100%; width: 100%;
height: 100%;
} }
/* 溢出表格滚动条 */ /* 溢出表格滚动条 */
/* 表格 */ /* 表格 */
...@@ -56,10 +57,9 @@ ...@@ -56,10 +57,9 @@
tr:only-child > th:last-child { tr:only-child > th:last-child {
border-right-color: #f0f0f0 !important; border-right-color: #f0f0f0 !important;
} }
} }
.ant-table-placeholder{ .ant-table-placeholder {
width:calc(100% - 6px) width: calc(100% - 6px);
} }
.ant-table-header { .ant-table-header {
background: #fff; background: #fff;
...@@ -118,4 +118,11 @@ ...@@ -118,4 +118,11 @@
// align-items: center; // align-items: center;
// justify-content:space-between; // justify-content:space-between;
// margin-bottom: 20px; // margin-bottom: 20px;
// } // }
\ No newline at end of file
// 统一设置表格为空时的展示
.ant-table-tbody {
td:empty::after {
content: "--";
}
}
...@@ -2,8 +2,9 @@ import Vue from "vue"; ...@@ -2,8 +2,9 @@ import Vue from "vue";
import Vuex from "vuex"; import Vuex from "vuex";
import modules from "./modules"; import modules from "./modules";
import createPersistedState from "vuex-persistedstate"; import createPersistedState from "vuex-persistedstate";
import SecureLS from "secure-ls"; // import SecureLS from "secure-ls";
var ls = new SecureLS({ isCompression: false }); // var ls = new SecureLS({ isCompression: false });
import { SessionCrypto } from "@/utils/util";
Vue.use(Vuex); Vue.use(Vuex);
const store = new Vuex.Store({ const store = new Vuex.Store({
modules, modules,
...@@ -15,9 +16,9 @@ const store = new Vuex.Store({ ...@@ -15,9 +16,9 @@ const store = new Vuex.Store({
createPersistedState({ createPersistedState({
key: "info", key: "info",
storage: { storage: {
getItem: (key) => ls.get(key), getItem: (key) => SessionCrypto.getItem(key),
setItem: (key, value) => ls.set(key, value), setItem: (key, value) => SessionCrypto.setItem(key, value),
removeItem: (key) => ls.remove(key), removeItem: (key) => SessionCrypto.remove(key),
}, },
}), }),
], ],
......
import enquireJs from "enquire.js"; import enquireJs from "enquire.js";
import CryptoJS from "crypto-js";
export function isDef(v) { export function isDef(v) {
return v !== undefined && v !== null; return v !== undefined && v !== null;
} }
...@@ -62,3 +62,52 @@ export const extractTree = (arrs, childs, attrArr) => { ...@@ -62,3 +62,52 @@ export const extractTree = (arrs, childs, attrArr) => {
}; };
return getObj(arrs); return getObj(arrs);
}; };
/**
* 加密存储临时数据并解析对象
*/
const aseKey = "**_FXxx_1234_KEY";
const KEY = "KEY_EXTRA";
export class SessionCrypto {
// 加密
static setItem(key = KEY, value = "") {
if (typeof key === "string") {
const stringify = JSON.stringify(value);
const encrypt = CryptoJS.AES.encrypt(
stringify,
CryptoJS.enc.Utf8.parse(aseKey),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
).toString();
window.sessionStorage.setItem(key, encrypt);
return encrypt;
}
}
// 解密
static getItem(key = KEY) {
const ssStr = window.sessionStorage.getItem(key) || "";
try {
if (ssStr) {
const decrypt = CryptoJS.AES.decrypt(
ssStr,
CryptoJS.enc.Utf8.parse(aseKey),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
).toString(CryptoJS.enc.Utf8);
const parseStr = JSON.parse(decrypt);
return parseStr;
}
return "";
} catch (e) {
return "";
}
}
// 删除
static remove(key) {
window.sessionStorage.removeItem(key);
}
}
...@@ -3676,6 +3676,11 @@ crypto-js@^3.1.6: ...@@ -3676,6 +3676,11 @@ crypto-js@^3.1.6:
resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b"
integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==
crypto-js@^4.1.1:
version "4.1.1"
resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf"
integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==
crypto-random-string@^2.0.0: crypto-random-string@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npm.taobao.org/crypto-random-string/download/crypto-random-string-2.0.0.tgz?cache=0&sync_timestamp=1583560482221&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcrypto-random-string%2Fdownload%2Fcrypto-random-string-2.0.0.tgz" resolved "https://registry.npm.taobao.org/crypto-random-string/download/crypto-random-string-2.0.0.tgz?cache=0&sync_timestamp=1583560482221&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcrypto-random-string%2Fdownload%2Fcrypto-random-string-2.0.0.tgz"
......
...@@ -776,4 +776,11 @@ img { ...@@ -776,4 +776,11 @@ img {
// } // }
// } // }
// } // }
// } // }
\ No newline at end of file
// 统一设置表格为空时的展示
.ant-table-tbody {
td:empty::after {
content: "--";
}
}
\ No newline at end of file
...@@ -2,9 +2,10 @@ import Vue from "vue"; ...@@ -2,9 +2,10 @@ import Vue from "vue";
import Vuex from "vuex"; import Vuex from "vuex";
import modules from "./modules"; import modules from "./modules";
import createPersistedState from "vuex-persistedstate"; import createPersistedState from "vuex-persistedstate";
import SecureLS from "secure-ls"; // import SecureLS from "secure-ls";
var ls = new SecureLS({ isCompression: false }); // var ls = new SecureLS({ isCompression: false });
import VuexReset from "@ianwalter/vuex-reset"; import VuexReset from "@ianwalter/vuex-reset";
import { SessionCrypto } from "@/utils";
// import persistedState from 'vuex-persistedstate' // import persistedState from 'vuex-persistedstate'
Vue.use(Vuex); Vue.use(Vuex);
const store = new Vuex.Store({ const store = new Vuex.Store({
...@@ -16,9 +17,9 @@ const store = new Vuex.Store({ ...@@ -16,9 +17,9 @@ const store = new Vuex.Store({
createPersistedState({ createPersistedState({
key: "info", key: "info",
storage: { storage: {
getItem: (key) => ls.get(key), getItem: (key) => SessionCrypto.getItem(key),
setItem: (key, value) => ls.set(key, value), setItem: (key, value) => SessionCrypto.setItem(key, value),
removeItem: (key) => ls.remove(key), removeItem: (key) => SessionCrypto.remove(key),
}, },
}), }),
], ],
......
...@@ -16,3 +16,66 @@ export let encrypt = (str, keyStr, ivStr) => { ...@@ -16,3 +16,66 @@ export let encrypt = (str, keyStr, ivStr) => {
return encrypted.toString(); return encrypted.toString();
}; };
// 解密
export const decrypt = (word, keyStr, ivStr) => {
keyStr = keyStr ? keyStr : "0000000671595991";
ivStr = ivStr ? ivStr : "tdrdadq59tbss5n7";
let key = CryptoJS.enc.Utf8.parse(keyStr);
let iv = CryptoJS.enc.Utf8.parse(ivStr);
let decrypt = CryptoJS.AES.decrypt(word, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
return decrypt.toString(CryptoJS.enc.Utf8);
};
/**
* 加密存储临时数据并解析对象
*/
const aseKey = "**_FXxx_1234_KEY";
const KEY = "KEY_EXTRA";
export class SessionCrypto {
// 加密
static setItem(key = KEY, value = "") {
if (typeof key === "string") {
const stringify = JSON.stringify(value);
const encrypt = CryptoJS.AES.encrypt(
stringify,
CryptoJS.enc.Utf8.parse(aseKey),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
).toString();
window.sessionStorage.setItem(key, encrypt);
return encrypt;
}
}
// 解密
static getItem(key = KEY) {
const ssStr = window.sessionStorage.getItem(key) || "";
try {
if (ssStr) {
const decrypt = CryptoJS.AES.decrypt(
ssStr,
CryptoJS.enc.Utf8.parse(aseKey),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
).toString(CryptoJS.enc.Utf8);
const parseStr = JSON.parse(decrypt);
return parseStr;
}
return "";
} catch (e) {
return "";
}
}
// 删除
static remove(key) {
window.sessionStorage.removeItem(key);
}
}
...@@ -80,23 +80,30 @@ export default { ...@@ -80,23 +80,30 @@ export default {
this.queryform.dateTimeStart = this.time ? this.time[0] : null; this.queryform.dateTimeStart = this.time ? this.time[0] : null;
this.queryform.dateTimeStart = this.time ? this.time[1] : null; this.queryform.dateTimeStart = this.time ? this.time[1] : null;
getWayAccessAnalyse(this.queryform).then((res) => { getWayAccessAnalyse(this.queryform).then((res) => {
let data = res.data.data.map((item, i) => let newobj = {};
item.code != "/sceneSignIn" let data = res.data.data.reduce((preVal, curVal) => {
? { newobj[curVal.name]
name: item.name, ? ""
} : (newobj[curVal.name] = preVal.push(curVal));
: "" return preVal;
); }, []);
// let data = res.data.data.map((item, i) =>
// item.code != "/sceneSignIn"
// ? {
// name: item.name,
// }
// : ""
// );
let links = res.data.links.map((item) => ({ let links = res.data.links.map((item) => ({
source: item.sourceName, source: item.sourceName,
target: item.targetName, target: item.targetName,
value: item.value, value: item.value,
lineStyle: { lineStyle: {
color: "source", color: "source",
}, },
})); }));
data = data.filter((v) => v); data = data.filter((v) => v);
links = links.filter((v) => v.target != "首页"); links = links.filter((v) => v.target != "首页" && v.target != v.source);
this.init(data, links); this.init(data, links);
}); });
}, },
......
...@@ -217,12 +217,14 @@ export default { ...@@ -217,12 +217,14 @@ export default {
display: flex; display: flex;
.img-dv { .img-dv {
width: 60%; flex: 1;
margin: 100px; margin: 100px;
height: 600px;
position: relative; position: relative;
img { img {
width: 100%; width: 100%;
height: 100%;
} }
#queuing { #queuing {
...@@ -236,7 +238,7 @@ export default { ...@@ -236,7 +238,7 @@ export default {
} }
.list-dv { .list-dv {
width: 40%; width: 55%;
min-height: 100%; min-height: 100%;
border-left: solid 1px #efefef; border-left: solid 1px #efefef;
box-sizing: border-box; box-sizing: border-box;
......
...@@ -361,6 +361,7 @@ export default { ...@@ -361,6 +361,7 @@ export default {
this.$emit("update", { total, time: this.searchForm.time }); this.$emit("update", { total, time: this.searchForm.time });
} }
this.loading = false; this.loading = false;
this.$forceUpdate();
}, },
// 翻页 // 翻页
......
...@@ -354,6 +354,7 @@ export default { ...@@ -354,6 +354,7 @@ export default {
this.$emit("update", { total, time: this.searchForm.time }); this.$emit("update", { total, time: this.searchForm.time });
} }
this.loading = false; this.loading = false;
this.$forceUpdate();
}, },
// 翻页 // 翻页
......
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