Просмотр исходного кода

fix(@six/smart-pharmacy): 智慧药事系统第一版处方详情页物流跟踪显示数字问题修改

cmj 1 месяц назад
Родитель
Сommit
aff3ee7ed1

+ 5 - 0
apps/smart-pharmacy/src/api/method/dict.ts

@@ -73,3 +73,8 @@ export function listZyRouteDictMethod() {
 export function listMatUsageNameDictMethod() {
   return listDictByCodeMethod('mat_usage_name');
 }
+
+/** 物流配送状态字典(express_state) */
+export function listExpressStateDictMethod() {
+  return listDictByCodeMethod('express_state');
+}

+ 7 - 0
apps/smart-pharmacy/src/api/model/process-node-dict.ts

@@ -1,5 +1,6 @@
 import {
   listDeliveryMethodDictMethod,
+  listExpressStateDictMethod,
   listLogisticsCompanyDictMethod,
   listMatUsageNameDictMethod,
   listProcessNodeDictMethod,
@@ -22,6 +23,7 @@ export { resolveDictLabelIgnoreCase as resolveLogisticsCompanyLabel };
 export { resolveDictLabel as resolveZyjxLabel };
 export { resolveDictLabel as resolveZyRouteLabel };
 export { resolveDictLabel as resolveMatUsageNameLabel };
+export { resolveDictLabel as resolveExpressStateLabel };
 
 /** 获取流程节点字典映射(带缓存) */
 export const getProcessNodeLabelMap = createDictLabelMapGetter(
@@ -44,6 +46,11 @@ export const getMatUsageNameLabelMap = createDictLabelMapGetter(
   listMatUsageNameDictMethod,
 );
 
+/** 获取物流配送状态字典映射(带缓存) */
+export const getExpressStateLabelMap = createDictLabelMapGetter(
+  listExpressStateDictMethod,
+);
+
 let cachedLogisticsCompanyMap: Map<string, string> | null = null;
 let loadingLogisticsCompanyPromise: Promise<Map<string, string>> | null = null;
 

+ 28 - 5
apps/smart-pharmacy/src/views/prescription/management/detail.vue

@@ -11,12 +11,14 @@ import { Breadcrumb, Descriptions, Empty, Spin, Tabs } from 'ant-design-vue';
 import { createEmptyPrescriptionDetail } from '#/api/model/prescription-detail';
 import {
   getDeliveryMethodLabelMap,
+  getExpressStateLabelMap,
   getLogisticsCompanyLabelMap,
   getProcessNodeLabelMap,
   getMatUsageNameLabelMap,
   getZyjxLabelMap,
   getZyRouteLabelMap,
   resolveDeliveryMethodLabel,
+  resolveExpressStateLabel,
   resolveLogisticsCompanyLabel,
   resolveMatUsageNameLabel,
   resolveProcessNodeLabel,
@@ -69,7 +71,13 @@ function applyDictLabels(
   zyjxMap: Map<string, string>,
   zyRouteMap: Map<string, string>,
   matUsageNameMap: Map<string, string>,
+  expressStateMap: Map<string, string>,
 ): PrescriptionModel.Detail {
+  const logisticsNodes = data.logisticsNodes.map((item) => ({
+    ...item,
+    status: resolveExpressStateLabel(item.status, expressStateMap),
+  }));
+
   return {
     ...data,
     herbalDetails: data.herbalDetails.map((item) => ({
@@ -114,17 +122,29 @@ function applyDictLabels(
       ...item,
       status: resolveProcessNodeLabel(item.status, processNodeMap),
     })),
-    logisticsNodes: data.logisticsNodes.map((item) => ({
-      ...item,
-      status: resolveProcessNodeLabel(item.status, processNodeMap),
-    })),
+    logisticsNodes,
     logisticsInfo: {
       ...data.logisticsInfo,
       company: resolveLogisticsCompanyLabel(
         data.logisticsInfo.company,
         logisticsCompanyMap,
       ),
-      status: resolveProcessNodeLabel(data.logisticsInfo.status, processNodeMap),
+      status: resolveExpressStateLabel(
+        data.logisticsInfo.status,
+        expressStateMap,
+      ),
+      progress: logisticsNodes
+        .map((node) => {
+          const parts = [
+            node.operationTime,
+            node.status,
+            node.location !== '-' ? node.location : '',
+            node.note,
+          ].filter((part) => part && part !== '-');
+          return parts.join(' ');
+        })
+        .filter(Boolean)
+        .join(';'),
     },
   };
 }
@@ -143,6 +163,7 @@ async function loadDetail() {
       zyjxMap,
       zyRouteMap,
       matUsageNameMap,
+      expressStateMap,
     ] = await Promise.all([
       getPrescriptionDetailMethod(id),
       getProcessNodeLabelMap(),
@@ -151,6 +172,7 @@ async function loadDetail() {
       getZyjxLabelMap(),
       getZyRouteLabelMap(),
       getMatUsageNameLabelMap(),
+      getExpressStateLabelMap(),
     ]);
     detail.value = applyDictLabels(
       data,
@@ -160,6 +182,7 @@ async function loadDetail() {
       zyjxMap,
       zyRouteMap,
       matUsageNameMap,
+      expressStateMap,
     );
   } finally {
     loading.value = false;