muitas melhorias e novas funcionalidades
This commit is contained in:
parent
459a63528c
commit
06fb628248
@ -22,6 +22,9 @@ const submissionStatus = ref({
|
|||||||
const appConfig = reactive({
|
const appConfig = reactive({
|
||||||
title: 'Reserva Premium',
|
title: 'Reserva Premium',
|
||||||
subtitle: 'Hotel 1001 Noites Prime',
|
subtitle: 'Hotel 1001 Noites Prime',
|
||||||
|
phone_number: '',
|
||||||
|
primary_color: '#1E90FF',
|
||||||
|
secondary_color: '#1B3B5F',
|
||||||
});
|
});
|
||||||
|
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
@ -69,6 +72,16 @@ const fetchMasterData = async () => {
|
|||||||
brands.value = data.brands;
|
brands.value = data.brands;
|
||||||
pricings.value = data.pricings;
|
pricings.value = data.pricings;
|
||||||
extras.value = data.extras;
|
extras.value = data.extras;
|
||||||
|
|
||||||
|
if (data.app_config) {
|
||||||
|
appConfig.title = data.app_config.title || appConfig.title;
|
||||||
|
appConfig.subtitle = data.app_config.subtitle || appConfig.subtitle;
|
||||||
|
appConfig.phone_number = data.app_config.phone_number || '';
|
||||||
|
appConfig.primary_color =
|
||||||
|
data.app_config.primary_color || appConfig.primary_color;
|
||||||
|
appConfig.secondary_color =
|
||||||
|
data.app_config.secondary_color || appConfig.secondary_color;
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// console.error("Master Data Error:", error);
|
// console.error("Master Data Error:", error);
|
||||||
} finally {
|
} finally {
|
||||||
@ -457,7 +470,7 @@ const viewTitle = computed(() => {
|
|||||||
<!-- eslint-disable vue/no-bare-strings-in-template, vue/no-static-inline-styles -->
|
<!-- eslint-disable vue/no-bare-strings-in-template, vue/no-static-inline-styles -->
|
||||||
<div
|
<div
|
||||||
class="min-h-screen py-6 px-4 sm:px-6 lg:px-8 flex flex-col items-center justify-center bg-fixed"
|
class="min-h-screen py-6 px-4 sm:px-6 lg:px-8 flex flex-col items-center justify-center bg-fixed"
|
||||||
style="background: linear-gradient(135deg, #0a1a2f 0%, #1b3b5f 100%)"
|
:style="`background: linear-gradient(135deg, ${appConfig.secondary_color} 0%, ${appConfig.primary_color} 100%)`"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="w-full max-w-3xl bg-white rounded-[2rem] shadow-2xl overflow-hidden border border-white/10 relative"
|
class="w-full max-w-3xl bg-white rounded-[2rem] shadow-2xl overflow-hidden border border-white/10 relative"
|
||||||
@ -483,6 +496,13 @@ const viewTitle = computed(() => {
|
|||||||
>
|
>
|
||||||
{{ appConfig.subtitle }}
|
{{ appConfig.subtitle }}
|
||||||
</p>
|
</p>
|
||||||
|
<p
|
||||||
|
v-if="appConfig.phone_number"
|
||||||
|
class="text-sm font-bold text-emerald-600 mt-2"
|
||||||
|
>
|
||||||
|
<i class="i-lucide-phone mr-1" />
|
||||||
|
Suporte: {{ appConfig.phone_number }}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -11,8 +11,8 @@ const route = useRoute();
|
|||||||
const accountId = route.params.accountId;
|
const accountId = route.params.accountId;
|
||||||
|
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
page_title: '',
|
title: '',
|
||||||
page_subtitle: '',
|
subtitle: '',
|
||||||
primary_color: '#00af9e',
|
primary_color: '#00af9e',
|
||||||
phone_number: '',
|
phone_number: '',
|
||||||
});
|
});
|
||||||
@ -24,8 +24,8 @@ const fetchConfig = async () => {
|
|||||||
`/api/v1/accounts/${accountId}/captain/configuration`
|
`/api/v1/accounts/${accountId}/captain/configuration`
|
||||||
);
|
);
|
||||||
formData.value = {
|
formData.value = {
|
||||||
page_title: data.page_title || '',
|
title: data.title || '',
|
||||||
page_subtitle: data.page_subtitle || '',
|
subtitle: data.subtitle || '',
|
||||||
primary_color: data.primary_color || '#00af9e',
|
primary_color: data.primary_color || '#00af9e',
|
||||||
phone_number: data.phone_number || '',
|
phone_number: data.phone_number || '',
|
||||||
};
|
};
|
||||||
@ -41,7 +41,7 @@ const saveConfig = async () => {
|
|||||||
try {
|
try {
|
||||||
await window.axios.put(
|
await window.axios.put(
|
||||||
`/api/v1/accounts/${accountId}/captain/configuration`,
|
`/api/v1/accounts/${accountId}/captain/configuration`,
|
||||||
formData.value
|
{ configuration: formData.value }
|
||||||
);
|
);
|
||||||
useAlert('Configurações salvas!');
|
useAlert('Configurações salvas!');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -78,7 +78,7 @@ onMounted(fetchConfig);
|
|||||||
Título da Página
|
Título da Página
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
v-model="formData.page_title"
|
v-model="formData.title"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-full px-3 py-2 border rounded-md dark:bg-slate-900 border-slate-200 dark:border-slate-700"
|
class="w-full px-3 py-2 border rounded-md dark:bg-slate-900 border-slate-200 dark:border-slate-700"
|
||||||
placeholder="Ex: Reservas Hotel Prime"
|
placeholder="Ex: Reservas Hotel Prime"
|
||||||
@ -92,7 +92,7 @@ onMounted(fetchConfig);
|
|||||||
Subtítulo
|
Subtítulo
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
v-model="formData.page_subtitle"
|
v-model="formData.subtitle"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-full px-3 py-2 border rounded-md dark:bg-slate-900 border-slate-200 dark:border-slate-700"
|
class="w-full px-3 py-2 border rounded-md dark:bg-slate-900 border-slate-200 dark:border-slate-700"
|
||||||
placeholder="Ex: As melhores suítes da região"
|
placeholder="Ex: As melhores suítes da região"
|
||||||
|
|||||||
@ -0,0 +1,5 @@
|
|||||||
|
class AddPhoneNumberToCaptainConfigurations < ActiveRecord::Migration[7.1]
|
||||||
|
def change
|
||||||
|
add_column :captain_configurations, :phone_number, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[7.1].define(version: 2026_01_14_101013) do
|
ActiveRecord::Schema[7.1].define(version: 2026_01_14_101014) do
|
||||||
# These extensions should be enabled to support this database
|
# These extensions should be enabled to support this database
|
||||||
enable_extension "pg_stat_statements"
|
enable_extension "pg_stat_statements"
|
||||||
enable_extension "pg_trgm"
|
enable_extension "pg_trgm"
|
||||||
@ -357,6 +357,7 @@ ActiveRecord::Schema[7.1].define(version: 2026_01_14_101013) do
|
|||||||
t.boolean "active", default: true
|
t.boolean "active", default: true
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
|
t.string "phone_number"
|
||||||
t.index ["account_id"], name: "index_captain_configurations_on_account_id"
|
t.index ["account_id"], name: "index_captain_configurations_on_account_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ module Api
|
|||||||
end
|
end
|
||||||
|
|
||||||
def config_params
|
def config_params
|
||||||
params.require(:configuration).permit(:title, :subtitle, :primary_color, :secondary_color, :active, :logo_url)
|
params.require(:configuration).permit(:title, :subtitle, :primary_color, :secondary_color, :active, :logo_url, :phone_number)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
35
progresso/fix_public_page_config.md
Normal file
35
progresso/fix_public_page_config.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Fix Public Page Configuration
|
||||||
|
|
||||||
|
## Objective
|
||||||
|
|
||||||
|
Ensure that "General Settings" in the Dashboard (Page Title, Subtitle, Phone, Primary Color) are correctly reflected in the Public Booking Page (`CaptainBooking`).
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
The user reported that changing settings in the dashboard had no effect on the public page. The public page was using hardcoded values.
|
||||||
|
|
||||||
|
## Steps Taken
|
||||||
|
|
||||||
|
1. **Backend**:
|
||||||
|
|
||||||
|
- Identified that `phone_number` column was missing in `captain_configurations` table.
|
||||||
|
- Created migration `AddPhoneNumberToCaptainConfigurations`.
|
||||||
|
- Updated `Api::V1::Accounts::Captain::ConfigurationsController` to permit `phone_number` param.
|
||||||
|
- Verified `Public::Api::V1::Captain::MasterDataController` returns the `captain_configuration` data.
|
||||||
|
|
||||||
|
2. **Frontend (`App.vue`)**:
|
||||||
|
- Updated `fetchMasterData` to consume `app_config` from the API response.
|
||||||
|
- Made `appConfig` reactive to the fetched data (`title`, `subtitle`, `phone_number`, `primary_color`, `secondary_color`).
|
||||||
|
- Added dynamic background gradient using `primary_color` and `secondary_color`.
|
||||||
|
- Added "Suporte: [Phone]" display in the header/subtitle area if a phone number is set.
|
||||||
|
|
||||||
|
## Files Changed
|
||||||
|
|
||||||
|
- `db/migrate/20260114101014_add_phone_number_to_captain_configurations.rb` (New)
|
||||||
|
- `enterprise/app/controllers/api/v1/accounts/captain/configurations_controller.rb`
|
||||||
|
- `app/javascript/captain_booking/App.vue`
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
- Dashboard UI (`configurations/Index.vue`) already supported sending `phone_number`.
|
||||||
|
- `App.vue` now dynamically updates its UI based on the API response.
|
||||||
Loading…
Reference in New Issue
Block a user