|
@@ -0,0 +1,257 @@
|
|
|
+let vhclSize, list, saveBtn, pceSaveBtn, sizePceList, sizePceData;
|
|
|
+const _apiUri = "/api/scrs/vhcl";
|
|
|
+$(()=>{
|
|
|
+ //닫기 버튼
|
|
|
+ const coloseBtn = new dxBtn($(".close-button"), '닫기', 'close', 'outlined', 80, 30, false, true);
|
|
|
+ coloseBtn.onClick(()=>window.close());
|
|
|
+
|
|
|
+ //조회 버튼
|
|
|
+ const searchBtn = new dxBtn($(".search-button"), '조회', 'refresh', 'outlined', 80, 30, false, true);
|
|
|
+ searchBtn.onClick(refreshData);
|
|
|
+
|
|
|
+ //차량크기 수정 버튼
|
|
|
+ saveBtn = new dxBtn($('.save_btn'), '수정', 'save', 'outlined', 80, 30, false, true);
|
|
|
+ saveBtn.onClick(sizeEditEvent);
|
|
|
+
|
|
|
+ //차량 크기별 환산계수 수정 버튼
|
|
|
+ pceSaveBtn = new dxBtn($('.pce_save_btn'), '수정', 'save', 'outlined', 80, 30, false, true);
|
|
|
+ pceSaveBtn.onClick(pceEditEvent);
|
|
|
+
|
|
|
+ //차종별 차량 크기 리스트 컬럼
|
|
|
+ const columns = [
|
|
|
+ {
|
|
|
+ dataField : 'vhcl_type',
|
|
|
+ caption : '차종',
|
|
|
+ alignment : 'center',
|
|
|
+ visible : false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ dataField : 'vhcl_type_desc',
|
|
|
+ caption : '차종 종별',
|
|
|
+ alignment : 'center',
|
|
|
+ allowEditing: false,
|
|
|
+ cellTemplate(c,e){
|
|
|
+ return alignTemplate(c, e, 'left');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ dataField : 'vhcl_type_rmrk',
|
|
|
+ caption : '차종 분류기준',
|
|
|
+ alignment : 'center',
|
|
|
+ allowEditing: false,
|
|
|
+ cellTemplate(c,e){
|
|
|
+ return alignTemplate(c, e, 'left');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ dataField : 'vhcl_type_exam',
|
|
|
+ caption : '차종 예시차량',
|
|
|
+ alignment : 'center',
|
|
|
+ visible : false,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ dataField : 'vhcl_size',
|
|
|
+ caption : '차량 크기 설정',
|
|
|
+ alignment : 'center',
|
|
|
+ lookup : {
|
|
|
+ dataSource : [],
|
|
|
+ valueExpr : 'vhcl_size',
|
|
|
+ displayExpr : 'vhcl_desc',
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ //차종별 차량 크리 리스트
|
|
|
+ list = initializedGrid($('.list'), '100%', '100%', columns, [], 'single', 'standard',
|
|
|
+ null, false, false, false, '', false, false,
|
|
|
+ false, '', false, {editing: {allowUpdating : true, mode: "batch"}, sorting: 'none'}, null).dxDataGrid('instance');
|
|
|
+
|
|
|
+ //차량 크기별 승용차 환산계수 리스트
|
|
|
+ sizePceList = initializedGrid($('.size-pce-list'), '100%', '100%', [], [], 'none', 'standard',
|
|
|
+ null, false, false, false, '', false, false,
|
|
|
+ false, '', false, {editing: {allowUpdating : true, mode: "batch"}, sorting: 'none'}, null).dxDataGrid('instance');
|
|
|
+
|
|
|
+ //데이터 가져오기
|
|
|
+ fetchBaseData();
|
|
|
+})
|
|
|
+
|
|
|
+/**
|
|
|
+ * 리스트 데이터 호출
|
|
|
+ */
|
|
|
+function fetchBaseData() {
|
|
|
+ getDataAsync(_apiUri + "/type_size_mngm", initTypSizeData, null, null, false);
|
|
|
+ getDataAsync(_apiUri + '/size_pce_mngm', initSizePceData, null, null, false);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 차종별 차량 크기 리스트 데이터 세팅
|
|
|
+ * @param jsonData 수신 데이터
|
|
|
+ */
|
|
|
+function initTypSizeData(jsonData) {
|
|
|
+ if (jsonData) {
|
|
|
+ list.option('dataSource', jsonData);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 차량 크기별 환산계수 리스트 데이터 및 컬럼 룩업 데이터 세팅
|
|
|
+ * @param jsonData 수신 데이터
|
|
|
+ */
|
|
|
+function initSizePceData(jsonData) {
|
|
|
+ sizePceData = jsonData;
|
|
|
+ if (jsonData) {
|
|
|
+ list.option('columns[4].lookup.dataSource', jsonData);
|
|
|
+ if (jsonData.length > 0 ) {
|
|
|
+ let column = [
|
|
|
+ {
|
|
|
+ dataField : 'section',
|
|
|
+ caption : '구분',
|
|
|
+ alignment : 'center',
|
|
|
+ allowEditing: false,
|
|
|
+ }
|
|
|
+ ];
|
|
|
+
|
|
|
+ let data = {section: '차량크기별 승용차 환산계수'};
|
|
|
+
|
|
|
+ jsonData.forEach((obj)=>{
|
|
|
+ column.push({
|
|
|
+ dataField : 'pce_' + obj.vhcl_size,
|
|
|
+ caption : obj.vhcl_desc + '형',
|
|
|
+ alignment : 'center',
|
|
|
+ format : '##0.0'
|
|
|
+ });
|
|
|
+
|
|
|
+ data['pce_' + obj.vhcl_size] = obj.pce;
|
|
|
+ });
|
|
|
+
|
|
|
+ sizePceList.option('columns', column);
|
|
|
+ sizePceList.option('dataSource', [data]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 치종별 사이즈 변경 이벤트
|
|
|
+ * @returns {boolean|*}
|
|
|
+ */
|
|
|
+function sizeEditEvent() {
|
|
|
+ const isEdit = list.hasEditData();
|
|
|
+
|
|
|
+ if (!isEdit) return alertWarning('변경된 데이터가 없습니다.');
|
|
|
+ const updateData = [...list.option('dataSource')];
|
|
|
+ confirmMessage("차종별 차량 크기 정보를 수정하시겠습니까?").done((yes)=>{
|
|
|
+ if (yes) {
|
|
|
+ const editOption = list.option('editing.changes');
|
|
|
+ if (editOption && editOption.length > 0){
|
|
|
+ for (let option of editOption) {
|
|
|
+ const optionKey = option.key;
|
|
|
+ const optionData = option.data;
|
|
|
+ if (optionKey) {
|
|
|
+ for (let obj of updateData) {
|
|
|
+ if (obj.vhcl_size === optionKey.vhcl_size &&
|
|
|
+ obj.vhcl_type === optionKey.vhcl_type) {
|
|
|
+ obj.vhcl_size = optionData.vhcl_size;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const result = postInsertUpdate(_apiUri + '/type_size_mngm', updateData);
|
|
|
+
|
|
|
+ if (result && result > -1) {
|
|
|
+ alertConfirm("차종별 차량 크기 정보를 수정하였습니다.");
|
|
|
+ list.saveEditData();
|
|
|
+ getDataAsync(_apiUri + '/type_size_mngm', updateListData, null, null, false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 차량 크기별 환산계수 변경 이벤트
|
|
|
+ * @returns {boolean|*}
|
|
|
+ */
|
|
|
+function pceEditEvent() {
|
|
|
+ const isEdit = sizePceList.hasEditData();
|
|
|
+ let updateData = [];
|
|
|
+ if (sizePceData && sizePceData.length > 0) {
|
|
|
+ updateData = [...sizePceData];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!isEdit) return alertWarning('변경된 데이터가 없습니다.');
|
|
|
+
|
|
|
+ confirmMessage("차량 크기별 환산계수 정보를 수정하시겠습니까?").done((yes)=>{
|
|
|
+ if (yes) {
|
|
|
+ const editOption = sizePceList.option('editing.changes');
|
|
|
+ if (editOption && editOption[0] && editOption[0].data){
|
|
|
+ for (let key in editOption[0].data) {
|
|
|
+ const vhclSize = key.replace('pce_', "");
|
|
|
+ const pce = Number(editOption[0].data[key]);
|
|
|
+ const pceStr = pce.toString();
|
|
|
+
|
|
|
+ if (!pceStr) return alertWarning("환산 계수를 입력해주세요");
|
|
|
+
|
|
|
+ if (isNaN(pce)) return alertWarning("환산 계수는 숫자로만 입력해주세요");
|
|
|
+
|
|
|
+ let array = pceStr.split('.');
|
|
|
+
|
|
|
+ if (array[0] && array[0].length > 3) return alertWarning("환산 계수의 소수점 앞자리는 3자리까지만 입력이 가능합니다.");
|
|
|
+
|
|
|
+ for (let obj of updateData) {
|
|
|
+ if (obj.vhcl_size === Number(vhclSize)) {
|
|
|
+ obj.pce = pce;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const result = postInsertUpdate(_apiUri + '/size_pce_mngm', updateData);
|
|
|
+
|
|
|
+ if (result && result > -1) {
|
|
|
+ alertConfirm("차량크기별 승용차 환산계수 정보를 수정하였습니다.");
|
|
|
+ sizePceList.saveEditData();
|
|
|
+ getDataAsync(_apiUri + '/size_pce_mngm', updatePceData, null, null, false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 차량 크기별 환산계수 리스트 데이터 업데이트
|
|
|
+ * @param jsonData 수신데이터
|
|
|
+ */
|
|
|
+function updatePceData(jsonData) {
|
|
|
+ sizePceData = jsonData;
|
|
|
+ let data = {
|
|
|
+ section: '차량크기별 승용차 환산계수'
|
|
|
+ };
|
|
|
+
|
|
|
+ if (jsonData && jsonData.length > 0 ) {
|
|
|
+ jsonData.forEach((obj)=>{
|
|
|
+ data['pce_' + obj.vhcl_size] = obj.pce;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ sizePceList.option('dataSource', [data]);
|
|
|
+ sizePceList.cancelEditData();
|
|
|
+ sizePceList.refresh();
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 차종별 차량 크기 데이터 업데이트
|
|
|
+ * @param jsonData 수신데이터
|
|
|
+ */
|
|
|
+function updateListData(jsonData) {
|
|
|
+ list.option('dataSource', jsonData);
|
|
|
+ list.cancelEditData();
|
|
|
+ list.refresh();
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 조회버튼 클릭 이벤트
|
|
|
+ */
|
|
|
+function refreshData() {
|
|
|
+ getDataAsync(_apiUri + '/type_size_mngm', updateListData, null, null);
|
|
|
+ getDataAsync(_apiUri + '/size_pce_mngm', updatePceData, null, null);
|
|
|
+}
|