From 663c2f98160d15d4ab505a3b99bc2484db338bee Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Wed, 12 Nov 2025 15:43:46 +0800 Subject: [PATCH] Manual Invoice / BA - drop down listing new UI --- .../bookings/forms/BookingFormComponent.vue | 185 +++++++++++++++++- 1 file changed, 183 insertions(+), 2 deletions(-) diff --git a/resources/assets/vue/components/bookings/forms/BookingFormComponent.vue b/resources/assets/vue/components/bookings/forms/BookingFormComponent.vue index 474c5611..cc92cf29 100644 --- a/resources/assets/vue/components/bookings/forms/BookingFormComponent.vue +++ b/resources/assets/vue/components/bookings/forms/BookingFormComponent.vue @@ -73,7 +73,52 @@
-
+
+ +
+
{{service.name}}
@@ -196,7 +241,65 @@ recipientBanks: [], company: {} }, - parameters: {} + parameters: {}, + + innerDropdown: { main: false }, + innerDropdownHovered: { + service: null, + subservice: null + }, + + innerDropdownSelected: { + service: null, + subservice: null, + option: null + }, + serviceInfo: { + services: [ + { + id: 1, + name: "BANK TRANSFER", + subservices: [ + { + id: 14, + name: "(IN) BANK TRANSFER", + }, + { + id: 15, + name: "(EX) BANK TRANSFER", + }, + ] + }, + { + id: 2, + name: "ALIPAY TRANSFER", + subservices: [ + { + id: 14, + name: "(IN) ALIPAY TRANSFER", + }, + { + id: 15, + name: "(EX) ALIPAY TRANSFER", + }, + ] + }, + { + id: 3, + name: "ENTERPRISE TO ENTERPRISE 公打公", + subservices: [ + { + id: 14, + name: "(IN) ENTERPRISE TO ENTERPRISE 公打公", + }, + { + id: 15, + name: "(EX) ENTERPRISE TO ENTERPRISE 公打公", + }, + ] + }, + ] + } } }, created(){ @@ -212,6 +315,18 @@ this.summary.recipientBanks = this.data.recipient_banks.accounts; }, + computed: { + displaySelection() { + var defaultName = "BANKING INVOICE"; + var service = this.innerDropdownSelected.service; + var sub = this.innerDropdownSelected.subservice; + var opt = this.innerDropdownSelected.option; + if (service && sub && opt) return defaultName + " → " + service.name + " → " + sub.name + " → " + opt.name; + if (service && sub) return defaultName + " → " + service.name + " → " + sub.name; + if (service) return defaultName + " → " + service.name; + return defaultName; + } + }, methods: { updateServiceType(service){ this.serviceType.id = service.id; @@ -230,9 +345,75 @@ recipientBanks: this.data.recipient_banks.accounts, company: this.data, } + this.innerDropdownSelected = { service: null, subservice: null }; + }, + hoverService(service) { + this.innerDropdownHovered.service = service; + this.innerDropdownHovered.subservice = null; + }, + hoverSubservice(sub) { + this.innerDropdownHovered.subservice = sub; + }, + selectService(service) { + this.innerDropdownSelected.service = service; + this.innerDropdownSelected.subservice = null; + this.innerDropdownSelected.option = null; + this.innerDropdownHovered.service = service; + this.innerDropdownHovered.subservice = null; + }, + selectSubservice(service, svc, sub) { + this.updateServiceType(service); + this.innerDropdownSelected = { service: svc, subservice: sub }; + this.innerDropdownSelected.subservice = sub; + this.innerDropdownSelected.option = null; + this.innerDropdownHovered.subservice = sub; + + this.innerDropdown.main = false; + this.innerDropdownHovered.service = null; + + }, + closeDropdown() { + this.innerDropdownHovered.service = null; + this.innerDropdownHovered.subservice = null; + // this.innerDropdown.main = false; // optional, closes dropdown when leaving } }, mixins: [formHandler] } +