Selaa lähdekoodia

Merge branch 'story-234' of ssh://121.43.162.141:10022/six.fe/health.admin into story-afterSale

张田田 2 kuukautta sitten
vanhempi
commit
230c19edec

+ 157 - 101
package-lock.json

@@ -8,23 +8,28 @@
       "name": "six-hms",
       "version": "0.0.0",
       "dependencies": {
+        "@alova/adapter-xhr": "^2.2.1",
         "@ant-design/icons-vue": "^7.0.1",
         "@logicflow/core": "^2.1.2",
         "@logicflow/extension": "^2.1.4",
         "@logicflow/layout": "^2.0.2",
         "@logicflow/vue-node-registry": "^1.1.3",
+        "@types/markdown-it": "^14.1.2",
         "@unocss/reset": "^0.61.0",
         "@vueuse/components": "^10.11.0",
         "@vueuse/core": "^10.11.0",
         "@vueuse/router": "^10.11.1",
+        "@wangeditor/core": "^1.1.19",
         "@wangeditor/editor": "^5.1.23",
-        "@wangeditor/editor-for-vue": "^5.1.12",
+        "@wangeditor/plugin-ctrl-enter": "^1.1.2",
+        "@wangeditor/plugin-md": "^1.0.0",
         "alova": "^3.2.10",
         "ant-design-vue": "^4.2.3",
         "china-division": "^2.7.0",
         "dayjs": "^1.11.11",
         "echarts": "^5.5.1",
         "element-plus": "^2.9.10",
+        "markdown-it": "^14.1.0",
         "pinia": "^2.1.7",
         "pinia-plugin-persistedstate": "^3.2.1",
         "swiper": "^8.4.7",
@@ -37,7 +42,7 @@
         "vue-virtual-scroller": "2.0.0-beta.8",
         "vue3-slider": "^1.10.1",
         "vuedraggable": "^4.1.0",
-        "vxe-pc-ui": "^4.6.42",
+        "vxe-pc-ui": "4.6.42",
         "vxe-table": "^4.7.62"
       },
       "devDependencies": {
@@ -71,6 +76,24 @@
         "vue-tsc": "^2.0.21"
       }
     },
+    "node_modules/@alova/adapter-xhr": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/@alova/adapter-xhr/-/adapter-xhr-2.3.1.tgz",
+      "integrity": "sha512-mhViueeSJ6yfyEUvHIWyZlb6V8+9GJCzwU1hUsvjXSZHpkzGCeNUefxjjFC++K9UBsvUzJ5KGeyeqoToUQg3gg==",
+      "license": "MIT",
+      "dependencies": {
+        "@alova/shared": "1.3.2"
+      },
+      "peerDependencies": {
+        "alova": "^3.0.20"
+      }
+    },
+    "node_modules/@alova/adapter-xhr/node_modules/@alova/shared": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmmirror.com/@alova/shared/-/shared-1.3.2.tgz",
+      "integrity": "sha512-1XvDLWgYpVZ99MmLl1f3Fw4T6S6pPYk5afz5cwRVjuq8JXEGsDn9IygDKfvRyWqkqCBx7Jif07LIct1O+MVEow==",
+      "license": "MIT"
+    },
     "node_modules/@alova/mock": {
       "version": "2.0.13",
       "dev": true,
@@ -189,7 +212,6 @@
       "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@ampproject/remapping": "^2.2.0",
         "@babel/code-frame": "^7.27.1",
@@ -432,7 +454,6 @@
       "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.27.2.tgz",
       "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@babel/types": "^7.27.1"
       },
@@ -1396,7 +1417,6 @@
       "resolved": "https://registry.npmmirror.com/@logicflow/core/-/core-2.1.4.tgz",
       "integrity": "sha512-cK+drgL57faFDUOb2Zn0vWDRtVJe6MswF3GwLb/Sn/9aVxiSIk+5Z6cpSdY+4iuTpxFDKj0DBpvMYEeeLPnzpg==",
       "license": "Apache-2.0",
-      "peer": true,
       "dependencies": {
         "classnames": "^2.3.2",
         "lodash-es": "^4.17.21",
@@ -2229,6 +2249,12 @@
       "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==",
       "license": "MIT"
     },
+    "node_modules/@types/linkify-it": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-5.0.0.tgz",
+      "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
+      "license": "MIT"
+    },
     "node_modules/@types/lodash": {
       "version": "4.17.17",
       "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.17.tgz",
@@ -2240,11 +2266,26 @@
       "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz",
       "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@types/lodash": "*"
       }
     },
