首页报错和门诊医生站报错

This commit is contained in:
2025-12-12 15:48:07 +08:00
parent 0794782505
commit f33e3c6f15
8 changed files with 197 additions and 177 deletions

View File

@@ -18,7 +18,7 @@
"decimal.js": "^10.5.0", "decimal.js": "^10.5.0",
"echarts": "^5.4.3", "echarts": "^5.4.3",
"element-china-area-data": "^6.1.0", "element-china-area-data": "^6.1.0",
"element-plus": "2.9.11", "element-plus": "^2.12.0",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"fuse.js": "6.6.2", "fuse.js": "6.6.2",
"html2pdf.js": "^0.10.3", "html2pdf.js": "^0.10.3",
@@ -40,7 +40,7 @@
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "4.5.0", "@vitejs/plugin-vue": "4.5.0",
"@vue/compiler-sfc": "3.3.9", "@vue/compiler-sfc": "^3.5.25",
"sass": "1.69.5", "sass": "1.69.5",
"unplugin-auto-import": "0.17.1", "unplugin-auto-import": "0.17.1",
"unplugin-vue-setup-extend-plus": "1.0.0", "unplugin-vue-setup-extend-plus": "1.0.0",
@@ -77,27 +77,24 @@
"version": "7.27.1", "version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"license": "MIT",
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@babel/helper-validator-identifier": { "node_modules/@babel/helper-validator-identifier": {
"version": "7.27.1", "version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"license": "MIT",
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
} }
}, },
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.28.4", "version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.4.tgz", "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.5.tgz",
"integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"@babel/types": "^7.28.4" "@babel/types": "^7.28.5"
}, },
"bin": { "bin": {
"parser": "bin/babel-parser.js" "parser": "bin/babel-parser.js"
@@ -116,13 +113,12 @@
} }
}, },
"node_modules/@babel/types": { "node_modules/@babel/types": {
"version": "7.28.4", "version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz", "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.5.tgz",
"integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"license": "MIT",
"dependencies": { "dependencies": {
"@babel/helper-string-parser": "^7.27.1", "@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.27.1" "@babel/helper-validator-identifier": "^7.28.5"
}, },
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
@@ -1015,7 +1011,6 @@
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz",
"integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/lodash": "*" "@types/lodash": "*"
} }
@@ -1025,7 +1020,6 @@
"resolved": "https://registry.npmmirror.com/@types/node/-/node-24.7.2.tgz", "resolved": "https://registry.npmmirror.com/@types/node/-/node-24.7.2.tgz",
"integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==", "integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"undici-types": "~7.14.0" "undici-types": "~7.14.0"
} }
@@ -1086,57 +1080,65 @@
} }
}, },
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
"version": "3.3.9", "version": "3.5.25",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.9.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.25.tgz",
"integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", "integrity": "sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@babel/parser": "^7.23.3", "@babel/parser": "^7.28.5",
"@vue/shared": "3.3.9", "@vue/shared": "3.5.25",
"entities": "^4.5.0",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"source-map-js": "^1.0.2" "source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-core/node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"dev": true,
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
} }
}, },
"node_modules/@vue/compiler-dom": { "node_modules/@vue/compiler-dom": {
"version": "3.3.9", "version": "3.5.25",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.25.tgz",
"integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", "integrity": "sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.3.9", "@vue/compiler-core": "3.5.25",
"@vue/shared": "3.3.9" "@vue/shared": "3.5.25"
} }
}, },
"node_modules/@vue/compiler-sfc": { "node_modules/@vue/compiler-sfc": {
"version": "3.3.9", "version": "3.5.25",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.25.tgz",
"integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", "integrity": "sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@babel/parser": "^7.23.3", "@babel/parser": "^7.28.5",
"@vue/compiler-core": "3.3.9", "@vue/compiler-core": "3.5.25",
"@vue/compiler-dom": "3.3.9", "@vue/compiler-dom": "3.5.25",
"@vue/compiler-ssr": "3.3.9", "@vue/compiler-ssr": "3.5.25",
"@vue/reactivity-transform": "3.3.9", "@vue/shared": "3.5.25",
"@vue/shared": "3.3.9",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.30.5", "magic-string": "^0.30.21",
"postcss": "^8.4.31", "postcss": "^8.5.6",
"source-map-js": "^1.0.2" "source-map-js": "^1.2.1"
} }
}, },
"node_modules/@vue/compiler-ssr": { "node_modules/@vue/compiler-ssr": {
"version": "3.3.9", "version": "3.5.25",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.25.tgz",
"integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", "integrity": "sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.3.9", "@vue/compiler-dom": "3.5.25",
"@vue/shared": "3.3.9" "@vue/shared": "3.5.25"
} }
}, },
"node_modules/@vue/devtools-api": { "node_modules/@vue/devtools-api": {
@@ -1154,20 +1156,6 @@
"@vue/shared": "3.5.22" "@vue/shared": "3.5.22"
} }
}, },
"node_modules/@vue/reactivity-transform": {
"version": "3.3.9",
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz",
"integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.23.3",
"@vue/compiler-core": "3.3.9",
"@vue/shared": "3.3.9",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.5"
}
},
"node_modules/@vue/reactivity/node_modules/@vue/shared": { "node_modules/@vue/reactivity/node_modules/@vue/shared": {
"version": "3.5.22", "version": "3.5.22",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz", "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz",
@@ -1273,11 +1261,10 @@
} }
}, },
"node_modules/@vue/shared": { "node_modules/@vue/shared": {
"version": "3.3.9", "version": "3.5.25",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.9.tgz", "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.25.tgz",
"integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==", "integrity": "sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==",
"dev": true, "dev": true
"license": "MIT"
}, },
"node_modules/@vueup/vue-quill": { "node_modules/@vueup/vue-quill": {
"version": "1.2.0", "version": "1.2.0",
@@ -2561,7 +2548,6 @@
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz", "resolved": "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"peer": true,
"engines": { "engines": {
"node": ">=12" "node": ">=12"
} }
@@ -2701,10 +2687,9 @@
} }
}, },
"node_modules/dayjs": { "node_modules/dayjs": {
"version": "1.11.18", "version": "1.11.19",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.18.tgz", "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.19.tgz",
"integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="
"license": "MIT"
}, },
"node_modules/debug": { "node_modules/debug": {
"version": "4.4.3", "version": "4.4.3",
@@ -2931,24 +2916,22 @@
} }
}, },
"node_modules/element-plus": { "node_modules/element-plus": {
"version": "2.9.11", "version": "2.12.0",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.11.tgz", "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.12.0.tgz",
"integrity": "sha512-x4L/6YC8de4JtuE3vpaEugJdQIeHQaHtIYKyk67IeF6dTIiVax45aX4nWOygnh+xX+0gTvL6xO+9BZhPA3G82w==", "integrity": "sha512-M9YLSn2np9OnqrSKWsiXvGe3qnF8pd94+TScsHj1aTMCD+nSEvucXermf807qNt6hOP040le0e5Aft7E9ZfHmA==",
"license": "MIT",
"dependencies": { "dependencies": {
"@ctrl/tinycolor": "^3.4.1", "@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.3.1", "@element-plus/icons-vue": "^2.3.2",
"@floating-ui/dom": "^1.0.1", "@floating-ui/dom": "^1.0.1",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.17.20",
"@types/lodash-es": "^4.17.6", "@types/lodash-es": "^4.17.12",
"@vueuse/core": "^9.1.0", "@vueuse/core": "^9.1.0",
"async-validator": "^4.2.5", "async-validator": "^4.2.5",
"dayjs": "^1.11.13", "dayjs": "^1.11.19",
"escape-html": "^1.0.3",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"lodash-unified": "^1.0.2", "lodash-unified": "^1.0.3",
"memoize-one": "^6.0.0", "memoize-one": "^6.0.0",
"normalize-wheel-es": "^1.2.0" "normalize-wheel-es": "^1.2.0"
}, },
@@ -2956,6 +2939,14 @@
"vue": "^3.2.0" "vue": "^3.2.0"
} }
}, },
"node_modules/element-plus/node_modules/@element-plus/icons-vue": {
"version": "2.3.2",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz",
"integrity": "sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==",
"peerDependencies": {
"vue": "^3.2.0"
}
},
"node_modules/element-plus/node_modules/@types/web-bluetooth": { "node_modules/element-plus/node_modules/@types/web-bluetooth": {
"version": "0.0.16", "version": "0.0.16",
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
@@ -3291,12 +3282,6 @@
"@esbuild/win32-x64": "0.19.12" "@esbuild/win32-x64": "0.19.12"
} }
}, },
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
"license": "MIT"
},
"node_modules/escape-string-regexp": { "node_modules/escape-string-regexp": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
@@ -4649,8 +4634,7 @@
"node_modules/jquery": { "node_modules/jquery": {
"version": "3.7.1", "version": "3.7.1",
"resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.7.1.tgz", "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.7.1.tgz",
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg=="
"peer": true
}, },
"node_modules/js-base64": { "node_modules/js-base64": {
"version": "2.6.4", "version": "2.6.4",
@@ -4792,14 +4776,12 @@
"node_modules/lodash": { "node_modules/lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
"peer": true
}, },
"node_modules/lodash-es": { "node_modules/lodash-es": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
"peer": true
}, },
"node_modules/lodash-unified": { "node_modules/lodash-unified": {
"version": "1.0.3", "version": "1.0.3",
@@ -4832,12 +4814,11 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/magic-string": { "node_modules/magic-string": {
"version": "0.30.19", "version": "0.30.21",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.19.tgz", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",
"integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"license": "MIT",
"dependencies": { "dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0" "@jridgewell/sourcemap-codec": "^1.5.5"
} }
}, },
"node_modules/map-cache": { "node_modules/map-cache": {
@@ -5598,7 +5579,6 @@
"url": "https://github.com/sponsors/ai" "url": "https://github.com/sponsors/ai"
} }
], ],
"peer": true,
"dependencies": { "dependencies": {
"nanoid": "^3.3.11", "nanoid": "^3.3.11",
"picocolors": "^1.1.1", "picocolors": "^1.1.1",
@@ -6035,7 +6015,6 @@
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.52.4.tgz", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.52.4.tgz",
"integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==", "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"@types/estree": "1.0.8" "@types/estree": "1.0.8"
}, },
@@ -6213,7 +6192,6 @@
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.69.5.tgz", "resolved": "https://registry.npmmirror.com/sass/-/sass-1.69.5.tgz",
"integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0", "immutable": "^4.0.0",
@@ -6237,7 +6215,6 @@
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmmirror.com/segmentit/-/segmentit-2.0.3.tgz", "resolved": "https://registry.npmmirror.com/segmentit/-/segmentit-2.0.3.tgz",
"integrity": "sha512-7mn2XL3OdTUQ+AhHz7SbgyxLTaQRzTWQNVwiK+UlTO8aePGbSwvKUzTwE4238+OUY9MoR6ksAg35zl8sfTunQQ==", "integrity": "sha512-7mn2XL3OdTUQ+AhHz7SbgyxLTaQRzTWQNVwiK+UlTO8aePGbSwvKUzTwE4238+OUY9MoR6ksAg35zl8sfTunQQ==",
"peer": true,
"dependencies": { "dependencies": {
"preval.macro": "^4.0.0" "preval.macro": "^4.0.0"
} }
@@ -7721,7 +7698,6 @@
"resolved": "https://registry.npmjs.org/vite/-/vite-5.0.4.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.4.tgz",
"integrity": "sha512-RzAr8LSvM8lmhB4tQ5OPcBhpjOZRZjuxv9zO5UcxeoY2bd3kP3Ticd40Qma9/BqZ8JS96Ll/jeBX9u+LJZrhVg==", "integrity": "sha512-RzAr8LSvM8lmhB4tQ5OPcBhpjOZRZjuxv9zO5UcxeoY2bd3kP3Ticd40Qma9/BqZ8JS96Ll/jeBX9u+LJZrhVg==",
"dev": true, "dev": true,
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.19.3", "esbuild": "^0.19.3",
"postcss": "^8.4.31", "postcss": "^8.4.31",
@@ -7819,7 +7795,6 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz",
"integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.5.22", "@vue/compiler-dom": "3.5.22",
"@vue/compiler-sfc": "3.5.22", "@vue/compiler-sfc": "3.5.22",

View File

@@ -28,7 +28,7 @@
"decimal.js": "^10.5.0", "decimal.js": "^10.5.0",
"echarts": "^5.4.3", "echarts": "^5.4.3",
"element-china-area-data": "^6.1.0", "element-china-area-data": "^6.1.0",
"element-plus": "2.9.11", "element-plus": "^2.12.0",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"fuse.js": "6.6.2", "fuse.js": "6.6.2",
"html2pdf.js": "^0.10.3", "html2pdf.js": "^0.10.3",
@@ -50,7 +50,7 @@
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "4.5.0", "@vitejs/plugin-vue": "4.5.0",
"@vue/compiler-sfc": "3.3.9", "@vue/compiler-sfc": "^3.5.25",
"sass": "1.69.5", "sass": "1.69.5",
"unplugin-auto-import": "0.17.1", "unplugin-auto-import": "0.17.1",
"unplugin-vue-setup-extend-plus": "1.0.0", "unplugin-vue-setup-extend-plus": "1.0.0",

View File

@@ -85,6 +85,14 @@ function resolvePath(routePath, routeQuery) {
if (isExternal(props.basePath)) { if (isExternal(props.basePath)) {
return props.basePath return props.basePath
} }
// 特殊处理门诊医生站路径,确保路径正确
if (routePath === '/doctorstation' || routePath === 'doctorstation') {
if (routeQuery) {
let query = JSON.parse(routeQuery);
return { path: '/doctorstation', query: query }
}
return '/doctorstation'
}
if (routeQuery) { if (routeQuery) {
let query = JSON.parse(routeQuery); let query = JSON.parse(routeQuery);
return { path: getNormalPath(props.basePath + '/' + routePath), query: query } return { path: getNormalPath(props.basePath + '/' + routePath), query: query }

View File

@@ -5,7 +5,6 @@ import Cookies from 'js-cookie'
import ElementPlus from 'element-plus' import ElementPlus from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn' import zhCn from 'element-plus/es/locale/lang/zh-cn'
import 'element-plus/dist/index.css' import 'element-plus/dist/index.css'
import locale from 'element-plus/es/locale/lang/zh-cn'
import '@/assets/styles/index.scss' // global css import '@/assets/styles/index.scss' // global css
@@ -84,8 +83,14 @@ app.component('ImageUpload', ImageUpload)
app.component('ImagePreview', ImagePreview) app.component('ImagePreview', ImagePreview)
app.component('RightToolbar', RightToolbar) app.component('RightToolbar', RightToolbar)
app.component('Editor', Editor) app.component('Editor', Editor)
app.use(registerComponents) // 使用element-plus 并且设置全局的大小
app.use(ElementPlus, {
locale: zhCn,
// 支持 large、default、small
size: Cookies.get('size') || 'default'
})
app.use(ElMessage) app.use(ElMessage)
app.use(registerComponents)
app.use(router) app.use(router)
app.use(store) app.use(store)
app.use(plugins) app.use(plugins)
@@ -94,11 +99,5 @@ app.component('svg-icon', SvgIcon)
directive(app) directive(app)
// 全局禁止点击遮罩层关闭弹窗 // 全局禁止点击遮罩层关闭弹窗
ElDialog.props.closeOnClickModal.default = false; ElDialog.props.closeOnClickModal.default = false;
// 使用element-plus 并且设置全局的大小
app.use(ElementPlus, {
locale: zhCn,
// 支持 large、default、small
size: Cookies.get('size') || 'default'
})
app.mount('#app') app.mount('#app')

View File

@@ -29,14 +29,9 @@ router.beforeEach((to, from, next) => {
// 判断当前用户是否已拉取完user_info信息 // 判断当前用户是否已拉取完user_info信息
useUserStore().getInfo().then(() => { useUserStore().getInfo().then(() => {
isRelogin.show = false isRelogin.show = false
usePermissionStore().generateRoutes().then(accessRoutes => { usePermissionStore().generateRoutes().then(() => {
// 根据roles权限生成可访问的路由表 // 路由已在generateRoutes方法中添加无需再次添加
accessRoutes.forEach(route => { next({ ...to, replace: true }) // hack方法 确保路由已完成
if (!isHttp(route.path)) {
router.addRoute(route) // 动态添加可访问路由表
}
})
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
}) })
}).catch(err => { }).catch(err => {
useUserStore().logOut().then(() => { useUserStore().logOut().then(() => {

View File

@@ -27,6 +27,8 @@ import Layout from '@/layout'
// 公共路由 // 公共路由
export const constantRoutes = [ export const constantRoutes = [
{ path: '/appoinmentmanage', component: Layout, redirect: '/appoinmentmanage', name: 'AppoinmentManage', hidden: true, meta: { title: '预约管理', icon: 'component' }, children: [{ path: '', component: () => import('@/views/appoinmentmanage/index.vue'), name: 'AppoinmentManageIndex', meta: { title: '预约管理' } }, { path: 'doctorschedule/:deptId', component: () => import('@/views/appoinmentmanage/doctorschedule/index.vue'), name: 'DoctorSchedule', hidden: true, meta: { title: '医生排班' } }] }, { path: '/appoinmentmanage', component: Layout, redirect: '/appoinmentmanage', name: 'AppoinmentManage', hidden: true, meta: { title: '预约管理', icon: 'component' }, children: [{ path: '', component: () => import('@/views/appoinmentmanage/index.vue'), name: 'AppoinmentManageIndex', meta: { title: '预约管理' } }, { path: 'doctorschedule/:deptId', component: () => import('@/views/appoinmentmanage/doctorschedule/index.vue'), name: 'DoctorSchedule', hidden: true, meta: { title: '医生排班' } }] },
// 门诊医生站路由配置
{ path: '/doctorstation', component: Layout, redirect: '/doctorstation', name: 'DoctorStation', meta: { title: '门诊医生站', icon: 'doctorstation' }, children: [{ path: '', component: () => import('@/views/doctorstation/index.vue'), name: 'DoctorStationIndex', meta: { title: '门诊医生站', icon: 'doctorstation' } }] },
{ {
path: '/redirect', path: '/redirect',
component: Layout, component: Layout,

View File

@@ -580,13 +580,17 @@ function getListInfo(addNewRow) {
getTcmAdviceList({ encounterId: props.patientInfo.encounterId }).then((res) => { getTcmAdviceList({ encounterId: props.patientInfo.encounterId }).then((res) => {
if (res && res.data && Array.isArray(res.data)) { if (res && res.data && Array.isArray(res.data)) {
prescriptionList.value = res.data.map((item) => { // 清空当前处方列表
tcmPrescriptionList.value = [];
// 处理返回的数据
res.data.forEach((item) => {
try { try {
// 解析contentJson获取完整的医嘱数据 // 解析contentJson获取完整的医嘱数据
const contentData = item.contentJson ? JSON.parse(item.contentJson) : {}; const contentData = item.contentJson ? JSON.parse(item.contentJson) : {};
// 合并基础信息和contentJson中的详细信息 // 创建一个新的处方对象
return { const newPrescription = {
...item, ...item,
...contentData, ...contentData,
// 确保关键显示字段存在 // 确保关键显示字段存在
@@ -596,11 +600,14 @@ function getListInfo(addNewRow) {
diagnosisName: contentData.diagnosisName || item.diagnosisName || '', diagnosisName: contentData.diagnosisName || item.diagnosisName || '',
positionName: contentData.positionName || item.positionName || '', positionName: contentData.positionName || item.positionName || '',
doseUnitCode_dictText: contentData.doseUnitCode_dictText || item.doseUnitCode_dictText || '', doseUnitCode_dictText: contentData.doseUnitCode_dictText || item.doseUnitCode_dictText || '',
chineseHerbsDoseQuantity: contentData.chineseHerbsDoseQuantity || item.chineseHerbsDoseQuantity || '' chineseHerbsDoseQuantity: contentData.chineseHerbsDoseQuantity || item.chineseHerbsDoseQuantity || '',
prescriptionList: [contentData]
}; };
// 添加到处方列表
tcmPrescriptionList.value.push(newPrescription);
} catch (error) { } catch (error) {
console.error('解析医嘱数据失败:', error, '数据项:', item); console.error('解析医嘱数据失败:', error, '数据项:', item);
return item; // 出错时返回原始数据
} }
}); });
@@ -612,11 +619,11 @@ function getListInfo(addNewRow) {
} }
} else { } else {
console.error('获取医嘱列表失败或数据格式错误:', res); console.error('获取医嘱列表失败或数据格式错误:', res);
prescriptionList.value = []; tcmPrescriptionList.value = [];
} }
}).catch(error => { }).catch(error => {
console.error('获取医嘱列表异常:', error); console.error('获取医嘱列表异常:', error);
prescriptionList.value = []; tcmPrescriptionList.value = [];
}); });
tcmDiagnosisList.value = getFromDiagnosis(props.patientInfo.encounterId); tcmDiagnosisList.value = getFromDiagnosis(props.patientInfo.encounterId);
@@ -769,7 +776,8 @@ function handleDeletePrescriptionClick(prescriptionIndex) {
} }
// 检查是否有已签发的药品 // 检查是否有已签发的药品
const hasChargedItems = prescriptionList.value.some(item => item.statusEnum === 2); const prescription = tcmPrescriptionList.value[prescriptionIndex];
const hasChargedItems = prescription.prescriptionList.some(item => item.statusEnum === 2);
if (hasChargedItems) { if (hasChargedItems) {
proxy.$modal.msgWarning('该处方单已收费,不能删除'); proxy.$modal.msgWarning('该处方单已收费,不能删除');
return; return;
@@ -793,16 +801,18 @@ function isPrescriptionDeletable(prescriptionIndex) {
} }
// 检查是否有已签发的药品 // 检查是否有已签发的药品
const hasChargedItems = prescriptionList.value.some(item => item.statusEnum === 2); const hasChargedItems = tcmPrescriptionList.value.some(item =>
item.prescriptionList && item.prescriptionList.some(med => med.statusEnum === 2)
);
return !hasChargedItems; return !hasChargedItems;
} }
// 计算处方总价 // 计算处方总价
function getPrescriptionTotalPrice(prescriptionIndex) { function getPrescriptionTotalPrice(prescriptionIndex) {
const prescription = prescriptionList.value[prescriptionIndex]; const prescription = tcmPrescriptionList.value[prescriptionIndex];
let totalPrice = 0; let totalPrice = 0;
if (prescription && prescription.prescriptionDetailsList) { if (prescription && prescription.prescriptionList) {
prescription.prescriptionDetailsList.forEach(item => { prescription.prescriptionList.forEach(item => {
// 使用decimal.js确保精度计算 // 使用decimal.js确保精度计算
const quantity = new Decimal(item.minUnitQuantity || 0); const quantity = new Decimal(item.minUnitQuantity || 0);
const unitPrice = new Decimal(item.unitPrice || 0); const unitPrice = new Decimal(item.unitPrice || 0);
@@ -814,9 +824,11 @@ function getPrescriptionTotalPrice(prescriptionIndex) {
// 获取处方中的药品数量 // 获取处方中的药品数量
function getPrescriptionMedicineCount(prescriptionIndex) { function getPrescriptionMedicineCount(prescriptionIndex) {
// 这里需要根据实际的业务逻辑来计算 const prescription = tcmPrescriptionList.value[prescriptionIndex];
// 假设每个处方对应一组药品,这里简化处理 if (prescription && prescription.prescriptionList) {
return prescriptionList.value.filter(item => item.statusEnum !== 2).length; return prescription.prescriptionList.length;
}
return 0;
} }
/** /**
@@ -959,7 +971,9 @@ function handleDelete(pIndex) {
prescription.expandOrder = []; prescription.expandOrder = [];
prescription.isAdding = false; prescription.isAdding = false;
adviceQueryParams.value.adviceType = undefined; adviceQueryParams.value.adviceType = undefined;
groupMarkers.value = getGroupMarkers(prescriptionList.value); // 删除行会出现组号混乱的情况,所以这里重新更新标记 // 删除行会出现组号混乱的情况,所以这里重新更新标记
const allPrescriptions = tcmPrescriptionList.value.flatMap(p => p.prescriptionList);
groupMarkers.value = getGroupMarkers(allPrescriptions);
} }
@@ -1115,42 +1129,60 @@ function handleSaveSign(row, index) {
function handleSaveBatch() { function handleSaveBatch() {
let saveList = prescriptionList.value // 收集所有需要保存的处方项目
.filter((item) => { let saveList = [];
return item.statusEnum == 1;
}) // 遍历所有处方
.map((item, index) => { for (const prescription of tcmPrescriptionList.value) {
return { if (prescription.prescriptionList) {
...item, // 检查处方是否有必填的付数
accountId: accountId.value, if (!prescription.chineseHerbsDoseQuantity || prescription.chineseHerbsDoseQuantity == 0) {
conditionId: prescription.conditionId, proxy.$modal.msgWarning('请输入付数');
encounterDiagnosisId: prescription.encounterDiagnosisId, return;
conditionDefinitionId: prescription.conditionDefinitionId, }
encounterId: props.patientInfo.encounterId,
patientId: props.patientInfo.patientId, // 收集该处方下需要保存的项目
requestId: item.requestId, const itemsToSave = prescription.prescriptionList
groupId: item.groupId ? item.groupId : timestamp.toString(), .filter((item) => item.statusEnum == 1)
.map((item, index) => {
chineseHerbsDoseQuantity: prescription.chineseHerbsDoseQuantity, return {
dbOpType: item.requestId ? '2' : '1', ...item,
}; accountId: accountId.value,
}); conditionId: prescription.conditionId,
encounterDiagnosisId: prescription.encounterDiagnosisId,
conditionDefinitionId: prescription.conditionDefinitionId,
encounterId: props.patientInfo.encounterId,
patientId: props.patientInfo.patientId,
requestId: item.requestId,
groupId: item.groupId ? item.groupId : timestamp.toString(),
chineseHerbsDoseQuantity: prescription.chineseHerbsDoseQuantity,
dbOpType: item.requestId ? '2' : '1',
};
});
// 将项目添加到保存列表
saveList = saveList.concat(itemsToSave);
}
}
// 检查是否有可保存的项目
if (saveList.length == 0) { if (saveList.length == 0) {
proxy.$modal.msgWarning('当前没有可保存医嘱'); proxy.$modal.msgWarning('当前没有可保存医嘱');
return; return;
} }
if (
prescription.chineseHerbsDoseQuantity == undefined || // 保存处方
prescription.chineseHerbsDoseQuantity == 0
) {
proxy.$modal.msgWarning('请输入付数');
return;
}
saveTcmAdvice({ adviceSaveList: saveList }).then((res) => { saveTcmAdvice({ adviceSaveList: saveList }).then((res) => {
if (res.code === 200) { if (res.code === 200) {
proxy.$modal.msgSuccess('保存成功'); proxy.$modal.msgSuccess('保存成功');
getListInfo(true); getListInfo(true);
prescription.nextId = 1;
// 重置所有处方的nextId
tcmPrescriptionList.value.forEach(prescription => {
if (prescription.nextId) {
prescription.nextId = 1;
}
});
} }
}); });
} }

View File

@@ -362,18 +362,27 @@ const shortcuts = [
// const eprescriptionRef = ref(); // const eprescriptionRef = ref();
onMounted(() => { onMounted(() => {
getWaitPatient(); getWaitPatient();
getPatientList();
}); });
getPatientList();
// 获取现诊患者列表 // 获取现诊患者列表
function getPatientList() { function getPatientList() {
queryParams.value.statusEnum = 2; queryParams.value.statusEnum = 2;
console.log('调用getPatientList参数', queryParams.value);
getList(queryParams.value).then((res) => { getList(queryParams.value).then((res) => {
patientList.value = res.data.records.map((item) => { console.log('getPatientList返回结果', res);
return { if (res.data && res.data.records) {
...item, patientList.value = res.data.records.map((item) => {
active: currentEncounterId.value ? item.encounterId == currentEncounterId.value : false, return {
}; ...item,
}); active: currentEncounterId.value ? item.encounterId == currentEncounterId.value : false,
};
});
console.log('患者列表数据:', patientList.value);
} else {
console.error('API返回的数据格式不正确', res);
}
}).catch(error => {
console.error('获取患者列表失败:', error);
}); });
} }
function setVisitType(type) { function setVisitType(type) {