|
|
@@ -50,7 +50,14 @@ function delayKeyup(callback) {
|
|
|
}
|
|
|
}, delayTime);
|
|
|
}
|
|
|
-
|
|
|
+//操作状态
|
|
|
+const STATE = {
|
|
|
+ addingTender: false,
|
|
|
+ addingProject: false,
|
|
|
+ addingFolder: false,
|
|
|
+ deleting: false,
|
|
|
+ importing: false
|
|
|
+};
|
|
|
const projTreeObj = {
|
|
|
tree: null,
|
|
|
workBook: null,
|
|
|
@@ -1654,7 +1661,14 @@ $(document).ready(function() {
|
|
|
|
|
|
// 新增建设项目操作
|
|
|
$('#addProjOk').click(function () {
|
|
|
- AddProject();
|
|
|
+ if (STATE.addingProject) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ STATE.addingProject = true;
|
|
|
+ let suc = AddProject();
|
|
|
+ if (suc === false) {
|
|
|
+ STATE.addingProject = false;
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
// 选择计价方式
|
|
|
@@ -1806,15 +1820,26 @@ $(document).ready(function() {
|
|
|
|
|
|
// 新增单位工程
|
|
|
$("#add-tender-confirm").click(function() {
|
|
|
+ if (STATE.addingTender) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ STATE.addingTender = true;
|
|
|
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;
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
// 删除时文字替换
|
|
|
@@ -1853,9 +1878,14 @@ $(document).ready(function() {
|
|
|
|
|
|
// 删除操作
|
|
|
$('#delete-confirm').click(function () {
|
|
|
+ if (STATE.deleting) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ STATE.deleting = true;
|
|
|
let updateData = null;
|
|
|
let dialog = $('#del');
|
|
|
if (projTreeObj.tree) {
|
|
|
+ $.bootstrapLoading.start();
|
|
|
updateData = GetDeleteUpdateData(projTreeObj.tree.selected);
|
|
|
UpdateProjectData(updateData, function () {
|
|
|
dialog.modal('hide');
|
|
|
@@ -1872,6 +1902,16 @@ $(document).ready(function() {
|
|
|
if(selected.data.projType == projectType.tender||selected.data.projType == projectType.engineering){
|
|
|
projTreeObj.refreshNodeData(refreshNodes);//刷新工程造价信息
|
|
|
}
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ //快速点击时,第一个项目删除成功了,可能会删除多项目
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.deleting = false;
|
|
|
+ }, 500);
|
|
|
+ }, function () {
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.deleting = false;
|
|
|
+ }, 500);
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
@@ -2221,13 +2261,26 @@ function AddProject() {
|
|
|
setDangerInfo($('#project-name-info'), '请填写建设项目名称');
|
|
|
return false;
|
|
|
}
|
|
|
+ $.bootstrapLoading.start();
|
|
|
let existCallback = function () {
|
|
|
setDangerInfo($('#project-name-info'), `已存在“${$("#project-name").val()}”`);
|
|
|
+ STATE.addingProject = false;
|
|
|
+ $.bootstrapLoading.end();
|
|
|
};
|
|
|
let sucCallback = function () {
|
|
|
$('#add-project-dialog').modal('hide');
|
|
|
$('#project-name').val('');
|
|
|
setDangerInfo($('#project-name-info'), '', false);
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingProject = false;
|
|
|
+ }, 500);
|
|
|
+ };
|
|
|
+ let errCB = function () {
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingProject = false;
|
|
|
+ }, 500);
|
|
|
};
|
|
|
let selectedItem = projTreeObj.tree.selected;
|
|
|
|
|
|
@@ -2238,18 +2291,18 @@ function AddProject() {
|
|
|
(4)、当前定位在单项工程或单位工程,新建项目为当前所属建设项目的后兄弟。
|
|
|
* */
|
|
|
if(!selectedItem){
|
|
|
- AddSiblingsItem(selectedItem, name, null, projectType.project, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(selectedItem, name, null, projectType.project, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
else {
|
|
|
if(selectedItem.data.projType === projectType.project){
|
|
|
- AddSiblingsItem(selectedItem, name, null, projectType.project, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(selectedItem, name, null, projectType.project, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
else if(selectedItem.data.projType === projectType.tender){
|
|
|
let proj = selectedItem.parent;
|
|
|
- AddSiblingsItem(proj, name, null, projectType.project, existCallback, sucCallback);
|
|
|
+ AddSiblingsItem(proj, name, null, projectType.project, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
else if(selectedItem.data.projType === projectType.folder){
|
|
|
- AddChildrenItem(selectedItem, name, null, projectType.project, existCallback, sucCallback);
|
|
|
+ AddChildrenItem(selectedItem, name, null, projectType.project, existCallback, sucCallback, errCB);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -2329,7 +2382,7 @@ function setInitSummaryData(data) {
|
|
|
data.totalCost = 0;
|
|
|
}
|
|
|
|
|
|
-function AddTenderItems(selected, projName, tenderName, property, callback){
|
|
|
+function AddTenderItems(selected, projName, tenderName, property, callback, errCB){
|
|
|
const addPath = {p_t: 'p_t', t: 't'};
|
|
|
let path, updateDatas = [];
|
|
|
let tempProjs = getProjs(selected);
|
|
|
@@ -2383,8 +2436,8 @@ function AddTenderItems(selected, projName, tenderName, property, callback){
|
|
|
let pojNode = projTreeObj.insert(projData, parent, next);
|
|
|
let tenderNode = projTreeObj.insert(tenderData, pojNode, null);
|
|
|
callback();
|
|
|
- });
|
|
|
- });
|
|
|
+ }, errCB);
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
else if(path === addPath.t){
|
|
|
GetNewProjectId(1, function (IDs) {
|
|
|
@@ -2408,8 +2461,8 @@ function AddTenderItems(selected, projName, tenderName, property, callback){
|
|
|
}
|
|
|
});
|
|
|
callback();
|
|
|
- })
|
|
|
- });
|
|
|
+ }, errCB)
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2421,7 +2474,7 @@ function AddTenderItems(selected, projName, tenderName, property, callback){
|
|
|
* @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;
|
|
|
}
|
|
|
@@ -2448,8 +2501,8 @@ function AddChildrenItem(selected, name, property, type, existCallback, sucCallb
|
|
|
}
|
|
|
});
|
|
|
sucCallback();
|
|
|
- });
|
|
|
- });
|
|
|
+ }, errCB);
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2461,7 +2514,7 @@ 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;
|
|
|
}
|
|
|
@@ -2488,8 +2541,8 @@ function AddSiblingsItem(selected, name, property, type, existCallback, sucCallb
|
|
|
}
|
|
|
});
|
|
|
sucCallback();
|
|
|
- });
|
|
|
- });
|
|
|
+ }, errCB);
|
|
|
+ }, errCB);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2701,7 +2754,6 @@ function setDangerInfo(area, info, show = true){
|
|
|
*/
|
|
|
function AddTender() {
|
|
|
try {
|
|
|
- $('#add-tender-confirm').addClass('disabled');
|
|
|
let projName = $("#poj-name").val().trim();
|
|
|
if(projName === ''){
|
|
|
replaceClass($('#poj-name-info'), 'text-info', 'text-danger');
|
|
|
@@ -2773,7 +2825,7 @@ function AddTender() {
|
|
|
let libs = getEngineeringLib(engineeringName + feeName, engineeringList);
|
|
|
if(!libs){
|
|
|
alert('数据错误,无法确定工程专业库!');
|
|
|
- return;
|
|
|
+ return false;
|
|
|
}
|
|
|
// 一个项目里面,这两个文件必须得有,而界面又没有像费率、单价文件那样给出可选项。所以这里给出提示。
|
|
|
if (!libs.artificial_lib) throw '编办没有绑定人工系数标准文件';
|
|
|
@@ -2790,8 +2842,8 @@ function AddTender() {
|
|
|
|
|
|
let calcProgramName = $('#tender-calcProgram').children("option:selected").text();
|
|
|
//let newTab = window.open('about:blank');
|
|
|
+ $.bootstrapLoading.start();
|
|
|
let callback = function(tenderNode) {
|
|
|
- $('#add-tender-confirm').removeClass('disabled');
|
|
|
$("#add-tender-dialog").modal("hide");
|
|
|
$('#tender-name').val('');
|
|
|
$("#tender-fee-rate").children("option").removeAttr("selected");
|
|
|
@@ -2799,6 +2851,16 @@ function AddTender() {
|
|
|
$("#tender-calcProgram").children("option").removeAttr("selected");
|
|
|
$("#poj-name").val('');
|
|
|
$("#poj-name-info").hide();
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingTender = false;
|
|
|
+ }, 500);
|
|
|
+ };
|
|
|
+ let errCB = function () {
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingTender = false;
|
|
|
+ }, 500);
|
|
|
};
|
|
|
let selectedItem = projTreeObj.tree.selected;
|
|
|
//地区
|
|
|
@@ -2823,7 +2885,7 @@ function AddTender() {
|
|
|
progressiveLibID:progressiveLibID,
|
|
|
region: region
|
|
|
};
|
|
|
- AddTenderItems(selectedItem, projName, tenderName, tenderInfo, callback);
|
|
|
+ AddTenderItems(selectedItem, projName, tenderName, tenderInfo, callback, errCB);
|
|
|
|
|
|
} catch (error) {
|
|
|
alert(error);
|
|
|
@@ -2875,13 +2937,26 @@ function AddFolder() {
|
|
|
}
|
|
|
|
|
|
let selectedItem = projTreeObj.tree.selected;
|
|
|
+ $.bootstrapLoading.start();
|
|
|
let existCallback = function () {
|
|
|
setDangerInfo($('#folder-name-info'), `已存在“${$("#folder-name").val()}”`);
|
|
|
+ STATE.addingFolder = false;
|
|
|
+ $.bootstrapLoading.end();
|
|
|
};
|
|
|
let sucCallback = function () {
|
|
|
$('#add-folder-dialog').modal('hide');
|
|
|
$('#folder-name').val('');
|
|
|
setDangerInfo($('#folder-name-info'), '', false);
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingFolder = false;
|
|
|
+ }, 500);
|
|
|
+ };
|
|
|
+ let errCB = function () {
|
|
|
+ $.bootstrapLoading.end();
|
|
|
+ setTimeout(function () {
|
|
|
+ STATE.addingFolder = false;
|
|
|
+ }, 500);
|
|
|
};
|
|
|
if (selectedItem) {
|
|
|
// 判断是否超过3层
|
|
|
@@ -2890,14 +2965,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.tender){
|
|
|
let proj = selectedItem.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);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -3068,10 +3143,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);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -3706,6 +3781,10 @@ $('#shareToConfirm').click(function () {
|
|
|
|
|
|
$("#confirm-import").click(function() {
|
|
|
//$.bootstrapLoading.start();
|
|
|
+ if (STATE.importing) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ STATE.importing = true;
|
|
|
const self = $(this);
|
|
|
try {
|
|
|
let formData = new FormData();
|
|
|
@@ -3731,6 +3810,7 @@ $("#confirm-import").click(function() {
|
|
|
self.text('上传中...');
|
|
|
},
|
|
|
success: function(response){
|
|
|
+ STATE.importing = false;
|
|
|
self.text('确定导入');
|
|
|
$.bootstrapLoading.progressEnd();
|
|
|
if(response.error == 1){
|
|
|
@@ -3744,6 +3824,7 @@ $("#confirm-import").click(function() {
|
|
|
|
|
|
},
|
|
|
error: function(){
|
|
|
+ STATE.importing = false;
|
|
|
setTimeout(function () {
|
|
|
self.text('确定导入');
|
|
|
$.bootstrapLoading.progressEnd();
|
|
|
@@ -3752,6 +3833,7 @@ $("#confirm-import").click(function() {
|
|
|
}
|
|
|
});
|
|
|
} catch(error) {
|
|
|
+ STATE.importing = false;
|
|
|
alert(error);
|
|
|
$.bootstrapLoading.end();
|
|
|
}
|
|
|
@@ -3922,4 +4004,4 @@ function refreshProjSummary(project, summaryInfo) {
|
|
|
}
|
|
|
}
|
|
|
projTreeObj.refreshNodeData(refreshNodes);
|
|
|
-}
|
|
|
+}
|