|
|
@@ -71,6 +71,10 @@ const projTreeObj = {
|
|
|
header: [
|
|
|
{name: '工程列表', dataCode: 'name', width: 300, vAlign: 'center', hAlign: 'left'},
|
|
|
{name: '工程造价', dataCode: 'engineeringCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
|
|
|
+ {name: '工程专业', dataCode: 'feeStandardName', width: 100, vAlign: 'center', hAlign: 'left'},
|
|
|
+ {name: '单价文件', dataCode: 'unitPriceFile', width: 140, vAlign: 'center', hAlign: 'left'},
|
|
|
+ {name: '费率文件', dataCode: 'feeRateFile', width: 140, vAlign: 'center', hAlign: 'left'},
|
|
|
+ {name: '创建日期', dataCode: 'createDateTime', width: 100, vAlign: 'center', hAlign: 'center'},
|
|
|
{name: '分部分项合计', dataCode: 'subEngineering', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
|
|
|
{name: '措施项目合计', dataCode: 'measure', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
|
|
|
{name: '其他项目合计', dataCode: 'other', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
|
|
|
@@ -79,11 +83,7 @@ const projTreeObj = {
|
|
|
{name: '税金', dataCode: 'tax', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
|
|
|
{name: '占造价比例(%)', dataCode: 'rate', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
|
|
|
{name: '建筑面积', dataCode: 'buildingArea', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
|
|
|
- {name: '单方造价', dataCode: 'perCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'},
|
|
|
- {name: '工程专业', dataCode: 'feeStandardName', width: 100, vAlign: 'center', hAlign: 'left'},
|
|
|
- {name: '单价文件', dataCode: 'unitPriceFile', width: 140, vAlign: 'center', hAlign: 'left'},
|
|
|
- {name: '费率文件', dataCode: 'feeRateFile', width: 140, vAlign: 'center', hAlign: 'left'},
|
|
|
- {name: '创建日期', dataCode: 'createDateTime', width: 100, vAlign: 'center', hAlign: 'center'}
|
|
|
+ {name: '单方造价', dataCode: 'perCost', width: 100, vAlign: 'center', hAlign: 'right', formatter: '0.00'}
|
|
|
],
|
|
|
//选中行颜色
|
|
|
style: {
|
|
|
@@ -640,6 +640,9 @@ const projTreeObj = {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ cusButtonClick:async function(info){
|
|
|
+ projTreeObj.changeFileClick(null,info);
|
|
|
+ },
|
|
|
onDragDropBlock : function (sender,args) {//拖动移动项目位置
|
|
|
let selected = projTreeObj.tree.selected;
|
|
|
let targetNode = projTreeObj.tree.items[args.toRow];
|
|
|
@@ -830,6 +833,17 @@ const projTreeObj = {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ openTender: function (ID, parent, timeoutTime) {
|
|
|
+ setTimeout(function () {
|
|
|
+ let newTab = window.open('about:blank');
|
|
|
+ BeforeOpenProject(ID, {'fullFolder': GetFullFolder(parent)}, function () {
|
|
|
+ let mainUrl = `/main?project=${ID}`;
|
|
|
+ CommonAjax.get(mainUrl, [], function () {
|
|
|
+ newTab.location.replace(mainUrl); //不能后退
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }, timeoutTime);
|
|
|
+ },
|
|
|
getTreeNodeCell: function (tree) {
|
|
|
let me = projTreeObj;
|
|
|
let indent = 20;
|
|
|
@@ -966,27 +980,14 @@ const projTreeObj = {
|
|
|
ctx.drawImage(shareImg, x + 3, nowY - 7, shareImgWidth,shareImgHeight);
|
|
|
}
|
|
|
// Draw Text
|
|
|
- //x = x + (node.depth() + 1) * indent + node.depth() * levelIndent;
|
|
|
x = x + (node.depth() + 1) * indent + node.depth() * levelIndent + imgWidth + 3;
|
|
|
w = w - (node.depth() + 1) * indent - node.depth() * levelIndent - imgWidth - 3;
|
|
|
GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
|
|
|
- /* if (node.data.shareInfo && node.data.shareInfo.length > 0) {//分享标记在文本后
|
|
|
- let nowX = Math.floor(x) + w - 20;
|
|
|
- let nowY = Math.floor((y + (y + h)) / 2);
|
|
|
- ctx.drawImage(shareImg, nowX + 3, nowY - 7, shareImgWidth,shareImgHeight);
|
|
|
- }*/
|
|
|
};
|
|
|
TreeNodeCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {
|
|
|
let info = {x: x, y: y, row: context.row, col: context.col, cellStyle: cellStyle, cellRect: cellRect, sheetArea: context.sheetArea};
|
|
|
let node = tree.items[info.row];
|
|
|
- let offset = -1;
|
|
|
- let centerX = info.cellRect.x + offset + node.depth() * indent + node.depth() * levelIndent + indent / 2;
|
|
|
- let text = context.sheet.getText(info.row, info.col);
|
|
|
- let value = context.sheet.getValue(info.row, info.col);
|
|
|
- let acStyle = context.sheet.getActualStyle(info.row, info.col),
|
|
|
- zoom = context.sheet.zoom();
|
|
|
- let textLength = this.getAutoFitWidth(value, text, acStyle, zoom, {sheet: context.sheet, row: info.row, col: info.col, sheetArea: GC.Spread.Sheets.SheetArea.viewport});
|
|
|
- if(info.x > centerX + halfBoxLength && info.x < centerX + halfBoxLength + imgWidth + indent/2+3 + textLength){
|
|
|
+ if (node && node.data.projType === projectType.tender) {
|
|
|
info.isReservedLocation = true;
|
|
|
}
|
|
|
return info;
|
|
|
@@ -1006,23 +1007,23 @@ const projTreeObj = {
|
|
|
return hitinfo.x > centerX + halfBoxLength && hitinfo.x < centerX + halfBoxLength + imgWidth + indent/2+3 + textLength;
|
|
|
}
|
|
|
if(hitinfo.sheet.name() === "projectSheet"){//只有项目管理界面才执行
|
|
|
- //单项文件,进入造价书界面
|
|
|
- if(node.data.projType === projectType.tender && withingClickArea()){
|
|
|
- let timeoutTime = 200;
|
|
|
- if($('.slide-sidebar').hasClass('open')){
|
|
|
- timeoutTime = 500;
|
|
|
+ if(node.data.projType === projectType.tender){
|
|
|
+ let thisClick = Date.now(),
|
|
|
+ open = false;
|
|
|
+ if (this.preNode === node && this.preClick && thisClick - this.preClick <= 300) {
|
|
|
+ open = true;
|
|
|
+ let timeoutTime = 200;
|
|
|
+ if($('.slide-sidebar').hasClass('open')){
|
|
|
+ timeoutTime = 500;
|
|
|
+ }
|
|
|
+ projTreeObj.openTender(node.data.ID, node.parent, timeoutTime);
|
|
|
}
|
|
|
- setTimeout(function () {
|
|
|
- let newTab = window.open('about:blank');
|
|
|
- BeforeOpenProject(node.data.ID, {'fullFolder': GetFullFolder(node.parent)}, function () {
|
|
|
- let mainUrl = `/main?project=${node.data.ID}`;
|
|
|
- CommonAjax.get(mainUrl, [], function () {
|
|
|
- newTab.location.replace(mainUrl); //不能后退
|
|
|
- });
|
|
|
- });
|
|
|
- }, timeoutTime);
|
|
|
+ this.preClick = open ? null : thisClick;
|
|
|
+ this.preNode = open ? null : node;
|
|
|
+ }
|
|
|
+ if (!node || node.children.length === 0) {
|
|
|
+ return;
|
|
|
}
|
|
|
- if (!node || node.children.length === 0) { return; }
|
|
|
}
|
|
|
//统一改成方框外1像素内都有效
|
|
|
if (hitinfo.x >= centerX - halfBoxLength - 2 && hitinfo.x <= centerX + halfBoxLength + 2 &&
|
|
|
@@ -1041,10 +1042,10 @@ const projTreeObj = {
|
|
|
};
|
|
|
TreeNodeCellType.prototype.processMouseMove = function (hitInfo) {
|
|
|
let sheet = hitInfo.sheet;
|
|
|
-
|
|
|
let div = sheet.getParent().getHost();
|
|
|
let canvasId = div.id + "vp_vp";
|
|
|
let canvas = $(`#${canvasId}`)[0];
|
|
|
+ let node = tree.items[hitInfo.row];
|
|
|
//改变鼠标图案
|
|
|
if (sheet && hitInfo.isReservedLocation) {
|
|
|
canvas.style.cursor='pointer';
|
|
|
@@ -1123,8 +1124,7 @@ const projTreeObj = {
|
|
|
me.setCellValue({row: i, col: j}, nodes[i],sheet,setting);
|
|
|
let dataCode = headers[j].dataCode;
|
|
|
if(nodes[i].data.projType == "Tender" && (dataCode=="feeRateFile" || dataCode == "unitPriceFile")) {
|
|
|
- sheet.setCellType(i, j,sheetCommonObj.getSelectButton(headers[j].width),GC.Spread.Sheets.SheetArea.viewport);
|
|
|
- sheet.getCell(i, j,GC.Spread.Sheets.SheetArea.viewport).locked(false);
|
|
|
+ sheet.setCellType(i, j,sheetCommonObj.getCusButtonCellType(me.cusButtonClick,false),GC.Spread.Sheets.SheetArea.viewport);
|
|
|
}
|
|
|
//sheet.setValue(i, j, nodes[i]['data'][dataCode]);
|
|
|
}
|
|
|
@@ -1772,11 +1772,53 @@ $(document).ready(function() {
|
|
|
setRegionOpts(regions);
|
|
|
$('#regionDiv').show();
|
|
|
}
|
|
|
+ //恢复到第一步状态
|
|
|
+ if (!$('#firstStep').is(':visible')) {
|
|
|
+ showFirstStep();
|
|
|
+ }
|
|
|
setTimeout(function () {
|
|
|
$('#tender-name')[0].focus();
|
|
|
}, 300);
|
|
|
});
|
|
|
|
|
|
+ //新建单位工程-下一步
|
|
|
+ $('#add-tender-next').click(function() {
|
|
|
+ let projName = $("#poj-name").val().trim();
|
|
|
+ if(projName === ''){
|
|
|
+ replaceClass($('#poj-name-info'), 'text-info', 'text-danger');
|
|
|
+ setDangerInfo($('#poj-name-info'), '请填写建设项目名称');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ let engName = $("#eng-name").val().trim();
|
|
|
+ if(engName === ''){
|
|
|
+ replaceClass($('#eng-name-info'), 'text-info', 'text-danger');
|
|
|
+ setDangerInfo($('#eng-name-info'), '请填写单项工程名称');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ let tenderName = $('#tender-name').val();
|
|
|
+ if (tenderName === '') {
|
|
|
+ setDangerInfo($('#tender-name-info'), '请填写单位工程名称');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $('#firstStep').hide();
|
|
|
+ $('#secondStep').show();
|
|
|
+ $(this).hide();
|
|
|
+ $('#add-tender-prev').show();
|
|
|
+ $('#add-tender-confirm').show();
|
|
|
+ $('#add-tender-cancel').show();
|
|
|
+ });
|
|
|
+ function showFirstStep() {
|
|
|
+ $('#secondStep').hide();
|
|
|
+ $('#firstStep').show();
|
|
|
+ $('#add-tender-prev').hide();
|
|
|
+ $('#add-tender-next').show();
|
|
|
+ $('#add-tender-confirm').hide();
|
|
|
+ $('#add-tender-cancel').hide();
|
|
|
+ }
|
|
|
+ //新建单位工程-上一步
|
|
|
+ $('#add-tender-prev').click(showFirstStep);
|
|
|
+
|
|
|
// 新增单位工程
|
|
|
$("#add-tender-confirm").click(function() {
|
|
|
let suc = AddTender();
|
|
|
@@ -1785,26 +1827,11 @@ $(document).ready(function() {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- // 新增文件夹按钮点击
|
|
|
- /*$("#add-folder-btn").click(function() {
|
|
|
- $("#add-folder-dialog").modal("show");
|
|
|
- setTimeout(function () {
|
|
|
- $('#folder-name')[0].focus();
|
|
|
- }, 300);
|
|
|
- });*/
|
|
|
-
|
|
|
// 新增文件夹操作
|
|
|
$("#add-folder-confirm").click(function() {
|
|
|
AddFolder();
|
|
|
});
|
|
|
|
|
|
- // 删除按钮点击
|
|
|
- /* $('#del-btn').click(function() {
|
|
|
- if (projTreeObj.tree && projTreeObj.tree.selected) {
|
|
|
- $('#del').modal('show');
|
|
|
- }
|
|
|
- });*/
|
|
|
-
|
|
|
// 删除时文字替换
|
|
|
$('#del').on('show.bs.modal', function() {
|
|
|
let hasTenderChild = function (children) {
|
|
|
@@ -2435,7 +2462,7 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
|
|
|
}
|
|
|
});
|
|
|
callback();
|
|
|
- })
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
}
|