oceanhelm 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/oceanhelm.es.js +518 -482
- package/dist/oceanhelm.es.js.map +1 -1
- package/dist/oceanhelm.umd.js +1 -1
- package/dist/oceanhelm.umd.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/components/CrewManagement.vue +2 -2
- package/src/components/OceanHelmMaintenance.vue +5 -4
- package/src/components/VesselList.vue +85 -38
- package/src/utils/sidebarConfig.js +6 -0
package/dist/oceanhelm.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { openBlock as o, createElementBlock as l, normalizeClass as g, createElementVNode as e, toDisplayString as r, createCommentVNode as m, Fragment as p, renderList as
|
|
1
|
+
import { openBlock as o, createElementBlock as l, normalizeClass as g, createElementVNode as e, toDisplayString as r, createCommentVNode as m, Fragment as p, renderList as h, withModifiers as D, createTextVNode as _, renderSlot as O, withDirectives as v, vShow as P, normalizeStyle as E, createStaticVNode as x, vModelText as k, vModelSelect as C, vModelCheckbox as N } from "vue";
|
|
2
2
|
const S = (s, t) => {
|
|
3
3
|
const u = s.__vccOpts || s;
|
|
4
4
|
for (const [b, n] of t)
|
|
@@ -91,7 +91,7 @@ const S = (s, t) => {
|
|
|
91
91
|
}, L = {
|
|
92
92
|
key: 0,
|
|
93
93
|
class: "logo d-flex align-items-center left"
|
|
94
|
-
},
|
|
94
|
+
}, $ = { class: "list-unstyled components mt-4" }, j = ["onClick"], B = ["href", "onClick"], H = ["onClick"], Q = {
|
|
95
95
|
class: "dropdown-toggle",
|
|
96
96
|
type: "button",
|
|
97
97
|
"data-bs-toggle": "dropdown",
|
|
@@ -114,16 +114,16 @@ function Y(s, t, u, b, n, a) {
|
|
|
114
114
|
}, null, 2),
|
|
115
115
|
e("span", null, r(u.brandName), 1)
|
|
116
116
|
])) : m("", !0),
|
|
117
|
-
e("ul",
|
|
118
|
-
(o(!0), l(p, null,
|
|
119
|
-
key:
|
|
117
|
+
e("ul", $, [
|
|
118
|
+
(o(!0), l(p, null, h(a.filteredMenuItems, (i, f) => (o(), l("li", {
|
|
119
|
+
key: f,
|
|
120
120
|
class: g({ active: i.active, dropdown: i.type === "dropdown" }),
|
|
121
|
-
onClick: (
|
|
121
|
+
onClick: (y) => a.handleItemClick(i)
|
|
122
122
|
}, [
|
|
123
123
|
i.type === "link" ? (o(), l("a", {
|
|
124
124
|
key: 0,
|
|
125
125
|
href: i.href || "#",
|
|
126
|
-
onClick: D((
|
|
126
|
+
onClick: D((y) => a.handleNavigation(i), ["prevent"])
|
|
127
127
|
}, [
|
|
128
128
|
i.icon ? (o(), l("i", {
|
|
129
129
|
key: 0,
|
|
@@ -132,7 +132,7 @@ function Y(s, t, u, b, n, a) {
|
|
|
132
132
|
_(" " + r(i.label), 1)
|
|
133
133
|
], 8, B)) : i.type === "button" ? (o(), l("a", {
|
|
134
134
|
key: 1,
|
|
135
|
-
onClick: D((
|
|
135
|
+
onClick: D((y) => a.handleAction(i), ["prevent"]),
|
|
136
136
|
style: { cursor: "pointer" }
|
|
137
137
|
}, [
|
|
138
138
|
i.icon ? (o(), l("i", {
|
|
@@ -149,15 +149,15 @@ function Y(s, t, u, b, n, a) {
|
|
|
149
149
|
_(" " + r(i.label), 1)
|
|
150
150
|
]),
|
|
151
151
|
e("div", J, [
|
|
152
|
-
(o(!0), l(p, null,
|
|
152
|
+
(o(!0), l(p, null, h(i.children, (y, A) => (o(), l("a", {
|
|
153
153
|
key: A,
|
|
154
154
|
class: "dropdown-item black",
|
|
155
|
-
onClick: D((q) => a.handleAction(
|
|
155
|
+
onClick: D((q) => a.handleAction(y), ["prevent"]),
|
|
156
156
|
style: { cursor: "pointer" }
|
|
157
|
-
}, r(
|
|
157
|
+
}, r(y.label), 9, W))), 128))
|
|
158
158
|
])
|
|
159
159
|
], 64)) : i.type === "separator" ? (o(), l("div", G)) : i.type === "text" ? (o(), l("a", z, r(i.label), 1)) : m("", !0)
|
|
160
|
-
], 10,
|
|
160
|
+
], 10, j))), 128))
|
|
161
161
|
]),
|
|
162
162
|
O(s.$slots, "footer")
|
|
163
163
|
], 2);
|
|
@@ -206,7 +206,8 @@ const X = {
|
|
|
206
206
|
"vessel-delete",
|
|
207
207
|
"vessel-toggle-status",
|
|
208
208
|
"vessel-navigate",
|
|
209
|
-
"access-denied"
|
|
209
|
+
"access-denied",
|
|
210
|
+
"date-change"
|
|
210
211
|
],
|
|
211
212
|
computed: {
|
|
212
213
|
activeVesselsCount() {
|
|
@@ -265,6 +266,17 @@ const X = {
|
|
|
265
266
|
statusClass(s) {
|
|
266
267
|
return `status-${(s == null ? void 0 : s.toLowerCase()) || ""}`;
|
|
267
268
|
},
|
|
269
|
+
getDuration(s, t) {
|
|
270
|
+
const u = /* @__PURE__ */ new Date(), b = new Date(s), n = u - b;
|
|
271
|
+
if (n < 0)
|
|
272
|
+
return "Invalid (future date)";
|
|
273
|
+
const a = Math.floor(n / (1e3 * 60 * 60)), i = Math.floor(a / 24), f = a % 24;
|
|
274
|
+
let y = "";
|
|
275
|
+
return i > 0 && (y += `${i} day${i > 1 ? "s" : ""}`), f > 0 && (y += (y ? " " : "") + `${f} hr${f > 1 ? "s" : ""}`), y || "0 hr";
|
|
276
|
+
},
|
|
277
|
+
setVesselDate(s) {
|
|
278
|
+
this.$emit("date-change", s);
|
|
279
|
+
},
|
|
268
280
|
grantAccess(s) {
|
|
269
281
|
const { role: t, vessel: u } = this.userProfile;
|
|
270
282
|
return t === "owner" || t === "staff" || t === "captain" && u === s.name;
|
|
@@ -293,8 +305,14 @@ const X = {
|
|
|
293
305
|
}, ce = {
|
|
294
306
|
key: 2,
|
|
295
307
|
class: "row"
|
|
296
|
-
}, me = ["onClick"], ve = { class: "card-body d-flex align-items-center" }, pe = { class: "flex-grow-1" }, fe = { class: "d-flex justify-content-between align-items-center mb-2" }, he = { class: "card-title mb-0" }, ge = { class: "row" }, be = { class: "col-6" }, ye = { class: "mb-0" }, we = {
|
|
297
|
-
|
|
308
|
+
}, me = ["onClick"], ve = { class: "card-body d-flex align-items-center" }, pe = { class: "flex-grow-1" }, fe = { class: "d-flex justify-content-between align-items-center mb-2" }, he = { class: "card-title mb-0" }, ge = { class: "row" }, be = { class: "col-6" }, ye = { class: "mb-0" }, we = {
|
|
309
|
+
key: 0,
|
|
310
|
+
class: "col-6"
|
|
311
|
+
}, ke = { class: "mb-0" }, _e = { class: "mb-0" }, Ce = {
|
|
312
|
+
key: 1,
|
|
313
|
+
class: "col-6"
|
|
314
|
+
}, De = { class: "text-muted" }, xe = ["onClick"], Se = { class: "action-icon v-left delete" }, Pe = ["onClick"], Ae = ["onClick"];
|
|
315
|
+
function qe(s, t, u, b, n, a) {
|
|
298
316
|
return o(), l(p, null, [
|
|
299
317
|
e("div", Z, [
|
|
300
318
|
e("div", ee, [
|
|
@@ -339,7 +357,7 @@ function xe(s, t, u, b, n, a) {
|
|
|
339
357
|
]))
|
|
340
358
|
])) : m("", !0)
|
|
341
359
|
]),
|
|
342
|
-
t[
|
|
360
|
+
t[12] || (t[12] = e("h4", { class: "mb-4" }, [
|
|
343
361
|
e("i", { class: "bi bi-ship me-2" }),
|
|
344
362
|
_("Registered Vessels")
|
|
345
363
|
], -1)),
|
|
@@ -352,16 +370,16 @@ function xe(s, t, u, b, n, a) {
|
|
|
352
370
|
], -1),
|
|
353
371
|
e("p", { class: "mt-2" }, "Loading vessels...", -1)
|
|
354
372
|
]))) : u.vessels.length ? (o(), l("div", ce, [
|
|
355
|
-
(o(!0), l(p, null,
|
|
373
|
+
(o(!0), l(p, null, h(u.vessels, (i) => (o(), l("div", {
|
|
356
374
|
class: "col-lg-6",
|
|
357
375
|
key: i.registrationNumber || i.id
|
|
358
376
|
}, [
|
|
359
377
|
e("div", {
|
|
360
378
|
class: "vessel-card",
|
|
361
|
-
onClick: (
|
|
379
|
+
onClick: (f) => a.handleVesselClick(i)
|
|
362
380
|
}, [
|
|
363
381
|
e("div", ve, [
|
|
364
|
-
t[
|
|
382
|
+
t[11] || (t[11] = e("div", { class: "vessel-icon v-left" }, [
|
|
365
383
|
e("i", { class: "fas fa-ship" })
|
|
366
384
|
], -1)),
|
|
367
385
|
e("div", pe, [
|
|
@@ -376,23 +394,35 @@ function xe(s, t, u, b, n, a) {
|
|
|
376
394
|
t[8] || (t[8] = e("small", { class: "text-muted" }, "Registration #:", -1)),
|
|
377
395
|
e("p", ye, r(i.registrationNumber), 1)
|
|
378
396
|
]),
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
397
|
+
i.date ? (o(), l("div", we, [
|
|
398
|
+
i.status === "Active" ? (o(), l(p, { key: 0 }, [
|
|
399
|
+
t[9] || (t[9] = e("small", { class: "text-muted" }, "Active Duration:", -1)),
|
|
400
|
+
e("p", ke, r(a.getDuration(i.date, i.registrationNumber)), 1)
|
|
401
|
+
], 64)) : (o(), l(p, { key: 1 }, [
|
|
402
|
+
t[10] || (t[10] = e("small", { class: "text-muted" }, "Inactive Duration:", -1)),
|
|
403
|
+
e("p", _e, r(a.getDuration(i.date, i.registrationNumber)), 1)
|
|
404
|
+
], 64))
|
|
405
|
+
])) : (o(), l("div", Ce, [
|
|
406
|
+
e("small", De, r(i.status) + " Duration:", 1),
|
|
407
|
+
e("button", {
|
|
408
|
+
type: "button",
|
|
409
|
+
class: "btn btn-outline-primary btn-sm mt-1",
|
|
410
|
+
onClick: D((f) => a.setVesselDate(i.registrationNumber), ["stop"])
|
|
411
|
+
}, " Set Date ", 8, xe)
|
|
412
|
+
]))
|
|
383
413
|
])
|
|
384
414
|
])
|
|
385
415
|
]),
|
|
386
|
-
e("div",
|
|
416
|
+
e("div", Se, [
|
|
387
417
|
e("i", {
|
|
388
418
|
class: "bi bi-trash",
|
|
389
|
-
onClick: D((
|
|
390
|
-
}, null, 8,
|
|
419
|
+
onClick: D((f) => a.handleDeleteVessel(i), ["stop"])
|
|
420
|
+
}, null, 8, Pe)
|
|
391
421
|
]),
|
|
392
422
|
e("button", {
|
|
393
423
|
class: "btn btn-primary",
|
|
394
|
-
onClick: D((
|
|
395
|
-
}, r(i.status === "Active" ? "Mark Inactive" : "Mark Active"), 9,
|
|
424
|
+
onClick: D((f) => a.handleToggleStatus(i), ["stop"])
|
|
425
|
+
}, r(i.status === "Active" ? "Mark Inactive" : "Mark Active"), 9, Ae)
|
|
396
426
|
], 8, me)
|
|
397
427
|
]))), 128))
|
|
398
428
|
])) : (o(), l("div", ue, t[7] || (t[7] = [
|
|
@@ -403,8 +433,8 @@ function xe(s, t, u, b, n, a) {
|
|
|
403
433
|
])))
|
|
404
434
|
], 64);
|
|
405
435
|
}
|
|
406
|
-
const
|
|
407
|
-
const
|
|
436
|
+
const Te = /* @__PURE__ */ S(X, [["render", qe]]);
|
|
437
|
+
const Ie = {
|
|
408
438
|
name: "DashHead",
|
|
409
439
|
props: {
|
|
410
440
|
name: {
|
|
@@ -429,11 +459,11 @@ const Pe = {
|
|
|
429
459
|
this.$emit("logged-in");
|
|
430
460
|
}
|
|
431
461
|
}
|
|
432
|
-
},
|
|
433
|
-
function
|
|
434
|
-
return o(), l("div",
|
|
435
|
-
e("h2",
|
|
436
|
-
e("div",
|
|
462
|
+
}, Re = { class: "page-header d-flex justify-content-between align-items-center" }, Me = { style: { "margin-left": "20px" } }, Ve = { class: "d-flex" };
|
|
463
|
+
function Fe(s, t, u, b, n, a) {
|
|
464
|
+
return o(), l("div", Re, [
|
|
465
|
+
e("h2", Me, r(u.name), 1),
|
|
466
|
+
e("div", Ve, [
|
|
437
467
|
this.userProfile.role == "owner" ? (o(), l("button", {
|
|
438
468
|
key: 0,
|
|
439
469
|
class: "btn btn-outline-primary me-2",
|
|
@@ -451,8 +481,7 @@ function Ie(s, t, u, b, n, a) {
|
|
|
451
481
|
])
|
|
452
482
|
]);
|
|
453
483
|
}
|
|
454
|
-
const
|
|
455
|
-
const Me = {
|
|
484
|
+
const Ee = /* @__PURE__ */ S(Ie, [["render", Fe]]), Ne = {
|
|
456
485
|
name: "OceanHelmMaintenance",
|
|
457
486
|
props: {
|
|
458
487
|
vesselInfo: {
|
|
@@ -762,7 +791,7 @@ const Me = {
|
|
|
762
791
|
s.completed = !s.completed;
|
|
763
792
|
},
|
|
764
793
|
async resetTasks() {
|
|
765
|
-
const t = this.checklists.every((b) => b.completed) ? "Completed" : "
|
|
794
|
+
const t = this.checklists.every((b) => b.completed) ? "Completed" : "Soon", u = {
|
|
766
795
|
checklistProgress: [...this.checklists],
|
|
767
796
|
status: t,
|
|
768
797
|
component: this.currentTask,
|
|
@@ -771,6 +800,7 @@ const Me = {
|
|
|
771
800
|
this.$emit("update-task", {
|
|
772
801
|
updateData: u,
|
|
773
802
|
file: this.fileattachments.file,
|
|
803
|
+
tasks: this.tasks,
|
|
774
804
|
callback: (b, n) => {
|
|
775
805
|
b && (n && (this.after = n), this.fileattachments = {}, this.fileText = "Drag and drop files here or", this.refreshKey += 1, this.activeSection = "inventory");
|
|
776
806
|
}
|
|
@@ -818,52 +848,52 @@ const Me = {
|
|
|
818
848
|
});
|
|
819
849
|
}
|
|
820
850
|
}
|
|
821
|
-
},
|
|
851
|
+
}, Oe = { key: 0 }, Ue = ["onClick"], Le = { class: "content" }, $e = {
|
|
822
852
|
key: 0,
|
|
823
853
|
class: "loading-container"
|
|
824
|
-
},
|
|
854
|
+
}, je = { key: 1 }, Be = { class: "container" }, He = { class: "d-flex justify-content-between align-items-center" }, Qe = { class: "progress-container" }, Je = { class: "progress-info" }, We = { class: "progress-bar" }, Ge = { class: "checklist" }, ze = ["onClick"], Ye = { key: 0 }, Ke = ["onClick"], Xe = ["onClick"], Ze = { key: 0 }, et = { class: "checklist" }, tt = { class: "checklist-item" }, st = { class: "attachment-area" }, it = {
|
|
825
855
|
key: 2,
|
|
826
856
|
class: "status"
|
|
827
|
-
},
|
|
857
|
+
}, nt = { class: "form-group" }, ot = { class: "form-group" }, lt = { class: "input-group" }, rt = { class: "form-group" }, at = { class: "form-group" }, dt = { class: "input-group" }, ut = { class: "form-group" }, ct = { class: "form-group" }, mt = { class: "input-group" }, vt = { class: "form-group" }, pt = { class: "form-group" }, ft = ["value"], ht = { class: "input-group" }, gt = { class: "form-group" }, bt = { class: "input-group" }, yt = { class: "form-group" }, wt = { class: "form-group" }, kt = { class: "form-group" }, _t = { class: "checkbox-group" }, Ct = { class: "checkbox-item" }, Dt = { class: "checkbox-item" }, xt = { class: "input-group" }, St = { class: "form-group" }, Pt = { class: "form-group" }, At = { class: "form-group" }, qt = { class: "attachment-area" }, Tt = { class: "action-buttons" }, It = ["disabled"], Rt = { class: "task-table-wrapper" }, Mt = { class: "table-controls" }, Vt = { class: "filters" }, Ft = { class: "task-table" }, Et = ["onClick"], Nt = ["onClick"], Ot = { key: 0 }, Ut = {
|
|
828
858
|
class: "alert alert-primary",
|
|
829
859
|
role: "alert"
|
|
830
|
-
},
|
|
860
|
+
}, Lt = { class: "mb-0" }, $t = {
|
|
831
861
|
class: "report-container",
|
|
832
862
|
ref: "reportContainer"
|
|
833
|
-
},
|
|
863
|
+
}, jt = { class: "report-info" }, Bt = { class: "info-box" }, Ht = { class: "info-box" }, Qt = { class: "info-box" }, Jt = { class: "section" }, Wt = { class: "summary-grid" }, Gt = { class: "summary-card" }, zt = { class: "summary-number" }, Yt = { class: "section" }, Kt = { class: "task-header" }, Xt = { class: "task-title" }, Zt = { class: "task-component" }, es = { class: "task-details" }, ts = { class: "detail-item" }, ss = { class: "detail-value" }, is = { class: "detail-item" }, ns = { class: "detail-value" }, os = { class: "detail-item" }, ls = { class: "detail-value" }, rs = { class: "detail-item" }, as = { class: "detail-value" }, ds = { class: "detail-item" }, us = { class: "detail-value" }, cs = { class: "detail-item" }, ms = { class: "detail-value" }, vs = {
|
|
834
864
|
key: 0,
|
|
835
865
|
style: { margin: "15px 0", padding: "10px", background: "white", "border-radius": "5px" }
|
|
836
|
-
},
|
|
866
|
+
}, ps = { class: "detail-value" }, fs = {
|
|
837
867
|
key: 1,
|
|
838
868
|
style: { margin: "15px 0", padding: "10px", background: "white", "border-radius": "5px" }
|
|
839
|
-
},
|
|
869
|
+
}, hs = { class: "detail-value" }, gs = {
|
|
840
870
|
key: 2,
|
|
841
871
|
class: "checklist-progress"
|
|
842
|
-
},
|
|
843
|
-
function
|
|
844
|
-
return n.ready ? (o(), l("div",
|
|
872
|
+
}, bs = { class: "progress-bar" }, ys = { style: { "font-size": "0.9em", color: "#666", "margin-top": "5px" } }, ws = { class: "checklist-items" }, ks = { class: "checklist-icon" }, _s = { class: "section" }, Cs = { class: "info-box" }, Ds = { class: "signature-section" }, xs = { class: "signature-box" }, Ss = { style: { "margin-top": "10px", color: "#666" } };
|
|
873
|
+
function Ps(s, t, u, b, n, a) {
|
|
874
|
+
return n.ready ? (o(), l("div", Oe, [
|
|
845
875
|
e("div", null, [
|
|
846
876
|
v(e("nav", null, [
|
|
847
|
-
(o(!0), l(p, null,
|
|
877
|
+
(o(!0), l(p, null, h(n.sections, (i) => (o(), l("button", {
|
|
848
878
|
key: i.id,
|
|
849
879
|
class: g(["nav-btn", { active: n.activeSection === i.id }]),
|
|
850
|
-
onClick: (
|
|
851
|
-
}, r(i.icon) + " " + r(i.name), 11,
|
|
880
|
+
onClick: (f) => a.handleSectionClick(i)
|
|
881
|
+
}, r(i.icon) + " " + r(i.name), 11, Ue))), 128))
|
|
852
882
|
], 512), [
|
|
853
883
|
[P, !n.showReport]
|
|
854
884
|
]),
|
|
855
|
-
v(e("div",
|
|
885
|
+
v(e("div", Le, [
|
|
856
886
|
v(e("section", {
|
|
857
887
|
class: g(["form-section", { active: n.activeSection === "maintenance" }])
|
|
858
888
|
}, [
|
|
859
889
|
t[37] || (t[37] = e("h2", null, "🛠️ Maintenance Tasks", -1)),
|
|
860
|
-
n.isLoading ? (o(), l("div",
|
|
890
|
+
n.isLoading ? (o(), l("div", $e, t[27] || (t[27] = [
|
|
861
891
|
e("div", { class: "loading-spinner" }, null, -1),
|
|
862
892
|
e("p", null, "Loading checklist...", -1)
|
|
863
893
|
]))) : m("", !0),
|
|
864
|
-
n.isLoading ? m("", !0) : (o(), l("form",
|
|
865
|
-
e("div",
|
|
866
|
-
e("div",
|
|
894
|
+
n.isLoading ? m("", !0) : (o(), l("form", je, [
|
|
895
|
+
e("div", Be, [
|
|
896
|
+
e("div", He, [
|
|
867
897
|
t[29] || (t[29] = e("h1", null, "Maintenance Checklist", -1)),
|
|
868
898
|
a.showAddTaskButton ? (o(), l("button", {
|
|
869
899
|
key: 0,
|
|
@@ -874,44 +904,44 @@ function Cs(s, t, u, b, n, a) {
|
|
|
874
904
|
e("i", { class: "fas fa-plus" }, null, -1)
|
|
875
905
|
]))) : m("", !0)
|
|
876
906
|
]),
|
|
877
|
-
e("div",
|
|
878
|
-
e("div",
|
|
879
|
-
e("div",
|
|
907
|
+
e("div", Qe, [
|
|
908
|
+
e("div", Je, " Progress: " + r(a.progress) + "% (" + r(a.completedCount.length) + "/" + r(n.checklists.length) + ") ", 1),
|
|
909
|
+
e("div", We, [
|
|
880
910
|
e("div", {
|
|
881
911
|
class: "progress-fill",
|
|
882
912
|
style: E({ width: a.progress + "%" })
|
|
883
913
|
}, null, 4)
|
|
884
914
|
])
|
|
885
915
|
]),
|
|
886
|
-
e("ul",
|
|
887
|
-
(o(!0), l(p, null,
|
|
916
|
+
e("ul", Ge, [
|
|
917
|
+
(o(!0), l(p, null, h(n.checklists, (i) => (o(), l("li", {
|
|
888
918
|
key: i.id,
|
|
889
919
|
class: "checklist-item"
|
|
890
920
|
}, [
|
|
891
921
|
e("div", {
|
|
892
922
|
class: g(["checkbox", { checked: i.completed }]),
|
|
893
|
-
onClick: (
|
|
923
|
+
onClick: (f) => a.toggleTask(i)
|
|
894
924
|
}, [
|
|
895
|
-
i.completed ? (o(), l("span",
|
|
896
|
-
], 10,
|
|
925
|
+
i.completed ? (o(), l("span", Ye, "✓")) : m("", !0)
|
|
926
|
+
], 10, ze),
|
|
897
927
|
e("span", {
|
|
898
928
|
class: g(["task-text", { completed: i.completed }]),
|
|
899
|
-
onClick: (
|
|
900
|
-
}, r(i.text), 11,
|
|
929
|
+
onClick: (f) => a.toggleTask(i)
|
|
930
|
+
}, r(i.text), 11, Ke),
|
|
901
931
|
a.showAddTaskButton ? (o(), l("button", {
|
|
902
932
|
key: 0,
|
|
903
933
|
class: "delete-btn",
|
|
904
|
-
onClick: (
|
|
934
|
+
onClick: (f) => a.deleteTask(i.id),
|
|
905
935
|
title: "Delete task"
|
|
906
936
|
}, t[30] || (t[30] = [
|
|
907
937
|
x('<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3,6 5,6 21,6"></polyline><path d="m19,6v14a2,2 0 0,1 -2,2H7a2,2 0 0,1 -2,-2V6m3,0V4a2,2 0 0,1 2,-2h4a2,2 0 0,1 2,2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg>', 1)
|
|
908
|
-
]), 8,
|
|
938
|
+
]), 8, Xe)) : m("", !0)
|
|
909
939
|
]))), 128))
|
|
910
940
|
]),
|
|
911
|
-
n.after ? (o(), l("div",
|
|
941
|
+
n.after ? (o(), l("div", Ze, [
|
|
912
942
|
t[33] || (t[33] = e("label", null, "Upload Image Evidence", -1)),
|
|
913
|
-
e("ul",
|
|
914
|
-
e("li",
|
|
943
|
+
e("ul", et, [
|
|
944
|
+
e("li", tt, [
|
|
915
945
|
t[32] || (t[32] = e("span", { class: "task-text" }, " Image Evidence Already Uploaded ", -1)),
|
|
916
946
|
e("button", {
|
|
917
947
|
type: "button",
|
|
@@ -929,7 +959,7 @@ function Cs(s, t, u, b, n, a) {
|
|
|
929
959
|
}, [
|
|
930
960
|
t[35] || (t[35] = e("label", null, "Upload Image Evidence", -1)),
|
|
931
961
|
t[36] || (t[36] = e("p", null, "You can only upload one image evidence here.", -1)),
|
|
932
|
-
e("div",
|
|
962
|
+
e("div", st, [
|
|
933
963
|
e("p", null, r(n.fileText), 1),
|
|
934
964
|
e("input", {
|
|
935
965
|
type: "file",
|
|
@@ -943,7 +973,7 @@ function Cs(s, t, u, b, n, a) {
|
|
|
943
973
|
}, "Browse Files", -1))
|
|
944
974
|
])
|
|
945
975
|
])),
|
|
946
|
-
a.completedCount === n.checklists.length ? (o(), l("div",
|
|
976
|
+
a.completedCount === n.checklists.length ? (o(), l("div", it, " All tasks completed! ✅ ")) : m("", !0),
|
|
947
977
|
e("button", {
|
|
948
978
|
class: "reset-button",
|
|
949
979
|
onClick: t[3] || (t[3] = D((...i) => a.resetTasks && a.resetTasks(...i), ["prevent"]))
|
|
@@ -958,7 +988,7 @@ function Cs(s, t, u, b, n, a) {
|
|
|
958
988
|
}, [
|
|
959
989
|
t[62] || (t[62] = e("h2", null, "📅 Maintenance Schedule", -1)),
|
|
960
990
|
e("form", null, [
|
|
961
|
-
e("div",
|
|
991
|
+
e("div", nt, [
|
|
962
992
|
t[38] || (t[38] = e("label", { for: "task-name" }, "Task Name", -1)),
|
|
963
993
|
v(e("input", {
|
|
964
994
|
type: "text",
|
|
@@ -966,21 +996,21 @@ function Cs(s, t, u, b, n, a) {
|
|
|
966
996
|
"onUpdate:modelValue": t[4] || (t[4] = (i) => n.form.taskName = i),
|
|
967
997
|
required: ""
|
|
968
998
|
}, null, 512), [
|
|
969
|
-
[
|
|
999
|
+
[k, n.form.taskName]
|
|
970
1000
|
])
|
|
971
1001
|
]),
|
|
972
|
-
e("div",
|
|
1002
|
+
e("div", ot, [
|
|
973
1003
|
t[39] || (t[39] = e("label", { for: "task-description" }, "Description", -1)),
|
|
974
1004
|
v(e("textarea", {
|
|
975
1005
|
id: "task-description",
|
|
976
1006
|
"onUpdate:modelValue": t[5] || (t[5] = (i) => n.form.description = i),
|
|
977
1007
|
required: ""
|
|
978
1008
|
}, null, 512), [
|
|
979
|
-
[
|
|
1009
|
+
[k, n.form.description]
|
|
980
1010
|
])
|
|
981
1011
|
]),
|
|
982
|
-
e("div",
|
|
983
|
-
e("div",
|
|
1012
|
+
e("div", lt, [
|
|
1013
|
+
e("div", rt, [
|
|
984
1014
|
t[41] || (t[41] = e("label", { for: "maintenance-type" }, "Maintenance Type", -1)),
|
|
985
1015
|
v(e("select", {
|
|
986
1016
|
id: "maintenance-type",
|
|
@@ -992,7 +1022,7 @@ function Cs(s, t, u, b, n, a) {
|
|
|
992
1022
|
[C, n.form.maintenanceType]
|
|
993
1023
|
])
|
|
994
1024
|
]),
|
|
995
|
-
e("div",
|
|
1025
|
+
e("div", at, [
|
|
996
1026
|
t[43] || (t[43] = e("label", { for: "component" }, "Component/System", -1)),
|
|
997
1027
|
v(e("select", {
|
|
998
1028
|
id: "component",
|
|
@@ -1010,12 +1040,12 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1010
1040
|
"onUpdate:modelValue": t[8] || (t[8] = (i) => n.form.customComponent = i),
|
|
1011
1041
|
style: { "margin-top": "8px" }
|
|
1012
1042
|
}, null, 512)), [
|
|
1013
|
-
[
|
|
1043
|
+
[k, n.form.customComponent]
|
|
1014
1044
|
]) : m("", !0)
|
|
1015
1045
|
])
|
|
1016
1046
|
]),
|
|
1017
|
-
e("div",
|
|
1018
|
-
e("div",
|
|
1047
|
+
e("div", dt, [
|
|
1048
|
+
e("div", ut, [
|
|
1019
1049
|
t[45] || (t[45] = e("label", { for: "priority" }, "Priority", -1)),
|
|
1020
1050
|
v(e("select", {
|
|
1021
1051
|
id: "priority",
|
|
@@ -1030,7 +1060,7 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1030
1060
|
[C, n.form.priority]
|
|
1031
1061
|
])
|
|
1032
1062
|
]),
|
|
1033
|
-
e("div",
|
|
1063
|
+
e("div", ct, [
|
|
1034
1064
|
t[46] || (t[46] = e("label", { for: "status" }, "Status", -1)),
|
|
1035
1065
|
v(e("input", {
|
|
1036
1066
|
type: "text",
|
|
@@ -1038,12 +1068,12 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1038
1068
|
"onUpdate:modelValue": t[10] || (t[10] = (i) => n.form.status = i),
|
|
1039
1069
|
readonly: ""
|
|
1040
1070
|
}, null, 512), [
|
|
1041
|
-
[
|
|
1071
|
+
[k, n.form.status]
|
|
1042
1072
|
])
|
|
1043
1073
|
])
|
|
1044
1074
|
]),
|
|
1045
|
-
e("div",
|
|
1046
|
-
e("div",
|
|
1075
|
+
e("div", mt, [
|
|
1076
|
+
e("div", vt, [
|
|
1047
1077
|
t[47] || (t[47] = e("label", { for: "estimated-hours" }, "Estimated Hours", -1)),
|
|
1048
1078
|
v(e("input", {
|
|
1049
1079
|
type: "number",
|
|
@@ -1052,27 +1082,27 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1052
1082
|
min: "0",
|
|
1053
1083
|
step: "0.5"
|
|
1054
1084
|
}, null, 512), [
|
|
1055
|
-
[
|
|
1085
|
+
[k, n.form.estimatedHours]
|
|
1056
1086
|
])
|
|
1057
1087
|
])
|
|
1058
1088
|
]),
|
|
1059
|
-
e("div",
|
|
1089
|
+
e("div", pt, [
|
|
1060
1090
|
t[49] || (t[49] = e("label", { for: "assigned-to" }, "Assigned To", -1)),
|
|
1061
1091
|
v(e("select", {
|
|
1062
1092
|
id: "assigned-to",
|
|
1063
1093
|
"onUpdate:modelValue": t[12] || (t[12] = (i) => n.form.assignedTo = i)
|
|
1064
1094
|
}, [
|
|
1065
1095
|
t[48] || (t[48] = e("option", { value: "" }, "-- Select Personnel --", -1)),
|
|
1066
|
-
(o(!0), l(p, null,
|
|
1096
|
+
(o(!0), l(p, null, h(u.vesselCrew, (i) => (o(), l("option", {
|
|
1067
1097
|
key: i.id,
|
|
1068
1098
|
value: `${i.name} - ${i.role}`
|
|
1069
|
-
}, r(i.name) + " - " + r(i.role), 9,
|
|
1099
|
+
}, r(i.name) + " - " + r(i.role), 9, ft))), 128))
|
|
1070
1100
|
], 512), [
|
|
1071
1101
|
[C, n.form.assignedTo]
|
|
1072
1102
|
])
|
|
1073
1103
|
]),
|
|
1074
|
-
e("div",
|
|
1075
|
-
e("div",
|
|
1104
|
+
e("div", ht, [
|
|
1105
|
+
e("div", gt, [
|
|
1076
1106
|
t[51] || (t[51] = e("label", { for: "recurrence-type" }, "Recurrence", -1)),
|
|
1077
1107
|
v(e("select", {
|
|
1078
1108
|
id: "recurrence-type",
|
|
@@ -1085,18 +1115,18 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1085
1115
|
])
|
|
1086
1116
|
])
|
|
1087
1117
|
]),
|
|
1088
|
-
e("div",
|
|
1089
|
-
e("div",
|
|
1118
|
+
e("div", bt, [
|
|
1119
|
+
e("div", yt, [
|
|
1090
1120
|
t[52] || (t[52] = e("label", { for: "last-performed" }, "Last Performed Date", -1)),
|
|
1091
1121
|
v(e("input", {
|
|
1092
1122
|
type: "date",
|
|
1093
1123
|
id: "last-performed",
|
|
1094
1124
|
"onUpdate:modelValue": t[14] || (t[14] = (i) => n.form.lastPerformed = i)
|
|
1095
1125
|
}, null, 512), [
|
|
1096
|
-
[
|
|
1126
|
+
[k, n.form.lastPerformed]
|
|
1097
1127
|
])
|
|
1098
1128
|
]),
|
|
1099
|
-
e("div",
|
|
1129
|
+
e("div", wt, [
|
|
1100
1130
|
t[53] || (t[53] = e("label", { for: "next-due" }, "Due Date", -1)),
|
|
1101
1131
|
v(e("input", {
|
|
1102
1132
|
type: "date",
|
|
@@ -1104,14 +1134,14 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1104
1134
|
"onUpdate:modelValue": t[15] || (t[15] = (i) => n.form.nextDue = i),
|
|
1105
1135
|
required: ""
|
|
1106
1136
|
}, null, 512), [
|
|
1107
|
-
[
|
|
1137
|
+
[k, n.form.nextDue]
|
|
1108
1138
|
])
|
|
1109
1139
|
])
|
|
1110
1140
|
]),
|
|
1111
|
-
e("div",
|
|
1141
|
+
e("div", kt, [
|
|
1112
1142
|
t[56] || (t[56] = e("label", null, "Notifications", -1)),
|
|
1113
|
-
e("div",
|
|
1114
|
-
e("div",
|
|
1143
|
+
e("div", _t, [
|
|
1144
|
+
e("div", Ct, [
|
|
1115
1145
|
v(e("input", {
|
|
1116
1146
|
type: "checkbox",
|
|
1117
1147
|
id: "notify-email",
|
|
@@ -1121,7 +1151,7 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1121
1151
|
]),
|
|
1122
1152
|
t[54] || (t[54] = e("label", { for: "notify-email" }, "Email Notification", -1))
|
|
1123
1153
|
]),
|
|
1124
|
-
e("div",
|
|
1154
|
+
e("div", Dt, [
|
|
1125
1155
|
v(e("input", {
|
|
1126
1156
|
type: "checkbox",
|
|
1127
1157
|
id: "notify-sms",
|
|
@@ -1133,8 +1163,8 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1133
1163
|
])
|
|
1134
1164
|
])
|
|
1135
1165
|
]),
|
|
1136
|
-
e("div",
|
|
1137
|
-
e("div",
|
|
1166
|
+
e("div", xt, [
|
|
1167
|
+
e("div", St, [
|
|
1138
1168
|
t[58] || (t[58] = e("label", { for: "reminder-days" }, "Reminder (Days Before)", -1)),
|
|
1139
1169
|
v(e("select", {
|
|
1140
1170
|
id: "reminder-days",
|
|
@@ -1146,18 +1176,18 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1146
1176
|
])
|
|
1147
1177
|
])
|
|
1148
1178
|
]),
|
|
1149
|
-
e("div",
|
|
1179
|
+
e("div", Pt, [
|
|
1150
1180
|
t[59] || (t[59] = e("label", { for: "schedule-notes" }, "Notes", -1)),
|
|
1151
1181
|
v(e("textarea", {
|
|
1152
1182
|
id: "schedule-notes",
|
|
1153
1183
|
"onUpdate:modelValue": t[19] || (t[19] = (i) => n.form.notes = i)
|
|
1154
1184
|
}, null, 512), [
|
|
1155
|
-
[
|
|
1185
|
+
[k, n.form.notes]
|
|
1156
1186
|
])
|
|
1157
1187
|
]),
|
|
1158
|
-
e("div",
|
|
1188
|
+
e("div", At, [
|
|
1159
1189
|
t[61] || (t[61] = e("label", null, "Attachments", -1)),
|
|
1160
|
-
e("div",
|
|
1190
|
+
e("div", qt, [
|
|
1161
1191
|
e("p", null, r(n.imgText), 1),
|
|
1162
1192
|
e("input", {
|
|
1163
1193
|
type: "file",
|
|
@@ -1172,13 +1202,13 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1172
1202
|
}, "Browse Files", -1))
|
|
1173
1203
|
])
|
|
1174
1204
|
]),
|
|
1175
|
-
e("div",
|
|
1205
|
+
e("div", Tt, [
|
|
1176
1206
|
e("button", {
|
|
1177
1207
|
type: "button",
|
|
1178
1208
|
class: "btn btn-primary",
|
|
1179
1209
|
onClick: t[21] || (t[21] = D((...i) => a.saveSchedule && a.saveSchedule(...i), ["prevent"])),
|
|
1180
1210
|
disabled: n.isSaving
|
|
1181
|
-
}, r(n.isSaving ? "Saving..." : "Save Schedule"), 9,
|
|
1211
|
+
}, r(n.isSaving ? "Saving..." : "Save Schedule"), 9, It)
|
|
1182
1212
|
])
|
|
1183
1213
|
])
|
|
1184
1214
|
], 2), [
|
|
@@ -1188,9 +1218,9 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1188
1218
|
class: g(["form-section", { active: n.activeSection === "inventory" }])
|
|
1189
1219
|
}, [
|
|
1190
1220
|
t[68] || (t[68] = e("h2", null, "All Maintenance", -1)),
|
|
1191
|
-
e("div",
|
|
1192
|
-
e("div",
|
|
1193
|
-
e("div",
|
|
1221
|
+
e("div", Rt, [
|
|
1222
|
+
e("div", Mt, [
|
|
1223
|
+
e("div", Vt, [
|
|
1194
1224
|
e("button", {
|
|
1195
1225
|
class: g({ active: n.activeFilter === "due" }),
|
|
1196
1226
|
onClick: t[22] || (t[22] = (i) => a.setFilter("due"))
|
|
@@ -1208,11 +1238,11 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1208
1238
|
"onUpdate:modelValue": t[25] || (t[25] = (i) => n.searchQuery = i),
|
|
1209
1239
|
placeholder: "Search..."
|
|
1210
1240
|
}, null, 512), [
|
|
1211
|
-
[
|
|
1241
|
+
[k, n.searchQuery]
|
|
1212
1242
|
])
|
|
1213
1243
|
])
|
|
1214
1244
|
]),
|
|
1215
|
-
e("table",
|
|
1245
|
+
e("table", Ft, [
|
|
1216
1246
|
t[63] || (t[63] = e("thead", null, [
|
|
1217
1247
|
e("tr", null, [
|
|
1218
1248
|
e("th", null, "Equipment"),
|
|
@@ -1226,7 +1256,7 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1226
1256
|
])
|
|
1227
1257
|
], -1)),
|
|
1228
1258
|
e("tbody", null, [
|
|
1229
|
-
(o(!0), l(p, null,
|
|
1259
|
+
(o(!0), l(p, null, h(a.filteredTasks, (i) => (o(), l("tr", {
|
|
1230
1260
|
key: i.id
|
|
1231
1261
|
}, [
|
|
1232
1262
|
e("td", null, r(i.component), 1),
|
|
@@ -1243,23 +1273,23 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1243
1273
|
e("td", null, [
|
|
1244
1274
|
i.status === "Completed" ? (o(), l("button", {
|
|
1245
1275
|
key: 0,
|
|
1246
|
-
onClick: (
|
|
1276
|
+
onClick: (f) => a.printMaintenance(i.component),
|
|
1247
1277
|
class: "status-action"
|
|
1248
|
-
}, "Print", 8,
|
|
1278
|
+
}, "Print", 8, Et)) : (o(), l("button", {
|
|
1249
1279
|
key: 1,
|
|
1250
|
-
onClick: (
|
|
1280
|
+
onClick: (f) => a.showMaintenance(i.component),
|
|
1251
1281
|
class: "status-action"
|
|
1252
|
-
}, "Start", 8,
|
|
1282
|
+
}, "Start", 8, Nt))
|
|
1253
1283
|
])
|
|
1254
1284
|
]))), 128))
|
|
1255
1285
|
])
|
|
1256
1286
|
]),
|
|
1257
|
-
u.tasks.length ? m("", !0) : (o(), l("div",
|
|
1258
|
-
e("div",
|
|
1287
|
+
u.tasks.length ? m("", !0) : (o(), l("div", Ot, [
|
|
1288
|
+
e("div", Ut, [
|
|
1259
1289
|
t[65] || (t[65] = e("h4", { class: "alert-heading" }, "Such Empty!!!", -1)),
|
|
1260
1290
|
t[66] || (t[66] = e("p", null, "You have no maintenance, because you have not scheduled any for this ship.", -1)),
|
|
1261
1291
|
t[67] || (t[67] = e("hr", null, null, -1)),
|
|
1262
|
-
e("p",
|
|
1292
|
+
e("p", Lt, [
|
|
1263
1293
|
t[64] || (t[64] = _("Navigate to the schedule tab, to start scheduling. Or click on this button to ", -1)),
|
|
1264
1294
|
e("button", {
|
|
1265
1295
|
type: "button",
|
|
@@ -1276,20 +1306,20 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1276
1306
|
], 512), [
|
|
1277
1307
|
[P, !n.showReport]
|
|
1278
1308
|
]),
|
|
1279
|
-
v(e("div",
|
|
1309
|
+
v(e("div", $t, [
|
|
1280
1310
|
t[89] || (t[89] = e("div", { class: "header" }, [
|
|
1281
1311
|
e("div", { class: "report-title" }, "MAINTENANCE TASK REPORT")
|
|
1282
1312
|
], -1)),
|
|
1283
|
-
e("div",
|
|
1284
|
-
e("div",
|
|
1313
|
+
e("div", jt, [
|
|
1314
|
+
e("div", Bt, [
|
|
1285
1315
|
t[69] || (t[69] = e("div", { class: "info-label" }, "Report Generated:", -1)),
|
|
1286
1316
|
e("div", null, r(n.reportDate), 1)
|
|
1287
1317
|
]),
|
|
1288
|
-
e("div",
|
|
1318
|
+
e("div", Ht, [
|
|
1289
1319
|
t[70] || (t[70] = e("div", { class: "info-label" }, "Report ID:", -1)),
|
|
1290
1320
|
e("div", null, r(n.reportId), 1)
|
|
1291
1321
|
]),
|
|
1292
|
-
e("div",
|
|
1322
|
+
e("div", Qt, [
|
|
1293
1323
|
t[71] || (t[71] = e("div", { class: "info-label" }, "Total Tasks:", -1)),
|
|
1294
1324
|
e("div", null, r(n.maintenanceTasks.length), 1)
|
|
1295
1325
|
]),
|
|
@@ -1298,111 +1328,111 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1298
1328
|
e("div", null, "OceanHelm System")
|
|
1299
1329
|
], -1))
|
|
1300
1330
|
]),
|
|
1301
|
-
e("div",
|
|
1331
|
+
e("div", Jt, [
|
|
1302
1332
|
t[75] || (t[75] = e("div", { class: "section-title" }, "📊 Task Summary", -1)),
|
|
1303
|
-
e("div",
|
|
1333
|
+
e("div", Wt, [
|
|
1304
1334
|
t[74] || (t[74] = x('<div class="summary-card"><div class="summary-number">1</div><div class="summary-label">Completed</div></div><div class="summary-card"><div class="summary-number">0</div><div class="summary-label">Pending</div></div><div class="summary-card"><div class="summary-number">0</div><div class="summary-label">Overdue</div></div>', 3)),
|
|
1305
|
-
e("div",
|
|
1306
|
-
e("div",
|
|
1335
|
+
e("div", Gt, [
|
|
1336
|
+
e("div", zt, r(a.totalEstimatedHours), 1),
|
|
1307
1337
|
t[73] || (t[73] = e("div", { class: "summary-label" }, "Total Hours", -1))
|
|
1308
1338
|
])
|
|
1309
1339
|
])
|
|
1310
1340
|
]),
|
|
1311
|
-
e("div",
|
|
1341
|
+
e("div", Yt, [
|
|
1312
1342
|
t[85] || (t[85] = e("div", { class: "section-title" }, "🔧 Maintenance Tasks", -1)),
|
|
1313
|
-
(o(!0), l(p, null,
|
|
1343
|
+
(o(!0), l(p, null, h(n.maintenanceTasks, (i) => (o(), l("div", {
|
|
1314
1344
|
key: i.taskName,
|
|
1315
1345
|
class: g(["task-item", a.getTaskStatusClass(i)])
|
|
1316
1346
|
}, [
|
|
1317
|
-
e("div",
|
|
1347
|
+
e("div", Kt, [
|
|
1318
1348
|
e("div", null, [
|
|
1319
|
-
e("div",
|
|
1349
|
+
e("div", Xt, [
|
|
1320
1350
|
_(r(i.taskName) + " ", 1),
|
|
1321
1351
|
e("span", {
|
|
1322
1352
|
class: g(["maintenance-type", "type-" + i.maintenanceType])
|
|
1323
1353
|
}, r(i.maintenanceType), 3)
|
|
1324
1354
|
]),
|
|
1325
|
-
e("div",
|
|
1355
|
+
e("div", Zt, "Component: " + r(i.component), 1)
|
|
1326
1356
|
]),
|
|
1327
1357
|
e("span", {
|
|
1328
1358
|
class: g(["status-badge", "status-" + i.status.toLowerCase().replace(" ", "-")])
|
|
1329
1359
|
}, r(i.status), 3)
|
|
1330
1360
|
]),
|
|
1331
|
-
e("div",
|
|
1332
|
-
e("div",
|
|
1361
|
+
e("div", es, [
|
|
1362
|
+
e("div", ts, [
|
|
1333
1363
|
t[76] || (t[76] = e("div", { class: "detail-label" }, "Assigned To", -1)),
|
|
1334
|
-
e("div",
|
|
1364
|
+
e("div", ss, r(i.assignedTo), 1)
|
|
1335
1365
|
]),
|
|
1336
|
-
e("div",
|
|
1366
|
+
e("div", is, [
|
|
1337
1367
|
t[77] || (t[77] = e("div", { class: "detail-label" }, "Estimated Hours", -1)),
|
|
1338
|
-
e("div",
|
|
1368
|
+
e("div", ns, r(i.estimatedHours) + " hours", 1)
|
|
1339
1369
|
]),
|
|
1340
|
-
e("div",
|
|
1370
|
+
e("div", os, [
|
|
1341
1371
|
t[78] || (t[78] = e("div", { class: "detail-label" }, "Last Performed", -1)),
|
|
1342
|
-
e("div",
|
|
1372
|
+
e("div", ls, r(a.formatDate(i.lastPerformed)), 1)
|
|
1343
1373
|
]),
|
|
1344
|
-
e("div",
|
|
1374
|
+
e("div", rs, [
|
|
1345
1375
|
t[79] || (t[79] = e("div", { class: "detail-label" }, "Next Due", -1)),
|
|
1346
|
-
e("div",
|
|
1376
|
+
e("div", as, r(a.formatDate(i.nextDue)), 1)
|
|
1347
1377
|
]),
|
|
1348
|
-
e("div",
|
|
1378
|
+
e("div", ds, [
|
|
1349
1379
|
t[80] || (t[80] = e("div", { class: "detail-label" }, "Recurrence", -1)),
|
|
1350
|
-
e("div",
|
|
1380
|
+
e("div", us, r(i.recurrence), 1)
|
|
1351
1381
|
]),
|
|
1352
|
-
e("div",
|
|
1382
|
+
e("div", cs, [
|
|
1353
1383
|
t[81] || (t[81] = e("div", { class: "detail-label" }, "Remaining Days", -1)),
|
|
1354
|
-
e("div",
|
|
1384
|
+
e("div", ms, r(i.remainingDays) + " days", 1)
|
|
1355
1385
|
])
|
|
1356
1386
|
]),
|
|
1357
|
-
i.description ? (o(), l("div",
|
|
1387
|
+
i.description ? (o(), l("div", vs, [
|
|
1358
1388
|
t[82] || (t[82] = e("div", { class: "detail-label" }, "Description", -1)),
|
|
1359
|
-
e("div",
|
|
1389
|
+
e("div", ps, r(i.description), 1)
|
|
1360
1390
|
])) : m("", !0),
|
|
1361
|
-
i.notes ? (o(), l("div",
|
|
1391
|
+
i.notes ? (o(), l("div", fs, [
|
|
1362
1392
|
t[83] || (t[83] = e("div", { class: "detail-label" }, "Notes", -1)),
|
|
1363
|
-
e("div",
|
|
1393
|
+
e("div", hs, r(i.notes), 1)
|
|
1364
1394
|
])) : m("", !0),
|
|
1365
|
-
i.checklistProgress && i.checklistProgress.length > 0 ? (o(), l("div",
|
|
1395
|
+
i.checklistProgress && i.checklistProgress.length > 0 ? (o(), l("div", gs, [
|
|
1366
1396
|
t[84] || (t[84] = e("div", { class: "detail-label" }, "Checklist Progress", -1)),
|
|
1367
|
-
e("div",
|
|
1397
|
+
e("div", bs, [
|
|
1368
1398
|
e("div", {
|
|
1369
1399
|
class: "progress-fill",
|
|
1370
1400
|
style: E({ width: a.getChecklistProgress(i) + "%" })
|
|
1371
1401
|
}, null, 4)
|
|
1372
1402
|
]),
|
|
1373
|
-
e("div",
|
|
1374
|
-
e("div",
|
|
1375
|
-
(o(!0), l(p, null,
|
|
1376
|
-
key:
|
|
1403
|
+
e("div", ys, r(a.getCompletedChecklistItems(i)) + " of " + r(i.checklistProgress.length) + " items completed (" + r(a.getChecklistProgress(i)) + "%) ", 1),
|
|
1404
|
+
e("div", ws, [
|
|
1405
|
+
(o(!0), l(p, null, h(i.checklistProgress, (f, y) => (o(), l("div", {
|
|
1406
|
+
key: y,
|
|
1377
1407
|
class: "checklist-item"
|
|
1378
1408
|
}, [
|
|
1379
|
-
e("span",
|
|
1380
|
-
e("span", null, r(
|
|
1409
|
+
e("span", ks, r(f.completed ? "✅" : "⭕"), 1),
|
|
1410
|
+
e("span", null, r(f.text || "Checklist Item " + (y + 1)), 1)
|
|
1381
1411
|
]))), 128))
|
|
1382
1412
|
])
|
|
1383
1413
|
])) : m("", !0)
|
|
1384
1414
|
], 2))), 128))
|
|
1385
1415
|
]),
|
|
1386
|
-
e("div",
|
|
1416
|
+
e("div", _s, [
|
|
1387
1417
|
t[86] || (t[86] = e("div", { class: "section-title" }, "📋 Recommendations", -1)),
|
|
1388
|
-
e("div",
|
|
1418
|
+
e("div", Cs, [
|
|
1389
1419
|
e("ul", null, [
|
|
1390
|
-
(o(!0), l(p, null,
|
|
1420
|
+
(o(!0), l(p, null, h(a.generateRecommendations(), (i) => (o(), l("li", { key: i }, r(i), 1))), 128))
|
|
1391
1421
|
])
|
|
1392
1422
|
])
|
|
1393
1423
|
]),
|
|
1394
|
-
e("div",
|
|
1424
|
+
e("div", Ds, [
|
|
1395
1425
|
t[88] || (t[88] = e("div", { class: "signature-box" }, [
|
|
1396
1426
|
e("div", null, [
|
|
1397
1427
|
e("strong", null, "Report Generated By")
|
|
1398
1428
|
]),
|
|
1399
1429
|
e("div", { style: { "margin-top": "10px", color: "#666" } }, "OceanHelm Maintenance System")
|
|
1400
1430
|
], -1)),
|
|
1401
|
-
e("div",
|
|
1431
|
+
e("div", xs, [
|
|
1402
1432
|
t[87] || (t[87] = e("div", null, [
|
|
1403
1433
|
e("strong", null, "Date")
|
|
1404
1434
|
], -1)),
|
|
1405
|
-
e("div",
|
|
1435
|
+
e("div", Ss, r(n.reportDate), 1)
|
|
1406
1436
|
])
|
|
1407
1437
|
])
|
|
1408
1438
|
], 512), [
|
|
@@ -1411,8 +1441,8 @@ function Cs(s, t, u, b, n, a) {
|
|
|
1411
1441
|
])
|
|
1412
1442
|
])) : m("", !0);
|
|
1413
1443
|
}
|
|
1414
|
-
const
|
|
1415
|
-
const
|
|
1444
|
+
const As = /* @__PURE__ */ S(Ne, [["render", Ps]]);
|
|
1445
|
+
const qs = {
|
|
1416
1446
|
name: "ActivityLogs",
|
|
1417
1447
|
props: {
|
|
1418
1448
|
loading: Boolean,
|
|
@@ -1442,23 +1472,23 @@ const xs = {
|
|
|
1442
1472
|
}[s] || "badge-view";
|
|
1443
1473
|
}
|
|
1444
1474
|
}
|
|
1445
|
-
},
|
|
1475
|
+
}, Ts = { class: "activity-logs" }, Is = { class: "a-controls" }, Rs = { class: "a-search-box" }, Ms = ["value"], Vs = ["value"], Fs = { class: "stats-grid" }, Es = { class: "stat-card" }, Ns = { class: "value" }, Os = { class: "stat-card" }, Us = { class: "value" }, Ls = { class: "stat-card" }, $s = { class: "value" }, js = { class: "logs-container" }, Bs = {
|
|
1446
1476
|
key: 0,
|
|
1447
1477
|
class: "loading"
|
|
1448
|
-
},
|
|
1478
|
+
}, Hs = {
|
|
1449
1479
|
key: 1,
|
|
1450
1480
|
class: "no-logs"
|
|
1451
|
-
},
|
|
1452
|
-
function
|
|
1453
|
-
return o(), l("div",
|
|
1454
|
-
e("div",
|
|
1455
|
-
e("div",
|
|
1481
|
+
}, Qs = { key: 2 }, Js = { class: "logs-table" }, Ws = { style: { color: "gray" } }, Gs = { style: { color: "gray" } }, zs = { class: "pagination" }, Ys = ["disabled"], Ks = ["onClick"], Xs = ["disabled"];
|
|
1482
|
+
function Zs(s, t, u, b, n, a) {
|
|
1483
|
+
return o(), l("div", Ts, [
|
|
1484
|
+
e("div", Is, [
|
|
1485
|
+
e("div", Rs, [
|
|
1456
1486
|
e("input", {
|
|
1457
1487
|
type: "text",
|
|
1458
1488
|
placeholder: "Search activities, users, or actions...",
|
|
1459
1489
|
value: u.searchTerm,
|
|
1460
1490
|
onInput: t[0] || (t[0] = (i) => s.$emit("update:searchTerm", i.target.value))
|
|
1461
|
-
}, null, 40,
|
|
1491
|
+
}, null, 40, Ms)
|
|
1462
1492
|
]),
|
|
1463
1493
|
e("select", {
|
|
1464
1494
|
class: "filter-select",
|
|
@@ -1466,7 +1496,7 @@ function zs(s, t, u, b, n, a) {
|
|
|
1466
1496
|
onChange: t[1] || (t[1] = (i) => s.$emit("update:selectedFilter", i.target.value))
|
|
1467
1497
|
}, t[6] || (t[6] = [
|
|
1468
1498
|
x('<option value="all">All Activities</option><option value="login">Login</option><option value="logout">Logout</option><option value="create">Create</option><option value="update">Update</option><option value="delete">Delete</option><option value="view">View</option>', 7)
|
|
1469
|
-
]), 40,
|
|
1499
|
+
]), 40, Vs),
|
|
1470
1500
|
e("button", {
|
|
1471
1501
|
class: "btn btn-primary",
|
|
1472
1502
|
onClick: t[2] || (t[2] = (i) => s.$emit("refresh"))
|
|
@@ -1476,33 +1506,33 @@ function zs(s, t, u, b, n, a) {
|
|
|
1476
1506
|
onClick: t[3] || (t[3] = (i) => s.$emit("download"))
|
|
1477
1507
|
}, "📥 Download Report")
|
|
1478
1508
|
]),
|
|
1479
|
-
e("div",
|
|
1480
|
-
e("div",
|
|
1509
|
+
e("div", Fs, [
|
|
1510
|
+
e("div", Es, [
|
|
1481
1511
|
t[7] || (t[7] = e("h3", null, "Total Activities", -1)),
|
|
1482
|
-
e("div",
|
|
1512
|
+
e("div", Ns, r(u.totalActivities), 1)
|
|
1483
1513
|
]),
|
|
1484
|
-
e("div",
|
|
1514
|
+
e("div", Os, [
|
|
1485
1515
|
t[8] || (t[8] = e("h3", null, "Today's Activities", -1)),
|
|
1486
|
-
e("div",
|
|
1516
|
+
e("div", Us, r(u.todayActivities), 1)
|
|
1487
1517
|
]),
|
|
1488
|
-
e("div",
|
|
1518
|
+
e("div", Ls, [
|
|
1489
1519
|
t[9] || (t[9] = e("h3", null, "Active Users", -1)),
|
|
1490
|
-
e("div",
|
|
1520
|
+
e("div", $s, r(u.activeUsers), 1)
|
|
1491
1521
|
]),
|
|
1492
1522
|
t[10] || (t[10] = e("div", { class: "stat-card" }, [
|
|
1493
1523
|
e("h3", null, "Important"),
|
|
1494
1524
|
e("div", { class: "badge-danger" }, " Logs are deleted at the end of every month, please download a copy ")
|
|
1495
1525
|
], -1))
|
|
1496
1526
|
]),
|
|
1497
|
-
e("div",
|
|
1498
|
-
u.loading ? (o(), l("div",
|
|
1527
|
+
e("div", js, [
|
|
1528
|
+
u.loading ? (o(), l("div", Bs, t[11] || (t[11] = [
|
|
1499
1529
|
e("div", { class: "spinner" }, null, -1),
|
|
1500
1530
|
e("p", null, "Loading activity logs...", -1)
|
|
1501
|
-
]))) : u.logs.length === 0 ? (o(), l("div",
|
|
1531
|
+
]))) : u.logs.length === 0 ? (o(), l("div", Hs, t[12] || (t[12] = [
|
|
1502
1532
|
e("h3", null, "No activities found", -1),
|
|
1503
1533
|
e("p", null, "Try adjusting your search or filter criteria", -1)
|
|
1504
|
-
]))) : (o(), l("div",
|
|
1505
|
-
e("table",
|
|
1534
|
+
]))) : (o(), l("div", Qs, [
|
|
1535
|
+
e("table", Js, [
|
|
1506
1536
|
t[13] || (t[13] = e("thead", null, [
|
|
1507
1537
|
e("tr", null, [
|
|
1508
1538
|
e("th", null, "Timestamp"),
|
|
@@ -1513,13 +1543,13 @@ function zs(s, t, u, b, n, a) {
|
|
|
1513
1543
|
])
|
|
1514
1544
|
], -1)),
|
|
1515
1545
|
e("tbody", null, [
|
|
1516
|
-
(o(!0), l(p, null,
|
|
1546
|
+
(o(!0), l(p, null, h(u.paginatedLogs, (i) => (o(), l("tr", {
|
|
1517
1547
|
key: i.id
|
|
1518
1548
|
}, [
|
|
1519
1549
|
e("td", null, r(a.formatDate(i.timestamp)), 1),
|
|
1520
1550
|
e("td", null, [
|
|
1521
1551
|
e("div", null, r(i.user_name), 1),
|
|
1522
|
-
e("small",
|
|
1552
|
+
e("small", Ws, r(i.email), 1)
|
|
1523
1553
|
]),
|
|
1524
1554
|
e("td", null, [
|
|
1525
1555
|
e("span", {
|
|
@@ -1528,36 +1558,36 @@ function zs(s, t, u, b, n, a) {
|
|
|
1528
1558
|
]),
|
|
1529
1559
|
e("td", null, [
|
|
1530
1560
|
_(r(i.details.status) + " ", 1),
|
|
1531
|
-
(o(!0), l(p, null,
|
|
1532
|
-
e("strong", null, r(
|
|
1533
|
-
e("small",
|
|
1561
|
+
(o(!0), l(p, null, h(i.details.information, (f, y) => (o(), l("div", { key: y }, [
|
|
1562
|
+
e("strong", null, r(y) + ": ", 1),
|
|
1563
|
+
e("small", Gs, r(f.from || "") + " → " + r(f.to || f), 1)
|
|
1534
1564
|
]))), 128))
|
|
1535
1565
|
]),
|
|
1536
1566
|
e("td", null, r(i.table_name), 1)
|
|
1537
1567
|
]))), 128))
|
|
1538
1568
|
])
|
|
1539
1569
|
]),
|
|
1540
|
-
e("div",
|
|
1570
|
+
e("div", zs, [
|
|
1541
1571
|
e("button", {
|
|
1542
1572
|
onClick: t[4] || (t[4] = (i) => s.$emit("change-page", u.currentPage - 1)),
|
|
1543
1573
|
disabled: u.currentPage === 1
|
|
1544
|
-
}, " Previous ", 8,
|
|
1545
|
-
(o(!0), l(p, null,
|
|
1574
|
+
}, " Previous ", 8, Ys),
|
|
1575
|
+
(o(!0), l(p, null, h(u.totalPages, (i) => (o(), l("button", {
|
|
1546
1576
|
key: i,
|
|
1547
|
-
onClick: (
|
|
1577
|
+
onClick: (f) => s.$emit("change-page", i),
|
|
1548
1578
|
class: g({ active: u.currentPage === i })
|
|
1549
|
-
}, r(i), 11,
|
|
1579
|
+
}, r(i), 11, Ks))), 128)),
|
|
1550
1580
|
e("button", {
|
|
1551
1581
|
onClick: t[5] || (t[5] = (i) => s.$emit("change-page", u.currentPage + 1)),
|
|
1552
1582
|
disabled: u.currentPage === u.totalPages
|
|
1553
|
-
}, " Next ", 8,
|
|
1583
|
+
}, " Next ", 8, Xs)
|
|
1554
1584
|
])
|
|
1555
1585
|
]))
|
|
1556
1586
|
])
|
|
1557
1587
|
]);
|
|
1558
1588
|
}
|
|
1559
|
-
const
|
|
1560
|
-
const
|
|
1589
|
+
const ei = /* @__PURE__ */ S(qs, [["render", Zs]]);
|
|
1590
|
+
const ti = {
|
|
1561
1591
|
name: "CrewManagement",
|
|
1562
1592
|
props: {
|
|
1563
1593
|
// Required props
|
|
@@ -1779,39 +1809,39 @@ const Ks = {
|
|
|
1779
1809
|
return b.setMonth(u.getMonth() + 1), t <= u ? "expired" : t <= b ? "expiringSoon" : "valid";
|
|
1780
1810
|
}
|
|
1781
1811
|
}
|
|
1782
|
-
},
|
|
1812
|
+
}, si = { class: "crew-management" }, ii = {
|
|
1783
1813
|
key: 0,
|
|
1784
1814
|
class: "wave-bg"
|
|
1785
|
-
},
|
|
1815
|
+
}, ni = { class: "crew-section" }, oi = { class: "crew-section-header" }, li = { class: "search-filter" }, ri = {
|
|
1786
1816
|
key: 0,
|
|
1787
1817
|
class: "loading-state"
|
|
1788
|
-
},
|
|
1818
|
+
}, ai = {
|
|
1789
1819
|
key: 1,
|
|
1790
1820
|
class: "crew-grid"
|
|
1791
|
-
},
|
|
1821
|
+
}, di = { class: "crew-name" }, ui = { class: "crew-role" }, ci = { class: "crew-certifications" }, mi = ["onClick"], vi = ["onClick"], pi = { class: "crew-availability" }, fi = { class: "crew-availability" }, hi = { class: "action-buttons" }, gi = {
|
|
1792
1822
|
key: 0,
|
|
1793
1823
|
class: "status-available crew-availability vcard"
|
|
1794
|
-
},
|
|
1824
|
+
}, bi = {
|
|
1795
1825
|
key: 1,
|
|
1796
1826
|
class: "status-unavailable crew-availability vcard"
|
|
1797
|
-
},
|
|
1827
|
+
}, yi = ["onClick"], wi = ["onClick"], ki = {
|
|
1798
1828
|
key: 2,
|
|
1799
1829
|
class: "no-results"
|
|
1800
|
-
},
|
|
1830
|
+
}, _i = {
|
|
1801
1831
|
key: 3,
|
|
1802
1832
|
class: "add-crew-form"
|
|
1803
|
-
},
|
|
1833
|
+
}, Ci = { class: "form-row" }, Di = { class: "form-group" }, xi = {
|
|
1804
1834
|
key: 0,
|
|
1805
1835
|
class: "error-message"
|
|
1806
|
-
},
|
|
1836
|
+
}, Si = { class: "form-group" }, Pi = ["value"], Ai = { class: "form-row" }, qi = { class: "form-group" }, Ti = { class: "form-group" }, Ii = {
|
|
1807
1837
|
key: 0,
|
|
1808
1838
|
class: "error-message"
|
|
1809
|
-
},
|
|
1810
|
-
function
|
|
1811
|
-
return o(), l("div",
|
|
1812
|
-
u.config.showWaveBackground ? (o(), l("div",
|
|
1813
|
-
e("div",
|
|
1814
|
-
e("div",
|
|
1839
|
+
}, Ri = { class: "certification-section" }, Mi = { class: "form-row" }, Vi = { class: "form-group" }, Fi = ["onUpdate:modelValue"], Ei = { class: "form-group" }, Ni = ["onUpdate:modelValue"], Oi = { class: "form-group" }, Ui = ["onClick"], Li = { class: "form-row" }, $i = { class: "form-group" }, ji = { class: "form-actions" };
|
|
1840
|
+
function Bi(s, t, u, b, n, a) {
|
|
1841
|
+
return o(), l("div", si, [
|
|
1842
|
+
u.config.showWaveBackground ? (o(), l("div", ii)) : m("", !0),
|
|
1843
|
+
e("div", ni, [
|
|
1844
|
+
e("div", oi, [
|
|
1815
1845
|
e("h2", null, r(a.sectionTitle), 1),
|
|
1816
1846
|
a.canAddCrew ? (o(), l("button", {
|
|
1817
1847
|
key: 0,
|
|
@@ -1819,14 +1849,14 @@ function Ui(s, t, u, b, n, a) {
|
|
|
1819
1849
|
onClick: t[0] || (t[0] = (...i) => a.handleToggleAddForm && a.handleToggleAddForm(...i))
|
|
1820
1850
|
}, r(n.showAddForm ? "Cancel" : "+ Add Crew Member"), 1)) : m("", !0)
|
|
1821
1851
|
]),
|
|
1822
|
-
e("div",
|
|
1852
|
+
e("div", li, [
|
|
1823
1853
|
v(e("input", {
|
|
1824
1854
|
type: "text",
|
|
1825
1855
|
placeholder: "Search crew by name or role...",
|
|
1826
1856
|
"onUpdate:modelValue": t[1] || (t[1] = (i) => n.searchQuery = i),
|
|
1827
1857
|
onInput: t[2] || (t[2] = (...i) => a.handleSearch && a.handleSearch(...i))
|
|
1828
1858
|
}, null, 544), [
|
|
1829
|
-
[
|
|
1859
|
+
[k, n.searchQuery]
|
|
1830
1860
|
]),
|
|
1831
1861
|
v(e("select", {
|
|
1832
1862
|
"onUpdate:modelValue": t[3] || (t[3] = (i) => n.filterStatus = i),
|
|
@@ -1840,7 +1870,7 @@ function Ui(s, t, u, b, n, a) {
|
|
|
1840
1870
|
[C, n.filterStatus]
|
|
1841
1871
|
])
|
|
1842
1872
|
]),
|
|
1843
|
-
u.loading ? (o(), l("div",
|
|
1873
|
+
u.loading ? (o(), l("div", ri, t[15] || (t[15] = [
|
|
1844
1874
|
e("div", {
|
|
1845
1875
|
class: "spinner-border text-primary",
|
|
1846
1876
|
role: "status"
|
|
@@ -1848,55 +1878,55 @@ function Ui(s, t, u, b, n, a) {
|
|
|
1848
1878
|
e("span", { class: "visually-hidden" }, "Loading crew...")
|
|
1849
1879
|
], -1),
|
|
1850
1880
|
e("p", null, "Loading crew members...", -1)
|
|
1851
|
-
]))) : a.filteredCrew.length > 0 ? (o(), l("div",
|
|
1852
|
-
(o(!0), l(p, null,
|
|
1881
|
+
]))) : a.filteredCrew.length > 0 ? (o(), l("div", ai, [
|
|
1882
|
+
(o(!0), l(p, null, h(a.filteredCrew, (i) => (o(), l("div", {
|
|
1853
1883
|
key: i.id,
|
|
1854
1884
|
class: g(["crew-card", { unavailable: i.status === "unavailable" }])
|
|
1855
1885
|
}, [
|
|
1856
1886
|
e("div", {
|
|
1857
|
-
class: g(["status-badge", a.getStatusClass(i.status)])
|
|
1887
|
+
class: g(["crew-status-badge", a.getStatusClass(i.status)])
|
|
1858
1888
|
}, r(a.formatStatus(i.status)), 3),
|
|
1859
|
-
e("div",
|
|
1860
|
-
e("div",
|
|
1861
|
-
e("div",
|
|
1862
|
-
(o(!0), l(p, null,
|
|
1863
|
-
key:
|
|
1864
|
-
class: g(["certification-tag", a.getCertificationClass(
|
|
1865
|
-
onClick: (
|
|
1866
|
-
}, r(
|
|
1889
|
+
e("div", di, r(i.name), 1),
|
|
1890
|
+
e("div", ui, r(i.role), 1),
|
|
1891
|
+
e("div", ci, [
|
|
1892
|
+
(o(!0), l(p, null, h(i.certifications, (f) => (o(), l("div", {
|
|
1893
|
+
key: f.name,
|
|
1894
|
+
class: g(["certification-tag", a.getCertificationClass(f.expiryDate)]),
|
|
1895
|
+
onClick: (y) => a.handleViewCertification(f, i)
|
|
1896
|
+
}, r(f.name), 11, mi))), 128)),
|
|
1867
1897
|
a.canEditCrew ? (o(), l("i", {
|
|
1868
1898
|
key: 0,
|
|
1869
1899
|
class: "bi bi-patch-plus-fill icon",
|
|
1870
|
-
onClick: (
|
|
1871
|
-
}, null, 8,
|
|
1900
|
+
onClick: (f) => a.handleAddCertification(i)
|
|
1901
|
+
}, null, 8, vi)) : m("", !0)
|
|
1872
1902
|
]),
|
|
1873
|
-
e("div",
|
|
1903
|
+
e("div", pi, [
|
|
1874
1904
|
t[16] || (t[16] = e("strong", null, "Embarkation Date:", -1)),
|
|
1875
1905
|
_(" " + r(i.nextShift || "Not Scheduled"), 1)
|
|
1876
1906
|
]),
|
|
1877
|
-
e("div",
|
|
1907
|
+
e("div", fi, [
|
|
1878
1908
|
t[17] || (t[17] = e("strong", null, "Expected Days Onboard (in days):", -1)),
|
|
1879
1909
|
_(" " + r(i.onBoard || "Not Scheduled"), 1)
|
|
1880
1910
|
]),
|
|
1881
|
-
e("div",
|
|
1882
|
-
i.vessel ? (o(), l("div",
|
|
1911
|
+
e("div", hi, [
|
|
1912
|
+
i.vessel ? (o(), l("div", gi, " Vessel: " + r(i.vessel), 1)) : (o(), l("div", bi, " Vessel: Unassigned ")),
|
|
1883
1913
|
a.canAssignShift ? (o(), l("button", {
|
|
1884
1914
|
key: 2,
|
|
1885
1915
|
class: "btn btn-primary",
|
|
1886
|
-
onClick: (
|
|
1887
|
-
}, " Assign Shift ", 8,
|
|
1916
|
+
onClick: (f) => a.handleAssignShift(i)
|
|
1917
|
+
}, " Assign Shift ", 8, yi)) : m("", !0)
|
|
1888
1918
|
]),
|
|
1889
1919
|
a.canDeleteCrew ? (o(), l("i", {
|
|
1890
1920
|
key: 0,
|
|
1891
1921
|
class: "bi bi-trash icon delete-icon",
|
|
1892
|
-
onClick: (
|
|
1893
|
-
}, null, 8,
|
|
1922
|
+
onClick: (f) => a.handleDeleteCrew(i)
|
|
1923
|
+
}, null, 8, wi)) : m("", !0)
|
|
1894
1924
|
], 2))), 128))
|
|
1895
|
-
])) : u.loading ? m("", !0) : (o(), l("div",
|
|
1896
|
-
n.showAddForm ? (o(), l("div",
|
|
1925
|
+
])) : u.loading ? m("", !0) : (o(), l("div", ki, r(u.crew.length === 0 ? "No crew members found." : "No crew members found matching your search criteria."), 1)),
|
|
1926
|
+
n.showAddForm ? (o(), l("div", _i, [
|
|
1897
1927
|
t[28] || (t[28] = e("h2", null, "Add New Crew Member", -1)),
|
|
1898
|
-
e("div",
|
|
1899
|
-
e("div",
|
|
1928
|
+
e("div", Ci, [
|
|
1929
|
+
e("div", Di, [
|
|
1900
1930
|
t[18] || (t[18] = e("label", { for: "crew-name" }, "Full Name *", -1)),
|
|
1901
1931
|
v(e("input", {
|
|
1902
1932
|
type: "text",
|
|
@@ -1904,20 +1934,20 @@ function Ui(s, t, u, b, n, a) {
|
|
|
1904
1934
|
"onUpdate:modelValue": t[5] || (t[5] = (i) => n.newCrew.name = i),
|
|
1905
1935
|
class: g({ error: n.formErrors.name })
|
|
1906
1936
|
}, null, 2), [
|
|
1907
|
-
[
|
|
1937
|
+
[k, n.newCrew.name]
|
|
1908
1938
|
]),
|
|
1909
|
-
n.formErrors.name ? (o(), l("div",
|
|
1939
|
+
n.formErrors.name ? (o(), l("div", xi, r(n.formErrors.name), 1)) : m("", !0)
|
|
1910
1940
|
]),
|
|
1911
|
-
e("div",
|
|
1941
|
+
e("div", Si, [
|
|
1912
1942
|
t[20] || (t[20] = e("label", { for: "crew-role" }, "Role/Position *", -1)),
|
|
1913
1943
|
v(e("select", {
|
|
1914
1944
|
id: "crew-role",
|
|
1915
1945
|
"onUpdate:modelValue": t[6] || (t[6] = (i) => n.newCrew.role = i)
|
|
1916
1946
|
}, [
|
|
1917
|
-
(o(!0), l(p, null,
|
|
1947
|
+
(o(!0), l(p, null, h(u.availableRoles, (i) => (o(), l("option", {
|
|
1918
1948
|
key: i,
|
|
1919
1949
|
value: i
|
|
1920
|
-
}, r(i), 9,
|
|
1950
|
+
}, r(i), 9, Pi))), 128)),
|
|
1921
1951
|
t[19] || (t[19] = e("option", { value: "Other" }, "Other", -1))
|
|
1922
1952
|
], 512), [
|
|
1923
1953
|
[C, n.newCrew.role]
|
|
@@ -1929,12 +1959,12 @@ function Ui(s, t, u, b, n, a) {
|
|
|
1929
1959
|
"onUpdate:modelValue": t[7] || (t[7] = (i) => n.newCrew.customRole = i),
|
|
1930
1960
|
style: { "margin-top": "8px" }
|
|
1931
1961
|
}, null, 512)), [
|
|
1932
|
-
[
|
|
1962
|
+
[k, n.newCrew.customRole]
|
|
1933
1963
|
]) : m("", !0)
|
|
1934
1964
|
])
|
|
1935
1965
|
]),
|
|
1936
|
-
e("div",
|
|
1937
|
-
e("div",
|
|
1966
|
+
e("div", Ai, [
|
|
1967
|
+
e("div", qi, [
|
|
1938
1968
|
t[22] || (t[22] = e("label", { for: "crew-status" }, "Status *", -1)),
|
|
1939
1969
|
v(e("select", {
|
|
1940
1970
|
id: "crew-status",
|
|
@@ -1947,7 +1977,7 @@ function Ui(s, t, u, b, n, a) {
|
|
|
1947
1977
|
[C, n.newCrew.status]
|
|
1948
1978
|
])
|
|
1949
1979
|
]),
|
|
1950
|
-
e("div",
|
|
1980
|
+
e("div", Ti, [
|
|
1951
1981
|
t[23] || (t[23] = e("label", { for: "crew-email" }, "Email Address *", -1)),
|
|
1952
1982
|
v(e("input", {
|
|
1953
1983
|
type: "email",
|
|
@@ -1955,44 +1985,44 @@ function Ui(s, t, u, b, n, a) {
|
|
|
1955
1985
|
"onUpdate:modelValue": t[9] || (t[9] = (i) => n.newCrew.email = i),
|
|
1956
1986
|
class: g({ error: n.formErrors.email })
|
|
1957
1987
|
}, null, 2), [
|
|
1958
|
-
[
|
|
1988
|
+
[k, n.newCrew.email]
|
|
1959
1989
|
]),
|
|
1960
|
-
n.formErrors.email ? (o(), l("div",
|
|
1990
|
+
n.formErrors.email ? (o(), l("div", Ii, r(n.formErrors.email), 1)) : m("", !0)
|
|
1961
1991
|
])
|
|
1962
1992
|
]),
|
|
1963
|
-
e("div",
|
|
1993
|
+
e("div", Ri, [
|
|
1964
1994
|
t[26] || (t[26] = e("h3", null, "Certifications", -1)),
|
|
1965
|
-
(o(!0), l(p, null,
|
|
1966
|
-
key:
|
|
1995
|
+
(o(!0), l(p, null, h(n.newCrew.certifications, (i, f) => (o(), l("div", {
|
|
1996
|
+
key: f,
|
|
1967
1997
|
class: "certification-entry"
|
|
1968
1998
|
}, [
|
|
1969
|
-
e("div",
|
|
1970
|
-
e("div",
|
|
1999
|
+
e("div", Mi, [
|
|
2000
|
+
e("div", Vi, [
|
|
1971
2001
|
t[24] || (t[24] = e("label", null, "Certification Name", -1)),
|
|
1972
2002
|
v(e("input", {
|
|
1973
2003
|
type: "text",
|
|
1974
|
-
"onUpdate:modelValue": (
|
|
2004
|
+
"onUpdate:modelValue": (y) => i.name = y,
|
|
1975
2005
|
placeholder: "Enter certification name"
|
|
1976
|
-
}, null, 8,
|
|
1977
|
-
[
|
|
2006
|
+
}, null, 8, Fi), [
|
|
2007
|
+
[k, i.name]
|
|
1978
2008
|
])
|
|
1979
2009
|
]),
|
|
1980
|
-
e("div",
|
|
2010
|
+
e("div", Ei, [
|
|
1981
2011
|
t[25] || (t[25] = e("label", null, "Expiry Date", -1)),
|
|
1982
2012
|
v(e("input", {
|
|
1983
2013
|
type: "date",
|
|
1984
|
-
"onUpdate:modelValue": (
|
|
1985
|
-
}, null, 8,
|
|
1986
|
-
[
|
|
2014
|
+
"onUpdate:modelValue": (y) => i.expiryDate = y
|
|
2015
|
+
}, null, 8, Ni), [
|
|
2016
|
+
[k, i.expiryDate]
|
|
1987
2017
|
])
|
|
1988
2018
|
]),
|
|
1989
|
-
e("div",
|
|
2019
|
+
e("div", Oi, [
|
|
1990
2020
|
n.newCrew.certifications.length > 1 ? (o(), l("button", {
|
|
1991
2021
|
key: 0,
|
|
1992
2022
|
type: "button",
|
|
1993
2023
|
class: "btn btn-danger btn-sm",
|
|
1994
|
-
onClick: (
|
|
1995
|
-
}, " Remove ", 8,
|
|
2024
|
+
onClick: (y) => a.removeCertification(f)
|
|
2025
|
+
}, " Remove ", 8, Ui)) : m("", !0)
|
|
1996
2026
|
])
|
|
1997
2027
|
])
|
|
1998
2028
|
]))), 128)),
|
|
@@ -2002,19 +2032,19 @@ function Ui(s, t, u, b, n, a) {
|
|
|
2002
2032
|
onClick: t[10] || (t[10] = (...i) => a.addCertificationEntry && a.addCertificationEntry(...i))
|
|
2003
2033
|
}, " + Add More Certification ")
|
|
2004
2034
|
]),
|
|
2005
|
-
e("div",
|
|
2006
|
-
e("div",
|
|
2035
|
+
e("div", Li, [
|
|
2036
|
+
e("div", $i, [
|
|
2007
2037
|
t[27] || (t[27] = e("label", { for: "crew-notes" }, "Notes", -1)),
|
|
2008
2038
|
v(e("textarea", {
|
|
2009
2039
|
id: "crew-notes",
|
|
2010
2040
|
rows: "3",
|
|
2011
2041
|
"onUpdate:modelValue": t[11] || (t[11] = (i) => n.newCrew.notes = i)
|
|
2012
2042
|
}, null, 512), [
|
|
2013
|
-
[
|
|
2043
|
+
[k, n.newCrew.notes]
|
|
2014
2044
|
])
|
|
2015
2045
|
])
|
|
2016
2046
|
]),
|
|
2017
|
-
e("div",
|
|
2047
|
+
e("div", ji, [
|
|
2018
2048
|
e("button", {
|
|
2019
2049
|
class: "btn btn-secondary",
|
|
2020
2050
|
onClick: t[12] || (t[12] = (...i) => a.handleCancelForm && a.handleCancelForm(...i))
|
|
@@ -2028,8 +2058,8 @@ function Ui(s, t, u, b, n, a) {
|
|
|
2028
2058
|
])
|
|
2029
2059
|
]);
|
|
2030
2060
|
}
|
|
2031
|
-
const
|
|
2032
|
-
const
|
|
2061
|
+
const Hi = /* @__PURE__ */ S(ti, [["render", Bi]]);
|
|
2062
|
+
const Qi = {
|
|
2033
2063
|
name: "RequisitionSystem",
|
|
2034
2064
|
props: {
|
|
2035
2065
|
userProfile: {
|
|
@@ -2277,75 +2307,75 @@ const ji = {
|
|
|
2277
2307
|
created() {
|
|
2278
2308
|
this.addItem();
|
|
2279
2309
|
}
|
|
2280
|
-
},
|
|
2310
|
+
}, Ji = { class: "s-container container" }, Wi = { class: "nav-tabs" }, Gi = ["onClick"], zi = {
|
|
2281
2311
|
key: 0,
|
|
2282
2312
|
class: "tab-content active"
|
|
2283
|
-
},
|
|
2313
|
+
}, Yi = { class: "form-grid" }, Ki = { class: "form-group" }, Xi = ["value"], Zi = { class: "form-group" }, en = ["value"], tn = { class: "form-group" }, sn = ["value"], nn = { class: "form-group" }, on = { class: "form-group" }, ln = { class: "items-section" }, rn = { class: "items-header" }, an = { class: "form-group" }, dn = ["onUpdate:modelValue"], un = { class: "form-group" }, cn = ["onUpdate:modelValue"], mn = { class: "form-group" }, vn = ["onUpdate:modelValue"], pn = { class: "form-group" }, fn = ["onUpdate:modelValue"], hn = ["value"], gn = { class: "form-group" }, bn = ["onUpdate:modelValue"], yn = ["onClick"], wn = {
|
|
2284
2314
|
key: 1,
|
|
2285
2315
|
class: "tab-content active"
|
|
2286
|
-
},
|
|
2316
|
+
}, kn = { class: "requisition-list" }, _n = { class: "requisition-header" }, Cn = { class: "requisition-id" }, Dn = { class: "requisition-details" }, xn = { class: "detail-label" }, Sn = { class: "detail-value" }, Pn = {
|
|
2287
2317
|
key: 0,
|
|
2288
2318
|
class: "form-group comments-section"
|
|
2289
|
-
},
|
|
2319
|
+
}, An = ["onClick"], qn = {
|
|
2290
2320
|
key: 2,
|
|
2291
2321
|
class: "tab-content active"
|
|
2292
|
-
},
|
|
2322
|
+
}, Tn = { class: "requisition-list" }, In = { class: "requisition-header" }, Rn = { class: "requisition-id" }, Mn = { class: "requisition-details" }, Vn = { class: "detail-label" }, Fn = { class: "detail-value" }, En = {
|
|
2293
2323
|
key: 0,
|
|
2294
2324
|
class: "form-group comments-section"
|
|
2295
|
-
},
|
|
2325
|
+
}, Nn = ["onClick"], On = {
|
|
2296
2326
|
key: 3,
|
|
2297
2327
|
class: "tab-content active"
|
|
2298
|
-
},
|
|
2328
|
+
}, Un = {
|
|
2299
2329
|
class: "requisition-list",
|
|
2300
2330
|
id: "approvalsQueue"
|
|
2301
|
-
},
|
|
2331
|
+
}, Ln = { class: "requisition-header" }, $n = { class: "requisition-id" }, jn = { class: "requisition-details" }, Bn = { class: "detail-label" }, Hn = { class: "detail-value" }, Qn = { class: "detail-item" }, Jn = { class: "detail-value" }, Wn = { class: "detail-item" }, Gn = { class: "item-list" }, zn = ["onClick"], Yn = ["onClick"], Kn = ["onClick"], Xn = {
|
|
2302
2332
|
key: 4,
|
|
2303
2333
|
class: "tab-content active"
|
|
2304
|
-
},
|
|
2334
|
+
}, Zn = {
|
|
2305
2335
|
class: "requisition-list",
|
|
2306
2336
|
id: "purchasingQueue"
|
|
2307
|
-
},
|
|
2337
|
+
}, eo = { class: "requisition-header" }, to = { class: "requisition-id" }, so = { class: "requisition-details" }, io = { class: "detail-label" }, no = { class: "detail-value" }, oo = { class: "detail-item" }, lo = { class: "detail-value" }, ro = { class: "detail-item" }, ao = { class: "item-list" }, uo = ["onClick"], co = {
|
|
2308
2338
|
key: 5,
|
|
2309
2339
|
class: "tab-content active"
|
|
2310
|
-
},
|
|
2340
|
+
}, mo = {
|
|
2311
2341
|
class: "requisition-list",
|
|
2312
2342
|
id: "receivingQueue"
|
|
2313
|
-
},
|
|
2343
|
+
}, vo = { class: "requisition-header" }, po = { class: "requisition-id" }, fo = { class: "requisition-details" }, ho = { class: "detail-label" }, go = { class: "detail-value" }, bo = { class: "detail-item" }, yo = { class: "detail-value" }, wo = { class: "detail-item" }, ko = { class: "item-list" }, _o = ["onClick"], Co = {
|
|
2314
2344
|
key: 6,
|
|
2315
2345
|
class: "tab-content active"
|
|
2316
|
-
},
|
|
2346
|
+
}, Do = {
|
|
2317
2347
|
class: "po-content",
|
|
2318
2348
|
id: "po-content"
|
|
2319
|
-
},
|
|
2349
|
+
}, xo = { class: "po-header" }, So = { class: "company-info" }, Po = { class: "info-row" }, Ao = { class: "info-value" }, qo = { class: "info-row" }, To = { class: "info-value" }, Io = { class: "info-row" }, Ro = { class: "info-value" }, Mo = { class: "info-row" }, Vo = { class: "info-value" }, Fo = { class: "info-row" }, Eo = { class: "info-value" }, No = { class: "company-info" }, Oo = { class: "info-row" }, Uo = { class: "info-value" }, Lo = { class: "info-row" }, $o = { class: "info-value" }, jo = { class: "info-row" }, Bo = { class: "info-value" }, Ho = { class: "info-row" }, Qo = { class: "info-value" }, Jo = { class: "info-row" }, Wo = { class: "info-value" }, Go = { class: "items-section" }, zo = { class: "items-table" }, Yo = { key: 0 }, Ko = { key: 0 }, Xo = {
|
|
2320
2350
|
key: 0,
|
|
2321
2351
|
class: "price-change-indicator"
|
|
2322
|
-
},
|
|
2352
|
+
}, Zo = ["onUpdate:modelValue"], el = { key: 0 }, tl = ["onClick"], sl = { key: 1 }, il = ["onClick"], nl = ["onClick"], ol = {
|
|
2323
2353
|
key: 0,
|
|
2324
2354
|
class: "justification-note"
|
|
2325
|
-
},
|
|
2355
|
+
}, ll = { class: "totals" }, rl = { class: "total-row" }, al = { class: "total-row" }, dl = { class: "total-row" }, ul = { class: "total-row grand-total" }, cl = { class: "modal-content" }, ml = { style: { "margin-bottom": "15px", color: "#666" } }, vl = { class: "modal-buttons" }, pl = ["disabled"], fl = {
|
|
2326
2356
|
key: 7,
|
|
2327
2357
|
class: "tab-content active"
|
|
2328
2358
|
};
|
|
2329
|
-
function
|
|
2330
|
-
var i,
|
|
2331
|
-
return o(), l("div",
|
|
2359
|
+
function hl(s, t, u, b, n, a) {
|
|
2360
|
+
var i, f, y, A, q, T, I, R, M, V, F;
|
|
2361
|
+
return o(), l("div", Ji, [
|
|
2332
2362
|
t[62] || (t[62] = e("div", { class: "header" }, [
|
|
2333
2363
|
e("h1", null, "OceanHelm Requisition System"),
|
|
2334
2364
|
e("p", null, "Streamlined Material Request & Ordering Process")
|
|
2335
2365
|
], -1)),
|
|
2336
|
-
e("div",
|
|
2337
|
-
(o(!0), l(p, null,
|
|
2366
|
+
e("div", Wi, [
|
|
2367
|
+
(o(!0), l(p, null, h(a.visibleTabs, (d) => (o(), l("button", {
|
|
2338
2368
|
key: d.name,
|
|
2339
2369
|
class: g(["nav-tab", { active: n.activeTab === d.name }]),
|
|
2340
2370
|
onClick: (c) => a.setActiveTab(d.name)
|
|
2341
|
-
}, r(d.label), 11,
|
|
2371
|
+
}, r(d.label), 11, Gi))), 128))
|
|
2342
2372
|
]),
|
|
2343
|
-
n.activeTab === "new-requisition" ? (o(), l("div",
|
|
2373
|
+
n.activeTab === "new-requisition" ? (o(), l("div", zi, [
|
|
2344
2374
|
e("form", {
|
|
2345
2375
|
onSubmit: t[5] || (t[5] = D((...d) => a.handleSubmitRequisition && a.handleSubmitRequisition(...d), ["prevent"]))
|
|
2346
2376
|
}, [
|
|
2347
|
-
e("div",
|
|
2348
|
-
e("div",
|
|
2377
|
+
e("div", Yi, [
|
|
2378
|
+
e("div", Ki, [
|
|
2349
2379
|
t[12] || (t[12] = e("label", null, "Requestor Name *", -1)),
|
|
2350
2380
|
e("input", {
|
|
2351
2381
|
type: "text",
|
|
@@ -2353,24 +2383,24 @@ function ml(s, t, u, b, n, a) {
|
|
|
2353
2383
|
readonly: "",
|
|
2354
2384
|
required: "",
|
|
2355
2385
|
class: "form-control"
|
|
2356
|
-
}, null, 8,
|
|
2386
|
+
}, null, 8, Xi)
|
|
2357
2387
|
]),
|
|
2358
|
-
e("div",
|
|
2388
|
+
e("div", Zi, [
|
|
2359
2389
|
t[14] || (t[14] = e("label", null, "Department *", -1)),
|
|
2360
2390
|
v(e("select", {
|
|
2361
2391
|
"onUpdate:modelValue": t[0] || (t[0] = (d) => n.form.department = d),
|
|
2362
2392
|
required: ""
|
|
2363
2393
|
}, [
|
|
2364
2394
|
t[13] || (t[13] = e("option", { value: "" }, "Select Department", -1)),
|
|
2365
|
-
(o(!0), l(p, null,
|
|
2395
|
+
(o(!0), l(p, null, h(n.departments, (d) => (o(), l("option", {
|
|
2366
2396
|
key: d,
|
|
2367
2397
|
value: d
|
|
2368
|
-
}, r(d), 9,
|
|
2398
|
+
}, r(d), 9, en))), 128))
|
|
2369
2399
|
], 512), [
|
|
2370
2400
|
[C, n.form.department]
|
|
2371
2401
|
])
|
|
2372
2402
|
]),
|
|
2373
|
-
e("div",
|
|
2403
|
+
e("div", tn, [
|
|
2374
2404
|
t[16] || (t[16] = e("label", null, "Vessel *", -1)),
|
|
2375
2405
|
v(e("select", {
|
|
2376
2406
|
"onUpdate:modelValue": t[1] || (t[1] = (d) => n.form.project = d),
|
|
@@ -2381,37 +2411,37 @@ function ml(s, t, u, b, n, a) {
|
|
|
2381
2411
|
disabled: "",
|
|
2382
2412
|
value: ""
|
|
2383
2413
|
}, "Select a vessel", -1)),
|
|
2384
|
-
(o(!0), l(p, null,
|
|
2414
|
+
(o(!0), l(p, null, h(u.vessels, (d) => (o(), l("option", {
|
|
2385
2415
|
key: d.id,
|
|
2386
2416
|
value: d.name
|
|
2387
|
-
}, r(d.name), 9,
|
|
2417
|
+
}, r(d.name), 9, sn))), 128))
|
|
2388
2418
|
], 512), [
|
|
2389
2419
|
[C, n.form.project]
|
|
2390
2420
|
])
|
|
2391
2421
|
]),
|
|
2392
|
-
e("div",
|
|
2422
|
+
e("div", nn, [
|
|
2393
2423
|
t[17] || (t[17] = e("label", null, "Date Needed *", -1)),
|
|
2394
2424
|
v(e("input", {
|
|
2395
2425
|
type: "date",
|
|
2396
2426
|
"onUpdate:modelValue": t[2] || (t[2] = (d) => n.form.neededDate = d),
|
|
2397
2427
|
required: ""
|
|
2398
2428
|
}, null, 512), [
|
|
2399
|
-
[
|
|
2429
|
+
[k, n.form.neededDate]
|
|
2400
2430
|
])
|
|
2401
2431
|
])
|
|
2402
2432
|
]),
|
|
2403
|
-
e("div",
|
|
2433
|
+
e("div", on, [
|
|
2404
2434
|
t[18] || (t[18] = e("label", null, "Business Justification *", -1)),
|
|
2405
2435
|
v(e("textarea", {
|
|
2406
2436
|
"onUpdate:modelValue": t[3] || (t[3] = (d) => n.form.justification = d),
|
|
2407
2437
|
placeholder: "Explain why these materials are needed...",
|
|
2408
2438
|
required: ""
|
|
2409
2439
|
}, null, 512), [
|
|
2410
|
-
[
|
|
2440
|
+
[k, n.form.justification]
|
|
2411
2441
|
])
|
|
2412
2442
|
]),
|
|
2413
|
-
e("div",
|
|
2414
|
-
e("div",
|
|
2443
|
+
e("div", ln, [
|
|
2444
|
+
e("div", rn, [
|
|
2415
2445
|
t[19] || (t[19] = e("h3", null, "Requested Items", -1)),
|
|
2416
2446
|
e("button", {
|
|
2417
2447
|
type: "button",
|
|
@@ -2420,71 +2450,71 @@ function ml(s, t, u, b, n, a) {
|
|
|
2420
2450
|
}, "+ Add Item")
|
|
2421
2451
|
]),
|
|
2422
2452
|
e("div", null, [
|
|
2423
|
-
(o(!0), l(p, null,
|
|
2453
|
+
(o(!0), l(p, null, h(n.form.items, (d, c) => (o(), l("div", {
|
|
2424
2454
|
key: c,
|
|
2425
2455
|
class: "item-row"
|
|
2426
2456
|
}, [
|
|
2427
|
-
e("div",
|
|
2457
|
+
e("div", an, [
|
|
2428
2458
|
t[20] || (t[20] = e("label", null, "Item Code *", -1)),
|
|
2429
2459
|
v(e("input", {
|
|
2430
2460
|
type: "text",
|
|
2431
|
-
"onUpdate:modelValue": (
|
|
2461
|
+
"onUpdate:modelValue": (w) => d.id = w,
|
|
2432
2462
|
required: ""
|
|
2433
|
-
}, null, 8,
|
|
2434
|
-
[
|
|
2463
|
+
}, null, 8, dn), [
|
|
2464
|
+
[k, d.id]
|
|
2435
2465
|
])
|
|
2436
2466
|
]),
|
|
2437
|
-
e("div",
|
|
2467
|
+
e("div", un, [
|
|
2438
2468
|
t[21] || (t[21] = e("label", null, "Item Description *", -1)),
|
|
2439
2469
|
v(e("input", {
|
|
2440
2470
|
type: "text",
|
|
2441
|
-
"onUpdate:modelValue": (
|
|
2471
|
+
"onUpdate:modelValue": (w) => d.desc = w,
|
|
2442
2472
|
required: ""
|
|
2443
|
-
}, null, 8,
|
|
2444
|
-
[
|
|
2473
|
+
}, null, 8, cn), [
|
|
2474
|
+
[k, d.desc]
|
|
2445
2475
|
])
|
|
2446
2476
|
]),
|
|
2447
|
-
e("div",
|
|
2477
|
+
e("div", mn, [
|
|
2448
2478
|
t[22] || (t[22] = e("label", null, "Quantity *", -1)),
|
|
2449
2479
|
v(e("input", {
|
|
2450
2480
|
type: "number",
|
|
2451
|
-
"onUpdate:modelValue": (
|
|
2481
|
+
"onUpdate:modelValue": (w) => d.qty = w,
|
|
2452
2482
|
min: "1",
|
|
2453
2483
|
required: ""
|
|
2454
|
-
}, null, 8,
|
|
2484
|
+
}, null, 8, vn), [
|
|
2455
2485
|
[
|
|
2456
|
-
|
|
2486
|
+
k,
|
|
2457
2487
|
d.qty,
|
|
2458
2488
|
void 0,
|
|
2459
2489
|
{ number: !0 }
|
|
2460
2490
|
]
|
|
2461
2491
|
])
|
|
2462
2492
|
]),
|
|
2463
|
-
e("div",
|
|
2493
|
+
e("div", pn, [
|
|
2464
2494
|
t[23] || (t[23] = e("label", null, "Unit *", -1)),
|
|
2465
2495
|
v(e("select", {
|
|
2466
|
-
"onUpdate:modelValue": (
|
|
2496
|
+
"onUpdate:modelValue": (w) => d.unit = w,
|
|
2467
2497
|
required: ""
|
|
2468
2498
|
}, [
|
|
2469
|
-
(o(!0), l(p, null,
|
|
2470
|
-
key:
|
|
2471
|
-
value:
|
|
2472
|
-
}, r(
|
|
2473
|
-
], 8,
|
|
2499
|
+
(o(!0), l(p, null, h(n.units, (w) => (o(), l("option", {
|
|
2500
|
+
key: w,
|
|
2501
|
+
value: w
|
|
2502
|
+
}, r(w), 9, hn))), 128))
|
|
2503
|
+
], 8, fn), [
|
|
2474
2504
|
[C, d.unit]
|
|
2475
2505
|
])
|
|
2476
2506
|
]),
|
|
2477
|
-
e("div",
|
|
2507
|
+
e("div", gn, [
|
|
2478
2508
|
t[24] || (t[24] = e("label", null, "Est. Unit Cost *", -1)),
|
|
2479
2509
|
v(e("input", {
|
|
2480
2510
|
type: "number",
|
|
2481
|
-
"onUpdate:modelValue": (
|
|
2511
|
+
"onUpdate:modelValue": (w) => d.cost = w,
|
|
2482
2512
|
step: "0.01",
|
|
2483
2513
|
placeholder: "0.00",
|
|
2484
2514
|
required: ""
|
|
2485
|
-
}, null, 8,
|
|
2515
|
+
}, null, 8, bn), [
|
|
2486
2516
|
[
|
|
2487
|
-
|
|
2517
|
+
k,
|
|
2488
2518
|
d.cost,
|
|
2489
2519
|
void 0,
|
|
2490
2520
|
{ number: !0 }
|
|
@@ -2494,8 +2524,8 @@ function ml(s, t, u, b, n, a) {
|
|
|
2494
2524
|
e("button", {
|
|
2495
2525
|
type: "button",
|
|
2496
2526
|
class: "remove-item-btn",
|
|
2497
|
-
onClick: (
|
|
2498
|
-
}, "Remove", 8,
|
|
2527
|
+
onClick: (w) => a.removeItem(c)
|
|
2528
|
+
}, "Remove", 8, yn)
|
|
2499
2529
|
]))), 128))
|
|
2500
2530
|
])
|
|
2501
2531
|
]),
|
|
@@ -2507,75 +2537,75 @@ function ml(s, t, u, b, n, a) {
|
|
|
2507
2537
|
], -1))
|
|
2508
2538
|
], 32)
|
|
2509
2539
|
])) : m("", !0),
|
|
2510
|
-
n.activeTab === "all-requisitions" ? (o(), l("div",
|
|
2511
|
-
e("div",
|
|
2512
|
-
(o(!0), l(p, null,
|
|
2540
|
+
n.activeTab === "all-requisitions" ? (o(), l("div", wn, [
|
|
2541
|
+
e("div", kn, [
|
|
2542
|
+
(o(!0), l(p, null, h(u.requisitions, (d) => (o(), l("div", {
|
|
2513
2543
|
key: d.id,
|
|
2514
2544
|
class: "requisition-card"
|
|
2515
2545
|
}, [
|
|
2516
|
-
e("div",
|
|
2517
|
-
e("div",
|
|
2546
|
+
e("div", _n, [
|
|
2547
|
+
e("div", Cn, r(d.id), 1),
|
|
2518
2548
|
e("div", {
|
|
2519
2549
|
class: g(["status-badge", `status-${d.status}`])
|
|
2520
2550
|
}, r(d.status), 3)
|
|
2521
2551
|
]),
|
|
2522
|
-
e("div",
|
|
2523
|
-
(o(!0), l(p, null,
|
|
2552
|
+
e("div", Dn, [
|
|
2553
|
+
(o(!0), l(p, null, h(a.getRequisitionFields(d), (c) => (o(), l("div", {
|
|
2524
2554
|
class: "detail-item",
|
|
2525
2555
|
key: c.label
|
|
2526
2556
|
}, [
|
|
2527
|
-
e("div",
|
|
2528
|
-
e("div",
|
|
2557
|
+
e("div", xn, r(c.label), 1),
|
|
2558
|
+
e("div", Sn, r(c.value(d)), 1)
|
|
2529
2559
|
]))), 128))
|
|
2530
2560
|
]),
|
|
2531
|
-
d.status === "po-created" || d.status === "delivered" ? (o(), l("div",
|
|
2561
|
+
d.status === "po-created" || d.status === "delivered" ? (o(), l("div", Pn, [
|
|
2532
2562
|
e("button", {
|
|
2533
2563
|
onClick: (c) => a.handleOpenPO(d.id),
|
|
2534
2564
|
class: "add-item-btn comments-section"
|
|
2535
|
-
}, " Print PO ", 8,
|
|
2565
|
+
}, " Print PO ", 8, An)
|
|
2536
2566
|
])) : m("", !0)
|
|
2537
2567
|
]))), 128))
|
|
2538
2568
|
])
|
|
2539
2569
|
])) : m("", !0),
|
|
2540
|
-
n.activeTab === "my-requisitions" ? (o(), l("div",
|
|
2541
|
-
e("div",
|
|
2542
|
-
(o(!0), l(p, null,
|
|
2570
|
+
n.activeTab === "my-requisitions" ? (o(), l("div", qn, [
|
|
2571
|
+
e("div", Tn, [
|
|
2572
|
+
(o(!0), l(p, null, h(a.myRequisitions, (d) => (o(), l("div", {
|
|
2543
2573
|
key: d.id,
|
|
2544
2574
|
class: "requisition-card"
|
|
2545
2575
|
}, [
|
|
2546
|
-
e("div",
|
|
2547
|
-
e("div",
|
|
2576
|
+
e("div", In, [
|
|
2577
|
+
e("div", Rn, r(d.id), 1),
|
|
2548
2578
|
e("div", {
|
|
2549
2579
|
class: g(["status-badge", `status-${d.status}`])
|
|
2550
2580
|
}, r(d.status), 3)
|
|
2551
2581
|
]),
|
|
2552
|
-
e("div",
|
|
2553
|
-
(o(!0), l(p, null,
|
|
2582
|
+
e("div", Mn, [
|
|
2583
|
+
(o(!0), l(p, null, h(a.getRequisitionFields(d), (c) => (o(), l("div", {
|
|
2554
2584
|
class: "detail-item",
|
|
2555
2585
|
key: c.label
|
|
2556
2586
|
}, [
|
|
2557
|
-
e("div",
|
|
2558
|
-
e("div",
|
|
2587
|
+
e("div", Vn, r(c.label), 1),
|
|
2588
|
+
e("div", Fn, r(c.value(d)), 1)
|
|
2559
2589
|
]))), 128))
|
|
2560
2590
|
]),
|
|
2561
|
-
d.status === "info-requested" ? (o(), l("div",
|
|
2591
|
+
d.status === "info-requested" ? (o(), l("div", En, [
|
|
2562
2592
|
t[26] || (t[26] = e("label", { class: "detail-label" }, "Your Response", -1)),
|
|
2563
2593
|
v(e("textarea", {
|
|
2564
2594
|
"onUpdate:modelValue": t[6] || (t[6] = (c) => n.infoResponse = c),
|
|
2565
2595
|
class: "response-textarea",
|
|
2566
2596
|
placeholder: "Submit more info..."
|
|
2567
2597
|
}, null, 512), [
|
|
2568
|
-
[
|
|
2598
|
+
[k, n.infoResponse]
|
|
2569
2599
|
]),
|
|
2570
2600
|
e("button", {
|
|
2571
2601
|
onClick: (c) => a.handleSubmitInfoResponse(d),
|
|
2572
2602
|
class: "add-item-btn comments-section"
|
|
2573
|
-
}, " Submit Info ", 8,
|
|
2603
|
+
}, " Submit Info ", 8, Nn)
|
|
2574
2604
|
])) : m("", !0)
|
|
2575
2605
|
]))), 128))
|
|
2576
2606
|
])
|
|
2577
2607
|
])) : m("", !0),
|
|
2578
|
-
n.activeTab === "approvals" ? (o(), l("div",
|
|
2608
|
+
n.activeTab === "approvals" ? (o(), l("div", On, [
|
|
2579
2609
|
t[29] || (t[29] = e("div", { style: { "margin-bottom": "20px" } }, [
|
|
2580
2610
|
e("h3", { style: { color: "#1e40af", "margin-bottom": "15px" } }, "Department Supervisor Dashboard"),
|
|
2581
2611
|
e("div", { style: { background: "#fef3c7", padding: "15px", "border-radius": "10px", "border-left": "4px solid #f59e0b" } }, [
|
|
@@ -2583,52 +2613,52 @@ function ml(s, t, u, b, n, a) {
|
|
|
2583
2613
|
_(" Department Supervisor - Review requests for accuracy, necessity, and budget compliance ")
|
|
2584
2614
|
])
|
|
2585
2615
|
], -1)),
|
|
2586
|
-
e("div",
|
|
2587
|
-
(o(!0), l(p, null,
|
|
2616
|
+
e("div", Un, [
|
|
2617
|
+
(o(!0), l(p, null, h(a.reviewRequisitions, (d) => (o(), l("div", {
|
|
2588
2618
|
key: d.id,
|
|
2589
2619
|
class: "requisition-card"
|
|
2590
2620
|
}, [
|
|
2591
|
-
e("div",
|
|
2592
|
-
e("div",
|
|
2621
|
+
e("div", Ln, [
|
|
2622
|
+
e("div", $n, r(d.id), 1)
|
|
2593
2623
|
]),
|
|
2594
|
-
e("div",
|
|
2595
|
-
(o(!0), l(p, null,
|
|
2624
|
+
e("div", jn, [
|
|
2625
|
+
(o(!0), l(p, null, h(n.requisitionFields, (c) => (o(), l("div", {
|
|
2596
2626
|
class: "detail-item",
|
|
2597
2627
|
key: c.label
|
|
2598
2628
|
}, [
|
|
2599
|
-
e("div",
|
|
2600
|
-
e("div",
|
|
2629
|
+
e("div", Bn, r(c.label), 1),
|
|
2630
|
+
e("div", Hn, r(c.value(d)), 1)
|
|
2601
2631
|
]))), 128))
|
|
2602
2632
|
]),
|
|
2603
|
-
e("div",
|
|
2633
|
+
e("div", Qn, [
|
|
2604
2634
|
t[27] || (t[27] = e("div", { class: "detail-label" }, "Justification", -1)),
|
|
2605
|
-
e("div",
|
|
2635
|
+
e("div", Jn, r(d.justification || "N/A"), 1)
|
|
2606
2636
|
]),
|
|
2607
|
-
e("div",
|
|
2637
|
+
e("div", Wn, [
|
|
2608
2638
|
t[28] || (t[28] = e("div", { class: "detail-label" }, "Items", -1)),
|
|
2609
|
-
e("ul",
|
|
2610
|
-
(o(!0), l(p, null,
|
|
2639
|
+
e("ul", Gn, [
|
|
2640
|
+
(o(!0), l(p, null, h(d.items, (c, w) => (o(), l("li", { key: w }, r(c.desc) + " - " + r(c.qty) + " " + r(c.unit) + " @ ₦" + r(c.cost.toFixed(2)) + " each ", 1))), 128))
|
|
2611
2641
|
])
|
|
2612
2642
|
]),
|
|
2613
2643
|
e("button", {
|
|
2614
2644
|
type: "button",
|
|
2615
2645
|
class: "add-item-btn",
|
|
2616
2646
|
onClick: (c) => a.handleApproveRequisition(d.id)
|
|
2617
|
-
}, "Approve", 8,
|
|
2647
|
+
}, "Approve", 8, zn),
|
|
2618
2648
|
e("button", {
|
|
2619
2649
|
type: "button",
|
|
2620
2650
|
class: "marginbox btn-reject",
|
|
2621
2651
|
onClick: (c) => a.handleDeclineRequisition(d.id)
|
|
2622
|
-
}, "Decline", 8,
|
|
2652
|
+
}, "Decline", 8, Yn),
|
|
2623
2653
|
e("button", {
|
|
2624
2654
|
type: "button",
|
|
2625
2655
|
class: "marginbox btn-request",
|
|
2626
2656
|
onClick: (c) => a.handleInfoRequisition(d.id)
|
|
2627
|
-
}, "Request Info", 8,
|
|
2657
|
+
}, "Request Info", 8, Kn)
|
|
2628
2658
|
]))), 128))
|
|
2629
2659
|
])
|
|
2630
2660
|
])) : m("", !0),
|
|
2631
|
-
n.activeTab === "purchasing" ? (o(), l("div",
|
|
2661
|
+
n.activeTab === "purchasing" ? (o(), l("div", Xn, [
|
|
2632
2662
|
t[32] || (t[32] = e("div", { style: { "margin-bottom": "20px" } }, [
|
|
2633
2663
|
e("h3", { style: { color: "#1e40af", "margin-bottom": "15px" } }, "Purchasing Department Dashboard"),
|
|
2634
2664
|
e("div", { style: { background: "#dbeafe", padding: "15px", "border-radius": "10px", "border-left": "4px solid #3b82f6" } }, [
|
|
@@ -2636,42 +2666,42 @@ function ml(s, t, u, b, n, a) {
|
|
|
2636
2666
|
_(" Purchasing Team - Convert approved requisitions to Purchase Orders ")
|
|
2637
2667
|
])
|
|
2638
2668
|
], -1)),
|
|
2639
|
-
e("div",
|
|
2640
|
-
(o(!0), l(p, null,
|
|
2669
|
+
e("div", Zn, [
|
|
2670
|
+
(o(!0), l(p, null, h(a.poRequisitions, (d) => (o(), l("div", {
|
|
2641
2671
|
key: d.id,
|
|
2642
2672
|
class: "requisition-card"
|
|
2643
2673
|
}, [
|
|
2644
|
-
e("div",
|
|
2645
|
-
e("div",
|
|
2674
|
+
e("div", eo, [
|
|
2675
|
+
e("div", to, r(d.id), 1)
|
|
2646
2676
|
]),
|
|
2647
|
-
e("div",
|
|
2648
|
-
(o(!0), l(p, null,
|
|
2677
|
+
e("div", so, [
|
|
2678
|
+
(o(!0), l(p, null, h(n.requisitionFields, (c) => (o(), l("div", {
|
|
2649
2679
|
class: "detail-item",
|
|
2650
2680
|
key: c.label
|
|
2651
2681
|
}, [
|
|
2652
|
-
e("div",
|
|
2653
|
-
e("div",
|
|
2682
|
+
e("div", io, r(c.label), 1),
|
|
2683
|
+
e("div", no, r(c.value(d)), 1)
|
|
2654
2684
|
]))), 128))
|
|
2655
2685
|
]),
|
|
2656
|
-
e("div",
|
|
2686
|
+
e("div", oo, [
|
|
2657
2687
|
t[30] || (t[30] = e("div", { class: "detail-label" }, "Justification", -1)),
|
|
2658
|
-
e("div",
|
|
2688
|
+
e("div", lo, r(d.justification || "N/A"), 1)
|
|
2659
2689
|
]),
|
|
2660
|
-
e("div",
|
|
2690
|
+
e("div", ro, [
|
|
2661
2691
|
t[31] || (t[31] = e("div", { class: "detail-label" }, "Items", -1)),
|
|
2662
|
-
e("ul",
|
|
2663
|
-
(o(!0), l(p, null,
|
|
2692
|
+
e("ul", ao, [
|
|
2693
|
+
(o(!0), l(p, null, h(d.items, (c, w) => (o(), l("li", { key: w }, r(c.desc) + " - " + r(c.qty) + " " + r(c.unit) + " @ ₦" + r(c.cost.toFixed(2)) + " each ", 1))), 128))
|
|
2664
2694
|
])
|
|
2665
2695
|
]),
|
|
2666
2696
|
e("button", {
|
|
2667
2697
|
type: "button",
|
|
2668
2698
|
class: "add-item-btn",
|
|
2669
2699
|
onClick: (c) => a.handleCreatePO(d.id)
|
|
2670
|
-
}, "Create PO", 8,
|
|
2700
|
+
}, "Create PO", 8, uo)
|
|
2671
2701
|
]))), 128))
|
|
2672
2702
|
])
|
|
2673
2703
|
])) : m("", !0),
|
|
2674
|
-
n.activeTab === "receiving" ? (o(), l("div",
|
|
2704
|
+
n.activeTab === "receiving" ? (o(), l("div", co, [
|
|
2675
2705
|
t[35] || (t[35] = e("div", { style: { "margin-bottom": "20px" } }, [
|
|
2676
2706
|
e("h3", { style: { color: "#1e40af", "margin-bottom": "15px" } }, "Receiving & Inventory Dashboard"),
|
|
2677
2707
|
e("div", { style: { background: "#dcfce7", padding: "15px", "border-radius": "10px", "border-left": "4px solid #10b981" } }, [
|
|
@@ -2679,94 +2709,94 @@ function ml(s, t, u, b, n, a) {
|
|
|
2679
2709
|
_(" Warehouse Team - Process incoming deliveries and update inventory ")
|
|
2680
2710
|
])
|
|
2681
2711
|
], -1)),
|
|
2682
|
-
e("div",
|
|
2683
|
-
(o(!0), l(p, null,
|
|
2712
|
+
e("div", mo, [
|
|
2713
|
+
(o(!0), l(p, null, h(a.awaitingDelivery, (d) => (o(), l("div", {
|
|
2684
2714
|
key: d.id,
|
|
2685
2715
|
class: "requisition-card"
|
|
2686
2716
|
}, [
|
|
2687
|
-
e("div",
|
|
2688
|
-
e("div",
|
|
2717
|
+
e("div", vo, [
|
|
2718
|
+
e("div", po, r(d.id), 1)
|
|
2689
2719
|
]),
|
|
2690
|
-
e("div",
|
|
2691
|
-
(o(!0), l(p, null,
|
|
2720
|
+
e("div", fo, [
|
|
2721
|
+
(o(!0), l(p, null, h(n.requisitionFields, (c) => (o(), l("div", {
|
|
2692
2722
|
class: "detail-item",
|
|
2693
2723
|
key: c.label
|
|
2694
2724
|
}, [
|
|
2695
|
-
e("div",
|
|
2696
|
-
e("div",
|
|
2725
|
+
e("div", ho, r(c.label), 1),
|
|
2726
|
+
e("div", go, r(c.value(d)), 1)
|
|
2697
2727
|
]))), 128))
|
|
2698
2728
|
]),
|
|
2699
|
-
e("div",
|
|
2729
|
+
e("div", bo, [
|
|
2700
2730
|
t[33] || (t[33] = e("div", { class: "detail-label" }, "Justification", -1)),
|
|
2701
|
-
e("div",
|
|
2731
|
+
e("div", yo, r(d.justification || "N/A"), 1)
|
|
2702
2732
|
]),
|
|
2703
|
-
e("div",
|
|
2733
|
+
e("div", wo, [
|
|
2704
2734
|
t[34] || (t[34] = e("div", { class: "detail-label" }, "Items", -1)),
|
|
2705
|
-
e("ul",
|
|
2706
|
-
(o(!0), l(p, null,
|
|
2735
|
+
e("ul", ko, [
|
|
2736
|
+
(o(!0), l(p, null, h(d.items, (c, w) => (o(), l("li", { key: w }, r(c.desc) + " - " + r(c.qty) + " " + r(c.unit) + " @ ₦" + r(c.cost.toFixed(2)) + " each ", 1))), 128))
|
|
2707
2737
|
])
|
|
2708
2738
|
]),
|
|
2709
2739
|
e("button", {
|
|
2710
2740
|
type: "button",
|
|
2711
2741
|
class: "add-item-btn",
|
|
2712
2742
|
onClick: (c) => a.handleAcceptDelivery(d.id)
|
|
2713
|
-
}, "Accept Delivery", 8,
|
|
2743
|
+
}, "Accept Delivery", 8, _o)
|
|
2714
2744
|
]))), 128))
|
|
2715
2745
|
])
|
|
2716
2746
|
])) : m("", !0),
|
|
2717
|
-
n.activeTab === "po" ? (o(), l("div",
|
|
2718
|
-
e("div",
|
|
2719
|
-
e("div",
|
|
2720
|
-
e("div",
|
|
2747
|
+
n.activeTab === "po" ? (o(), l("div", Co, [
|
|
2748
|
+
e("div", Do, [
|
|
2749
|
+
e("div", xo, [
|
|
2750
|
+
e("div", So, [
|
|
2721
2751
|
t[41] || (t[41] = e("h3", null, "Vendor Information", -1)),
|
|
2722
|
-
e("div",
|
|
2752
|
+
e("div", Po, [
|
|
2723
2753
|
t[36] || (t[36] = e("span", { class: "info-label" }, "Company:", -1)),
|
|
2724
|
-
e("span",
|
|
2754
|
+
e("span", Ao, r(n.vendorInfo.company || ((i = n.poDetails.vendorInfo) == null ? void 0 : i.company)), 1)
|
|
2725
2755
|
]),
|
|
2726
|
-
e("div",
|
|
2756
|
+
e("div", qo, [
|
|
2727
2757
|
t[37] || (t[37] = e("span", { class: "info-label" }, "Contact:", -1)),
|
|
2728
|
-
e("span",
|
|
2758
|
+
e("span", To, r(n.vendorInfo.contact || ((f = n.poDetails.vendorInfo) == null ? void 0 : f.contact)), 1)
|
|
2729
2759
|
]),
|
|
2730
|
-
e("div",
|
|
2760
|
+
e("div", Io, [
|
|
2731
2761
|
t[38] || (t[38] = e("span", { class: "info-label" }, "Email:", -1)),
|
|
2732
|
-
e("span",
|
|
2762
|
+
e("span", Ro, r(n.vendorInfo.email || ((y = n.poDetails.vendorInfo) == null ? void 0 : y.email)), 1)
|
|
2733
2763
|
]),
|
|
2734
|
-
e("div",
|
|
2764
|
+
e("div", Mo, [
|
|
2735
2765
|
t[39] || (t[39] = e("span", { class: "info-label" }, "Phone:", -1)),
|
|
2736
|
-
e("span",
|
|
2766
|
+
e("span", Vo, r(n.vendorInfo.phone || ((A = n.poDetails.vendorInfo) == null ? void 0 : A.phone)), 1)
|
|
2737
2767
|
]),
|
|
2738
|
-
e("div",
|
|
2768
|
+
e("div", Fo, [
|
|
2739
2769
|
t[40] || (t[40] = e("span", { class: "info-label" }, "Address:", -1)),
|
|
2740
|
-
e("span",
|
|
2770
|
+
e("span", Eo, r(n.vendorInfo.address || ((q = n.poDetails.vendorInfo) == null ? void 0 : q.address)), 1)
|
|
2741
2771
|
])
|
|
2742
2772
|
]),
|
|
2743
|
-
e("div",
|
|
2773
|
+
e("div", No, [
|
|
2744
2774
|
t[47] || (t[47] = e("h3", null, "Purchase Order Details", -1)),
|
|
2745
|
-
e("div",
|
|
2775
|
+
e("div", Oo, [
|
|
2746
2776
|
t[42] || (t[42] = e("span", { class: "info-label" }, "PO Number:", -1)),
|
|
2747
|
-
e("span",
|
|
2777
|
+
e("span", Uo, r(n.poDetails.id), 1)
|
|
2748
2778
|
]),
|
|
2749
|
-
e("div",
|
|
2779
|
+
e("div", Lo, [
|
|
2750
2780
|
t[43] || (t[43] = e("span", { class: "info-label" }, "Date:", -1)),
|
|
2751
|
-
e("span",
|
|
2781
|
+
e("span", $o, r(n.vendorInfo.poDate || ((T = n.poDetails.vendorInfo) == null ? void 0 : T.poDate)), 1)
|
|
2752
2782
|
]),
|
|
2753
|
-
e("div",
|
|
2783
|
+
e("div", jo, [
|
|
2754
2784
|
t[44] || (t[44] = e("span", { class: "info-label" }, "Requested By:", -1)),
|
|
2755
|
-
e("span",
|
|
2785
|
+
e("span", Bo, r(n.vendorInfo.poApproved || ((I = n.poDetails.vendorInfo) == null ? void 0 : I.poApproved)), 1)
|
|
2756
2786
|
]),
|
|
2757
|
-
e("div",
|
|
2787
|
+
e("div", Ho, [
|
|
2758
2788
|
t[45] || (t[45] = e("span", { class: "info-label" }, "Department:", -1)),
|
|
2759
|
-
e("span",
|
|
2789
|
+
e("span", Qo, "PO-" + r(n.poDetails.department), 1)
|
|
2760
2790
|
]),
|
|
2761
|
-
e("div",
|
|
2791
|
+
e("div", Jo, [
|
|
2762
2792
|
t[46] || (t[46] = e("span", { class: "info-label" }, "Delivery Date:", -1)),
|
|
2763
|
-
e("span",
|
|
2793
|
+
e("span", Wo, r(n.poDetails.neededDate), 1)
|
|
2764
2794
|
])
|
|
2765
2795
|
])
|
|
2766
2796
|
]),
|
|
2767
|
-
e("div",
|
|
2797
|
+
e("div", Go, [
|
|
2768
2798
|
t[57] || (t[57] = e("h2", { class: "section-title" }, "Order Items", -1)),
|
|
2769
|
-
e("table",
|
|
2799
|
+
e("table", zo, [
|
|
2770
2800
|
e("thead", null, [
|
|
2771
2801
|
e("tr", null, [
|
|
2772
2802
|
t[48] || (t[48] = e("th", null, "Item #", -1)),
|
|
@@ -2774,75 +2804,75 @@ function ml(s, t, u, b, n, a) {
|
|
|
2774
2804
|
t[50] || (t[50] = e("th", null, "Quantity", -1)),
|
|
2775
2805
|
t[51] || (t[51] = e("th", null, "Unit Price", -1)),
|
|
2776
2806
|
t[52] || (t[52] = e("th", null, "Total", -1)),
|
|
2777
|
-
n.isPrinting ? m("", !0) : (o(), l("th",
|
|
2807
|
+
n.isPrinting ? m("", !0) : (o(), l("th", Yo, "Actions"))
|
|
2778
2808
|
])
|
|
2779
2809
|
]),
|
|
2780
2810
|
e("tbody", null, [
|
|
2781
|
-
(o(!0), l(p, null,
|
|
2811
|
+
(o(!0), l(p, null, h(n.poDetails.items || [], (d, c) => (o(), l("tr", { key: c }, [
|
|
2782
2812
|
e("td", null, r(d.itemNumber), 1),
|
|
2783
2813
|
e("td", null, r(d.desc), 1),
|
|
2784
2814
|
e("td", null, r(d.qty), 1),
|
|
2785
2815
|
e("td", null, [
|
|
2786
2816
|
d.editing ? v((o(), l("input", {
|
|
2787
2817
|
key: 1,
|
|
2788
|
-
"onUpdate:modelValue": (
|
|
2818
|
+
"onUpdate:modelValue": (w) => d.tempPrice = w,
|
|
2789
2819
|
type: "number",
|
|
2790
2820
|
step: "0.01",
|
|
2791
2821
|
class: g(["price-input", { "price-changed": d.cost !== d.tempPrice }])
|
|
2792
|
-
}, null, 10,
|
|
2822
|
+
}, null, 10, Zo)), [
|
|
2793
2823
|
[
|
|
2794
|
-
|
|
2824
|
+
k,
|
|
2795
2825
|
d.tempPrice,
|
|
2796
2826
|
void 0,
|
|
2797
2827
|
{ number: !0 }
|
|
2798
2828
|
]
|
|
2799
|
-
]) : (o(), l("span",
|
|
2829
|
+
]) : (o(), l("span", Ko, [
|
|
2800
2830
|
_(" $" + r(d.cost.toFixed(2)) + " ", 1),
|
|
2801
|
-
d.cost !== d.unitPrice ? (o(), l("span",
|
|
2831
|
+
d.cost !== d.unitPrice ? (o(), l("span", Xo, "!")) : m("", !0)
|
|
2802
2832
|
]))
|
|
2803
2833
|
]),
|
|
2804
2834
|
e("td", null, "$" + r((d.unitPrice * d.qty).toFixed(2)), 1),
|
|
2805
|
-
n.isPrinting ? m("", !0) : (o(), l("td",
|
|
2806
|
-
d.editing ? (o(), l("div",
|
|
2835
|
+
n.isPrinting ? m("", !0) : (o(), l("td", el, [
|
|
2836
|
+
d.editing ? (o(), l("div", sl, [
|
|
2807
2837
|
e("button", {
|
|
2808
|
-
onClick: (
|
|
2838
|
+
onClick: (w) => a.savePrice(c),
|
|
2809
2839
|
class: "save-btn"
|
|
2810
|
-
}, "Save", 8,
|
|
2840
|
+
}, "Save", 8, il),
|
|
2811
2841
|
e("button", {
|
|
2812
|
-
onClick: (
|
|
2842
|
+
onClick: (w) => a.cancelEdit(c),
|
|
2813
2843
|
class: "cancel-btn"
|
|
2814
|
-
}, "Cancel", 8,
|
|
2844
|
+
}, "Cancel", 8, nl)
|
|
2815
2845
|
])) : (o(), l("button", {
|
|
2816
2846
|
key: 0,
|
|
2817
|
-
onClick: (
|
|
2847
|
+
onClick: (w) => a.startEdit(c),
|
|
2818
2848
|
class: "edit-btn"
|
|
2819
|
-
}, " Edit Price ", 8,
|
|
2849
|
+
}, " Edit Price ", 8, tl))
|
|
2820
2850
|
]))
|
|
2821
2851
|
]))), 128))
|
|
2822
2852
|
])
|
|
2823
2853
|
]),
|
|
2824
|
-
(o(!0), l(p, null,
|
|
2854
|
+
(o(!0), l(p, null, h(n.poDetails.items || [], (d, c) => (o(), l("div", {
|
|
2825
2855
|
key: "note-" + c
|
|
2826
2856
|
}, [
|
|
2827
|
-
d.justification ? (o(), l("div",
|
|
2857
|
+
d.justification ? (o(), l("div", ol, [
|
|
2828
2858
|
e("strong", null, "Price Change Justification (Item " + r(d.itemNumber) + "):", 1),
|
|
2829
2859
|
_(" " + r(d.justification), 1)
|
|
2830
2860
|
])) : m("", !0)
|
|
2831
2861
|
]))), 128)),
|
|
2832
|
-
e("div",
|
|
2833
|
-
e("div",
|
|
2862
|
+
e("div", ll, [
|
|
2863
|
+
e("div", rl, [
|
|
2834
2864
|
t[53] || (t[53] = e("span", null, "Subtotal:", -1)),
|
|
2835
2865
|
e("span", null, "$" + r(a.subTotal.toFixed(2)), 1)
|
|
2836
2866
|
]),
|
|
2837
|
-
e("div",
|
|
2867
|
+
e("div", al, [
|
|
2838
2868
|
t[54] || (t[54] = e("span", null, "Tax (%):", -1)),
|
|
2839
2869
|
e("span", null, "$" + r(a.getOptional(n.vendorInfo.tax)), 1)
|
|
2840
2870
|
]),
|
|
2841
|
-
e("div",
|
|
2871
|
+
e("div", dl, [
|
|
2842
2872
|
t[55] || (t[55] = e("span", null, "Shipping:", -1)),
|
|
2843
2873
|
e("span", null, "$" + r(a.getOptional(n.vendorInfo.shipping)), 1)
|
|
2844
2874
|
]),
|
|
2845
|
-
e("div",
|
|
2875
|
+
e("div", ul, [
|
|
2846
2876
|
t[56] || (t[56] = e("span", null, "Grand Total:", -1)),
|
|
2847
2877
|
e("span", null, "$" + r((a.subTotal + a.getOptional(n.vendorInfo.tax) + a.getOptional(n.vendorInfo.shipping)).toFixed(2)), 1)
|
|
2848
2878
|
])
|
|
@@ -2854,9 +2884,9 @@ function ml(s, t, u, b, n, a) {
|
|
|
2854
2884
|
class: "justification-modal",
|
|
2855
2885
|
onClick: t[10] || (t[10] = D((...d) => a.closeJustificationModal && a.closeJustificationModal(...d), ["self"]))
|
|
2856
2886
|
}, [
|
|
2857
|
-
e("div",
|
|
2887
|
+
e("div", cl, [
|
|
2858
2888
|
t[60] || (t[60] = e("h3", null, "Price Change Justification Required", -1)),
|
|
2859
|
-
e("p",
|
|
2889
|
+
e("p", ml, [
|
|
2860
2890
|
t[58] || (t[58] = _(" Please provide a justification for changing the price from ", -1)),
|
|
2861
2891
|
e("strong", null, "$" + r((M = (R = a.currentItem) == null ? void 0 : R.cost) == null ? void 0 : M.toFixed(2)), 1),
|
|
2862
2892
|
t[59] || (t[59] = _(" to ", -1)),
|
|
@@ -2868,9 +2898,9 @@ function ml(s, t, u, b, n, a) {
|
|
|
2868
2898
|
placeholder: "Enter justification for price change...",
|
|
2869
2899
|
required: ""
|
|
2870
2900
|
}, null, 512), [
|
|
2871
|
-
[
|
|
2901
|
+
[k, n.justificationText]
|
|
2872
2902
|
]),
|
|
2873
|
-
e("div",
|
|
2903
|
+
e("div", vl, [
|
|
2874
2904
|
e("button", {
|
|
2875
2905
|
onClick: t[8] || (t[8] = (...d) => a.closeJustificationModal && a.closeJustificationModal(...d)),
|
|
2876
2906
|
class: "cancel-btn"
|
|
@@ -2879,7 +2909,7 @@ function ml(s, t, u, b, n, a) {
|
|
|
2879
2909
|
onClick: t[9] || (t[9] = (...d) => a.confirmPriceChange && a.confirmPriceChange(...d)),
|
|
2880
2910
|
class: "save-btn",
|
|
2881
2911
|
disabled: !n.justificationText.trim()
|
|
2882
|
-
}, " Confirm Change ", 8,
|
|
2912
|
+
}, " Confirm Change ", 8, pl)
|
|
2883
2913
|
])
|
|
2884
2914
|
])
|
|
2885
2915
|
])) : m("", !0),
|
|
@@ -2890,18 +2920,18 @@ function ml(s, t, u, b, n, a) {
|
|
|
2890
2920
|
onClick: t[11] || (t[11] = (d) => a.handleFinishPO(n.poDetails.id))
|
|
2891
2921
|
}, "Approve PO"))
|
|
2892
2922
|
])) : m("", !0),
|
|
2893
|
-
n.activeTab === "workflow" ? (o(), l("div",
|
|
2923
|
+
n.activeTab === "workflow" ? (o(), l("div", fl, t[61] || (t[61] = [
|
|
2894
2924
|
x('<div class="workflow-steps"><div class="workflow-step"><div class="step-icon completed">1</div><div class="step-title">Request Submitted</div></div><div class="workflow-step"><div class="step-icon active">2</div><div class="step-title">Department Review</div></div><div class="workflow-step"><div class="step-icon">3</div><div class="step-title">Management Approval</div></div><div class="workflow-step"><div class="step-icon">4</div><div class="step-title">Purchase Order Created</div></div><div class="workflow-step"><div class="step-icon">5</div><div class="step-title">Order Fulfilled</div></div></div><div style="background:white;padding:30px;border-radius:15px;margin-top:20px;"><h3 style="color:#1e40af;margin-bottom:20px;">Requisition Workflow Process</h3><div style="line-height:1.8;color:#374151;"><p><strong>Step 1: Request Identification</strong><br> Department or individual identifies need for materials, equipment, or services.</p><p><strong>Step 2: Requisition Creation</strong><br> Complete requisition form with detailed specifications, quantities, and business justification.</p><p><strong>Step 3: Department Review</strong><br> Department supervisor reviews request for accuracy, necessity, and budget compliance.</p><p><strong>Step 4: Management Approval</strong><br> Based on cost thresholds, appropriate management level provides approval.</p><p><strong>Step 5: Purchase Order Generation</strong><br> Purchasing team converts approved requisition into formal Purchase Order (PO).</p><p><strong>Step 6: Vendor Processing</strong><br> PO sent to vendor, order processed, and delivery scheduled.</p><p><strong>Step 7: Receipt & Inventory</strong><br> Goods received, inspected, and entered into inventory system.</p></div></div>', 2)
|
|
2895
2925
|
]))) : m("", !0)
|
|
2896
2926
|
]);
|
|
2897
2927
|
}
|
|
2898
|
-
const
|
|
2928
|
+
const gl = /* @__PURE__ */ S(Qi, [["render", hl]]), yl = (s = {}) => ({
|
|
2899
2929
|
brandName: s.brandName || "OceanHelm",
|
|
2900
2930
|
logoIcon: s.logoIcon || "bi bi-water",
|
|
2901
2931
|
showLogo: s.showLogo !== !1,
|
|
2902
2932
|
responsive: s.responsive !== !1,
|
|
2903
2933
|
...s
|
|
2904
|
-
}),
|
|
2934
|
+
}), wl = [
|
|
2905
2935
|
{
|
|
2906
2936
|
type: "link",
|
|
2907
2937
|
label: "Dashboard",
|
|
@@ -2964,6 +2994,12 @@ const vl = /* @__PURE__ */ S(ji, [["render", ml]]), fl = (s = {}) => ({
|
|
|
2964
2994
|
icon: "fas fa-ship",
|
|
2965
2995
|
action: "coming-soon"
|
|
2966
2996
|
},
|
|
2997
|
+
{
|
|
2998
|
+
type: "button",
|
|
2999
|
+
label: "Vessel Log",
|
|
3000
|
+
icon: "bi bi-file-ruled",
|
|
3001
|
+
action: "vessel-log"
|
|
3002
|
+
},
|
|
2967
3003
|
{
|
|
2968
3004
|
type: "button",
|
|
2969
3005
|
label: "Settings",
|
|
@@ -2977,22 +3013,22 @@ const vl = /* @__PURE__ */ S(ji, [["render", ml]]), fl = (s = {}) => ({
|
|
|
2977
3013
|
icon: "bi bi-question-circle",
|
|
2978
3014
|
action: "help"
|
|
2979
3015
|
}
|
|
2980
|
-
],
|
|
3016
|
+
], kl = (s, t) => !s.roles || s.roles.length === 0 ? !0 : s.roles.includes(t == null ? void 0 : t.role), _l = {
|
|
2981
3017
|
install(s, t = {}) {
|
|
2982
|
-
s.component("ConfigurableSidebar", K), s.component("VesselLists",
|
|
3018
|
+
s.component("ConfigurableSidebar", K), s.component("VesselLists", Te), s.component("DashHead", Ee), s.component("ActivityLogs", ei), s.component("CrewManagement", Hi), s.component("RequisitionSystem", gl), s.component("OceanHelmMaintenance", As), s.provide("sidebarConfig", t);
|
|
2983
3019
|
}
|
|
2984
3020
|
};
|
|
2985
3021
|
export {
|
|
2986
|
-
|
|
3022
|
+
ei as ActivityLogs,
|
|
2987
3023
|
K as ConfigurableSidebar,
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
3024
|
+
Hi as CrewManagement,
|
|
3025
|
+
Ee as DashHead,
|
|
3026
|
+
As as OceanHelmMaintenance,
|
|
3027
|
+
gl as RequisitionSystem,
|
|
3028
|
+
Te as VesselList,
|
|
3029
|
+
yl as createSidebarConfig,
|
|
3030
|
+
_l as default,
|
|
3031
|
+
wl as defaultMenuItems,
|
|
3032
|
+
kl as defaultPermissionChecker
|
|
2997
3033
|
};
|
|
2998
3034
|
//# sourceMappingURL=oceanhelm.es.js.map
|