diff --git a/resources/js/pages/admin/manage/cuttings/form/CuttingPosCombinationDialog.vue b/resources/js/pages/admin/manage/cuttings/form/CuttingPosCombinationDialog.vue index 40ba09e..3c99941 100644 --- a/resources/js/pages/admin/manage/cuttings/form/CuttingPosCombinationDialog.vue +++ b/resources/js/pages/admin/manage/cuttings/form/CuttingPosCombinationDialog.vue @@ -14,6 +14,13 @@ import { DialogTitle, } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select'; import { Label } from '@/components/ui/label'; import { apiFetch } from '@/lib/api'; import draft_combinations from '@/routes/admin/manage/cuttings/draft_combinations'; @@ -50,19 +57,28 @@ const emit = defineEmits<{ }>(); const search = ref(''); +const selectedRawMaterialId = ref('all'); const selectedMaterials = ref([]); const combinationResult = ref(''); const loading = ref(false); +const selectPortalTarget = ref(); const filteredRawMaterials = computed(() => { const keyword = search.value.trim().toLowerCase(); + const rawMaterialId = selectedRawMaterialId.value; const catalog = props.rawMaterialCatalog; - if (!keyword) { - return catalog; + let items = catalog; + if (rawMaterialId !== 'all') { + const idNum = Number(rawMaterialId); + items = catalog.filter((rawMaterial) => rawMaterial.id === idNum); } - return catalog + if (!keyword) { + return items; + } + + return items .map((rawMaterial) => { const matchingPrices = rawMaterial.prices.filter((price) => price.variant.toLowerCase().includes(keyword), @@ -110,6 +126,7 @@ function removeSelected(priceId: number) { function resetForm() { search.value = ''; + selectedRawMaterialId.value = 'all'; selectedMaterials.value = []; combinationResult.value = ''; } @@ -218,10 +235,25 @@ watch(open, (value) => { -
- - +
+
+ + +
+
+ +
{
+