Merge branch 'main' of https://gitea.hmac.kr/Taehoon/ITAM
This commit is contained in:
@@ -39,6 +39,7 @@ export interface HardwareAsset {
|
|||||||
모니터링?: string;
|
모니터링?: string;
|
||||||
비고?: string;
|
비고?: string;
|
||||||
현사용조직?: string;
|
현사용조직?: string;
|
||||||
|
이전사용조직?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -94,10 +95,12 @@ export interface MasterAssetData {
|
|||||||
const HW_TABS = ['개인PC', '서버', '스토리지', '전산비품'];
|
const HW_TABS = ['개인PC', '서버', '스토리지', '전산비품'];
|
||||||
const SW_TABS = ['구독SW', '영구SW', '클라우드'];
|
const SW_TABS = ['구독SW', '영구SW', '클라우드'];
|
||||||
|
|
||||||
const HW_HEADERS = ['법인', '자산코드', '명칭', '위치', '관리자', 'IP주소', 'MACaddress', 'HW사양', 'OS', '구매일', '금액', '납품업체', '품의서명'];
|
// 확장된 헤더 (상세 페이지의 모든 필드 포함)
|
||||||
const PC_HEADERS = ['법인', '자산코드', '사용자', '위치', 'CPU', 'GPU', 'RAM', 'SSD1', 'SSD2', 'HDD1', 'HDD2', '구매일', '금액', '납품업체', '품의서명'];
|
const PC_HEADERS = ['법인', '자산코드', '사용자', '위치', 'CPU', 'GPU', 'RAM', 'SSD1', 'SSD2', 'HDD1', 'HDD2', 'IP주소', 'HW사양', '구매일', '금액', '납품업체', '품의서명', '비고'];
|
||||||
const SERVER_HEADERS = ['법인', '자산번호', '유형', '용도', '설치위치', '담당자(정)', '담당자(부)', 'IP 주소', '원격접속', '모델명', 'OS', 'CPU', 'RAM', 'GPU', 'Storage1', 'Storage2', 'Storage3', '모니터링', '비고'];
|
const SERVER_HEADERS = ['법인', '자산번호', '유형', '용도', '상세내용', '현사용조직', '이전사용조직', '설치위치', '담당자(정)', '담당자(부)', 'IP 주소', '원격접속', '서버ID', '서버PW', '모델명', 'OS', 'CPU', 'RAM', 'GPU', 'SSD1', 'SSD2', 'HDD1', '모니터링', '비고'];
|
||||||
const STORAGE_HEADERS = ['법인', '유형', '자산코드', '명칭', '위치', '모델명', '용량', '담당자(정)', '담당자(부)', 'IP주소', 'MAC주소', '구매일', '금액', '납품업체', '품의서명'];
|
const STORAGE_HEADERS = ['법인', '유형', '자산코드', '명칭', '위치', '모델명', '용량', '담당자(정)', '담당자(부)', 'IP주소', 'MAC주소', '구매일', '금액', '납품업체', '품의서명', '비고'];
|
||||||
|
const HW_HEADERS = ['법인', '자산코드', '명칭', '위치', '관리자', 'IP주소', 'MACaddress', 'HW사양', 'OS', '구매일', '금액', '납품업체', '품의서명', '비고'];
|
||||||
|
|
||||||
const SUB_SW_HEADERS = ['ID', '분야', '법인', '부서', '제품명', '구매일', '구독일', '금액', '수량', '계정명', '납품업체', '비고'];
|
const SUB_SW_HEADERS = ['ID', '분야', '법인', '부서', '제품명', '구매일', '구독일', '금액', '수량', '계정명', '납품업체', '비고'];
|
||||||
const PERM_SW_HEADERS = ['ID', '분야', '법인', '부서', '제품명', '구매일', '유지보수여부', '금액', '수량', '계정명', '납품업체', '비고'];
|
const PERM_SW_HEADERS = ['ID', '분야', '법인', '부서', '제품명', '구매일', '유지보수여부', '금액', '수량', '계정명', '납품업체', '비고'];
|
||||||
const CLOUD_HEADERS = ['ID', '플랫폼명', '법인', '부서', '사용용도(제품명)', '계정명', '결제수단', '결제일', '연결카드번호', '당월청구액', '비고'];
|
const CLOUD_HEADERS = ['ID', '플랫폼명', '법인', '부서', '사용용도(제품명)', '계정명', '결제수단', '결제일', '연결카드번호', '당월청구액', '비고'];
|
||||||
@@ -116,16 +119,24 @@ export function downloadTemplate() {
|
|||||||
|
|
||||||
if (tab === '개인PC') {
|
if (tab === '개인PC') {
|
||||||
hd = PC_HEADERS;
|
hd = PC_HEADERS;
|
||||||
wscols = [{wch:15}, {wch:25}, {wch:15}, {wch:20}, {wch:20}, {wch:20}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:20}, {wch:25}];
|
wscols = Array(hd.length).fill({wch: 15});
|
||||||
|
wscols[1] = {wch: 25}; // 자산코드
|
||||||
|
wscols[12] = {wch: 30}; // HW사양
|
||||||
} else if (tab === '서버') {
|
} else if (tab === '서버') {
|
||||||
hd = SERVER_HEADERS;
|
hd = SERVER_HEADERS;
|
||||||
wscols = [{wch:15}, {wch:20}, {wch:15}, {wch:25}, {wch:20}, {wch:15}, {wch:15}, {wch:20}, {wch:20}, {wch:25}, {wch:20}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:30}];
|
wscols = Array(hd.length).fill({wch: 15});
|
||||||
|
wscols[3] = {wch: 25}; // 용도
|
||||||
|
wscols[4] = {wch: 30}; // 상세내용
|
||||||
} else if (tab === '스토리지') {
|
} else if (tab === '스토리지') {
|
||||||
hd = STORAGE_HEADERS;
|
hd = STORAGE_HEADERS;
|
||||||
wscols = [{wch:15}, {wch:15}, {wch:25}, {wch:25}, {wch:20}, {wch:25}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:20}, {wch:15}, {wch:15}, {wch:20}, {wch:25}];
|
wscols = Array(hd.length).fill({wch: 15});
|
||||||
|
wscols[2] = {wch: 25}; // 자산코드
|
||||||
|
wscols[3] = {wch: 25}; // 명칭
|
||||||
} else {
|
} else {
|
||||||
hd = HW_HEADERS;
|
hd = HW_HEADERS;
|
||||||
wscols = [{wch:15}, {wch:20}, {wch:25}, {wch:20}, {wch:15}, {wch:15}, {wch:20}, {wch:40}, {wch:20}, {wch:15}, {wch:15}, {wch:20}, {wch:25}];
|
wscols = Array(hd.length).fill({wch: 15});
|
||||||
|
wscols[2] = {wch: 25}; // 명칭
|
||||||
|
wscols[7] = {wch: 30}; // HW사양
|
||||||
}
|
}
|
||||||
|
|
||||||
const ws = XLSX.utils.aoa_to_sheet([hd]);
|
const ws = XLSX.utils.aoa_to_sheet([hd]);
|
||||||
@@ -167,27 +178,44 @@ export function exportToExcel(masterData: MasterAssetData) {
|
|||||||
if (tab === '개인PC') {
|
if (tab === '개인PC') {
|
||||||
wsData = [
|
wsData = [
|
||||||
PC_HEADERS,
|
PC_HEADERS,
|
||||||
...targetAssets.map(a => [a.법인, a.자산코드, a.사용자, a.위치, a.CPU, a.GPU, a.RAM, a.SSD1, a.SSD2, a.HDD1, a.HDD2, a.구매일, a.금액, a.납품업체, a.품의서명])
|
...targetAssets.map(a => [
|
||||||
|
a.법인, a.자산코드, a.사용자, a.위치, a.CPU, a.GPU, a.RAM, a.SSD1, a.SSD2, a.HDD1, a.HDD2, a.IP주소, a.HW사양, a.구매일, a.금액, a.납품업체, a.품의서명, a.비고
|
||||||
|
])
|
||||||
];
|
];
|
||||||
colsConfig = [{wch:15}, {wch:25}, {wch:15}, {wch:20}, {wch:20}, {wch:20}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:20}, {wch:25}];
|
colsConfig = Array(PC_HEADERS.length).fill({wch: 15});
|
||||||
|
colsConfig[1] = {wch: 25};
|
||||||
|
colsConfig[12] = {wch: 30};
|
||||||
} else if (tab === '서버') {
|
} else if (tab === '서버') {
|
||||||
wsData = [
|
wsData = [
|
||||||
SERVER_HEADERS,
|
SERVER_HEADERS,
|
||||||
...targetAssets.map(a => [a.법인, a.자산코드, a.storage유형 || '물리', a.용도 || '', a.위치, a.담당자_정 || '', a.담당자_부 || '', a.IP주소, a.원격접속 || '', a.모델명 || '', a.OS, a.CPU, a.RAM, a.GPU || '', a.SSD1 || '', a.SSD2 || '', a.HDD1 || '', a.모니터링 || '', a.비고 || ''])
|
...targetAssets.map(a => [
|
||||||
|
a.법인, a.자산코드, a.storage유형 || '물리', a.용도 || '', a.상세 || '', a.현사용조직 || '', a.이전사용조직 || '', a.위치, a.담당자_정 || '', a.담당자_부 || '',
|
||||||
|
a.IP주소, a.원격접속 || '', a.서버ID || '', a.서버PW || '', a.모델명 || '', a.OS, a.CPU, a.RAM, a.GPU || '', a.SSD1 || '', a.SSD2 || '', a.HDD1 || '', a.모니터링 || '', a.비고 || ''
|
||||||
|
])
|
||||||
];
|
];
|
||||||
colsConfig = [{wch:15}, {wch:20}, {wch:15}, {wch:25}, {wch:20}, {wch:15}, {wch:15}, {wch:20}, {wch:20}, {wch:25}, {wch:20}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:30}];
|
colsConfig = Array(SERVER_HEADERS.length).fill({wch: 15});
|
||||||
|
colsConfig[3] = {wch: 25};
|
||||||
|
colsConfig[4] = {wch: 30};
|
||||||
} else if (tab === '스토리지') {
|
} else if (tab === '스토리지') {
|
||||||
wsData = [
|
wsData = [
|
||||||
STORAGE_HEADERS,
|
STORAGE_HEADERS,
|
||||||
...targetAssets.map(a => [a.법인, a.storage유형, a.자산코드, a.명칭, a.위치, a.모델명, a.용량, a.담당자_정, a.담당자_부, a.IP주소, a.MACaddress, a.구매일, a.금액, a.납품업체, a.품의서명])
|
...targetAssets.map(a => [
|
||||||
|
a.법인, a.storage유형, a.자산코드, a.명칭, a.위치, a.모델명, a.용량, a.담당자_정, a.담당자_부, a.IP주소, a.MACaddress, a.구매일, a.금액, a.납품업체, a.품의서명, a.비고
|
||||||
|
])
|
||||||
];
|
];
|
||||||
colsConfig = [{wch:15}, {wch:15}, {wch:25}, {wch:25}, {wch:20}, {wch:25}, {wch:15}, {wch:15}, {wch:15}, {wch:15}, {wch:20}, {wch:15}, {wch:15}, {wch:20}, {wch:25}];
|
colsConfig = Array(STORAGE_HEADERS.length).fill({wch: 15});
|
||||||
|
colsConfig[2] = {wch: 25};
|
||||||
|
colsConfig[3] = {wch: 25};
|
||||||
} else {
|
} else {
|
||||||
wsData = [
|
wsData = [
|
||||||
HW_HEADERS,
|
HW_HEADERS,
|
||||||
...targetAssets.map(a => [a.법인, a.자산코드, a.명칭, a.위치, a.관리자, a.IP주소, a.MACaddress, a.HW사양, a.OS, a.구매일, a.금액, a.납품업체, a.품의서명])
|
...targetAssets.map(a => [
|
||||||
|
a.법인, a.자산코드, a.명칭, a.위치, a.관리자, a.IP주소, a.MACaddress, a.HW사양, a.OS, a.구매일, a.금액, a.납품업체, a.품의서명, a.비고
|
||||||
|
])
|
||||||
];
|
];
|
||||||
colsConfig = [{wch:15}, {wch:20}, {wch:25}, {wch:20}, {wch:15}, {wch:15}, {wch:20}, {wch:40}, {wch:20}, {wch:15}, {wch:15}, {wch:20}, {wch:25}];
|
colsConfig = Array(HW_HEADERS.length).fill({wch: 15});
|
||||||
|
colsConfig[2] = {wch: 25};
|
||||||
|
colsConfig[7] = {wch: 30};
|
||||||
}
|
}
|
||||||
|
|
||||||
const ws = XLSX.utils.aoa_to_sheet(wsData);
|
const ws = XLSX.utils.aoa_to_sheet(wsData);
|
||||||
@@ -268,11 +296,16 @@ export async function parseExcel(file: File): Promise<MasterAssetData> {
|
|||||||
명칭: '',
|
명칭: '',
|
||||||
위치: row['위치'] || '',
|
위치: row['위치'] || '',
|
||||||
사용자: row['사용자'] || '',
|
사용자: row['사용자'] || '',
|
||||||
관리자: '', IP주소: '', MACaddress: '', HW사양: '', OS: '',
|
관리자: '',
|
||||||
|
IP주소: row['IP주소'] || '',
|
||||||
|
MACaddress: '',
|
||||||
|
HW사양: row['HW사양'] || '',
|
||||||
|
OS: row['OS'] || '',
|
||||||
CPU: row['CPU'] || '', GPU: row['GPU'] || '', RAM: row['RAM'] || '',
|
CPU: row['CPU'] || '', GPU: row['GPU'] || '', RAM: row['RAM'] || '',
|
||||||
SSD1: row['SSD1'] || '', SSD2: row['SSD2'] || '', HDD1: row['HDD1'] || '', HDD2: row['HDD2'] || '',
|
SSD1: row['SSD1'] || '', SSD2: row['SSD2'] || '', HDD1: row['HDD1'] || '', HDD2: row['HDD2'] || '',
|
||||||
구매일: row['구매일'] || '', 금액: row['금액'] ? String(row['금액']) : '',
|
구매일: row['구매일'] || '', 금액: row['금액'] ? String(row['금액']) : '',
|
||||||
납품업체: row['납품업체'] || '', 품의서명: row['품의서명'] || '',
|
납품업체: row['납품업체'] || '', 품의서명: row['품의서명'] || '',
|
||||||
|
비고: row['비고'] || ''
|
||||||
});
|
});
|
||||||
} else if (sheetName === '서버') {
|
} else if (sheetName === '서버') {
|
||||||
hwAssets.push({
|
hwAssets.push({
|
||||||
@@ -281,14 +314,24 @@ export async function parseExcel(file: File): Promise<MasterAssetData> {
|
|||||||
법인: row['법인'] || '',
|
법인: row['법인'] || '',
|
||||||
자산코드: row['자산번호'] || row['자산코드'] || '',
|
자산코드: row['자산번호'] || row['자산코드'] || '',
|
||||||
명칭: row['용도'] || row['명칭'] || '',
|
명칭: row['용도'] || row['명칭'] || '',
|
||||||
용도: row['용도'] || '', 위치: row['설치위치'] || row['위치'] || '',
|
용도: row['용도'] || '',
|
||||||
|
상세: row['상세내용'] || row['상세'] || '',
|
||||||
|
현사용조직: row['현사용조직'] || '',
|
||||||
|
이전사용조직: row['이전사용조직'] || '',
|
||||||
|
위치: row['설치위치'] || row['위치'] || '',
|
||||||
관리자: row['담당자(정)'] || '', 담당자_정: row['담당자(정)'] || '', 담당자_부: row['담당자(부)'] || '',
|
관리자: row['담당자(정)'] || '', 담당자_정: row['담당자(정)'] || '', 담당자_부: row['담당자(부)'] || '',
|
||||||
IP주소: row['IP 주소'] || row['IP주소'] || '', IP2: row['IP2'] || '',
|
IP주소: row['IP 주소'] || row['IP주소'] || '',
|
||||||
원격접속: row['원격접속'] || '', 서버ID: row['서버ID'] || '', 서버PW: row['서버PW'] || '',
|
원격접속: row['원격접속'] || '',
|
||||||
|
서버ID: row['서버ID'] || '',
|
||||||
|
서버PW: row['서버PW'] || '',
|
||||||
모델명: row['모델명'] || '', OS: row['OS'] || '',
|
모델명: row['모델명'] || '', OS: row['OS'] || '',
|
||||||
CPU: row['CPU'] || '', RAM: row['RAM'] || '', GPU: row['GPU'] || '',
|
CPU: row['CPU'] || '', RAM: row['RAM'] || '', GPU: row['GPU'] || '',
|
||||||
SSD1: row['Storage1'] || row['SSD1'] || '', SSD2: row['Storage2'] || row['SSD2'] || '', HDD1: row['Storage3'] || row['HDD1'] || '',
|
SSD1: row['SSD1'] || row['Storage1'] || '',
|
||||||
모니터링: row['모니터링'] || '', 비고: row['비고'] || '', storage유형: row['유형'] || '물리',
|
SSD2: row['SSD2'] || row['Storage2'] || '',
|
||||||
|
HDD1: row['HDD1'] || row['Storage3'] || '',
|
||||||
|
모니터링: row['모니터링'] || '',
|
||||||
|
비고: row['비고'] || '',
|
||||||
|
storage유형: row['유형'] || '물리',
|
||||||
MACaddress: '', HW사양: '', 구매일: '', 금액: '', 납품업체: '', 품의서명: '',
|
MACaddress: '', HW사양: '', 구매일: '', 금액: '', 납품업체: '', 품의서명: '',
|
||||||
});
|
});
|
||||||
} else if (sheetName === '스토리지') {
|
} else if (sheetName === '스토리지') {
|
||||||
@@ -301,6 +344,7 @@ export async function parseExcel(file: File): Promise<MasterAssetData> {
|
|||||||
담당자_정: row['담당자(정)'] || '', 담당자_부: row['담당자(부)'] || '',
|
담당자_정: row['담당자(정)'] || '', 담당자_부: row['담당자(부)'] || '',
|
||||||
구매일: row['구매일'] || '', 금액: row['금액'] ? String(row['금액']) : '',
|
구매일: row['구매일'] || '', 금액: row['금액'] ? String(row['금액']) : '',
|
||||||
납품업체: row['납품업체'] || '', 품의서명: row['품의서명'] || '',
|
납품업체: row['납품업체'] || '', 품의서명: row['품의서명'] || '',
|
||||||
|
비고: row['비고'] || ''
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
hwAssets.push({
|
hwAssets.push({
|
||||||
@@ -311,6 +355,7 @@ export async function parseExcel(file: File): Promise<MasterAssetData> {
|
|||||||
HW사양: row['HW사양'] || '', OS: row['OS'] || '',
|
HW사양: row['HW사양'] || '', OS: row['OS'] || '',
|
||||||
구매일: row['구매일'] || '', 금액: row['금액'] ? String(row['금액']) : '',
|
구매일: row['구매일'] || '', 금액: row['금액'] ? String(row['금액']) : '',
|
||||||
납품업체: row['납품업체'] || '', 품의서명: row['품의서명'] || '',
|
납품업체: row['납품업체'] || '', 품의서명: row['품의서명'] || '',
|
||||||
|
비고: row['비고'] || ''
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user