/** * 版本管理相关js * * @author CaiAoLin * @date 2017/7/28 * @version */ $(document).ready(function() { let isAdding = false; let model = ''; let section = 'bill'; let id = $("#version-id").val(); // 计价规则页面初始化数据 if ($("#section").length > 0) { initVersion(); } // 计价类型选择 $(".nav-tabs li > a").click(function() { section = $(this).attr("aria-controls"); }); // 新增版本 $("#add-version").click(function() { try { let [name, standardBill, rationLib, standardBillString, rationLibString] = getAndValidData(model); let url = '/version/add'; if (model === 'all') { // 新增版本操作 $.ajax({ url: url, type: 'post', data: {name: name}, error: function() { isAdding = false; }, beforeSend: function() { isAdding = true; }, success: function(response) { isAdding = false; if (response.err === 0) { window.location.reload(); } else { let msg = response.msg === undefined ? '未知错误' : response.msg; alert(msg); } } }); } else { // 新增标准清单/定额库 let addLib = { name: '', id: '' }; switch (model) { case 'bill': addLib.name = standardBillString; addLib.id = standardBill; break; case 'ration': addLib.name = rationLibString; addLib.id = rationLib; break; } // 判断是否有重复的数据 if ($("input:hidden[name='"+ model +"_lib'][data-id='"+ addLib.id +"']").length > 0) { alert('重复添加数据!'); return false; } let removeHtml = ''; let tmpHtml = '

' + removeHtml + addLib.name + '' + '

'; $("." + model + "-list").append(tmpHtml); $('#addversion').modal('hide'); } } catch (error) { alert(error); } }); // 新增计价规则 $("#add-valuation").click(function() { try { if (id === '') { throw '页面数据有误'; } let name = $("input[name='valuation_name']").val(); if (name === '') { throw '请填写计价规则名称'; } $.ajax({ url: '/version/add-valuation', type: 'post', data: {name: name, id: id, section: section}, error: function() { isAdding = false; }, beforeSend: function() { isAdding = true; }, success: function(response) { isAdding = false; if (response.err === 0) { window.location.reload(); } else { let msg = response.msg === undefined ? '未知错误' : response.msg; alert(msg); } } }); } catch (error) { alert(error); return false; } }); // 选择省份后读取数据 $("select[name='standard_bill_province'],select[name='ration_lib_province']").change(function() { let name = $(this).attr('name'); let billListData = billList === undefined ? [] : JSON.parse(billList); let rationLibData = rationList === undefined ? [] : JSON.parse(rationList); if (billListData.length <= 0 || rationLibData.length <= 0) { return false; } let sourceData = name === 'standard_bill_province' ? billListData : rationLibData; let selectedId = $(this).val(); if (sourceData[selectedId] === undefined) { return false; } let defaultString = name === 'standard_bill_province' ? '请选择标准清单' : '请选择定额库'; let html = ''; for(let tmp of sourceData[selectedId]) { let tmpHtml = ''; html += tmpHtml; } // 渲染 let targetSelector = name === 'standard_bill_province' ? $("select[name='standard_bill']") : $("select[name='ration_lib']"); targetSelector.children('option').remove(); targetSelector.html(html); }); // 添加 $(".add-version").click(function() { model = $(this).data('model'); switch (model) { case 'all': $("#name-area").show(); $("#bill-area").hide(); $("#ration-area").hide(); $("#add-version-title").text('添加新版本'); break; case 'bill': $("#name-area").hide(); $("#bill-area").show(); $("#ration-area").hide(); $("#add-version-title").text('添加标准清单'); break; case 'ration': $("#name-area").hide(); $("#bill-area").hide(); $("#ration-area").show(); $("#add-version-title").text('添加定额库'); break; } $("#addversion").modal('show'); }); // 保存计价规则 $("#save-valuation").click(function() { if (validValuation()) { $("form").submit(); } }); // 移除操作 $(".bill-list, .ration-list").on("click", ".remove-lib", function() { $(this).parent().remove(); }); // 计价规则启用/禁止 $(".enable").click(function() { let goingChangeStatus = switchChange($(this)); let id = $(this).data('id'); if (id === undefined || id === '' || isAdding) { return false; } $.ajax({ url: '/version/valuation/' + section + '/enable', type: 'post', dataType: "json", data: {id: id, enable: goingChangeStatus}, error: function() { isAdding = false; switchChange($(this)); }, beforeSend: function() { isAdding = true; }, success: function(response) { isAdding = false; if (response.err !== 0) { switchChange($(this)); alert('更改失败'); } } }); }); }); /** * 初始化 * * @return {void|boolean} */ function initVersion() { if (province === undefined) { alert('初始化失败!'); return false; } province = JSON.parse(province); if (province.length <= 0) { alert('省份数据加载失败!'); return false; } let billProvinceElement = $("select[name='standard_bill_province']"); let rationProvinceElement = $("select[name='ration_lib_province']"); let html = ''; for (let tmp of province) { let tmpHtml = ''; html += tmpHtml; } billProvinceElement.children('option').first().after(html); rationProvinceElement.children('option').first().after(html); } /** * 校验数据 * * @param {String} model * @return {Array} */ function getAndValidData(model) { let name = $("input[name='version_name']").val(); let standardBill = $("select[name='standard_bill']").children("option:selected").val(); let rationLib = $("select[name='ration_lib']").children("option:selected").val(); if (name === '' && model === 'all') { throw '版本名字不能为空'; } if ( model === 'bill' && (standardBill === '' || standardBill === undefined)) { throw '请选择标准清单库'; } if (model === 'ration' && (rationLib === '' || rationLib === undefined)) { throw '请选择定额库'; } let standardBillString = $("select[name='standard_bill']").children("option:selected").text(); let rationLibString = $("select[name='ration_lib']").children("option:selected").text(); return [name, standardBill, rationLib, standardBillString, rationLibString]; } /** * 验证计价规则数据 * * @return {boolean} */ function validValuation() { let result = false; try { let valuationName = $("input[name='name']").val(); if (valuationName === '') { throw '请填写计价规则名称'; } let engineering = $("select[name='engineering']").val(); if (engineering === '' || engineering <= 0) { throw '请选择工程专业'; } if ($("input:hidden[name='bill_lib']").length <= 0) { throw '请添加标准清单'; } if ($("input:hidden[name='ration_lib']").length <= 0) { throw '请添加定额库'; } result = true; } catch (error) { alert(error); result = false; } return result; } /** * 切换switch效果 * * @param {Object} element * @return {boolean} */ function switchChange(element) { // 第一个元素判断当前的状态 let firstButton = element.children("button").first(); let secondButton = element.children("button").eq(1); let currentStatus = firstButton.is(":disabled"); if (currentStatus) { // 当前为true切换到false firstButton.removeClass('btn-success').removeClass('disabled').addClass('btn-default').removeAttr("disabled"); firstButton.text('开启'); secondButton.removeClass("btn-default").addClass("btn-danger").addClass("disabled").attr("disabled", "disabled"); secondButton.text('已禁用'); } else { // 当前false切换到true firstButton.removeClass("btn-default").addClass("btn-success").addClass("disabled").attr("disabled", "disabled"); firstButton.text('已开启'); secondButton.removeClass('btn-danger').removeClass('disabled').addClass('btn-default').removeAttr("disabled"); secondButton.text('禁用'); } return !currentStatus; }