+    "node_modules/@types/markdown-it": {
+      "version": "14.1.2",
+      "resolved": "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-14.1.2.tgz",
+      "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/linkify-it": "^5",
+        "@types/mdurl": "^2"
+      }
+    },
+    "node_modules/@types/mdurl": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-2.0.0.tgz",
+      "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
+      "license": "MIT"
+    },
     "node_modules/@types/mockjs": {
       "version": "1.0.10",
       "dev": true,
@@ -2254,7 +2295,6 @@
       "version": "20.17.29",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "undici-types": "~6.19.2"
       }
@@ -2305,7 +2345,6 @@
       "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
       "dev": true,
       "license": "BSD-2-Clause",
-      "peer": true,
       "dependencies": {
         "@typescript-eslint/scope-manager": "7.18.0",
         "@typescript-eslint/types": "7.18.0",
@@ -2962,7 +3001,6 @@
       "resolved": "https://registry.npmmirror.com/@uppy/core/-/core-2.3.4.tgz",
       "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@transloadit/prettier-bytes": "0.0.7",
         "@uppy/store-default": "^2.1.1",
@@ -2994,7 +3032,6 @@
       "resolved": "https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
       "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@uppy/companion-client": "^2.2.2",
         "@uppy/utils": "^4.1.2",
@@ -3383,7 +3420,6 @@
       "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz",
       "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@vue/reactivity": "3.5.13",
         "@vue/shared": "3.5.13"
@@ -3547,12 +3583,41 @@
         "vue": "^3.2.0"
       }
     },
+    "node_modules/@wangeditor/core": {
+      "version": "1.1.19",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz",
+      "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/event-emitter": "^0.3.3",
+        "event-emitter": "^0.3.5",
+        "html-void-elements": "^2.0.0",
+        "i18next": "^20.4.0",
+        "scroll-into-view-if-needed": "^2.2.28",
+        "slate-history": "^0.66.0"
+      },
+      "peerDependencies": {
+        "@uppy/core": "^2.1.1",
+        "@uppy/xhr-upload": "^2.0.3",
+        "dom7": "^3.0.0",
+        "is-hotkey": "^0.2.0",
+        "lodash.camelcase": "^4.3.0",
+        "lodash.clonedeep": "^4.5.0",
+        "lodash.debounce": "^4.0.8",
+        "lodash.foreach": "^4.5.0",
+        "lodash.isequal": "^4.5.0",
+        "lodash.throttle": "^4.1.1",
+        "lodash.toarray": "^4.4.0",
+        "nanoid": "^3.2.0",
+        "slate": "^0.72.0",
+        "snabbdom": "^3.1.0"
+      }
+    },
     "node_modules/@wangeditor/editor": {
       "version": "5.1.23",
       "resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz",
       "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@uppy/core": "^2.1.1",
         "@uppy/xhr-upload": "^2.0.3",
@@ -3577,22 +3642,11 @@
         "snabbdom": "^3.1.0"
       }
     },
-    "node_modules/@wangeditor/editor-for-vue": {
-      "version": "5.1.12",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
-      "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==",
-      "license": "MIT",
-      "peerDependencies": {
-        "@wangeditor/editor": ">=5.1.0",
-        "vue": "^3.0.5"
-      }
-    },
     "node_modules/@wangeditor/editor/node_modules/@wangeditor/basic-modules": {
       "version": "1.1.7",
       "resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
       "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "is-url": "^1.2.4"
       },
@@ -3620,37 +3674,6 @@
         "snabbdom": "^3.1.0"
       }
     },
-    "node_modules/@wangeditor/editor/node_modules/@wangeditor/core": {
-      "version": "1.1.19",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz",
-      "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
-      "license": "MIT",
-      "peer": true,
-      "dependencies": {
-        "@types/event-emitter": "^0.3.3",
-        "event-emitter": "^0.3.5",
-        "html-void-elements": "^2.0.0",
-        "i18next": "^20.4.0",
-        "scroll-into-view-if-needed": "^2.2.28",
-        "slate-history": "^0.66.0"
-      },
-      "peerDependencies": {
-        "@uppy/core": "^2.1.1",
-        "@uppy/xhr-upload": "^2.0.3",
-        "dom7": "^3.0.0",
-        "is-hotkey": "^0.2.0",
-        "lodash.camelcase": "^4.3.0",
-        "lodash.clonedeep": "^4.5.0",
-        "lodash.debounce": "^4.0.8",
-        "lodash.foreach": "^4.5.0",
-        "lodash.isequal": "^4.5.0",
-        "lodash.throttle": "^4.1.1",
-        "lodash.toarray": "^4.4.0",
-        "nanoid": "^3.2.0",
-        "slate": "^0.72.0",
-        "snabbdom": "^3.1.0"
-      }
-    },
     "node_modules/@wangeditor/editor/node_modules/@wangeditor/list-module": {
       "version": "1.0.5",
       "resolved": "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz",
@@ -3714,7 +3737,6 @@
       "resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
       "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "ssr-window": "^3.0.0-alpha.1"
       }
