Index: arms/html/analysisCost/content-container.html =================================================================== diff -u -r999e6bfde6550fba58e87708409f8aebfc7bdbe0 -rf9bf726b6f39a5ddeb200850c36eda69413b04e8 --- arms/html/analysisCost/content-container.html (.../content-container.html) (revision 999e6bfde6550fba58e87708409f8aebfc7bdbe0) +++ arms/html/analysisCost/content-container.html (.../content-container.html) (revision f9bf726b6f39a5ddeb200850c36eda69413b04e8) @@ -475,7 +475,7 @@
- 선택한 제품(서비스) 버전 비용과 투입된 인력의 연봉 정보를 입력합니다. + 선택한 제품(서비스) 버전에 투입된 인력의 연봉 정보를 입력합니다.
-
+

- 버전 비용 + 연봉 정보 파일로 업로드

@@ -550,26 +550,22 @@
- 각 버전에 투자한 비용을 입력합니다. + 템플릿 다운로드 후, 연봉 정보를 입력하여 업로드 합니다.
- -
+
-
+

- 연봉 정보 + 연봉 정보 직접 입력

@@ -625,23 +621,6 @@ style="margin-top: 5px"> 각 버전에 투입된 인력의 연봉 정보를 입력합니다. -
- - -
- - - - -
-
- -
- -
-
\ No newline at end of file Index: arms/js/analysisCost.js =================================================================== diff -u -r0612219ccc05a1ed32300a01e68a90564556b8d2 -rf9bf726b6f39a5ddeb200850c36eda69413b04e8 --- arms/js/analysisCost.js (.../analysisCost.js) (revision 0612219ccc05a1ed32300a01e68a90564556b8d2) +++ arms/js/analysisCost.js (.../analysisCost.js) (revision f9bf726b6f39a5ddeb200850c36eda69413b04e8) @@ -12,8 +12,6 @@ var 버전_요구사항_담당자 = {}; var 전체담당자목록 = {}; -var 요구사항별_키목록 = {}; -var 요구사항전체목록 = {}; //////////////////////////////////////////////////////////////////////////////////////// //Document Ready @@ -281,103 +279,126 @@ return new Date(date).toISOString().split('T')[0]; } -// 버전 비용 및 인력 비용 입력 -function costInput(전체담당자목록, pdServiceVersionLinks) { +// 엑셀 파일 업로드 +function file_upload_setting() { - console.log(" [ analysisCost :: costInput ] :: 인력데이터 => " + JSON.stringify(전체담당자목록)); + // 업로드 영역 로드 + $('.body-middle').html(` + + +
+ +
+
+
+ + Drop files here +
+
+
+
+
+ +
+
+
+ +
 
