From b176162c23294d8d1bfb9f09cf6bb759efb0124a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 15 七月 2026 14:10:26 +0800
Subject: [PATCH] 银川 1.库存现有量添加自定义出库入库功能 2.整理重复文件

---
 src/views/erp/purchase/supplier/components/select-dialog.vue |  122 ++++++++++++++++++++++++----------------
 1 files changed, 74 insertions(+), 48 deletions(-)

diff --git a/src/views/stocktaking/plan/components/select-dialog.vue b/src/views/erp/purchase/supplier/components/select-dialog.vue
similarity index 64%
rename from src/views/stocktaking/plan/components/select-dialog.vue
rename to src/views/erp/purchase/supplier/components/select-dialog.vue
index 9883491..0822d10 100644
--- a/src/views/stocktaking/plan/components/select-dialog.vue
+++ b/src/views/erp/purchase/supplier/components/select-dialog.vue
@@ -1,6 +1,6 @@
 <script lang="ts" setup>
 import type { VxeTableGridOptions } from '#/adapter/vxe-table';
-import type { MesWmStockTakingPlanApi } from '#/api/mes/wm/stocktaking/plan';
+import type { ErpSupplierApi } from '#/api/erp/purchase/supplier';
 
 import { nextTick, ref } from 'vue';
 
@@ -9,60 +9,53 @@
 import { message, Modal } from 'ant-design-vue';
 
 import { useVbenVxeGrid } from '#/adapter/vxe-table';
-import { getStockTakingPlanPage } from '#/api/mes/wm/stocktaking/plan';
+import { getSupplierPage } from '#/api/erp/purchase/supplier';
 
-import { useSelectGridColumns, useSelectGridFormSchema } from '../data';
+defineOptions({ name: 'ErpSupplierSelectDialog' });
 
 const emit = defineEmits<{
-  selected: [rows: MesWmStockTakingPlanApi.StockTakingPlan[]];
+  selected: [rows: ErpSupplierApi.Supplier[]];
 }>();
 
-const open = ref(false); // 寮圭獥鏄惁鎵撳紑
-const multiple = ref(true); // 鏄惁澶氶��
-const selectedRows = ref<MesWmStockTakingPlanApi.StockTakingPlan[]>([]); // 宸查�夌洏鐐规柟妗�
-const preSelectedIds = ref<number[]>([]); // 棰勯�夌洏鐐规柟妗堢紪鍙�
+const open = ref(false);
+const multiple = ref(true);
+const selectedRows = ref<ErpSupplierApi.Supplier[]>([]);
+const preSelectedIds = ref<number[]>([]);
 
-/** 鑾峰彇澶氶�夎褰曪紝鍖呭惈 VXE reserve 璺ㄩ〉璁板綍 */
+function getTableRows() {
+  return gridApi.grid.getTableData().fullData as ErpSupplierApi.Supplier[];
+}
+
 function getMultipleSelectedRows() {
-  const selectedMap = new Map<
-    number,
-    MesWmStockTakingPlanApi.StockTakingPlan
-  >();
+  const selectedMap = new Map<number, ErpSupplierApi.Supplier>();
   const records = [
     ...(gridApi.grid.getCheckboxReserveRecords?.() ?? []),
     ...(gridApi.grid.getCheckboxRecords?.() ?? []),
-  ] as MesWmStockTakingPlanApi.StockTakingPlan[];
+  ] as ErpSupplierApi.Supplier[];
   records.forEach((row) => {
-    if (row.id !== undefined && row.id !== null) {
-      selectedMap.set(row.id, row);
+    const rowId = row.id;
+    if (rowId) {
+      selectedMap.set(rowId, row);
     }
   });
   return [...selectedMap.values()];
 }
 
-/** 澶勭悊鍕鹃�夊彉鍖� */
 function handleCheckboxSelectChange() {
   selectedRows.value = getMultipleSelectedRows();
 }
 