@@ -3725,13 +3747,30 @@
       "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==",
       "license": "MIT"
     },
+    "node_modules/@wangeditor/plugin-ctrl-enter": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/plugin-ctrl-enter/-/plugin-ctrl-enter-1.1.2.tgz",
+      "integrity": "sha512-TbYXcCbpwmgjb+Bwi+cy5q6BlNLtV8uIavxeUns+TRwXTNZDiItfDqduTH/fyMvhpKmt6cDMeXRgX4UVb0V75Q==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@wangeditor/editor": ">=5.0.0"
+      }
+    },
+    "node_modules/@wangeditor/plugin-md": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/plugin-md/-/plugin-md-1.0.0.tgz",
+      "integrity": "sha512-wpbusrhSNmb6keC5vmiaQ2nBBfiwwVWmfRp+zNB65nGrPHVRjaFQBNxTpGoL+rc02KCYdflzEbZAg+kzGtMXlQ==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@wangeditor/editor": ">=5.0.0"
+      }
+    },
     "node_modules/acorn": {
       "version": "8.14.1",
       "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.1.tgz",
       "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "bin": {
         "acorn": "bin/acorn"
       },
@@ -3776,7 +3815,6 @@
     "node_modules/alova": {
       "version": "3.2.10",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@alova/shared": "1.1.2",
         "rate-limiter-flexible": "^5.0.3"
@@ -3867,7 +3905,6 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true,
       "license": "Python-2.0"
     },
     "node_modules/array-tree-filter": {
@@ -4009,7 +4046,6 @@
         }
       ],
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "caniuse-lite": "^1.0.30001716",
         "electron-to-chromium": "^1.5.149",
@@ -4598,7 +4634,6 @@
     "node_modules/echarts": {
       "version": "5.6.0",
       "license": "Apache-2.0",
-      "peer": true,
       "dependencies": {
         "tslib": "2.3.0",
         "zrender": "5.6.1"
@@ -4755,7 +4790,6 @@
       "dev": true,
       "hasInstallScript": true,
       "license": "MIT",
-      "peer": true,
       "bin": {
         "esbuild": "bin/esbuild"
       },
@@ -4822,7 +4856,6 @@
       "version": "8.57.1",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/regexpp": "^4.6.1",
@@ -4879,7 +4912,6 @@
       "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "bin": {
         "eslint-config-prettier": "bin/cli.js"
       },
@@ -4922,7 +4954,6 @@
       "version": "9.33.0",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
         "globals": "^13.24.0",
@@ -5745,8 +5776,7 @@
       "version": "0.2.0",
       "resolved": "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz",
       "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/is-inside-container": {
       "version": "1.0.0",
@@ -6018,6 +6048,15 @@
         "node": ">= 0.8.0"
       }
     },