+
+
+
+ + + Add files... + + + + +
+
+ +
+ + + + +
+ `); - versionInput(pdServiceVersionLinks); - manpowerInput(전체담당자목록); - - /*if ($.fn.dataTable.isDataTable('#version-cost')) { - $('#version-cost').DataTable().clear().destroy(); - } - - let selectedVersions = pdServiceVersionLinks.split(','); - - let versionTableData = selectedVersions.map(versionId => { - let item = versionListData[versionId]; - let startDate = item.c_pds_version_start_date === "start" ? formatDate(new Date()) : formatDate(item.c_pds_version_start_date); - let endDate = item.c_pds_version_end_date === "end" ? formatDate(new Date()) : formatDate(item.c_pds_version_end_date); - return { // 객체를 바로 반환 - version: item.c_title, - period: startDate + " ~ " + endDate, - cost: 0, - c_id: item.c_id - }; + // Initialize the jQuery File Upload widget: + var $fileupload = $("#fileupload"); + $fileupload.fileupload({ + // Uncomment the following to send cross-domain cookies: + //xhrFields: {withCredentials: true}, + autoUpload: true, + url: "/auth-user/api/arms/analysis/cost/excel-upload.do", + dropZone: $("#dropzone") }); - $('#version-cost').DataTable({ - data: versionTableData, - columns: [ - { data: "version", title: "버전", className: "dt-center" }, - { data: "period", title: "기간", className: "dt-center" }, - { - data: "cost", - title: "비용 (입력)", - className: "dt-center", - render: function(data, type, row) { - return ' 만원'; - } - } - ], - drawCallback: function(settings) { - $('.cost-input').on('input', function() { - var value = this.value.replace(/,/g, ''); - this.value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ","); - }); + + $("#fileupload").bind("fileuploadsubmit", function (e, data) { + // The example input, doesn't have to be part of the upload form: + var input = $("#fileIdlink"); + data.formData = { pdservice_link: input.val() }; + if (!data.formData.pdservice_link) { + data.context.find("button").prop("disabled", false); + input.focus(); + return false; } }); +} - // 연봉 정보 - let manpowerData = Object.keys(전체담당자목록).map((key) => { - let data = {}; - data.이름 = key; - data.연봉 = 전체담당자목록[key].연봉; - data.성과 = 전체담당자목록[key].성과; - return data; - }); +// 버전 비용 및 인력 비용 입력 +function costInput(전체담당자목록, pdServiceVersionLinks) { - if ($.fn.dataTable.isDataTable('#manpower-annual-income')) { - $('#manpower-annual-income').DataTable().clear().destroy(); - } + console.log(" [ analysisCost :: costInput ] :: 인력데이터 => " + JSON.stringify(전체담당자목록)); - $('#manpower-annual-income').DataTable({ - data: manpowerData, - columns: [ - { - name: "이름", - data: "이름", - title: "투입 인력", - className: "dt-center" - }, - { - title: "연봉 (입력)", - data: "연봉", - className: "dt-center", - render: function(data, type, row) { - return ' 만원'; - } - } - ], - drawCallback: function(settings) { - $('.salary-input').on('input', function() { - var value = this.value.replace(/,/g, ''); - this.value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ","); - - // 같은 그룹의 모든 연봉 입력 필드를 찾아 값 업데이트 - var name = $(this).parents('tr').find('td').first().text(); - var salaryInputs = $('td:contains("' + name + '")').siblings().find('.salary-input'); - salaryInputs.val(this.value); - }); - }, - /!*rowsGroup: [ - "name:name", - ]*!/ - });*/ + file_upload_setting(); + //versionInput(pdServiceVersionLinks); + manpowerInput(전체담당자목록); } -function versionInput(pdServiceVersionLinks) { +/*function versionInput(pdServiceVersionLinks) { if ($.fn.dataTable.isDataTable('#version-cost')) { $('#version-cost').DataTable().clear().destroy(); @@ -482,7 +503,7 @@ data, isAjax ); -} +}*/ function manpowerInput(전체담당자목록) { @@ -536,7 +557,7 @@ data: "연봉", render: function(data, type, row) { var formattedData = parseInt(data).toLocaleString(); - return ' 만원'; + return ' 만원'; }, className: "dt-center", visible: true @@ -576,20 +597,27 @@ } // 데이터 테이블 구성 이후 꼭 구현해야 할 메소드 : 열 클릭시 이벤트 -function dataTableClick(tempDataTable, selectedData) { +function dataTableClick(tempDataTable, selectedData) {} -} - -// 데이터 테이블 데이터 렌더링 이후 콜백 함수. +// 데이터 테이블 데이터 렌더링 이후 콜백 함수 function dataTableCallBack(settings, json) { - $('.cost-input').on('input', function() { - var value = this.value.replace(/,/g, ''); - this.value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ","); - }); + $("#fileIdlink").val(selectedPdServiceId); - $('.annual-income-input').on('input', function() { - var value = this.value.replace(/,/g, ''); - this.value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ","); + //파일 리스트 초기화 + $("table tbody.files").empty(); + // Load existing files: + var $fileupload = $("#fileupload"); + + $.ajax({ + // Uncomment the following to send cross-domain cookies: + //xhrFields: {withCredentials: true}, + url: "/auth-user/api/arms/fileRepository/getFilesByNode.do", + data: { fileIdLink: selectedPdServiceId }, + dataType: "json", + context: $fileupload[0] + }).done(function (result) { + $(this).fileupload("option", "done").call(this, null, { result: result }); + $(".file-delete-btn").hide(); // 파일 리스트에서 delete 버튼 display none 처리 }); } @@ -598,6 +626,15 @@ .DataTable() .columns.adjust() .responsive.recalc(); + + // 연봉 포맷 설정 및 연봉 정보 저장 + $('.annual-income-input').off('input').on('input', function() { + var value = this.value.replace(/,/g, ''); + this.value = value.replace(/\B(?=(\d{3})+(?!\d))/g, ","); + + let owner = $(this).data('owner'); + 전체담당자목록[owner].연봉 = this.value.replace(/,/g, ''); + }); } function excel_download() { @@ -636,61 +673,16 @@ // console.log(" [ analysisCost :: 비용 분석 계산 ] :: selectVersionData -> " + JSON.stringify(selectVersionData)); - /* - // 버전 비용 - var versionCost = []; + // 연봉 정보 유효성 체크 및 세팅 + for (let owner in 전체담당자목록) { - var table = $('#version-cost').DataTable(); - // DataTable의 모든 행에 대해 반복 - table.rows().every(function() { - var versionId = this.data()['c_id']; // 버전 아이디 - var versionName = this.data()['c_title']; // 버전 이름 - var cost = Number(this.nodes().to$().find('td:last input').val().replace(/,/g, '')); // 비용 - - if (isNaN(Number(cost))) { - isNumber = false; + if (isNaN(전체담당자목록[owner].연봉)) { + alert(owner + "의 연봉 정보가 잘못되었습니다. 숫자만 입력해주세요."); return; } - - versionCost.push({ - c_id: versionId, - c_title: versionName, - versionCost: cost * 10000, - consumptionCost: 9000000 - }); - }); - console.log(" [ analysisCost :: 비용 분석 계산 ] :: versionCost -> " + JSON.stringify(versionCost));*/ - - // 인력별 연봉 - var annualIncome = []; - - var table = $('#manpower-annual-income').DataTable(); - // DataTable의 모든 행에 대해 반복 - table.rows().every(function() { - var name = this.data()['이름']; // 인력 - var key = this.data()['키']; // 키 - var cost = Number(this.nodes().to$().find('td:last input').val().replace(/,/g, '')); // 비용 - - if (isNaN(Number(cost))) { - isNumber = false; - } - - 전체담당자목록[key].연봉 = cost * 10000; - - annualIncome.push({ - 사용자: name, - 키: key, - 연봉: cost * 10000 - }); - }); - console.log(" [ analysisCost :: 비용 분석 계산 ] :: annualIncome -> " + JSON.stringify(annualIncome)); - - if (!isNumber) { - alert("비용 입력란에 숫자를 입력해 주세요."); - return; } + console.log(" [ analysisCost :: 비용 분석 계산 ] :: 전체담당자목록 -> " + JSON.stringify(전체담당자목록)); - const url = new UrlBuilder() .setBaseUrl("/auth-user/api/arms/analysis/cost/req-linked-issue") .addQueryParam("pdServiceLink", selectedPdServiceId)