-/** 澶勭悊鍗曢�夊彉鍖� */
-function handleRadioChange(row: MesWmStockTakingPlanApi.StockTakingPlan) {
+function handleRadioChange(row: ErpSupplierApi.Supplier) {
   selectedRows.value = [row];
 }
 
-/** 澶氶�夋ā寮忎笅鍒囨崲琛屽嬀閫� */
-async function toggleMultipleRow(row: MesWmStockTakingPlanApi.StockTakingPlan) {
+async function toggleMultipleRow(row: ErpSupplierApi.Supplier) {
   const selected = gridApi.grid.isCheckedByCheckboxRow(row);
   await gridApi.grid.setCheckboxRow(row, !selected);
   selectedRows.value = getMultipleSelectedRows();
 }
 
-/** 澶勭悊琛屽弻鍑伙細鍗曢�夌洿鎺ョ‘璁わ紱澶氶�夊垏鎹㈠嬀閫� */
-async function handleCellDblclick({
-  row,
-}: {
-  row: MesWmStockTakingPlanApi.StockTakingPlan;
-}) {
+async function handleCellDblclick({ row }: { row: ErpSupplierApi.Supplier }) {
   if (multiple.value) {
     await toggleMultipleRow(row);
     return;
@@ -72,13 +65,11 @@
   handleConfirm();
 }
 
-/** 鍥炴樉棰勯�夌洏鐐规柟妗� */
 async function applyPreSelection() {
   if (preSelectedIds.value.length === 0) {
     return;
   }
-  const rows =
-    gridApi.grid.getData() as MesWmStockTakingPlanApi.StockTakingPlan[];
+  const rows = getTableRows();
   for (const row of rows) {
     if (
       row.id === undefined ||
@@ -100,13 +91,56 @@
   }
 }
 
+function useSelectGridFormSchema() {
+  return [
+    {
+      fieldName: 'name',
+      label: '渚涘簲鍟嗗悕绉�',
+      component: 'Input',
+      componentProps: {
+        placeholder: '璇疯緭鍏ヤ緵搴斿晢鍚嶇О',
+        allowClear: true,
+      },
+    },
+  ];
+}
+
+function useSelectGridColumns(multiple = false): VxeTableGridOptions<ErpSupplierApi.Supplier>['columns'] {
+  return [
+    {
+      type: multiple ? 'checkbox' : 'radio',
+      width: 50,
+    },
+    {
+      field: 'name',
+      title: '渚涘簲鍟嗗悕绉�',
+      minWidth: 150,
+    },
+    {
+      field: 'contact',
+      title: '鑱旂郴浜�',
+      minWidth: 120,
+    },
+    {
+      field: 'mobile',
+      title: '鎵嬫満鍙风爜',
+      minWidth: 130,
+    },
+    {
+      field: 'telephone',
+      title: '鑱旂郴鐢佃瘽',
+      minWidth: 130,
+    },
+  ];
+}
+
 const [Grid, gridApi] = useVbenVxeGrid({
   formOptions: {
     schema: useSelectGridFormSchema(),
   },
   gridOptions: {
     columns: useSelectGridColumns(true),
-    height: 480,
+    height: 520,
     keepSource: true,
     checkboxConfig: {
       highlight: true,
@@ -120,11 +154,10 @@
     proxyConfig: {
       ajax: {
         query: async ({ page }, formValues) => {
-          return await getStockTakingPlanPage({
+          return await getSupplierPage({
             pageNo: page.currentPage,
             pageSize: page.pageSize,
             ...formValues,
-            // 閫夋嫨鍣ㄥ彧灞曠ず鍚敤鐘舵�佺殑鏂规
             status: CommonStatusEnum.ENABLE,
           });
         },
@@ -138,22 +171,17 @@
       refresh: true,
       search: true,
     },
-  } as VxeTableGridOptions<MesWmStockTakingPlanApi.StockTakingPlan>,
+  } as VxeTableGridOptions<ErpSupplierApi.Supplier>,
   gridEvents: {
     cellDblclick: handleCellDblclick,
     checkboxAll: handleCheckboxSelectChange,
     checkboxChange: handleCheckboxSelectChange,
-    radioChange: ({
-      row,
-    }: {
-      row: MesWmStockTakingPlanApi.StockTakingPlan;
-    }) => {
+    radioChange: ({ row }: { row: ErpSupplierApi.Supplier }) => {
       handleRadioChange(row);
     },
   },
 });
 
-/** 閲嶇疆鏌ヨ鍜岄�夋嫨鐘舵�� */
 async function resetQueryState() {
   selectedRows.value = [];
   await gridApi.grid.clearCheckboxRow();
@@ -162,7 +190,6 @@
   await gridApi.formApi.resetForm();
 }
 
-/** 鎵撳紑鐩樼偣鏂规閫夋嫨寮圭獥 */
 async function openModal(
   selectedIds?: number[],
   options?: { multiple?: boolean },
@@ -180,12 +207,11 @@
   await applyPreSelection();
 }
 
-/** 鍏抽棴寮圭獥 */
-function closeModal() {
+async function closeModal() {
   open.value = false;
+  await resetQueryState();
 }
 
-/** 纭閫夋嫨 */
 function handleConfirm() {
   const rows = multiple.value ? getMultipleSelectedRows() : selectedRows.value;
   if (rows.length === 0) {
@@ -202,12 +228,12 @@
 <template>
   <Modal
     v-model:open="open"
-    :destroy-on-close="true"
-    title="鐩樼偣鏂规閫夋嫨"
+    title="渚涘簲鍟嗛�夋嫨"
     width="70%"
-    @cancel="closeModal"
+    :destroy-on-close="true"
     @ok="handleConfirm"
+    @cancel="closeModal"
   >
-    <Grid table-title="鐩樼偣鏂规鍒楄〃" />
+    <Grid table-title="渚涘簲鍟嗗垪琛�" />
   </Modal>
 </template>

--
Gitblit v1.9.3