liaoxujun@qq.com
2024-03-22 d856b2d3c85f39a2908de47ad1934e34805591e4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/*
 * @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  的 组件   <input type="hidden"name="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 += `<select lay-ignore name='${idname}_` + (i + 1) + "' dep='" + (i + 1) + "'  class='select-address'>";
        str += "<option value='' >请选择</option>";
        $.each(n.list, function (h, z) {
            if (n.hasOwnProperty('info') && n.info?.id == z.id) {
                str += "<option value='" + z.id + "' selected='selected'>" + z.name + "</option>";
            } else {
                str += "<option value='" + z.id + "' >" + z.name + "</option>";
            }
        });
        str += "</select>";
    });
    $(`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 lay-ignore name='${idname}_` + (i + 1) + "' dep='" + (i + 1) + "'  class='select-address'>";
                str += "<option value='' >请选择</option>";
                $.each(e, function (h, z) {
                    str += "<option value='" + z.id + "' >" + z.name + "</option>";
                });
                str += "</select>";
                $(`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());
            }
 
        }
    }
}
}