diff --git a/src/main/doc/db/jcms_vpp_0.0.1.exerd b/src/main/doc/db/jcms_vpp_0.0.1.exerd deleted file mode 100644 index 60b237b..0000000 Binary files a/src/main/doc/db/jcms_vpp_0.0.1.exerd and /dev/null differ diff --git a/src/main/doc/db/jcms_vpp_0.0.2.exerd b/src/main/doc/db/jcms_vpp_0.0.2.exerd deleted file mode 100644 index 7f31955..0000000 Binary files a/src/main/doc/db/jcms_vpp_0.0.2.exerd and /dev/null differ diff --git a/src/main/doc/db/jcms_vpp_0.0.3.exerd b/src/main/doc/db/jcms_vpp_0.0.3.exerd deleted file mode 100644 index 32ee19b..0000000 Binary files a/src/main/doc/db/jcms_vpp_0.0.3.exerd and /dev/null differ diff --git a/src/main/doc/db/jcms_vpp_0.0.4.exerd b/src/main/doc/db/jcms_vpp_0.0.4.exerd deleted file mode 100644 index 9656b05..0000000 Binary files a/src/main/doc/db/jcms_vpp_0.0.4.exerd and /dev/null differ diff --git a/src/main/doc/db/jcms_vpp_0.0.5.exerd b/src/main/doc/db/jcms_vpp_0.0.5.exerd deleted file mode 100644 index b99cc72..0000000 Binary files a/src/main/doc/db/jcms_vpp_0.0.5.exerd and /dev/null differ diff --git a/src/main/doc/db/jcms_vpp_0.0.6.exerd b/src/main/doc/db/jcms_vpp_0.0.6.exerd deleted file mode 100644 index 25fc1d6..0000000 Binary files a/src/main/doc/db/jcms_vpp_0.0.6.exerd and /dev/null differ diff --git a/src/main/doc/db/jcms_vpp_0.0.8.exerd b/src/main/doc/db/jcms_vpp_0.0.8.exerd new file mode 100644 index 0000000..016cfc0 Binary files /dev/null and b/src/main/doc/db/jcms_vpp_0.0.8.exerd differ diff --git a/src/main/doc/db/vpp.exerd b/src/main/doc/db/vpp.exerd index 9b77464..cabdd61 100644 Binary files a/src/main/doc/db/vpp.exerd and b/src/main/doc/db/vpp.exerd differ diff --git a/src/main/java/net/jwsi/jcms/vpp/RatePlanDetailTime/RatePlanDetailTimeController.java b/src/main/java/net/jwsi/jcms/vpp/RatePlanDetailTime/RatePlanDetailTimeController.java deleted file mode 100644 index 94acc2e..0000000 --- a/src/main/java/net/jwsi/jcms/vpp/RatePlanDetailTime/RatePlanDetailTimeController.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.jwsi.jcms.vpp.RatePlanDetailTime; - -import lombok.extern.slf4j.Slf4j; -import net.jwsi.jcms.base.BaseController; -import net.jwsi.jcms.exception.JsonDataException; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; - -import java.util.List; - -@Controller -@Slf4j -@RequestMapping("/cms/ratePlanDetailTime") -public class RatePlanDetailTimeController extends BaseController { - public RatePlanDetailTimeController(RatePlanDetailTimeService service) { - super(service); - } - - @Override - protected void chkSelectList(List list) throws JsonDataException { - - } - - @Override - protected void chkSelect(RatePlanDetailTime data) throws JsonDataException { - - } -} diff --git a/src/main/java/net/jwsi/jcms/vpp/RatePlanDetailTime/RatePlanDetailTimeService.java b/src/main/java/net/jwsi/jcms/vpp/RatePlanDetailTime/RatePlanDetailTimeService.java deleted file mode 100644 index 8db33e4..0000000 --- a/src/main/java/net/jwsi/jcms/vpp/RatePlanDetailTime/RatePlanDetailTimeService.java +++ /dev/null @@ -1,55 +0,0 @@ -package net.jwsi.jcms.vpp.RatePlanDetailTime; - -import lombok.extern.slf4j.Slf4j; -import net.jwsi.jcms.base.BaseService; -import net.jwsi.jcms.base.EnumSqlType; -import org.springframework.data.domain.Page; -import org.springframework.data.jpa.domain.Specification; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -@Slf4j -public class RatePlanDetailTimeService extends BaseService { - - - public RatePlanDetailTimeService(RatePlanDetailTimeRepository repository) { - super(repository); - } - - @Override - protected Integer getUserId() { - return null; - } - - @Override - protected String getUserName(Integer id) { - return null; - } - - @Override - protected RatePlanDetailTime newSearchParam(RatePlanDetailTime ratePlanDetailTime) { - return null; - } - - @Override - protected EnumSqlType useSqlTyp() { - return null; - } - - @Override - protected Specification getSpecification(RatePlanDetailTime ratePlanDetailTime) { - return null; - } - - @Override - protected Page _selectPage(RatePlanDetailTime ratePlanDetailTime) { - return null; - } - - @Override - protected List _selectList(RatePlanDetailTime ratePlanDetailTime) { - return null; - } -} diff --git a/src/main/java/net/jwsi/jcms/vpp/RatePlanDetailTime/SeasonTimeDetailDto.java b/src/main/java/net/jwsi/jcms/vpp/RatePlanDetailTime/SeasonTimeDetailDto.java deleted file mode 100644 index 2080557..0000000 --- a/src/main/java/net/jwsi/jcms/vpp/RatePlanDetailTime/SeasonTimeDetailDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package net.jwsi.jcms.vpp.RatePlanDetailTime; - -public class SeasonTimeDetailDto { -} diff --git a/src/main/java/net/jwsi/jcms/vpp/api/ApiClient.java b/src/main/java/net/jwsi/jcms/vpp/api/ApiClient.java index 74ce786..f591d39 100644 --- a/src/main/java/net/jwsi/jcms/vpp/api/ApiClient.java +++ b/src/main/java/net/jwsi/jcms/vpp/api/ApiClient.java @@ -5,14 +5,12 @@ import net.jwsi.jcms.vpp.chgr.ChgrResponseDto; import net.jwsi.jcms.vpp.chgrCurrState.ChgrCurrState; import net.jwsi.jcms.vpp.chgrHist.ChgrHistResponseDto; import net.jwsi.jcms.vpp.provider.ProviderDto; -import net.jwsi.jcms.vpp.rehchgingList.RechgingList; -import net.jwsi.jcms.vpp.rehchgingList.RechgingListDto; import net.jwsi.jcms.vpp.ratePlan.RatePlanResponseDto; +import net.jwsi.jcms.vpp.rehchgingList.RechgingListDto; import net.jwsi.jcms.vpp.station.StationDto; import org.springframework.core.ParameterizedTypeReference; import org.springframework.stereotype.Component; import org.springframework.web.client.RestClient; - import java.util.Collections; import java.util.List; import java.util.Map; @@ -82,11 +80,22 @@ public class ApiClient { public ApiResponse> fetchRatePlan(){ + Map requestBody = Map.of( + "type","all", + "pageSize", "10000" + ); return externalApiClient.post() .uri("/api/ratePlan/list") - .body(Collections.emptyMap()) + .body(requestBody) .retrieve() .body(new ParameterizedTypeReference>>() { }); } + public ApiResponse registerRatePlan(RatePlanResponseDto requestDto) { + return externalApiClient.post() + .uri("/api/ratePlan/register") + .body(requestDto) + .retrieve() + .body(ApiResponse.class); + } } \ No newline at end of file diff --git a/src/main/java/net/jwsi/jcms/vpp/chargerRatePlan/ChargerRatePlanController.java b/src/main/java/net/jwsi/jcms/vpp/chargerRatePlan/ChargerRatePlanController.java deleted file mode 100644 index fb9d28b..0000000 --- a/src/main/java/net/jwsi/jcms/vpp/chargerRatePlan/ChargerRatePlanController.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.jwsi.jcms.vpp.chargerRatePlan; - -import lombok.extern.slf4j.Slf4j; -import net.jwsi.jcms.base.BaseController; -import net.jwsi.jcms.exception.JsonDataException; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; - -import java.util.List; - -@Controller -@Slf4j -@RequestMapping("/cms/chargerRatePlan") -public class ChargerRatePlanController extends BaseController { - public ChargerRatePlanController(ChargerRatePlanService service) { - super(service); - } - - @Override - protected void chkSelectList(List list) throws JsonDataException { - - } - - @Override - protected void chkSelect(ChargerRatePlan data) throws JsonDataException { - - } -} diff --git a/src/main/java/net/jwsi/jcms/vpp/chargerRatePlan/ChargerRatePlanService.java b/src/main/java/net/jwsi/jcms/vpp/chargerRatePlan/ChargerRatePlanService.java deleted file mode 100644 index 3310a19..0000000 --- a/src/main/java/net/jwsi/jcms/vpp/chargerRatePlan/ChargerRatePlanService.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.jwsi.jcms.vpp.chargerRatePlan; - -import lombok.extern.slf4j.Slf4j; -import net.jwsi.jcms.base.BaseService; -import net.jwsi.jcms.base.EnumSqlType; -import org.springframework.data.domain.Page; -import org.springframework.data.jpa.domain.Specification; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -@Slf4j -public class ChargerRatePlanService extends BaseService { - public ChargerRatePlanService(ChargerRatePlanRepository repository) { - super(repository); - } - - @Override - protected Integer getUserId() { - return null; - } - - @Override - protected String getUserName(Integer id) { - return null; - } - - @Override - protected ChargerRatePlan newSearchParam(ChargerRatePlan chargerRatePlan) { - return null; - } - - @Override - protected EnumSqlType useSqlTyp() { - return null; - } - - @Override - protected Specification getSpecification(ChargerRatePlan chargerRatePlan) { - return null; - } - - @Override - protected Page _selectPage(ChargerRatePlan chargerRatePlan) { - return null; - } - - @Override - protected List _selectList(ChargerRatePlan chargerRatePlan) { - return null; - } -} diff --git a/src/main/java/net/jwsi/jcms/vpp/chgr/ChgrController.java b/src/main/java/net/jwsi/jcms/vpp/chgr/ChgrController.java index 9867fb4..e4d8ac5 100644 --- a/src/main/java/net/jwsi/jcms/vpp/chgr/ChgrController.java +++ b/src/main/java/net/jwsi/jcms/vpp/chgr/ChgrController.java @@ -14,7 +14,7 @@ import java.util.Map; @Controller @Slf4j -@RequestMapping("/cms/chgr") +@RequestMapping("/cms/chgr/") public class ChgrController extends BaseController { private final String path = "/system/chgr/"; diff --git a/src/main/java/net/jwsi/jcms/vpp/chgrCurrState/ChgrCurrStateController.java b/src/main/java/net/jwsi/jcms/vpp/chgrCurrState/ChgrCurrStateController.java index 7250442..6c0ef58 100644 --- a/src/main/java/net/jwsi/jcms/vpp/chgrCurrState/ChgrCurrStateController.java +++ b/src/main/java/net/jwsi/jcms/vpp/chgrCurrState/ChgrCurrStateController.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Map; @Controller -@RequestMapping("/cms/chgrCurrState") +@RequestMapping("/cms/chgrCurrState/") public class ChgrCurrStateController extends BaseController { private final ChgrCurrStateService chgrCurrStateService; diff --git a/src/main/java/net/jwsi/jcms/vpp/chgrHist/ChgrHistController.java b/src/main/java/net/jwsi/jcms/vpp/chgrHist/ChgrHistController.java index 5c6027f..74f44a3 100644 --- a/src/main/java/net/jwsi/jcms/vpp/chgrHist/ChgrHistController.java +++ b/src/main/java/net/jwsi/jcms/vpp/chgrHist/ChgrHistController.java @@ -10,7 +10,7 @@ import java.util.List; import java.util.Map; @Controller -@RequestMapping("/cms/chgrHist") +@RequestMapping("/cms/chgrHist/") @Slf4j public class ChgrHistController extends BaseController { diff --git a/src/main/java/net/jwsi/jcms/vpp/chgrHist/ChgrHistService.java b/src/main/java/net/jwsi/jcms/vpp/chgrHist/ChgrHistService.java index 97894d3..300db22 100644 --- a/src/main/java/net/jwsi/jcms/vpp/chgrHist/ChgrHistService.java +++ b/src/main/java/net/jwsi/jcms/vpp/chgrHist/ChgrHistService.java @@ -50,22 +50,15 @@ public class ChgrHistService extends BaseService { +@RequestMapping("/cms/ratePlan/") +public class RatePlanController extends BaseController { private final String path = "/system/ratePlan/"; private final RatePlanService ratePlanService; + private final ApiClient apiClient; - public RatePlanController(RatePlanService service, RatePlanService ratePlanService) { + public RatePlanController(RatePlanService service, RatePlanService ratePlanService, ApiClient apiClient) { super(service); this.ratePlanService = ratePlanService; + this.apiClient = apiClient; } + @GetMapping("list") - public String list(){ + public String list() { ratePlanService.getRatePlan(); - return path+"list"; + return path + "list"; } + @PostMapping("list.json") @ResponseBody - public Map list(RatePlan ratePlan){ - if(ratePlan == null) ratePlan = new RatePlan(); + public Map list(RatePlan ratePlan) { + if (ratePlan == null) ratePlan = new RatePlan(); return svcSelectList(ratePlan); } + @PostMapping("view.json") @ResponseBody public Map viewData(@RequestParam("ratePlanId") Integer ratePlanId) { @@ -49,6 +56,28 @@ public class RatePlanController extends BaseController insertRatePlan(@RequestBody RatePlanResponseDto requestDto) { + Map resultMap = new HashMap<>(); + try { + ApiResponse apiRes = apiClient.registerRatePlan(requestDto); + + if (apiRes == null || !Integer.valueOf(200).equals(apiRes.getCode())) { + String msg = (apiRes != null) ? apiRes.getMessage() : "API 서버 응답 없음"; + throw new RuntimeException("API 서버 등록 실패: " + msg); + } + + resultMap.put("result", "success"); + resultMap.put("message", "요금제 등록 요청이 완료되었습니다. (승인 대기)"); + } catch (Exception e) { + log.error("요금제 등록 중 오류 발생", e); + resultMap.put("result", "fail"); + resultMap.put("message", e.getMessage()); + } + return resultMap; + } + @Override protected void chkSelectList(List list) throws JsonDataException { diff --git a/src/main/java/net/jwsi/jcms/vpp/ratePlan/RatePlanResponseDto.java b/src/main/java/net/jwsi/jcms/vpp/ratePlan/RatePlanResponseDto.java index 2ca4571..4221e0f 100644 --- a/src/main/java/net/jwsi/jcms/vpp/ratePlan/RatePlanResponseDto.java +++ b/src/main/java/net/jwsi/jcms/vpp/ratePlan/RatePlanResponseDto.java @@ -41,7 +41,9 @@ public class RatePlanResponseDto { ratePlan.setApplyStartDate(this.applyStartDate); ratePlan.setApplyEndDate(this.applyEndDate); ratePlan.setFixedPrice(this.fixedPrice); + ratePlan.setIsActive(this.isActive); ratePlan.setApprovalStatus(this.approvalStatus); + ratePlan.setDescription(this.description); return ratePlan; } @@ -78,10 +80,6 @@ public class RatePlanResponseDto { chargerRatePlan.setApplyStartDate(chargerDto.getApplyStartDate()); chargerRatePlan.setApplyEndDate(chargerDto.getApplyEndDate()); - if (chargerDto.getIsActive() != null) { - chargerRatePlan.setIsActive(chargerDto.getIsActive() ? "Y" : "N"); - } - chargerRatePlanList.add(chargerRatePlan); } return chargerRatePlanList; @@ -112,6 +110,5 @@ public class RatePlanResponseDto { private String chargerCd; private String applyStartDate; private String applyEndDate; - private Boolean isActive; } } \ No newline at end of file diff --git a/src/main/java/net/jwsi/jcms/vpp/ratePlan/RatePlanService.java b/src/main/java/net/jwsi/jcms/vpp/ratePlan/RatePlanService.java index a60f299..0cc575a 100644 --- a/src/main/java/net/jwsi/jcms/vpp/ratePlan/RatePlanService.java +++ b/src/main/java/net/jwsi/jcms/vpp/ratePlan/RatePlanService.java @@ -151,7 +151,6 @@ public class RatePlanService extends BaseService { private final String path = "/system/rechgingList/"; diff --git a/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlots.java b/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlots.java deleted file mode 100644 index 9f4deba..0000000 --- a/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlots.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.jwsi.jcms.vpp.timeslots; - -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import net.jwsi.jcms.base.BaseStEntity; - -@NoArgsConstructor -@Setter -@Getter -@Entity(name="vpp_time_slots") -public class TimeSlots extends BaseStEntity { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Integer id; //시간대 id(pk) - private String name; //시간대명 (예: 경부하, 최대부하, 09시) - private String slotType; //시간대 구분 (basic=계시별, hour=시간단위) - private Integer hourNumber; //시간 구분 (slot_type=hour일 경우 0~23) - private String startTime; //시작 시간 - private String endTime; //종료 시간 - private String description; //시간대 설명 - private String isActive; //활성화 여부 -} diff --git a/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlotsController.java b/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlotsController.java deleted file mode 100644 index 2a14b2e..0000000 --- a/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlotsController.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.jwsi.jcms.vpp.timeslots; - -import lombok.extern.slf4j.Slf4j; -import net.jwsi.jcms.base.BaseController; -import net.jwsi.jcms.exception.JsonDataException; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; - -import java.util.List; - -@Controller -@Slf4j -@RequestMapping("/cms/timeSlots") -public class TimeSlotsController extends BaseController { - public TimeSlotsController(TimeSlotsService service) { - super(service); - } - - @Override - protected void chkSelectList(List list) throws JsonDataException { - - } - - @Override - protected void chkSelect(TimeSlots data) throws JsonDataException { - - } -} diff --git a/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlotsRepository.java b/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlotsRepository.java deleted file mode 100644 index 2441ea9..0000000 --- a/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlotsRepository.java +++ /dev/null @@ -1,6 +0,0 @@ -package net.jwsi.jcms.vpp.timeslots; - -import net.jwsi.jcms.base.BaseRecStRepository; - -public interface TimeSlotsRepository extends BaseRecStRepository { -} diff --git a/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlotsService.java b/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlotsService.java deleted file mode 100644 index 2329d65..0000000 --- a/src/main/java/net/jwsi/jcms/vpp/timeslots/TimeSlotsService.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.jwsi.jcms.vpp.timeslots; - -import lombok.extern.slf4j.Slf4j; -import net.jwsi.jcms.base.BaseService; -import net.jwsi.jcms.base.EnumSqlType; -import org.springframework.data.domain.Page; -import org.springframework.data.jpa.domain.Specification; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -@Slf4j -public class TimeSlotsService extends BaseService { - public TimeSlotsService(TimeSlotsRepository repository) { - super(repository); - } - - @Override - protected Integer getUserId() { - return null; - } - - @Override - protected String getUserName(Integer id) { - return null; - } - - @Override - protected TimeSlots newSearchParam(TimeSlots timeSlots) { - return null; - } - - @Override - protected EnumSqlType useSqlTyp() { - return null; - } - - @Override - protected Specification getSpecification(TimeSlots timeSlots) { - return null; - } - - @Override - protected Page _selectPage(TimeSlots timeSlots) { - return null; - } - - @Override - protected List _selectList(TimeSlots timeSlots) { - return null; - } -} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 24ddf2d..6d08bb6 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -14,9 +14,9 @@ spring: datasource: jcms-db: driver-class-name: org.mariadb.jdbc.Driver - jdbc-url: jdbc:mariadb://192.168.62.37:3306/jcmsdb - username: jcms - password: jcms3593 + jdbc-url: jdbc:mariadb://localhost:3306/jcmsdb + username: root + password: jcms server: port: 8080 diff --git a/src/main/resources/templates/system/chgrHist/list.html b/src/main/resources/templates/system/chgrHist/list.html index e9928b7..4fd67bd 100644 --- a/src/main/resources/templates/system/chgrHist/list.html +++ b/src/main/resources/templates/system/chgrHist/list.html @@ -99,10 +99,10 @@ return d; }, { - order: [], + order: [[0, 'desc']], columns: [ - {title: "충전소 명", name: "ST_NM", data: "stId", className, orderable: false}, - {title: "충전기 명", name: "CHGR_NM", data: "chgrId", className, orderable: false}, + {title: "충전소 아이디", name: "ST_ID", data: "stId", className, orderable: false}, + {title: "충전기 아이디", name: "CHGR_ID", data: "chgrId", className, orderable: false}, {title: "결제구분", name: "PAY_TP", data: "payTp", className, orderable: false}, {title: "충전기타입 코드", name: "CHGR_TP", data: "plugTp", className, orderable: false}, {title: "충전 시작일시", name: "RECHG_S_DT", data: "rechgSDt", className, orderable: false}, diff --git a/src/main/resources/templates/system/ratePlan/list.html b/src/main/resources/templates/system/ratePlan/list.html index 0b0e38c..a22b5db 100644 --- a/src/main/resources/templates/system/ratePlan/list.html +++ b/src/main/resources/templates/system/ratePlan/list.html @@ -39,6 +39,9 @@
+ + +
@@ -65,30 +68,13 @@ #ratePlanDetailScrollArea::-webkit-scrollbar-thumb { background: #d0d0d0; border-radius: 3px; } #ratePlanDetailScrollArea::-webkit-scrollbar-thumb:hover { background: #b5b5b5; } - .custom-card { - border: 1px solid #e5e5e5; - border-radius: 0.25rem; - margin-bottom: 1rem; - background-color: #fff; - } - .custom-card-header { - color: #333; - font-weight: 600; - font-size: 0.88rem; - padding: 0.6rem 1rem; - border-bottom: 1px solid #e5e5e5; - background-color: #fafafa; - } - .custom-card-body { - padding: 0.75rem 1rem; - } + .custom-card { border: 1px solid #e5e5e5; border-radius: 0.25rem; margin-bottom: 1rem; background-color: #fff; } + .custom-card-header { color: #333; font-weight: 600; font-size: 0.88rem; padding: 0.6rem 1rem; border-bottom: 1px solid #e5e5e5; background-color: #fafafa; } + .custom-card-body { padding: 0.75rem 1rem; } - .info-table th, .info-table td { - padding: 0.15rem 0 !important; - font-size: 0.85rem; - color: #444; - } - .info-table th { font-weight: 600; width: 100px; color: #222; } + .info-table th, .info-table td { padding: 0.2rem 0.4rem !important; font-size: 0.85rem; color: #444; } + .info-table th { font-weight: 600; width: 110px; color: #222; white-space: nowrap; } + .info-table td { width: 100%; } .price-table { font-size: 0.85rem; border-color: #e5e5e5; } .price-table th, .price-table td { border-color: #e5e5e5; padding: 0.5rem; } @@ -98,39 +84,50 @@ .val-price { color: #222; font-weight: 700; } .val-unit { color: #999; font-size: 0.8rem; } - .charger-item { - border: 1px solid #e5e5e5; - border-radius: 0.35rem; - padding: 0.6rem; - background-color: #fff; - height: 100%; - } + .charger-item { border: 1px solid #e5e5e5; border-radius: 0.35rem; padding: 0.6rem; background-color: #fff; height: 100%; } .charger-cd { font-size: 0.9rem; font-weight: bold; color: #222; margin-bottom: 0.1rem; } .charger-dt { font-size: 0.75rem; color: #aaa; margin-bottom: 0.4rem; } - .badge-square { - background-color: #f0f0f0; - color: #333; - border: 1px solid #d8d8d8; - padding: 0.15rem 0.4rem; - font-size: 0.7rem; - border-radius: 2px; - font-weight: 500; - } - .badge-square.active { - background-color: #eef1fb; - color: #3b5bdb; - border-color: #d6dcf5; - } + .badge-square { background-color: #f0f0f0; color: #333; border: 1px solid #d8d8d8; padding: 0.15rem 0.4rem; font-size: 0.7rem; border-radius: 2px; font-weight: 500; } + .badge-square.active { background-color: #eef1fb; color: #3b5bdb; border-color: #d6dcf5; } .approval-ok { color: #333; font-weight: 600; } .approval-ok i { color: #3b5bdb; } + + .season-tabs { display: flex; border-bottom: 1px solid #e5e5e5; margin-bottom: 0.75rem; } + .season-tab-btn { flex: 1; text-align: center; padding: 0.5rem 0; cursor: pointer; font-size: 0.85rem; color: #666; border-bottom: 2px solid transparent; background: none; border-top:none; border-left:none; border-right:none; } + .season-tab-btn.active { color: #3b5bdb; font-weight: 600; border-bottom-color: #3b5bdb; } + + .time-mode-toggle { display: flex; border: 1px solid #e5e5e5; border-radius: 0.25rem; overflow: hidden; margin-bottom: 0.75rem; } + .time-mode-btn { flex: 1; text-align: center; padding: 0.4rem 0; cursor: pointer; font-size: 0.82rem; color: #666; background: #fafafa; } + .time-mode-btn.active { background: #3b5bdb; color: #fff; font-weight: 600; } + + .basic-price-row { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem 0; border-bottom: 1px solid #f2f2f2; } + .basic-price-row:last-child { border-bottom: none; } + .basic-price-label { font-size: 0.85rem; color: #333; } + .basic-price-input { width: 140px; text-align: right; } + + .detail-price-row { display: flex; align-items: center; justify-content: space-between; padding: 0.4rem 0; border-bottom: 1px solid #f5f5f5; } + .detail-price-label { font-size: 0.82rem; color: #444; } + .detail-price-input { width: 140px; text-align: right; } + .detail-scroll { max-height: 260px; overflow-y: auto; padding-right: 4px; } + + .charger-search-list { max-height: 260px; overflow-y: auto; border: 1px solid #eee; border-radius: 0.25rem; padding: 0.4rem; } + .charger-check-item { display: flex; align-items: flex-start; gap: 0.5rem; padding: 0.5rem; border: 1px solid #eee; border-radius: 0.3rem; margin-bottom: 0.4rem; background:#fff; } + .charger-check-item label { margin: 0; font-size: 0.82rem; }