www.gusucode.com > iWebshop开源PHP商城系统 v2.8源码程序 > iwebshop/views/default/javascript/orderFormClass.js
/** * 订单对象 * address:收货地址; delivery:配送方式; payment:支付方式; */ function orderFormClass() { //是否为货到付款 0:否; 1:是; this.paytype = 0; this.freeFreight = 0; //视图状态模式 默认:edit this.addressMod = 'edit'; this.deliveryMod = 'edit'; this.paymentMod = 'edit'; this.messageMod = 'exit'; //当前正在使用的ID this.addressActiveId = ''; this.deliveryActiveId = ''; this.paymentActiveId = ''; this.messageActiveData = ''; //视图切换按钮ID this.addressToggleButton = 'addressToggleButton'; this.deliveryToggleButton = 'deliveryToggleButton'; this.paymentToggleButton = 'paymentToggleButton'; this.messageToggleButton = 'messageToggleButton'; this.orderAmount = 0;//订单金额 this.goodsSum = 0;//商品金额 this.deliveryPrice= 0;//运费金额 this.paymentPrice = 0;//支付金额 this.taxPrice = 0;//税金 this.protectPrice = 0;//保价 this.ticketPrice = 0;//代金券 /** * 算账 */ this.doAccount = function() { //税金 this.taxPrice = $('input:checkbox[name="taxes"]:checked').length > 0 ? $('input:checkbox[name="taxes"]:checked').val() : 0; //保价 this.protectPrice = $('input:checkbox[name="insured"]:checked').length > 0 ? $('input:checkbox[name="insured"]:checked').val() : 0; //代金券 this.ticketPrice = $('input:radio[name="ticket_id"]:checked').length > 0 ? $('input:radio[name="ticket_id"]:checked').attr('alt') : 0; //最终金额 this.orderAmount = parseFloat(this.goodsSum) - parseFloat(this.ticketPrice) + parseFloat(this.deliveryPrice) + parseFloat(this.paymentPrice) + parseFloat(this.taxPrice) + parseFloat(this.protectPrice); //刷新DOM数据 $('#final_sum').text(this.orderAmount); $('[name="ticket_value"]').text(this.ticketPrice); $('#delivery_fee_show').text(this.deliveryPrice); $('#protect_price_value').text(this.protectPrice); $('#payment_value').text(this.paymentPrice); $('#tax_fee').text(this.taxPrice); } /** * 初始化JS省份联动菜单 */ this.provinceMenuInit = function() { createAreaSelect('province',0,''); $('[name="city"]').empty(); $('[name="area"]').empty(); } /** * address初始化 * @param defaultAddressId int 默认收货地址的主键索引 */ this.addressInit = function(defaultAddressId) { if(defaultAddressId) { this.addressActiveId = defaultAddressId; $('input:radio[name="radio_address"][value="'+defaultAddressId+'"]').trigger('click'); this.addressSave(); } else { $('input:radio[name="radio_address"][value=""]').trigger('click'); } } /** * address选中时 * @param jsonData Object 数据对象 */ this.addressSelected = function(jsonData) { //刷新修改form部分 $('#address_form input[type="text"]').each(function() { this.value = jsonData[this.name]; }); //js城市联动 createAreaSelect('province',0,jsonData.province); createAreaSelect('city',jsonData.province,jsonData.city); createAreaSelect('area',jsonData.city,jsonData.area); //刷新展示table部分 var showTableHtml = template.render('addressShowTemplate',jsonData); $('#addressShowBox').html(showTableHtml); //清除之前校验效果 $('.invalid-msg').remove(); $('#address_form input:text').removeClass('invalid-text'); $('#address_form select').removeClass('invalid-text'); } /** * 清空地址数据 */ this.addressEmpty = function() { //刷新修改form部分 $('#address_form input[type="text"]').each(function() { this.value = ''; }); //初始化js城市联动 this.provinceMenuInit(); //刷新展示table部分 $('#addressShowBox').empty(); } /** * address模式切换 */ this.addressModToggle = function() { //要切换的模式 var toggleMod = this.addressMod == 'exit' ? 'edit' : 'exit'; switch(toggleMod) { case "edit": { $('#'+this.addressToggleButton).text('[退出]'); } break; case "exit": { //还原收货地址数据 if(this.addressActiveId) { $('input:radio[name="radio_address"][value="'+this.addressActiveId+'"]').trigger('click'); } $('#'+this.addressToggleButton).text('[修改]'); } break; } //更新模式 this.addressMod = toggleMod; //展示模式 $('#address_show_box').toggle(); //修改模式 $('#address_often').toggle(); $('#address_form').toggle(); $('#address_save_button').toggle(); } /** * 进行数据的校验 */ this.addressCheck = function() { $('#address_form').trigger('submit',function(){return false;}); //数据格式不正确 if($('#address_form .invalid-text').length > 0) { return false; } return true; } /** * address保存 */ this.addressSave = function() { if(this.addressCheck() == false) { return; } this.addressActiveId = $('input:radio[name="radio_address"]:checked').val(); //当保存为临时收货地址时 if(!this.addressActiveId) { //新添加的地址 var jsonData = { "province_val":$('select[name="province"]>option:selected').text(), "city_val":$('select[name="city"]>option:selected').text(), "area_val":$('select[name="area"]>option:selected').text() }; //刷新修改form部分 $('#address_form input[type="text"]').each(function() { jsonData[this.name] = this.value; }); var showTableHtml = template.render('addressShowTemplate',jsonData); $('#addressShowBox').html(showTableHtml); } this.addressModToggle(); //获取配送数据并且开启配送方式 var timeHandle = setInterval(function(){ if($('[name="province"]').val()) { get_delivery($('[name="province"]').val()); clearInterval(timeHandle); } },500); $('#deliveryBox').show('slow'); } /** * delivery模式切换 */ this.deliveryInit = function(defaultDeliveryId) { if(defaultDeliveryId) { this.deliveryActiveId = defaultDeliveryId; } } /** * delivery选中 * @param jsonData Object 配送方式数对象 */ this.deliverySelected = function(jsonData) { //刷新table部分 var deliveryShowHtml = template.render('deliveryShowTemplate',jsonData); $('#deliveryShowBox').html(deliveryShowHtml); } /** * delivery模式切换 */ this.deliveryModToggle = function() { //要切换的模式 var toggleMod = this.deliveryMod == 'exit' ? 'edit' : 'exit'; switch(toggleMod) { case "edit": { $('#'+this.deliveryToggleButton).text('[退出]'); } break; case "exit": { if(!this.deliveryActiveId) { tips('请选择配送方式,并且进行保存'); return; } else if($('input:radio[name="delivery_id"][value="'+this.deliveryActiveId+'"]:checked').length == 0) { //还原配送方式数据 $('input:radio[name="delivery_id"][value="'+this.deliveryActiveId+'"]').trigger('click'); } $('#'+this.deliveryToggleButton).text('[修改]'); } break; } //更新模式 this.deliveryMod = toggleMod; //展示模式 $('#delivery_show_box').toggle(); //修改模式 $('#delivery_form').toggle(); $('#delivery_save_button').toggle(); } /** * delivery保存检查 */ this.deliveryCheck = function() { if($('input:radio[name="delivery_id"]:checked').length == 0) { return false; } return true; } /** * delivery保存 */ this.deliverySave = function() { if(this.deliveryCheck() == false) { tips('请选择配送方式'); return; } this.paytype = $('input:radio[name="delivery_id"]:checked').attr('paytype'); this.deliveryActiveId = $('input:radio[name="delivery_id"]:checked').val(); this.deliveryModToggle(); //保存运费 this.deliveryPrice = this.freeFreight == 1 ? 0 : $('input:radio[name="delivery_id"]:checked').attr('alt'); //在线支付与货到付款 if(this.paytype == 0) { $('#paymentBox').show('slow'); } else { $('#paymentBox').hide('slow'); this.paymentPrice = 0; //开启订单金额 $('#amountBox').show('slow'); } //计算金额 this.doAccount(); } /** * payment模式切换 */ this.paymentModToggle = function() { //要切换的模式 var toggleMod = this.paymentMod == 'exit' ? 'edit' : 'exit'; switch(toggleMod) { case "edit": { $('#'+this.paymentToggleButton).text('[退出]'); } break; case "exit": { if(!this.paymentActiveId) { tips('请选择配送方式,并且进行保存'); return; } else if($('input:radio[name="payment"][value="'+this.paymentActiveId+'"]:checked').length == 0) { //还原配送方式数据 $('input:radio[name="payment"][value="'+this.paymentActiveId+'"]').trigger('click'); } $('#'+this.paymentToggleButton).text('[修改]'); } break; } //更新模式 this.paymentMod = toggleMod; //展示模式 $('#payment_show_box').toggle(); //修改模式 $('#payment_form').toggle(); $('#payment_save_button').toggle(); } /** * payment检查 * @return boolean */ this.paymentCheck = function() { if($('input:radio[name="payment"]:checked').length == 0) { return false; } return true; } /** * payment选择 */ this.paymentSelected = function(jsonData) { //刷新table部分 var paymentShowHtml = template.render('paymentShowTemplate',jsonData); $('#paymentShowBox').html(paymentShowHtml); } /** * payment初始化 */ this.paymentInit = function(defaultPaymentId) { if(defaultPaymentId > 0) { $('input:radio[name="payment"][value="'+defaultPaymentId+'"]').trigger('click'); this.paymentSave(); } } /** * payment保存 */ this.paymentSave = function() { if(this.paymentCheck() == false) { tips('请选择支付方式'); return; } this.paymentActiveId = $('input:radio[name="payment"]:checked').val(); this.paymentModToggle(); //支付金额 this.paymentPrice = $('input:radio[name="payment"]:checked').attr('alt'); //开启订单金额 $('#amountBox').show('slow'); //计算金额 this.doAccount(); } /** * message模式切换 */ this.messageModToggle = function() { //要切换的模式 var toggleMod = this.messageMod == 'exit' ? 'edit' : 'exit'; switch(toggleMod) { case "edit": { $('#'+this.messageToggleButton).text('[退出]'); } break; case "exit": { //恢复数据 $('[name="message"]').val(this.messageActiveData); $('#'+this.messageToggleButton).text('[修改]'); } break; } //更新模式 this.messageMod = toggleMod; //展示模式 $('#message_show_box').toggle(); //修改模式 $('#message_form').toggle(); $('#message_save_button').toggle(); } /** * 留言保存 */ this.messageSave = function() { var messageData = $('[name="message"]').val(); //更新table $('#messageShowBox').text(messageData); //保存到缓存 this.messageActiveData = messageData; this.messageModToggle(); } /** * 检查表单是否可以提交 */ this.isSubmit = function() { var saveButtonList = $('label[id$="_save_button"]:visible'); if(saveButtonList.length > 0) { saveButtonList.first().trigger('focus'); return false; } return true; } }