935090232@qq.com
2021-11-21 59634aeabb04aae0e819bd4c5fe909bb9cdbeb28
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
/**
 * ajax请求的代理类 1、系统在一般情况都使用本类进行ajax请求不在使用原生的或者jQuery的ajax 原因:
 * 1、本类对异常信息,错误信息进行了信息提示处理 2、本类与服务器端的AjaxResult.java 对应,接收的数据格式是AjaxResult.java
 * 的json格式数据
 *
 * author :姜友瑶; 2016-06-02
 */
 
 
 
var AjaxProxy = {
 
    requst: function (option) {
        // 是否开启遮罩
        var params = {
            url: '',
            type: 'post',
            dataType: 'json',
            data: {},
            cache: false,
            async: true,
            callback: null,
            fail:null,
            contentType: 'application/json;charset=utf-8',
            processData: true,
            showLoad: true,
            showLoadTip: '提交中',
            app: {},//vue实例
        };
 
        params = $.extend(params, option);
        if (params.contentType && params.contentType.indexOf('application/json') > -1 && params.type == 'post') {
            params.data = JSON.stringify(params.data)
        }
        let loading = {};
        if (params.showLoad) {
            loading = params.app.$loading({
                lock: true,
                text: 'Loading',
                spinner: 'el-icon-loading',
                background: 'rgba(0, 0, 0, 0.7)'
            });
        }
 
        return xhr = $.ajax({
            url: params.url,
            type: params.type,
            data: params.data,
            dataType: params.dataType,
            contentType: params.contentType,
            processData: params.processData,
            async: params.async,
            success: function (data) {
                if (params.showLoad) {
                    loading.close();
                }
                if (data.status && data.status != '200') {
                    if (data.info) {
                        params.app.$message({
                            message: data.info,
                            type: 'warning'
                        });
                    }
                    params.fail && params.fail(data);
                } else {
                    params.callback && params.callback(data);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                console.log(XMLHttpRequest, textStatus, errorThrown);
                params.app.$message.error('网络连接失败,请稍后重试!');
                if (params.showLoad) {
                    loading.close();
                }
            },
            /*complete:function(XMLHttpRequest,status){ //请求完成后最终执行参数
                if(status=='timeout'){//超时,status还有success,error等值的情况
                    xhr.abort();
                    $.hideLoading()
                    $.toast("网络请求超时,请检查网络后再试");
                }
            }*/
        });
    }
 
}
 
 
function uploadForImage(url, data, callback, token) {//data是文件对象
    let xhr = new XMLHttpRequest();
    let form = new FormData();
    form.append('file', data);
 
    function uploadProgress(e) {
        if (e.lengthComputable) {
            let progress = Math.round((e.loaded / e.total) * 100);
            callback(progress);
        }
    }
 
    /*
    * 监听请求的进度并在回调中传入进度参数*/
    xhr.upload.addEventListener('progress', uploadProgress, false);  // 第三个参数为useCapture?,是否使用事件捕获/冒泡
    /*
    * 监听readyState的变化,完成时回调后端返回的response
    * */
    xhr.addEventListener('readystatechange', function (e) {
        console.log(e);
        let response = e.currentTarget.response ? JSON.parse(e.currentTarget.response) : null;
        if (e.currentTarget.readyState === 4 && response) {
            callback(100, response);
            xhr.upload.removeEventListener('progress', uploadProgress, false)
        }
    }, false);
 
    xhr.open('POST', url, true);  // 第三个参数为async?,异步/同步
    xhr.setRequestHeader("accessToken", token);
    xhr.send(form);
}
 
 
 
var MTools = {
    closeIframe: function () {
        parent.layer.close(parent.layer.getFrameIndex(window.name));
    },
 
    /** 返回一个随机字符串 */
    uuid : function() {
 
            function S4() {
                return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
            }
            return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
 
    },
 
    padLeftZero: function (str) {
        return ('00' + str).substr(str.length)
    },
 
     isRealNum:function(val){
        // isNaN()函数 把空串 空格 以及NUll 按照0来处理 所以先去除,
 
        if(val === "" || val ==null){
            return false;
        }
        if(!isNaN(val)){
            //对于空数组和只有一个数值成员的数组或全是数字组成的字符串,isNaN返回false,例如:'123'、[]、[2]、['123'],isNaN返回false,
            //所以如果不需要val包含这些特殊情况,则这个判断改写为if(!isNaN(val) && typeof val === 'number' )
            return true;
        }
 
        else{
            return false;
        }
    },
 
    formatDate: function (date, fmt) {
        var date = new Date(date);
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
        }
        let o = {
            'M+': date.getMonth() + 1,
            'd+': date.getDate(),
            'h+': date.getHours(),
            'm+': date.getMinutes(),
            's+': date.getSeconds()
        }
        for (let k in o) {
            if (new RegExp(`(${k})`).test(fmt)) {
                let str = o[k] + ''
                fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : this.padLeftZero(str))
            }
        }
        return fmt
    },
 
    /**
    * 字符串转数组
     */
    strToArray:function(str,patten,needToNum){
        let arr=new Array();
        if(str && str.trim().length>0){
            arr=str.split(patten)
            if(needToNum){
                let arrNum=new Array();
                arr.forEach(item => {
                    arrNum.push(parseInt(item));
                });
                arr=arrNum;
            }
        }
        return arr;
    },
 
    isNotBlank:function(str){
        return  str !== undefined && str !== null &&  str !== ''
    },
 
    isBlank:function(str){
        return  str == undefined || str == null ||  str == ''
    },
 
    /** 页面定向 */
    redirect : function(url) {
        window.location.href = url;
    },
 
 
    createTreeModel : function(datas, seting) {
        // 配置对象
        var _seting = {
            id : "id",        // 选项的值
            parent : "parentId",// 父节点值
        }
        var _seting = $.extend(_seting, seting);
        // 用每一个节点的id标识一个节点对象,这里是所有对象的map集合
        var _datas = {};
        var nodeNength = datas.length;
        for (var i = 0; i < nodeNength; i++) {
            // 用id来唯一标识这个节点
            _datas[datas[i][_seting.id]] = datas[i];
        }
        // 构建树模型 root 是这课树的集合
        var root = {};
        root.children = [];
        for (var i = 0; i < nodeNength; i++) {
            var node = datas[i];
            // _datas中 如果存在 datas 对应的 父节,把当前的节点放入父节点
            if (_datas[node[_seting.parent]]) {
                var parent = _datas[node[_seting.parent]];
                if (parent.children) {
                    parent.children.push(_datas[node[_seting.id]]);
                } else {
                    parent.children = [];
                    parent.children.push(_datas[node[_seting.id]]);
                }
            } else {// 如果不存在父节点就放入根节点中
                root.children.push(_datas[node[_seting.id]]);
            }
        }
      return root.children;
    },
 
    /** json对象转Url参数**/
    jsonToUrlParam:function(obj){
        let str="";
        for(item in obj){
            if(obj[item]){
                str+=item+"="+obj[item]+"&"
            }
        }
        return str;
    }
 
 
 
}