移动系统liao
2024-05-21 7f8aa838ab463151b8b1a784c48d0034ca005b61
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
/*
 * @FilePath: liao.js
 * @Author: 小飞侠
 * @Date: 2024-03-01 09:11:24
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2024-04-26 13:25:48
 * 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 !== "")&&(areaid!==null) &&(areaid!==0))
        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>";
            
            if(n?.list?.length>0)
            {
                $.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>";
                }
            });
            }
            else
            {
                $.each(n.thisList, 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);
                // });
                $(`select[name='${idname}_` + (i + 1) + "']").click(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());
                }
 
            }
        }
    }
}
/**
 * 根据用户选择,格式化并更新 select 输入元素中的选项。
 * @param {object} coreHelper 核心辅助对象,用于执行 post 请求等操作。
 * @param {object} form 表单对象,用于重新渲染 select 元素。
 * @param {string} idname select 元素的 id 名称。
 */
 
function formatUserSelInPut(coreHelper, form, idname,selectedID="") {
 
    // 向服务器发送请求,获取用户列表
    coreHelper.PostForm("Api/CommonAPI/GetUserList", { sKey: "" }, function (data) {
        if (debug) { console.log(data); } // 如果处于调试模式,打印返回的数据
 
        if (data.code == 0) {
            // 获取指定 id 的 select 元素
            var selectElement = document.getElementById(idname);
 
            // 遍历返回的用户数据,为 select 元素创建并添加新的 option 选项
            for (var i = 0; i < data.data.length; i++) {
                var option = document.createElement('option');
                option.value = data.data[i].id;
                if(selectedID==data.data[i].id){
                    option.selected=true;
                }
                option.innerHTML = data.data[i].name;
                selectElement.appendChild(option);
            }
           
            // 重新渲染 select 元素,确保新的选项生效
            form.render('select');
        }
    })
}
 
Date.prototype.Format = function (fmt) {
    //author: meizz
    var o = {
      "M+": this.getMonth() + 1, //月份
      "d+": this.getDate(), //日
      "h+": this.getHours(), //小时
      "m+": this.getMinutes(), //分
      "s+": this.getSeconds(), //秒
      "q+": Math.floor((this.getMonth() + 3) / 3), //季度
    };
    if (/(y+)/.test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        (this.getFullYear() + "").substr(4 - RegExp.$1.length)
      );
    for (var k in o)
      if (new RegExp("(" + k + ")").test(fmt))
        fmt = fmt.replace(
          RegExp.$1,
          RegExp.$1.length == 1
            ? o[k]
            : ("00" + o[k]).substr(("" + o[k]).length)
        );
    return fmt;
  };
 
/**
 * 检查给定的字符串是否为日期时间格式
 * @param {string} str - 需要检查的字符串
 * @return {boolean} 返回一个布尔值,指示字符串是否符合日期时间格式
 */
function isDateTimeString(str) {
  // 定义日期时间的正则表达式模式
  const dateTimePattern = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/;
  // 使用正则表达式模式测试字符串
  return dateTimePattern.test(str);
}
 
/**
 * 格式化商品分类选择输入框
 * @param {object} coreHelper 核心辅助对象,用于发送请求等操作
 * @param {object} form 表单对象,用于重新渲染select元素
 * @param {string} idname 输入框的id名称
 * @param {string} selectedID 默认选中的分类ID,为空时默认不选中任何项
 */
function formatGoodsCategorySelInPut(coreHelper, form, idname,selectedID="") {
 
    // 向服务器发送请求,获取用户列表
    coreHelper.PostForm("Api/CommonAPI/GetGoodsCategory", {  }, function (data) {
        if (debug) { console.log(data); } // 如果处于调试模式,打印返回的数据
 
        if (data.code == 0) {
            // 获取指定 id 的 select 元素
            var selectElement = document.getElementById(idname);
 
            // 遍历返回的用户数据,为 select 元素创建并添加新的 option 选项
            for (var i = 0; i < data.data.length; i++) {
                var option = document.createElement('option');
                option.value = data.data[i].id;
                if(selectedID==data.data[i].id){
                    option.selected=true;
                }
                option.innerHTML = data.data[i].name;
                selectElement.appendChild(option);
            }
           
            // 重新渲染 select 元素,确保新的选项生效
            form.render('select');
        }
    })
}