From 700db76f16f3c3847c8fc1d5eda59aa62ab3f90a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=90=A6?= Date: Thu, 23 Jul 2026 09:24:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BC=98=E5=8C=96=E4=BA=86=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E3=80=81=E8=AF=8A=E6=89=80=E6=90=9C=E7=B4=A2=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E3=80=81=E8=8D=AF=E5=93=81=E8=BF=99=E4=BA=9B=E4=BA=A4?= =?UTF-8?q?=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/express-company-select.vue | 37 +- .../form/components/store-multi-search.vue | 346 ++++++++++++ .../src/components/form/types/index.d.ts | 1 + .../components/store-card/StoreCardModal.vue | 511 ++++++++++++++++++ .../express-company/components/modal.vue | 2 +- .../order/prescription/components/source.vue | 2 +- .../order/prescription/config/table.ts | 2 +- .../business/order/prescription/index.vue | 24 + .../order/product-order/components/detail.vue | 2 +- .../order/product-order/components/modal.vue | 2 +- .../order/product-order/components/refund.vue | 2 +- .../order/product-order/config/search.ts | 31 +- .../business/order/product-order/index.vue | 36 +- .../order/register/components/refund.vue | 2 +- .../business/order/register/config/table.ts | 2 +- .../views/business/order/register/index.vue | 24 + .../china-medicine/components/ExcelUpload.vue | 2 +- .../china-medicine/components/modal.vue | 2 +- .../health-food/components/ExcelUpload.vue | 2 +- .../product/health-food/components/modal.vue | 2 +- .../medical-device/components/ExcelUpload.vue | 2 +- .../medical-device/components/modal.vue | 2 +- .../non-drug/components/ExcelUpload.vue | 2 +- .../product/non-drug/components/modal.vue | 2 +- .../product/service-pack/components/modal.vue | 2 +- .../components/ExcelUpload.vue | 2 +- .../western-medicine/components/modal.vue | 2 +- .../components/EditPrescriptionModal.vue | 2 +- .../special-prescription/components/modal.vue | 2 +- .../store/settings/components/uploadModal.vue | 2 +- .../admin/components/ExcelUpload.vue | 2 +- .../shop/components/ExcelUpload.vue | 2 +- .../shop/components/modal.vue | 2 +- .../store/components/ExcelUpload.vue | 2 +- .../store/components/modal.vue | 2 +- .../doctor/components/BindStoreModal.vue | 56 +- .../src/views/doctor/doctor/config/form.ts | 43 +- .../pharmacist/components/BindStoreModal.vue | 56 +- .../views/doctor/pharmacist/config/form.ts | 43 +- .../src/views/finance/fund-water/index.vue | 1 + .../components/MonthlyPayment.vue | 2 +- .../config/search.ts | 18 +- .../components/MonthlyPayment.vue | 2 +- .../finance/monthly-payment/config/search.ts | 18 +- .../views/finance/reconciliation/index.vue | 20 +- .../components/WithdrawalAudit.vue | 2 +- .../withdrawal/components/card-modal.vue | 2 +- .../components/withdrawal-modal.vue | 2 +- .../views/log/api-log/components/modal.vue | 7 +- .../src/views/log/api-log/config/search.ts | 18 +- .../src/views/log/api-log/config/table.ts | 6 + apps/web-antd/src/views/log/api-log/index.vue | 5 + .../components/fail-detail-modal.vue | 2 +- .../views/log/ledger-log/components/modal.vue | 2 +- .../log/old-api-log/components/modal.vue | 2 +- .../src/views/log/op-log/components/modal.vue | 2 +- .../views/log/order-log/components/modal.vue | 2 +- .../log/prescription-log/components/modal.vue | 2 +- .../audit-prescription/components/modal.vue | 2 +- .../audit-prescription/components/source.vue | 2 +- .../components/modal.vue | 2 +- .../system/delivery-warehouse-order/index.vue | 216 ++++---- .../views/system/doctor-input/config/form.ts | 18 +- .../views/system/pharmacy/config/search.ts | 24 +- .../src/views/system/pharmacy/index.vue | 13 + .../system/platform/components/modal.vue | 2 +- .../views/system/role/components/modal.vue | 2 +- .../src/views/system/store/api/index.ts | 33 ++ .../store/components/DrugPriceModal.vue | 2 +- .../components/cells/StoreBasicInfoCell.vue | 12 +- .../src/views/system/store/config/search.ts | 33 +- .../web-antd/src/views/system/store/index.vue | 14 + .../system/supplier/components/modal.vue | 2 +- 73 files changed, 1321 insertions(+), 433 deletions(-) create mode 100644 apps/web-antd/src/components/form/components/store-multi-search.vue create mode 100644 apps/web-antd/src/components/store-card/StoreCardModal.vue diff --git a/apps/web-antd/src/components/form/components/express-company-select.vue b/apps/web-antd/src/components/form/components/express-company-select.vue index 13e65c59..513659ad 100644 --- a/apps/web-antd/src/components/form/components/express-company-select.vue +++ b/apps/web-antd/src/components/form/components/express-company-select.vue @@ -13,11 +13,11 @@ defineOptions({ }); const props = defineProps<{ - value?: string; disabled?: boolean; placeholder?: string; /** 运单号:变化时按前缀自动匹配快递公司(用户手动改选后不再覆盖) */ trackingNo?: string; + value?: string; }>(); const emits = defineEmits<{ @@ -27,9 +27,9 @@ const emits = defineEmits<{ const mValue = useVModel(props, 'value', emits, { passive: true }); type ExpressCompanyOption = { + code: string; id: number; name: string; - code: string; }; const open = ref(false); @@ -40,7 +40,10 @@ const searchInputRef = ref | null>(null); /** 用户是否已手动选择/清空;为 true 时不再按单号自动覆盖 */ const userPicked = ref(false); -function filterExpressCompanyOptions(keyword: string, list: ExpressCompanyOption[]) { +function filterExpressCompanyOptions( + keyword: string, + list: ExpressCompanyOption[], +) { const q = keyword.trim().toLowerCase(); if (!q) return list; return list.filter((item) => { @@ -61,7 +64,7 @@ const selectedOption = computed(() => const displayText = computed(() => { const item = selectedOption.value; if (!item) return ''; - return item.code ? `${item.name || '-'}(${item.code})` : (item.name || '-'); + return item.code ? `${item.name || '-'}(${item.code})` : item.name || '-'; }); /** @@ -69,7 +72,7 @@ const displayText = computed(() => { * 规则:尚未手动改选,或当前选中仍与规则结果一致时才覆盖 */ function tryAutoMatchByTrackingNo() { - if (!options.value.length) return; + if (options.value.length === 0) return; const matched = matchExpressByTrackingNo(props.trackingNo, options.value); if (!matched?.code) return; const matchedCode = matched.code; @@ -110,7 +113,7 @@ function onOpenChange(next: boolean) { open.value = next; if (next) { searchKeyword.value = ''; - if (!options.value.length) { + if (options.value.length === 0) { loadOptions(); } nextTick(() => searchInputRef.value?.focus?.()); @@ -140,9 +143,9 @@ onMounted(() => { +