diff --git a/package-lock.json b/package-lock.json index ae4df77..28372e2 100755 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,15 @@ "name": "eamco_frontend_v2", "version": "0.0.0", "dependencies": { + "@fullcalendar/daygrid": "^6.1.19", + "@fullcalendar/interaction": "^6.1.19", + "@fullcalendar/vue3": "^6.1.19", "@kyvg/vue3-notification": "^3.1.0", "@vuelidate/core": "^2.0.3", "@vuelidate/validators": "^2.0.4", "@vueuse/core": "^10.7.0", - "axios": "^1.6.2", + "axios": "^1.11.0", + "dayjs": "^1.11.13", "html-to-image": "^1.11.11", "html2canvas": "^1.4.1", "moment": "^2.30.1", @@ -469,6 +473,40 @@ "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz", "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==" }, + "node_modules/@fullcalendar/core": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.19.tgz", + "integrity": "sha512-z0aVlO5e4Wah6p6mouM0UEqtRf1MZZPt4mwzEyU6kusaNL+dlWQgAasF2cK23hwT4cmxkEmr4inULXgpyeExdQ==", + "peer": true, + "dependencies": { + "preact": "~10.12.1" + } + }, + "node_modules/@fullcalendar/daygrid": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.19.tgz", + "integrity": "sha512-IAAfnMICnVWPjpT4zi87i3FEw0xxSza0avqY/HedKEz+l5MTBYvCDPOWDATpzXoLut3aACsjktIyw9thvIcRYQ==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.19" + } + }, + "node_modules/@fullcalendar/interaction": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.19.tgz", + "integrity": "sha512-GOciy79xe8JMVp+1evAU3ytdwN/7tv35t5i1vFkifiuWcQMLC/JnLg/RA2s4sYmQwoYhTw/p4GLcP0gO5B3X5w==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.19" + } + }, + "node_modules/@fullcalendar/vue3": { + "version": "6.1.19", + "resolved": "https://registry.npmjs.org/@fullcalendar/vue3/-/vue3-6.1.19.tgz", + "integrity": "sha512-j5eUSxx0xIy3ADljo0f5B9PhjqXnCQ+7nUMPfsslc2eGVjp4F74YvY3dyd6OBbg13IvpsjowkjncGipYMQWmTA==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.19", + "vue": "^3.0.11" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -1204,12 +1242,12 @@ } }, "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -1328,6 +1366,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -1527,6 +1577,11 @@ "url": "https://opencollective.com/daisyui" } }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -1609,6 +1664,19 @@ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1639,12 +1707,9 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "engines": { "node": ">= 0.4" } @@ -1657,6 +1722,31 @@ "node": ">= 0.4" } }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -1800,12 +1890,14 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -1856,15 +1948,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -1873,6 +1970,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -1908,11 +2017,11 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1929,21 +2038,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "engines": { "node": ">= 0.4" }, @@ -2200,6 +2298,14 @@ "node": ">=12" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/merge": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", @@ -2671,6 +2777,16 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "node_modules/preact": { + "version": "10.12.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", diff --git a/package.json b/package.json index f30ea75..d8c9e13 100755 --- a/package.json +++ b/package.json @@ -9,11 +9,15 @@ "preview": "vite preview" }, "dependencies": { + "@fullcalendar/daygrid": "^6.1.19", + "@fullcalendar/interaction": "^6.1.19", + "@fullcalendar/vue3": "^6.1.19", "@kyvg/vue3-notification": "^3.1.0", "@vuelidate/core": "^2.0.3", "@vuelidate/validators": "^2.0.4", "@vueuse/core": "^10.7.0", - "axios": "^1.6.2", + "axios": "^1.11.0", + "dayjs": "^1.11.13", "html-to-image": "^1.11.11", "html2canvas": "^1.4.1", "moment": "^2.30.1", diff --git a/src/layouts/sidebar/sidebar.vue b/src/layouts/sidebar/sidebar.vue index 075bf73..088dbfb 100755 --- a/src/layouts/sidebar/sidebar.vue +++ b/src/layouts/sidebar/sidebar.vue @@ -18,13 +18,12 @@
Customer
-
  • All Customers
    -
  • +
    Delivery
  • @@ -57,7 +56,6 @@
    Waiting Deliveries
    -
    Issue Tickets
    @@ -70,16 +68,17 @@
    Pending Payment
    - -
    Finalized Tickets
  • - - - +
    Service
    +
  • + +
    Service Home
    +
    +
  • Automatics
    @@ -95,13 +94,13 @@ -
    Employees
  • Employees
  • +
    Admin
  • diff --git a/src/pages/customer/home.vue b/src/pages/customer/home.vue index 8de77f7..295c9cb 100755 --- a/src/pages/customer/home.vue +++ b/src/pages/customer/home.vue @@ -68,18 +68,19 @@ - Create Delivery + class="btn-sm btn bg-orange-600 text-white"> + Create Delivery + + + Create Service Call - Edit Customer + Edit Customer - - - - View Profile + class="btn btn-secondary btn-sm"> + View Profile diff --git a/src/pages/customer/profile/home.vue b/src/pages/customer/profile/home.vue index 85015a6..a464a5e 100755 --- a/src/pages/customer/profile/home.vue +++ b/src/pages/customer/profile/home.vue @@ -47,6 +47,12 @@ Create Delivery + + + Create Service Call + + Edit Customer diff --git a/src/pages/delivery/create.vue b/src/pages/delivery/create.vue index 78258d5..28fef29 100755 --- a/src/pages/delivery/create.vue +++ b/src/pages/delivery/create.vue @@ -147,9 +147,7 @@
    No Cards on File! - - Edit Card - + @@ -506,9 +504,7 @@ export default defineComponent({ }); }); }, - test() { - this.CreateOilOrderForm.basicInfo.gallons_ordered = '100' - }, + getCustomerDelivery(userid: any) { let path = import.meta.env.VITE_BASE_URL + '/delivery/customer/' + userid + '/1'; axios({ diff --git a/src/pages/delivery/edit.vue b/src/pages/delivery/edit.vue index 83b39f3..72b26b9 100755 --- a/src/pages/delivery/edit.vue +++ b/src/pages/delivery/edit.vue @@ -665,7 +665,7 @@ export default defineComponent({ headers: authHeader(), }) .then((response: any) => { - if (response.data.ok === 'true') { + if (response.data.ok === true) { this.updatestatus() this.$router.push({ name: "deliveryOrder", params: { id: this.deliveryOrder.id } }); } diff --git a/src/pages/service/ServiceEditModal.vue b/src/pages/service/ServiceEditModal.vue new file mode 100644 index 0000000..bf55fbc --- /dev/null +++ b/src/pages/service/ServiceEditModal.vue @@ -0,0 +1,157 @@ + + + \ No newline at end of file diff --git a/src/pages/service/ServiceHome.vue b/src/pages/service/ServiceHome.vue new file mode 100644 index 0000000..3a9012f --- /dev/null +++ b/src/pages/service/ServiceHome.vue @@ -0,0 +1,205 @@ + + + \ No newline at end of file diff --git a/src/pages/service/calender/CalendarCustomer.vue b/src/pages/service/calender/CalendarCustomer.vue new file mode 100644 index 0000000..bd8681d --- /dev/null +++ b/src/pages/service/calender/CalendarCustomer.vue @@ -0,0 +1,155 @@ + + + \ No newline at end of file diff --git a/src/pages/service/calender/EventModal.vue b/src/pages/service/calender/EventModal.vue new file mode 100644 index 0000000..4aecb98 --- /dev/null +++ b/src/pages/service/calender/EventModal.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/src/pages/service/calender/EventSidebar.vue b/src/pages/service/calender/EventSidebar.vue new file mode 100644 index 0000000..43977cd --- /dev/null +++ b/src/pages/service/calender/EventSidebar.vue @@ -0,0 +1,164 @@ + + + \ No newline at end of file diff --git a/src/pages/service/calender/api.js b/src/pages/service/calender/api.js new file mode 100644 index 0000000..7e4e57e --- /dev/null +++ b/src/pages/service/calender/api.js @@ -0,0 +1,24 @@ +import axios from 'axios'; + +const BASE_URL = import.meta.env.VITE_BASE_URL; + +function authHeader() { + // Return authorization header + return {}; +} + +export function createEvent(payload) { + const path = `${BASE_URL}/service/create`; // Example endpoint + return axios.post(path, payload, { + withCredentials: true, + headers: authHeader(), + }); +} + +export function deleteEventById(eventId) { + const path = `${BASE_URL}/service/delete/${eventId}`; // Example endpoint + return axios.delete(path, { + withCredentials: true, + headers: authHeader(), + }); +} \ No newline at end of file diff --git a/src/pages/service/routes.ts b/src/pages/service/routes.ts new file mode 100644 index 0000000..43e5ef3 --- /dev/null +++ b/src/pages/service/routes.ts @@ -0,0 +1,24 @@ + + + +import ServiceHome from './ServiceHome.vue' // Adjust the import path +import CalendarCustomer from './calender/CalendarCustomer.vue' + +const serviceRoutes = [ + { + path: '/service', + name: 'ServiceHome', + component: ServiceHome + }, + + + { + path: '/service/calender/:id', + name: 'CalenderCustomer', + component: CalendarCustomer, + }, + +] + +export default serviceRoutes +//sourceMappingURL=index.ts.map diff --git a/src/router/index.ts b/src/router/index.ts index bee8867..4d5ca69 100755 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -12,7 +12,7 @@ import Error404 from '../pages/error/Error404.vue' import adminRoutes from "../pages/admin/routes.ts"; import tickerRoutes from "../pages/ticket/routes.ts"; import moneyRoutes from "../pages/money/routes.ts"; - +import serviceRoutes from "../pages/service/routes.ts"; const routes = [ ...moneyRoutes, ...cardRoutes, @@ -24,6 +24,7 @@ const routes = [ ...autoRoutes, ...adminRoutes, ...tickerRoutes, + ...serviceRoutes, { path: '/', name: 'home', diff --git a/src/types/fullcalendar-interaction.d.ts b/src/types/fullcalendar-interaction.d.ts new file mode 100644 index 0000000..05d2da5 --- /dev/null +++ b/src/types/fullcalendar-interaction.d.ts @@ -0,0 +1,3 @@ +declare module '@fullcalendar/interaction'; +declare module '@fullcalendar/daygrid'; +declare module '@fullcalendar/vue3'; \ No newline at end of file diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 11f02fe..90fa792 100755 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -1 +1,6 @@ /// +declare module '*.vue' { + import type { DefineComponent } from 'vue'; + const component: DefineComponent<{}, {}, any>; + export default component; +} \ No newline at end of file