温红权 3 سال پیش
والد
کامیت
0fa63750e4

+ 1 - 0
ruoyi-ui/package.json

@@ -40,6 +40,7 @@
     "axios": "0.21.0",
     "clipboard": "2.0.6",
     "core-js": "^3.19.1",
+    "crypto-js": "^4.1.1",
     "echarts": "^4.9.0",
     "element-ui": "2.15.2",
     "file-saver": "2.0.4",

BIN
ruoyi-ui/src/assets/images/gpsb@2x.png


BIN
ruoyi-ui/src/assets/images/heiyan@2x.png


BIN
ruoyi-ui/src/assets/images/txsb_selected@2x.png


+ 168 - 127
ruoyi-ui/src/utils/ruoyi.js

@@ -7,120 +7,122 @@ const baseURL = process.env.VUE_APP_BASE_API
 
 // 日期格式化
 export function parseTime(time, pattern) {
-	if (arguments.length === 0 || !time) {
-		return null
-	}
-	const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
-	let date
-	if (typeof time === 'object') {
-		date = time
-	} else {
-		if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
-			time = parseInt(time)
-		} else if (typeof time === 'string') {
-			time = time.replace(new RegExp(/-/gm), '/');
-		}
-		if ((typeof time === 'number') && (time.toString().length === 10)) {
-			time = time * 1000
-		}
-		date = new Date(time)
-	}
-	const formatObj = {
-		y: date.getFullYear(),
-		m: date.getMonth() + 1,
-		d: date.getDate(),
-		h: date.getHours(),
-		i: date.getMinutes(),
-		s: date.getSeconds(),
-		a: date.getDay()
-	}
-	const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
-		let value = formatObj[key]
-		// Note: getDay() returns 0 on Sunday
-		if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
-		if (result.length > 0 && value < 10) {
-			value = '0' + value
-		}
-		return value || 0
-	})
-	return time_str
+    if (arguments.length === 0 || !time) {
+        return null
+    }
+    const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
+    let date
+    if (typeof time === 'object') {
+        date = time
+    } else {
+        if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
+            time = parseInt(time)
+        } else if (typeof time === 'string') {
+            time = time.replace(new RegExp(/-/gm), '/');
+        }
+        if ((typeof time === 'number') && (time.toString().length === 10)) {
+            time = time * 1000
+        }
+        date = new Date(time)
+    }
+    const formatObj = {
+        y: date.getFullYear(),
+        m: date.getMonth() + 1,
+        d: date.getDate(),
+        h: date.getHours(),
+        i: date.getMinutes(),
+        s: date.getSeconds(),
+        a: date.getDay()
+    }
+    const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
+        let value = formatObj[key]
+            // Note: getDay() returns 0 on Sunday
+        if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
+        if (result.length > 0 && value < 10) {
+            value = '0' + value
+        }
+        return value || 0
+    })
+    return time_str
 }
 
 // 表单重置
 export function resetForm(refName) {
-	if (this.$refs[refName]) {
-		this.$refs[refName].resetFields();
-	}
+    if (this.$refs[refName]) {
+        this.$refs[refName].resetFields();
+    }
 }
 
 // 添加日期范围
 export function addDateRange(params, dateRange, propName) {
-	var search = params;
-	search.params = {};
-	if (null != dateRange && '' != dateRange) {
-		if (typeof (propName) === "undefined") {
-			search.params["beginTime"] = dateRange[0];
-			search.params["endTime"] = dateRange[1];
-		} else {
-			search.params["begin" + propName] = dateRange[0];
-			search.params["end" + propName] = dateRange[1];
-		}
-	}
-	return search;
+    var search = params;
+    search.params = {};
+    if (null != dateRange && '' != dateRange) {
+        if (typeof(propName) === "undefined") {
+            search.params["beginTime"] = dateRange[0];
+            search.params["endTime"] = dateRange[1];
+        } else {
+            search.params["begin" + propName] = dateRange[0];
+            search.params["end" + propName] = dateRange[1];
+        }
+    }
+    return search;
 }
 
 // 回显数据字典
 export function selectDictLabel(datas, value) {
-	var actions = [];
-	Object.keys(datas).some((key) => {
-		if (datas[key].dictValue == ('' + value)) {
-			actions.push(datas[key].dictLabel);
-			return true;
-		}
-	})
-	return actions.join('');
+    var actions = [];
+    Object.keys(datas).some((key) => {
+        if (datas[key].dictValue == ('' + value)) {
+            actions.push(datas[key].dictLabel);
+            return true;
+        }
+    })
+    return actions.join('');
 }
 
 // 回显数据字典(字符串数组)
 export function selectDictLabels(datas, value, separator) {
-	var actions = [];
-	var currentSeparator = undefined === separator ? "," : separator;
-	var temp = value.split(currentSeparator);
-	Object.keys(value.split(currentSeparator)).some((val) => {
-		Object.keys(datas).some((key) => {
-			if (datas[key].dictValue == ('' + temp[val])) {
-				actions.push(datas[key].dictLabel + currentSeparator);
-			}
-		})
-	})
-	return actions.join('').substring(0, actions.join('').length - 1);
+    var actions = [];
+    var currentSeparator = undefined === separator ? "," : separator;
+    var temp = value.split(currentSeparator);
+    Object.keys(value.split(currentSeparator)).some((val) => {
+        Object.keys(datas).some((key) => {
+            if (datas[key].dictValue == ('' + temp[val])) {
+                actions.push(datas[key].dictLabel + currentSeparator);
+            }
+        })
+    })
+    return actions.join('').substring(0, actions.join('').length - 1);
 }
 
 // 通用下载方法
 export function download(fileName) {
-	window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
+    window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
 }
 
 // 字符串格式化(%s )
 export function sprintf(str) {
-	var args = arguments, flag = true, i = 1;
-	str = str.replace(/%s/g, function () {
-		var arg = args[i++];
-		if (typeof arg === 'undefined') {
-			flag = false;
-			return '';
-		}
-		return arg;
-	});
-	return flag ? str : '';
+    var args = arguments,
+        flag = true,
+        i = 1;
+    str = str.replace(/%s/g, function() {
+        var arg = args[i++];
+        if (typeof arg === 'undefined') {
+            flag = false;
+            return '';
+        }
+        return arg;
+    });
+    return flag ? str : '';
 }
 
 // 转换字符串,undefined,null等转化为""
 export function praseStrEmpty(str) {
-	if (!str || str == "undefined" || str == "null") {
-		return "";
-	}
-	return str;
+    if (!str || str == "undefined" || str == "null") {
+        return "";
+    }
+    return str;
 }
 
 /**
@@ -131,45 +133,84 @@ export function praseStrEmpty(str) {
  * @param {*} children 孩子节点字段 默认 'children'
  */
 export function handleTree(data, id, parentId, children) {
-	let config = {
-		id: id || 'id',
-		parentId: parentId || 'parentId',
-		childrenList: children || 'children'
-	};
-
-	var childrenListMap = {};
-	var nodeIds = {};
-	var tree = [];
-
-	for (let d of data) {
-		let parentId = d[config.parentId];
-		if (childrenListMap[parentId] == null) {
-			childrenListMap[parentId] = [];
-		}
-		nodeIds[d[config.id]] = d;
-		childrenListMap[parentId].push(d);
-	}
-
-	for (let d of data) {
-		let parentId = d[config.parentId];
-		if (nodeIds[parentId] == null) {
-			tree.push(d);
-		}
-	}
-
-	for (let t of tree) {
-		adaptToChildrenList(t);
-	}
-
-	function adaptToChildrenList(o) {
-		if (childrenListMap[o[config.id]] !== null) {
-			o[config.childrenList] = childrenListMap[o[config.id]];
-		}
-		if (o[config.childrenList]) {
-			for (let c of o[config.childrenList]) {
-				adaptToChildrenList(c);
-			}
-		}
-	}
-	return tree;
+    let config = {
+        id: id || 'id',
+        parentId: parentId || 'parentId',
+        childrenList: children || 'children'
+    };
+
+    var childrenListMap = {};
+    var nodeIds = {};
+    var tree = [];
+
+    for (let d of data) {
+        let parentId = d[config.parentId];
+        if (childrenListMap[parentId] == null) {
+            childrenListMap[parentId] = [];
+        }
+        nodeIds[d[config.id]] = d;
+        childrenListMap[parentId].push(d);
+    }
+
+    for (let d of data) {
+        let parentId = d[config.parentId];
+        if (nodeIds[parentId] == null) {
+            tree.push(d);
+        }
+    }
+
+    for (let t of tree) {
+        adaptToChildrenList(t);
+    }
+
+    function adaptToChildrenList(o) {
+        if (childrenListMap[o[config.id]] !== null) {
+            o[config.childrenList] = childrenListMap[o[config.id]];
+        }
+        if (o[config.childrenList]) {
+            for (let c of o[config.childrenList]) {
+                adaptToChildrenList(c);
+            }
+        }
+    }
+    return tree;
 }
