PageSourceSearch

https://www.bizmakebiz.co.il/Scripts/VueComponents/js/leadRate.js?v=1026

js bizmakebiz.co.il collected 2026-10-02 07:36:09 UTC 21,690 bytes, 328 lines download raw bytes

1"use strict";
2setTimeout(function () {
3    if (document.getElementsByClassName("leadRateContainer").length > 0) {
4        var Vue = window.Vue;
5        var LeadsRate = new Vue({
6            el: "lead-rate",
7            data: function data() {
8                return {
9                    dataLoaded: false,
10                    leadsData: [],
11                    CurrentLeadIndex: 0,
12                    CurrentLead: null,
13                    priceRate: 10,
14                    serviceRate: 10,
15                    timeRate: 10,
16                    reliabilityRate: 10,
17                    fairCommission: "",
18                    showOpinion: false,
19                    showLeadForm: true,
20                    showEndOfLeads: false,
21                    $priceRateslide: null,
22                    $serviceRateSlide: null,
23                    $timeRateSlide: null,
24                    $reliabilityRate: null,
25                    $fairCommissionSelect: null,
26
27                }
28            },
29            created: function () {
30                this.init();
31            },
32            methods: {
33
34                init: function () {
35                    var self = this;
36                    self.get().then(function (r) {
37                        // self.leadsData.push(r);
38                        var tempArr = {};
39                        var result = [];
40                        for (var key in r) tempArr[key] = r[key].RequestedItems;
41                        for (var key in r) tempArr[key] = r[key].RequestedItems;
42                        for (var i in tempArr) {
43                            for (var j = 0; j < tempArr[i].length; j++) {
44                                result.push(tempArr[i][j]);
45                            }
46                        }
47                        self.leadsData = result;
48                        if (self.leadsData.length > 0) {
49                            self.getCurrentLead().then(function (response) {
50                                self.CurrentLead = response;
51                                if (self.isLeadRateHiddenOnSessionStorage() === true && self.getLastLeadCountFromSessionStorage() < self.leadsData.length) {
52                                    self.clearSessionStorage();
53                                    self.dataLoaded = true;
54                                } else if (self.isLeadRateHiddenOnSessionStorage() === false) {
55                                    self.dataLoaded = true;
56                                }
57
58                            });
59                        }
60
61
62                    });
63
64                },
65                get: function () {
66                    var self = this;
67                    return new Promise(function (resolve, reject) {
68                        self.$http.get('/Handlers/LeadHandler.ashx?action=GetMemberLeadListToRate').then(function (response) {
69                            var r = JSON.parse(response.body.Data);
70                            resolve(r);
71                        }), function (error) {
72                            // http failed, let the calling function know that action did not work out
73                            reject(error);
74                        }
75                    });
76                },
77                getCurrentLead: function () {
78                    var self = this;
79                    var tmp_current = this.leadsData[this.leadsData.length - 1];
80                    return new Promise(function (resolve, reject) {
81                        self.$http.get('/Handlers/MemberHandler.ashx?action=GetMemberInfo&userid=' + tmp_current.Reciever.Guid).then(function (response) {
82                            var r = JSON.parse(response.body.Data)
83                            tmp_current.Reciever.Member = r;
84
85                            self.CurrentLeadIndex = self.leadsData.map(function (e) { return e.Id }).indexOf(tmp_current.Id);
86                            resolve(tmp_current);
87                        }), function (error) {
88                            reject(error);
89                        }
90                    });
91
92
93                },
94                moveNextLead: function () {
95                    var self = this;
96                    this.leadsData.splice(this.CurrentLeadIndex, 1);
97                    if (this.leadsData.length > 0) {
98                        $('#LeadFormContainer').animate({
99                            right: 1000
100                        }, 200, function () {
101                            $('#LeadFormContainer').css('disply', 'none');
102                            self.getCurrentLead().then(function (response) {
103                                if (!response) {
104                                    return;
105                                } else {
106                                    self.CurrentLead = response;
107                                    self.resetRateData();
108                                    $('#LeadFormContainer').css('right', -1000)
109                                    $('#LeadFormContainer').animate({
110                                        right: 20
111                                    }, 500, function () {
112                                        $(this).css('disply', '');
113                                    })
114                                }
115
116                            });
117                        })
118                    } else {
119                        this.showLeadForm = false;
120                        this.showEndOfLeads = true;
121                        setTimeout(function () {
122                            $('.leadRateInnerContainer').animate({
123                                height: 0
124                            }, 500, function () {
125                                self.dataLoaded = false;
126
127                            })
128                        }, 2000)
129
130                    }
131
132                },
133                ignoreCurrentLeadRate: function () {
134                    var self = this;
135                    self.$http.get('/Handlers/LeadHandler.ashx?action=LeadRateIgnored&LeadId=' + self.CurrentLead.Id).then(function (response) {
136                        var r = JSON.parse(response.body.JsonResult);
137
138                        if (r) {
139                            self.moveNextLead();
140                        }
141                    }), function (error) {
142                        // http failed, let the calling function know that action did not work out
143                        reject(error);
144                    };
145                },
146
147                saveLeadRate: function (leadId) {
148                    var self = this;
149                    var data = {
150                        LeadId: leadId,
151                        PriceRate: this.priceRate,
152                        ServiceRate: this.serviceRate,
153                        TimeRate: this.timeRate,
154                        ReliabilityRate: this.reliabilityRate,
155                        FairCommission: this.fairCommission
156                    };
157
158                    this.saveRate(data).then(function (result) {
159                        if (result) {
160                            self.getOpinion(self.CurrentLead.Reciever.Guid).then(function (opinion_result) {
161                                if (opinion_result) {
162                                    var opinion_json_result = opinion_result;
163                                    self.showOpinion = false;
164                                    self.moveNextLead();
165                                } else {
166                                    self.showOpinion = true;
167                                    self.showLeadForm = false;
168                                }
169                            });
170                        }
171                    });
172
173                },
174                saveRate: function (data) {
175                    var self = this;
176                    return new Promise(function (resolve, reject) {
177                        self.$http.post('/Handlers/LeadHandler.ashx?action=RateClosedLead', data,
178                            {
179                                emulateJSON: true,
180                                headers: {
181                                    dataType: 'json',
182                                    contentType: 'application/json; charset=utf-8'
183                                }
184                            }).then(function (response) {
185                                if (response.body.Data) {
186                                    var r = JSON.parse(response.body.Data);
187                                    resolve(r);
188                                } else {
189                                    reject("error");
190                                }
191
192                            }), function (error) {
193                                reject(error);
194                            };
195                    });
196                },
197                getOpinion: function (opinionTarget) {
198                    var self = this;
199                    return new Promise(function (resolve, reject) {
200                        self.$http.post('/Handlers/OpinionHandler.ashx?action=GetMemberOpinionAboutOtherMember', { OpinionTarget: opinionTarget },
201                            {
202                                emulateJSON: true,
203                                headers: {
204                                    dataType: 'json',
205                                    contentType: 'application/json; charset=utf-8'
206                                }
207                            }).then(function (response) {
208                                var r = JSON.parse(response.body.Data)
209                                resolve(r);
210                            }), function (error) {
211                                reject(error);
212                            }
213                    });
214                },
215                addOpinion: function () {
216                    var self = this;
217                    if ($('#opinionContent').val().trim().length > 0) {
218                        var data = {
219                            opinionId: 0,
220                            opinionType: "Lead",
221                            customOpinionType: "",
222                            memberId: self.CurrentLead.Reciever.Guid,
223                            Content: $('#opinionContent').val()
224                        }
225
226                        this.saveOpinion(data).then(function (result) {
227                            if (result) {
228                                self.showLeadForm = true;
229                                self.showOpinion = false;
230                                self.moveNextLead();
231
232                            }
233                        })
234
235                    } else {
236                        alert('אנא כתוב טקסט לחוות הדעת');
237                    }
238                },
239                saveOpinion: function (data) {
240                    var self = this;
241                    return new Promise(function (resolve, reject) {
242                        self.$http.post('/Handlers/OpinionHandler.ashx?action=AddOpinion', data,
243                            {
244                                emulateJSON: true,
245                                headers: {
246                                    dataType: 'json',
247                                    contentType: 'application/json; charset=utf-8'
248                                }
249                            }).then(function (response) {
250                                var r = JSON.parse(response.body.JsonResult);
251                                if (r) {
252                                    resolve(r);
253                                }
254                                else {
255                                    reject("error");
256                                }
257                            }), function (error) {
258                                reject(error);
259                            }
260                    });
261                },
262                resetRateData: function () {
263                    this.priceRate = 10;
264                    this.serviceRate = 10;
265                    this.timeRate = 10;
266                    this.reliabilityRate = 10;
267                    this.fairCommission = "";
268
269                    var priceRate = this.$priceRateslide.data("ionRangeSlider");
270                    var serviceRateSlide = this.$serviceRateSlide.data("ionRangeSlider");
271                    var timeRateSlide = this.$timeRateSlide.data("ionRangeSlider");
272                    var reliabilityRate = this.$reliabilityRate.data("ionRangeSlider");
273                    this.$fairCommissionSelect.val("");
274                    priceRate.update({ from: 10 });
275                    serviceRateSlide.update({ from: 10 });
276                    timeRateSlide.update({ from: 10 });
277                    reliabilityRate.update({ from: 10 });
278                },
279                hideLeadRateWindow: function () {
280                    this.dataLoaded = false;
281                    sessionStorage.setItem("hideLeadrate", JSON.stringify({ "hidden": true, "lead_count": this.leadsData.length }));
282                },
283                isLeadRateHiddenOnSessionStorage: function () {
284                    var val = sessionStorage.getItem("hideLeadrate");
285                    if (JSON.parse(val) !== null && JSON.parse(val).hidden == true) {
286                        return true;
287                    } else { return false; }
288                },
289                getLastLeadCountFromSessionStorage: function () {
290                    var val = sessionStorage.getItem("hideLeadrate");
291                    if (JSON.parse(val).lead_count) {
292                        return JSON.parse(val).lead_count;
293                    } else { return -1; }
294                },
295                clearSessionStorage: function () {
296                    sessionStorage.removeItem("hideLeadrate");
297                }
298            },
299            components: {
300
301            },
302            updated: function () {
303                var self = this;
304
305                self.$priceRateslide = $("#priceRate");
306                self.$priceRateslide.ionRangeSlider({ onStart: function (data) { self.priceRate = data.from } });
307                self.$priceRateslide.on('change', function () { var $this = $(this); self.priceRate = $this.prop("value"); })
308
309                self.$serviceRateSlide = $("#serviceRate");
310                self.$serviceRateSlide.ionRangeSlider({ onStart: function (data) { self.serviceRate = data.from } });
311                self.$serviceRateSlide.on('change', function () { var $this = $(this); self.serviceRate = $this.prop("value"); })
312
313                self.$timeRateSlide = $('#timeRate');
314                self.$timeRateSlide.ionRangeSlider({ onStart: function (data) { self.timeRate = data.from } });
315                self.$timeRateSlide.on('change', function () { var $this = $(this); self.timeRate = $this.prop("value"); })
316
317                self.$reliabilityRate = $("#reliabilityRate")
318                self.$reliabilityRate.ionRangeSlider({ onStart: function (data) { self.reliabilityRate = data.from } });
319                self.$reliabilityRate.on('change', function () { var $this = $(this); self.reliabilityRate = $this.prop("value"); })
320
321                self.$fairCommissionSelect = $("#FairCommission")
322                self.$fairCommissionSelect.on('change', function (data) { var $this = $(this); self.fairCommission = $this.prop("value"); })
323            },
324            template: '<div class="leadRateInnerContainer" v-if="dataLoaded">                         <div class="pull-left closeIcone" v-on:click="hideLeadRateWindow()"><i class="fas fa-times"></i></div>                         <h3 class="">כל הכבוד ההפניה ששלחתם ל - {{ CurrentLead.Reciever.Member.name }} בוצעה!</h3>                         <p class="font_18">עכשיו הזמן לדרג ולספר על התנסותכם (הדירוג הינו אנונימי)</p>                         <div id="LeadFormContainer" v-if="showLeadForm">                             <div class="col-xs-12">                                 <div class="noPadding pull-right"><h5 class="noMargin">שם השירות:</h5></div><div class="col-xs-9 col-md-9 serviceName"> {{ CurrentLead.Name }}</div>                             </div>                             <div class="clear spacer_25"></div>                         <form class="form-inline" >                                                     <input type="hidden" id="leadId" name="leadId" :value="CurrentLead.Id">                             <div class="col-xs-12">                                 <div class="col-xs-2 col-md-1 noPadding">                                     <p class="line-height-40  noMargin noPadding padding_top_10"><strong>מחיר</strong></p>                                 </div>                                 <div class="col-xs-10 col-md-11 noPadding">                                     <input type="text" data-min="0" data-max="10" data-grid-num="10" data-hide-min-max="false" data-from="10" id="priceRate" name="priceRate"  />                                 </div>                             </div>                             <div class="clearfix"></div>                             <div class="col-xs-12">                                 <div class="col-xs-2 col-md-1 noPadding">                                     <p class="line-height-40 noM
324argin noPadding padding_top_10"><strong>שירות</strong></p>                                 </div>                                 <div class="col-xs-10 col-md-11 noPadding">                                     <input type="text" data-min="0" data-max="10" data-grid-num="10" data-hide-min-max="false" :data-from="10" id="serviceRate" name="serviceRate" />                                 </div>                             </div>                             <div class="clearfix"></div>                             <div class="col-xs-12">                                 <div class="col-xs-2 col-md-1 noPadding">                                     <p class="line-height-40 noMargin noPadding padding_top_10"><strong>זמינות</strong></p>                                 </div>                                 <div class="col-xs-10 col-md-11 noPadding">                                     <input type="text" data-min="0" data-max="10" data-grid-num="10" data-hide-min-max="false" :data-from="10" id="timeRate" name="timeRate" />                                 </div>                             </div>                             <div class="clearfix"></div>                             <div class="col-xs-12">                                 <div class="col-xs-2 col-md-1 noPadding">                                     <p class="line-height-40 noMargin noPadding padding_top_10"><strong>אמינות</strong></p>                                 </div>                                 <div class="col-xs-10 col-md-11 noPadding">                                     <input type="text" data-min="0" data-max="10" data-grid-num="10" data-hide-min-max="false" :data-from="10" id="reliabilityRate" name="reliabilityRate" />                                 </div>                             </div>                             <div class="clear spacer_25"></div>                             <div class="form-group col-xs-12 col-md-8">                                 <select class="form-control" id="FairCommission" name="FairCommission">                                     <option value="">האם כמות הקרידטים שקיבלת היתה הוגנת?</option>                                                                  <option value="Yes">כן</option>                                     <option value="No">לא</option>                                 </select>                             </div>                             <div class="col-xs-12 col-md-4">                                 <button type="button" class="btn btn-primary leadRate" v-on:click="saveLeadRate(CurrentLead.Id)"><i class="fas fa-star"></i> דרג/י</button>                                 <button type="button" class="btn btn-default pull-left leadRate"  v-on:click="ignoreCurrentLeadRate()">לא כרגע</button>                             </div>                             <div class="clearfix"></div>                         </form></div><form v-if="showOpinion">                                     <div class="form-group col-xs-12">                                      <label for="content" class="control-label">ספרו על חוויית השירות שקיבלתם מ{{CurrentLead.Reciever.Member.name}}</label>                                                <textarea id="opinionContent" name="content" class="form-control" rows="8"></textarea>                                                              </div>                                 <div class="clearfix"></div>                                 <div class="col-xs-12">                                     <button type="button" class="btn btn-primary leadRate" v-on:click="addOpinion()"><i class="fas fa-plus"></i> הוספת חוות דעת</button>                                     <button type="button" class="btn btn-default pull-left leadRate"  v-on:click="ignoreCurrentLeadRate()">לא כרגע</button>                                 </div>                         </form>                                                  <div class="endOfLeads" v-if="showEndOfLeads">מעולה, נראה שדירגת את כל ההפניות שלך!</div>                     </div>'
325
326        });
327    }
328}, 100);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.