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