|
|
@@ -65,6 +65,15 @@ function delayKeyup(callback) {
|
|
|
}, delayTime);
|
|
|
}
|
|
|
const addPath = {p_e_t: 'p_e_t', e_t: 'e_t', t: 't'};
|
|
|
+//操作状态
|
|
|
+const STATE = {
|
|
|
+ addingTender: false,
|
|
|
+ addingEng: false,
|
|
|
+ addingProject: false,
|
|
|
+ addingFolder: false,
|
|
|
+ deleting: false,
|
|
|
+ importing: false
|
|
|
+};
|
|
|
const projTreeObj = {
|
|
|
tree: null,
|
|
|
workBook: null,
|
|
|
@@ -1630,10 +1639,17 @@ $(document).ready(function() {
|
|
|
if (!validRequiredData($('#projInfoStep'))) {
|
|
|
return;
|
|
|
}
|
|
|
+ if (STATE.addingProject) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ STATE.addingProject = true;
|
|
|
if (needfulInfoData && Array.isArray(needfulInfoData)) {
|
|
|
updateRequiredData($('#projInfoStep'), needfulInfoData);
|
|
|
}
|
|
|
- AddProject();
|
|
|
+ let suc = AddProject();
|
|
|
+ if (suc === false) {
|
|
|
+ STATE.addingProject = false;
|
|
|
+ }
|
|
|
});
|
|
|
//新建建设项目-下一步
|
|
|
$('#add-proj-next').click(function () {
|
|
|
@@ -1811,7 +1827,14 @@ $(document).ready(function() {
|
|
|
|
|
|
// 新增单项工程操作
|
|
|
$("#add-engineering-confirm").click(function() {
|
|
|
- AddEngineering();
|
|
|
+ if (STATE.addingEng) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ STATE.addingEng = true;
|
|
|
+ let suc = AddEngineering();
|
|
|
+ if (suc === false) {
|
|
|
+ STATE.addingEng = false;
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
//新建单位工程-建设项目提示
|
|
|
@@ -2142,10 +2165,11 @@ $(document).ready(function() {
|
|
|
let opts = data.options.split('@');
|
|
|
$cell = $(`<select name="${data.key}" class="form-control form-control-sm"><option>请选择</option></select>`);
|
|
|
for (let opt of opts) {
|
|
|
- $cell.append($(`<option value="${opt}">${opt}</option>`));
|
|
|
+ $cell.append($(`<option ${data.value === opt ? 'selected' : ''} value="${opt}">${opt}</option>`));
|
|
|
}
|
|
|
} else {
|
|
|
- $cell = $(`<input type="${cellType}" ${cellType === 'number' ? 'min="0"' : ''} name="${data.key}" class="form-control form-control-sm" placeholder="请输入">`);
|
|
|
+ $cell = $(`<input type="${cellType}" ${cellType === 'number' ? 'min="0"' : ''} name="${data.key}"
|
|
|
+ value="${data.value}" class="form-control form-control-sm" placeholder="请输入">`);
|
|
|
}
|
|
|
let $row = $(`<div class="form-group row"></div>`),
|
|
|
$col = $(`<div class="col"></div>`);
|
|
|
@@ -2205,12 +2229,16 @@ $(document).ready(function() {
|
|
|
|
|
|
// 新增单位工程
|
|
|
$("#add-tender-confirm").click(function() {
|
|
|
+ if (STATE.addingTender) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (getAddPath() === addPath.p_e_t && !validRequiredData($('#infoStep'))) {
|
|
|
return;
|
|
|
}
|
|
|
if (!validRequiredData($('#featureStep'))) {
|
|
|
return;
|
|
|
}
|
|
|
+ STATE.addingTender = true;
|
|
|
if (needfulInfoData && Array.isArray(needfulInfoData)) {
|
|
|
updateRequiredData($('#infoStep'), needfulInfoData);
|
|
|
}
|
|
|
@@ -2219,13 +2247,20 @@ $(document).ready(function() {
|
|
|
}
|
|
|
let suc = AddTender();
|
|
|
if(suc === false){
|
|
|
- $('#add-tender-confirm').removeClass('disabled');
|
|
|
+ STATE.addingTender = false;
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// 新增文件夹操作
|
|
|
$("#add-folder-confirm").click(function() {
|
|
|
- AddFolder();
|
|
|
+ if (STATE.addingFolder) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ STATE.addingFolder = true;
|
|
|
+ let suc = AddFolder();
|
|
|
+ if (suc === false) {
|
|
|
+ STATE.addingFolder = false;
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
// 删除时文字替换
|
|
|
@@ -2264,9 +2299,13 @@ $(document).ready(function() {
|
|
|
|
|
|
// 删除操作
|
|
|
$('#delete-confirm').click(function () {
|
|
|
+ if (STATE.deleting) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ STATE.deleting = true;
|
|
|
let updateData = null;
|
|
|
let dialog = $('#del');
|
|
|
- if (projTreeObj.tree) {
|
|
|
+ if (projTreeObj.tree && projTreeObj.tree.selected) {
|
|
|
updateData = GetDeleteUpdateData(projTreeObj.tree.selected);
|
|
|
UpdateProjectData(updateData, function () {
|
|
|
dialog.modal('hide');
|
|
|
@@ -2283,6 +2322,14 @@ $(document).ready(function() {
|
|
|
if(selected.data.projType == projectType.tender||selected.data.projType == projectType.engineering){
|
|
|
projTreeObj.refreshNodeData(refreshNodes);//刷新工程造价信息
|
|
|
}
|
|
|
+ //快速点击时,第一个项目删除成功了,可能会删除多项目
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.deleting = false;
|
|
|
+ }, 500);
|
|
|
+ }, function () {
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.deleting = false;
|
|
|
+ }, 500);
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
@@ -2696,11 +2743,21 @@ function AddProject() {
|
|
|
}
|
|
|
let existCallback = function () {
|
|
|
setDangerInfo($('#project-name-info'), `已存在“${$("#project-name").val()}”`);
|
|
|
+ STATE.addingProject = false;
|
|
|
};
|
|
|
let sucCallback = function () {
|
|
|
+ $('#addProjOk').removeClass('disabled');
|
|
|
$('#add-project-dialog').modal('hide');
|
|
|
$('#project-name').val('');
|
|
|
setDangerInfo($('#project-name-info'), '', false);
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingProject = false;
|
|
|
+ }, 500);
|
|
|
+ };
|
|
|
+ let errCB = function () {
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingProject = false;
|
|
|
+ }, 500);
|
|
|
};
|
|
|
let selectedItem = projTreeObj.tree.selected;
|
|
|
|
|
|
@@ -2718,18 +2775,18 @@ function AddProject() {
|
|
|
valuationType: curValutionType
|
|
|
};
|
|
|
if(!selectedItem){
|
|
|
- AddSiblingsItem(selectedItem, name, property, projectType.project, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(selectedItem, name, property, projectType.project, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
else {
|
|
|
if(selectedItem.data.projType === projectType.project){
|
|
|
- AddSiblingsItem(selectedItem, name, property, projectType.project, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(selectedItem, name, property, projectType.project, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
else if(selectedItem.data.projType === projectType.engineering || selectedItem.data.projType === projectType.tender){
|
|
|
let proj = selectedItem.parent.data.projType === projectType.project ? selectedItem.parent : selectedItem.parent.parent;
|
|
|
- AddSiblingsItem(proj, name, property, projectType.project, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(proj, name, property, projectType.project, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
else if(selectedItem.data.projType === projectType.folder){
|
|
|
- AddChildrenItem(selectedItem, name, property, projectType.project, existCallback, sucCallback);
|
|
|
+ AddChildrenItem(selectedItem, name, property, projectType.project, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -2788,7 +2845,7 @@ function getAddPath() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function AddTenderItems(selected, projName, engName, tenderName, property, callback){
|
|
|
+function AddTenderItems(selected, projName, engName, tenderName, property, callback, errCB){
|
|
|
let path, updateDatas = [];
|
|
|
let tempProjs = getProjs(selected);
|
|
|
let tempProj = getNodeByName(projName, tempProjs);
|
|
|
@@ -2857,8 +2914,8 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
|
|
|
let engNode = projTreeObj.insert(engData, pojNode, null);
|
|
|
projTreeObj.insert(tenderData, engNode, null);
|
|
|
callback();
|
|
|
- });
|
|
|
- });
|
|
|
+ }, errCB);
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
else if(path === addPath.e_t){
|
|
|
GetNewProjectId(2, function (IDs) {
|
|
|
@@ -2895,8 +2952,8 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
|
|
|
let engNode = projTreeObj.insert(engData, tempProj, next);
|
|
|
projTreeObj.insert(tenderData, engNode, null);
|
|
|
callback();
|
|
|
- });
|
|
|
- });
|
|
|
+ }, errCB);
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
else if(path === addPath.t){
|
|
|
GetNewProjectId(1, function (IDs) {
|
|
|
@@ -2917,8 +2974,8 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
|
|
|
}
|
|
|
});
|
|
|
callback();
|
|
|
- });
|
|
|
- });
|
|
|
+ }, errCB);
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2930,7 +2987,7 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
|
|
|
* @param {function} callback
|
|
|
* @return {void}
|
|
|
*/
|
|
|
-function AddChildrenItem(selected, name, property, type, existCallback, sucCallback) {
|
|
|
+function AddChildrenItem(selected, name, property, type, existCallback, sucCallback, errCB) {
|
|
|
if(!selected){
|
|
|
selected = projTreeObj.tree.selected;
|
|
|
}
|
|
|
@@ -2956,8 +3013,8 @@ function AddChildrenItem(selected, name, property, type, existCallback, sucCallb
|
|
|
}
|
|
|
});
|
|
|
sucCallback();
|
|
|
- });
|
|
|
- });
|
|
|
+ }, errCB);
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2969,14 +3026,13 @@ function AddChildrenItem(selected, name, property, type, existCallback, sucCallb
|
|
|
* @param {function} callback
|
|
|
* @return {void}
|
|
|
*/
|
|
|
-function AddSiblingsItem(selected, name, property, type, existCallback, sucCallback) {
|
|
|
+function AddSiblingsItem(selected, name, property, type, existCallback, sucCallback, errCB) {
|
|
|
if(!selected){
|
|
|
selected = projTreeObj.tree.selected;
|
|
|
}
|
|
|
let parent = selected ? selected.parent : projTreeObj.tree._root;
|
|
|
let next = selected ? selected.nextSibling : projTreeObj.tree.firstNode();
|
|
|
if(existName(name, parent.children, type)){
|
|
|
- //alert('同级目录已存在相同名称数据.');
|
|
|
existCallback();
|
|
|
}
|
|
|
else {
|
|
|
@@ -2995,8 +3051,8 @@ function AddSiblingsItem(selected, name, property, type, existCallback, sucCallb
|
|
|
}
|
|
|
});
|
|
|
sucCallback();
|
|
|
- });
|
|
|
- });
|
|
|
+ }, errCB);
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -3337,24 +3393,33 @@ function AddEngineering() {
|
|
|
name = whiteSpaceCollapse(name);
|
|
|
let existCallback = function () {
|
|
|
setDangerInfo($('#engineering-name-info'), `已存在“${$("#engineering-name").val()}”`);
|
|
|
+ STATE.addingEng = false;
|
|
|
};
|
|
|
let sucCallback = function () {
|
|
|
$('#add-engineering-dialog').modal('hide');
|
|
|
$('#engineering-name').val('');
|
|
|
setDangerInfo($('#engineering-name-info'), '', false);
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingEng = false;
|
|
|
+ }, 500);
|
|
|
+ };
|
|
|
+ let errCB = function () {
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingEng = false;
|
|
|
+ }, 500);
|
|
|
};
|
|
|
let selectedItem = projTreeObj.tree.selected;
|
|
|
// 如果选择的是单项工程则新增同级数据
|
|
|
if(selectedItem){
|
|
|
if(selectedItem.data.projType === projectType.project){
|
|
|
- AddChildrenItem(selectedItem, name, null, projectType.engineering, existCallback, sucCallback);
|
|
|
+ AddChildrenItem(selectedItem, name, null, projectType.engineering, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
else if(selectedItem.data.projType === projectType.engineering){
|
|
|
- AddSiblingsItem(selectedItem, name, null, projectType.engineering, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(selectedItem, name, null, projectType.engineering, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
else if(selectedItem.data.projType === projectType.tender){
|
|
|
let proj = selectedItem.parent;
|
|
|
- AddSiblingsItem(proj, name, null, projectType.engineering, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(proj, name, null, projectType.engineering, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -3366,7 +3431,6 @@ function AddEngineering() {
|
|
|
*/
|
|
|
function AddTender() {
|
|
|
try {
|
|
|
- $('#add-tender-confirm').addClass('disabled');
|
|
|
let projName = $("#poj-name").val().trim();
|
|
|
if(projName === ''){
|
|
|
replaceClass($('#poj-name-info'), 'text-info', 'text-danger');
|
|
|
@@ -3442,7 +3506,7 @@ function AddTender() {
|
|
|
let libs = getEngineeringLib(engineeringName + feeName, engineeringList);
|
|
|
if(!libs){
|
|
|
alert('数据错误,无法确定工程专业库!');
|
|
|
- return;
|
|
|
+ return false;
|
|
|
}
|
|
|
// 一个项目里面,这两个文件必须得有,而界面又没有像费率、单价文件那样给出可选项。所以这里给出提示。
|
|
|
if (!libs.artificial_lib) throw '编办没有绑定人工系数标准文件';
|
|
|
@@ -3454,18 +3518,24 @@ function AddTender() {
|
|
|
let calcProgramName = $('#tender-calcProgram').children("option:selected").text();
|
|
|
|
|
|
let callback = function() {
|
|
|
- $('#add-tender-confirm').removeClass('disabled');
|
|
|
- $("#add-tender-dialog").modal("hide");
|
|
|
- $('#tender-name').val('');
|
|
|
- $("#tender-fee-rate").children("option").removeAttr("selected");
|
|
|
- $("#tender-engineering").children("option").removeAttr("selected");
|
|
|
- $("#tender-calcProgram").children("option").removeAttr("selected");
|
|
|
- $("#poj-name").val('');
|
|
|
- $("#poj-name-info").hide();
|
|
|
- $("#eng-name").val('');
|
|
|
- $("#eng-name-info").hide();
|
|
|
-
|
|
|
- };
|
|
|
+ $("#add-tender-dialog").modal("hide");
|
|
|
+ $('#tender-name').val('');
|
|
|
+ $("#tender-fee-rate").children("option").removeAttr("selected");
|
|
|
+ $("#tender-engineering").children("option").removeAttr("selected");
|
|
|
+ $("#tender-calcProgram").children("option").removeAttr("selected");
|
|
|
+ $("#poj-name").val('');
|
|
|
+ $("#poj-name-info").hide();
|
|
|
+ $("#eng-name").val('');
|
|
|
+ $("#eng-name-info").hide();
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingTender = false;
|
|
|
+ }, 500);
|
|
|
+ },
|
|
|
+ errCB = function () {
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingTender = false;
|
|
|
+ }, 500);
|
|
|
+ };
|
|
|
let selectedItem = projTreeObj.tree.selected;
|
|
|
//地区
|
|
|
let region = $('#regionDiv').find('select').val() || '全省';
|
|
|
@@ -3498,9 +3568,10 @@ function AddTender() {
|
|
|
if(libs.main_quantity_lib && libs.main_quantity_lib.length > 0) tenderInfo.mainQuantityLibID = libs.main_quantity_lib[0].id;
|
|
|
if(libs.material_lib && libs.material_lib.length > 0) tenderInfo.materialLibID = libs.material_lib[0].id;
|
|
|
|
|
|
- AddTenderItems(selectedItem, projName, engName, tenderName, tenderInfo, callback);
|
|
|
+ AddTenderItems(selectedItem, projName, engName, tenderName, tenderInfo, callback, errCB);
|
|
|
|
|
|
} catch (error) {
|
|
|
+ ('#add-tender-confirm').removeClass('disabled');
|
|
|
alert(error);
|
|
|
}
|
|
|
}
|
|
|
@@ -3552,11 +3623,20 @@ function AddFolder() {
|
|
|
let selectedItem = projTreeObj.tree.selected;
|
|
|
let existCallback = function () {
|
|
|
setDangerInfo($('#folder-name-info'), `已存在“${$("#folder-name").val()}”`);
|
|
|
+ STATE.addingFolder = false;
|
|
|
};
|
|
|
let sucCallback = function () {
|
|
|
$('#add-folder-dialog').modal('hide');
|
|
|
$('#folder-name').val('');
|
|
|
setDangerInfo($('#folder-name-info'), '', false);
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingFolder = false;
|
|
|
+ }, 500);
|
|
|
+ };
|
|
|
+ let errCB = function () {
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingFolder = false;
|
|
|
+ }, 500);
|
|
|
};
|
|
|
if (selectedItem) {
|
|
|
// 判断是否超过3层
|
|
|
@@ -3565,14 +3645,14 @@ function AddFolder() {
|
|
|
return false;
|
|
|
}
|
|
|
if(selectedItem.data.projType === projectType.folder || selectedItem.data.projType === projectType.project){
|
|
|
- AddSiblingsItem(null, name, null, projectType.folder, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(null, name, null, projectType.folder, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
else if(selectedItem.data.projType === projectType.engineering || selectedItem.data.projType === projectType.tender){
|
|
|
let proj = selectedItem.parent.data.projType === projectType.project ? selectedItem.parent : selectedItem.parent.parent;
|
|
|
- AddSiblingsItem(proj, name, null, projectType.folder, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(proj, name, null, projectType.folder, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
} else {
|
|
|
- AddSiblingsItem(null, name, null, projectType.folder, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(null, name, null, projectType.folder, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -3725,10 +3805,10 @@ function GetNeedUpdatePreNode(parent, next) {
|
|
|
* @param {function} callback
|
|
|
* @return {void}
|
|
|
*/
|
|
|
-function GetNewProjectId(count, callback) {
|
|
|
+function GetNewProjectId(count, callback, errCB) {
|
|
|
CommonAjax.post('/pm/api/getNewProjectID', {count: count}, function(data) {
|
|
|
callback(data);
|
|
|
- });
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
|
|
|
/**
|