/* * @FilePath: liao.js * @Author: 小飞侠 * @Date: 2024-03-01 09:11:24 * @LastEditors: Please set LastEditors * @LastEditTime: 2024-03-21 09:47:04 * Copyright: 2024 MinTinge CO.,LTD. All Rights Reserved. * @Descripttion: 写入你的描述 */ /** * @description: 在树形数组中找到满足条件的项 * @param {*} tree 目标数组 * @param {*} predicate 筛选函数 * @return {*} * @author: 小飞侠 * @Date: 2024-02-29 15:19:46 * @LastEditors: * @LastEditTime: Do not Edit */ function filterTreeWithjQuery(tree, predicate) { var results = []; function traverse(node) { if (predicate(node)) { results.push(node); } if (node.children && Array.isArray(node.children)) { $.each(node.children, traverse); } } $.each(tree, traverse); return results; } /** * @description: 判断一个字符串是不是数字字符串 * @param {*} str * @return {*} * @author: 小飞侠 * @Date: 2024-03-01 08:59:13 * @LastEditors: * @LastEditTime: Do not Edit */ function isNumericString(str) { const regex = /^-?\d+(\.\d+)?$/; // 匹配整数或小数,包括负数 return regex.test(str); } /** * 当使用了formatAreaInPut 后 可使用此函数获取一个由地址id组成的areaId 字符串,用,号分割 * @param {Object} field -表单。 */ function GetAreaCodeFormFileid(field,idname) { let areaCode=""; if (isNumericString(field[`${idname}_1`])) { areaCode+=`${field[`${idname}_1`]}`; if (isNumericString(field[`${idname}_2`])) areaCode+=`,${field[`${idname}_2`]}`; if (isNumericString(field[`${idname}_3`])) areaCode+=`,${field[`${idname}_3`]}`; } else { } return areaCode; } /** * 生成一个地址选择组件,必须绑定一个叫 areaId 的 组件 " * 会生成几个areaId-1,areaId-3,areaId-3 * @param {Object} coreHelper - 核心辅助对象,用于执行HTTP请求等操作。 */ function formatAreaInPut(coreHelper,idname,areaid="") { let area=0; if(areaid!=="") area= areaid.split(",").reverse()[0]; coreHelper.Post("Api/Tools/GetAreaCheckedList", { id: Number(area) }, function (data) { if (debug) { console.log(data); } //开启调试返回数据 var str = ""; $.each(data, function (i, n) { str += `"; }); $(`input[name='${idname}']`).after(str); //以上数据输出完,以下绑定事件 $.each(data, function (i, n) { if (i < (data.length)) { $(`select[name='${idname}_` + (i + 1) + "']").change(function () { changeareaIdArea(i + 1, data.length,idname); }); } }); }); function changeareaIdArea(i, max_i,idname) { //清除后面节点 for (var x = i + 1; x <= 6; x++) { //最多6层,足够了 $(`select[name='${idname}_` + x + "']").remove(); } var val = $(`select[name='${idname}_` + i + "']").val(); if (val != "") { //取子节点数据,然后显示下一级 coreHelper.Post("Api/Tools/GetAreaChildren", { id: val }, function (e) { if (debug) { console.log(e); } //开启调试返回数据 if (e.length > 0) { var str = ""; str += `"; $(`select[name='${idname}_` + i + "']").after(str); //以上数据输出完,以下绑定事件 $(`select[name='${idname}_` + (i+1) + "']").change(function () { changeareaIdArea(i + 1, i + 2,idname); }); //如果有返回值,就说明省市区没有选择到最终节点 if (1 == 1) { $(`input[name='${idname}']`).val(""); } else { $(`input[name='${idname}']`).val($(`select[name='${idname}_` + i + "']").val()); } } else { $(`input[name='${idname}']`).val($(`select[name='${idname}_` + i + "']").val()); } }); } else { if (1 == 1) { $(`input[name='${idname}']`).val(""); } else { //第一级的元素就直接赋值为空就是了 if (i == 1) { $(`input[name='${idname}']`).val(""); } else { i--; $(`input[name='${idname}']`).val($(`select[name='${idname}` + i + "']").val()); } } } } }