From 50d114ffb36cd494b0708206c6ca49e99d85a855 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Fri, 05 Jan 2024 14:44:53 +0800
Subject: [PATCH] 住户管理--房屋管理下住户新增: 字段调整,显示调整、校验添加
---
src/util/util.js | 249 ++++++++++++++++++++++++++++++-------------------
1 files changed, 152 insertions(+), 97 deletions(-)
diff --git a/src/util/util.js b/src/util/util.js
index dd8d384..83cd2f7 100644
--- a/src/util/util.js
+++ b/src/util/util.js
@@ -1,53 +1,55 @@
-import {validatenull} from './validate'
+import { validatenull } from "./validate";
//表单序列化
-export const serialize = data => {
+export const serialize = (data) => {
let list = [];
- Object.keys(data).forEach(ele => {
- list.push(`${ele}=${data[ele]}`)
- })
- return list.join('&');
+ Object.keys(data).forEach((ele) => {
+ list.push(`${ele}=${data[ele]}`);
+ });
+ return list.join("&");
};
-export const getObjType = obj => {
+export const getObjType = (obj) => {
var toString = Object.prototype.toString;
var map = {
- '[object Boolean]': 'boolean',
- '[object Number]': 'number',
- '[object String]': 'string',
- '[object Function]': 'function',
- '[object Array]': 'array',
- '[object Date]': 'date',
- '[object RegExp]': 'regExp',
- '[object Undefined]': 'undefined',
- '[object Null]': 'null',
- '[object Object]': 'object'
+ "[object Boolean]": "boolean",
+ "[object Number]": "number",
+ "[object String]": "string",
+ "[object Function]": "function",
+ "[object Array]": "array",
+ "[object Date]": "date",
+ "[object RegExp]": "regExp",
+ "[object Undefined]": "undefined",
+ "[object Null]": "null",
+ "[object Object]": "object",
};
if (obj instanceof Element) {
- return 'element';
+ return "element";
}
return map[toString.call(obj)];
};
export const getViewDom = () => {
- return window.document.getElementById('avue-view').getElementsByClassName('el-scrollbar__wrap')[0]
-}
+ return window.document
+ .getElementById("avue-view")
+ .getElementsByClassName("el-scrollbar__wrap")[0];
+};
/**
* 对象深拷贝
*/
-export const deepClone = data => {
+export const deepClone = (data) => {
var type = getObjType(data);
var obj;
- if (type === 'array') {
+ if (type === "array") {
obj = [];
- } else if (type === 'object') {
+ } else if (type === "object") {
obj = {};
} else {
//不再具有下一层次
return data;
}
- if (type === 'array') {
+ if (type === "array") {
for (var i = 0, len = data.length; i < len; i++) {
obj.push(deepClone(data[i]));
}
- } else if (type === 'object') {
+ } else if (type === "object") {
for (var key in data) {
obj[key] = deepClone(data[key]);
}
@@ -59,9 +61,9 @@
*/
export const toggleGrayMode = (status) => {
if (status) {
- document.body.className = document.body.className + ' grayMode';
+ document.body.className = document.body.className + " grayMode";
} else {
- document.body.className = document.body.className.replace(' grayMode', '');
+ document.body.className = document.body.className.replace(" grayMode", "");
}
};
/**
@@ -69,32 +71,25 @@
*/
export const setTheme = (name) => {
document.body.className = name;
-}
+};
/**
* 加密处理
*/
export const encryption = (params) => {
- let {
- data,
- type,
- param,
- key
- } = params;
+ let { data, type, param, key } = params;
let result = JSON.parse(JSON.stringify(data));
- if (type == 'Base64') {
- param.forEach(ele => {
+ if (type == "Base64") {
+ param.forEach((ele) => {
result[ele] = btoa(result[ele]);
- })
- } else if (type == 'Aes') {
- param.forEach(ele => {
+ });
+ } else if (type == "Aes") {
+ param.forEach((ele) => {
result[ele] = window.CryptoJS.AES.encrypt(result[ele], key).toString();
- })
-
+ });
}
return result;
};
-
/**
* 浏览器判断是否全屏
@@ -111,7 +106,7 @@
*/
export const listenfullscreen = (callback) => {
function listen() {
- callback()
+ callback();
}
document.addEventListener("fullscreenchange", function () {
@@ -131,9 +126,12 @@
* 浏览器判断是否全屏
*/
export const fullscreenEnable = () => {
- var isFullscreen = document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen
+ var isFullscreen =
+ document.isFullScreen ||
+ document.mozIsFullScreen ||
+ document.webkitIsFullScreen;
return isFullscreen;
-}
+};
/**
* 浏览器全屏
@@ -186,12 +184,12 @@
* 动态插入css
*/
-export const loadStyle = url => {
- const link = document.createElement('link');
- link.type = 'text/css';
- link.rel = 'stylesheet';
+export const loadStyle = (url) => {
+ const link = document.createElement("link");
+ link.type = "text/css";
+ link.rel = "stylesheet";
link.href = url;
- const head = document.getElementsByTagName('head')[0];
+ const head = document.getElementsByTagName("head")[0];
head.appendChild(link);
};
/**
@@ -201,7 +199,8 @@
delete obj1.close;
var o1 = obj1 instanceof Object;
var o2 = obj2 instanceof Object;
- if (!o1 || !o2) { /* 判断不是对象 */
+ if (!o1 || !o2) {
+ /* 判断不是对象 */
return obj1 === obj2;
}
@@ -220,14 +219,18 @@
}
}
return true;
-}
+};
/**
* 根据字典的value显示label
*/
export const findByvalue = (dic, value) => {
- let result = '';
+ let result = "";
if (validatenull(dic)) return value;
- if (typeof (value) == 'string' || typeof (value) == 'number' || typeof (value) == 'boolean') {
+ if (
+ typeof value == "string" ||
+ typeof value == "number" ||
+ typeof value == "boolean"
+ ) {
let index = 0;
index = findArray(dic, value);
if (index != -1) {
@@ -238,7 +241,7 @@
} else if (value instanceof Array) {
result = [];
let index = 0;
- value.forEach(ele => {
+ value.forEach((ele) => {
index = findArray(dic, ele);
if (index != -1) {
result.push(dic[index].label);
@@ -265,8 +268,10 @@
* 生成随机len位数字
*/
export const randomLenNum = (len, date) => {
- let random = '';
- random = Math.ceil(Math.random() * 100000000000000).toString().substr(0, len ? len : 4);
+ let random = "";
+ random = Math.ceil(Math.random() * 100000000000000)
+ .toString()
+ .substr(0, len ? len : 4);
if (date) random = random + Date.now();
return random;
};
@@ -275,28 +280,49 @@
*/
export const openWindow = (url, title, w, h) => {
// Fixes dual-screen position Most browsers Firefox
- const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left
- const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top
+ const dualScreenLeft =
+ window.screenLeft !== undefined ? window.screenLeft : screen.left;
+ const dualScreenTop =
+ window.screenTop !== undefined ? window.screenTop : screen.top;
- const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width
- const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height
+ const width = window.innerWidth
+ ? window.innerWidth
+ : document.documentElement.clientWidth
+ ? document.documentElement.clientWidth
+ : screen.width;
+ const height = window.innerHeight
+ ? window.innerHeight
+ : document.documentElement.clientHeight
+ ? document.documentElement.clientHeight
+ : screen.height;
- const left = ((width / 2) - (w / 2)) + dualScreenLeft
- const top = ((height / 2) - (h / 2)) + dualScreenTop
- const newWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left)
+ const left = width / 2 - w / 2 + dualScreenLeft;
+ const top = height / 2 - h / 2 + dualScreenTop;
+ const newWindow = window.open(
+ url,
+ title,
+ "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=" +
+ w +
+ ", height=" +
+ h +
+ ", top=" +
+ top +
+ ", left=" +
+ left
+ );
// Puts focus on the newWindow
if (window.focus) {
- newWindow.focus()
+ newWindow.focus();
}
-}
+};
/**
* 获取顶部地址栏地址
*/
export const getTopUrl = () => {
return window.location.href.split("/#/")[0];
-}
+};
/**
* 获取url参数
@@ -307,7 +333,7 @@
let r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(decodeURI(r[2]));
return null;
-}
+};
/**
* 下载文件
@@ -316,19 +342,19 @@
*/
export const downloadFileBlob = (path, name) => {
const xhr = new XMLHttpRequest();
- xhr.open('get', path);
- xhr.responseType = 'blob';
+ xhr.open("get", path);
+ xhr.responseType = "blob";
xhr.send();
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
// 如果是IE10及以上,不支持download属性,采用msSaveOrOpenBlob方法,但是IE10以下也不支持msSaveOrOpenBlob
- if ('msSaveOrOpenBlob' in navigator) {
+ if ("msSaveOrOpenBlob" in navigator) {
navigator.msSaveOrOpenBlob(this.response, name);
return;
}
const url = URL.createObjectURL(this.response);
- const a = document.createElement('a');
- a.style.display = 'none';
+ const a = document.createElement("a");
+ a.style.display = "none";
a.href = url;
a.download = name;
document.body.appendChild(a);
@@ -337,7 +363,7 @@
URL.revokeObjectURL(url);
}
};
-}
+};
/**
* 下载文件
@@ -346,16 +372,16 @@
*/
export const downloadFileBase64 = (path, name) => {
const xhr = new XMLHttpRequest();
- xhr.open('get', path);
- xhr.responseType = 'blob';
+ xhr.open("get", path);
+ xhr.responseType = "blob";
xhr.send();
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
const fileReader = new FileReader();
fileReader.readAsDataURL(this.response);
fileReader.onload = function () {
- const a = document.createElement('a');
- a.style.display = 'none';
+ const a = document.createElement("a");
+ a.style.display = "none";
a.href = this.result;
a.download = name;
document.body.appendChild(a);
@@ -364,7 +390,7 @@
};
}
};
-}
+};
/**
* 下载excel
@@ -372,34 +398,63 @@
* @param {String} filename 文件名称
*/
export const downloadXls = (fileArrayBuffer, filename) => {
- let data = new Blob([fileArrayBuffer], {type: 'application/vnd.ms-excel,charset=utf-8'});
- if (typeof window.chrome !== 'undefined') {
+ let data = new Blob([fileArrayBuffer], {
+ type: "application/vnd.ms-excel,charset=utf-8",
+ });
+ if (typeof window.chrome !== "undefined") {
// Chrome
- var link = document.createElement('a');
+ var link = document.createElement("a");
link.href = window.URL.createObjectURL(data);
link.download = filename;
link.click();
- } else if (typeof window.navigator.msSaveBlob !== 'undefined') {
+ } else if (typeof window.navigator.msSaveBlob !== "undefined") {
// IE
- var blob = new Blob([data], {type: 'application/force-download'});
+ var blob = new Blob([data], { type: "application/force-download" });
window.navigator.msSaveBlob(blob, filename);
} else {
// Firefox
- var file = new File([data], filename, {type: 'application/force-download'});
+ var file = new File([data], filename, {
+ type: "application/force-download",
+ });
window.open(URL.createObjectURL(file));
}
-}
+};
export const processArray = (arr) => {
- arr.forEach(item => {
- if ('children' in item && item.children.length > 0) {
- item.children = processArray(item.children)
- } else {
- if ('children' in item) {
- delete item.children
- }
- }
- })
+ arr.forEach((item) => {
+ if ("children" in item && item.children.length > 0) {
+ item.children = processArray(item.children);
+ } else {
+ if ("children" in item) {
+ delete item.children;
+ }
+ }
+ });
- return arr
-}
\ No newline at end of file
+ return arr;
+};
+
+export const findParentOrCur = (data, targetId) => {
+ function traverse(node, path) {
+ if (node.id === targetId) {
+ return path.concat(node.name);
+ }
+ if (node.children) {
+ for (let child of node.children) {
+ let result = traverse(child, path.concat(node.name));
+ if (result) {
+ return result;
+ }
+ }
+ }
+ }
+
+ for (let node of data) {
+ let result = traverse(node, []);
+ if (result) {
+ return result.join("-");
+ }
+ }
+
+ return null; // 如果找不到目标id,返回null
+};
--
Gitblit v1.9.3