From 0994dd94d51dbb9532a529c5ff6089672f450587 Mon Sep 17 00:00:00 2001 From: lq Date: Thu, 3 Apr 2025 16:17:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E7=9C=8B=E5=A4=84=E6=96=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E6=8E=A5=E8=AF=8A=E9=A1=B5=E9=9D=A2=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/public/img/empty.png | Bin 0 -> 7411 bytes apps/web-antd/src/api/request.ts | 10 +- .../src/components/modal/ImagePreview.vue | 34 ++++ .../src/components/modal/QrCodePreview.vue | 135 +++++++++++++ .../order/product-order/components/detail.vue | 4 +- .../order/product-order/config/table.ts | 1 + .../business/order/product-order/index.vue | 38 ++-- .../components/PrescrtionDetail.vue | 10 +- .../views/doctor/doctor-reception/index.vue | 179 ++++++++++++------ .../src/views/system/store/api/index.ts | 10 + .../src/views/system/store/config/form.ts | 38 +++- .../src/views/system/store/config/search.ts | 9 + .../src/views/system/store/config/table.ts | 5 +- .../web-antd/src/views/system/store/index.vue | 86 ++++++++- package.json | 1 + pnpm-lock.yaml | 58 +++++- 16 files changed, 516 insertions(+), 102 deletions(-) create mode 100644 apps/web-antd/public/img/empty.png create mode 100644 apps/web-antd/src/components/modal/ImagePreview.vue create mode 100644 apps/web-antd/src/components/modal/QrCodePreview.vue diff --git a/apps/web-antd/public/img/empty.png b/apps/web-antd/public/img/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..d178cc9bd28a636c499ff69db6b8d6b49dcabfa4 GIT binary patch literal 7411 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 Og`wU}-AZi-#Qy*-1nJBG literal 0 HcmV?d00001 diff --git a/apps/web-antd/src/api/request.ts b/apps/web-antd/src/api/request.ts index f8ae816a..672bb4e9 100644 --- a/apps/web-antd/src/api/request.ts +++ b/apps/web-antd/src/api/request.ts @@ -175,7 +175,7 @@ function getRes(obj: any, isDecode = true) { if (arr.has(key)) { let aseFile = ''; aseFile = isDecode - ? customBase64Decode(obj[key]) + ? customBase64Decode(obj[key], key) : customBase64Encode(obj[key]); const isGarbled = // eslint-disable-next-line no-control-regex @@ -232,8 +232,9 @@ function getRes(obj: any, isDecode = true) { /** * 解密 * @param data + * @param key */ -function customBase64Decode(data: string) { +function customBase64Decode(data: string, key = '') { // return data try { // 第一次Base64解码 @@ -244,7 +245,10 @@ function customBase64Decode(data: string) { const base64 = Base64.decode(subStr); return base64.length > 0 ? base64 : data; } catch (error) { - console.error(`解码Base64字符串【${data}】时发生错误`, error); + console.error( + `解码Base64字符串【${data}】时发生错误,KEY:【${key}】`, + error, + ); return data; } } diff --git a/apps/web-antd/src/components/modal/ImagePreview.vue b/apps/web-antd/src/components/modal/ImagePreview.vue new file mode 100644 index 00000000..150a2bdc --- /dev/null +++ b/apps/web-antd/src/components/modal/ImagePreview.vue @@ -0,0 +1,34 @@ + + diff --git a/apps/web-antd/src/components/modal/QrCodePreview.vue b/apps/web-antd/src/components/modal/QrCodePreview.vue new file mode 100644 index 00000000..829de06d --- /dev/null +++ b/apps/web-antd/src/components/modal/QrCodePreview.vue @@ -0,0 +1,135 @@ + + + diff --git a/apps/web-antd/src/views/business/order/product-order/components/detail.vue b/apps/web-antd/src/views/business/order/product-order/components/detail.vue index 0b3e0b65..b5227750 100644 --- a/apps/web-antd/src/views/business/order/product-order/components/detail.vue +++ b/apps/web-antd/src/views/business/order/product-order/components/detail.vue @@ -160,11 +160,11 @@ function getColor(status: any) {
- + /img/empty.png

{{ item.drug_name }}

-

规格: {{ item.drug.specification }}

+

规格: {{ item.drug.specification || 'g' }}

数量: {{ item.number }}

单价: {{ item.price }} 元

diff --git a/apps/web-antd/src/views/business/order/product-order/config/table.ts b/apps/web-antd/src/views/business/order/product-order/config/table.ts index b6f0ac7c..5ce9755e 100644 --- a/apps/web-antd/src/views/business/order/product-order/config/table.ts +++ b/apps/web-antd/src/views/business/order/product-order/config/table.ts @@ -43,6 +43,7 @@ export const gridOptions: VxeGridProps = { slots: { default: 'delivery-method' }, }, { field: 'items_price', title: '总价' }, + { field: 'is_sync_erp', title: 'Erp状态', slots: { default: 'is-sync-erp' } }, { field: 'pay_time', title: '支付时间', slots: { default: 'pay-time' } }, { field: 'created_at', title: '下单时间' }, { diff --git a/apps/web-antd/src/views/business/order/product-order/index.vue b/apps/web-antd/src/views/business/order/product-order/index.vue index f7aa3897..74e56d82 100644 --- a/apps/web-antd/src/views/business/order/product-order/index.vue +++ b/apps/web-antd/src/views/business/order/product-order/index.vue @@ -14,6 +14,7 @@ import FormModalDemo from './components/modal.vue'; import DetailModal from './components/detail.vue'; import { formOptions } from './config/search'; import { gridOptions } from './config/table'; +import PrescrtionDetail from "#/views/doctor/doctor-reception/components/PrescrtionDetail.vue"; const hasTopTableDropDownActions = ref(false); @@ -80,12 +81,25 @@ const expandAll = () => { const collapseAll = () => { gridApi.grid?.setAllRowExpand(false); }; + + +const [PrescrtionDetailModal, PrescrtionDetailModalApi] = useVbenModal({ + connectedComponent: PrescrtionDetail, +}); +const openPrescriptionDetail = (values) => { + // 打开西药处方模态框逻辑 + PrescrtionDetailModalApi.setData({ + values, + }); + PrescrtionDetailModalApi.open(); +};