This commit is contained in:
@@ -781,7 +781,7 @@ $usr_nm = session('usr_nm');
|
||||
// 배정내역 excel
|
||||
$("#excel-download2").on("click", function () {
|
||||
$.ajax({
|
||||
url: "/article/dept/excel",
|
||||
url: "/article/dept/excel2",
|
||||
method: "GET",
|
||||
dataType: "json",
|
||||
data: $("#frm_srch_info").serialize(),
|
||||
@@ -794,7 +794,9 @@ $usr_nm = session('usr_nm');
|
||||
blockUI.unblockPage()
|
||||
},
|
||||
success: function (result) {
|
||||
downloadExcel(result.data);
|
||||
// console.log(result)
|
||||
exportExcel(result.data);
|
||||
// downloadExcel(result.data);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -953,6 +955,93 @@ $usr_nm = session('usr_nm');
|
||||
URL.revokeObjectURL(link.href);
|
||||
}
|
||||
|
||||
// 배정내역 엑셀 양식
|
||||
function exportExcel(dataList) {
|
||||
// 1. 워크북/시트 생성
|
||||
const wb = XLSX.utils.book_new();
|
||||
const ws = XLSX.utils.aoa_to_sheet([]);
|
||||
|
||||
// (선택) 컬럼 너비
|
||||
ws['!cols'] = [
|
||||
{ wch: 14 }, { wch: 30 }, { wch: 18 },
|
||||
{ wch: 12 }, { wch: 18 }, { wch: 12 }
|
||||
];
|
||||
|
||||
let row = 0;
|
||||
|
||||
// 2. 데이터 반복
|
||||
dataList.forEach(item => {
|
||||
const blockHeight = addFormBlock(ws, row, item);
|
||||
|
||||
// 🔹 데이터마다 여백 (1~2row)
|
||||
const gap = item.gapRows ?? 2;
|
||||
row += blockHeight + gap;
|
||||
});
|
||||
|
||||
// 3. 시트 추가
|
||||
XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
|
||||
|
||||
// 4. 다운로드 (기존 코드 유지)
|
||||
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
|
||||
const blob = new Blob([wbout], { type: 'application/octet-stream' });
|
||||
|
||||
const link = document.createElement("a");
|
||||
link.href = URL.createObjectURL(blob);
|
||||
link.download = "배정내역_" + getDateTimeString() + ".xlsx";
|
||||
link.click();
|
||||
URL.revokeObjectURL(link.href);
|
||||
}
|
||||
|
||||
function addFormBlock(ws, r0, d) {
|
||||
var contact = '대표 : ' + d.agent_head_tel + '\n';
|
||||
contact += '담당자 : ' + d.agent_contact_tel + '\n';
|
||||
contact += '연락가능 : ' + d.agent_tel;
|
||||
|
||||
var addr = d.addr;
|
||||
if (d.rcpt_ho != null) { } else {
|
||||
addr = addr + ' ' + d.rcpt_dtl_addr + ' ' + d.rcpt_ho;
|
||||
} else {
|
||||
addr = addr + ' ' + d.rcpt_dtl_addr;
|
||||
}
|
||||
|
||||
const aoa = [
|
||||
[d.dept_nm, d.usr_nm ?? "", "", "사진여부: " + d.exp_photo_yn + ", 동영상여부: " + d.exp_movie_yn + ", 평면도요청: " + d.ground_plan, "", ""],
|
||||
["매물번호", "주소", "중개업소명", "거주여부", "예약일시", ""],
|
||||
[d.rcpt_atclno ?? "", addr ?? "", d.agent_nm ?? "", d.rcpt_living_yn ?? "", d.rsrv_date ?? "", ""],
|
||||
["거래종류", "기사 요청서", "연락처", "접수일자", "진확인동의", ""],
|
||||
[d.rcpt_product_info1 ?? "", d.request_msg ?? "", contact ?? "", d.rcpt_tm ?? "", "________", ""],
|
||||
["본인은 거주하고 있는 공간을 촬영하고 네이버 부동산에 노출하는 것에 동의합니다.", "", "", "", "", ""],
|
||||
["거주자명:", "________", "서명:", "________", "", ""]
|
||||
];
|
||||
|
||||
XLSX.utils.sheet_add_aoa(ws, aoa, { origin: { r: r0, c: 0 } });
|
||||
|
||||
// 병합
|
||||
ws['!merges'] = (ws['!merges'] || []).concat([
|
||||
{ s: { r: r0 + 0, c: 2 }, e: { r: r0 + 0, c: 5 } },
|
||||
{ s: { r: r0 + 5, c: 0 }, e: { r: r0 + 5, c: 5 } },
|
||||
]);
|
||||
|
||||
// 행 높이(선택)
|
||||
ws['!rows'] = ws['!rows'] || [];
|
||||
ws['!rows'][r0 + 5] = { hpt: 28 };
|
||||
|
||||
// 이 양식 블록 높이 = 7행
|
||||
return 7;
|
||||
}
|
||||
|
||||
// 날짜 문자열
|
||||
function getDateTimeString() {
|
||||
const d = new Date();
|
||||
return (
|
||||
d.getFullYear() +
|
||||
String(d.getMonth() + 1).padStart(2, '0') +
|
||||
String(d.getDate()).padStart(2, '0') + '_' +
|
||||
String(d.getHours()).padStart(2, '0') +
|
||||
String(d.getMinutes()).padStart(2, '0')
|
||||
);
|
||||
}
|
||||
|
||||
// 배정변경
|
||||
function updateAssign() {
|
||||
var arr = new Array();
|
||||
|
||||
Reference in New Issue
Block a user