+
+
+const CryptoJS = require("crypto-js"); //引用AES源码js
+
+const key = CryptoJS.enc.Utf8.parse(fillKey("xintong")); //十六位十六进制数作为密钥
+const iv = CryptoJS.enc.Utf8.parse("ABCDEF1234123412"); //十六位十六进制数作为密钥偏移量
+function fillKey(key) {
+    const filledKey = Buffer.alloc(128 / 8);
+    const keys = Buffer.from(key);
+    if (keys.length < filledKey.length) {
+        filledKey.map((b, i) => filledKey[i] = keys[i]);
+    }
+    return filledKey;
+}
+//解密方法
+function Decrypt(word) {
+    let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
+    let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
+    let decrypt = CryptoJS.AES.decrypt(srcs, key, {
+        // iv: iv,
+        mode: CryptoJS.mode.ECB,
+        padding: CryptoJS.pad.Pkcs7,
+    });
+    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
+    return decryptedStr.toString();
+}
+
+//加密方法
+function Encrypt(word) {
+    let srcs = CryptoJS.enc.Utf8.parse(word);
+    let encrypted = CryptoJS.AES.encrypt(srcs, key, {
+        // iv: iv,
+        mode: CryptoJS.mode.ECB,
+        padding: CryptoJS.pad.Pkcs7,
+    });
+    return encrypted.ciphertext.toString();
+}
+
+export { Decrypt, Encrypt };

