From 53e9b23a40186efd149fd5c5350b5eced1f69920 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 25 八月 2026 17:54:26 +0800
Subject: [PATCH] feat(auth): 更新认证页面为农业数字化平台主题

---
 src/views/wls/productsales/modules/form.vue |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/src/views/wls/productsales/modules/form.vue b/src/views/wls/productsales/modules/form.vue
index f6ba967..dcb1abc 100644
--- a/src/views/wls/productsales/modules/form.vue
+++ b/src/views/wls/productsales/modules/form.vue
@@ -16,6 +16,7 @@
   createProductSales,
   finishProductSales,
   getProductSales,
+  scanProductSales,
   shippingProductSales,
   stockProductSales,
   submitProductSales,
@@ -29,6 +30,10 @@
 const emit = defineEmits(['success']);
 const formType = ref<FormType>('create');
 const formData = ref<MesWmProductSalesApi.ProductSales>();
+const scanContent = ref('');
+const scanQuantity = ref<number>();
+const scanLoading = ref(false);
+const scanRefreshKey = ref(0);
 const originalSnapshot = ref(''); // 琛ㄥ崟鍘熷鏁版嵁蹇収锛岀敤浜庢彁浜ゆ椂璺宠繃鏈彉鏇寸殑淇濆瓨璇锋眰
 const isEditable = computed(() =>
   // 鏄惁涓虹紪杈戞ā寮忥紙鍙繚瀛橈級
@@ -96,6 +101,31 @@
     emit('success');
   } finally {
     modalApi.unlock();
+  }
+}
+
+/** 鎵爜鎷h揣锛氭壂鐮佹灙閫氬父浠ュ洖杞︾粨鏉熻緭鍏� */
+async function handleScan() {
+  if (!formData.value?.id || !scanContent.value.trim() || scanLoading.value) {
+    return;
+  }
+  scanLoading.value = true;
+  try {
+    const result = await scanProductSales({
+      quantity: scanQuantity.value,
+      salesId: formData.value.id,
+      scanContent: scanContent.value.trim(),
+    });
+    message[result.alreadyScanned ? 'warning' : 'success'](
+      result.alreadyScanned
+        ? `璇ョ爜宸叉壂鎻忥紝鏄庣粏缂栧彿锛�${result.detailId ?? '-'}`
+        : `${result.message || '鎵爜鎴愬姛'}${result.scanType ? `锛�${result.scanType === 'PALLET' ? '鎵樼洏鐮�' : '琚嬬爜'}锛塦 : ''}`,
+    );
+    scanContent.value = '';
+    scanQuantity.value = undefined;
+    scanRefreshKey.value += 1;
+  } finally {
+    scanLoading.value = false;
   }
 }
 
@@ -231,9 +261,30 @@
     <template v-if="formData?.id">
       <Divider>鐗╂枡淇℃伅</Divider>
       <div class="mx-4">
+        <div v-if="isStock" class="mb-3 flex items-center gap-2 px-4">
+          <a-input
+            v-model:value="scanContent"
+            :disabled="scanLoading"
+            autofocus
+            class="flex-1"
+            placeholder="璇锋壂鎻忚鐮佹垨鎵樼洏鐮侊紝鍥炶溅鎻愪氦"
+            @press-enter="handleScan"
+          />
+          <a-input-number
+            v-model:value="scanQuantity"
+            :disabled="scanLoading"
+            :min="0"
+            placeholder="鏁伴噺锛堝彲閫夛級"
+            style="width: 140px"
+          />
+          <Button :loading="scanLoading" type="default" @click="handleScan">
+            鎵爜
+          </Button>
+        </div>
         <LineList
           :form-type="formType"
           :notice-id="formData.noticeId"
+          :refresh-key="scanRefreshKey"
           :sales-id="formData.id"
         />
       </div>

--
Gitblit v1.9.3