From d9cb1aca28430a8a9982e8d5f3a464cec04a43d0 Mon Sep 17 00:00:00 2001 From: brusnitsyn Date: Wed, 15 Jul 2026 16:53:38 +0900 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B4=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D0=B2=D0=BD=D1=8B=D0=BC=20=D0=BE=D0=B1=D1=83=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B4=D0=BB=D1=8F=20=D0=B4=D0=B5?= =?UTF-8?q?=D0=B6=D1=83=D1=80=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B8=20=D0=BC?= =?UTF-8?q?=D0=B5=D0=B4.=20=D1=81=D0=B5=D1=81=D1=82=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 22 +-- resources/js/Components/Tour/Tour.vue | 10 +- resources/js/Components/Tour/TourOverlay.vue | 111 ++++++++++---- resources/js/Components/Tour/TourTooltip.vue | 142 +++++++++--------- resources/js/Pages/Index.vue | 18 ++- .../Components/AddMedicalHistoryModal.vue | 11 +- resources/js/Pages/Nurse/Report/Index.vue | 17 ++- .../Report/Components/SelectUserModal.vue | 20 +-- resources/js/Pages/Report/Index.vue | 8 +- resources/js/Tours/index.js | 6 +- resources/js/Tours/welcomeDuty.js | 127 ++++++++-------- resources/js/Tours/welcomeNurse.js | 94 ++++++++++++ 12 files changed, 377 insertions(+), 209 deletions(-) create mode 100644 resources/js/Tours/welcomeNurse.js diff --git a/package-lock.json b/package-lock.json index 6fd6d1b..9465d65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1122,7 +1122,8 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@tailwindcss/language-server": { "version": "0.14.29", @@ -1937,8 +1938,7 @@ "version": "5.13.0", "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-5.13.0.tgz", "integrity": "sha512-PJuXT6zdiCbv0IkX5cqkKFVIIh+9v3kqP9zsOHEGpIWi7DfTgzvfOKc8icw6G3/ulR3V1alDDUtOVH0zWCWGEQ==", - "license": "SEE LICENSE IN LICENSE", - "peer": true + "license": "SEE LICENSE IN LICENSE" }, "node_modules/async-validator": { "version": "4.2.5", @@ -2169,7 +2169,6 @@ "integrity": "sha512-9nF4PdUle+5ta4W5SyZdLCCmFd37uVimSjg1evcTqKJCyvCEEj12WKzOSBNak6r4im4J4iYXKH1OWpUV5LBYFg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@emotion/hash": "~0.8.0", "csstype": "~3.0.5" @@ -2245,7 +2244,6 @@ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "license": "ISC", - "peer": true, "engines": { "node": ">=12" } @@ -2299,7 +2297,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -2320,6 +2317,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", + "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -2394,6 +2392,7 @@ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.5.tgz", "integrity": "sha512-QCwxUDULPlXv8F6tqMMKx5dNkTe6OaBYRMPYeXKBlyOoKvAmE0ac6pW7fFhSscJ/5SI7666/U/B+MElbsrJlIg==", "license": "MIT", + "peer": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", @@ -2407,6 +2406,7 @@ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" } @@ -3183,7 +3183,8 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/muggle-string": { "version": "0.4.1", @@ -3301,7 +3302,6 @@ "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.4.tgz", "integrity": "sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==", "license": "MIT", - "peer": true, "dependencies": { "@vue/devtools-api": "^7.7.7" }, @@ -3387,7 +3387,6 @@ "resolved": "https://registry.npmjs.org/pusher-js/-/pusher-js-8.5.0.tgz", "integrity": "sha512-V7uzGi9bqOOOyM/6IkJdpFyjGZj7llz1v0oWnYkZKcYLvbz6VcHVLmzKqkvegjuMumpfIEKGLmWHwFb39XFCpw==", "license": "MIT", - "peer": true, "dependencies": { "tweetnacl": "^1.0.3" } @@ -3628,6 +3627,7 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", + "peer": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1" @@ -3840,7 +3840,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -4198,7 +4197,6 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.26.tgz", "integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==", "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.26", "@vue/compiler-sfc": "3.5.26", @@ -4311,6 +4309,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -4331,6 +4330,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", + "peer": true, "engines": { "node": ">=0.4.0" } diff --git a/resources/js/Components/Tour/Tour.vue b/resources/js/Components/Tour/Tour.vue index 43b0c11..5b9925a 100644 --- a/resources/js/Components/Tour/Tour.vue +++ b/resources/js/Components/Tour/Tour.vue @@ -135,7 +135,11 @@ function delay(ms) { \ No newline at end of file + diff --git a/resources/js/Components/Tour/TourOverlay.vue b/resources/js/Components/Tour/TourOverlay.vue index 36bc448..a968f05 100644 --- a/resources/js/Components/Tour/TourOverlay.vue +++ b/resources/js/Components/Tour/TourOverlay.vue @@ -5,16 +5,50 @@ const props = defineProps({ rect: { type: Object, required: true + }, + allowInteraction: { + type: Boolean, + default: true } }) -const style = computed(() => { - const r = props.rect +const overlayStyle = computed(() => { + + if (!props.rect) return null; + + const { top, left, width, height } = props.rect + return { - "--top": `${r.top}px`, - "--left": `${r.left}px`, - "--width": `${r.width}px`, - "--height": `${r.height}px` + top: { + top: 0, + left: 0, + width: '100vw', + height: `${top}px` + }, + left: { + top: `${top}px`, + left: 0, + width: `${left}px`, + height: `${height}px` + }, + right: { + top: `${top}px`, + left: `${left+width}px`, + width: `calc(100vw - ${left+width}px)`, + height: `${height}px` + }, + bottom: { + top: `${top+height}px`, + left: 0, + width: "100vw", + height: `calc(100vh - ${top+height}px)` + }, + highlight: { + top: `${top}px`, + left: `${left}px`, + width: `${width}px`, + height: `${height}px` + }, } }) @@ -24,10 +58,32 @@ const style = computed(() => { -
+
+
+
+
+
+
+
+
@@ -35,28 +91,27 @@ const style = computed(() => { \ No newline at end of file + diff --git a/resources/js/Components/Tour/TourTooltip.vue b/resources/js/Components/Tour/TourTooltip.vue index efa89f3..b753c8d 100644 --- a/resources/js/Components/Tour/TourTooltip.vue +++ b/resources/js/Components/Tour/TourTooltip.vue @@ -23,6 +23,10 @@ const props = defineProps({ type: [HTMLElement, String, Object], default: null }, + disabledControllers: { + type: Boolean, + default: false + } }) const emit = defineEmits([ @@ -53,83 +57,83 @@ const style = computed(() => ({ \ No newline at end of file + diff --git a/resources/js/Pages/Index.vue b/resources/js/Pages/Index.vue index fe00f1a..eacf023 100644 --- a/resources/js/Pages/Index.vue +++ b/resources/js/Pages/Index.vue @@ -19,8 +19,8 @@ const onboarding = useOnboardingStore() const userStore = useAuthStore() const modalStore = useModalStore() -if (userStore.user.role.slug === 'dej') - onboarding.start("welcomeDuty") +// if (userStore.user.role.slug === 'nurse') +// onboarding.start("welcomeNurse") const authStore = useAuthStore() const themeVars = useThemeVars() @@ -67,11 +67,12 @@ const isLockReportButton = computed(() => { return getHours(serverTime.value) < 6 || getHours(serverTime.value) >= 7 }) -const showSelectUserModal = ref(false) +const showSelectDutyUserModal = ref(false) const showSelectNurseUserModal = ref(false) const openReport = (path) => { - modalStore.showSelectDutyUserModal = true + showSelectDutyUserModal.value = true + onboarding.emit('selectUser:opened') } const openNurseReport = () => { @@ -80,7 +81,8 @@ const openNurseReport = () => { // } else { // router.visit('/nurse/report') // } - modalStore.showSelectNurseUserModal = true + showSelectNurseUserModal.value = true + onboarding.emit('selectUser:opened') } const cardColor = computed(() => themeVars.value.cardColor) @@ -90,7 +92,7 @@ const dividerColor = computed(() => themeVars.value.dividerColor)