diff --git a/vueManager/src/components/OrderView.vue b/vueManager/src/components/OrderView.vue index 3370d75..ddcb311 100644 --- a/vueManager/src/components/OrderView.vue +++ b/vueManager/src/components/OrderView.vue @@ -2,23 +2,16 @@ import { useLexicon } from '@vuetools/useLexicon' import AutoComplete from 'primevue/autocomplete' import Button from 'primevue/button' -import Checkbox from 'primevue/checkbox' -import Column from 'primevue/column' import ConfirmDialog from 'primevue/confirmdialog' -import DataTable from 'primevue/datatable' -import DatePicker from 'primevue/datepicker' import Dialog from 'primevue/dialog' -import Fieldset from 'primevue/fieldset' import InputNumber from 'primevue/inputnumber' import InputText from 'primevue/inputtext' -import Message from 'primevue/message' import Select from 'primevue/select' import Tab from 'primevue/tab' import TabList from 'primevue/tablist' import TabPanel from 'primevue/tabpanel' import TabPanels from 'primevue/tabpanels' import Tabs from 'primevue/tabs' -import Tag from 'primevue/tag' import Textarea from 'primevue/textarea' import Toast from 'primevue/toast' import { useConfirm } from 'primevue/useconfirm' @@ -34,6 +27,10 @@ import { import request from '../request.js' import { normalizeOrderPluginTab } from '../utils/orderPluginTab.js' +import OrderAddressTab from './order/OrderAddressTab.vue' +import OrderHistoryTab from './order/OrderHistoryTab.vue' +import OrderInfoTab from './order/OrderInfoTab.vue' +import OrderProductsTab from './order/OrderProductsTab.vue' const toast = useToast() const confirm = useConfirm() @@ -982,57 +979,6 @@ async function loadLogs() { } } -/** - * Load statuses list - */ -// eslint-disable-next-line no-unused-vars -async function loadStatuses() { - try { - const response = await request.get('/api/mgr/statuses-dropdown') - statuses.value = (response.results || response || []).map(s => ({ - value: s.id, - label: s.name, - })) - } catch (error) { - console.error('[OrderView] Error loading statuses:', error) - statuses.value = [] - } -} - -/** - * Load deliveries list - */ -// eslint-disable-next-line no-unused-vars -async function loadDeliveries() { - try { - const response = await request.get('/api/mgr/deliveries-active') - deliveries.value = (response.results || response || []).map(d => ({ - value: d.id, - label: d.name, - })) - } catch (error) { - console.error('[OrderView] Error loading deliveries:', error) - deliveries.value = [] - } -} - -/** - * Load payments list - */ -// eslint-disable-next-line no-unused-vars -async function loadPayments() { - try { - const response = await request.get('/api/mgr/payments') - payments.value = (response.results || response || []).map(p => ({ - value: p.id, - label: p.name, - })) - } catch (error) { - console.error('[OrderView] Error loading payments:', error) - payments.value = [] - } -} - /** * Get options for combo field (order fields) * Returns options array from combo config with metadata @@ -1729,6 +1675,63 @@ function destroyPluginExtComponents() { mountedExtPluginComponents.value = {} } +const infoTabProps = computed(() => ({ + order: order.value, + isCreateMode: isCreateMode.value, + orderFieldsBySection: orderFieldsBySection.value, + isDraft: isDraft.value, + finalizing: finalizing.value, + saving: saving.value, + formatDate, + formatPrice, + getFieldWidthClass, + isFieldEditable, + getFieldDisplayValue, + getFieldCompareField, + getFieldOptions, + confirmFinalizeOrder, + createOrder, + saveOrder, + goBack, +})) + +const productsTabProps = computed(() => ({ + products: products.value, + productsColumns: productsColumns.value, + formatOptions, + formatPrice, + renderProductField, + getProductLink, + handleProductAction, + openAddProductDialog, +})) + +const addressTabProps = computed(() => ({ + order: order.value, + isCreateMode: isCreateMode.value, + isDraft: isDraft.value, + addressFieldsBySection: addressFieldsBySection.value, + customerSuggestions: customerSuggestions.value, + searchingCustomers: searchingCustomers.value, + saving: saving.value, + formatPrice, + getFieldWidthClass, + getAddressFieldCompareField, + getAddressFieldOptions, + searchCustomers, + onCustomerSelect, + clearCustomer, + createOrder, + saveOrder, + goBack, +})) + +const historyTabProps = computed(() => ({ + logs: logs.value, + formatDate, + formatLogEntry, +})) + watch( () => orderTabsConfig.value.map(t => t.key), keys => { @@ -1914,26 +1917,6 @@ function getFieldDisplayValue(field, value) { } } -/** - * Get status severity for tag - */ -// eslint-disable-next-line no-unused-vars -function getStatusSeverity(color) { - if (!color) return 'secondary' - const colorMap = { - '#97b94d': 'success', - '#81d742': 'success', - green: 'success', - '#dd3d36': 'danger', - red: 'danger', - '#f0ad4e': 'warn', - yellow: 'warn', - '#5bc0de': 'info', - blue: 'info', - } - return colorMap[color?.toLowerCase()] || 'secondary' -} - onMounted(async () => { if (isCreateMode.value) { // Create mode - init empty order and load field configs @@ -2359,573 +2342,27 @@ onMounted(async () => { -