diff --git a/app/Helpers/Equipment/ServerPartHelper.php b/app/Helpers/Equipment/ServerPartHelper.php
index 0d53954..7beb9ef 100644
--- a/app/Helpers/Equipment/ServerPartHelper.php
+++ b/app/Helpers/Equipment/ServerPartHelper.php
@@ -58,7 +58,7 @@ class ServerPartHelper extends EquipmentHelper
}
$extras['class'] = array_key_exists('class', $extras) ? $extras['class'] . ' select-field' : 'select-field';
$extras['onChange'] = "document.querySelector('input[name=\'amount\']').value = this.options[this.selectedIndex].getAttribute('data-price')";
- $attributes = ['data-price' => 'getPrice'];
+ $attributes = ['data-type' => 'getType', 'data-price' => 'getPrice'];
$form = $this->form_dropdown_common($field, $value, $viewDatas, $extras, $attributes);
break;
default:
diff --git a/app/Views/admin/serverpart/create_form.php b/app/Views/admin/serverpart/create_form.php
new file mode 100644
index 0000000..034d36f
--- /dev/null
+++ b/app/Views/admin/serverpart/create_form.php
@@ -0,0 +1,25 @@
+= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
+= $this->section('content') ?>
+
+getHelper()->alert($error) ?>
+
+
= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?>
+ = form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
+
+
= $this->include("templates/{$viewDatas['layout']}/form_content_bottom"); ?>
+
+= $this->endSection() ?>
\ No newline at end of file
diff --git a/app/Views/admin/serverpart/modify_form.php b/app/Views/admin/serverpart/modify_form.php
new file mode 100644
index 0000000..972209f
--- /dev/null
+++ b/app/Views/admin/serverpart/modify_form.php
@@ -0,0 +1,24 @@
+= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
+= $this->section('content') ?>
+getHelper()->alert($error) ?>
+
+
= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?>
+ = form_open(current_url(), ['id' => 'action_form', ...$viewDatas['forms']['attributes']], $viewDatas['forms']['hiddens']) ?>
+
+
= $this->include("templates/{$viewDatas['layout']}/form_content_bottom"); ?>
+
+= $this->endSection() ?>
\ No newline at end of file
diff --git a/public/js/admin/serverpart.js b/public/js/admin/serverpart.js
new file mode 100644
index 0000000..c7c9a12
--- /dev/null
+++ b/public/js/admin/serverpart.js
@@ -0,0 +1,31 @@
+const typeSelect = document.querySelector("select[name=type]");
+const partSelect = document.querySelector("select[name=part_uid]");
+const amountInput = document.querySelector("input[name=amount]");
+
+// type 선택 시 part_uid 옵션 필터링
+typeSelect.addEventListener("change", function () {
+ let selectedType = this.value;
+
+ for (let option of partSelect.options) {
+ if (option.value === "") {
+ option.style.display = ""; // "부품정보 선택"은 항상 표시
+ continue;
+ }
+ if (!selectedType || option.dataset.type === selectedType) {
+ option.style.display = "";
+ } else {
+ option.style.display = "none";
+ }
+ }
+
+ // 선택 초기화
+ partSelect.value = "";
+ amountInput.value = "";
+});
+
+// part_uid 선택 시 amount 자동 반영
+partSelect.addEventListener("change", function () {
+ let selectedOption = this.options[this.selectedIndex];
+ let price = selectedOption.getAttribute("data-price") || "";
+ amountInput.value = price;
+});
\ No newline at end of file