+ 31 - 4
ruoyi-ui/src/views/home.vue

@@ -105,10 +105,10 @@
         </div>
       </div>
     </div>
-     <div style="position: absolute;right: 0;color: white;top: 20rem;font-size: 11rem;">
-       <div style="display: inline-block;margin-right:6rem"><a href="http://198.17.188.2">光谱</a></div>
-       <div style="display: inline-block;margin-right:6rem"><a href="http://198.17.188.2">嗅探</a></div>
-       <div style="display: inline-block;margin-right:20rem"><a href="http://198.17.188.6:8090/">黑烟</a></div>
+     <div style="position: absolute;right: 0;color: #3FC9FD;top: 28rem;font-size: 9rem;">
+       <div style="display: inline-block;margin-right:6rem"><a :href="gosubsys('http://198.17.188.2','','',1)"><img style="width:20px;vertical-align: middle;margin-right:2px" src="../assets/images/txsb_selected@2x.png"/>光谱</a></div>
+       <div style="display: inline-block;margin-right:6rem"><a :href="gosubsys('http://198.17.188.2','','',2)"><img  style="width:20px;vertical-align: middle;margin-right:2px" src="../assets/images/gpsb@2x.png"/>嗅探</a></div>
+       <div style="display: inline-block;margin-right:20rem"><a :href="gosubsys('http://198.17.188.6:8090','','',1)" ><img style="width:20px;vertical-align: middle;margin-right:2px" src="../assets/images/heiyan@2x.png"/>黑烟</a></div>
      </div>
     <div class="center_content">
 
@@ -167,6 +167,9 @@ import logininforTable from './monitor/logininfor/index.vue'
 import liuTable from './components/table/liuTable.vue'
 import homeTable from './components/table/homeTable.vue'
 
+import {  Decrypt, Encrypt  } from "../utils/ruoyi.js";
+
+
 export default {
   name: 'index',
   components: {
@@ -188,7 +191,31 @@ export default {
       menuShow: 0
     }
   },
+  mounted:function(){
+    const CryptoJS = require("crypto-js"); //引用AES源码js
+    var jsons = {
+      "username":"",
+      "password":"",
+      "timestamp":Date.parse(new Date())/1000,
+      "optauth":1
+    }
+    console.log(jsons);
+    console.log("code="+encodeURIComponent(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(Encrypt(JSON.stringify(jsons))))));
+  },
   methods: {
+    gosubsys(url,username="",password="",opt=1){
+       const CryptoJS = require("crypto-js"); //引用AES源码js
+    var jsons = {
+      "username":username,
+      "password":password,
+      "timestamp":Date.parse(new Date())/1000,
+      "optauth":opt
+    }
+    // console.log(jsons);
+    // console.log("code="+encodeURI(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(Encrypt(JSON.stringify(jsons))))));
+    return url+"?"+"code="+encodeURIComponent(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(Encrypt(JSON.stringify(jsons)))));
+
+    },
     goTarget(href) {
       window.open(href, '_blank')
     },