/**
* 编办管理相关js
*
* @author CaiAoLin
* @date 2017/7/28
* @version
*/
$(document).ready(function() {
let isAdding = false;
let model = '';
let section = 'bill';
let id = $("#compilation-id").val();
// 计价规则页面初始化数据
if ($("#save-lib").length > 0) {
initCompilation();
}
// 计价类型选择
$(".nav-tabs li > a").click(function() {
section = $(this).attr("aria-controls");
});
// 新增编办
$("#add-compilation").click(function() {
try {
let data = getAndValidData(model);
let url = '/compilation/add'
if (model === 'all') {
// 新增编办操作
$.ajax({
url: url,
type: 'post',
data: {name: data.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: data[model].name,
id: data[model].id
};
// 判断是否有重复的数据
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);
$('#addcompilation').modal('hide');
}
} catch (error) {
alert(error);
}
});
$("#addTaxGroupBtn").click(function () {
$('#groupEditType').val("add");
$("#taxType").val("");
$("#program_lib").val("");
$("#template_lib").val("");
$("#col_lib").val("");
});
//新增计税组合
$("#add-group").click(function() {
let taxMap = {"1":"一般计税","2":"简易计税" };
let actionType = $('#groupEditType').val();
let groupData = getTaxGroupData();
let groupIndex = getGroupIndex(groupData);//用来做重复判断
if(!_.isEmpty(groupData)){
//重复判断 todo
if($("input[data-id = "+groupIndex+"]").length <= 0){
let taxName = groupData.taxType?taxMap[groupData.taxType]:'';
let p_name = groupData.program_lib?groupData.program_lib.displayName:"";
let t_name = groupData.template_lib?groupData.template_lib.name:"";
let c_name = groupData.col_lib?groupData.col_lib.name:"";
let htmlString = ""+taxName+" | " +
""+p_name+" | " +
""+t_name+" | " +
""+c_name+" | " +
" 编辑/删除 " +
""+
" | " +
"
";
if(actionType == "add"){
$("#tax_group_tbody").append(htmlString);
}else if(actionType == "modify"){
let oldIndex = $("#groupIndex").val();
let parentTr = $("input[data-id = "+oldIndex+"]").parents(".taxGroup_tr");
parentTr.after(htmlString);
parentTr.remove();
}
}else {
alert("已存在相同的组合!");
}
}
$("#addTaxGroup").modal('hide');
});
// 新增计价规则
$("#add-valuation").click(function() {
try {
if (id === '') {
throw '页面数据有误';
}
let name = $("input[name='valuation_name']").val();
if (name === '') {
throw '请填写计价规则名称';
}
$.ajax({
url: '/compilation/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;
}
});
// 添加
$(".add-compilation").click(function() {
model = $(this).data('model');
$("#addcompilation .modal-body > div").hide();
switch (model) {
case 'all':
$("#name-area").show();
$("#add-compilation-title").text('添加新费用定额');
break;
case 'bill':
$("#bill-area").show();
$("#add-compilation-title").text('添加标准清单');
break;
case 'ration':
$("#ration-area").show();
$("#add-compilation-title").text('添加定额库');
break;
case 'glj':
$("#glj-area").show();
$("#add-compilation-title").text('添加定额库');
break;
case 'billsGuidance':
$("#billsGuidance-area").show();
$("#add-compilation-title").text('添加清单指引库');
break;
case 'fee':
$("#fee-area").show();
$("#add-compilation-title").text('添加费率标准');
break;
case 'artificial':
$("#artificial-area").show();
$("#add-compilation-title").text('添加人工系数');
break;
case 'program':
$("#program-area").show();
$("#add-compilation-title").text('添加计算程序');
break;
}
$("#addcompilation").modal('show');
});
// 保存专业工程标准库
$("#save-lib").click(function() {
if (validLib()) {
$("form").submit();
}
});
// 保存计价规则
$("#save-valuation").click(function() {
$("form").submit();
});
// 移除操作
$(".bill-list, .ration-list, .glj-list, .fee-list, .artificial-list, .program-list, .billsGuidance-list").on("click", ".remove-lib", function() {
$(this).parent().remove();
});
//更改描述
$('#description').change(function () {
let description = $(this).val();
$.ajax({
url: '/compilation/setDescription',
type: 'post',
dataType: "json",
data: {id: id, description: description},
success: function(response) {
if (response.err !== 0) {
alert('更改失败');
}
}
});
});
//更改代码覆盖路径
$('#overWriteUrl').change(function () {
let overWriteUrl = $(this).val();
if(overWriteUrl=="") overWriteUrl = undefined;
$.ajax({
url: '/compilation/setOverWriteUrl',
type: 'post',
dataType: "json",
data: {id: id, overWriteUrl: overWriteUrl},
success: function(response) {
if (response.err !== 0) {
alert('更改失败');
}
}
});
});
// 计价规则启用/禁止
$(".enable").click(function() {
let goingChangeStatus = switchChange($(this));
let id = $(this).data('id');
if (id === undefined || id === '' || isAdding) {
return false;
}
$.ajax({
url: '/compilation/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('更改失败');
}
}
});
});
//计价规则删除
$('#delete-confirm').click(function () {
let id = $('#del').attr('selectedId');
if (id === undefined || id === '') {
return false;
}
window.location.href = `/compilation/valuation/bill/delete/${id}`;
});
// 发布编办
$("#release").click(function() {
let id = $(this).data("id");
let status = $(this).data("status");
status = parseInt(status);
if (isAdding || id === '' || isNaN(status)) {
return false;
}
$.ajax({
url: '/compilation/release',
type: 'post',
data: {id: id, status: status},
dataType: "json",
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);
}
}
});
});
//添加工程专业
$("#addEngineerConfirm").click(async function() {
if($('#name').val() == ''){
$("#nameError").show();
return;
}
if($('#feeName').val() == ''){
$("#feeNameError").show();
return;
}
if($('#engineeringInput').val() == ''){
$("#engineeringError").show();
return;
}
$("#addEngineerConfirm").attr("disabled",true);//防止重复提交
$("#addEngineerForm").submit();
});
//
});
/**
* 初始化
*
* @return {void|boolean}
*/
function initCompilation() {
let billListData = billList === undefined ? [] : JSON.parse(billList);
let rationLibData = rationList === undefined ? [] : JSON.parse(rationList);
let gljLibData = gljList === undefined ? [] : JSON.parse(gljList);
let feeLibData = feeRateList === undefined ? [] : JSON.parse(feeRateList);
let artificialCoefficientData = artificialCoefficientList === undefined ? [] : JSON.parse(artificialCoefficientList);
let programData = programList === undefined ? [] : JSON.parse(programList);
let billsGuidanceData = billsGuidanceList === undefined ? [] : JSON.parse(billsGuidanceList);
let billTemplateData = billTemplateList == undefined ? [] : JSON.parse(billTemplateList);
let mainTreeColData= mainTreeColList == undefined ? [] : JSON.parse(mainTreeColList);
/*mainTreeCol = mainTreeCol !== '' ? mainTreeCol.replace(/\n/g, '\\n') : mainTreeCol;
billsTemplateData = billsTemplateData.replace(/\n/g, '\\n');
let mainTreeColObj = mainTreeCol === '' ? {} : JSON.parse(mainTreeCol);
// 初始化 造价书列设置
colSpread = TREE_SHEET_HELPER.createNewSpread($('#main-tree-col')[0]);
let billsTemplateTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1});
billsTemplateTree.loadDatas(JSON.parse(billsTemplateData));
if (mainTreeCol !== '' && mainTreeColObj.cols.length > 0) {
TREE_SHEET_HELPER.loadSheetHeader(mainTreeColObj, colSpread.getActiveSheet());
TREE_SHEET_HELPER.showTreeData(mainTreeColObj, colSpread.getActiveSheet(), billsTemplateTree);
}*/
if (billListData.length <= 0 || rationLibData.length <= 0 || gljLibData.length <= 0) {
return false;
}
// 标准清单
let html = '';
for(let tmp of billListData) {
let tmpHtml = '';
html += tmpHtml;
}
$("select[name='standard_bill']").children("option").first().after(html);
// 定额库
html = '';
for(let tmp of rationLibData) {
let tmpHtml = '';
html += tmpHtml;
}
$("select[name='ration_lib']").children("option").first().after(html);
// 工料机库
html = '';
for(let tmp of gljLibData) {
let tmpHtml = '';
html += tmpHtml;
}
$("select[name='glj_lib']").children("option").first().after(html);
// 清单指引库
html = '';
for(let tmp of billsGuidanceData) {
let tmpHtml = '';
html += tmpHtml;
}
$("select[name='billsGuidance_lib']").children("option").first().after(html);
// 费率标准库
html = '';
for(let tmp of feeLibData) {
let tmpHtml = '';
html += tmpHtml;
}
$("select[name='fee_lib']").children("option").first().after(html);
// 人工系数标准库
html = '';
for(let tmp of artificialCoefficientData) {
let tmpHtml = '';
html += tmpHtml;
}
$("select[name='artificial_lib']").children("option").first().after(html);
// 计算程序标准库
html = '';
for(let tmp of programData) {
let tmpHtml = '';
html += tmpHtml;
}
$("select[name='program_lib']").children("option").first().after(html);
//模板库
html = '';
for(let tmp of billTemplateData) {
let tmpHtml = '';
html += tmpHtml;
}
$("select[name='template_lib']").children("option").first().after(html);
//列设置
html = '';
for(let tmp of mainTreeColData) {
let tmpHtml = '';
html += tmpHtml;
}
$("select[name='col_lib']").children("option").first().after(html);
}
/**
* 校验数据
*
* @param {String} model
* @return {Object}
*/
function getAndValidData(model) {
let name = $("input[name='compilation_name']").val();
let standardBill = $("select[name='standard_bill']").children("option:selected").val();
let rationLib = $("select[name='ration_lib']").children("option:selected").val();
let gljLib = $("select[name='glj_lib']").children("option:selected").val();
let feeLib = $("select[name='fee_lib']").children("option:selected").val();
let artificialLib = $("select[name='artificial_lib']").children("option:selected").val();
let programLib = $("select[name='program_lib']").children("option:selected").val();
let billsGuidanceLib = $("select[name='billsGuidance_lib']").children("option:selected").val();
if (name === '' && model === 'all') {
throw '编办名字不能为空';
}
if ( model === 'bill' && (standardBill === '' || standardBill === undefined)) {
throw '请选择标准清单库';
}
if (model === 'ration' && (rationLib === '' || rationLib === undefined)) {
throw '请选择定额库';
}
if (model === 'glj' && (gljLib === '' || gljLib === undefined)) {
throw '请选择人材机库';
}
if (model === 'fee' && (feeLib === '' || feeLib === undefined)) {
throw '请选择费率标准';
}
if (model === 'artificial' && (artificialLib === '' || artificialLib === undefined)) {
throw '请选择费率库';
}
if (model === 'program' && (programLib === '' || programLib === undefined)) {
throw '请选择计算程序';
}
if (model === 'billsGuidance' && (billsGuidanceLib === '' || billsGuidanceLib === undefined)) {
throw '请选择清单指引库';
}
let standardBillString = $("select[name='standard_bill']").children("option:selected").text();
let rationLibString = $("select[name='ration_lib']").children("option:selected").text();
let gljLibString = $("select[name='glj_lib']").children("option:selected").text();
let feeLibString = $("select[name='fee_lib']").children("option:selected").text();
let artificialString = $("select[name='artificial_lib']").children("option:selected").text();
let programString = $("select[name='program_lib']").children("option:selected").text();
let billsGuidanceString = $("select[name='billsGuidance_lib']").children("option:selected").text();
let result = {
name: name,
bill: {
id: standardBill,
name: standardBillString
},
ration: {
id: rationLib,
name: rationLibString
},
glj: {
id: gljLib,
name: gljLibString
},
fee: {
id: feeLib,
name: feeLibString
},
artificial: {
id: artificialLib,
name: artificialString
},
program: {
id: programLib,
name: programString
},
billsGuidance: {
id: billsGuidanceLib,
name: billsGuidanceString
}
};
return result;
}
/**
* 验证标准库数据
*
* @return {boolean}
*/
function validLib() {
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 '请添加定额库';
}
if ($("input:hidden[name='glj_lib']").length <= 0) {
throw '请添加人材机库';
}
if ($("input:hidden[name='fee_lib']").length <= 0) {
throw '请添加费率标准';
}
if ($("input:hidden[name='artificial_lib']").length <= 0) {
throw '请添加人工系数';
}
if ($("input:hidden[name='program_lib']").length <= 0) {
throw '请添加计算程序';
}
if ($("input:hidden[name='billsGuidance_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;
}
function editEngineer(selector) {
let engineerName = $(selector).prev("span").text();
let parentDiv = $(selector).parent("div");
parentDiv.next("div").find("input").val(engineerName);
parentDiv.hide();
parentDiv.next("div").show();
}
function confirmUpdate(selector,engineerID) {
let inputDiv = $(selector).parents(".input_group_div");
let input = $(selector).parent(".input-group-btn").prev("input");
let oldValue = inputDiv.prev("div").find("span").text();
let newValue = input.val();
let key = input.attr("name");
if(newValue == "" || newValue==oldValue || !engineerID){
inputDiv.prev("div").show();
inputDiv.hide();
return;
}
let updateData = {};
updateData[key] = newValue;
updateEngineer(engineerID,updateData,function () {
inputDiv.prev("div").find("span").text(newValue);
});
inputDiv.prev("div").show();
inputDiv.hide();
}
function deleteEngineerClick(engineerID,element) {
console.log(engineerID);
console.log(element);
hintBox.infoBox('操作确认', '是否删除所选工程专业?', 2, async function () {
try {
let result = await ajaxPost('/compilation/delete-engineer',{id:engineerID});
$(element).parent("td").parent("tr").remove();
}catch (err){
console.log(err);
}
}, null,['确定','取消'],false);
}
function engineerVisibleChange(checkBox,engineerID) {
if(engineerID){
updateEngineer(engineerID,{visible:checkBox.checked});
}
}
function updateEngineer(engineerID,data,callback) {
CommonAjax.post('/compilation/update-engineer',{id:engineerID,updateData:data},function (data) {
if(callback){
callback();
}
})
}
function editTaxGroup(ele) {
$('#groupEditType').val("modify");
let groupData = $(ele).nextAll("input[name = 'tax_group']").val();
groupData = JSON.parse(groupData);
if(!_.isEmpty(groupData)){
$("#taxType").val(groupData.taxType?groupData.taxType:"");
$("#program_lib").val(groupData.program_lib?groupData.program_lib.id:"");
$("#template_lib").val(groupData.template_lib?groupData.template_lib.id:"");
$("#col_lib").val(groupData.col_lib?groupData.col_lib.id:"");
}else {
$("#taxType").val("");
$("#program_lib").val("");
$("#template_lib").val("");
$("#col_lib").val("");
}
$("#groupIndex").val(getGroupIndex(groupData));
$("#addTaxGroup").modal({show:true});
}
function deleteTaxGroup(ele) {
let parentTr = $(ele).parents(".taxGroup_tr");
parentTr.remove();
}
function getGroupIndex(groupData) {//用来做唯一标识
let index = "";
if(groupData){
if(groupData.taxType) index = index + groupData.taxType;
if(groupData.program_lib) index = index + groupData.program_lib.id;
if(groupData.template_lib) index = index + groupData.template_lib.id;
if(groupData.col_lib) index = index + groupData.col_lib.id;
}
return index;
}
function getTaxGroupData() {
let programData = programList === undefined ? [] : _.indexBy(JSON.parse(programList), 'id');
let billTemplateData = billTemplateList == undefined ? [] : _.indexBy(JSON.parse(billTemplateList),'ID');
let mainTreeColData= mainTreeColList == undefined ? [] : _.indexBy(JSON.parse(mainTreeColList),'ID');
let groupData = {};
if($("#taxType").val() !==""){
groupData.taxType = $("#taxType").val();
}
if($("#program_lib").val() !==""){
let program = programData[$("#program_lib").val()];
if(program){
groupData.program_lib = {
id:program.id,
name:program.name,
displayName:program.displayName
}
}
}
if($("#template_lib").val() !==""){
let template = billTemplateData[$("#template_lib").val()];
if(template){
groupData.template_lib = {
id:template.ID,
name:template.name
}
}
}
if($("#col_lib").val() !==""){
let col = mainTreeColData[$("#col_lib").val()];
if(col){
groupData.col_lib = {
id:col.ID,
name:col.name
}
}
}
return groupData;
}