parent
6c5e968861
commit
5b6a21eb60
|
|
@ -37,7 +37,7 @@ public class BudgetController {
|
||||||
}
|
}
|
||||||
System.out.println(requestDto.getYear());
|
System.out.println(requestDto.getYear());
|
||||||
List<BudgetingList> list = budgetService.selectBudgetingList(loginUser, requestDto);
|
List<BudgetingList> list = budgetService.selectBudgetingList(loginUser, requestDto);
|
||||||
List<YearResult> yearList = budgetService.selectBudgetingYearList(loginUser);
|
List<Integer> yearList = budgetService.selectBudgetingYearList(loginUser);
|
||||||
long sum = 0;
|
long sum = 0;
|
||||||
for (int i = 0; i < list.size(); i++) {
|
for (int i = 0; i < list.size(); i++) {
|
||||||
sum += list.get(i).getAmount();
|
sum += list.get(i).getAmount();
|
||||||
|
|
@ -60,7 +60,7 @@ public class BudgetController {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 예산편성 - 연도 삭제
|
// 예산편성 - 연도 삭제
|
||||||
@DeleteMapping("/budgeting/year")
|
@PostMapping("/budgeting/deleteYear")
|
||||||
public ResultResponse<?> deleteYearBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingCopyReqeust requestDto) {
|
public ResultResponse<?> deleteYearBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingCopyReqeust requestDto) {
|
||||||
budgetService.deleteBudgetingYear(loginUser, requestDto);
|
budgetService.deleteBudgetingYear(loginUser, requestDto);
|
||||||
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
|
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
|
||||||
|
|
@ -89,13 +89,13 @@ public class BudgetController {
|
||||||
}
|
}
|
||||||
|
|
||||||
//예산편성 - 항목변경
|
//예산편성 - 항목변경
|
||||||
@PutMapping("/budgeting/code")
|
@PostMapping("/budgeting/updateCode")
|
||||||
public ResultResponse<?> updateBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto) {
|
public ResultResponse<?> updateBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto) {
|
||||||
return new ResultResponse(budgetService.updateBudgetingList(loginUser, requestDto));
|
return new ResultResponse(budgetService.updateBudgetingList(loginUser, requestDto));
|
||||||
}
|
}
|
||||||
|
|
||||||
//예산편성 - 항목삭제
|
//예산편성 - 항목삭제
|
||||||
@DeleteMapping("/budgeting/code")
|
@PostMapping("/budgeting/deleteCode")
|
||||||
public ResultResponse<?> deleteBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto) {
|
public ResultResponse<?> deleteBudgeting(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.BudgetingInsertReqeust requestDto) {
|
||||||
return new ResultResponse(budgetService.deleteBudgetingList(loginUser, requestDto));
|
return new ResultResponse(budgetService.deleteBudgetingList(loginUser, requestDto));
|
||||||
}
|
}
|
||||||
|
|
@ -118,7 +118,7 @@ public class BudgetController {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 예산편성 - 예산삭제 (0원 세팅)
|
// 예산편성 - 예산삭제 (0원 세팅)
|
||||||
@DeleteMapping("/budgeting") //@AuthenticationPrincipal
|
@PostMapping("/deleteBudgeting") //@AuthenticationPrincipal
|
||||||
public ResultResponse<?> deleteBudgeting(UserInfo loginUser, BudgetDto.BudgetingSaveReqeust requestDto) {
|
public ResultResponse<?> deleteBudgeting(UserInfo loginUser, BudgetDto.BudgetingSaveReqeust requestDto) {
|
||||||
budgetService.deleteBudgeting(loginUser, requestDto);
|
budgetService.deleteBudgeting(loginUser, requestDto);
|
||||||
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
|
return new ResultResponse().successResponse(ResultResponseCode.SUCCESS);
|
||||||
|
|
@ -270,33 +270,24 @@ public class BudgetController {
|
||||||
@GetMapping("/stats")
|
@GetMapping("/stats")
|
||||||
public ModelAndView viewStatsAllList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) {
|
public ModelAndView viewStatsAllList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) {
|
||||||
ModelAndView mav = new ModelAndView("budget/stats");
|
ModelAndView mav = new ModelAndView("budget/stats");
|
||||||
String userOrgCode;
|
if(requestDto.getCode()==null){
|
||||||
if (requestDto.getYear() != null) {
|
//기초 검색 데이터 세팅
|
||||||
userOrgCode = requestDto.getCode();
|
requestDto.setCode(loginUser.getOgCd());
|
||||||
|
requestDto.setWon(1);
|
||||||
List<ExpenseResult> list = budgetService.selectSpGetbudgetStatOrg(loginUser, requestDto);
|
|
||||||
|
|
||||||
mav.addObject("list", list);
|
|
||||||
} else {
|
|
||||||
// 로그인된 해당청 기본선택
|
|
||||||
userOrgCode = loginUser.getOgCd();
|
|
||||||
mav.addObject("list");
|
|
||||||
|
|
||||||
// 첫해 첫날 ~ 오늘날짜 기본세팅
|
|
||||||
LocalDate date = LocalDate.now();
|
LocalDate date = LocalDate.now();
|
||||||
String CurrentYear = String.valueOf(date.getYear()) + "-01-01";
|
requestDto.setStDate(LocalDate.parse(date.getYear()+"-01-01"));
|
||||||
requestDto.setStDate(LocalDate.parse(CurrentYear));
|
|
||||||
requestDto.setEdDate(date);
|
requestDto.setEdDate(date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
mav.addObject("budgetCode", budgetService.selectBudgetCodeToYear(requestDto.getStDate().getYear()));
|
||||||
|
mav.addObject("loginOrgan", loginUser.getOgCd());
|
||||||
|
if(loginUser.getOgCd().equals("OG001")){
|
||||||
//하위청 리스트
|
//하위청 리스트
|
||||||
List<CodeResult> downOrgList = budgetService.selectDownOrg(loginUser.getOgCd());
|
List<CodeResult> downOrgList = budgetService.selectDownOrg(loginUser.getOgCd());
|
||||||
mav.addObject("downOrgList", downOrgList);
|
mav.addObject("downOrgList", downOrgList);
|
||||||
|
}
|
||||||
List<CodeResult> codeList = budgetService.selectGetLowerOrgCodeByName(loginUser);
|
|
||||||
mav.addObject("codeList", codeList);
|
|
||||||
|
|
||||||
mav.addObject("searchParams", requestDto);
|
mav.addObject("searchParams", requestDto);
|
||||||
|
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -352,8 +343,9 @@ public class BudgetController {
|
||||||
@GetMapping("/stats/detail")
|
@GetMapping("/stats/detail")
|
||||||
public ModelAndView viewStatsDetailList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) {
|
public ModelAndView viewStatsDetailList(@AuthenticationPrincipal UserInfo loginUser, BudgetDto.StatsSearchReqeust requestDto, Pageable pageable) {
|
||||||
ModelAndView mav = new ModelAndView("budget/statsDetail");
|
ModelAndView mav = new ModelAndView("budget/statsDetail");
|
||||||
|
requestDto.setCode(loginUser.getOgCd());
|
||||||
|
|
||||||
List<YearResult> yearList = budgetService.selectBudgetingYearList(loginUser);
|
List<Integer> yearList = budgetService.selectBudgetingYearList(loginUser);
|
||||||
if (requestDto.getStDate() != null) {
|
if (requestDto.getStDate() != null) {
|
||||||
// List<StatsItemResult> list = budgetService.selectSpGetbudgetStatDetail(loginUser, requestDto);
|
// List<StatsItemResult> list = budgetService.selectSpGetbudgetStatDetail(loginUser, requestDto);
|
||||||
List<StatsDetailResult> list = budgetService.selectStatDetailList(requestDto);
|
List<StatsDetailResult> list = budgetService.selectStatDetailList(requestDto);
|
||||||
|
|
@ -363,21 +355,18 @@ public class BudgetController {
|
||||||
} else {
|
} else {
|
||||||
LocalDate date = LocalDate.now();
|
LocalDate date = LocalDate.now();
|
||||||
List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, date.getYear());
|
List<L3CodeResult> codeList = budgetService.selectSpGetL3Code(loginUser, date.getYear());
|
||||||
requestDto.setYear(date.getYear());
|
requestDto.setYear(requestDto.getYear()==null?date.getYear():requestDto.getYear());
|
||||||
mav.addObject("list");
|
mav.addObject("list");
|
||||||
mav.addObject("codeList", codeList);
|
mav.addObject("codeList", codeList);
|
||||||
requestDto.setCode(loginUser.getOgCd());
|
|
||||||
// 첫해 첫날 ~ 오늘날짜 기본세팅
|
// 첫해 첫날 ~ 오늘날짜 기본세팅
|
||||||
String CurrentYear = date.getYear() + "-01-01";
|
String CurrentYear = requestDto.getYear() + "-01-01";
|
||||||
requestDto.setStDate(LocalDate.parse(CurrentYear));
|
requestDto.setStDate(LocalDate.parse(CurrentYear));
|
||||||
|
if(requestDto.getYear().equals(date.getYear())){
|
||||||
requestDto.setEdDate(date);
|
requestDto.setEdDate(date);
|
||||||
|
}else{
|
||||||
|
requestDto.setEdDate(LocalDate.parse(requestDto.getYear()+"-12-31"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//하위청 리스트 - 검색용
|
|
||||||
mav.addObject("downOrgList", budgetService.selectDownOrg(loginUser.getOgCd()));
|
|
||||||
//하위청 리스트 - 목록용
|
|
||||||
mav.addObject("downList", budgetService.selectDownOrg(requestDto.getCode()));
|
|
||||||
mav.addObject("loginOrgan", loginUser.getOgCd());
|
|
||||||
|
|
||||||
mav.addObject("yearList", yearList);
|
mav.addObject("yearList", yearList);
|
||||||
mav.addObject("searchParams", requestDto);
|
mav.addObject("searchParams", requestDto);
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import java.util.List;
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface BudgetMapper {
|
public interface BudgetMapper {
|
||||||
List<BudgetingList> callSpGetBudgetPlanInfo(BudgetParams param);
|
List<BudgetingList> callSpGetBudgetPlanInfo(BudgetParams param);
|
||||||
List<YearResult> callSpGetBudgetCodeYearList();
|
List<Integer> callSpGetBudgetCodeYearList();
|
||||||
UpdateResult callSpCopyBudgetItem(BudgetParams param);
|
UpdateResult callSpCopyBudgetItem(BudgetParams param);
|
||||||
UpdateResult callBruteForceDeleteBudgetItem(BudgetParams param);
|
UpdateResult callBruteForceDeleteBudgetItem(BudgetParams param);
|
||||||
UpdateResult callSpUpdateBudgetPlanCodeItem(BudgetParams param);
|
UpdateResult callSpUpdateBudgetPlanCodeItem(BudgetParams param);
|
||||||
|
|
@ -32,4 +32,7 @@ public interface BudgetMapper {
|
||||||
List<AssignAmount> selectBudgetAssignAmountList(BudgetParams params);
|
List<AssignAmount> selectBudgetAssignAmountList(BudgetParams params);
|
||||||
List<ExpenseAmount> selectBudgetExpenseAmountList(BudgetParams params);
|
List<ExpenseAmount> selectBudgetExpenseAmountList(BudgetParams params);
|
||||||
List<StatsDetailResult> selectStatDetailList(BudgetParams params);
|
List<StatsDetailResult> selectStatDetailList(BudgetParams params);
|
||||||
|
|
||||||
|
List<TblBudgetCodeL1> selectBudgetCodeL1List(String year);
|
||||||
|
List<TblBudgetCodeL2> selectBudgetCodeL2List(String l1Code);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.dbnt.faisp.main.budget.model;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class BudgetCode {
|
||||||
|
List<TblBudgetCodeL1> codeL1List;
|
||||||
|
List<TblBudgetCodeL2> codeL2List;
|
||||||
|
List<TblBudgetCodeL3> codeL3List;
|
||||||
|
}
|
||||||
|
|
@ -34,6 +34,9 @@ public class TblBudgetCodeL1 {
|
||||||
@Column(name = "modi_date")
|
@Column(name = "modi_date")
|
||||||
private LocalDateTime modiDate;
|
private LocalDateTime modiDate;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private Integer colspan;
|
||||||
|
|
||||||
public void setData(String l1Code, String l1Name, String l1Year, String useTag, Integer seqOrd, String remark, LocalDateTime modiDate){
|
public void setData(String l1Code, String l1Name, String l1Year, String useTag, Integer seqOrd, String remark, LocalDateTime modiDate){
|
||||||
this.l1Code = l1Code;
|
this.l1Code = l1Code;
|
||||||
this.l1Name = l1Name;
|
this.l1Name = l1Name;
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,7 @@ import lombok.Setter;
|
||||||
import org.hibernate.annotations.DynamicInsert;
|
import org.hibernate.annotations.DynamicInsert;
|
||||||
import org.hibernate.annotations.DynamicUpdate;
|
import org.hibernate.annotations.DynamicUpdate;
|
||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.*;
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -37,6 +34,8 @@ public class TblBudgetCodeL2 {
|
||||||
@Column(name = "modi_date")
|
@Column(name = "modi_date")
|
||||||
private LocalDateTime modiDate;
|
private LocalDateTime modiDate;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private Integer colspan;
|
||||||
|
|
||||||
public void setData(String l2Code, String l2Name, String l1Code, String useTag, Integer seqOrd, String remark, LocalDateTime modiDate){
|
public void setData(String l2Code, String l2Name, String l1Code, String useTag, Integer seqOrd, String remark, LocalDateTime modiDate){
|
||||||
this.l2Code = l2Code;
|
this.l2Code = l2Code;
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,7 @@ import lombok.Setter;
|
||||||
import org.hibernate.annotations.DynamicInsert;
|
import org.hibernate.annotations.DynamicInsert;
|
||||||
import org.hibernate.annotations.DynamicUpdate;
|
import org.hibernate.annotations.DynamicUpdate;
|
||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.*;
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -37,6 +34,9 @@ public class TblBudgetCodeL3 {
|
||||||
@Column(name = "modi_date")
|
@Column(name = "modi_date")
|
||||||
private LocalDateTime modiDate;
|
private LocalDateTime modiDate;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private Integer colspan;
|
||||||
|
|
||||||
public void setData(String l3Code, String l3Name, String l2Code, String useTag, Integer seqOrd, String remark, LocalDateTime modiDate){
|
public void setData(String l3Code, String l3Name, String l2Code, String useTag, Integer seqOrd, String remark, LocalDateTime modiDate){
|
||||||
this.l3Code = l3Code;
|
this.l3Code = l3Code;
|
||||||
this.l3Name = l3Name;
|
this.l3Name = l3Name;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import lombok.Setter;
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class StatsDetailResult {
|
public class StatsDetailResult {
|
||||||
|
String parentOrgan;
|
||||||
String organCd;
|
String organCd;
|
||||||
Double planAmount = 0d;
|
Double planAmount = 0d;
|
||||||
Double assignAmount = 0d;
|
Double assignAmount = 0d;
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,11 @@ package com.dbnt.faisp.main.budget.repository;
|
||||||
import com.dbnt.faisp.main.budget.model.TblBudgetCodeL1;
|
import com.dbnt.faisp.main.budget.model.TblBudgetCodeL1;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface TblBudgetCodeL1Repository extends JpaRepository<TblBudgetCodeL1, String> {
|
public interface TblBudgetCodeL1Repository extends JpaRepository<TblBudgetCodeL1, String> {
|
||||||
Optional<TblBudgetCodeL1> findByL1NameAndL1YearAndUseTag(String l1Name, String l1Year, String useTag);
|
Optional<TblBudgetCodeL1> findByL1NameAndL1YearAndUseTag(String l1Name, String l1Year, String useTag);
|
||||||
Optional<TblBudgetCodeL1> findTop1ByL1YearOrderByL1CodeDesc(String l1Year);
|
Optional<TblBudgetCodeL1> findTop1ByL1YearOrderByL1CodeDesc(String l1Year);
|
||||||
|
List<TblBudgetCodeL1> findByL1YearOrderByL1Code(String year);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,13 @@ package com.dbnt.faisp.main.budget.repository;
|
||||||
import com.dbnt.faisp.main.budget.model.TblBudgetCodeL2;
|
import com.dbnt.faisp.main.budget.model.TblBudgetCodeL2;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface TblBudgetCodeL2Repository extends JpaRepository<TblBudgetCodeL2, String> {
|
public interface TblBudgetCodeL2Repository extends JpaRepository<TblBudgetCodeL2, String> {
|
||||||
Optional<TblBudgetCodeL2> findByL2NameAndL1CodeAndUseTag(String codeL2Name, String l1Code, String y);
|
Optional<TblBudgetCodeL2> findByL2NameAndL1CodeAndUseTag(String codeL2Name, String l1Code, String y);
|
||||||
|
|
||||||
Optional<TblBudgetCodeL2> findTop1ByL1CodeOrderByL2CodeDesc(String l1Code);
|
Optional<TblBudgetCodeL2> findTop1ByL1CodeOrderByL2CodeDesc(String l1Code);
|
||||||
|
|
||||||
|
List<TblBudgetCodeL2> findByL1CodeOrderByL2Code(String l1Code);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,13 @@ package com.dbnt.faisp.main.budget.repository;
|
||||||
import com.dbnt.faisp.main.budget.model.TblBudgetCodeL3;
|
import com.dbnt.faisp.main.budget.model.TblBudgetCodeL3;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public interface TblBudgetCodeL3Repository extends JpaRepository<TblBudgetCodeL3, String> {
|
public interface TblBudgetCodeL3Repository extends JpaRepository<TblBudgetCodeL3, String> {
|
||||||
Optional<TblBudgetCodeL3> findByL3NameAndL2CodeAndUseTag(String codeL3Name, String l2Code, String useTag);
|
Optional<TblBudgetCodeL3> findByL3NameAndL2CodeAndUseTag(String codeL3Name, String l2Code, String useTag);
|
||||||
|
|
||||||
Optional<TblBudgetCodeL3> findTop1ByL2CodeOrderByL3CodeDesc(String l2Code);
|
Optional<TblBudgetCodeL3> findTop1ByL2CodeOrderByL3CodeDesc(String l2Code);
|
||||||
|
|
||||||
|
List<TblBudgetCodeL3> findByL2CodeAndUseTagOrderByL3Code(String l2Code, String useTag);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ public class BudgetService {
|
||||||
return budgetMapper.callSpGetBudgetPlanInfo(param);
|
return budgetMapper.callSpGetBudgetPlanInfo(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<YearResult> selectBudgetingYearList(UserInfo loginUser){
|
public List<Integer> selectBudgetingYearList(UserInfo loginUser){
|
||||||
// return budgetRepository.callSpGetBudgetCodeYearList();
|
// return budgetRepository.callSpGetBudgetCodeYearList();
|
||||||
return budgetMapper.callSpGetBudgetCodeYearList();
|
return budgetMapper.callSpGetBudgetCodeYearList();
|
||||||
}
|
}
|
||||||
|
|
@ -572,7 +572,41 @@ public class BudgetService {
|
||||||
params.setStDate(requestDto.getStDate());
|
params.setStDate(requestDto.getStDate());
|
||||||
params.setEdDate(requestDto.getEdDate());
|
params.setEdDate(requestDto.getEdDate());
|
||||||
params.setWon(requestDto.getWon());
|
params.setWon(requestDto.getWon());
|
||||||
List<StatsDetailResult> statsList = budgetMapper.selectStatDetailList(params);
|
List<StatsDetailResult> statsList = new ArrayList<>();
|
||||||
|
List<StatsDetailResult> tempList = budgetMapper.selectStatDetailList(params);
|
||||||
|
if(requestDto.getCode().equals("OG001")){
|
||||||
|
StatsDetailResult total = new StatsDetailResult();
|
||||||
|
for(StatsDetailResult stats: tempList){
|
||||||
|
if(stats.getParentOrgan()!=null){
|
||||||
|
params.setCode(stats.getOrganCd());
|
||||||
|
List<StatsDetailResult> subList = budgetMapper.selectStatDetailList(params);
|
||||||
|
StatsDetailResult subTotal = new StatsDetailResult();
|
||||||
|
subTotal.setOrganCd(stats.getOrganCd());
|
||||||
|
subTotal.setParentOrgan(stats.getOrganCd());
|
||||||
|
for(StatsDetailResult sub: subList){
|
||||||
|
total.setAssignAmount(total.getAssignAmount()+sub.getAssignAmount());
|
||||||
|
total.setExpenseAmount(total.getExpenseAmount()+sub.getExpenseAmount());
|
||||||
|
subTotal.setAssignAmount(subTotal.getAssignAmount()+sub.getAssignAmount());
|
||||||
|
subTotal.setExpenseAmount(subTotal.getExpenseAmount()+sub.getExpenseAmount());
|
||||||
|
}
|
||||||
|
statsList.add(subTotal);
|
||||||
|
statsList.addAll(subList);
|
||||||
|
}else{
|
||||||
|
total.setAssignAmount(total.getAssignAmount()+stats.getAssignAmount());
|
||||||
|
total.setExpenseAmount(total.getExpenseAmount()+stats.getExpenseAmount());
|
||||||
|
statsList.add(stats);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tempList.clear();
|
||||||
|
tempList.addAll(statsList);
|
||||||
|
statsList.clear();
|
||||||
|
statsList.add(total);
|
||||||
|
statsList.addAll(tempList);
|
||||||
|
}else{
|
||||||
|
statsList.addAll(tempList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Double wonUnit = params.getWon().doubleValue();
|
Double wonUnit = params.getWon().doubleValue();
|
||||||
for(StatsDetailResult stat : statsList){
|
for(StatsDetailResult stat : statsList){
|
||||||
stat.setPlanAmount(stat.getPlanAmount()/wonUnit);
|
stat.setPlanAmount(stat.getPlanAmount()/wonUnit);
|
||||||
|
|
@ -593,6 +627,29 @@ public class BudgetService {
|
||||||
return budgetMapper.callSpGetBudgetCodeL3(params);
|
return budgetMapper.callSpGetBudgetCodeL3(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BudgetCode selectBudgetCodeToYear(Integer year) {
|
||||||
|
BudgetCode budgetCode = new BudgetCode();
|
||||||
|
List<TblBudgetCodeL1> codeL1List = budgetMapper.selectBudgetCodeL1List(year.toString());
|
||||||
|
List<TblBudgetCodeL2> codeL2List = new ArrayList<>();
|
||||||
|
List<TblBudgetCodeL3> codeL3List = new ArrayList<>();
|
||||||
|
for(TblBudgetCodeL1 codeL1: codeL1List){
|
||||||
|
List<TblBudgetCodeL2> temp2List = budgetMapper.selectBudgetCodeL2List(codeL1.getL1Code());
|
||||||
|
int l1Colspan = 0;
|
||||||
|
for(TblBudgetCodeL2 codeL2: temp2List){
|
||||||
|
List<TblBudgetCodeL3> temp3List = codeL3Repository.findByL2CodeAndUseTagOrderByL3Code(codeL2.getL2Code(), "Y");
|
||||||
|
codeL2.setColspan(temp3List.size());
|
||||||
|
l1Colspan += temp3List.size();
|
||||||
|
codeL3List.addAll(temp3List);
|
||||||
|
}
|
||||||
|
codeL2List.addAll(temp2List);
|
||||||
|
codeL1.setColspan(l1Colspan);
|
||||||
|
}
|
||||||
|
budgetCode.setCodeL1List(codeL1List);
|
||||||
|
budgetCode.setCodeL2List(codeL2List);
|
||||||
|
budgetCode.setCodeL3List(codeL3List);
|
||||||
|
return budgetCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// public void insertBudgetingYear(UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto){
|
// public void insertBudgetingYear(UserInfo loginUser, BudgetDto.BudgetingUpdateReqeust requestDto){
|
||||||
// UpdateResult result = budgetRepository.callSpUpdateBudgetPlanCodeName( requestDto.getPrevNameL1(), requestDto.getPrevNameL2(), requestDto.getPrevNameL3(),requestDto.getYear(),requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), "OG001", "admin");
|
// UpdateResult result = budgetRepository.callSpUpdateBudgetPlanCodeName( requestDto.getPrevNameL1(), requestDto.getPrevNameL2(), requestDto.getPrevNameL3(),requestDto.getYear(),requestDto.getNameL1(),requestDto.getNameL2(),requestDto.getNameL3(), "OG001", "admin");
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
modi_date as modiDate
|
modi_date as modiDate
|
||||||
from sp_get_budget_plan_info(#{code1}, #{code2}, #{code3})
|
from sp_get_budget_plan_info(#{code1}, #{code2}, #{code3})
|
||||||
</select>
|
</select>
|
||||||
<select id="callSpGetBudgetCodeYearList" resultType="YearResult">
|
<select id="callSpGetBudgetCodeYearList" resultType="int">
|
||||||
select l1_year as year
|
select l1_year as year
|
||||||
from sp_get_budget_code_year_list( )
|
from sp_get_budget_code_year_list( )
|
||||||
</select>
|
</select>
|
||||||
|
|
@ -191,15 +191,15 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectStatDetailList" resultType="StatsDetailResult" parameterType="BudgetParams">
|
<select id="selectStatDetailList" resultType="StatsDetailResult" parameterType="BudgetParams">
|
||||||
select og.organ_cd, tba.assign_amount, tbe.expense_amount
|
select og.parent_organ, og.organ_cd, tba.assign_amount, tbe.expense_amount
|
||||||
from(
|
from(
|
||||||
select (ROW_NUMBER() OVER()) AS order_seq, *
|
select (ROW_NUMBER() OVER()) AS order_seq, *
|
||||||
from (
|
from (
|
||||||
select organ_cd
|
select parent_organ, organ_cd
|
||||||
from (
|
from (
|
||||||
select #{code} as organ_cd
|
select null as parent_organ, #{code} as organ_cd
|
||||||
union all
|
union all
|
||||||
select organ_cd
|
select parent_organ, organ_cd
|
||||||
from organ_config
|
from organ_config
|
||||||
where parent_organ = #{code}
|
where parent_organ = #{code}
|
||||||
) a
|
) a
|
||||||
|
|
@ -230,4 +230,23 @@
|
||||||
on og.organ_cd = tbe.org_code
|
on og.organ_cd = tbe.org_code
|
||||||
order by og.order_seq
|
order by og.order_seq
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectBudgetCodeL1List" resultType="TblBudgetCodeL1" parameterType="String">
|
||||||
|
select distinct c1.*
|
||||||
|
from tbl_budget_code_l1 c1
|
||||||
|
inner join tbl_budget_code_l2 c2 on c2.l1_code = c1.l1_code
|
||||||
|
inner join tbl_budget_code_l3 c3 on c3.l2_code = c2.l2_code
|
||||||
|
where c3.use_tag = 'Y'
|
||||||
|
and c1.l1_year = #{year}
|
||||||
|
order by c1.l1_code
|
||||||
|
</select>
|
||||||
|
<select id="selectBudgetCodeL2List" resultType="TblBudgetCodeL2" parameterType="String">
|
||||||
|
select distinct c2.*
|
||||||
|
from tbl_budget_code_l1 c1
|
||||||
|
inner join tbl_budget_code_l2 c2 on c2.l1_code = c1.l1_code
|
||||||
|
inner join tbl_budget_code_l3 c3 on c3.l2_code = c2.l2_code
|
||||||
|
where c3.use_tag = 'Y'
|
||||||
|
and c2.l1_code = #{l1Code}
|
||||||
|
order by c2.l2_code
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -22,6 +22,14 @@ $(document).ready(function(){
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(document).on('change', '.amountInput', function (){
|
||||||
|
const pattern = /^[+-]?\d*(\.?\d*)?$/;
|
||||||
|
if(!pattern.test(this.value)){
|
||||||
|
this.value = "";
|
||||||
|
this.focus();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
$(document).on('click', '#assignsearchBtn', function () {
|
$(document).on('click', '#assignsearchBtn', function () {
|
||||||
assignSearch();
|
assignSearch();
|
||||||
})
|
})
|
||||||
|
|
@ -70,10 +78,7 @@ $(document).on('click', '#deleteBtn', function (){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type : 'DELETE',
|
type : 'DELETE',
|
||||||
data : params,
|
data : params,
|
||||||
|
|
||||||
url : "/budget/budgeting/code",
|
url : "/budget/budgeting/code",
|
||||||
|
|
||||||
|
|
||||||
beforeSend: function (xhr){
|
beforeSend: function (xhr){
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,9 @@ $(document).on('click', '#deleteBtn', function () {
|
||||||
params.nameL3 = $("input[name='budget']:checked")[0].dataset.name3;
|
params.nameL3 = $("input[name='budget']:checked")[0].dataset.name3;
|
||||||
console.dir(params);
|
console.dir(params);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'DELETE',
|
type: 'POST',
|
||||||
data: params,
|
data: params,
|
||||||
url: "/budget/budgeting/code",
|
url: "/budget/budgeting/deleteCode",
|
||||||
beforeSend: function (xhr){
|
beforeSend: function (xhr){
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
},
|
},
|
||||||
|
|
@ -88,11 +88,11 @@ $(document).on('click', '#deleteYearBtn', function () {
|
||||||
params.year = selected_year;
|
params.year = selected_year;
|
||||||
console.dir(params);
|
console.dir(params);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'DELETE',
|
type: 'POST',
|
||||||
data: params,
|
data: params,
|
||||||
// data: JSON.stringify(params),
|
// data: JSON.stringify(params),
|
||||||
// contentType: 'application/json; charset=utf-8',
|
// contentType: 'application/json; charset=utf-8',
|
||||||
url: "/budget/budgeting/year",
|
url: "/budget/budgeting/deleteYear",
|
||||||
beforeSend: function (xhr) {
|
beforeSend: function (xhr) {
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
},
|
},
|
||||||
|
|
@ -122,9 +122,9 @@ $(document).on('click', '#budgetDeleteBtn', function () {
|
||||||
params.year = $("#searchYear").val();
|
params.year = $("#searchYear").val();
|
||||||
// console.dir(params);
|
// console.dir(params);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'DELETE',
|
type: 'POST',
|
||||||
data: params,
|
data: params,
|
||||||
url: "/budget/budgeting",
|
url: "/budget/deleteBudgeting",
|
||||||
beforeSend: function (xhr) {
|
beforeSend: function (xhr) {
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
||||||
},
|
},
|
||||||
|
|
@ -379,9 +379,9 @@ $(document).on('click', '#modifyBtn', function () {
|
||||||
if (confirm("수정하시겠습니까?")) {
|
if (confirm("수정하시겠습니까?")) {
|
||||||
const formData = new FormData($("#budgetForm")[0]);
|
const formData = new FormData($("#budgetForm")[0]);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'PUT',
|
type: 'POST',
|
||||||
data: formData,
|
data: formData,
|
||||||
url: "/budget/budgeting/code",
|
url: "/budget/budgeting/updateCode",
|
||||||
processData: false,
|
processData: false,
|
||||||
contentType: false,
|
contentType: false,
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,14 @@ $(document).on('click', '#addBtn', function (){
|
||||||
getEditModal(0)
|
getEditModal(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$(document).on('change', '.amountInput', function (){
|
||||||
|
const pattern = /^[+-]?\d*(\.?\d*)?$/;
|
||||||
|
if(!pattern.test(this.value)){
|
||||||
|
this.value = "";
|
||||||
|
this.focus();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if ($("#ResultRow").text().trim() == "") {
|
if ($("#ResultRow").text().trim() == "") {
|
||||||
expenseSearch();
|
expenseSearch();
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
$(function(){
|
||||||
|
$("#dateSelectorDiv").datepicker({
|
||||||
|
format: "yyyy-mm-dd",
|
||||||
|
language: "ko",
|
||||||
|
autoclose: true
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
$(document).on('click', '#summaryTab', function (){
|
||||||
|
location.href = "/budget/stats";
|
||||||
|
})
|
||||||
|
$(document).on('click', '#orgTab', function (){
|
||||||
|
location.href = "/budget/stats/org";
|
||||||
|
})
|
||||||
|
$(document).on('click', '#detailTab', function (){
|
||||||
|
location.href = "/budget/stats/detail";
|
||||||
|
})
|
||||||
|
|
@ -1,14 +1,3 @@
|
||||||
$(function(){
|
|
||||||
$("#dateSelectorDiv").datepicker({
|
|
||||||
format: "yyyy-mm-dd",
|
|
||||||
language: "ko",
|
|
||||||
autoclose: true
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '#addBtn', function (){
|
|
||||||
getEditModal(0)
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if ($("#ResultRow").text().trim() == "") {
|
if ($("#ResultRow").text().trim() == "") {
|
||||||
|
|
@ -22,6 +11,10 @@ $(document).on('click', '#searchBtn', function (){
|
||||||
statsSearch();
|
statsSearch();
|
||||||
})
|
})
|
||||||
|
|
||||||
|
$(document).on('change', '#year', function (){
|
||||||
|
location.href="/budget/stats/detail?year="+$("#year").val();
|
||||||
|
})
|
||||||
|
|
||||||
function statsSearch () {
|
function statsSearch () {
|
||||||
var stDate = $("#stDate").val()
|
var stDate = $("#stDate").val()
|
||||||
var edDate = $("#edDate").val()
|
var edDate = $("#edDate").val()
|
||||||
|
|
@ -47,262 +40,3 @@ function statsSearch () {
|
||||||
//location.href="/budget/stats/detail?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code=" +$("#code").val() + "&won="+$("#won").val();
|
//location.href="/budget/stats/detail?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code=" +$("#code").val() + "&won="+$("#won").val();
|
||||||
location.href="/budget/stats/detail?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code="+$("#code").val()+"&won="+$("#won").val()+"&item="+$("#item").val();
|
location.href="/budget/stats/detail?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code="+$("#code").val()+"&won="+$("#won").val()+"&item="+$("#item").val();
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('click', '#deleteBtn', function (){
|
|
||||||
if($("input[name='budget']:checked").val() == undefined || $("input[name='budget']:checked").val()==null){
|
|
||||||
alert('삭제할 항목을 선택해주세요');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
console.dir($("input[name='budget']:checked")[0].dataset.name1);
|
|
||||||
console.dir($("input[name='budget']:checked")[0].dataset.name2);
|
|
||||||
console.dir($("input[name='budget']:checked")[0].dataset.name3);
|
|
||||||
if(confirm('삭제하시겠습니까?')){
|
|
||||||
var params = {};
|
|
||||||
params.year = $("#searchYear").val();
|
|
||||||
params.nameL1 = $("input[name='budget']:checked")[0].dataset.name1;
|
|
||||||
params.nameL2 = $("input[name='budget']:checked")[0].dataset.name2;
|
|
||||||
params.nameL3 = $("input[name='budget']:checked")[0].dataset.name3;
|
|
||||||
console.dir(params);
|
|
||||||
$.ajax({
|
|
||||||
type : 'DELETE',
|
|
||||||
data : params,
|
|
||||||
|
|
||||||
url : "/budget/budgeting/code",
|
|
||||||
|
|
||||||
|
|
||||||
beforeSend: function (xhr){
|
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
|
||||||
},
|
|
||||||
success : function(data) {
|
|
||||||
if(data.code == "200"){
|
|
||||||
alert("삭제되었습니다.");
|
|
||||||
location.reload();
|
|
||||||
}else{
|
|
||||||
alert(data.message);
|
|
||||||
}
|
|
||||||
//location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr) {
|
|
||||||
alert("삭제에 실패하였습니다.");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
function changeYear(){
|
|
||||||
location.href="/budget/stats/detail?year="+$("#year").val();
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).on('click', '#updateBtn', function (){
|
|
||||||
if($("input[name='budget']:checked").val() == undefined || $("input[name='budget']:checked").val()==null){
|
|
||||||
alert('수정할 항목을 선택해주세요');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
params = {}
|
|
||||||
params.year = $("#searchYear").val()
|
|
||||||
params.nameL1 = $("input[name='budget']:checked")[0].dataset.name1;
|
|
||||||
params.nameL2 = $("input[name='budget']:checked")[0].dataset.name2;
|
|
||||||
params.nameL3 = $("input[name='budget']:checked")[0].dataset.name3;
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: '/budget/budgeting/modal/edit',
|
|
||||||
data: params,
|
|
||||||
type: 'GET',
|
|
||||||
dataType:"html",
|
|
||||||
success: function(html){
|
|
||||||
$("#editModalContent").empty().append(html);
|
|
||||||
$("#year").val($("#searchYear").val())
|
|
||||||
$(".dateSelector").datepicker({
|
|
||||||
format: "yyyy-mm-dd",
|
|
||||||
language: "ko",
|
|
||||||
autoclose: true
|
|
||||||
});
|
|
||||||
$("#editModal").modal('show');
|
|
||||||
|
|
||||||
},
|
|
||||||
error:function(){
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
|
||||||
function goAll() {
|
|
||||||
location.href="/budget/stats/all"
|
|
||||||
}
|
|
||||||
|
|
||||||
function goOrg(){
|
|
||||||
location.href="/budget/stats/org"
|
|
||||||
}
|
|
||||||
|
|
||||||
function goDetail() {
|
|
||||||
location.href="/budget/stats/detail"
|
|
||||||
}
|
|
||||||
|
|
||||||
function getViewModal(no){
|
|
||||||
params = {}
|
|
||||||
params.no = no;
|
|
||||||
$.ajax({
|
|
||||||
url: '/pds/ship/modal/view',
|
|
||||||
data: params,
|
|
||||||
type: 'GET',
|
|
||||||
dataType:"html",
|
|
||||||
success: function(html){
|
|
||||||
$("#editModalContent").empty().append(html);
|
|
||||||
$(".dateSelector").datepicker({
|
|
||||||
format: "yyyy-mm-dd",
|
|
||||||
language: "ko",
|
|
||||||
autoclose: true
|
|
||||||
});
|
|
||||||
$("#editModal").modal('show');
|
|
||||||
},
|
|
||||||
error:function(){
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).on('click', '.grid', function(event) {
|
|
||||||
const target = event.target;
|
|
||||||
const no = (Number($(this).find(".key").val()));
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
function getEditModal(no){
|
|
||||||
|
|
||||||
params = {}
|
|
||||||
params.no = no;
|
|
||||||
$.ajax({
|
|
||||||
url: '/budget/budgeting/modal/edit',
|
|
||||||
data: params,
|
|
||||||
type: 'GET',
|
|
||||||
dataType:"html",
|
|
||||||
success: function(html){
|
|
||||||
|
|
||||||
$("#editModalContent").empty().append(html);
|
|
||||||
$("#year").val($("#searchYear").val())
|
|
||||||
$(".dateSelector").datepicker({
|
|
||||||
format: "yyyy-mm-dd",
|
|
||||||
language: "ko",
|
|
||||||
autoclose: true
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#editModal").modal('show');
|
|
||||||
|
|
||||||
},
|
|
||||||
error:function(){
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$(document).on('click', '#saveBtn', function (){
|
|
||||||
if($("#nameL1").val() == ""){
|
|
||||||
alert('사업명을 입력해주세요.');
|
|
||||||
$("#position").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if($("#nameL2").val() == ""){
|
|
||||||
alert('구분을 입력해주세요.');
|
|
||||||
$("#name").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if($("#nameL3").val() == ""){
|
|
||||||
alert('세부내역을 입력해주세요.');
|
|
||||||
$("#name").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(confirm("저장하시겠습니까?")){
|
|
||||||
const formData = new FormData($("#budgetForm")[0]);
|
|
||||||
$.ajax({
|
|
||||||
type : 'POST',
|
|
||||||
data : formData,
|
|
||||||
url : "/budget/budgeting/code",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
success : function(data) {
|
|
||||||
if(data.code == "200"){
|
|
||||||
alert("저장되었습니다.");
|
|
||||||
location.reload();
|
|
||||||
}else{
|
|
||||||
alert(data.message);
|
|
||||||
}
|
|
||||||
//location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr) {
|
|
||||||
alert("저장에 실패하였습니다.");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$(document).on('click', '#modifyBtn', function (){
|
|
||||||
|
|
||||||
if($("#nameL1").val() == ""){
|
|
||||||
alert('사업명을 입력해주세요.');
|
|
||||||
$("#position").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if($("#nameL2").val() == ""){
|
|
||||||
alert('구분을 입력해주세요.');
|
|
||||||
$("#name").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if($("#nameL3").val() == ""){
|
|
||||||
alert('세부내역을 입력해주세요.');
|
|
||||||
$("#name").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(confirm("수정하시겠습니까?")){
|
|
||||||
const formData = new FormData($("#budgetForm")[0]);
|
|
||||||
$.ajax({
|
|
||||||
type : 'PUT',
|
|
||||||
data : formData,
|
|
||||||
url : "/budget/budgeting/code",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
success : function(data) {
|
|
||||||
if(data.code == "200"){
|
|
||||||
alert("저장되었습니다.");
|
|
||||||
location.reload();
|
|
||||||
}else{
|
|
||||||
alert(data.message);
|
|
||||||
}
|
|
||||||
//location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr) {
|
|
||||||
alert("저장에 실패하였습니다.");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('click', '#tempBtn', function (){
|
|
||||||
if(confirm("임시 저장하시겠습니까?")){
|
|
||||||
$("#status").val("TEMP");
|
|
||||||
const formData = new FormData($("#investigationEditForm")[0]);
|
|
||||||
$.ajax({
|
|
||||||
type : 'POST',
|
|
||||||
data : formData,
|
|
||||||
url : "/pds/ship",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
success : function(data) {
|
|
||||||
alert("저장되었습니다.");
|
|
||||||
location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr) {
|
|
||||||
alert("저장에 실패하였습니다.");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,3 @@
|
||||||
$(function(){
|
|
||||||
$("#dateSelectorDiv").datepicker({
|
|
||||||
format: "yyyy-mm-dd",
|
|
||||||
language: "ko",
|
|
||||||
autoclose: true
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '#addBtn', function (){
|
|
||||||
getEditModal(0)
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
if ($("#ResultRow").text().trim() == "") {
|
if ($("#ResultRow").text().trim() == "") {
|
||||||
|
|
@ -47,282 +36,3 @@ function statsSearch() {
|
||||||
contentFade("in");
|
contentFade("in");
|
||||||
location.href="/budget/stats/org?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code=" +$("#code").val() + "&won="+$("#won").val();
|
location.href="/budget/stats/org?year="+$("#year").val() + "&stDate=" + $("#stDate").val() + "&edDate=" + $("#edDate").val() + "&code=" +$("#code").val() + "&won="+$("#won").val();
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).on('click', '#deleteBtn', function (){
|
|
||||||
if($("input[name='budget']:checked").val() == undefined || $("input[name='budget']:checked").val()==null){
|
|
||||||
alert('삭제할 항목을 선택해주세요');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
console.dir($("input[name='budget']:checked")[0].dataset.name1);
|
|
||||||
console.dir($("input[name='budget']:checked")[0].dataset.name2);
|
|
||||||
console.dir($("input[name='budget']:checked")[0].dataset.name3);
|
|
||||||
if(confirm('삭제하시겠습니까?')){
|
|
||||||
var params = {};
|
|
||||||
params.year = $("#searchYear").val();
|
|
||||||
params.nameL1 = $("input[name='budget']:checked")[0].dataset.name1;
|
|
||||||
params.nameL2 = $("input[name='budget']:checked")[0].dataset.name2;
|
|
||||||
params.nameL3 = $("input[name='budget']:checked")[0].dataset.name3;
|
|
||||||
console.dir(params);
|
|
||||||
$.ajax({
|
|
||||||
type : 'DELETE',
|
|
||||||
data : params,
|
|
||||||
|
|
||||||
url : "/budget/budgeting/code",
|
|
||||||
|
|
||||||
|
|
||||||
beforeSend: function (xhr){
|
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
|
||||||
},
|
|
||||||
success : function(data) {
|
|
||||||
if(data.code == "200"){
|
|
||||||
alert("삭제되었습니다.");
|
|
||||||
location.reload();
|
|
||||||
}else{
|
|
||||||
alert(data.message);
|
|
||||||
}
|
|
||||||
//location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr) {
|
|
||||||
alert("삭제에 실패하였습니다.");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
$(document).on('click', '#updateBtn', function (){
|
|
||||||
if($("input[name='budget']:checked").val() == undefined || $("input[name='budget']:checked").val()==null){
|
|
||||||
alert('수정할 항목을 선택해주세요');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
params = {}
|
|
||||||
params.year = $("#searchYear").val()
|
|
||||||
params.nameL1 = $("input[name='budget']:checked")[0].dataset.name1;
|
|
||||||
params.nameL2 = $("input[name='budget']:checked")[0].dataset.name2;
|
|
||||||
params.nameL3 = $("input[name='budget']:checked")[0].dataset.name3;
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: '/budget/budgeting/modal/edit',
|
|
||||||
data: params,
|
|
||||||
type: 'GET',
|
|
||||||
dataType:"html",
|
|
||||||
success: function(html){
|
|
||||||
$("#editModalContent").empty().append(html);
|
|
||||||
$("#year").val($("#searchYear").val())
|
|
||||||
$(".dateSelector").datepicker({
|
|
||||||
format: "yyyy-mm-dd",
|
|
||||||
language: "ko",
|
|
||||||
autoclose: true
|
|
||||||
});
|
|
||||||
$("#editModal").modal('show');
|
|
||||||
|
|
||||||
},
|
|
||||||
error:function(){
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function getList(){
|
|
||||||
$.ajax({
|
|
||||||
type : 'GET',
|
|
||||||
data : {},
|
|
||||||
url : "/pds/ship/list",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
beforeSend: function (xhr){
|
|
||||||
xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val());
|
|
||||||
},
|
|
||||||
success : function(response) {
|
|
||||||
console.dir(response)
|
|
||||||
|
|
||||||
},
|
|
||||||
error : function() {
|
|
||||||
alert("저장에 실패하였습니다.");
|
|
||||||
},
|
|
||||||
complete : function () {
|
|
||||||
loaddingOff();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function goAll() {
|
|
||||||
location.href="/budget/stats/all"
|
|
||||||
}
|
|
||||||
|
|
||||||
function goOrg() {
|
|
||||||
location.href="/budget/stats/org"
|
|
||||||
}
|
|
||||||
|
|
||||||
function goDetail(){
|
|
||||||
location.href="/budget/stats/detail"
|
|
||||||
}
|
|
||||||
function getViewModal(no){
|
|
||||||
params = {}
|
|
||||||
params.no = no;
|
|
||||||
$.ajax({
|
|
||||||
url: '/pds/ship/modal/view',
|
|
||||||
data: params,
|
|
||||||
type: 'GET',
|
|
||||||
dataType:"html",
|
|
||||||
success: function(html){
|
|
||||||
$("#editModalContent").empty().append(html);
|
|
||||||
$(".dateSelector").datepicker({
|
|
||||||
format: "yyyy-mm-dd",
|
|
||||||
language: "ko",
|
|
||||||
autoclose: true
|
|
||||||
});
|
|
||||||
$("#editModal").modal('show');
|
|
||||||
},
|
|
||||||
error:function(){
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).on('click', '.grid', function(event) {
|
|
||||||
const target = event.target;
|
|
||||||
const no = (Number($(this).find(".key").val()));
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
function getEditModal(no){
|
|
||||||
|
|
||||||
params = {}
|
|
||||||
params.no = no;
|
|
||||||
$.ajax({
|
|
||||||
url: '/budget/budgeting/modal/edit',
|
|
||||||
data: params,
|
|
||||||
type: 'GET',
|
|
||||||
dataType:"html",
|
|
||||||
success: function(html){
|
|
||||||
|
|
||||||
$("#editModalContent").empty().append(html);
|
|
||||||
$("#year").val($("#searchYear").val())
|
|
||||||
$(".dateSelector").datepicker({
|
|
||||||
format: "yyyy-mm-dd",
|
|
||||||
language: "ko",
|
|
||||||
autoclose: true
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#editModal").modal('show');
|
|
||||||
|
|
||||||
},
|
|
||||||
error:function(){
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$(document).on('click', '#saveBtn', function (){
|
|
||||||
if($("#nameL1").val() == ""){
|
|
||||||
alert('사업명을 입력해주세요.');
|
|
||||||
$("#position").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if($("#nameL2").val() == ""){
|
|
||||||
alert('구분을 입력해주세요.');
|
|
||||||
$("#name").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if($("#nameL3").val() == ""){
|
|
||||||
alert('세부내역을 입력해주세요.');
|
|
||||||
$("#name").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(confirm("저장하시겠습니까?")){
|
|
||||||
const formData = new FormData($("#budgetForm")[0]);
|
|
||||||
$.ajax({
|
|
||||||
type : 'POST',
|
|
||||||
data : formData,
|
|
||||||
url : "/budget/budgeting/code",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
success : function(data) {
|
|
||||||
if(data.code == "200"){
|
|
||||||
alert("저장되었습니다.");
|
|
||||||
location.reload();
|
|
||||||
}else{
|
|
||||||
alert(data.message);
|
|
||||||
}
|
|
||||||
//location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr) {
|
|
||||||
alert("저장에 실패하였습니다.");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$(document).on('click', '#modifyBtn', function (){
|
|
||||||
|
|
||||||
if($("#nameL1").val() == ""){
|
|
||||||
alert('사업명을 입력해주세요.');
|
|
||||||
$("#position").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if($("#nameL2").val() == ""){
|
|
||||||
alert('구분을 입력해주세요.');
|
|
||||||
$("#name").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if($("#nameL3").val() == ""){
|
|
||||||
alert('세부내역을 입력해주세요.');
|
|
||||||
$("#name").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(confirm("수정하시겠습니까?")){
|
|
||||||
const formData = new FormData($("#budgetForm")[0]);
|
|
||||||
$.ajax({
|
|
||||||
type : 'PUT',
|
|
||||||
data : formData,
|
|
||||||
url : "/budget/budgeting/code",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
success : function(data) {
|
|
||||||
if(data.code == "200"){
|
|
||||||
alert("저장되었습니다.");
|
|
||||||
location.reload();
|
|
||||||
}else{
|
|
||||||
alert(data.message);
|
|
||||||
}
|
|
||||||
//location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr) {
|
|
||||||
alert("저장에 실패하였습니다.");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('click', '#tempBtn', function (){
|
|
||||||
if(confirm("임시 저장하시겠습니까?")){
|
|
||||||
$("#status").val("TEMP");
|
|
||||||
const formData = new FormData($("#investigationEditForm")[0]);
|
|
||||||
$.ajax({
|
|
||||||
type : 'POST',
|
|
||||||
data : formData,
|
|
||||||
url : "/pds/ship",
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
success : function(data) {
|
|
||||||
alert("저장되었습니다.");
|
|
||||||
location.reload();
|
|
||||||
},
|
|
||||||
error : function(xhr) {
|
|
||||||
alert("저장에 실패하였습니다.");
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
|
||||||
|
|
@ -54,80 +54,42 @@
|
||||||
<th:block th:each="orglist, j : ${downOrgList}">
|
<th:block th:each="orglist, j : ${downOrgList}">
|
||||||
<th:block th:if="${j.index} == '0'">
|
<th:block th:if="${j.index} == '0'">
|
||||||
<td th:text="${#numbers.formatInteger(info.periodAssignAmount1,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.periodAssignAmount1,1,'COMMA')}" class="text-end"></td>
|
||||||
<td>
|
<td><input type="text" class="w-100 text-end amountInput" th:id="'org0Amount'+${i.index}" name="year" value="" th:data-code="${info?.budgetCodeL3}"/></td>
|
||||||
<input type="text" th:id="'org0Amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
|
||||||
th:data-code="${info?.budgetCodeL3}"
|
|
||||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"
|
|
||||||
/></td>
|
|
||||||
<td th:text="${#numbers.formatInteger(info.sumAssignAmount1,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.sumAssignAmount1,1,'COMMA')}" class="text-end"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:if="${j.index} == '1'">
|
<th:block th:if="${j.index} == '1'">
|
||||||
<td th:text="${#numbers.formatInteger(info.periodAssignAmount2,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.periodAssignAmount2,1,'COMMA')}" class="text-end"></td>
|
||||||
<td>
|
<td><input type="text" class="w-100 text-end amountInput" th:id="'org1Amount'+${i.index}" name="year" value="" th:data-code="${info?.budgetCodeL3}"/></td>
|
||||||
<input type="text" th:id="'org1Amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
|
||||||
th:data-code="${info?.budgetCodeL3}"
|
|
||||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"
|
|
||||||
/></td>
|
|
||||||
</td>
|
|
||||||
<td th:text="${#numbers.formatInteger(info.sumAssignAmount2,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.sumAssignAmount2,1,'COMMA')}" class="text-end"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:if="${j.index} == '2'">
|
<th:block th:if="${j.index} == '2'">
|
||||||
<td th:text="${#numbers.formatInteger(info.periodAssignAmount3,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.periodAssignAmount3,1,'COMMA')}" class="text-end"></td>
|
||||||
<td>
|
<td><input type="text" class="w-100 text-end amountInput" th:id="'org2Amount'+${i.index}" name="year" value="" th:data-code="${info?.budgetCodeL3}"/></td>
|
||||||
<input type="text" th:id="'org2Amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
|
||||||
th:data-code="${info?.budgetCodeL3}"
|
|
||||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"
|
|
||||||
/></td>
|
|
||||||
</td>
|
|
||||||
<td th:text="${#numbers.formatInteger(info.sumAssignAmount3,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.sumAssignAmount3,1,'COMMA')}" class="text-end"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:if="${j.index} == '3'">
|
<th:block th:if="${j.index} == '3'">
|
||||||
<td th:text="${#numbers.formatInteger(info.periodAssignAmount4,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.periodAssignAmount4,1,'COMMA')}" class="text-end"></td>
|
||||||
<td>
|
<td><input type="text" class="w-100 text-end amountInput" th:id="'org3Amount'+${i.index}" name="year" value="" th:data-code="${info?.budgetCodeL3}"/></td>
|
||||||
<input type="text" th:id="'org3Amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
|
||||||
th:data-code="${info?.budgetCodeL3}"
|
|
||||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"
|
|
||||||
/></td>
|
|
||||||
</td>
|
|
||||||
<td th:text="${#numbers.formatInteger(info.sumAssignAmount4,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.sumAssignAmount4,1,'COMMA')}" class="text-end"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:if="${j.index} == '4'">
|
<th:block th:if="${j.index} == '4'">
|
||||||
<td th:text="${#numbers.formatInteger(info.periodAssignAmount5,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.periodAssignAmount5,1,'COMMA')}" class="text-end"></td>
|
||||||
<td>
|
<td><input type="text" class="w-100 text-end amountInput" th:id="'org4Amount'+${i.index}" name="year" value="" th:data-code="${info?.budgetCodeL3}"/></td>
|
||||||
<input type="text" th:id="'org4Amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
|
||||||
th:data-code="${info?.budgetCodeL3}"
|
|
||||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"
|
|
||||||
/></td>
|
|
||||||
</td>
|
|
||||||
<td th:text="${#numbers.formatInteger(info.sumAssignAmount5,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.sumAssignAmount5,1,'COMMA')}" class="text-end"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:if="${j.index} == '5'">
|
<th:block th:if="${j.index} == '5'">
|
||||||
<td th:text="${#numbers.formatInteger(info.periodAssignAmount6,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.periodAssignAmount6,1,'COMMA')}" class="text-end"></td>
|
||||||
<td>
|
<td><input type="text" class="w-100 text-end amountInput" th:id="'org5Amount'+${i.index}" name="year" value="" th:data-code="${info?.budgetCodeL3}"/></td>
|
||||||
<input type="text" th:id="'org5Amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
|
||||||
th:data-code="${info?.budgetCodeL3}"
|
|
||||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"
|
|
||||||
/></td>
|
|
||||||
</td>
|
|
||||||
<td th:text="${#numbers.formatInteger(info.sumAssignAmount6,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.sumAssignAmount6,1,'COMMA')}" class="text-end"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:if="${j.index} == '6'">
|
<th:block th:if="${j.index} == '6'">
|
||||||
<td th:text="${#numbers.formatInteger(info.periodAssignAmount7,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.periodAssignAmount7,1,'COMMA')}" class="text-end"></td>
|
||||||
<td>
|
<td><input type="text" class="w-100 text-end amountInput" th:id="'org6Amount'+${i.index}" name="year" value="" th:data-code="${info?.budgetCodeL3}"/></td>
|
||||||
<input type="text" th:id="'org6Amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
|
||||||
th:data-code="${info?.budgetCodeL3}"
|
|
||||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"
|
|
||||||
/></td>
|
|
||||||
</td>
|
|
||||||
<td th:text="${#numbers.formatInteger(info.sumAssignAmount7,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.sumAssignAmount7,1,'COMMA')}" class="text-end"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
<th:block th:if="${j.index} == '7'">
|
<th:block th:if="${j.index} == '7'">
|
||||||
<td th:text="${#numbers.formatInteger(info.periodAssignAmount8,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.periodAssignAmount8,1,'COMMA')}" class="text-end"></td>
|
||||||
<td>
|
<td><input type="text" class="w-100 text-end amountInput" th:id="'org7Amount'+${i.index}" name="year" value="" th:data-code="${info?.budgetCodeL3}"/></td>
|
||||||
<input type="text" th:id="'org7Amount'+${i.index}" name="year" value="" class="w-100 text-end"
|
|
||||||
th:data-code="${info?.budgetCodeL3}"
|
|
||||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');"/>
|
|
||||||
</td>
|
|
||||||
<td th:text="${#numbers.formatInteger(info.sumAssignAmount8,1,'COMMA')}" class="text-end"></td>
|
<td th:text="${#numbers.formatInteger(info.sumAssignAmount8,1,'COMMA')}" class="text-end"></td>
|
||||||
</th:block>
|
</th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
|
|
|
||||||
|
|
@ -30,9 +30,8 @@
|
||||||
<div class="row justify-content-end">
|
<div class="row justify-content-end">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<select class="form-select" name="year" id="searchYear">
|
<select class="form-select" name="year" id="searchYear">
|
||||||
<th:block th:each="year, i : ${yearList}">
|
<th:block th:each="year:${yearList}">
|
||||||
<option th:value="${year.year}" th:text="${year.year}"
|
<option th:value="${year}" th:text="${year}" th:selected="${searchParams.year eq year}"></option>
|
||||||
th:selected="${searchParams.year eq year.year}"></option>
|
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -21,50 +21,18 @@
|
||||||
<input type="hidden" id="prevNameL1" name="prevNameL1" th:value="${searchParams?.nameL1}" />
|
<input type="hidden" id="prevNameL1" name="prevNameL1" th:value="${searchParams?.nameL1}" />
|
||||||
<input type="hidden" id="prevNameL2" name="prevNameL2" th:value="${searchParams?.nameL2}" />
|
<input type="hidden" id="prevNameL2" name="prevNameL2" th:value="${searchParams?.nameL2}" />
|
||||||
<input type="hidden" id="prevNameL3" name="prevNameL3" th:value="${searchParams?.nameL3}" />
|
<input type="hidden" id="prevNameL3" name="prevNameL3" th:value="${searchParams?.nameL3}" />
|
||||||
|
|
||||||
|
|
||||||
<div class="row ">
|
<div class="row ">
|
||||||
<div class="row col-10 ">
|
<div class="row col-10 ">
|
||||||
|
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="input-group " id="">
|
<div class="input-group " th:text="${#strings.concat('사업명: ', searchParams.nameL1)}"></div>
|
||||||
사업명:
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="input-group " id="" th:text="${searchParams.nameL1}">
|
<div class="input-group " th:text="${#strings.concat('구분: ', searchParams.nameL2)}"></div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="input-group " id="">
|
<div class="input-group " th:text="${#strings.concat('세부내역: ', searchParams.nameL3)}"></div>
|
||||||
구분:
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
|
||||||
<div class="input-group " id="" th:text="${searchParams.nameL2}">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
|
||||||
<div class="input-group " id="">
|
|
||||||
세부내역:
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
|
||||||
<div class="input-group " id="" th:text="${searchParams.nameL3}">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<table id="data-table-default" class="table table-striped table-bordered align-middle" >
|
<table id="data-table-default" class="table table-striped table-bordered align-middle" >
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -83,7 +51,6 @@
|
||||||
<td th:text="${info.amount}"></td>
|
<td th:text="${info.amount}"></td>
|
||||||
<td th:text="${info.modiId}"></td>
|
<td th:text="${info.modiId}"></td>
|
||||||
<td th:text="${#strings.substringBefore(info.modiDate, '.')}"></td>
|
<td th:text="${#strings.substringBefore(info.modiDate, '.')}"></td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<th:block th:if="${#lists.isEmpty(list)}">
|
<th:block th:if="${#lists.isEmpty(list)}">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -101,13 +68,12 @@
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<input type="text" class="form-control" id="item" name="item">
|
<input type="text" class="form-control" id="item" name="item">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-1 pe-0">
|
<div class="col-md-1 pe-0">
|
||||||
<label class="col-form-label">집행액
|
<label class="col-form-label">집행액
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-2">
|
<div class="col-md-2">
|
||||||
<input type="text" class="form-control" id="amount" name="amount" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');">
|
<input type="text" class="form-control amountInput" id="amount" name="amount">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-1 pe-0">
|
<div class="col-md-1 pe-0">
|
||||||
<label class="col-form-label">등록일
|
<label class="col-form-label">등록일
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="script">
|
<th:block layout:fragment="script">
|
||||||
<script type="text/javascript" th:src="@{/js/budget/statsOrg.js}"></script>
|
<script type="text/javascript" th:src="@{/js/budget/statsCommon.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
<main>
|
<main>
|
||||||
<input type="hidden" id="menuKey" value="1">
|
<input type="hidden" id="menuKey" value="57">
|
||||||
<div class="row justify-content-between">
|
<div class="row justify-content-between">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
|
|
@ -24,46 +24,37 @@
|
||||||
<div class="row mx-0">
|
<div class="row mx-0">
|
||||||
<div class="col-12 card bg-light text-center">
|
<div class="col-12 card bg-light text-center">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form id="assginForm" method="get" action="/budget/assign" onsubmit="return false;">
|
|
||||||
<input type="hidden" name="year" id="year" value=""/>
|
|
||||||
<ul class="nav nav-tabs" role="tablist">
|
<ul class="nav nav-tabs" role="tablist">
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation" id="summaryTab">
|
||||||
<button class="nav-link ivsgtTab active"
|
<button class="nav-link ivsgtTab active" data-bs-toggle="tab" type="button" role="tab">총괄표</button>
|
||||||
data-bs-toggle="tab" type="button" role="tab">총괄표</button>
|
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation" onclick="goOrg()">
|
<li class="nav-item" role="presentation" id="orgTab">
|
||||||
<button class="nav-link ivsgtTab"
|
<button class="nav-link ivsgtTab" data-bs-toggle="tab" type="button" role="tab">관서별현황</button>
|
||||||
data-bs-toggle="tab" type="button" role="tab">관서별현황</button>
|
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation" onclick="goDetail()">
|
<li class="nav-item" role="presentation" id="detailTab">
|
||||||
<button class="nav-link ivsgtTab"
|
<button class="nav-link ivsgtTab" data-bs-toggle="tab" type="button" role="tab">세부내역별현황</button>
|
||||||
data-bs-toggle="tab" type="button" role="tab">세부내역별현황</button>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<form id="statsForm" method="get" action="/budget/stats">
|
||||||
<div class="row justify-content-between py-1">
|
<div class="row justify-content-between py-1">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="row justify-content-end">
|
<div class="row justify-content-end">
|
||||||
<div class="col-auto">
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<select class="form-select form-select-sm" name="won" id="won">
|
<select class="form-select form-select-sm" name="won" id="won">
|
||||||
<option value="1" th:selected="${searchParams?.won eq '1'}">원</option>
|
<option value="1" th:selected="${searchParams.won eq '1'}">원</option>
|
||||||
<option value="2" th:selected="${searchParams?.won eq '2'}">백원</option>
|
<option value="2" th:selected="${searchParams.won eq '2'}">백원</option>
|
||||||
<option value="3" th:selected="${searchParams?.won eq '3'}">천원</option>
|
<option value="3" th:selected="${searchParams.won eq '3'}">천원</option>
|
||||||
<option value="4" th:selected="${searchParams?.won eq '4'}">만원</option>
|
<option value="4" th:selected="${searchParams.won eq '4'}">만원</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<select class="form-select form-select-sm" name="code" id="code">
|
<select class="form-select form-select-sm" name="code" id="code">
|
||||||
<option value="OG001" th:selected="${searchParams?.code eq 'OG001'}">본청</option>
|
<th:block th:each="code:${downOrgList}">
|
||||||
<option th:each="code, i : ${codeList}" th:value="${code?.orgCode}"
|
<option th:value="${code.orgCode}" th:text="${code.orgName}"
|
||||||
th:text="${code?.orgName}"
|
th:selected="${searchParams?.code eq code.orgCode}"></option>
|
||||||
th:selected="${searchParams?.code eq code.orgCode}">2023
|
</th:block>
|
||||||
</option>
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
|
|
@ -80,33 +71,38 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12 overflow-auto">
|
||||||
<table class="table table-sm table-bordered table-hover">
|
<table class="table table-sm table-bordered table-hover text-nowrap">
|
||||||
<thead>
|
<thead class="align-middle">
|
||||||
<tr class="table-secondary">
|
<tr class="table-secondary">
|
||||||
<th rowspan="3">구분</th>
|
<th rowspan="3">구분</th>
|
||||||
|
<th>프로그램</th>
|
||||||
|
<th:block th:each="codeL1:${budgetCode.codeL1List}">
|
||||||
|
<th th:text="${codeL1.l1Name}" th:colspan="${codeL1.colspan}"></th>
|
||||||
|
</th:block>
|
||||||
|
<th rowspan="3">합계</th>
|
||||||
|
<th rowspan="3">집행률</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="table-secondary">
|
<tr class="table-secondary">
|
||||||
<th>프로그램</th>
|
|
||||||
<th>단위사업</th>
|
<th>단위사업</th>
|
||||||
|
<th:block th:each="codeL2:${budgetCode.codeL2List}">
|
||||||
|
<th th:text="${codeL2.l2Name}" th:colspan="${codeL2.colspan}"></th>
|
||||||
|
</th:block>
|
||||||
|
</tr>
|
||||||
|
<tr class="table-secondary">
|
||||||
<th>세부사업</th>
|
<th>세부사업</th>
|
||||||
|
<th:block th:each="codeL3:${budgetCode.codeL3List}">
|
||||||
|
<th th:text="${codeL3.l3Name}"></th>
|
||||||
|
</th:block>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="table-group-divider">
|
<tbody class="table-group-divider">
|
||||||
<tr class="faRptTr" th:each="info, i : ${list}">
|
<!--<tr class="faRptTr" th:each="info, i : ${list}">
|
||||||
</tr>
|
</tr>-->
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-between">
|
|
||||||
<div class="col-auto"></div>
|
|
||||||
<div class="col-auto">
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
|
||||||
<!--<input type="button" class="btn btn-success" value="등록" id="addFaRptBtn">-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="script">
|
<th:block layout:fragment="script">
|
||||||
|
<script type="text/javascript" th:src="@{/js/budget/statsCommon.js}"></script>
|
||||||
<script type="text/javascript" th:src="@{/js/budget/statsDetail.js}"></script>
|
<script type="text/javascript" th:src="@{/js/budget/statsDetail.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
|
|
@ -26,17 +27,14 @@
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form id="assginForm" method="get" action="/budget/assign" onsubmit="return false;">
|
<form id="assginForm" method="get" action="/budget/assign" onsubmit="return false;">
|
||||||
<ul class="nav nav-tabs" role="tablist">
|
<ul class="nav nav-tabs" role="tablist">
|
||||||
<!-- <li class="nav-item" role="presentation" onclick="goAll()">-->
|
<li class="nav-item" role="presentation" id="summaryTab">
|
||||||
<!-- <button class="nav-link ivsgtTab"-->
|
<button class="nav-link ivsgtTab" data-bs-toggle="tab" type="button" role="tab">총괄표</button>
|
||||||
<!-- data-bs-toggle="tab" type="button" role="tab">총괄표</button>-->
|
|
||||||
<!-- </li>-->
|
|
||||||
<li class="nav-item" role="presentation" onclick="goOrg()">
|
|
||||||
<button class="nav-link ivsgtTab"
|
|
||||||
data-bs-toggle="tab" type="button" role="tab">관서별현황</button>
|
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation" id="orgTab">
|
||||||
<button class="nav-link ivsgtTab active"
|
<button class="nav-link ivsgtTab" data-bs-toggle="tab" type="button" role="tab">관서별현황</button>
|
||||||
data-bs-toggle="tab" type="button" role="tab">세부내역별현황</button>
|
</li>
|
||||||
|
<li class="nav-item" role="presentation" id="detailTab">
|
||||||
|
<button class="nav-link ivsgtTab active" data-bs-toggle="tab" type="button" role="tab">세부내역별현황</button>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="row justify-content-between py-1">
|
<div class="row justify-content-between py-1">
|
||||||
|
|
@ -44,30 +42,19 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<div class="row justify-content-end">
|
<div class="row justify-content-end">
|
||||||
<div class="col-auto">
|
<div class="col-auto"></div>
|
||||||
<th:block th:if="${loginOrgan eq 'OG001'}">
|
|
||||||
<select class="form-select form-select-sm" name="code" id="code">
|
|
||||||
<option th:each="code : ${downOrgList}" th:value="${code?.orgCode}"
|
|
||||||
th:text="${code?.orgName}" th:selected="${searchParams?.code eq code.orgCode}">
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</th:block>
|
|
||||||
<th:block th:unless="${loginOrgan eq 'OG001'}">
|
|
||||||
<input type="hidden" name="code" id="code" th:value="${loginOrgan}">
|
|
||||||
</th:block>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<select class="form-select form-select-sm" name="won" id="won">
|
<select class="form-select form-select-sm" name="won" id="won">
|
||||||
<option value="1" th:selected="${searchParams?.won eq 1}">원</option>
|
<option value="1" th:selected="${searchParams.won eq 1}">원</option>
|
||||||
<option value="100" th:selected="${searchParams?.won eq 100}">백원</option>
|
<option value="100" th:selected="${searchParams.won eq 100}">백원</option>
|
||||||
<option value="1000" th:selected="${searchParams?.won eq 1000}">천원</option>
|
<option value="1000" th:selected="${searchParams.won eq 1000}">천원</option>
|
||||||
<option value="10000" th:selected="${searchParams?.won eq 10000}">만원</option>
|
<option value="10000" th:selected="${searchParams.won eq 10000}">만원</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<select class="form-select form-select-sm" name="year" id="year" onchange="changeYear()">
|
<select class="form-select form-select-sm" name="year" id="year">
|
||||||
<th:block th:each="info, i : ${yearList}">
|
<th:block th:each="year:${yearList}">
|
||||||
<option th:value="${info.year}" th:selected="${searchParams?.year eq info.year}" th:text="${info.year}">2023</option>
|
<option th:value="${year}" th:text="${year}" th:selected="${searchParams.year eq year}"></option>
|
||||||
</th:block>
|
</th:block>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -110,8 +97,14 @@
|
||||||
<tbody class="table-group-divider" id="ResultRow">
|
<tbody class="table-group-divider" id="ResultRow">
|
||||||
<tr class="faRptTr" th:each="info, i : ${list}">
|
<tr class="faRptTr" th:each="info, i : ${list}">
|
||||||
<td>
|
<td>
|
||||||
|
<th:block th:if="${info.organCd eq null}" th:text="총계"></th:block>
|
||||||
|
<th:block th:if="${info.organCd ne null}">
|
||||||
<th:block th:each="code:${session.commonCode.get('OG')}">
|
<th:block th:each="code:${session.commonCode.get('OG')}">
|
||||||
<th:block th:if="${code.itemCd eq info.organCd}" th:text="${code.itemValue}"></th:block>
|
<th:block th:if="${code.itemCd eq info.organCd}">
|
||||||
|
<th:block th:if="${info.organCd eq info.parentOrgan}" th:text="${#strings.concat(code.itemValue, '(소계)')}"></th:block>
|
||||||
|
<th:block th:if="${info.organCd ne info.parentOrgan}" th:text="${code.itemValue}"></th:block>
|
||||||
|
</th:block>
|
||||||
|
</th:block>
|
||||||
</th:block>
|
</th:block>
|
||||||
</td>
|
</td>
|
||||||
<!--<td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}"></td>-->
|
<!--<td th:text="${#numbers.formatInteger(info.planAmount,1,'COMMA')}"></td>-->
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
||||||
layout:decorate="~{layout/layout}">
|
layout:decorate="~{layout/layout}">
|
||||||
<th:block layout:fragment="script">
|
<th:block layout:fragment="script">
|
||||||
|
<script type="text/javascript" th:src="@{/js/budget/statsCommon.js}"></script>
|
||||||
<script type="text/javascript" th:src="@{/js/budget/statsOrg.js}"></script>
|
<script type="text/javascript" th:src="@{/js/budget/statsOrg.js}"></script>
|
||||||
</th:block>
|
</th:block>
|
||||||
<div layout:fragment="content">
|
<div layout:fragment="content">
|
||||||
|
|
@ -27,17 +28,14 @@
|
||||||
<form id="assginForm" method="get" action="/budget/assign" onsubmit="return false;">
|
<form id="assginForm" method="get" action="/budget/assign" onsubmit="return false;">
|
||||||
<input type="hidden" name="year" id="year" value=""/>
|
<input type="hidden" name="year" id="year" value=""/>
|
||||||
<ul class="nav nav-tabs" role="tablist">
|
<ul class="nav nav-tabs" role="tablist">
|
||||||
<!-- <li class="nav-item" role="presentation" onclick="goAll()">-->
|
<li class="nav-item" role="presentation" id="summaryTab">
|
||||||
<!-- <button class="nav-link ivsgtTab"-->
|
<button class="nav-link ivsgtTab" data-bs-toggle="tab" type="button" role="tab">총괄표</button>
|
||||||
<!-- data-bs-toggle="tab" type="button" role="tab">총괄표></button>-->
|
|
||||||
<!-- </li>-->
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<button class="nav-link ivsgtTab active"
|
|
||||||
data-bs-toggle="tab" type="button" role="tab">관서별현황</button>
|
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" role="presentation" onclick="goDetail()">
|
<li class="nav-item" role="presentation" id="orgTab">
|
||||||
<button class="nav-link ivsgtTab"
|
<button class="nav-link ivsgtTab active" data-bs-toggle="tab" type="button" role="tab">관서별현황</button>
|
||||||
data-bs-toggle="tab" type="button" role="tab">세부내역별현황</button>
|
</li>
|
||||||
|
<li class="nav-item" role="presentation" id="detailTab">
|
||||||
|
<button class="nav-link ivsgtTab" data-bs-toggle="tab" type="button" role="tab">세부내역별현황</button>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="row justify-content-between py-1">
|
<div class="row justify-content-between py-1">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue