diff --git a/.gitignore b/.gitignore index 027d8283f..5b91571ad 100644 --- a/.gitignore +++ b/.gitignore @@ -416,3 +416,21 @@ /node_modules/proxy-from-env/package.json /node_modules/proxy-from-env/README.md /node_modules/.package-lock.json +/.idea/shelf/在进行更新之前于_2026_6_5_16_37_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_07_53_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_07_58_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_09_03_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_09_07_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_09_17_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/_2026_6_5_16_37____.xml +/.idea/shelf/_2026_6_6_07_53____.xml +/.idea/shelf/_2026_6_6_07_58____.xml +/.idea/shelf/_2026_6_6_09_03____.xml +/.idea/shelf/_2026_6_6_09_07____.xml +/.idea/shelf/_2026_6_6_09_17____.xml +/.idea/shelf/在进行更新之前于_2026_6_5_16_37_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_07_53_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_07_58_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_09_03_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_09_07_取消提交了更改_[更改]/shelved.patch +/.idea/shelf/在进行更新之前于_2026_6_6_09_17_取消提交了更改_[更改]/shelved.patch diff --git a/.idea/shelf/在进行更新之前于_2026_6_5_16_37_取消提交了更改_[更改]/shelved.patch b/.idea/shelf/在进行更新之前于_2026_6_5_16_37_取消提交了更改_[更改]/shelved.patch new file mode 100644 index 000000000..3a56d9359 --- /dev/null +++ b/.idea/shelf/在进行更新之前于_2026_6_5_16_37_取消提交了更改_[更改]/shelved.patch @@ -0,0 +1,566 @@ +Index: healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (revision f836d816ad421ec82b2169ca37bfa105e48a06f5) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (date 1780645312497) +@@ -434,7 +434,7 @@ + import OrderGroupDrawer from '@/views/doctorstation/components/prescription/orderGroupDrawer.vue'; + import PrescriptionHistory from '@/views/doctorstation/components/prescription/prescriptionHistory.vue'; + import Decimal from 'decimal.js'; +-import {ElLoading, ElMessage, ElMessageBox} from 'element-plus'; ++import {ElMessage, ElMessageBox} from 'element-plus'; + import useUserStore from '@/store/modules/user'; + import ApplicationFormBottomBtn from './applicationForm/applicationFormBottomBtn.vue'; + import LeaveHospitalDialog from './applicationForm/leaveHospitalDialog.vue'; +@@ -617,7 +617,7 @@ + }, + ]; + +-let loadingInstance = undefined; ++// loadingInstance removed - using loading ref instead + onMounted(() => { + document.addEventListener('keydown', escKeyListener); + }); +@@ -672,10 +672,7 @@ + } + // 获取列表信息 + function getListInfo(addNewRow) { +- loadingInstance = ElLoading.service({ fullscreen: true }); +- setTimeout(() => { +- loadingInstance.close(); +- }, 180); ++ loading.value = true; + isAdding.value = false; + expandOrder.value = []; + // 🔧 修复:先加载科室树,再处理处方数据 +@@ -687,7 +684,7 @@ + getPrescriptionList(patientInfo.value.encounterId).then((res) => { + // 等待科室树加载完成后再处理处方数据,确保 resolveOrgId 能正确匹配 + orgTreePromise.then(() => { +- loadingInstance.close(); ++ loading.value = false; + prescriptionList.value = res.data + .map((item) => { + const parsedContent = JSON.parse(item.contentJson); +@@ -747,7 +744,7 @@ + handleAddPrescription(); + } + }); +- }); ++ }).catch(() => { loading.value = false; }); + getContract({ encounterId: patientInfo.value.encounterId }).then((res) => { + contractList.value = res.data; + }); +Index: healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (revision f836d816ad421ec82b2169ca37bfa105e48a06f5) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (date 1780648085241) +@@ -252,31 +252,37 @@ + // 处理节点点击,根据后台返回的路径加载组件 + const handleNodeClick = (data, node) => { + if (node.isLeaf) { ++ const newRouter = data.document?.vueRouter; ++ const oldRouter = currentSelectTemplate.value?.vueRouter; ++ const isSameTemplate = newRouter && oldRouter && newRouter === oldRouter; ++ + // 存储当前节点数据 + currentSelectTemplate.value = data.document; + +- // 在切换组件前先重置表单数据,避免显示之前的数据 +- editForm.value = { +- id: '', +- definitionId: '', +- definitionBusNo: '', +- contentJson: '', +- statusEnum: 1, +- organizationId: 0, +- encounterId: '', +- patientId: '', +- recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), +- createBy: '', +- source: '', +- }; +- +- // 先清空当前组件,再设置新组件,确保组件完全重新渲染 +- currentComponent.value = undefined; +- +- // 使用 nextTick 确保 DOM 更新后再设置新组件 +- nextTick(() => { +- currentComponent.value = currentSelectTemplate.value.vueRouter; +- }); ++ if (isSameTemplate) { ++ // 同一模板(仅患者切换):不卸载组件、不清空表单,避免闪烁 ++ // loading 遮罩覆盖过渡,loadLatestMedicalRecord 会原子替换表单数据 ++ loading.value = true; ++ } else { ++ // 不同模板:先清空再设置,确保组件完全重新渲染 ++ editForm.value = { ++ id: '', ++ definitionId: '', ++ definitionBusNo: '', ++ contentJson: '', ++ statusEnum: 1, ++ organizationId: 0, ++ encounterId: '', ++ patientId: '', ++ recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), ++ createBy: '', ++ source: '', ++ }; ++ currentComponent.value = undefined; ++ nextTick(() => { ++ currentComponent.value = newRouter; ++ }); ++ } + } else { + currentSelectTemplate.value = { + id: '', +@@ -624,8 +630,8 @@ + // 加载最新的病历数据并回显 + const loadLatestMedicalRecord = async () => { + if (!patientInfo.value?.encounterId || !currentSelectTemplate.value.id) return; +- editForm.value.id = ''; + loading.value = true; ++ editForm.value.id = ''; + try { + // 获取患者的历史病历记录 + const res = await getRecordByEncounterIdList({ +Index: .gitignore +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/.gitignore b/.gitignore +new file mode 100644 +--- /dev/null (date 1780642717495) ++++ b/.gitignore (date 1780642717495) +@@ -0,0 +1,418 @@ ++/.vscode/mcp.json ++/.vscode/settings.json ++/.qwen/settings.json.orig ++/.playwright-mcp/console-2026-03-31T08-27-30-883Z.log ++/.playwright-mcp/console-2026-05-19T03-10-43-600Z.log ++/.playwright-mcp/console-2026-05-19T03-18-23-396Z.log ++/.playwright-mcp/console-2026-05-19T03-18-51-946Z.log ++/.playwright-mcp/page-2026-05-11T02-56-22-027Z.yml ++/.playwright-mcp/page-2026-05-11T02-56-30-095Z.yml ++/.playwright-mcp/page-2026-05-19T03-10-44-171Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-20-520Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-40-168Z.yml ++/.playwright-mcp/page-2026-05-19T03-12-10-968Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-23-610Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-52-634Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-19-472Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-36-669Z.yml ++/.playwright-mcp/page-2026-05-19T03-20-04-342Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-08-820Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-43-735Z.yml ++/.idea/compiler.xml ++/.idea/encodings.xml ++/.idea/jarRepositories.xml ++/.idea/misc.xml ++/.idea/vcs.xml ++/.idea/workspace.xml ++/node_modules/.bin/husky ++/node_modules/.bin/husky.cmd ++/node_modules/.bin/husky.ps1 ++/node_modules/asynckit/lib/abort.js ++/node_modules/asynckit/lib/async.js ++/node_modules/asynckit/lib/defer.js ++/node_modules/asynckit/lib/iterate.js ++/node_modules/asynckit/lib/readable_asynckit.js ++/node_modules/asynckit/lib/readable_parallel.js ++/node_modules/asynckit/lib/readable_serial.js ++/node_modules/asynckit/lib/readable_serial_ordered.js ++/node_modules/asynckit/lib/state.js ++/node_modules/asynckit/lib/streamify.js ++/node_modules/asynckit/lib/terminator.js ++/node_modules/asynckit/bench.js ++/node_modules/asynckit/index.js ++/node_modules/asynckit/LICENSE ++/node_modules/asynckit/package.json ++/node_modules/asynckit/parallel.js ++/node_modules/asynckit/README.md ++/node_modules/asynckit/serial.js ++/node_modules/asynckit/serialOrdered.js ++/node_modules/asynckit/stream.js ++/node_modules/axios/dist/browser/axios.cjs ++/node_modules/axios/dist/esm/axios.js ++/node_modules/axios/dist/esm/axios.min.js ++/node_modules/axios/dist/esm/axios.min.js.map ++/node_modules/axios/dist/node/axios.cjs ++/node_modules/axios/dist/axios.js ++/node_modules/axios/dist/axios.min.js ++/node_modules/axios/dist/axios.min.js.map ++/node_modules/axios/lib/adapters/adapters.js ++/node_modules/axios/lib/adapters/fetch.js ++/node_modules/axios/lib/adapters/http.js ++/node_modules/axios/lib/adapters/README.md ++/node_modules/axios/lib/adapters/xhr.js ++/node_modules/axios/lib/cancel/CanceledError.js ++/node_modules/axios/lib/cancel/CancelToken.js ++/node_modules/axios/lib/cancel/isCancel.js ++/node_modules/axios/lib/core/Axios.js ++/node_modules/axios/lib/core/AxiosError.js ++/node_modules/axios/lib/core/AxiosHeaders.js ++/node_modules/axios/lib/core/buildFullPath.js ++/node_modules/axios/lib/core/dispatchRequest.js ++/node_modules/axios/lib/core/InterceptorManager.js ++/node_modules/axios/lib/core/mergeConfig.js ++/node_modules/axios/lib/core/README.md ++/node_modules/axios/lib/core/settle.js ++/node_modules/axios/lib/core/transformData.js ++/node_modules/axios/lib/defaults/index.js ++/node_modules/axios/lib/defaults/transitional.js ++/node_modules/axios/lib/env/classes/FormData.js ++/node_modules/axios/lib/env/data.js ++/node_modules/axios/lib/env/README.md ++/node_modules/axios/lib/helpers/AxiosTransformStream.js ++/node_modules/axios/lib/helpers/AxiosURLSearchParams.js ++/node_modules/axios/lib/helpers/bind.js ++/node_modules/axios/lib/helpers/buildURL.js ++/node_modules/axios/lib/helpers/callbackify.js ++/node_modules/axios/lib/helpers/combineURLs.js ++/node_modules/axios/lib/helpers/composeSignals.js ++/node_modules/axios/lib/helpers/cookies.js ++/node_modules/axios/lib/helpers/deprecatedMethod.js ++/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js ++/node_modules/axios/lib/helpers/formDataToJSON.js ++/node_modules/axios/lib/helpers/formDataToStream.js ++/node_modules/axios/lib/helpers/fromDataURI.js ++/node_modules/axios/lib/helpers/HttpStatusCode.js ++/node_modules/axios/lib/helpers/isAbsoluteURL.js ++/node_modules/axios/lib/helpers/isAxiosError.js ++/node_modules/axios/lib/helpers/isURLSameOrigin.js ++/node_modules/axios/lib/helpers/null.js ++/node_modules/axios/lib/helpers/parseHeaders.js ++/node_modules/axios/lib/helpers/parseProtocol.js ++/node_modules/axios/lib/helpers/progressEventReducer.js ++/node_modules/axios/lib/helpers/readBlob.js ++/node_modules/axios/lib/helpers/README.md ++/node_modules/axios/lib/helpers/resolveConfig.js ++/node_modules/axios/lib/helpers/speedometer.js ++/node_modules/axios/lib/helpers/spread.js ++/node_modules/axios/lib/helpers/throttle.js ++/node_modules/axios/lib/helpers/toFormData.js ++/node_modules/axios/lib/helpers/toURLEncodedForm.js ++/node_modules/axios/lib/helpers/trackStream.js ++/node_modules/axios/lib/helpers/validator.js ++/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js ++/node_modules/axios/lib/platform/browser/classes/Blob.js ++/node_modules/axios/lib/platform/browser/classes/FormData.js ++/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/browser/index.js ++/node_modules/axios/lib/platform/common/utils.js ++/node_modules/axios/lib/platform/node/classes/FormData.js ++/node_modules/axios/lib/platform/node/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/node/index.js ++/node_modules/axios/lib/platform/index.js ++/node_modules/axios/lib/axios.js ++/node_modules/axios/lib/utils.js ++/node_modules/axios/CHANGELOG.md ++/node_modules/axios/index.d.cts ++/node_modules/axios/index.d.ts ++/node_modules/axios/index.js ++/node_modules/axios/LICENSE ++/node_modules/axios/MIGRATION_GUIDE.md ++/node_modules/axios/package.json ++/node_modules/axios/README.md ++/node_modules/bignumber.js/doc/API.html ++/node_modules/bignumber.js/bignumber.d.mts ++/node_modules/bignumber.js/bignumber.d.ts ++/node_modules/bignumber.js/bignumber.js ++/node_modules/bignumber.js/bignumber.mjs ++/node_modules/bignumber.js/CHANGELOG.md ++/node_modules/bignumber.js/LICENCE.md ++/node_modules/bignumber.js/package.json ++/node_modules/bignumber.js/README.md ++/node_modules/bignumber.js/types.d.ts ++/node_modules/call-bind-apply-helpers/.github/FUNDING.yml ++/node_modules/call-bind-apply-helpers/test/index.js ++/node_modules/call-bind-apply-helpers/.eslintrc ++/node_modules/call-bind-apply-helpers/.nycrc ++/node_modules/call-bind-apply-helpers/actualApply.d.ts ++/node_modules/call-bind-apply-helpers/actualApply.js ++/node_modules/call-bind-apply-helpers/applyBind.d.ts ++/node_modules/call-bind-apply-helpers/applyBind.js ++/node_modules/call-bind-apply-helpers/CHANGELOG.md ++/node_modules/call-bind-apply-helpers/functionApply.d.ts ++/node_modules/call-bind-apply-helpers/functionApply.js ++/node_modules/call-bind-apply-helpers/functionCall.d.ts ++/node_modules/call-bind-apply-helpers/functionCall.js ++/node_modules/call-bind-apply-helpers/index.d.ts ++/node_modules/call-bind-apply-helpers/index.js ++/node_modules/call-bind-apply-helpers/LICENSE ++/node_modules/call-bind-apply-helpers/package.json ++/node_modules/call-bind-apply-helpers/README.md ++/node_modules/call-bind-apply-helpers/reflectApply.d.ts ++/node_modules/call-bind-apply-helpers/reflectApply.js ++/node_modules/call-bind-apply-helpers/tsconfig.json ++/node_modules/combined-stream/lib/combined_stream.js ++/node_modules/combined-stream/License ++/node_modules/combined-stream/package.json ++/node_modules/combined-stream/Readme.md ++/node_modules/combined-stream/yarn.lock ++/node_modules/delayed-stream/lib/delayed_stream.js ++/node_modules/delayed-stream/.npmignore ++/node_modules/delayed-stream/License ++/node_modules/delayed-stream/Makefile ++/node_modules/delayed-stream/package.json ++/node_modules/delayed-stream/Readme.md ++/node_modules/dunder-proto/.github/FUNDING.yml ++/node_modules/dunder-proto/test/get.js ++/node_modules/dunder-proto/test/index.js ++/node_modules/dunder-proto/test/set.js ++/node_modules/dunder-proto/.eslintrc ++/node_modules/dunder-proto/.nycrc ++/node_modules/dunder-proto/CHANGELOG.md ++/node_modules/dunder-proto/get.d.ts ++/node_modules/dunder-proto/get.js ++/node_modules/dunder-proto/LICENSE ++/node_modules/dunder-proto/package.json ++/node_modules/dunder-proto/README.md ++/node_modules/dunder-proto/set.d.ts ++/node_modules/dunder-proto/set.js ++/node_modules/dunder-proto/tsconfig.json ++/node_modules/es-define-property/.github/FUNDING.yml ++/node_modules/es-define-property/test/index.js ++/node_modules/es-define-property/.eslintrc ++/node_modules/es-define-property/.nycrc ++/node_modules/es-define-property/CHANGELOG.md ++/node_modules/es-define-property/index.d.ts ++/node_modules/es-define-property/index.js ++/node_modules/es-define-property/LICENSE ++/node_modules/es-define-property/package.json ++/node_modules/es-define-property/README.md ++/node_modules/es-define-property/tsconfig.json ++/node_modules/es-errors/.github/FUNDING.yml ++/node_modules/es-errors/test/index.js ++/node_modules/es-errors/.eslintrc ++/node_modules/es-errors/CHANGELOG.md ++/node_modules/es-errors/eval.d.ts ++/node_modules/es-errors/eval.js ++/node_modules/es-errors/index.d.ts ++/node_modules/es-errors/index.js ++/node_modules/es-errors/LICENSE ++/node_modules/es-errors/package.json ++/node_modules/es-errors/range.d.ts ++/node_modules/es-errors/range.js ++/node_modules/es-errors/README.md ++/node_modules/es-errors/ref.d.ts ++/node_modules/es-errors/ref.js ++/node_modules/es-errors/syntax.d.ts ++/node_modules/es-errors/syntax.js ++/node_modules/es-errors/tsconfig.json ++/node_modules/es-errors/type.d.ts ++/node_modules/es-errors/type.js ++/node_modules/es-errors/uri.d.ts ++/node_modules/es-errors/uri.js ++/node_modules/es-object-atoms/.github/FUNDING.yml ++/node_modules/es-object-atoms/test/index.js ++/node_modules/es-object-atoms/.eslintrc ++/node_modules/es-object-atoms/CHANGELOG.md ++/node_modules/es-object-atoms/index.d.ts ++/node_modules/es-object-atoms/index.js ++/node_modules/es-object-atoms/isObject.d.ts ++/node_modules/es-object-atoms/isObject.js ++/node_modules/es-object-atoms/LICENSE ++/node_modules/es-object-atoms/package.json ++/node_modules/es-object-atoms/README.md ++/node_modules/es-object-atoms/RequireObjectCoercible.d.ts ++/node_modules/es-object-atoms/RequireObjectCoercible.js ++/node_modules/es-object-atoms/ToObject.d.ts ++/node_modules/es-object-atoms/ToObject.js ++/node_modules/es-object-atoms/tsconfig.json ++/node_modules/es-set-tostringtag/test/index.js ++/node_modules/es-set-tostringtag/.eslintrc ++/node_modules/es-set-tostringtag/.nycrc ++/node_modules/es-set-tostringtag/CHANGELOG.md ++/node_modules/es-set-tostringtag/index.d.ts ++/node_modules/es-set-tostringtag/index.js ++/node_modules/es-set-tostringtag/LICENSE ++/node_modules/es-set-tostringtag/package.json ++/node_modules/es-set-tostringtag/README.md ++/node_modules/es-set-tostringtag/tsconfig.json ++/node_modules/follow-redirects/debug.js ++/node_modules/follow-redirects/http.js ++/node_modules/follow-redirects/https.js ++/node_modules/follow-redirects/index.js ++/node_modules/follow-redirects/LICENSE ++/node_modules/follow-redirects/package.json ++/node_modules/follow-redirects/README.md ++/node_modules/form-data/lib/browser.js ++/node_modules/form-data/lib/form_data.js ++/node_modules/form-data/lib/populate.js ++/node_modules/form-data/CHANGELOG.md ++/node_modules/form-data/index.d.ts ++/node_modules/form-data/License ++/node_modules/form-data/package.json ++/node_modules/form-data/README.md ++/node_modules/function-bind/.github/FUNDING.yml ++/node_modules/function-bind/.github/SECURITY.md ++/node_modules/function-bind/test/.eslintrc ++/node_modules/function-bind/test/index.js ++/node_modules/function-bind/.eslintrc ++/node_modules/function-bind/.nycrc ++/node_modules/function-bind/CHANGELOG.md ++/node_modules/function-bind/implementation.js ++/node_modules/function-bind/index.js ++/node_modules/function-bind/LICENSE ++/node_modules/function-bind/package.json ++/node_modules/function-bind/README.md ++/node_modules/get-intrinsic/.github/FUNDING.yml ++/node_modules/get-intrinsic/test/GetIntrinsic.js ++/node_modules/get-intrinsic/.eslintrc ++/node_modules/get-intrinsic/.nycrc ++/node_modules/get-intrinsic/CHANGELOG.md ++/node_modules/get-intrinsic/index.js ++/node_modules/get-intrinsic/LICENSE ++/node_modules/get-intrinsic/package.json ++/node_modules/get-intrinsic/README.md ++/node_modules/get-proto/.github/FUNDING.yml ++/node_modules/get-proto/test/index.js ++/node_modules/get-proto/.eslintrc ++/node_modules/get-proto/.nycrc ++/node_modules/get-proto/CHANGELOG.md ++/node_modules/get-proto/index.d.ts ++/node_modules/get-proto/index.js ++/node_modules/get-proto/LICENSE ++/node_modules/get-proto/Object.getPrototypeOf.d.ts ++/node_modules/get-proto/Object.getPrototypeOf.js ++/node_modules/get-proto/package.json ++/node_modules/get-proto/README.md ++/node_modules/get-proto/Reflect.getPrototypeOf.d.ts ++/node_modules/get-proto/Reflect.getPrototypeOf.js ++/node_modules/get-proto/tsconfig.json ++/node_modules/gopd/.github/FUNDING.yml ++/node_modules/gopd/test/index.js ++/node_modules/gopd/.eslintrc ++/node_modules/gopd/CHANGELOG.md ++/node_modules/gopd/gOPD.d.ts ++/node_modules/gopd/gOPD.js ++/node_modules/gopd/index.d.ts ++/node_modules/gopd/index.js ++/node_modules/gopd/LICENSE ++/node_modules/gopd/package.json ++/node_modules/gopd/README.md ++/node_modules/gopd/tsconfig.json ++/node_modules/has-symbols/.github/FUNDING.yml ++/node_modules/has-symbols/test/shams/core-js.js ++/node_modules/has-symbols/test/shams/get-own-property-symbols.js ++/node_modules/has-symbols/test/index.js ++/node_modules/has-symbols/test/tests.js ++/node_modules/has-symbols/.eslintrc ++/node_modules/has-symbols/.nycrc ++/node_modules/has-symbols/CHANGELOG.md ++/node_modules/has-symbols/index.d.ts ++/node_modules/has-symbols/index.js ++/node_modules/has-symbols/LICENSE ++/node_modules/has-symbols/package.json ++/node_modules/has-symbols/README.md ++/node_modules/has-symbols/shams.d.ts ++/node_modules/has-symbols/shams.js ++/node_modules/has-symbols/tsconfig.json ++/node_modules/has-tostringtag/.github/FUNDING.yml ++/node_modules/has-tostringtag/test/shams/core-js.js ++/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js ++/node_modules/has-tostringtag/test/index.js ++/node_modules/has-tostringtag/test/tests.js ++/node_modules/has-tostringtag/.eslintrc ++/node_modules/has-tostringtag/.nycrc ++/node_modules/has-tostringtag/CHANGELOG.md ++/node_modules/has-tostringtag/index.d.ts ++/node_modules/has-tostringtag/index.js ++/node_modules/has-tostringtag/LICENSE ++/node_modules/has-tostringtag/package.json ++/node_modules/has-tostringtag/README.md ++/node_modules/has-tostringtag/shams.d.ts ++/node_modules/has-tostringtag/shams.js ++/node_modules/has-tostringtag/tsconfig.json ++/node_modules/hasown/.github/FUNDING.yml ++/node_modules/hasown/.nycrc ++/node_modules/hasown/CHANGELOG.md ++/node_modules/hasown/index.d.ts ++/node_modules/hasown/index.js ++/node_modules/hasown/LICENSE ++/node_modules/hasown/package.json ++/node_modules/hasown/README.md ++/node_modules/hasown/tsconfig.json ++/node_modules/husky/bin.js ++/node_modules/husky/husky ++/node_modules/husky/index.d.ts ++/node_modules/husky/index.js ++/node_modules/husky/LICENSE ++/node_modules/husky/package.json ++/node_modules/husky/README.md ++/node_modules/json-bigint/lib/parse.js ++/node_modules/json-bigint/lib/stringify.js ++/node_modules/json-bigint/index.js ++/node_modules/json-bigint/LICENSE ++/node_modules/json-bigint/package.json ++/node_modules/json-bigint/README.md ++/node_modules/math-intrinsics/.github/FUNDING.yml ++/node_modules/math-intrinsics/constants/maxArrayLength.d.ts ++/node_modules/math-intrinsics/constants/maxArrayLength.js ++/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts ++/node_modules/math-intrinsics/constants/maxSafeInteger.js ++/node_modules/math-intrinsics/constants/maxValue.d.ts ++/node_modules/math-intrinsics/constants/maxValue.js ++/node_modules/math-intrinsics/test/index.js ++/node_modules/math-intrinsics/.eslintrc ++/node_modules/math-intrinsics/abs.d.ts ++/node_modules/math-intrinsics/abs.js ++/node_modules/math-intrinsics/CHANGELOG.md ++/node_modules/math-intrinsics/floor.d.ts ++/node_modules/math-intrinsics/floor.js ++/node_modules/math-intrinsics/isFinite.d.ts ++/node_modules/math-intrinsics/isFinite.js ++/node_modules/math-intrinsics/isInteger.d.ts ++/node_modules/math-intrinsics/isInteger.js ++/node_modules/math-intrinsics/isNaN.d.ts ++/node_modules/math-intrinsics/isNaN.js ++/node_modules/math-intrinsics/isNegativeZero.d.ts ++/node_modules/math-intrinsics/isNegativeZero.js ++/node_modules/math-intrinsics/LICENSE ++/node_modules/math-intrinsics/max.d.ts ++/node_modules/math-intrinsics/max.js ++/node_modules/math-intrinsics/min.d.ts ++/node_modules/math-intrinsics/min.js ++/node_modules/math-intrinsics/mod.d.ts ++/node_modules/math-intrinsics/mod.js ++/node_modules/math-intrinsics/package.json ++/node_modules/math-intrinsics/pow.d.ts ++/node_modules/math-intrinsics/pow.js ++/node_modules/math-intrinsics/README.md ++/node_modules/math-intrinsics/round.d.ts ++/node_modules/math-intrinsics/round.js ++/node_modules/math-intrinsics/sign.d.ts ++/node_modules/math-intrinsics/sign.js ++/node_modules/math-intrinsics/tsconfig.json ++/node_modules/mime-db/db.json ++/node_modules/mime-db/HISTORY.md ++/node_modules/mime-db/index.js ++/node_modules/mime-db/LICENSE ++/node_modules/mime-db/package.json ++/node_modules/mime-db/README.md ++/node_modules/mime-types/HISTORY.md ++/node_modules/mime-types/index.js ++/node_modules/mime-types/LICENSE ++/node_modules/mime-types/package.json ++/node_modules/mime-types/README.md ++/node_modules/proxy-from-env/index.js ++/node_modules/proxy-from-env/LICENSE ++/node_modules/proxy-from-env/package.json ++/node_modules/proxy-from-env/README.md ++/node_modules/.package-lock.json diff --git a/.idea/shelf/在进行更新之前于_2026_6_6_07_53_取消提交了更改_[更改]/shelved.patch b/.idea/shelf/在进行更新之前于_2026_6_6_07_53_取消提交了更改_[更改]/shelved.patch new file mode 100644 index 000000000..0c0abf9c8 --- /dev/null +++ b/.idea/shelf/在进行更新之前于_2026_6_6_07_53_取消提交了更改_[更改]/shelved.patch @@ -0,0 +1,566 @@ +Index: healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (revision 69518074f272ff73e8e93e281d8fc7c4dff90486) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (date 1780648645386) +@@ -434,7 +434,7 @@ + import OrderGroupDrawer from '@/views/doctorstation/components/prescription/orderGroupDrawer.vue'; + import PrescriptionHistory from '@/views/doctorstation/components/prescription/prescriptionHistory.vue'; + import Decimal from 'decimal.js'; +-import {ElLoading, ElMessage, ElMessageBox} from 'element-plus'; ++import {ElMessage, ElMessageBox} from 'element-plus'; + import useUserStore from '@/store/modules/user'; + import ApplicationFormBottomBtn from './applicationForm/applicationFormBottomBtn.vue'; + import LeaveHospitalDialog from './applicationForm/leaveHospitalDialog.vue'; +@@ -617,7 +617,7 @@ + }, + ]; + +-let loadingInstance = undefined; ++// loadingInstance removed - using loading ref instead + onMounted(() => { + document.addEventListener('keydown', escKeyListener); + }); +@@ -672,10 +672,7 @@ + } + // 获取列表信息 + function getListInfo(addNewRow) { +- loadingInstance = ElLoading.service({ fullscreen: true }); +- setTimeout(() => { +- loadingInstance.close(); +- }, 180); ++ loading.value = true; + isAdding.value = false; + expandOrder.value = []; + // 🔧 修复:先加载科室树,再处理处方数据 +@@ -687,7 +684,7 @@ + getPrescriptionList(patientInfo.value.encounterId).then((res) => { + // 等待科室树加载完成后再处理处方数据,确保 resolveOrgId 能正确匹配 + orgTreePromise.then(() => { +- loadingInstance.close(); ++ loading.value = false; + prescriptionList.value = res.data + .map((item) => { + const parsedContent = JSON.parse(item.contentJson); +@@ -747,7 +744,7 @@ + handleAddPrescription(); + } + }); +- }); ++ }).catch(() => { loading.value = false; }); + getContract({ encounterId: patientInfo.value.encounterId }).then((res) => { + contractList.value = res.data; + }); +Index: .gitignore +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/.gitignore b/.gitignore +new file mode 100644 +--- /dev/null (date 1780648645414) ++++ b/.gitignore (date 1780648645414) +@@ -0,0 +1,418 @@ ++/.vscode/mcp.json ++/.vscode/settings.json ++/.qwen/settings.json.orig ++/.playwright-mcp/console-2026-03-31T08-27-30-883Z.log ++/.playwright-mcp/console-2026-05-19T03-10-43-600Z.log ++/.playwright-mcp/console-2026-05-19T03-18-23-396Z.log ++/.playwright-mcp/console-2026-05-19T03-18-51-946Z.log ++/.playwright-mcp/page-2026-05-11T02-56-22-027Z.yml ++/.playwright-mcp/page-2026-05-11T02-56-30-095Z.yml ++/.playwright-mcp/page-2026-05-19T03-10-44-171Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-20-520Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-40-168Z.yml ++/.playwright-mcp/page-2026-05-19T03-12-10-968Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-23-610Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-52-634Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-19-472Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-36-669Z.yml ++/.playwright-mcp/page-2026-05-19T03-20-04-342Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-08-820Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-43-735Z.yml ++/.idea/compiler.xml ++/.idea/encodings.xml ++/.idea/jarRepositories.xml ++/.idea/misc.xml ++/.idea/vcs.xml ++/.idea/workspace.xml ++/node_modules/.bin/husky ++/node_modules/.bin/husky.cmd ++/node_modules/.bin/husky.ps1 ++/node_modules/asynckit/lib/abort.js ++/node_modules/asynckit/lib/async.js ++/node_modules/asynckit/lib/defer.js ++/node_modules/asynckit/lib/iterate.js ++/node_modules/asynckit/lib/readable_asynckit.js ++/node_modules/asynckit/lib/readable_parallel.js ++/node_modules/asynckit/lib/readable_serial.js ++/node_modules/asynckit/lib/readable_serial_ordered.js ++/node_modules/asynckit/lib/state.js ++/node_modules/asynckit/lib/streamify.js ++/node_modules/asynckit/lib/terminator.js ++/node_modules/asynckit/bench.js ++/node_modules/asynckit/index.js ++/node_modules/asynckit/LICENSE ++/node_modules/asynckit/package.json ++/node_modules/asynckit/parallel.js ++/node_modules/asynckit/README.md ++/node_modules/asynckit/serial.js ++/node_modules/asynckit/serialOrdered.js ++/node_modules/asynckit/stream.js ++/node_modules/axios/dist/browser/axios.cjs ++/node_modules/axios/dist/esm/axios.js ++/node_modules/axios/dist/esm/axios.min.js ++/node_modules/axios/dist/esm/axios.min.js.map ++/node_modules/axios/dist/node/axios.cjs ++/node_modules/axios/dist/axios.js ++/node_modules/axios/dist/axios.min.js ++/node_modules/axios/dist/axios.min.js.map ++/node_modules/axios/lib/adapters/adapters.js ++/node_modules/axios/lib/adapters/fetch.js ++/node_modules/axios/lib/adapters/http.js ++/node_modules/axios/lib/adapters/README.md ++/node_modules/axios/lib/adapters/xhr.js ++/node_modules/axios/lib/cancel/CanceledError.js ++/node_modules/axios/lib/cancel/CancelToken.js ++/node_modules/axios/lib/cancel/isCancel.js ++/node_modules/axios/lib/core/Axios.js ++/node_modules/axios/lib/core/AxiosError.js ++/node_modules/axios/lib/core/AxiosHeaders.js ++/node_modules/axios/lib/core/buildFullPath.js ++/node_modules/axios/lib/core/dispatchRequest.js ++/node_modules/axios/lib/core/InterceptorManager.js ++/node_modules/axios/lib/core/mergeConfig.js ++/node_modules/axios/lib/core/README.md ++/node_modules/axios/lib/core/settle.js ++/node_modules/axios/lib/core/transformData.js ++/node_modules/axios/lib/defaults/index.js ++/node_modules/axios/lib/defaults/transitional.js ++/node_modules/axios/lib/env/classes/FormData.js ++/node_modules/axios/lib/env/data.js ++/node_modules/axios/lib/env/README.md ++/node_modules/axios/lib/helpers/AxiosTransformStream.js ++/node_modules/axios/lib/helpers/AxiosURLSearchParams.js ++/node_modules/axios/lib/helpers/bind.js ++/node_modules/axios/lib/helpers/buildURL.js ++/node_modules/axios/lib/helpers/callbackify.js ++/node_modules/axios/lib/helpers/combineURLs.js ++/node_modules/axios/lib/helpers/composeSignals.js ++/node_modules/axios/lib/helpers/cookies.js ++/node_modules/axios/lib/helpers/deprecatedMethod.js ++/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js ++/node_modules/axios/lib/helpers/formDataToJSON.js ++/node_modules/axios/lib/helpers/formDataToStream.js ++/node_modules/axios/lib/helpers/fromDataURI.js ++/node_modules/axios/lib/helpers/HttpStatusCode.js ++/node_modules/axios/lib/helpers/isAbsoluteURL.js ++/node_modules/axios/lib/helpers/isAxiosError.js ++/node_modules/axios/lib/helpers/isURLSameOrigin.js ++/node_modules/axios/lib/helpers/null.js ++/node_modules/axios/lib/helpers/parseHeaders.js ++/node_modules/axios/lib/helpers/parseProtocol.js ++/node_modules/axios/lib/helpers/progressEventReducer.js ++/node_modules/axios/lib/helpers/readBlob.js ++/node_modules/axios/lib/helpers/README.md ++/node_modules/axios/lib/helpers/resolveConfig.js ++/node_modules/axios/lib/helpers/speedometer.js ++/node_modules/axios/lib/helpers/spread.js ++/node_modules/axios/lib/helpers/throttle.js ++/node_modules/axios/lib/helpers/toFormData.js ++/node_modules/axios/lib/helpers/toURLEncodedForm.js ++/node_modules/axios/lib/helpers/trackStream.js ++/node_modules/axios/lib/helpers/validator.js ++/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js ++/node_modules/axios/lib/platform/browser/classes/Blob.js ++/node_modules/axios/lib/platform/browser/classes/FormData.js ++/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/browser/index.js ++/node_modules/axios/lib/platform/common/utils.js ++/node_modules/axios/lib/platform/node/classes/FormData.js ++/node_modules/axios/lib/platform/node/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/node/index.js ++/node_modules/axios/lib/platform/index.js ++/node_modules/axios/lib/axios.js ++/node_modules/axios/lib/utils.js ++/node_modules/axios/CHANGELOG.md ++/node_modules/axios/index.d.cts ++/node_modules/axios/index.d.ts ++/node_modules/axios/index.js ++/node_modules/axios/LICENSE ++/node_modules/axios/MIGRATION_GUIDE.md ++/node_modules/axios/package.json ++/node_modules/axios/README.md ++/node_modules/bignumber.js/doc/API.html ++/node_modules/bignumber.js/bignumber.d.mts ++/node_modules/bignumber.js/bignumber.d.ts ++/node_modules/bignumber.js/bignumber.js ++/node_modules/bignumber.js/bignumber.mjs ++/node_modules/bignumber.js/CHANGELOG.md ++/node_modules/bignumber.js/LICENCE.md ++/node_modules/bignumber.js/package.json ++/node_modules/bignumber.js/README.md ++/node_modules/bignumber.js/types.d.ts ++/node_modules/call-bind-apply-helpers/.github/FUNDING.yml ++/node_modules/call-bind-apply-helpers/test/index.js ++/node_modules/call-bind-apply-helpers/.eslintrc ++/node_modules/call-bind-apply-helpers/.nycrc ++/node_modules/call-bind-apply-helpers/actualApply.d.ts ++/node_modules/call-bind-apply-helpers/actualApply.js ++/node_modules/call-bind-apply-helpers/applyBind.d.ts ++/node_modules/call-bind-apply-helpers/applyBind.js ++/node_modules/call-bind-apply-helpers/CHANGELOG.md ++/node_modules/call-bind-apply-helpers/functionApply.d.ts ++/node_modules/call-bind-apply-helpers/functionApply.js ++/node_modules/call-bind-apply-helpers/functionCall.d.ts ++/node_modules/call-bind-apply-helpers/functionCall.js ++/node_modules/call-bind-apply-helpers/index.d.ts ++/node_modules/call-bind-apply-helpers/index.js ++/node_modules/call-bind-apply-helpers/LICENSE ++/node_modules/call-bind-apply-helpers/package.json ++/node_modules/call-bind-apply-helpers/README.md ++/node_modules/call-bind-apply-helpers/reflectApply.d.ts ++/node_modules/call-bind-apply-helpers/reflectApply.js ++/node_modules/call-bind-apply-helpers/tsconfig.json ++/node_modules/combined-stream/lib/combined_stream.js ++/node_modules/combined-stream/License ++/node_modules/combined-stream/package.json ++/node_modules/combined-stream/Readme.md ++/node_modules/combined-stream/yarn.lock ++/node_modules/delayed-stream/lib/delayed_stream.js ++/node_modules/delayed-stream/.npmignore ++/node_modules/delayed-stream/License ++/node_modules/delayed-stream/Makefile ++/node_modules/delayed-stream/package.json ++/node_modules/delayed-stream/Readme.md ++/node_modules/dunder-proto/.github/FUNDING.yml ++/node_modules/dunder-proto/test/get.js ++/node_modules/dunder-proto/test/index.js ++/node_modules/dunder-proto/test/set.js ++/node_modules/dunder-proto/.eslintrc ++/node_modules/dunder-proto/.nycrc ++/node_modules/dunder-proto/CHANGELOG.md ++/node_modules/dunder-proto/get.d.ts ++/node_modules/dunder-proto/get.js ++/node_modules/dunder-proto/LICENSE ++/node_modules/dunder-proto/package.json ++/node_modules/dunder-proto/README.md ++/node_modules/dunder-proto/set.d.ts ++/node_modules/dunder-proto/set.js ++/node_modules/dunder-proto/tsconfig.json ++/node_modules/es-define-property/.github/FUNDING.yml ++/node_modules/es-define-property/test/index.js ++/node_modules/es-define-property/.eslintrc ++/node_modules/es-define-property/.nycrc ++/node_modules/es-define-property/CHANGELOG.md ++/node_modules/es-define-property/index.d.ts ++/node_modules/es-define-property/index.js ++/node_modules/es-define-property/LICENSE ++/node_modules/es-define-property/package.json ++/node_modules/es-define-property/README.md ++/node_modules/es-define-property/tsconfig.json ++/node_modules/es-errors/.github/FUNDING.yml ++/node_modules/es-errors/test/index.js ++/node_modules/es-errors/.eslintrc ++/node_modules/es-errors/CHANGELOG.md ++/node_modules/es-errors/eval.d.ts ++/node_modules/es-errors/eval.js ++/node_modules/es-errors/index.d.ts ++/node_modules/es-errors/index.js ++/node_modules/es-errors/LICENSE ++/node_modules/es-errors/package.json ++/node_modules/es-errors/range.d.ts ++/node_modules/es-errors/range.js ++/node_modules/es-errors/README.md ++/node_modules/es-errors/ref.d.ts ++/node_modules/es-errors/ref.js ++/node_modules/es-errors/syntax.d.ts ++/node_modules/es-errors/syntax.js ++/node_modules/es-errors/tsconfig.json ++/node_modules/es-errors/type.d.ts ++/node_modules/es-errors/type.js ++/node_modules/es-errors/uri.d.ts ++/node_modules/es-errors/uri.js ++/node_modules/es-object-atoms/.github/FUNDING.yml ++/node_modules/es-object-atoms/test/index.js ++/node_modules/es-object-atoms/.eslintrc ++/node_modules/es-object-atoms/CHANGELOG.md ++/node_modules/es-object-atoms/index.d.ts ++/node_modules/es-object-atoms/index.js ++/node_modules/es-object-atoms/isObject.d.ts ++/node_modules/es-object-atoms/isObject.js ++/node_modules/es-object-atoms/LICENSE ++/node_modules/es-object-atoms/package.json ++/node_modules/es-object-atoms/README.md ++/node_modules/es-object-atoms/RequireObjectCoercible.d.ts ++/node_modules/es-object-atoms/RequireObjectCoercible.js ++/node_modules/es-object-atoms/ToObject.d.ts ++/node_modules/es-object-atoms/ToObject.js ++/node_modules/es-object-atoms/tsconfig.json ++/node_modules/es-set-tostringtag/test/index.js ++/node_modules/es-set-tostringtag/.eslintrc ++/node_modules/es-set-tostringtag/.nycrc ++/node_modules/es-set-tostringtag/CHANGELOG.md ++/node_modules/es-set-tostringtag/index.d.ts ++/node_modules/es-set-tostringtag/index.js ++/node_modules/es-set-tostringtag/LICENSE ++/node_modules/es-set-tostringtag/package.json ++/node_modules/es-set-tostringtag/README.md ++/node_modules/es-set-tostringtag/tsconfig.json ++/node_modules/follow-redirects/debug.js ++/node_modules/follow-redirects/http.js ++/node_modules/follow-redirects/https.js ++/node_modules/follow-redirects/index.js ++/node_modules/follow-redirects/LICENSE ++/node_modules/follow-redirects/package.json ++/node_modules/follow-redirects/README.md ++/node_modules/form-data/lib/browser.js ++/node_modules/form-data/lib/form_data.js ++/node_modules/form-data/lib/populate.js ++/node_modules/form-data/CHANGELOG.md ++/node_modules/form-data/index.d.ts ++/node_modules/form-data/License ++/node_modules/form-data/package.json ++/node_modules/form-data/README.md ++/node_modules/function-bind/.github/FUNDING.yml ++/node_modules/function-bind/.github/SECURITY.md ++/node_modules/function-bind/test/.eslintrc ++/node_modules/function-bind/test/index.js ++/node_modules/function-bind/.eslintrc ++/node_modules/function-bind/.nycrc ++/node_modules/function-bind/CHANGELOG.md ++/node_modules/function-bind/implementation.js ++/node_modules/function-bind/index.js ++/node_modules/function-bind/LICENSE ++/node_modules/function-bind/package.json ++/node_modules/function-bind/README.md ++/node_modules/get-intrinsic/.github/FUNDING.yml ++/node_modules/get-intrinsic/test/GetIntrinsic.js ++/node_modules/get-intrinsic/.eslintrc ++/node_modules/get-intrinsic/.nycrc ++/node_modules/get-intrinsic/CHANGELOG.md ++/node_modules/get-intrinsic/index.js ++/node_modules/get-intrinsic/LICENSE ++/node_modules/get-intrinsic/package.json ++/node_modules/get-intrinsic/README.md ++/node_modules/get-proto/.github/FUNDING.yml ++/node_modules/get-proto/test/index.js ++/node_modules/get-proto/.eslintrc ++/node_modules/get-proto/.nycrc ++/node_modules/get-proto/CHANGELOG.md ++/node_modules/get-proto/index.d.ts ++/node_modules/get-proto/index.js ++/node_modules/get-proto/LICENSE ++/node_modules/get-proto/Object.getPrototypeOf.d.ts ++/node_modules/get-proto/Object.getPrototypeOf.js ++/node_modules/get-proto/package.json ++/node_modules/get-proto/README.md ++/node_modules/get-proto/Reflect.getPrototypeOf.d.ts ++/node_modules/get-proto/Reflect.getPrototypeOf.js ++/node_modules/get-proto/tsconfig.json ++/node_modules/gopd/.github/FUNDING.yml ++/node_modules/gopd/test/index.js ++/node_modules/gopd/.eslintrc ++/node_modules/gopd/CHANGELOG.md ++/node_modules/gopd/gOPD.d.ts ++/node_modules/gopd/gOPD.js ++/node_modules/gopd/index.d.ts ++/node_modules/gopd/index.js ++/node_modules/gopd/LICENSE ++/node_modules/gopd/package.json ++/node_modules/gopd/README.md ++/node_modules/gopd/tsconfig.json ++/node_modules/has-symbols/.github/FUNDING.yml ++/node_modules/has-symbols/test/shams/core-js.js ++/node_modules/has-symbols/test/shams/get-own-property-symbols.js ++/node_modules/has-symbols/test/index.js ++/node_modules/has-symbols/test/tests.js ++/node_modules/has-symbols/.eslintrc ++/node_modules/has-symbols/.nycrc ++/node_modules/has-symbols/CHANGELOG.md ++/node_modules/has-symbols/index.d.ts ++/node_modules/has-symbols/index.js ++/node_modules/has-symbols/LICENSE ++/node_modules/has-symbols/package.json ++/node_modules/has-symbols/README.md ++/node_modules/has-symbols/shams.d.ts ++/node_modules/has-symbols/shams.js ++/node_modules/has-symbols/tsconfig.json ++/node_modules/has-tostringtag/.github/FUNDING.yml ++/node_modules/has-tostringtag/test/shams/core-js.js ++/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js ++/node_modules/has-tostringtag/test/index.js ++/node_modules/has-tostringtag/test/tests.js ++/node_modules/has-tostringtag/.eslintrc ++/node_modules/has-tostringtag/.nycrc ++/node_modules/has-tostringtag/CHANGELOG.md ++/node_modules/has-tostringtag/index.d.ts ++/node_modules/has-tostringtag/index.js ++/node_modules/has-tostringtag/LICENSE ++/node_modules/has-tostringtag/package.json ++/node_modules/has-tostringtag/README.md ++/node_modules/has-tostringtag/shams.d.ts ++/node_modules/has-tostringtag/shams.js ++/node_modules/has-tostringtag/tsconfig.json ++/node_modules/hasown/.github/FUNDING.yml ++/node_modules/hasown/.nycrc ++/node_modules/hasown/CHANGELOG.md ++/node_modules/hasown/index.d.ts ++/node_modules/hasown/index.js ++/node_modules/hasown/LICENSE ++/node_modules/hasown/package.json ++/node_modules/hasown/README.md ++/node_modules/hasown/tsconfig.json ++/node_modules/husky/bin.js ++/node_modules/husky/husky ++/node_modules/husky/index.d.ts ++/node_modules/husky/index.js ++/node_modules/husky/LICENSE ++/node_modules/husky/package.json ++/node_modules/husky/README.md ++/node_modules/json-bigint/lib/parse.js ++/node_modules/json-bigint/lib/stringify.js ++/node_modules/json-bigint/index.js ++/node_modules/json-bigint/LICENSE ++/node_modules/json-bigint/package.json ++/node_modules/json-bigint/README.md ++/node_modules/math-intrinsics/.github/FUNDING.yml ++/node_modules/math-intrinsics/constants/maxArrayLength.d.ts ++/node_modules/math-intrinsics/constants/maxArrayLength.js ++/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts ++/node_modules/math-intrinsics/constants/maxSafeInteger.js ++/node_modules/math-intrinsics/constants/maxValue.d.ts ++/node_modules/math-intrinsics/constants/maxValue.js ++/node_modules/math-intrinsics/test/index.js ++/node_modules/math-intrinsics/.eslintrc ++/node_modules/math-intrinsics/abs.d.ts ++/node_modules/math-intrinsics/abs.js ++/node_modules/math-intrinsics/CHANGELOG.md ++/node_modules/math-intrinsics/floor.d.ts ++/node_modules/math-intrinsics/floor.js ++/node_modules/math-intrinsics/isFinite.d.ts ++/node_modules/math-intrinsics/isFinite.js ++/node_modules/math-intrinsics/isInteger.d.ts ++/node_modules/math-intrinsics/isInteger.js ++/node_modules/math-intrinsics/isNaN.d.ts ++/node_modules/math-intrinsics/isNaN.js ++/node_modules/math-intrinsics/isNegativeZero.d.ts ++/node_modules/math-intrinsics/isNegativeZero.js ++/node_modules/math-intrinsics/LICENSE ++/node_modules/math-intrinsics/max.d.ts ++/node_modules/math-intrinsics/max.js ++/node_modules/math-intrinsics/min.d.ts ++/node_modules/math-intrinsics/min.js ++/node_modules/math-intrinsics/mod.d.ts ++/node_modules/math-intrinsics/mod.js ++/node_modules/math-intrinsics/package.json ++/node_modules/math-intrinsics/pow.d.ts ++/node_modules/math-intrinsics/pow.js ++/node_modules/math-intrinsics/README.md ++/node_modules/math-intrinsics/round.d.ts ++/node_modules/math-intrinsics/round.js ++/node_modules/math-intrinsics/sign.d.ts ++/node_modules/math-intrinsics/sign.js ++/node_modules/math-intrinsics/tsconfig.json ++/node_modules/mime-db/db.json ++/node_modules/mime-db/HISTORY.md ++/node_modules/mime-db/index.js ++/node_modules/mime-db/LICENSE ++/node_modules/mime-db/package.json ++/node_modules/mime-db/README.md ++/node_modules/mime-types/HISTORY.md ++/node_modules/mime-types/index.js ++/node_modules/mime-types/LICENSE ++/node_modules/mime-types/package.json ++/node_modules/mime-types/README.md ++/node_modules/proxy-from-env/index.js ++/node_modules/proxy-from-env/LICENSE ++/node_modules/proxy-from-env/package.json ++/node_modules/proxy-from-env/README.md ++/node_modules/.package-lock.json +Index: healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (revision 69518074f272ff73e8e93e281d8fc7c4dff90486) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (date 1780648645399) +@@ -252,31 +252,37 @@ + // 处理节点点击,根据后台返回的路径加载组件 + const handleNodeClick = (data, node) => { + if (node.isLeaf) { ++ const newRouter = data.document?.vueRouter; ++ const oldRouter = currentSelectTemplate.value?.vueRouter; ++ const isSameTemplate = newRouter && oldRouter && newRouter === oldRouter; ++ + // 存储当前节点数据 + currentSelectTemplate.value = data.document; + +- // 在切换组件前先重置表单数据,避免显示之前的数据 +- editForm.value = { +- id: '', +- definitionId: '', +- definitionBusNo: '', +- contentJson: '', +- statusEnum: 1, +- organizationId: 0, +- encounterId: '', +- patientId: '', +- recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), +- createBy: '', +- source: '', +- }; +- +- // 先清空当前组件,再设置新组件,确保组件完全重新渲染 +- currentComponent.value = undefined; +- +- // 使用 nextTick 确保 DOM 更新后再设置新组件 +- nextTick(() => { +- currentComponent.value = currentSelectTemplate.value.vueRouter; +- }); ++ if (isSameTemplate) { ++ // 同一模板(仅患者切换):不卸载组件、不清空表单,避免闪烁 ++ // loading 遮罩覆盖过渡,loadLatestMedicalRecord 会原子替换表单数据 ++ loading.value = true; ++ } else { ++ // 不同模板:先清空再设置,确保组件完全重新渲染 ++ editForm.value = { ++ id: '', ++ definitionId: '', ++ definitionBusNo: '', ++ contentJson: '', ++ statusEnum: 1, ++ organizationId: 0, ++ encounterId: '', ++ patientId: '', ++ recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), ++ createBy: '', ++ source: '', ++ }; ++ currentComponent.value = undefined; ++ nextTick(() => { ++ currentComponent.value = newRouter; ++ }); ++ } + } else { + currentSelectTemplate.value = { + id: '', +@@ -624,8 +630,8 @@ + // 加载最新的病历数据并回显 + const loadLatestMedicalRecord = async () => { + if (!patientInfo.value?.encounterId || !currentSelectTemplate.value.id) return; +- editForm.value.id = ''; + loading.value = true; ++ editForm.value.id = ''; + try { + // 获取患者的历史病历记录 + const res = await getRecordByEncounterIdList({ diff --git a/.idea/shelf/在进行更新之前于_2026_6_6_07_58_取消提交了更改_[更改]/shelved.patch b/.idea/shelf/在进行更新之前于_2026_6_6_07_58_取消提交了更改_[更改]/shelved.patch new file mode 100644 index 000000000..17f0e9bea --- /dev/null +++ b/.idea/shelf/在进行更新之前于_2026_6_6_07_58_取消提交了更改_[更改]/shelved.patch @@ -0,0 +1,566 @@ +Index: healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (revision a582a97ef121357e262bea193dc1b28a13d82f16) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (date 1780703608798) +@@ -449,7 +449,7 @@ + import OrderGroupDrawer from '@/views/doctorstation/components/prescription/orderGroupDrawer.vue'; + import PrescriptionHistory from '@/views/doctorstation/components/prescription/prescriptionHistory.vue'; + import Decimal from 'decimal.js'; +-import {ElLoading, ElMessage, ElMessageBox} from 'element-plus'; ++import {ElMessage, ElMessageBox} from 'element-plus'; + import useUserStore from '@/store/modules/user'; + import ApplicationFormBottomBtn from './applicationForm/applicationFormBottomBtn.vue'; + import LeaveHospitalDialog from './applicationForm/leaveHospitalDialog.vue'; +@@ -643,7 +643,7 @@ + }, + ]; + +-let loadingInstance = undefined; ++// loadingInstance removed - using loading ref instead + onMounted(() => { + document.addEventListener('keydown', escKeyListener); + }); +@@ -697,10 +697,7 @@ + } + // 获取列表信息 + function getListInfo(addNewRow) { +- loadingInstance = ElLoading.service({ fullscreen: true }); +- setTimeout(() => { +- loadingInstance.close(); +- }, 180); ++ loading.value = true; + isAdding.value = false; + collapseAllExpanded(); + // 🔧 修复:先加载科室树,再处理处方数据 +@@ -712,7 +709,7 @@ + getPrescriptionList(patientInfo.value.encounterId).then((res) => { + // 等待科室树加载完成后再处理处方数据,确保 resolveOrgId 能正确匹配 + orgTreePromise.then(() => { +- loadingInstance.close(); ++ loading.value = false; + prescriptionList.value = res.data + .map((item) => { + const parsedContent = JSON.parse(item.contentJson); +@@ -772,7 +769,7 @@ + handleAddPrescription(); + } + }); +- }); ++ }).catch(() => { loading.value = false; }); + getContract({ encounterId: patientInfo.value.encounterId }).then((res) => { + contractList.value = res.data; + }); +Index: .gitignore +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/.gitignore b/.gitignore +new file mode 100644 +--- /dev/null (date 1780703608832) ++++ b/.gitignore (date 1780703608832) +@@ -0,0 +1,418 @@ ++/.vscode/mcp.json ++/.vscode/settings.json ++/.qwen/settings.json.orig ++/.playwright-mcp/console-2026-03-31T08-27-30-883Z.log ++/.playwright-mcp/console-2026-05-19T03-10-43-600Z.log ++/.playwright-mcp/console-2026-05-19T03-18-23-396Z.log ++/.playwright-mcp/console-2026-05-19T03-18-51-946Z.log ++/.playwright-mcp/page-2026-05-11T02-56-22-027Z.yml ++/.playwright-mcp/page-2026-05-11T02-56-30-095Z.yml ++/.playwright-mcp/page-2026-05-19T03-10-44-171Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-20-520Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-40-168Z.yml ++/.playwright-mcp/page-2026-05-19T03-12-10-968Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-23-610Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-52-634Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-19-472Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-36-669Z.yml ++/.playwright-mcp/page-2026-05-19T03-20-04-342Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-08-820Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-43-735Z.yml ++/.idea/compiler.xml ++/.idea/encodings.xml ++/.idea/jarRepositories.xml ++/.idea/misc.xml ++/.idea/vcs.xml ++/.idea/workspace.xml ++/node_modules/.bin/husky ++/node_modules/.bin/husky.cmd ++/node_modules/.bin/husky.ps1 ++/node_modules/asynckit/lib/abort.js ++/node_modules/asynckit/lib/async.js ++/node_modules/asynckit/lib/defer.js ++/node_modules/asynckit/lib/iterate.js ++/node_modules/asynckit/lib/readable_asynckit.js ++/node_modules/asynckit/lib/readable_parallel.js ++/node_modules/asynckit/lib/readable_serial.js ++/node_modules/asynckit/lib/readable_serial_ordered.js ++/node_modules/asynckit/lib/state.js ++/node_modules/asynckit/lib/streamify.js ++/node_modules/asynckit/lib/terminator.js ++/node_modules/asynckit/bench.js ++/node_modules/asynckit/index.js ++/node_modules/asynckit/LICENSE ++/node_modules/asynckit/package.json ++/node_modules/asynckit/parallel.js ++/node_modules/asynckit/README.md ++/node_modules/asynckit/serial.js ++/node_modules/asynckit/serialOrdered.js ++/node_modules/asynckit/stream.js ++/node_modules/axios/dist/browser/axios.cjs ++/node_modules/axios/dist/esm/axios.js ++/node_modules/axios/dist/esm/axios.min.js ++/node_modules/axios/dist/esm/axios.min.js.map ++/node_modules/axios/dist/node/axios.cjs ++/node_modules/axios/dist/axios.js ++/node_modules/axios/dist/axios.min.js ++/node_modules/axios/dist/axios.min.js.map ++/node_modules/axios/lib/adapters/adapters.js ++/node_modules/axios/lib/adapters/fetch.js ++/node_modules/axios/lib/adapters/http.js ++/node_modules/axios/lib/adapters/README.md ++/node_modules/axios/lib/adapters/xhr.js ++/node_modules/axios/lib/cancel/CanceledError.js ++/node_modules/axios/lib/cancel/CancelToken.js ++/node_modules/axios/lib/cancel/isCancel.js ++/node_modules/axios/lib/core/Axios.js ++/node_modules/axios/lib/core/AxiosError.js ++/node_modules/axios/lib/core/AxiosHeaders.js ++/node_modules/axios/lib/core/buildFullPath.js ++/node_modules/axios/lib/core/dispatchRequest.js ++/node_modules/axios/lib/core/InterceptorManager.js ++/node_modules/axios/lib/core/mergeConfig.js ++/node_modules/axios/lib/core/README.md ++/node_modules/axios/lib/core/settle.js ++/node_modules/axios/lib/core/transformData.js ++/node_modules/axios/lib/defaults/index.js ++/node_modules/axios/lib/defaults/transitional.js ++/node_modules/axios/lib/env/classes/FormData.js ++/node_modules/axios/lib/env/data.js ++/node_modules/axios/lib/env/README.md ++/node_modules/axios/lib/helpers/AxiosTransformStream.js ++/node_modules/axios/lib/helpers/AxiosURLSearchParams.js ++/node_modules/axios/lib/helpers/bind.js ++/node_modules/axios/lib/helpers/buildURL.js ++/node_modules/axios/lib/helpers/callbackify.js ++/node_modules/axios/lib/helpers/combineURLs.js ++/node_modules/axios/lib/helpers/composeSignals.js ++/node_modules/axios/lib/helpers/cookies.js ++/node_modules/axios/lib/helpers/deprecatedMethod.js ++/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js ++/node_modules/axios/lib/helpers/formDataToJSON.js ++/node_modules/axios/lib/helpers/formDataToStream.js ++/node_modules/axios/lib/helpers/fromDataURI.js ++/node_modules/axios/lib/helpers/HttpStatusCode.js ++/node_modules/axios/lib/helpers/isAbsoluteURL.js ++/node_modules/axios/lib/helpers/isAxiosError.js ++/node_modules/axios/lib/helpers/isURLSameOrigin.js ++/node_modules/axios/lib/helpers/null.js ++/node_modules/axios/lib/helpers/parseHeaders.js ++/node_modules/axios/lib/helpers/parseProtocol.js ++/node_modules/axios/lib/helpers/progressEventReducer.js ++/node_modules/axios/lib/helpers/readBlob.js ++/node_modules/axios/lib/helpers/README.md ++/node_modules/axios/lib/helpers/resolveConfig.js ++/node_modules/axios/lib/helpers/speedometer.js ++/node_modules/axios/lib/helpers/spread.js ++/node_modules/axios/lib/helpers/throttle.js ++/node_modules/axios/lib/helpers/toFormData.js ++/node_modules/axios/lib/helpers/toURLEncodedForm.js ++/node_modules/axios/lib/helpers/trackStream.js ++/node_modules/axios/lib/helpers/validator.js ++/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js ++/node_modules/axios/lib/platform/browser/classes/Blob.js ++/node_modules/axios/lib/platform/browser/classes/FormData.js ++/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/browser/index.js ++/node_modules/axios/lib/platform/common/utils.js ++/node_modules/axios/lib/platform/node/classes/FormData.js ++/node_modules/axios/lib/platform/node/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/node/index.js ++/node_modules/axios/lib/platform/index.js ++/node_modules/axios/lib/axios.js ++/node_modules/axios/lib/utils.js ++/node_modules/axios/CHANGELOG.md ++/node_modules/axios/index.d.cts ++/node_modules/axios/index.d.ts ++/node_modules/axios/index.js ++/node_modules/axios/LICENSE ++/node_modules/axios/MIGRATION_GUIDE.md ++/node_modules/axios/package.json ++/node_modules/axios/README.md ++/node_modules/bignumber.js/doc/API.html ++/node_modules/bignumber.js/bignumber.d.mts ++/node_modules/bignumber.js/bignumber.d.ts ++/node_modules/bignumber.js/bignumber.js ++/node_modules/bignumber.js/bignumber.mjs ++/node_modules/bignumber.js/CHANGELOG.md ++/node_modules/bignumber.js/LICENCE.md ++/node_modules/bignumber.js/package.json ++/node_modules/bignumber.js/README.md ++/node_modules/bignumber.js/types.d.ts ++/node_modules/call-bind-apply-helpers/.github/FUNDING.yml ++/node_modules/call-bind-apply-helpers/test/index.js ++/node_modules/call-bind-apply-helpers/.eslintrc ++/node_modules/call-bind-apply-helpers/.nycrc ++/node_modules/call-bind-apply-helpers/actualApply.d.ts ++/node_modules/call-bind-apply-helpers/actualApply.js ++/node_modules/call-bind-apply-helpers/applyBind.d.ts ++/node_modules/call-bind-apply-helpers/applyBind.js ++/node_modules/call-bind-apply-helpers/CHANGELOG.md ++/node_modules/call-bind-apply-helpers/functionApply.d.ts ++/node_modules/call-bind-apply-helpers/functionApply.js ++/node_modules/call-bind-apply-helpers/functionCall.d.ts ++/node_modules/call-bind-apply-helpers/functionCall.js ++/node_modules/call-bind-apply-helpers/index.d.ts ++/node_modules/call-bind-apply-helpers/index.js ++/node_modules/call-bind-apply-helpers/LICENSE ++/node_modules/call-bind-apply-helpers/package.json ++/node_modules/call-bind-apply-helpers/README.md ++/node_modules/call-bind-apply-helpers/reflectApply.d.ts ++/node_modules/call-bind-apply-helpers/reflectApply.js ++/node_modules/call-bind-apply-helpers/tsconfig.json ++/node_modules/combined-stream/lib/combined_stream.js ++/node_modules/combined-stream/License ++/node_modules/combined-stream/package.json ++/node_modules/combined-stream/Readme.md ++/node_modules/combined-stream/yarn.lock ++/node_modules/delayed-stream/lib/delayed_stream.js ++/node_modules/delayed-stream/.npmignore ++/node_modules/delayed-stream/License ++/node_modules/delayed-stream/Makefile ++/node_modules/delayed-stream/package.json ++/node_modules/delayed-stream/Readme.md ++/node_modules/dunder-proto/.github/FUNDING.yml ++/node_modules/dunder-proto/test/get.js ++/node_modules/dunder-proto/test/index.js ++/node_modules/dunder-proto/test/set.js ++/node_modules/dunder-proto/.eslintrc ++/node_modules/dunder-proto/.nycrc ++/node_modules/dunder-proto/CHANGELOG.md ++/node_modules/dunder-proto/get.d.ts ++/node_modules/dunder-proto/get.js ++/node_modules/dunder-proto/LICENSE ++/node_modules/dunder-proto/package.json ++/node_modules/dunder-proto/README.md ++/node_modules/dunder-proto/set.d.ts ++/node_modules/dunder-proto/set.js ++/node_modules/dunder-proto/tsconfig.json ++/node_modules/es-define-property/.github/FUNDING.yml ++/node_modules/es-define-property/test/index.js ++/node_modules/es-define-property/.eslintrc ++/node_modules/es-define-property/.nycrc ++/node_modules/es-define-property/CHANGELOG.md ++/node_modules/es-define-property/index.d.ts ++/node_modules/es-define-property/index.js ++/node_modules/es-define-property/LICENSE ++/node_modules/es-define-property/package.json ++/node_modules/es-define-property/README.md ++/node_modules/es-define-property/tsconfig.json ++/node_modules/es-errors/.github/FUNDING.yml ++/node_modules/es-errors/test/index.js ++/node_modules/es-errors/.eslintrc ++/node_modules/es-errors/CHANGELOG.md ++/node_modules/es-errors/eval.d.ts ++/node_modules/es-errors/eval.js ++/node_modules/es-errors/index.d.ts ++/node_modules/es-errors/index.js ++/node_modules/es-errors/LICENSE ++/node_modules/es-errors/package.json ++/node_modules/es-errors/range.d.ts ++/node_modules/es-errors/range.js ++/node_modules/es-errors/README.md ++/node_modules/es-errors/ref.d.ts ++/node_modules/es-errors/ref.js ++/node_modules/es-errors/syntax.d.ts ++/node_modules/es-errors/syntax.js ++/node_modules/es-errors/tsconfig.json ++/node_modules/es-errors/type.d.ts ++/node_modules/es-errors/type.js ++/node_modules/es-errors/uri.d.ts ++/node_modules/es-errors/uri.js ++/node_modules/es-object-atoms/.github/FUNDING.yml ++/node_modules/es-object-atoms/test/index.js ++/node_modules/es-object-atoms/.eslintrc ++/node_modules/es-object-atoms/CHANGELOG.md ++/node_modules/es-object-atoms/index.d.ts ++/node_modules/es-object-atoms/index.js ++/node_modules/es-object-atoms/isObject.d.ts ++/node_modules/es-object-atoms/isObject.js ++/node_modules/es-object-atoms/LICENSE ++/node_modules/es-object-atoms/package.json ++/node_modules/es-object-atoms/README.md ++/node_modules/es-object-atoms/RequireObjectCoercible.d.ts ++/node_modules/es-object-atoms/RequireObjectCoercible.js ++/node_modules/es-object-atoms/ToObject.d.ts ++/node_modules/es-object-atoms/ToObject.js ++/node_modules/es-object-atoms/tsconfig.json ++/node_modules/es-set-tostringtag/test/index.js ++/node_modules/es-set-tostringtag/.eslintrc ++/node_modules/es-set-tostringtag/.nycrc ++/node_modules/es-set-tostringtag/CHANGELOG.md ++/node_modules/es-set-tostringtag/index.d.ts ++/node_modules/es-set-tostringtag/index.js ++/node_modules/es-set-tostringtag/LICENSE ++/node_modules/es-set-tostringtag/package.json ++/node_modules/es-set-tostringtag/README.md ++/node_modules/es-set-tostringtag/tsconfig.json ++/node_modules/follow-redirects/debug.js ++/node_modules/follow-redirects/http.js ++/node_modules/follow-redirects/https.js ++/node_modules/follow-redirects/index.js ++/node_modules/follow-redirects/LICENSE ++/node_modules/follow-redirects/package.json ++/node_modules/follow-redirects/README.md ++/node_modules/form-data/lib/browser.js ++/node_modules/form-data/lib/form_data.js ++/node_modules/form-data/lib/populate.js ++/node_modules/form-data/CHANGELOG.md ++/node_modules/form-data/index.d.ts ++/node_modules/form-data/License ++/node_modules/form-data/package.json ++/node_modules/form-data/README.md ++/node_modules/function-bind/.github/FUNDING.yml ++/node_modules/function-bind/.github/SECURITY.md ++/node_modules/function-bind/test/.eslintrc ++/node_modules/function-bind/test/index.js ++/node_modules/function-bind/.eslintrc ++/node_modules/function-bind/.nycrc ++/node_modules/function-bind/CHANGELOG.md ++/node_modules/function-bind/implementation.js ++/node_modules/function-bind/index.js ++/node_modules/function-bind/LICENSE ++/node_modules/function-bind/package.json ++/node_modules/function-bind/README.md ++/node_modules/get-intrinsic/.github/FUNDING.yml ++/node_modules/get-intrinsic/test/GetIntrinsic.js ++/node_modules/get-intrinsic/.eslintrc ++/node_modules/get-intrinsic/.nycrc ++/node_modules/get-intrinsic/CHANGELOG.md ++/node_modules/get-intrinsic/index.js ++/node_modules/get-intrinsic/LICENSE ++/node_modules/get-intrinsic/package.json ++/node_modules/get-intrinsic/README.md ++/node_modules/get-proto/.github/FUNDING.yml ++/node_modules/get-proto/test/index.js ++/node_modules/get-proto/.eslintrc ++/node_modules/get-proto/.nycrc ++/node_modules/get-proto/CHANGELOG.md ++/node_modules/get-proto/index.d.ts ++/node_modules/get-proto/index.js ++/node_modules/get-proto/LICENSE ++/node_modules/get-proto/Object.getPrototypeOf.d.ts ++/node_modules/get-proto/Object.getPrototypeOf.js ++/node_modules/get-proto/package.json ++/node_modules/get-proto/README.md ++/node_modules/get-proto/Reflect.getPrototypeOf.d.ts ++/node_modules/get-proto/Reflect.getPrototypeOf.js ++/node_modules/get-proto/tsconfig.json ++/node_modules/gopd/.github/FUNDING.yml ++/node_modules/gopd/test/index.js ++/node_modules/gopd/.eslintrc ++/node_modules/gopd/CHANGELOG.md ++/node_modules/gopd/gOPD.d.ts ++/node_modules/gopd/gOPD.js ++/node_modules/gopd/index.d.ts ++/node_modules/gopd/index.js ++/node_modules/gopd/LICENSE ++/node_modules/gopd/package.json ++/node_modules/gopd/README.md ++/node_modules/gopd/tsconfig.json ++/node_modules/has-symbols/.github/FUNDING.yml ++/node_modules/has-symbols/test/shams/core-js.js ++/node_modules/has-symbols/test/shams/get-own-property-symbols.js ++/node_modules/has-symbols/test/index.js ++/node_modules/has-symbols/test/tests.js ++/node_modules/has-symbols/.eslintrc ++/node_modules/has-symbols/.nycrc ++/node_modules/has-symbols/CHANGELOG.md ++/node_modules/has-symbols/index.d.ts ++/node_modules/has-symbols/index.js ++/node_modules/has-symbols/LICENSE ++/node_modules/has-symbols/package.json ++/node_modules/has-symbols/README.md ++/node_modules/has-symbols/shams.d.ts ++/node_modules/has-symbols/shams.js ++/node_modules/has-symbols/tsconfig.json ++/node_modules/has-tostringtag/.github/FUNDING.yml ++/node_modules/has-tostringtag/test/shams/core-js.js ++/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js ++/node_modules/has-tostringtag/test/index.js ++/node_modules/has-tostringtag/test/tests.js ++/node_modules/has-tostringtag/.eslintrc ++/node_modules/has-tostringtag/.nycrc ++/node_modules/has-tostringtag/CHANGELOG.md ++/node_modules/has-tostringtag/index.d.ts ++/node_modules/has-tostringtag/index.js ++/node_modules/has-tostringtag/LICENSE ++/node_modules/has-tostringtag/package.json ++/node_modules/has-tostringtag/README.md ++/node_modules/has-tostringtag/shams.d.ts ++/node_modules/has-tostringtag/shams.js ++/node_modules/has-tostringtag/tsconfig.json ++/node_modules/hasown/.github/FUNDING.yml ++/node_modules/hasown/.nycrc ++/node_modules/hasown/CHANGELOG.md ++/node_modules/hasown/index.d.ts ++/node_modules/hasown/index.js ++/node_modules/hasown/LICENSE ++/node_modules/hasown/package.json ++/node_modules/hasown/README.md ++/node_modules/hasown/tsconfig.json ++/node_modules/husky/bin.js ++/node_modules/husky/husky ++/node_modules/husky/index.d.ts ++/node_modules/husky/index.js ++/node_modules/husky/LICENSE ++/node_modules/husky/package.json ++/node_modules/husky/README.md ++/node_modules/json-bigint/lib/parse.js ++/node_modules/json-bigint/lib/stringify.js ++/node_modules/json-bigint/index.js ++/node_modules/json-bigint/LICENSE ++/node_modules/json-bigint/package.json ++/node_modules/json-bigint/README.md ++/node_modules/math-intrinsics/.github/FUNDING.yml ++/node_modules/math-intrinsics/constants/maxArrayLength.d.ts ++/node_modules/math-intrinsics/constants/maxArrayLength.js ++/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts ++/node_modules/math-intrinsics/constants/maxSafeInteger.js ++/node_modules/math-intrinsics/constants/maxValue.d.ts ++/node_modules/math-intrinsics/constants/maxValue.js ++/node_modules/math-intrinsics/test/index.js ++/node_modules/math-intrinsics/.eslintrc ++/node_modules/math-intrinsics/abs.d.ts ++/node_modules/math-intrinsics/abs.js ++/node_modules/math-intrinsics/CHANGELOG.md ++/node_modules/math-intrinsics/floor.d.ts ++/node_modules/math-intrinsics/floor.js ++/node_modules/math-intrinsics/isFinite.d.ts ++/node_modules/math-intrinsics/isFinite.js ++/node_modules/math-intrinsics/isInteger.d.ts ++/node_modules/math-intrinsics/isInteger.js ++/node_modules/math-intrinsics/isNaN.d.ts ++/node_modules/math-intrinsics/isNaN.js ++/node_modules/math-intrinsics/isNegativeZero.d.ts ++/node_modules/math-intrinsics/isNegativeZero.js ++/node_modules/math-intrinsics/LICENSE ++/node_modules/math-intrinsics/max.d.ts ++/node_modules/math-intrinsics/max.js ++/node_modules/math-intrinsics/min.d.ts ++/node_modules/math-intrinsics/min.js ++/node_modules/math-intrinsics/mod.d.ts ++/node_modules/math-intrinsics/mod.js ++/node_modules/math-intrinsics/package.json ++/node_modules/math-intrinsics/pow.d.ts ++/node_modules/math-intrinsics/pow.js ++/node_modules/math-intrinsics/README.md ++/node_modules/math-intrinsics/round.d.ts ++/node_modules/math-intrinsics/round.js ++/node_modules/math-intrinsics/sign.d.ts ++/node_modules/math-intrinsics/sign.js ++/node_modules/math-intrinsics/tsconfig.json ++/node_modules/mime-db/db.json ++/node_modules/mime-db/HISTORY.md ++/node_modules/mime-db/index.js ++/node_modules/mime-db/LICENSE ++/node_modules/mime-db/package.json ++/node_modules/mime-db/README.md ++/node_modules/mime-types/HISTORY.md ++/node_modules/mime-types/index.js ++/node_modules/mime-types/LICENSE ++/node_modules/mime-types/package.json ++/node_modules/mime-types/README.md ++/node_modules/proxy-from-env/index.js ++/node_modules/proxy-from-env/LICENSE ++/node_modules/proxy-from-env/package.json ++/node_modules/proxy-from-env/README.md ++/node_modules/.package-lock.json +Index: healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (revision a582a97ef121357e262bea193dc1b28a13d82f16) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (date 1780703608877) +@@ -252,31 +252,37 @@ + // 处理节点点击,根据后台返回的路径加载组件 + const handleNodeClick = (data, node) => { + if (node.isLeaf) { ++ const newRouter = data.document?.vueRouter; ++ const oldRouter = currentSelectTemplate.value?.vueRouter; ++ const isSameTemplate = newRouter && oldRouter && newRouter === oldRouter; ++ + // 存储当前节点数据 + currentSelectTemplate.value = data.document; + +- // 在切换组件前先重置表单数据,避免显示之前的数据 +- editForm.value = { +- id: '', +- definitionId: '', +- definitionBusNo: '', +- contentJson: '', +- statusEnum: 1, +- organizationId: 0, +- encounterId: '', +- patientId: '', +- recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), +- createBy: '', +- source: '', +- }; +- +- // 先清空当前组件,再设置新组件,确保组件完全重新渲染 +- currentComponent.value = undefined; +- +- // 使用 nextTick 确保 DOM 更新后再设置新组件 +- nextTick(() => { +- currentComponent.value = currentSelectTemplate.value.vueRouter; +- }); ++ if (isSameTemplate) { ++ // 同一模板(仅患者切换):不卸载组件、不清空表单,避免闪烁 ++ // loading 遮罩覆盖过渡,loadLatestMedicalRecord 会原子替换表单数据 ++ loading.value = true; ++ } else { ++ // 不同模板:先清空再设置,确保组件完全重新渲染 ++ editForm.value = { ++ id: '', ++ definitionId: '', ++ definitionBusNo: '', ++ contentJson: '', ++ statusEnum: 1, ++ organizationId: 0, ++ encounterId: '', ++ patientId: '', ++ recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), ++ createBy: '', ++ source: '', ++ }; ++ currentComponent.value = undefined; ++ nextTick(() => { ++ currentComponent.value = newRouter; ++ }); ++ } + } else { + currentSelectTemplate.value = { + id: '', +@@ -624,8 +630,8 @@ + // 加载最新的病历数据并回显 + const loadLatestMedicalRecord = async () => { + if (!patientInfo.value?.encounterId || !currentSelectTemplate.value.id) return; +- editForm.value.id = ''; + loading.value = true; ++ editForm.value.id = ''; + try { + // 获取患者的历史病历记录 + const res = await getRecordByEncounterIdList({ diff --git a/.idea/shelf/在进行更新之前于_2026_6_6_09_03_取消提交了更改_[更改]/shelved.patch b/.idea/shelf/在进行更新之前于_2026_6_6_09_03_取消提交了更改_[更改]/shelved.patch new file mode 100644 index 000000000..fc82e8ac9 --- /dev/null +++ b/.idea/shelf/在进行更新之前于_2026_6_6_09_03_取消提交了更改_[更改]/shelved.patch @@ -0,0 +1,566 @@ +Index: healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (revision 9f7eb0eac6d4e50c27399b1158968aebace5d08a) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (date 1780703928151) +@@ -449,7 +449,7 @@ + import OrderGroupDrawer from '@/views/doctorstation/components/prescription/orderGroupDrawer.vue'; + import PrescriptionHistory from '@/views/doctorstation/components/prescription/prescriptionHistory.vue'; + import Decimal from 'decimal.js'; +-import {ElLoading, ElMessage, ElMessageBox} from 'element-plus'; ++import {ElMessage, ElMessageBox} from 'element-plus'; + import useUserStore from '@/store/modules/user'; + import ApplicationFormBottomBtn from './applicationForm/applicationFormBottomBtn.vue'; + import LeaveHospitalDialog from './applicationForm/leaveHospitalDialog.vue'; +@@ -643,7 +643,7 @@ + }, + ]; + +-let loadingInstance = undefined; ++// loadingInstance removed - using loading ref instead + onMounted(() => { + document.addEventListener('keydown', escKeyListener); + }); +@@ -697,10 +697,7 @@ + } + // 获取列表信息 + function getListInfo(addNewRow) { +- loadingInstance = ElLoading.service({ fullscreen: true }); +- setTimeout(() => { +- loadingInstance.close(); +- }, 180); ++ loading.value = true; + isAdding.value = false; + collapseAllExpanded(); + // 🔧 修复:先加载科室树,再处理处方数据 +@@ -712,7 +709,7 @@ + getPrescriptionList(patientInfo.value.encounterId).then((res) => { + // 等待科室树加载完成后再处理处方数据,确保 resolveOrgId 能正确匹配 + orgTreePromise.then(() => { +- loadingInstance.close(); ++ loading.value = false; + prescriptionList.value = res.data + .map((item) => { + const parsedContent = JSON.parse(item.contentJson); +@@ -772,7 +769,7 @@ + handleAddPrescription(); + } + }); +- }); ++ }).catch(() => { loading.value = false; }); + getContract({ encounterId: patientInfo.value.encounterId }).then((res) => { + contractList.value = res.data; + }); +Index: healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (revision 9f7eb0eac6d4e50c27399b1158968aebace5d08a) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (date 1780703928196) +@@ -252,31 +252,37 @@ + // 处理节点点击,根据后台返回的路径加载组件 + const handleNodeClick = (data, node) => { + if (node.isLeaf) { ++ const newRouter = data.document?.vueRouter; ++ const oldRouter = currentSelectTemplate.value?.vueRouter; ++ const isSameTemplate = newRouter && oldRouter && newRouter === oldRouter; ++ + // 存储当前节点数据 + currentSelectTemplate.value = data.document; + +- // 在切换组件前先重置表单数据,避免显示之前的数据 +- editForm.value = { +- id: '', +- definitionId: '', +- definitionBusNo: '', +- contentJson: '', +- statusEnum: 1, +- organizationId: 0, +- encounterId: '', +- patientId: '', +- recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), +- createBy: '', +- source: '', +- }; +- +- // 先清空当前组件,再设置新组件,确保组件完全重新渲染 +- currentComponent.value = undefined; +- +- // 使用 nextTick 确保 DOM 更新后再设置新组件 +- nextTick(() => { +- currentComponent.value = currentSelectTemplate.value.vueRouter; +- }); ++ if (isSameTemplate) { ++ // 同一模板(仅患者切换):不卸载组件、不清空表单,避免闪烁 ++ // loading 遮罩覆盖过渡,loadLatestMedicalRecord 会原子替换表单数据 ++ loading.value = true; ++ } else { ++ // 不同模板:先清空再设置,确保组件完全重新渲染 ++ editForm.value = { ++ id: '', ++ definitionId: '', ++ definitionBusNo: '', ++ contentJson: '', ++ statusEnum: 1, ++ organizationId: 0, ++ encounterId: '', ++ patientId: '', ++ recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), ++ createBy: '', ++ source: '', ++ }; ++ currentComponent.value = undefined; ++ nextTick(() => { ++ currentComponent.value = newRouter; ++ }); ++ } + } else { + currentSelectTemplate.value = { + id: '', +@@ -624,8 +630,8 @@ + // 加载最新的病历数据并回显 + const loadLatestMedicalRecord = async () => { + if (!patientInfo.value?.encounterId || !currentSelectTemplate.value.id) return; +- editForm.value.id = ''; + loading.value = true; ++ editForm.value.id = ''; + try { + // 获取患者的历史病历记录 + const res = await getRecordByEncounterIdList({ +Index: .gitignore +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/.gitignore b/.gitignore +new file mode 100644 +--- /dev/null (date 1780703928164) ++++ b/.gitignore (date 1780703928164) +@@ -0,0 +1,418 @@ ++/.vscode/mcp.json ++/.vscode/settings.json ++/.qwen/settings.json.orig ++/.playwright-mcp/console-2026-03-31T08-27-30-883Z.log ++/.playwright-mcp/console-2026-05-19T03-10-43-600Z.log ++/.playwright-mcp/console-2026-05-19T03-18-23-396Z.log ++/.playwright-mcp/console-2026-05-19T03-18-51-946Z.log ++/.playwright-mcp/page-2026-05-11T02-56-22-027Z.yml ++/.playwright-mcp/page-2026-05-11T02-56-30-095Z.yml ++/.playwright-mcp/page-2026-05-19T03-10-44-171Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-20-520Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-40-168Z.yml ++/.playwright-mcp/page-2026-05-19T03-12-10-968Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-23-610Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-52-634Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-19-472Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-36-669Z.yml ++/.playwright-mcp/page-2026-05-19T03-20-04-342Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-08-820Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-43-735Z.yml ++/.idea/compiler.xml ++/.idea/encodings.xml ++/.idea/jarRepositories.xml ++/.idea/misc.xml ++/.idea/vcs.xml ++/.idea/workspace.xml ++/node_modules/.bin/husky ++/node_modules/.bin/husky.cmd ++/node_modules/.bin/husky.ps1 ++/node_modules/asynckit/lib/abort.js ++/node_modules/asynckit/lib/async.js ++/node_modules/asynckit/lib/defer.js ++/node_modules/asynckit/lib/iterate.js ++/node_modules/asynckit/lib/readable_asynckit.js ++/node_modules/asynckit/lib/readable_parallel.js ++/node_modules/asynckit/lib/readable_serial.js ++/node_modules/asynckit/lib/readable_serial_ordered.js ++/node_modules/asynckit/lib/state.js ++/node_modules/asynckit/lib/streamify.js ++/node_modules/asynckit/lib/terminator.js ++/node_modules/asynckit/bench.js ++/node_modules/asynckit/index.js ++/node_modules/asynckit/LICENSE ++/node_modules/asynckit/package.json ++/node_modules/asynckit/parallel.js ++/node_modules/asynckit/README.md ++/node_modules/asynckit/serial.js ++/node_modules/asynckit/serialOrdered.js ++/node_modules/asynckit/stream.js ++/node_modules/axios/dist/browser/axios.cjs ++/node_modules/axios/dist/esm/axios.js ++/node_modules/axios/dist/esm/axios.min.js ++/node_modules/axios/dist/esm/axios.min.js.map ++/node_modules/axios/dist/node/axios.cjs ++/node_modules/axios/dist/axios.js ++/node_modules/axios/dist/axios.min.js ++/node_modules/axios/dist/axios.min.js.map ++/node_modules/axios/lib/adapters/adapters.js ++/node_modules/axios/lib/adapters/fetch.js ++/node_modules/axios/lib/adapters/http.js ++/node_modules/axios/lib/adapters/README.md ++/node_modules/axios/lib/adapters/xhr.js ++/node_modules/axios/lib/cancel/CanceledError.js ++/node_modules/axios/lib/cancel/CancelToken.js ++/node_modules/axios/lib/cancel/isCancel.js ++/node_modules/axios/lib/core/Axios.js ++/node_modules/axios/lib/core/AxiosError.js ++/node_modules/axios/lib/core/AxiosHeaders.js ++/node_modules/axios/lib/core/buildFullPath.js ++/node_modules/axios/lib/core/dispatchRequest.js ++/node_modules/axios/lib/core/InterceptorManager.js ++/node_modules/axios/lib/core/mergeConfig.js ++/node_modules/axios/lib/core/README.md ++/node_modules/axios/lib/core/settle.js ++/node_modules/axios/lib/core/transformData.js ++/node_modules/axios/lib/defaults/index.js ++/node_modules/axios/lib/defaults/transitional.js ++/node_modules/axios/lib/env/classes/FormData.js ++/node_modules/axios/lib/env/data.js ++/node_modules/axios/lib/env/README.md ++/node_modules/axios/lib/helpers/AxiosTransformStream.js ++/node_modules/axios/lib/helpers/AxiosURLSearchParams.js ++/node_modules/axios/lib/helpers/bind.js ++/node_modules/axios/lib/helpers/buildURL.js ++/node_modules/axios/lib/helpers/callbackify.js ++/node_modules/axios/lib/helpers/combineURLs.js ++/node_modules/axios/lib/helpers/composeSignals.js ++/node_modules/axios/lib/helpers/cookies.js ++/node_modules/axios/lib/helpers/deprecatedMethod.js ++/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js ++/node_modules/axios/lib/helpers/formDataToJSON.js ++/node_modules/axios/lib/helpers/formDataToStream.js ++/node_modules/axios/lib/helpers/fromDataURI.js ++/node_modules/axios/lib/helpers/HttpStatusCode.js ++/node_modules/axios/lib/helpers/isAbsoluteURL.js ++/node_modules/axios/lib/helpers/isAxiosError.js ++/node_modules/axios/lib/helpers/isURLSameOrigin.js ++/node_modules/axios/lib/helpers/null.js ++/node_modules/axios/lib/helpers/parseHeaders.js ++/node_modules/axios/lib/helpers/parseProtocol.js ++/node_modules/axios/lib/helpers/progressEventReducer.js ++/node_modules/axios/lib/helpers/readBlob.js ++/node_modules/axios/lib/helpers/README.md ++/node_modules/axios/lib/helpers/resolveConfig.js ++/node_modules/axios/lib/helpers/speedometer.js ++/node_modules/axios/lib/helpers/spread.js ++/node_modules/axios/lib/helpers/throttle.js ++/node_modules/axios/lib/helpers/toFormData.js ++/node_modules/axios/lib/helpers/toURLEncodedForm.js ++/node_modules/axios/lib/helpers/trackStream.js ++/node_modules/axios/lib/helpers/validator.js ++/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js ++/node_modules/axios/lib/platform/browser/classes/Blob.js ++/node_modules/axios/lib/platform/browser/classes/FormData.js ++/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/browser/index.js ++/node_modules/axios/lib/platform/common/utils.js ++/node_modules/axios/lib/platform/node/classes/FormData.js ++/node_modules/axios/lib/platform/node/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/node/index.js ++/node_modules/axios/lib/platform/index.js ++/node_modules/axios/lib/axios.js ++/node_modules/axios/lib/utils.js ++/node_modules/axios/CHANGELOG.md ++/node_modules/axios/index.d.cts ++/node_modules/axios/index.d.ts ++/node_modules/axios/index.js ++/node_modules/axios/LICENSE ++/node_modules/axios/MIGRATION_GUIDE.md ++/node_modules/axios/package.json ++/node_modules/axios/README.md ++/node_modules/bignumber.js/doc/API.html ++/node_modules/bignumber.js/bignumber.d.mts ++/node_modules/bignumber.js/bignumber.d.ts ++/node_modules/bignumber.js/bignumber.js ++/node_modules/bignumber.js/bignumber.mjs ++/node_modules/bignumber.js/CHANGELOG.md ++/node_modules/bignumber.js/LICENCE.md ++/node_modules/bignumber.js/package.json ++/node_modules/bignumber.js/README.md ++/node_modules/bignumber.js/types.d.ts ++/node_modules/call-bind-apply-helpers/.github/FUNDING.yml ++/node_modules/call-bind-apply-helpers/test/index.js ++/node_modules/call-bind-apply-helpers/.eslintrc ++/node_modules/call-bind-apply-helpers/.nycrc ++/node_modules/call-bind-apply-helpers/actualApply.d.ts ++/node_modules/call-bind-apply-helpers/actualApply.js ++/node_modules/call-bind-apply-helpers/applyBind.d.ts ++/node_modules/call-bind-apply-helpers/applyBind.js ++/node_modules/call-bind-apply-helpers/CHANGELOG.md ++/node_modules/call-bind-apply-helpers/functionApply.d.ts ++/node_modules/call-bind-apply-helpers/functionApply.js ++/node_modules/call-bind-apply-helpers/functionCall.d.ts ++/node_modules/call-bind-apply-helpers/functionCall.js ++/node_modules/call-bind-apply-helpers/index.d.ts ++/node_modules/call-bind-apply-helpers/index.js ++/node_modules/call-bind-apply-helpers/LICENSE ++/node_modules/call-bind-apply-helpers/package.json ++/node_modules/call-bind-apply-helpers/README.md ++/node_modules/call-bind-apply-helpers/reflectApply.d.ts ++/node_modules/call-bind-apply-helpers/reflectApply.js ++/node_modules/call-bind-apply-helpers/tsconfig.json ++/node_modules/combined-stream/lib/combined_stream.js ++/node_modules/combined-stream/License ++/node_modules/combined-stream/package.json ++/node_modules/combined-stream/Readme.md ++/node_modules/combined-stream/yarn.lock ++/node_modules/delayed-stream/lib/delayed_stream.js ++/node_modules/delayed-stream/.npmignore ++/node_modules/delayed-stream/License ++/node_modules/delayed-stream/Makefile ++/node_modules/delayed-stream/package.json ++/node_modules/delayed-stream/Readme.md ++/node_modules/dunder-proto/.github/FUNDING.yml ++/node_modules/dunder-proto/test/get.js ++/node_modules/dunder-proto/test/index.js ++/node_modules/dunder-proto/test/set.js ++/node_modules/dunder-proto/.eslintrc ++/node_modules/dunder-proto/.nycrc ++/node_modules/dunder-proto/CHANGELOG.md ++/node_modules/dunder-proto/get.d.ts ++/node_modules/dunder-proto/get.js ++/node_modules/dunder-proto/LICENSE ++/node_modules/dunder-proto/package.json ++/node_modules/dunder-proto/README.md ++/node_modules/dunder-proto/set.d.ts ++/node_modules/dunder-proto/set.js ++/node_modules/dunder-proto/tsconfig.json ++/node_modules/es-define-property/.github/FUNDING.yml ++/node_modules/es-define-property/test/index.js ++/node_modules/es-define-property/.eslintrc ++/node_modules/es-define-property/.nycrc ++/node_modules/es-define-property/CHANGELOG.md ++/node_modules/es-define-property/index.d.ts ++/node_modules/es-define-property/index.js ++/node_modules/es-define-property/LICENSE ++/node_modules/es-define-property/package.json ++/node_modules/es-define-property/README.md ++/node_modules/es-define-property/tsconfig.json ++/node_modules/es-errors/.github/FUNDING.yml ++/node_modules/es-errors/test/index.js ++/node_modules/es-errors/.eslintrc ++/node_modules/es-errors/CHANGELOG.md ++/node_modules/es-errors/eval.d.ts ++/node_modules/es-errors/eval.js ++/node_modules/es-errors/index.d.ts ++/node_modules/es-errors/index.js ++/node_modules/es-errors/LICENSE ++/node_modules/es-errors/package.json ++/node_modules/es-errors/range.d.ts ++/node_modules/es-errors/range.js ++/node_modules/es-errors/README.md ++/node_modules/es-errors/ref.d.ts ++/node_modules/es-errors/ref.js ++/node_modules/es-errors/syntax.d.ts ++/node_modules/es-errors/syntax.js ++/node_modules/es-errors/tsconfig.json ++/node_modules/es-errors/type.d.ts ++/node_modules/es-errors/type.js ++/node_modules/es-errors/uri.d.ts ++/node_modules/es-errors/uri.js ++/node_modules/es-object-atoms/.github/FUNDING.yml ++/node_modules/es-object-atoms/test/index.js ++/node_modules/es-object-atoms/.eslintrc ++/node_modules/es-object-atoms/CHANGELOG.md ++/node_modules/es-object-atoms/index.d.ts ++/node_modules/es-object-atoms/index.js ++/node_modules/es-object-atoms/isObject.d.ts ++/node_modules/es-object-atoms/isObject.js ++/node_modules/es-object-atoms/LICENSE ++/node_modules/es-object-atoms/package.json ++/node_modules/es-object-atoms/README.md ++/node_modules/es-object-atoms/RequireObjectCoercible.d.ts ++/node_modules/es-object-atoms/RequireObjectCoercible.js ++/node_modules/es-object-atoms/ToObject.d.ts ++/node_modules/es-object-atoms/ToObject.js ++/node_modules/es-object-atoms/tsconfig.json ++/node_modules/es-set-tostringtag/test/index.js ++/node_modules/es-set-tostringtag/.eslintrc ++/node_modules/es-set-tostringtag/.nycrc ++/node_modules/es-set-tostringtag/CHANGELOG.md ++/node_modules/es-set-tostringtag/index.d.ts ++/node_modules/es-set-tostringtag/index.js ++/node_modules/es-set-tostringtag/LICENSE ++/node_modules/es-set-tostringtag/package.json ++/node_modules/es-set-tostringtag/README.md ++/node_modules/es-set-tostringtag/tsconfig.json ++/node_modules/follow-redirects/debug.js ++/node_modules/follow-redirects/http.js ++/node_modules/follow-redirects/https.js ++/node_modules/follow-redirects/index.js ++/node_modules/follow-redirects/LICENSE ++/node_modules/follow-redirects/package.json ++/node_modules/follow-redirects/README.md ++/node_modules/form-data/lib/browser.js ++/node_modules/form-data/lib/form_data.js ++/node_modules/form-data/lib/populate.js ++/node_modules/form-data/CHANGELOG.md ++/node_modules/form-data/index.d.ts ++/node_modules/form-data/License ++/node_modules/form-data/package.json ++/node_modules/form-data/README.md ++/node_modules/function-bind/.github/FUNDING.yml ++/node_modules/function-bind/.github/SECURITY.md ++/node_modules/function-bind/test/.eslintrc ++/node_modules/function-bind/test/index.js ++/node_modules/function-bind/.eslintrc ++/node_modules/function-bind/.nycrc ++/node_modules/function-bind/CHANGELOG.md ++/node_modules/function-bind/implementation.js ++/node_modules/function-bind/index.js ++/node_modules/function-bind/LICENSE ++/node_modules/function-bind/package.json ++/node_modules/function-bind/README.md ++/node_modules/get-intrinsic/.github/FUNDING.yml ++/node_modules/get-intrinsic/test/GetIntrinsic.js ++/node_modules/get-intrinsic/.eslintrc ++/node_modules/get-intrinsic/.nycrc ++/node_modules/get-intrinsic/CHANGELOG.md ++/node_modules/get-intrinsic/index.js ++/node_modules/get-intrinsic/LICENSE ++/node_modules/get-intrinsic/package.json ++/node_modules/get-intrinsic/README.md ++/node_modules/get-proto/.github/FUNDING.yml ++/node_modules/get-proto/test/index.js ++/node_modules/get-proto/.eslintrc ++/node_modules/get-proto/.nycrc ++/node_modules/get-proto/CHANGELOG.md ++/node_modules/get-proto/index.d.ts ++/node_modules/get-proto/index.js ++/node_modules/get-proto/LICENSE ++/node_modules/get-proto/Object.getPrototypeOf.d.ts ++/node_modules/get-proto/Object.getPrototypeOf.js ++/node_modules/get-proto/package.json ++/node_modules/get-proto/README.md ++/node_modules/get-proto/Reflect.getPrototypeOf.d.ts ++/node_modules/get-proto/Reflect.getPrototypeOf.js ++/node_modules/get-proto/tsconfig.json ++/node_modules/gopd/.github/FUNDING.yml ++/node_modules/gopd/test/index.js ++/node_modules/gopd/.eslintrc ++/node_modules/gopd/CHANGELOG.md ++/node_modules/gopd/gOPD.d.ts ++/node_modules/gopd/gOPD.js ++/node_modules/gopd/index.d.ts ++/node_modules/gopd/index.js ++/node_modules/gopd/LICENSE ++/node_modules/gopd/package.json ++/node_modules/gopd/README.md ++/node_modules/gopd/tsconfig.json ++/node_modules/has-symbols/.github/FUNDING.yml ++/node_modules/has-symbols/test/shams/core-js.js ++/node_modules/has-symbols/test/shams/get-own-property-symbols.js ++/node_modules/has-symbols/test/index.js ++/node_modules/has-symbols/test/tests.js ++/node_modules/has-symbols/.eslintrc ++/node_modules/has-symbols/.nycrc ++/node_modules/has-symbols/CHANGELOG.md ++/node_modules/has-symbols/index.d.ts ++/node_modules/has-symbols/index.js ++/node_modules/has-symbols/LICENSE ++/node_modules/has-symbols/package.json ++/node_modules/has-symbols/README.md ++/node_modules/has-symbols/shams.d.ts ++/node_modules/has-symbols/shams.js ++/node_modules/has-symbols/tsconfig.json ++/node_modules/has-tostringtag/.github/FUNDING.yml ++/node_modules/has-tostringtag/test/shams/core-js.js ++/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js ++/node_modules/has-tostringtag/test/index.js ++/node_modules/has-tostringtag/test/tests.js ++/node_modules/has-tostringtag/.eslintrc ++/node_modules/has-tostringtag/.nycrc ++/node_modules/has-tostringtag/CHANGELOG.md ++/node_modules/has-tostringtag/index.d.ts ++/node_modules/has-tostringtag/index.js ++/node_modules/has-tostringtag/LICENSE ++/node_modules/has-tostringtag/package.json ++/node_modules/has-tostringtag/README.md ++/node_modules/has-tostringtag/shams.d.ts ++/node_modules/has-tostringtag/shams.js ++/node_modules/has-tostringtag/tsconfig.json ++/node_modules/hasown/.github/FUNDING.yml ++/node_modules/hasown/.nycrc ++/node_modules/hasown/CHANGELOG.md ++/node_modules/hasown/index.d.ts ++/node_modules/hasown/index.js ++/node_modules/hasown/LICENSE ++/node_modules/hasown/package.json ++/node_modules/hasown/README.md ++/node_modules/hasown/tsconfig.json ++/node_modules/husky/bin.js ++/node_modules/husky/husky ++/node_modules/husky/index.d.ts ++/node_modules/husky/index.js ++/node_modules/husky/LICENSE ++/node_modules/husky/package.json ++/node_modules/husky/README.md ++/node_modules/json-bigint/lib/parse.js ++/node_modules/json-bigint/lib/stringify.js ++/node_modules/json-bigint/index.js ++/node_modules/json-bigint/LICENSE ++/node_modules/json-bigint/package.json ++/node_modules/json-bigint/README.md ++/node_modules/math-intrinsics/.github/FUNDING.yml ++/node_modules/math-intrinsics/constants/maxArrayLength.d.ts ++/node_modules/math-intrinsics/constants/maxArrayLength.js ++/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts ++/node_modules/math-intrinsics/constants/maxSafeInteger.js ++/node_modules/math-intrinsics/constants/maxValue.d.ts ++/node_modules/math-intrinsics/constants/maxValue.js ++/node_modules/math-intrinsics/test/index.js ++/node_modules/math-intrinsics/.eslintrc ++/node_modules/math-intrinsics/abs.d.ts ++/node_modules/math-intrinsics/abs.js ++/node_modules/math-intrinsics/CHANGELOG.md ++/node_modules/math-intrinsics/floor.d.ts ++/node_modules/math-intrinsics/floor.js ++/node_modules/math-intrinsics/isFinite.d.ts ++/node_modules/math-intrinsics/isFinite.js ++/node_modules/math-intrinsics/isInteger.d.ts ++/node_modules/math-intrinsics/isInteger.js ++/node_modules/math-intrinsics/isNaN.d.ts ++/node_modules/math-intrinsics/isNaN.js ++/node_modules/math-intrinsics/isNegativeZero.d.ts ++/node_modules/math-intrinsics/isNegativeZero.js ++/node_modules/math-intrinsics/LICENSE ++/node_modules/math-intrinsics/max.d.ts ++/node_modules/math-intrinsics/max.js ++/node_modules/math-intrinsics/min.d.ts ++/node_modules/math-intrinsics/min.js ++/node_modules/math-intrinsics/mod.d.ts ++/node_modules/math-intrinsics/mod.js ++/node_modules/math-intrinsics/package.json ++/node_modules/math-intrinsics/pow.d.ts ++/node_modules/math-intrinsics/pow.js ++/node_modules/math-intrinsics/README.md ++/node_modules/math-intrinsics/round.d.ts ++/node_modules/math-intrinsics/round.js ++/node_modules/math-intrinsics/sign.d.ts ++/node_modules/math-intrinsics/sign.js ++/node_modules/math-intrinsics/tsconfig.json ++/node_modules/mime-db/db.json ++/node_modules/mime-db/HISTORY.md ++/node_modules/mime-db/index.js ++/node_modules/mime-db/LICENSE ++/node_modules/mime-db/package.json ++/node_modules/mime-db/README.md ++/node_modules/mime-types/HISTORY.md ++/node_modules/mime-types/index.js ++/node_modules/mime-types/LICENSE ++/node_modules/mime-types/package.json ++/node_modules/mime-types/README.md ++/node_modules/proxy-from-env/index.js ++/node_modules/proxy-from-env/LICENSE ++/node_modules/proxy-from-env/package.json ++/node_modules/proxy-from-env/README.md ++/node_modules/.package-lock.json diff --git a/.idea/shelf/在进行更新之前于_2026_6_6_09_07_取消提交了更改_[更改]/shelved.patch b/.idea/shelf/在进行更新之前于_2026_6_6_09_07_取消提交了更改_[更改]/shelved.patch new file mode 100644 index 000000000..68a4e11b0 --- /dev/null +++ b/.idea/shelf/在进行更新之前于_2026_6_6_09_07_取消提交了更改_[更改]/shelved.patch @@ -0,0 +1,566 @@ +Index: healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (revision 86c82286c62d11a45c9b8aa63b7a57cfd705ad39) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (date 1780707822743) +@@ -449,7 +449,7 @@ + import OrderGroupDrawer from '@/views/doctorstation/components/prescription/orderGroupDrawer.vue'; + import PrescriptionHistory from '@/views/doctorstation/components/prescription/prescriptionHistory.vue'; + import Decimal from 'decimal.js'; +-import {ElLoading, ElMessage, ElMessageBox} from 'element-plus'; ++import {ElMessage, ElMessageBox} from 'element-plus'; + import useUserStore from '@/store/modules/user'; + import ApplicationFormBottomBtn from './applicationForm/applicationFormBottomBtn.vue'; + import LeaveHospitalDialog from './applicationForm/leaveHospitalDialog.vue'; +@@ -643,7 +643,7 @@ + }, + ]; + +-let loadingInstance = undefined; ++// loadingInstance removed - using loading ref instead + onMounted(() => { + document.addEventListener('keydown', escKeyListener); + }); +@@ -697,10 +697,7 @@ + } + // 获取列表信息 + function getListInfo(addNewRow) { +- loadingInstance = ElLoading.service({ fullscreen: true }); +- setTimeout(() => { +- loadingInstance.close(); +- }, 180); ++ loading.value = true; + isAdding.value = false; + collapseAllExpanded(); + // 🔧 修复:先加载科室树,再处理处方数据 +@@ -712,7 +709,7 @@ + getPrescriptionList(patientInfo.value.encounterId).then((res) => { + // 等待科室树加载完成后再处理处方数据,确保 resolveOrgId 能正确匹配 + orgTreePromise.then(() => { +- loadingInstance.close(); ++ loading.value = false; + prescriptionList.value = res.data + .map((item) => { + const parsedContent = JSON.parse(item.contentJson); +@@ -772,7 +769,7 @@ + handleAddPrescription(); + } + }); +- }); ++ }).catch(() => { loading.value = false; }); + getContract({ encounterId: patientInfo.value.encounterId }).then((res) => { + contractList.value = res.data; + }); +Index: healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (revision 86c82286c62d11a45c9b8aa63b7a57cfd705ad39) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (date 1780707822760) +@@ -252,31 +252,37 @@ + // 处理节点点击,根据后台返回的路径加载组件 + const handleNodeClick = (data, node) => { + if (node.isLeaf) { ++ const newRouter = data.document?.vueRouter; ++ const oldRouter = currentSelectTemplate.value?.vueRouter; ++ const isSameTemplate = newRouter && oldRouter && newRouter === oldRouter; ++ + // 存储当前节点数据 + currentSelectTemplate.value = data.document; + +- // 在切换组件前先重置表单数据,避免显示之前的数据 +- editForm.value = { +- id: '', +- definitionId: '', +- definitionBusNo: '', +- contentJson: '', +- statusEnum: 1, +- organizationId: 0, +- encounterId: '', +- patientId: '', +- recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), +- createBy: '', +- source: '', +- }; +- +- // 先清空当前组件,再设置新组件,确保组件完全重新渲染 +- currentComponent.value = undefined; +- +- // 使用 nextTick 确保 DOM 更新后再设置新组件 +- nextTick(() => { +- currentComponent.value = currentSelectTemplate.value.vueRouter; +- }); ++ if (isSameTemplate) { ++ // 同一模板(仅患者切换):不卸载组件、不清空表单,避免闪烁 ++ // loading 遮罩覆盖过渡,loadLatestMedicalRecord 会原子替换表单数据 ++ loading.value = true; ++ } else { ++ // 不同模板:先清空再设置,确保组件完全重新渲染 ++ editForm.value = { ++ id: '', ++ definitionId: '', ++ definitionBusNo: '', ++ contentJson: '', ++ statusEnum: 1, ++ organizationId: 0, ++ encounterId: '', ++ patientId: '', ++ recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), ++ createBy: '', ++ source: '', ++ }; ++ currentComponent.value = undefined; ++ nextTick(() => { ++ currentComponent.value = newRouter; ++ }); ++ } + } else { + currentSelectTemplate.value = { + id: '', +@@ -624,8 +630,8 @@ + // 加载最新的病历数据并回显 + const loadLatestMedicalRecord = async () => { + if (!patientInfo.value?.encounterId || !currentSelectTemplate.value.id) return; +- editForm.value.id = ''; + loading.value = true; ++ editForm.value.id = ''; + try { + // 获取患者的历史病历记录 + const res = await getRecordByEncounterIdList({ +Index: .gitignore +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/.gitignore b/.gitignore +new file mode 100644 +--- /dev/null (date 1780707822777) ++++ b/.gitignore (date 1780707822777) +@@ -0,0 +1,418 @@ ++/.vscode/mcp.json ++/.vscode/settings.json ++/.qwen/settings.json.orig ++/.playwright-mcp/console-2026-03-31T08-27-30-883Z.log ++/.playwright-mcp/console-2026-05-19T03-10-43-600Z.log ++/.playwright-mcp/console-2026-05-19T03-18-23-396Z.log ++/.playwright-mcp/console-2026-05-19T03-18-51-946Z.log ++/.playwright-mcp/page-2026-05-11T02-56-22-027Z.yml ++/.playwright-mcp/page-2026-05-11T02-56-30-095Z.yml ++/.playwright-mcp/page-2026-05-19T03-10-44-171Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-20-520Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-40-168Z.yml ++/.playwright-mcp/page-2026-05-19T03-12-10-968Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-23-610Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-52-634Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-19-472Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-36-669Z.yml ++/.playwright-mcp/page-2026-05-19T03-20-04-342Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-08-820Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-43-735Z.yml ++/.idea/compiler.xml ++/.idea/encodings.xml ++/.idea/jarRepositories.xml ++/.idea/misc.xml ++/.idea/vcs.xml ++/.idea/workspace.xml ++/node_modules/.bin/husky ++/node_modules/.bin/husky.cmd ++/node_modules/.bin/husky.ps1 ++/node_modules/asynckit/lib/abort.js ++/node_modules/asynckit/lib/async.js ++/node_modules/asynckit/lib/defer.js ++/node_modules/asynckit/lib/iterate.js ++/node_modules/asynckit/lib/readable_asynckit.js ++/node_modules/asynckit/lib/readable_parallel.js ++/node_modules/asynckit/lib/readable_serial.js ++/node_modules/asynckit/lib/readable_serial_ordered.js ++/node_modules/asynckit/lib/state.js ++/node_modules/asynckit/lib/streamify.js ++/node_modules/asynckit/lib/terminator.js ++/node_modules/asynckit/bench.js ++/node_modules/asynckit/index.js ++/node_modules/asynckit/LICENSE ++/node_modules/asynckit/package.json ++/node_modules/asynckit/parallel.js ++/node_modules/asynckit/README.md ++/node_modules/asynckit/serial.js ++/node_modules/asynckit/serialOrdered.js ++/node_modules/asynckit/stream.js ++/node_modules/axios/dist/browser/axios.cjs ++/node_modules/axios/dist/esm/axios.js ++/node_modules/axios/dist/esm/axios.min.js ++/node_modules/axios/dist/esm/axios.min.js.map ++/node_modules/axios/dist/node/axios.cjs ++/node_modules/axios/dist/axios.js ++/node_modules/axios/dist/axios.min.js ++/node_modules/axios/dist/axios.min.js.map ++/node_modules/axios/lib/adapters/adapters.js ++/node_modules/axios/lib/adapters/fetch.js ++/node_modules/axios/lib/adapters/http.js ++/node_modules/axios/lib/adapters/README.md ++/node_modules/axios/lib/adapters/xhr.js ++/node_modules/axios/lib/cancel/CanceledError.js ++/node_modules/axios/lib/cancel/CancelToken.js ++/node_modules/axios/lib/cancel/isCancel.js ++/node_modules/axios/lib/core/Axios.js ++/node_modules/axios/lib/core/AxiosError.js ++/node_modules/axios/lib/core/AxiosHeaders.js ++/node_modules/axios/lib/core/buildFullPath.js ++/node_modules/axios/lib/core/dispatchRequest.js ++/node_modules/axios/lib/core/InterceptorManager.js ++/node_modules/axios/lib/core/mergeConfig.js ++/node_modules/axios/lib/core/README.md ++/node_modules/axios/lib/core/settle.js ++/node_modules/axios/lib/core/transformData.js ++/node_modules/axios/lib/defaults/index.js ++/node_modules/axios/lib/defaults/transitional.js ++/node_modules/axios/lib/env/classes/FormData.js ++/node_modules/axios/lib/env/data.js ++/node_modules/axios/lib/env/README.md ++/node_modules/axios/lib/helpers/AxiosTransformStream.js ++/node_modules/axios/lib/helpers/AxiosURLSearchParams.js ++/node_modules/axios/lib/helpers/bind.js ++/node_modules/axios/lib/helpers/buildURL.js ++/node_modules/axios/lib/helpers/callbackify.js ++/node_modules/axios/lib/helpers/combineURLs.js ++/node_modules/axios/lib/helpers/composeSignals.js ++/node_modules/axios/lib/helpers/cookies.js ++/node_modules/axios/lib/helpers/deprecatedMethod.js ++/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js ++/node_modules/axios/lib/helpers/formDataToJSON.js ++/node_modules/axios/lib/helpers/formDataToStream.js ++/node_modules/axios/lib/helpers/fromDataURI.js ++/node_modules/axios/lib/helpers/HttpStatusCode.js ++/node_modules/axios/lib/helpers/isAbsoluteURL.js ++/node_modules/axios/lib/helpers/isAxiosError.js ++/node_modules/axios/lib/helpers/isURLSameOrigin.js ++/node_modules/axios/lib/helpers/null.js ++/node_modules/axios/lib/helpers/parseHeaders.js ++/node_modules/axios/lib/helpers/parseProtocol.js ++/node_modules/axios/lib/helpers/progressEventReducer.js ++/node_modules/axios/lib/helpers/readBlob.js ++/node_modules/axios/lib/helpers/README.md ++/node_modules/axios/lib/helpers/resolveConfig.js ++/node_modules/axios/lib/helpers/speedometer.js ++/node_modules/axios/lib/helpers/spread.js ++/node_modules/axios/lib/helpers/throttle.js ++/node_modules/axios/lib/helpers/toFormData.js ++/node_modules/axios/lib/helpers/toURLEncodedForm.js ++/node_modules/axios/lib/helpers/trackStream.js ++/node_modules/axios/lib/helpers/validator.js ++/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js ++/node_modules/axios/lib/platform/browser/classes/Blob.js ++/node_modules/axios/lib/platform/browser/classes/FormData.js ++/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/browser/index.js ++/node_modules/axios/lib/platform/common/utils.js ++/node_modules/axios/lib/platform/node/classes/FormData.js ++/node_modules/axios/lib/platform/node/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/node/index.js ++/node_modules/axios/lib/platform/index.js ++/node_modules/axios/lib/axios.js ++/node_modules/axios/lib/utils.js ++/node_modules/axios/CHANGELOG.md ++/node_modules/axios/index.d.cts ++/node_modules/axios/index.d.ts ++/node_modules/axios/index.js ++/node_modules/axios/LICENSE ++/node_modules/axios/MIGRATION_GUIDE.md ++/node_modules/axios/package.json ++/node_modules/axios/README.md ++/node_modules/bignumber.js/doc/API.html ++/node_modules/bignumber.js/bignumber.d.mts ++/node_modules/bignumber.js/bignumber.d.ts ++/node_modules/bignumber.js/bignumber.js ++/node_modules/bignumber.js/bignumber.mjs ++/node_modules/bignumber.js/CHANGELOG.md ++/node_modules/bignumber.js/LICENCE.md ++/node_modules/bignumber.js/package.json ++/node_modules/bignumber.js/README.md ++/node_modules/bignumber.js/types.d.ts ++/node_modules/call-bind-apply-helpers/.github/FUNDING.yml ++/node_modules/call-bind-apply-helpers/test/index.js ++/node_modules/call-bind-apply-helpers/.eslintrc ++/node_modules/call-bind-apply-helpers/.nycrc ++/node_modules/call-bind-apply-helpers/actualApply.d.ts ++/node_modules/call-bind-apply-helpers/actualApply.js ++/node_modules/call-bind-apply-helpers/applyBind.d.ts ++/node_modules/call-bind-apply-helpers/applyBind.js ++/node_modules/call-bind-apply-helpers/CHANGELOG.md ++/node_modules/call-bind-apply-helpers/functionApply.d.ts ++/node_modules/call-bind-apply-helpers/functionApply.js ++/node_modules/call-bind-apply-helpers/functionCall.d.ts ++/node_modules/call-bind-apply-helpers/functionCall.js ++/node_modules/call-bind-apply-helpers/index.d.ts ++/node_modules/call-bind-apply-helpers/index.js ++/node_modules/call-bind-apply-helpers/LICENSE ++/node_modules/call-bind-apply-helpers/package.json ++/node_modules/call-bind-apply-helpers/README.md ++/node_modules/call-bind-apply-helpers/reflectApply.d.ts ++/node_modules/call-bind-apply-helpers/reflectApply.js ++/node_modules/call-bind-apply-helpers/tsconfig.json ++/node_modules/combined-stream/lib/combined_stream.js ++/node_modules/combined-stream/License ++/node_modules/combined-stream/package.json ++/node_modules/combined-stream/Readme.md ++/node_modules/combined-stream/yarn.lock ++/node_modules/delayed-stream/lib/delayed_stream.js ++/node_modules/delayed-stream/.npmignore ++/node_modules/delayed-stream/License ++/node_modules/delayed-stream/Makefile ++/node_modules/delayed-stream/package.json ++/node_modules/delayed-stream/Readme.md ++/node_modules/dunder-proto/.github/FUNDING.yml ++/node_modules/dunder-proto/test/get.js ++/node_modules/dunder-proto/test/index.js ++/node_modules/dunder-proto/test/set.js ++/node_modules/dunder-proto/.eslintrc ++/node_modules/dunder-proto/.nycrc ++/node_modules/dunder-proto/CHANGELOG.md ++/node_modules/dunder-proto/get.d.ts ++/node_modules/dunder-proto/get.js ++/node_modules/dunder-proto/LICENSE ++/node_modules/dunder-proto/package.json ++/node_modules/dunder-proto/README.md ++/node_modules/dunder-proto/set.d.ts ++/node_modules/dunder-proto/set.js ++/node_modules/dunder-proto/tsconfig.json ++/node_modules/es-define-property/.github/FUNDING.yml ++/node_modules/es-define-property/test/index.js ++/node_modules/es-define-property/.eslintrc ++/node_modules/es-define-property/.nycrc ++/node_modules/es-define-property/CHANGELOG.md ++/node_modules/es-define-property/index.d.ts ++/node_modules/es-define-property/index.js ++/node_modules/es-define-property/LICENSE ++/node_modules/es-define-property/package.json ++/node_modules/es-define-property/README.md ++/node_modules/es-define-property/tsconfig.json ++/node_modules/es-errors/.github/FUNDING.yml ++/node_modules/es-errors/test/index.js ++/node_modules/es-errors/.eslintrc ++/node_modules/es-errors/CHANGELOG.md ++/node_modules/es-errors/eval.d.ts ++/node_modules/es-errors/eval.js ++/node_modules/es-errors/index.d.ts ++/node_modules/es-errors/index.js ++/node_modules/es-errors/LICENSE ++/node_modules/es-errors/package.json ++/node_modules/es-errors/range.d.ts ++/node_modules/es-errors/range.js ++/node_modules/es-errors/README.md ++/node_modules/es-errors/ref.d.ts ++/node_modules/es-errors/ref.js ++/node_modules/es-errors/syntax.d.ts ++/node_modules/es-errors/syntax.js ++/node_modules/es-errors/tsconfig.json ++/node_modules/es-errors/type.d.ts ++/node_modules/es-errors/type.js ++/node_modules/es-errors/uri.d.ts ++/node_modules/es-errors/uri.js ++/node_modules/es-object-atoms/.github/FUNDING.yml ++/node_modules/es-object-atoms/test/index.js ++/node_modules/es-object-atoms/.eslintrc ++/node_modules/es-object-atoms/CHANGELOG.md ++/node_modules/es-object-atoms/index.d.ts ++/node_modules/es-object-atoms/index.js ++/node_modules/es-object-atoms/isObject.d.ts ++/node_modules/es-object-atoms/isObject.js ++/node_modules/es-object-atoms/LICENSE ++/node_modules/es-object-atoms/package.json ++/node_modules/es-object-atoms/README.md ++/node_modules/es-object-atoms/RequireObjectCoercible.d.ts ++/node_modules/es-object-atoms/RequireObjectCoercible.js ++/node_modules/es-object-atoms/ToObject.d.ts ++/node_modules/es-object-atoms/ToObject.js ++/node_modules/es-object-atoms/tsconfig.json ++/node_modules/es-set-tostringtag/test/index.js ++/node_modules/es-set-tostringtag/.eslintrc ++/node_modules/es-set-tostringtag/.nycrc ++/node_modules/es-set-tostringtag/CHANGELOG.md ++/node_modules/es-set-tostringtag/index.d.ts ++/node_modules/es-set-tostringtag/index.js ++/node_modules/es-set-tostringtag/LICENSE ++/node_modules/es-set-tostringtag/package.json ++/node_modules/es-set-tostringtag/README.md ++/node_modules/es-set-tostringtag/tsconfig.json ++/node_modules/follow-redirects/debug.js ++/node_modules/follow-redirects/http.js ++/node_modules/follow-redirects/https.js ++/node_modules/follow-redirects/index.js ++/node_modules/follow-redirects/LICENSE ++/node_modules/follow-redirects/package.json ++/node_modules/follow-redirects/README.md ++/node_modules/form-data/lib/browser.js ++/node_modules/form-data/lib/form_data.js ++/node_modules/form-data/lib/populate.js ++/node_modules/form-data/CHANGELOG.md ++/node_modules/form-data/index.d.ts ++/node_modules/form-data/License ++/node_modules/form-data/package.json ++/node_modules/form-data/README.md ++/node_modules/function-bind/.github/FUNDING.yml ++/node_modules/function-bind/.github/SECURITY.md ++/node_modules/function-bind/test/.eslintrc ++/node_modules/function-bind/test/index.js ++/node_modules/function-bind/.eslintrc ++/node_modules/function-bind/.nycrc ++/node_modules/function-bind/CHANGELOG.md ++/node_modules/function-bind/implementation.js ++/node_modules/function-bind/index.js ++/node_modules/function-bind/LICENSE ++/node_modules/function-bind/package.json ++/node_modules/function-bind/README.md ++/node_modules/get-intrinsic/.github/FUNDING.yml ++/node_modules/get-intrinsic/test/GetIntrinsic.js ++/node_modules/get-intrinsic/.eslintrc ++/node_modules/get-intrinsic/.nycrc ++/node_modules/get-intrinsic/CHANGELOG.md ++/node_modules/get-intrinsic/index.js ++/node_modules/get-intrinsic/LICENSE ++/node_modules/get-intrinsic/package.json ++/node_modules/get-intrinsic/README.md ++/node_modules/get-proto/.github/FUNDING.yml ++/node_modules/get-proto/test/index.js ++/node_modules/get-proto/.eslintrc ++/node_modules/get-proto/.nycrc ++/node_modules/get-proto/CHANGELOG.md ++/node_modules/get-proto/index.d.ts ++/node_modules/get-proto/index.js ++/node_modules/get-proto/LICENSE ++/node_modules/get-proto/Object.getPrototypeOf.d.ts ++/node_modules/get-proto/Object.getPrototypeOf.js ++/node_modules/get-proto/package.json ++/node_modules/get-proto/README.md ++/node_modules/get-proto/Reflect.getPrototypeOf.d.ts ++/node_modules/get-proto/Reflect.getPrototypeOf.js ++/node_modules/get-proto/tsconfig.json ++/node_modules/gopd/.github/FUNDING.yml ++/node_modules/gopd/test/index.js ++/node_modules/gopd/.eslintrc ++/node_modules/gopd/CHANGELOG.md ++/node_modules/gopd/gOPD.d.ts ++/node_modules/gopd/gOPD.js ++/node_modules/gopd/index.d.ts ++/node_modules/gopd/index.js ++/node_modules/gopd/LICENSE ++/node_modules/gopd/package.json ++/node_modules/gopd/README.md ++/node_modules/gopd/tsconfig.json ++/node_modules/has-symbols/.github/FUNDING.yml ++/node_modules/has-symbols/test/shams/core-js.js ++/node_modules/has-symbols/test/shams/get-own-property-symbols.js ++/node_modules/has-symbols/test/index.js ++/node_modules/has-symbols/test/tests.js ++/node_modules/has-symbols/.eslintrc ++/node_modules/has-symbols/.nycrc ++/node_modules/has-symbols/CHANGELOG.md ++/node_modules/has-symbols/index.d.ts ++/node_modules/has-symbols/index.js ++/node_modules/has-symbols/LICENSE ++/node_modules/has-symbols/package.json ++/node_modules/has-symbols/README.md ++/node_modules/has-symbols/shams.d.ts ++/node_modules/has-symbols/shams.js ++/node_modules/has-symbols/tsconfig.json ++/node_modules/has-tostringtag/.github/FUNDING.yml ++/node_modules/has-tostringtag/test/shams/core-js.js ++/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js ++/node_modules/has-tostringtag/test/index.js ++/node_modules/has-tostringtag/test/tests.js ++/node_modules/has-tostringtag/.eslintrc ++/node_modules/has-tostringtag/.nycrc ++/node_modules/has-tostringtag/CHANGELOG.md ++/node_modules/has-tostringtag/index.d.ts ++/node_modules/has-tostringtag/index.js ++/node_modules/has-tostringtag/LICENSE ++/node_modules/has-tostringtag/package.json ++/node_modules/has-tostringtag/README.md ++/node_modules/has-tostringtag/shams.d.ts ++/node_modules/has-tostringtag/shams.js ++/node_modules/has-tostringtag/tsconfig.json ++/node_modules/hasown/.github/FUNDING.yml ++/node_modules/hasown/.nycrc ++/node_modules/hasown/CHANGELOG.md ++/node_modules/hasown/index.d.ts ++/node_modules/hasown/index.js ++/node_modules/hasown/LICENSE ++/node_modules/hasown/package.json ++/node_modules/hasown/README.md ++/node_modules/hasown/tsconfig.json ++/node_modules/husky/bin.js ++/node_modules/husky/husky ++/node_modules/husky/index.d.ts ++/node_modules/husky/index.js ++/node_modules/husky/LICENSE ++/node_modules/husky/package.json ++/node_modules/husky/README.md ++/node_modules/json-bigint/lib/parse.js ++/node_modules/json-bigint/lib/stringify.js ++/node_modules/json-bigint/index.js ++/node_modules/json-bigint/LICENSE ++/node_modules/json-bigint/package.json ++/node_modules/json-bigint/README.md ++/node_modules/math-intrinsics/.github/FUNDING.yml ++/node_modules/math-intrinsics/constants/maxArrayLength.d.ts ++/node_modules/math-intrinsics/constants/maxArrayLength.js ++/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts ++/node_modules/math-intrinsics/constants/maxSafeInteger.js ++/node_modules/math-intrinsics/constants/maxValue.d.ts ++/node_modules/math-intrinsics/constants/maxValue.js ++/node_modules/math-intrinsics/test/index.js ++/node_modules/math-intrinsics/.eslintrc ++/node_modules/math-intrinsics/abs.d.ts ++/node_modules/math-intrinsics/abs.js ++/node_modules/math-intrinsics/CHANGELOG.md ++/node_modules/math-intrinsics/floor.d.ts ++/node_modules/math-intrinsics/floor.js ++/node_modules/math-intrinsics/isFinite.d.ts ++/node_modules/math-intrinsics/isFinite.js ++/node_modules/math-intrinsics/isInteger.d.ts ++/node_modules/math-intrinsics/isInteger.js ++/node_modules/math-intrinsics/isNaN.d.ts ++/node_modules/math-intrinsics/isNaN.js ++/node_modules/math-intrinsics/isNegativeZero.d.ts ++/node_modules/math-intrinsics/isNegativeZero.js ++/node_modules/math-intrinsics/LICENSE ++/node_modules/math-intrinsics/max.d.ts ++/node_modules/math-intrinsics/max.js ++/node_modules/math-intrinsics/min.d.ts ++/node_modules/math-intrinsics/min.js ++/node_modules/math-intrinsics/mod.d.ts ++/node_modules/math-intrinsics/mod.js ++/node_modules/math-intrinsics/package.json ++/node_modules/math-intrinsics/pow.d.ts ++/node_modules/math-intrinsics/pow.js ++/node_modules/math-intrinsics/README.md ++/node_modules/math-intrinsics/round.d.ts ++/node_modules/math-intrinsics/round.js ++/node_modules/math-intrinsics/sign.d.ts ++/node_modules/math-intrinsics/sign.js ++/node_modules/math-intrinsics/tsconfig.json ++/node_modules/mime-db/db.json ++/node_modules/mime-db/HISTORY.md ++/node_modules/mime-db/index.js ++/node_modules/mime-db/LICENSE ++/node_modules/mime-db/package.json ++/node_modules/mime-db/README.md ++/node_modules/mime-types/HISTORY.md ++/node_modules/mime-types/index.js ++/node_modules/mime-types/LICENSE ++/node_modules/mime-types/package.json ++/node_modules/mime-types/README.md ++/node_modules/proxy-from-env/index.js ++/node_modules/proxy-from-env/LICENSE ++/node_modules/proxy-from-env/package.json ++/node_modules/proxy-from-env/README.md ++/node_modules/.package-lock.json diff --git a/.idea/shelf/在进行更新之前于_2026_6_6_09_17_取消提交了更改_[更改]/shelved.patch b/.idea/shelf/在进行更新之前于_2026_6_6_09_17_取消提交了更改_[更改]/shelved.patch new file mode 100644 index 000000000..e82a07df1 --- /dev/null +++ b/.idea/shelf/在进行更新之前于_2026_6_6_09_17_取消提交了更改_[更改]/shelved.patch @@ -0,0 +1,566 @@ +Index: healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (revision d8427f788eee7eb4a45c5aaa5bdc7c679e8f27a5) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/components/order/index.vue (date 1780708030812) +@@ -449,7 +449,7 @@ + import OrderGroupDrawer from '@/views/doctorstation/components/prescription/orderGroupDrawer.vue'; + import PrescriptionHistory from '@/views/doctorstation/components/prescription/prescriptionHistory.vue'; + import Decimal from 'decimal.js'; +-import {ElLoading, ElMessage, ElMessageBox} from 'element-plus'; ++import {ElMessage, ElMessageBox} from 'element-plus'; + import useUserStore from '@/store/modules/user'; + import ApplicationFormBottomBtn from './applicationForm/applicationFormBottomBtn.vue'; + import LeaveHospitalDialog from './applicationForm/leaveHospitalDialog.vue'; +@@ -643,7 +643,7 @@ + }, + ]; + +-let loadingInstance = undefined; ++// loadingInstance removed - using loading ref instead + onMounted(() => { + document.addEventListener('keydown', escKeyListener); + }); +@@ -697,10 +697,7 @@ + } + // 获取列表信息 + function getListInfo(addNewRow) { +- loadingInstance = ElLoading.service({ fullscreen: true }); +- setTimeout(() => { +- loadingInstance.close(); +- }, 180); ++ loading.value = true; + isAdding.value = false; + collapseAllExpanded(); + // 🔧 修复:先加载科室树,再处理处方数据 +@@ -712,7 +709,7 @@ + getPrescriptionList(patientInfo.value.encounterId).then((res) => { + // 等待科室树加载完成后再处理处方数据,确保 resolveOrgId 能正确匹配 + orgTreePromise.then(() => { +- loadingInstance.close(); ++ loading.value = false; + prescriptionList.value = res.data + .map((item) => { + const parsedContent = JSON.parse(item.contentJson); +@@ -772,7 +769,7 @@ + handleAddPrescription(); + } + }); +- }); ++ }).catch(() => { loading.value = false; }); + getContract({ encounterId: patientInfo.value.encounterId }).then((res) => { + contractList.value = res.data; + }); +Index: .gitignore +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/.gitignore b/.gitignore +new file mode 100644 +--- /dev/null (date 1780708030842) ++++ b/.gitignore (date 1780708030842) +@@ -0,0 +1,418 @@ ++/.vscode/mcp.json ++/.vscode/settings.json ++/.qwen/settings.json.orig ++/.playwright-mcp/console-2026-03-31T08-27-30-883Z.log ++/.playwright-mcp/console-2026-05-19T03-10-43-600Z.log ++/.playwright-mcp/console-2026-05-19T03-18-23-396Z.log ++/.playwright-mcp/console-2026-05-19T03-18-51-946Z.log ++/.playwright-mcp/page-2026-05-11T02-56-22-027Z.yml ++/.playwright-mcp/page-2026-05-11T02-56-30-095Z.yml ++/.playwright-mcp/page-2026-05-19T03-10-44-171Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-20-520Z.yml ++/.playwright-mcp/page-2026-05-19T03-11-40-168Z.yml ++/.playwright-mcp/page-2026-05-19T03-12-10-968Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-23-610Z.yml ++/.playwright-mcp/page-2026-05-19T03-18-52-634Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-19-472Z.yml ++/.playwright-mcp/page-2026-05-19T03-19-36-669Z.yml ++/.playwright-mcp/page-2026-05-19T03-20-04-342Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-08-820Z.yml ++/.playwright-mcp/page-2026-05-19T03-21-43-735Z.yml ++/.idea/compiler.xml ++/.idea/encodings.xml ++/.idea/jarRepositories.xml ++/.idea/misc.xml ++/.idea/vcs.xml ++/.idea/workspace.xml ++/node_modules/.bin/husky ++/node_modules/.bin/husky.cmd ++/node_modules/.bin/husky.ps1 ++/node_modules/asynckit/lib/abort.js ++/node_modules/asynckit/lib/async.js ++/node_modules/asynckit/lib/defer.js ++/node_modules/asynckit/lib/iterate.js ++/node_modules/asynckit/lib/readable_asynckit.js ++/node_modules/asynckit/lib/readable_parallel.js ++/node_modules/asynckit/lib/readable_serial.js ++/node_modules/asynckit/lib/readable_serial_ordered.js ++/node_modules/asynckit/lib/state.js ++/node_modules/asynckit/lib/streamify.js ++/node_modules/asynckit/lib/terminator.js ++/node_modules/asynckit/bench.js ++/node_modules/asynckit/index.js ++/node_modules/asynckit/LICENSE ++/node_modules/asynckit/package.json ++/node_modules/asynckit/parallel.js ++/node_modules/asynckit/README.md ++/node_modules/asynckit/serial.js ++/node_modules/asynckit/serialOrdered.js ++/node_modules/asynckit/stream.js ++/node_modules/axios/dist/browser/axios.cjs ++/node_modules/axios/dist/esm/axios.js ++/node_modules/axios/dist/esm/axios.min.js ++/node_modules/axios/dist/esm/axios.min.js.map ++/node_modules/axios/dist/node/axios.cjs ++/node_modules/axios/dist/axios.js ++/node_modules/axios/dist/axios.min.js ++/node_modules/axios/dist/axios.min.js.map ++/node_modules/axios/lib/adapters/adapters.js ++/node_modules/axios/lib/adapters/fetch.js ++/node_modules/axios/lib/adapters/http.js ++/node_modules/axios/lib/adapters/README.md ++/node_modules/axios/lib/adapters/xhr.js ++/node_modules/axios/lib/cancel/CanceledError.js ++/node_modules/axios/lib/cancel/CancelToken.js ++/node_modules/axios/lib/cancel/isCancel.js ++/node_modules/axios/lib/core/Axios.js ++/node_modules/axios/lib/core/AxiosError.js ++/node_modules/axios/lib/core/AxiosHeaders.js ++/node_modules/axios/lib/core/buildFullPath.js ++/node_modules/axios/lib/core/dispatchRequest.js ++/node_modules/axios/lib/core/InterceptorManager.js ++/node_modules/axios/lib/core/mergeConfig.js ++/node_modules/axios/lib/core/README.md ++/node_modules/axios/lib/core/settle.js ++/node_modules/axios/lib/core/transformData.js ++/node_modules/axios/lib/defaults/index.js ++/node_modules/axios/lib/defaults/transitional.js ++/node_modules/axios/lib/env/classes/FormData.js ++/node_modules/axios/lib/env/data.js ++/node_modules/axios/lib/env/README.md ++/node_modules/axios/lib/helpers/AxiosTransformStream.js ++/node_modules/axios/lib/helpers/AxiosURLSearchParams.js ++/node_modules/axios/lib/helpers/bind.js ++/node_modules/axios/lib/helpers/buildURL.js ++/node_modules/axios/lib/helpers/callbackify.js ++/node_modules/axios/lib/helpers/combineURLs.js ++/node_modules/axios/lib/helpers/composeSignals.js ++/node_modules/axios/lib/helpers/cookies.js ++/node_modules/axios/lib/helpers/deprecatedMethod.js ++/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js ++/node_modules/axios/lib/helpers/formDataToJSON.js ++/node_modules/axios/lib/helpers/formDataToStream.js ++/node_modules/axios/lib/helpers/fromDataURI.js ++/node_modules/axios/lib/helpers/HttpStatusCode.js ++/node_modules/axios/lib/helpers/isAbsoluteURL.js ++/node_modules/axios/lib/helpers/isAxiosError.js ++/node_modules/axios/lib/helpers/isURLSameOrigin.js ++/node_modules/axios/lib/helpers/null.js ++/node_modules/axios/lib/helpers/parseHeaders.js ++/node_modules/axios/lib/helpers/parseProtocol.js ++/node_modules/axios/lib/helpers/progressEventReducer.js ++/node_modules/axios/lib/helpers/readBlob.js ++/node_modules/axios/lib/helpers/README.md ++/node_modules/axios/lib/helpers/resolveConfig.js ++/node_modules/axios/lib/helpers/speedometer.js ++/node_modules/axios/lib/helpers/spread.js ++/node_modules/axios/lib/helpers/throttle.js ++/node_modules/axios/lib/helpers/toFormData.js ++/node_modules/axios/lib/helpers/toURLEncodedForm.js ++/node_modules/axios/lib/helpers/trackStream.js ++/node_modules/axios/lib/helpers/validator.js ++/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js ++/node_modules/axios/lib/platform/browser/classes/Blob.js ++/node_modules/axios/lib/platform/browser/classes/FormData.js ++/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/browser/index.js ++/node_modules/axios/lib/platform/common/utils.js ++/node_modules/axios/lib/platform/node/classes/FormData.js ++/node_modules/axios/lib/platform/node/classes/URLSearchParams.js ++/node_modules/axios/lib/platform/node/index.js ++/node_modules/axios/lib/platform/index.js ++/node_modules/axios/lib/axios.js ++/node_modules/axios/lib/utils.js ++/node_modules/axios/CHANGELOG.md ++/node_modules/axios/index.d.cts ++/node_modules/axios/index.d.ts ++/node_modules/axios/index.js ++/node_modules/axios/LICENSE ++/node_modules/axios/MIGRATION_GUIDE.md ++/node_modules/axios/package.json ++/node_modules/axios/README.md ++/node_modules/bignumber.js/doc/API.html ++/node_modules/bignumber.js/bignumber.d.mts ++/node_modules/bignumber.js/bignumber.d.ts ++/node_modules/bignumber.js/bignumber.js ++/node_modules/bignumber.js/bignumber.mjs ++/node_modules/bignumber.js/CHANGELOG.md ++/node_modules/bignumber.js/LICENCE.md ++/node_modules/bignumber.js/package.json ++/node_modules/bignumber.js/README.md ++/node_modules/bignumber.js/types.d.ts ++/node_modules/call-bind-apply-helpers/.github/FUNDING.yml ++/node_modules/call-bind-apply-helpers/test/index.js ++/node_modules/call-bind-apply-helpers/.eslintrc ++/node_modules/call-bind-apply-helpers/.nycrc ++/node_modules/call-bind-apply-helpers/actualApply.d.ts ++/node_modules/call-bind-apply-helpers/actualApply.js ++/node_modules/call-bind-apply-helpers/applyBind.d.ts ++/node_modules/call-bind-apply-helpers/applyBind.js ++/node_modules/call-bind-apply-helpers/CHANGELOG.md ++/node_modules/call-bind-apply-helpers/functionApply.d.ts ++/node_modules/call-bind-apply-helpers/functionApply.js ++/node_modules/call-bind-apply-helpers/functionCall.d.ts ++/node_modules/call-bind-apply-helpers/functionCall.js ++/node_modules/call-bind-apply-helpers/index.d.ts ++/node_modules/call-bind-apply-helpers/index.js ++/node_modules/call-bind-apply-helpers/LICENSE ++/node_modules/call-bind-apply-helpers/package.json ++/node_modules/call-bind-apply-helpers/README.md ++/node_modules/call-bind-apply-helpers/reflectApply.d.ts ++/node_modules/call-bind-apply-helpers/reflectApply.js ++/node_modules/call-bind-apply-helpers/tsconfig.json ++/node_modules/combined-stream/lib/combined_stream.js ++/node_modules/combined-stream/License ++/node_modules/combined-stream/package.json ++/node_modules/combined-stream/Readme.md ++/node_modules/combined-stream/yarn.lock ++/node_modules/delayed-stream/lib/delayed_stream.js ++/node_modules/delayed-stream/.npmignore ++/node_modules/delayed-stream/License ++/node_modules/delayed-stream/Makefile ++/node_modules/delayed-stream/package.json ++/node_modules/delayed-stream/Readme.md ++/node_modules/dunder-proto/.github/FUNDING.yml ++/node_modules/dunder-proto/test/get.js ++/node_modules/dunder-proto/test/index.js ++/node_modules/dunder-proto/test/set.js ++/node_modules/dunder-proto/.eslintrc ++/node_modules/dunder-proto/.nycrc ++/node_modules/dunder-proto/CHANGELOG.md ++/node_modules/dunder-proto/get.d.ts ++/node_modules/dunder-proto/get.js ++/node_modules/dunder-proto/LICENSE ++/node_modules/dunder-proto/package.json ++/node_modules/dunder-proto/README.md ++/node_modules/dunder-proto/set.d.ts ++/node_modules/dunder-proto/set.js ++/node_modules/dunder-proto/tsconfig.json ++/node_modules/es-define-property/.github/FUNDING.yml ++/node_modules/es-define-property/test/index.js ++/node_modules/es-define-property/.eslintrc ++/node_modules/es-define-property/.nycrc ++/node_modules/es-define-property/CHANGELOG.md ++/node_modules/es-define-property/index.d.ts ++/node_modules/es-define-property/index.js ++/node_modules/es-define-property/LICENSE ++/node_modules/es-define-property/package.json ++/node_modules/es-define-property/README.md ++/node_modules/es-define-property/tsconfig.json ++/node_modules/es-errors/.github/FUNDING.yml ++/node_modules/es-errors/test/index.js ++/node_modules/es-errors/.eslintrc ++/node_modules/es-errors/CHANGELOG.md ++/node_modules/es-errors/eval.d.ts ++/node_modules/es-errors/eval.js ++/node_modules/es-errors/index.d.ts ++/node_modules/es-errors/index.js ++/node_modules/es-errors/LICENSE ++/node_modules/es-errors/package.json ++/node_modules/es-errors/range.d.ts ++/node_modules/es-errors/range.js ++/node_modules/es-errors/README.md ++/node_modules/es-errors/ref.d.ts ++/node_modules/es-errors/ref.js ++/node_modules/es-errors/syntax.d.ts ++/node_modules/es-errors/syntax.js ++/node_modules/es-errors/tsconfig.json ++/node_modules/es-errors/type.d.ts ++/node_modules/es-errors/type.js ++/node_modules/es-errors/uri.d.ts ++/node_modules/es-errors/uri.js ++/node_modules/es-object-atoms/.github/FUNDING.yml ++/node_modules/es-object-atoms/test/index.js ++/node_modules/es-object-atoms/.eslintrc ++/node_modules/es-object-atoms/CHANGELOG.md ++/node_modules/es-object-atoms/index.d.ts ++/node_modules/es-object-atoms/index.js ++/node_modules/es-object-atoms/isObject.d.ts ++/node_modules/es-object-atoms/isObject.js ++/node_modules/es-object-atoms/LICENSE ++/node_modules/es-object-atoms/package.json ++/node_modules/es-object-atoms/README.md ++/node_modules/es-object-atoms/RequireObjectCoercible.d.ts ++/node_modules/es-object-atoms/RequireObjectCoercible.js ++/node_modules/es-object-atoms/ToObject.d.ts ++/node_modules/es-object-atoms/ToObject.js ++/node_modules/es-object-atoms/tsconfig.json ++/node_modules/es-set-tostringtag/test/index.js ++/node_modules/es-set-tostringtag/.eslintrc ++/node_modules/es-set-tostringtag/.nycrc ++/node_modules/es-set-tostringtag/CHANGELOG.md ++/node_modules/es-set-tostringtag/index.d.ts ++/node_modules/es-set-tostringtag/index.js ++/node_modules/es-set-tostringtag/LICENSE ++/node_modules/es-set-tostringtag/package.json ++/node_modules/es-set-tostringtag/README.md ++/node_modules/es-set-tostringtag/tsconfig.json ++/node_modules/follow-redirects/debug.js ++/node_modules/follow-redirects/http.js ++/node_modules/follow-redirects/https.js ++/node_modules/follow-redirects/index.js ++/node_modules/follow-redirects/LICENSE ++/node_modules/follow-redirects/package.json ++/node_modules/follow-redirects/README.md ++/node_modules/form-data/lib/browser.js ++/node_modules/form-data/lib/form_data.js ++/node_modules/form-data/lib/populate.js ++/node_modules/form-data/CHANGELOG.md ++/node_modules/form-data/index.d.ts ++/node_modules/form-data/License ++/node_modules/form-data/package.json ++/node_modules/form-data/README.md ++/node_modules/function-bind/.github/FUNDING.yml ++/node_modules/function-bind/.github/SECURITY.md ++/node_modules/function-bind/test/.eslintrc ++/node_modules/function-bind/test/index.js ++/node_modules/function-bind/.eslintrc ++/node_modules/function-bind/.nycrc ++/node_modules/function-bind/CHANGELOG.md ++/node_modules/function-bind/implementation.js ++/node_modules/function-bind/index.js ++/node_modules/function-bind/LICENSE ++/node_modules/function-bind/package.json ++/node_modules/function-bind/README.md ++/node_modules/get-intrinsic/.github/FUNDING.yml ++/node_modules/get-intrinsic/test/GetIntrinsic.js ++/node_modules/get-intrinsic/.eslintrc ++/node_modules/get-intrinsic/.nycrc ++/node_modules/get-intrinsic/CHANGELOG.md ++/node_modules/get-intrinsic/index.js ++/node_modules/get-intrinsic/LICENSE ++/node_modules/get-intrinsic/package.json ++/node_modules/get-intrinsic/README.md ++/node_modules/get-proto/.github/FUNDING.yml ++/node_modules/get-proto/test/index.js ++/node_modules/get-proto/.eslintrc ++/node_modules/get-proto/.nycrc ++/node_modules/get-proto/CHANGELOG.md ++/node_modules/get-proto/index.d.ts ++/node_modules/get-proto/index.js ++/node_modules/get-proto/LICENSE ++/node_modules/get-proto/Object.getPrototypeOf.d.ts ++/node_modules/get-proto/Object.getPrototypeOf.js ++/node_modules/get-proto/package.json ++/node_modules/get-proto/README.md ++/node_modules/get-proto/Reflect.getPrototypeOf.d.ts ++/node_modules/get-proto/Reflect.getPrototypeOf.js ++/node_modules/get-proto/tsconfig.json ++/node_modules/gopd/.github/FUNDING.yml ++/node_modules/gopd/test/index.js ++/node_modules/gopd/.eslintrc ++/node_modules/gopd/CHANGELOG.md ++/node_modules/gopd/gOPD.d.ts ++/node_modules/gopd/gOPD.js ++/node_modules/gopd/index.d.ts ++/node_modules/gopd/index.js ++/node_modules/gopd/LICENSE ++/node_modules/gopd/package.json ++/node_modules/gopd/README.md ++/node_modules/gopd/tsconfig.json ++/node_modules/has-symbols/.github/FUNDING.yml ++/node_modules/has-symbols/test/shams/core-js.js ++/node_modules/has-symbols/test/shams/get-own-property-symbols.js ++/node_modules/has-symbols/test/index.js ++/node_modules/has-symbols/test/tests.js ++/node_modules/has-symbols/.eslintrc ++/node_modules/has-symbols/.nycrc ++/node_modules/has-symbols/CHANGELOG.md ++/node_modules/has-symbols/index.d.ts ++/node_modules/has-symbols/index.js ++/node_modules/has-symbols/LICENSE ++/node_modules/has-symbols/package.json ++/node_modules/has-symbols/README.md ++/node_modules/has-symbols/shams.d.ts ++/node_modules/has-symbols/shams.js ++/node_modules/has-symbols/tsconfig.json ++/node_modules/has-tostringtag/.github/FUNDING.yml ++/node_modules/has-tostringtag/test/shams/core-js.js ++/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js ++/node_modules/has-tostringtag/test/index.js ++/node_modules/has-tostringtag/test/tests.js ++/node_modules/has-tostringtag/.eslintrc ++/node_modules/has-tostringtag/.nycrc ++/node_modules/has-tostringtag/CHANGELOG.md ++/node_modules/has-tostringtag/index.d.ts ++/node_modules/has-tostringtag/index.js ++/node_modules/has-tostringtag/LICENSE ++/node_modules/has-tostringtag/package.json ++/node_modules/has-tostringtag/README.md ++/node_modules/has-tostringtag/shams.d.ts ++/node_modules/has-tostringtag/shams.js ++/node_modules/has-tostringtag/tsconfig.json ++/node_modules/hasown/.github/FUNDING.yml ++/node_modules/hasown/.nycrc ++/node_modules/hasown/CHANGELOG.md ++/node_modules/hasown/index.d.ts ++/node_modules/hasown/index.js ++/node_modules/hasown/LICENSE ++/node_modules/hasown/package.json ++/node_modules/hasown/README.md ++/node_modules/hasown/tsconfig.json ++/node_modules/husky/bin.js ++/node_modules/husky/husky ++/node_modules/husky/index.d.ts ++/node_modules/husky/index.js ++/node_modules/husky/LICENSE ++/node_modules/husky/package.json ++/node_modules/husky/README.md ++/node_modules/json-bigint/lib/parse.js ++/node_modules/json-bigint/lib/stringify.js ++/node_modules/json-bigint/index.js ++/node_modules/json-bigint/LICENSE ++/node_modules/json-bigint/package.json ++/node_modules/json-bigint/README.md ++/node_modules/math-intrinsics/.github/FUNDING.yml ++/node_modules/math-intrinsics/constants/maxArrayLength.d.ts ++/node_modules/math-intrinsics/constants/maxArrayLength.js ++/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts ++/node_modules/math-intrinsics/constants/maxSafeInteger.js ++/node_modules/math-intrinsics/constants/maxValue.d.ts ++/node_modules/math-intrinsics/constants/maxValue.js ++/node_modules/math-intrinsics/test/index.js ++/node_modules/math-intrinsics/.eslintrc ++/node_modules/math-intrinsics/abs.d.ts ++/node_modules/math-intrinsics/abs.js ++/node_modules/math-intrinsics/CHANGELOG.md ++/node_modules/math-intrinsics/floor.d.ts ++/node_modules/math-intrinsics/floor.js ++/node_modules/math-intrinsics/isFinite.d.ts ++/node_modules/math-intrinsics/isFinite.js ++/node_modules/math-intrinsics/isInteger.d.ts ++/node_modules/math-intrinsics/isInteger.js ++/node_modules/math-intrinsics/isNaN.d.ts ++/node_modules/math-intrinsics/isNaN.js ++/node_modules/math-intrinsics/isNegativeZero.d.ts ++/node_modules/math-intrinsics/isNegativeZero.js ++/node_modules/math-intrinsics/LICENSE ++/node_modules/math-intrinsics/max.d.ts ++/node_modules/math-intrinsics/max.js ++/node_modules/math-intrinsics/min.d.ts ++/node_modules/math-intrinsics/min.js ++/node_modules/math-intrinsics/mod.d.ts ++/node_modules/math-intrinsics/mod.js ++/node_modules/math-intrinsics/package.json ++/node_modules/math-intrinsics/pow.d.ts ++/node_modules/math-intrinsics/pow.js ++/node_modules/math-intrinsics/README.md ++/node_modules/math-intrinsics/round.d.ts ++/node_modules/math-intrinsics/round.js ++/node_modules/math-intrinsics/sign.d.ts ++/node_modules/math-intrinsics/sign.js ++/node_modules/math-intrinsics/tsconfig.json ++/node_modules/mime-db/db.json ++/node_modules/mime-db/HISTORY.md ++/node_modules/mime-db/index.js ++/node_modules/mime-db/LICENSE ++/node_modules/mime-db/package.json ++/node_modules/mime-db/README.md ++/node_modules/mime-types/HISTORY.md ++/node_modules/mime-types/index.js ++/node_modules/mime-types/LICENSE ++/node_modules/mime-types/package.json ++/node_modules/mime-types/README.md ++/node_modules/proxy-from-env/index.js ++/node_modules/proxy-from-env/LICENSE ++/node_modules/proxy-from-env/package.json ++/node_modules/proxy-from-env/README.md ++/node_modules/.package-lock.json +Index: healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+>\n\n\n\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue +--- a/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (revision d8427f788eee7eb4a45c5aaa5bdc7c679e8f27a5) ++++ b/healthlink-his-ui/src/views/inpatientDoctor/home/emr/index.vue (date 1780708030827) +@@ -252,31 +252,37 @@ + // 处理节点点击,根据后台返回的路径加载组件 + const handleNodeClick = (data, node) => { + if (node.isLeaf) { ++ const newRouter = data.document?.vueRouter; ++ const oldRouter = currentSelectTemplate.value?.vueRouter; ++ const isSameTemplate = newRouter && oldRouter && newRouter === oldRouter; ++ + // 存储当前节点数据 + currentSelectTemplate.value = data.document; + +- // 在切换组件前先重置表单数据,避免显示之前的数据 +- editForm.value = { +- id: '', +- definitionId: '', +- definitionBusNo: '', +- contentJson: '', +- statusEnum: 1, +- organizationId: 0, +- encounterId: '', +- patientId: '', +- recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), +- createBy: '', +- source: '', +- }; +- +- // 先清空当前组件,再设置新组件,确保组件完全重新渲染 +- currentComponent.value = undefined; +- +- // 使用 nextTick 确保 DOM 更新后再设置新组件 +- nextTick(() => { +- currentComponent.value = currentSelectTemplate.value.vueRouter; +- }); ++ if (isSameTemplate) { ++ // 同一模板(仅患者切换):不卸载组件、不清空表单,避免闪烁 ++ // loading 遮罩覆盖过渡,loadLatestMedicalRecord 会原子替换表单数据 ++ loading.value = true; ++ } else { ++ // 不同模板:先清空再设置,确保组件完全重新渲染 ++ editForm.value = { ++ id: '', ++ definitionId: '', ++ definitionBusNo: '', ++ contentJson: '', ++ statusEnum: 1, ++ organizationId: 0, ++ encounterId: '', ++ patientId: '', ++ recordTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), ++ createBy: '', ++ source: '', ++ }; ++ currentComponent.value = undefined; ++ nextTick(() => { ++ currentComponent.value = newRouter; ++ }); ++ } + } else { + currentSelectTemplate.value = { + id: '', +@@ -624,8 +630,8 @@ + // 加载最新的病历数据并回显 + const loadLatestMedicalRecord = async () => { + if (!patientInfo.value?.encounterId || !currentSelectTemplate.value.id) return; +- editForm.value.id = ''; + loading.value = true; ++ editForm.value.id = ''; + try { + // 获取患者的历史病历记录 + const res = await getRecordByEncounterIdList({ diff --git a/healthlink-his-server/AGENTS.md b/healthlink-his-server/AGENTS.md index 4a13dc4ae..d320b4a8a 100644 --- a/healthlink-his-server/AGENTS.md +++ b/healthlink-his-server/AGENTS.md @@ -1,29 +1,438 @@ -# HealthLink-HIS 后端开发规范 +# HealthLink-HIS — AI 开发规范 -> 🤖 本文件供 AI 工具自动读取。完整规范见 **[../../RULES.md](../../RULES.md)** +> 🤖 本文件供所有 AI 编码工具自动读取。进入本项目后必须遵守以下规范。 +> +> **模型决定上限,Harness 决定底线。** -## 铁律速查 +--- -1. **修改完必须测试** — `mvn clean compile -DskipTests` -2. **Flyway 迁移** — 新建表/字段必须走 Flyway -3. **测试通过才提交** — 编译+测试全通过才能 commit -4. **API路径对齐** — `/healthlink-his/api/v1/` -5. **先分解再行动** — 非平凡任务先出计划 -6. **文档在 MD 目录** — 大写下划线命名 -7. **铁律18: 禁止破坏原有功能** — 完善功能时不能破坏已有功能 +## 一、项目概览 -## 快速命令 +| 属性 | 值 | +|------|------| +| 项目名 | HealthLink-HIS(医院信息系统) | +| 后端路径 | `healthlink-his-server/` | +| 前端路径 | `healthlink-his-ui/` | +| 文档路径 | `MD/` | +| JDK | 25 (OpenJDK) | +| Spring Boot | 4.0.6 | +| MyBatis-Plus | 3.5.16 | +| Vue | 3.x + Vite + Element Plus | +| 数据库 | PostgreSQL 15+ | +| 包名 | `com.healthlink.his` | +| 后端端口 | 18082 | +| 前端端口 | 81 | + +--- + +## 二、铁律(必须遵守,违反即失败) + +### 🔴 P0 铁律 — 不可违反 + +**铁律1: 修改完必须测试** +``` +后端: mvn clean compile -DskipTests → mvn install -DskipTests → mvn test +前端: npm run build:dev → npm run lint +``` +- 白盒:编译通过,无 ERROR +- 黑盒:关键接口返回 `{code:200, data:...}`,验证业务逻辑 +- 冒烟:应用正常启动,核心流程通畅 + +**铁律2: Flyway 数据库迁移** +- 凡是新建表、新增字段,必须创建 Flyway 迁移脚本 +- 路径:`healthlink-his-domain/src/main/resources/db/migration/` +- 命名:`V{版本号}__{描述}.sql`(双下划线) + +**铁律3: 测试通过后才提交** +- 编译 + 测试全部通过后才能 git commit +- 不提交未完成的功能、调试代码、临时文件 + +**铁律4: 前后端API路径对齐** +- 后端前缀:`/healthlink-his/api/v1/` +- 前端 `request.js` 的 baseURL 必须与后端匹配 + +**铁律5: 状态值一致性(Bug #574 教训)** +- 修改任何状态值前,必须先列出完整的状态流转链路 +- 检查项:枚举定义 → Service 设置 → 查询映射 → 前端 STATUS_CLASS_MAP → 前端 v-if → 统计SQL +- 禁止:只改一端不检查其他端 + +**铁律6: 禁止删除源文件(Bug #574 教训)** +- 绝对禁止删除项目中已有的 Java/Vue/SQL 源文件 +- 编译错误 → 修复错误;重复文件 → 重构合并 +- AI 幻觉文件 → 检查 `git ls-tree baseline -- ` 确认后再删除 +- 唯一例外:明确由人类确认删除的文件 + +**铁律7: 禁止修改已有公开方法签名** +- 不能删除/重命名已有的 public 方法,不能修改参数列表 +- 需要新功能 → 添加重载方法;需要改行为 → 修改内部实现 + +**铁律8: 验证后才宣称完成(Verification Before Completion)** +- **没有跑过验证命令,就不能说"完成了""通过了""没问题"** +- 禁止使用"应该可以""大概没问题""看起来正确" +- 必须:运行命令 → 读取输出 → 确认结果 → 才能宣称 +- 这是诚实原则,不是效率问题 + +**铁律9: 开发前必须审核原有代码(P0 — 铁律)** +- **任何新功能开发前,必须先搜索项目中是否已有相关代码** +- 搜索路径:Controller / AppService / Service / Mapper / Entity / 前端页面 / API接口 +- 如果已有部分功能 → 在原有代码基础上**升级优化完善**,禁止另起炉灶 +- 如果已有接口但前端缺失 → 只补前端,不重复建后端 +- 如果已有前端但后端缺失 → 只补后端,不重写前端 +- 搜索命令:`rg -l "关键词" healthlink-his-server/ healthlink-his-ui/src/` +- 禁止:不看代码就新建模块、重复实现已有功能、废弃原有代码另写一套 + +**铁律10: 状态变更影响面分析(Bug #574→575 教训)** +- 改任何状态枚举值前,**必须**执行影响面分析 +- `rg "原状态枚举名" --type java` 列出所有引用文件 +- 逐个检查:设置值?查询过滤?显示映射?统计聚合? +- 检查逆向流程:退号、取消、停诊是否兼容新状态 +- 检查 XML mapper 中所有查询过滤条件 +- 检查前端所有 v-if/v-for/disabled 条件 +- **禁止**:只改正向流程不验逆向流程 + +**铁律11: 逆向流程验证(Bug #575 教训)** +- 涉及状态流转的 Bug,验证时**必须**覆盖: + - 正向:预约→签到→就诊→完成 + - 逆向:退号、取消预约、停诊、退费 + - 边界:并发操作、重复操作、异常中断 +- **禁止**:只测正向流程就标记"修复完成" + +**铁律12: 全链路 6 环分析** +- 涉及数据库字段的 Bug/需求 必须走完整链路 +``` +前端/页面 → Controller → Service → Mapper → DB/SQL → 关联模块 + ①录入 ②验证 ③业务 ④持久化 ⑤存储 ⑥联动 +``` +- ①录入:前端有无输入入口(弹窗、表格行编辑、表单) +- ②验证:Controller 参数校验、@Valid、权限控制 +- ③业务:Service 业务逻辑、事务边界、多个 Service 实现类入口 +- ④持久化:Mapper XML、DTO 字段映射、类型转换 +- ⑤存储:数据库表结构、索引、NOT NULL 约束 +- ⑥联动:上游(医嘱→护士站)、下游(打印、计费、报表)是否同步 + +**铁律13: 全链路验证(状态流转 Bug 必做)** +- 修复后按以下顺序验证,**编译通过不等于修复完成** +``` +① 数据库:SELECT status FROM table WHERE id = ? → 确认写入正确 +② 后端接口:检查所有 if/switch 分支 → 确认映射正确 +③ 前端显示:检查 STATUS_CLASS_MAP → 确认文本正确 +④ 前端交互:检查 v-if/v-for/disabled → 确认按钮状态正确 +⑤ 统计数据:检查聚合 SQL → 确认统计包含新状态 +``` + +**铁律14: 池/统计表同步(Bug #574 教训)** +- **任何状态变更必须同步更新关联统计表** +- 检查清单: + 1. 状态变更后,哪些统计字段需要更新? + 2. 是原子递增/递减,还是全量重算? + 3. 并发安全:用 `SET field = field + 1` 还是先查后改? + 4. 逆向操作(退号/取消)是否正确回滚统计? +- **禁止**:只改状态不改统计,或只改统计不改状态 + +**铁律15: 统计变更必须验证实际值(Bug #575 教训)** +- 修改统计逻辑后,**必须查数据库验证实际值** +- 对比操作前后的值,确认统计正确 +- **禁止**:改了统计逻辑不查数据库验证 + +**铁律16: 搜索所有相关代码路径** +- 修复前必须用 `rg` 搜索所有引用 +``` +rg "状态枚举名|相关方法名|相关字段名" --type java --type vue +``` +- 确保不遗漏任何引用路径 + +**铁律17: 数据库铁律** +- **修前必须查询真实数据库** — 确认表结构、字段约束、索引 +- **禁止凭猜测写 SQL** — 先查看表结构 +- **修改 SQL 后必须验证** — `EXPLAIN` 或实际查询验证语法 +- **NOT NULL 约束必须检查** — INSERT/UPDATE 前先查 `is_nullable` +- **关联表必须查完整** — 涉及 JOIN 查所有关联表结构和外键 + +**铁律18: 禁止破坏原有功能(P0绝对铁律)** +- **完善增加功能和流程时,绝对不能破坏或者让原有功能不能用** +- 修改已有实体前必须对比原始文件(`git show HEAD~N:./file.java`),保留所有原有字段和方法 +- 新增字段只能追加,不能删除或重命名已有字段 +- SQL迁移只允许 `ALTER TABLE ADD COLUMN`,不允许 `DROP COLUMN` 或 `RENAME COLUMN` +- Controller新端点不能修改已有端点的路径或参数 +- 前端新页面不能修改已有页面的组件结构 +- 每次修改后必须 `mvn clean compile -DskipTests` 验证 + +**铁律19: 编译错误不区分来源(Bug #698 教训)** +- `mvn compile`、`vite build`、`vue-tsc` 等构建命令报错 = 不过关,**不管是自己引入的还是历史遗留的** +- 禁止说"这是预存问题""不是我改的""原有bug"——构建通不过就不能宣称完成 +- 正确做法:定位错误 → 修复 → 重新构建确认通过 → 然后才能继续 + +**铁律20: 数据来源必须验证(Bug #698 教训)** +- 涉及数据查询/提取时,必须先确认数据实际存储位置,不能假设 +- 修复前必须:打印/检查原始数据结构 → 确认字段存在 → 再写提取逻辑 +- 禁止:凭代码推断数据位置、假设"应该在这里" + +**铁律21: 外部配置值必须实测验证(Bug #698 教训)** +- 使用外部服务(API、模型、数据库)的配置值,必须实际调用验证 +- 配置变更后必须:发起一次真实请求 → 确认返回 200 → 再宣称配置正确 +- 禁止:改完配置不测试、假设"应该能用" + +**铁律22: 端到端验证必须有实际输出证据(Bug #698 教训)** +- 声称功能生效前,必须有实际的端到端输出证据 +- 验证方式:运行命令 → 检查输出中包含预期关键词 +- 禁止:只检查代码路径可达就算"验证通过" + +**铁律23: 文件读写强制 UTF-8 编码(必遵守)** +- **禁止**使用 PowerShell Get-Content -Raw(不带 -Encoding UTF8)读取源文件 +- **禁止**使用 Out-File -Encoding utf8(会写 BOM) +- **正确写法**: + - 读取:`[System.IO.File]::ReadAllText($path, [System.Text.Encoding]::UTF8)` + - 写入:`[System.IO.File]::WriteAllText($path, $content, [System.Text.UTF8Encoding]::new(False))` +- **原因**:Windows PowerShell 5.1 默认用系统 locale(GBK/CP936)读写,会把 UTF-8 中文变成乱码 + +**铁律24: 禁止硬编码业务默认值(Bug #617 教训)** +- **禁止**在提交参数中硬编码业务默认值(如 `contractNo: '0000'`) +- 必须使用用户在表单中选择的值,硬编码值仅作为 fallback +- 检查清单: + 1. 表单字段是否有 `v-model` 绑定? + 2. 构建提交参数时是否使用了绑定值? + 3. 提交后是否覆盖了用户选择? + +--- + +### 🟡 P1 铁律 — 强烈建议 + +**铁律25: 先分解再行动** +- 修改超过3个文件、涉及多模块、数据库变更,必须先制定计划 + +**铁律26: 验证后信** +- 每次修改后必须验证编译通过,不信记忆 + +**铁律27: 文档统一管理** +- 所有文档存储在 `MD/` 目录 +- 文件名:大写英文+下划线(如 `BACKEND_CHECKLIST.md`) +- 文档头部必须包含元数据块(文档类型、版本、日期) + +**铁律28: 设计文档必须包含UI设计和调用流程** +- 所有新模块/页面的设计文档必须包含:UI布局描述、交互效果清单、前后端调用流程 +- 没有明确UI设计的模块,禁止直接编码 +- 设计文档必须写清楚:系统调用关系、方法函数调用关系、完整业务流程 +- 设计文档中每个用户操作必须对应:前端事件 → API调用 → 后端处理链路 → 返回数据 → UI渲染 + +**铁律29: 设计文档确认后自主开发(铁律)** +- 设计文档一旦确认,后续开发**必须按文档自主执行** +- **禁止反复询问"是否继续""下一步做什么""是否开始"**——直接按计划推进 +- 每完成一个 Sprint,自动提交推送,然后立即开始下一个 Sprint +- 只在遇到**无法解决的阻塞**时才暂停询问 + +**铁律30: 前端验证铁律** +- **提交前必须编译前端** — `npm run build:dev` 或 `npx vite build` 通过才算完成 +- **禁止只改 .vue 文件不验证编译** — 改完必须跑一次编译确认无报错 +- **SCSS 括号闭合必须检查** — `