+    "node_modules/linkify-it": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz",
+      "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+      "license": "MIT",
+      "dependencies": {
+        "uc.micro": "^2.0.0"
+      }
+    },
     "node_modules/load-tsconfig": {
       "version": "0.2.5",
       "resolved": "https://registry.npmmirror.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz",
@@ -6066,15 +6105,13 @@
       "version": "4.17.21",
       "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/lodash-es": {
       "version": "4.17.21",
       "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
       "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/lodash-unified": {
       "version": "1.0.3",
@@ -6091,37 +6128,32 @@
       "version": "4.3.0",
       "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
       "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/lodash.clonedeep": {
       "version": "4.5.0",
       "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
       "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/lodash.debounce": {
       "version": "4.0.8",
       "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
       "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/lodash.foreach": {
       "version": "4.5.0",
       "resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
       "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/lodash.isequal": {
       "version": "4.5.0",
       "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
       "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
       "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/lodash.merge": {
       "version": "4.6.2",
@@ -6134,15 +6166,13 @@
       "version": "4.1.1",
       "resolved": "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
       "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/lodash.toarray": {
       "version": "4.4.0",
       "resolved": "https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
       "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==",
-      "license": "MIT",
-      "peer": true
+      "license": "MIT"
     },
     "node_modules/loose-envify": {
       "version": "1.4.0",
@@ -6191,12 +6221,35 @@
         "url": "https://github.com/sponsors/sxzz"
       }
     },
+    "node_modules/markdown-it": {
+      "version": "14.1.1",
+      "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.1.tgz",
+      "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==",
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^2.0.1",
+        "entities": "^4.4.0",
+        "linkify-it": "^5.0.0",
+        "mdurl": "^2.0.0",
+        "punycode.js": "^2.3.1",
+        "uc.micro": "^2.1.0"
+      },
+      "bin": {
+        "markdown-it": "bin/markdown-it.mjs"
+      }
+    },
     "node_modules/mdn-data": {
       "version": "2.0.30",
       "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.30.tgz",
       "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
       "license": "CC0-1.0"
     },
+    "node_modules/mdurl": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz",
+      "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
+      "license": "MIT"
+    },
     "node_modules/medium-editor": {
       "version": "5.23.3",
       "resolved": "https://registry.npmmirror.com/medium-editor/-/medium-editor-5.23.3.tgz",
@@ -6318,7 +6371,6 @@
       "resolved": "https://registry.npmmirror.com/mobx/-/mobx-5.15.7.tgz",
       "integrity": "sha512-wyM3FghTkhmC+hQjyPGGFdpehrcX1KOXsDuERhfK2YbJemkUhEB+6wzEN639T21onxlfYBmriA1PFnvxTUhcKw==",
       "license": "MIT",
-      "peer": true,
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/mobx"
@@ -6403,7 +6455,6 @@
         }
       ],
       "license": "MIT",
-      "peer": true,
       "bin": {
         "nanoid": "bin/nanoid.cjs"
       },
@@ -6794,7 +6845,6 @@
     "node_modules/pinia": {
       "version": "2.3.1",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@vue/devtools-api": "^6.6.3",
         "vue-demi": "^0.14.10"
@@ -6885,7 +6935,6 @@
       "resolved": "https://registry.npmmirror.com/preact/-/preact-10.27.2.tgz",
       "integrity": "sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==",
       "license": "MIT",
-      "peer": true,
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/preact"
@@ -6905,7 +6954,6 @@
       "version": "3.5.3",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "bin": {
         "prettier": "bin/prettier.cjs"
       },
@@ -6964,6 +7012,15 @@
         "node": ">=6"
       }
     },
+    "node_modules/punycode.js": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz",
+      "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/quansync": {
       "version": "0.2.10",
       "resolved": "https://registry.npmmirror.com/quansync/-/quansync-0.2.10.tgz",
@@ -7183,7 +7240,6 @@
       "version": "1.86.1",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "chokidar": "^4.0.0",
         "immutable": "^5.0.2",
@@ -7310,7 +7366,6 @@
       "resolved": "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz",
       "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "immer": "^9.0.6",
         "is-plain-object": "^5.0.0",
@@ -7352,7 +7407,6 @@
       "resolved": "https://registry.npmmirror.com/snabbdom/-/snabbdom-3.6.3.tgz",
       "integrity": "sha512-W2lHLLw2qR2Vv0DcMmcxXqcfdBaIcoN+y/86SmHv8fn4DazEQSH6KN3TjZcWvwujW56OHiiirsbHWZb4vx/0fg==",
       "license": "MIT",
-      "peer": true,
       "engines": {
         "node": ">=12.17.0"
       }
@@ -8125,9 +8179,8 @@
     },
     "node_modules/typescript": {
       "version": "5.4.5",
-      "devOptional": true,
+      "dev": true,
       "license": "Apache-2.0",
-      "peer": true,
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -8136,6 +8189,12 @@
         "node": ">=14.17"
       }
     },
+    "node_modules/uc.micro": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz",
+      "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
+      "license": "MIT"
+    },
     "node_modules/ufo": {
       "version": "1.6.1",
       "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.6.1.tgz",
@@ -8802,7 +8861,6 @@
       "version": "5.4.16",
       "dev": true,
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "esbuild": "^0.21.3",
         "postcss": "^8.4.43",
@@ -9446,7 +9504,6 @@
     "node_modules/vue": {
       "version": "3.5.13",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@vue/compiler-dom": "3.5.13",
         "@vue/compiler-sfc": "3.5.13",
@@ -9597,7 +9654,6 @@
     "node_modules/vue-router": {
       "version": "4.5.0",
       "license": "MIT",
-      "peer": true,
       "dependencies": {
         "@vue/devtools-api": "^6.6.4"
       },
@@ -9737,12 +9793,12 @@
       }
     },
     "node_modules/vxe-pc-ui": {
-      "version": "4.10.37",
-      "resolved": "https://registry.npmmirror.com/vxe-pc-ui/-/vxe-pc-ui-4.10.37.tgz",
-      "integrity": "sha512-brsAXxwKLRqlgLZvXvJf+Ys47rmBv85jLQ2WOqDNFqoiEpGNBuu0Ai9K69Z7o3Nz5J6UtF7MGnAPjFGCNx1lhQ==",
+      "version": "4.6.42",
+      "resolved": "https://registry.npmmirror.com/vxe-pc-ui/-/vxe-pc-ui-4.6.42.tgz",
+      "integrity": "sha512-grBaVbagoc5rbTq2jj1P/cWYP+sBo+VSXFRpNGYOe9Ka4EG9JP+LIa7h0lKfojDE5fGlPUYTkkYNe0fsQVDQ0g==",
       "license": "MIT",
       "dependencies": {
-        "@vxe-ui/core": "^4.2.15"
+        "@vxe-ui/core": "^4.1.5"
       }
     },
     "node_modules/vxe-table": {

+ 1 - 1
package.json

@@ -47,7 +47,7 @@
     "vue-virtual-scroller": "2.0.0-beta.8",
     "vue3-slider": "^1.10.1",
     "vuedraggable": "^4.1.0",
-    "vxe-pc-ui": "^4.6.42",
+    "vxe-pc-ui": "4.6.42",
     "vxe-table": "^4.7.62"
   },
   "devDependencies": {

+ 23 - 0
src/model/order.model.ts

@@ -44,6 +44,7 @@ export interface OrderModel {
   types: string[];//订单类型 1-未派单 2-已派单但未核销 3-已核销	
   pieTimeStart: string;//派单时间开始
   pieTimeEnd: string;//派单时间结束
+  orderByType:number;
 }
 export type OrderQuery = Partial<OrderModel>;
 //派单机构列表
@@ -65,6 +66,7 @@ export interface OrderLiaisonListModel {
       deptName: string; //调理方案供应商合作机构名称
     }
   ]; //合作机构
+
   onlineCPTypes: string[]; //可供应的实体商品类型
   offlineCPTypes: string[]; //	可供应的线下服务类型
   outlineCPTypes: string[]; //可供应的线上权益类型
@@ -177,4 +179,25 @@ export interface ApplyRecordModel{
   pieTime: string; // 派单时间
   operateTime: string; // 操作时间
   status: string; // 服务状态
+}
+
+export interface LogisticsModel{
+  trailUrl:string;
+  arrivalTime:string;
+  totalTime:string;
+  remainTime:string;
+  tracks:[
+    {
+      time:string;
+      context:string;
+      ftime:string;
+      areaCode:string;
+      areaName:string;
+      status:string;
+      areaCenter:string;
+      areaPinYin:string;
+      statusCode:string;
+      location:string;
+    }
+  ]
 }

+ 28 - 4
src/order/DispatchOrderPanel.vue

@@ -144,11 +144,17 @@ function isOrderShipped(order: OrderModel): boolean {
 
 // 右侧机构表格配置
 const gridRef = ref<VxeGridInstance<Institution>>();
+// 机构列表排序:1-评分升序 2-评分降序 3-订单数升序 4-订单数降序
+const institutionOrderByType = ref<number | undefined>(undefined);
 const gridOptions = reactive<VxeGridProps<Institution>>({
   border: true,
   autoResize: true,
   height: '100%',
   scrollY: { enabled: true },
+  sortConfig: {
+    remote: true,
+    orders: ['asc', 'desc'],
+  },
   columns: [
     {
       field: 'action',
@@ -173,8 +179,8 @@ const gridOptions = reactive<VxeGridProps<Institution>>({
     { field: 'name', title: '机构名称' },
     { field: 'detailAddress', title: '地址' },
     { field: 'phone', title: '联系电话' },
-    { field: 'todayOrderQuantity', title: '当日订单数' },
-    { field: 'evaluateScore', title: '机构评分' },
+    { field: 'todayOrderQuantity', title: '当日订单数', sortable: true, sortType: 'number' },
+    { field: 'evaluateScore', title: '机构评分', sortable: true, sortType: 'number' },
   ],
   data: [],
   pagerConfig: {
@@ -182,6 +188,18 @@ const gridOptions = reactive<VxeGridProps<Institution>>({
   },
 });
 
+function mapInstitutionSortToOrderByType(field: string | undefined, order: string | undefined | null) {
+  if (!field || !order) return undefined;
+  if (field === 'evaluateScore') return order === 'asc' ? 1 : 2;
+  if (field === 'todayOrderQuantity') return order === 'asc' ? 3 : 4;
+  return undefined;
+}
+
+async function handleInstitutionSortChange({ field, order }: { field?: string; order?: 'asc' | 'desc' | null }) {
+  institutionOrderByType.value = mapInstitutionSortToOrderByType(field, order);
+  await loadInstitutionList();
+}
+
 // 初始化
 onMounted(async () => {
   await loadOrderCounts();
@@ -462,7 +480,8 @@ async function loadInstitutionList() {
         ? { timeStart: `${selectedOrder.arrangeDate} ${selectedOrder.arrangeTime}` }
         : {}),
       // 线下服务 type=2,实体商品 type=1
-      type: props.orderType === 'offline' ? 2 : 1
+      type: props.orderType === 'offline' ? 2 : 1,
+      orderByType: institutionOrderByType.value,
     };
 
     // 获取可派单机构列表
@@ -1224,7 +1243,12 @@ defineExpose({
       <div class="institution-panel">
         <div class="panel-title">可派单机构</div>
         <div class="institution-grid-wrapper">
-          <vxe-grid ref="gridRef" v-bind="gridOptions" :loading="institutionLoading" />
+          <vxe-grid
+            ref="gridRef"
+            v-bind="gridOptions"
+            :loading="institutionLoading"
+            @sort-change="handleInstitutionSortChange"
+          />
         </div>
       </div>
     </div>

+ 6 - 21
src/order/EditShipment.vue

@@ -31,33 +31,18 @@ const formData = ref<ShipmentForm>({
   expressType: '',
   expressNo: '',
 });
-
-// 快递类型选项
-const expressTypeOptionsList = [
-  { label: '邮政速递', value: '0' },
-  { label: '顺丰速运', value: '1' },
-  { label: '京东快递', value: '2' },
-  { label: '中通快递', value: '3' },
-  { label: '圆通速递', value: '4' },
-  { label: '申通快递', value: '5' },
-  { label: '韵达快递', value: '6' },
-  { label: '极兔速递', value: '7' },
-];
-
 onBeforeMount(async () => {
   try {
-    const res = await getDictionaryMethod('logistics_company').catch(() => null);
+    const res = await getDictionaryMethod('express_type').catch(() => null);
+    console.log(res,"获取数据")
     if (res && Array.isArray(res) && res.length > 0) {
       expressTypeOptions.value = res;
-    } else {
-      // 如果没有字典数据,使用默认选项
-      expressTypeOptions.value = expressTypeOptionsList;
+     
     }
   } catch (error) {
     // 使用默认数据
-    expressTypeOptions.value = expressTypeOptionsList;
+   console.log(error)
   }
-
   if (props.data) {
     formData.value.receiptType = props.data.receiptType || '1';
     formData.value.expressType = props.data.expressType || '';
@@ -114,8 +99,8 @@ const handleSubmit = async () => {
     id,
     conditioningProgramSupplierId: props.data?.conditioningProgramSupplierId,
     receiptType,
-    expressType : expressType || '',
-    expressNo : expressNo || '',
+    expressType: expressType || '',
+    expressNo: expressNo || '',
   } as any;
   try {
     await submit(submitData);

+ 2 - 1
src/pages/index/order/shipment.vue

@@ -354,7 +354,8 @@ function disabledPayEndDate(current: any) {
           <div>{{ row.receiptType === '0' ? '配送' : row.receiptType === '1' ? '线下取货' : '' }}</div>
         </template>
         <template #action="{ row }">
-          <vxe-button mode="text" status="primary" @click="goShipment(row)">
+          <vxe-button mode="text" status="primary" @click="goShipment(row)"
+            :disabled="row.isShowButton === false && row.receiptStatus === '1'">
             {{ row.receiptStatus === '1' ? '修改' : row.receiptStatus === '0' ? '去发货' : '' }}
           </vxe-button>
         </template>

+ 0 - 1
src/request/api/care.api.ts

@@ -291,7 +291,6 @@ export function addConditioningSchemeMethod(data: Partial<OpenConditioningScheme
 
 // 根据调理包id获取调理包详情
 export function getConditioningRecordDetailMethod(data: Partial<SystemCwModel>) {
-  console.log('data===types', data.types,"data数据",data);
   if (data.types === 'institution' || data.types === 'system') {
     // 机构调理包详情
     return request.Post(`/fdhb-pc/conditioningManage/wrap/getCwDetailById/${data.id}`, {

+ 15 - 3
src/request/api/order.api.ts

@@ -3,7 +3,7 @@ import type {
   OrderQuery,
   OrderModel, OrderLiaisonListModel, ShipmentModel, ShipmentQuery, 
   PieOrderCountModel, RevenueSharingDetailModel, RevenueSharingDetailQuery,
-   EvaluateDetailModel, ApplyRecordModel
+   EvaluateDetailModel, ApplyRecordModel,LogisticsModel
 } from '@/model/order.model';
 import request from '@/request/alova';
 
@@ -86,7 +86,8 @@ export function getOrderLiaisonListMethod(data: Partial<OrderModel>) {
       collaborateDeptId: data.institutionId,
       conditioningProgramTypes: [data.conditioningProgramType],
       timeStart: data?.timeStart ?? '',
-      type: data?.type ?? ''
+      type: data?.type ?? '',
+      orderByType:data.orderByType
     },
     {
       hitSource: /order$/, // 匹配失效源
@@ -191,4 +192,15 @@ export function getApplyRecordMethod(id: string) {
       hitSource: /order$/, // 匹配失效源
     }
   );
-} 
+} 
+
+// 获取物流信息 id患者调理方案ID
+export function getLogisticsMethod(id: string) {
+  return request.Post<LogisticsModel[]>(
+    `/fdhb-pc/patientCrManage/getLogistics/${id}`,
+    {},
+    {
+      hitSource: /order$/, // 匹配失效源
+    }
+  );
+} 

+ 30 - 71
src/service/SingleItemDetail.vue

@@ -8,7 +8,7 @@ import VxeUI from 'vxe-table';
 import ReviewMediaPreview from '@/service/ReviewMediaPreview.vue';
 import type { MediaItem } from '@/service/ReviewMediaPreview.vue';
 import seeEvaluate from '@/service/seeEvaluate.vue';
-import { getEvaluateDetailMethod, getApplyRecordMethod } from '@/request/api/order.api';
+import { getEvaluateDetailMethod, getApplyRecordMethod, getLogisticsMethod } from '@/request/api/order.api';
 
 const props = defineProps<{
   data: SystemCwModel['items'][number];
@@ -47,76 +47,25 @@ const mockSplitAccountList = computed(() => {
 });
 // 物流信息数据
 const mockLogisticsData = computed(() => {
-  console.log('props.data===', props.data);
   return {
-    trackingNumber: `${expressTypeText[props.data.expressType || '']} ${props.data.expressNo || ''}`,
+    expressType: props.data.expressType || '',
+    trackingNumber: `${props.data.expressNo || ''}`,
     recipientName: props.data.liaison ? props.data.liaison + ', ' : '',
     recipientPhone: props.data.phone ? props.data.phone + ', ' : '',
     recipientAddress: (props.data.provinceName !== null ? props.data.provinceName + ' ' : '') + (props.data.cityName !== null ? props.data.cityName + ' ' : '') + (props.data.areaName !== null ? props.data.areaName + ' ' : '') + (props.data.detailAddress !== null ? props.data.detailAddress : '')
   };
 });
 type LogisticsTimelineItem = {
-  title: string;
+  status: string;
   time: string;
-  detail: string;
+  context: string;
 };
 
 const showAllLogistics = ref(false);
-const mockLogisticsTimeline: LogisticsTimelineItem[] = [
-  {
-    title: '已签收',
-    time: '01-09 19:15',
-    detail: '您已在杭州金成花园15幢4号后完成取件,感谢使用菜鸟驿站,期待再次为您服务。',
-  },
-  {
-    title: '待取件',
-    time: '01-09 16:11',
-    detail: '您的快件已暂存在杭州金成花园15幢4号店菜鸟驿站,请凭取货码及时领取。如有疑问请联系15067159925',
-  },
-  {
-    title: '运输中',
-    time: '01-09 13:26',
-    detail: '快件离开杭州分拨中心,正在发往目的地站点。',
-  },
-  {
-    title: '包裹已揽收',
-    time: '01-09 09:42',
-    detail: '快递员已揽收您的包裹,正在安排发出。',
-  },
-];
-
-function normalizeLogisticsItem(item: any): LogisticsTimelineItem | null {
-  if (!item || typeof item !== 'object') return null;
-  const time = String(item.time ?? item.acceptTime ?? item.ftime ?? item.createTime ?? item.updateTime ?? '').trim();
-  const title = String(item.title ?? item.status ?? item.statusName ?? item.statusDesc ?? '').trim();
-  const detail = String(item.content ?? item.context ?? item.remark ?? item.description ?? item.message ?? '').trim();
-  const fallbackTitle = detail || title;
-  if (!time && !fallbackTitle && !detail) return null;
-  return {
-    title: fallbackTitle || '-',
-    time,
-    detail: detail && detail !== fallbackTitle ? detail : '',
-  };
-}
+let mockLogisticsTimeline = ref<string[]>([]);
 
 const logisticsTimeline = computed<LogisticsTimelineItem[]>(() => {
-  const source = props.data as any;
-  const listCandidate =
-    source?.expressDetails ??
-    source?.logisticsDetails ??
-    source?.logisticsList ??
-    source?.expressRouteList ??
-    source?.expressRoutes ??
-    source?.traces ??
-    source?.traceList ??
-    source?.routeList ??
-    source?.tracks ??
-    [];
-  if (!Array.isArray(listCandidate)) return mockLogisticsTimeline;
-  const normalizedList = listCandidate
-    .map((item: any) => normalizeLogisticsItem(item))
-    .filter((item): item is LogisticsTimelineItem => Boolean(item));
-  return normalizedList.length > 0 ? normalizedList : mockLogisticsTimeline;
+  return mockLogisticsTimeline.value
 });
 
 const visibleLogisticsTimeline = computed(() => {
@@ -226,9 +175,15 @@ async function getApplyRecord() {
   if (!id) return;
   const res = await getApplyRecordMethod(id);
   if (!res) return;
-  console.log(res, "获取预约");
   applyRecordList.value = res ?? [];
-  console.log(applyRecordList.value, "applyRecordList");
+}
+// 获取物流信息
+async function getLogistics() {
+  const id = (props.data as any)?.id;
+  if (!id) return;
+  const res = await getLogisticsMethod(id);
+  if (!res) return;
+  mockLogisticsTimeline.value = res?.tracks
 }
 const REVIEW_PREVIEW_MODAL_ID = 'review-media-preview-modal';
 //预览图片/视频
@@ -254,6 +209,7 @@ function openPreview(list: MediaItem[], index: number) {
 onMounted(async () => {
   await getEvaluateDetail();
   await getApplyRecord();
+  await getLogistics()
 });
 </script>
 
@@ -358,27 +314,30 @@ onMounted(async () => {
         <div class="logistics-content" v-if="data.receiptType === '0'">
           <template v-if="mockPackageItems.length > 0">
             <div class="flex align-items-center justify-between">
-            <div class="logistics-tracking">
-              <span class="tracking-number">{{ mockLogisticsData.trackingNumber }}</span>
-              <a @click="handleCopyTracking" class="copy-link">复制</a>
+              <div class="logistics-tracking">
+                <span class="tracking-number">{{ mockLogisticsData.expressType }}</span>
+                <span class="tracking-number">{{ mockLogisticsData.trackingNumber }}</span>
+                <a @click="handleCopyTracking" class="copy-link">复制</a>
+              </div>
+              <!-- <div class="text-gray-500">联系电话:9554</div> -->
             </div>
-            <div class="text-gray-500">联系电话:9554</div>
-          </div>
             <!-- 物流详情 -->
             <div class="logistics-detail">
               <template v-if="logisticsTimeline.length > 0">
                 <div class="logistics-timeline">
-                  <div class="timeline-item" v-for="(item, index) in visibleLogisticsTimeline" :key="`${item.time}-${index}`">
+                  <div class="timeline-item" v-for="(item, index) in visibleLogisticsTimeline"
+                    :key="`${item.time}-${index}`">
                     <div class="timeline-dot-wrap">
                       <span class="timeline-dot" :class="{ active: index === 0 }" />
-                      <span class="timeline-line" v-if="index !== visibleLogisticsTimeline.length - 1 || canExpandLogistics" />
+                      <span class="timeline-line"
+                        v-if="index !== visibleLogisticsTimeline.length - 1 || canExpandLogistics" />
                     </div>
                     <div class="timeline-content">
                       <div class="timeline-head">
-                        <span class="timeline-title" :class="{ active: index === 0 }">{{ item.title || '-' }}</span>
+                        <span class="timeline-title" :class="{ active: index === 0 }">{{ item.status || '-' }}</span>
                         <span class="timeline-time" :class="{ active: index === 0 }">{{ item.time || '-' }}</span>
                       </div>
-                      <div class="timeline-detail" v-if="item.detail">{{ item.detail }}</div>
+                      <div class="timeline-detail" v-if="item.context">{{ item.context }}</div>
                     </div>
                   </div>
                   <div class="timeline-item timeline-expand-item" v-if="canExpandLogistics">
@@ -475,7 +434,7 @@ onMounted(async () => {
       <h3 class="info-title">
         服务记录
         <span class="title-count">({{ data?.patientConditioningOfflines?.length || 0 }}/{{ data?.totalMeasure || 0
-          }})</span>
+        }})</span>
       </h3>
       <vxe-table :data="data?.patientConditioningOfflines" border>
         <vxe-column type="seq" title="序号" width="60" align="center" />
@@ -1046,7 +1005,7 @@ onMounted(async () => {
 
   .recipient-info {
     color: #333;
-    font-weight: 400;
+    font-weight: 500;
     flex: 1;
   }