From da57fbd8e7fa021614fb32502fb1520ea4e34e1e Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 18 五月 2026 11:35:16 +0800
Subject: [PATCH] 浪潮 1.样式修改

---
 src/views/inventoryManagement/dispatchLog/Record.vue |  560 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 558 insertions(+), 2 deletions(-)

diff --git a/src/views/inventoryManagement/dispatchLog/Record.vue b/src/views/inventoryManagement/dispatchLog/Record.vue
index dd47cb4..7475352 100644
--- a/src/views/inventoryManagement/dispatchLog/Record.vue
+++ b/src/views/inventoryManagement/dispatchLog/Record.vue
@@ -31,6 +31,7 @@
         >
       </div>
       <div>
+        <el-button type="primary" @click="handleAdd">鏂板</el-button>
         <el-button type="primary" @click="handleBatchApprove">瀹℃壒</el-button>
         <el-button @click="handleOut">瀵煎嚭</el-button>
         <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
@@ -67,6 +68,7 @@
           show-overflow-tooltip
         />
         <el-table-column label="瑙勬牸鍨嬪彿" prop="model" show-overflow-tooltip />
+        <el-table-column label="搴撲綅" prop="warehouseName" show-overflow-tooltip />
         <el-table-column label="鎵瑰彿" prop="batchNo" show-overflow-tooltip />
         <el-table-column label="鍗曚綅" prop="unit" show-overflow-tooltip />
         <el-table-column
@@ -94,6 +96,17 @@
             </el-tag>
           </template>
         </el-table-column>
+        <el-table-column label="鎿嶄綔" width="120" align="center" fixed="right">
+          <template #default="scope">
+            <el-button 
+              v-if="scope.row.approvalStatus !== 1 && scope.row.approvalStatus !== '1' && scope.row.approvalStatus !== 'approved' && scope.row.approvalStatus !== 'APPROVED'"
+              link 
+              type="primary" 
+              size="small" 
+              @click="handleEdit(scope.row)">缂栬緫</el-button>
+            <span v-else style="color: #999; font-size: 12px;">宸查�氳繃</span>
+          </template>
+        </el-table-column>
       </el-table>
       <pagination
         v-show="total > 0"
@@ -104,24 +117,181 @@
         @pagination="paginationChange"
       />
     </div>
+
+    <!-- 鏂板/缂栬緫瀵硅瘽妗� -->
+    <el-dialog v-model="dialogVisible"
+               :title="dialogTitle"
+               width="800"
+               @close="closeDialog">
+      <el-form ref="formRef"
+               :model="formState"
+               label-width="140px"
+               label-position="top">
+        <el-form-item label="浜у搧鍚嶇О"
+                      prop="productModelId"
+                      :rules="[
+                        {
+                          required: true,
+                          message: '璇烽�夋嫨浜у搧',
+                          trigger: 'change',
+                        }
+                      ]">
+          <el-button type="primary"
+                     @click="showProductSelect = true">
+            {{ formState.productName ? formState.productName : '閫夋嫨浜у搧' }}
+          </el-button>
+        </el-form-item>
+        <el-form-item label="瑙勬牸"
+                      prop="productModelName">
+          <el-input v-model="formState.productModelName" disabled />
+        </el-form-item>
+        <el-form-item label="鍗曚綅"
+                      prop="unit">
+          <el-input v-model="formState.unit" disabled />
+        </el-form-item>
+        <el-form-item label="浠撳簱"
+                      prop="warehouseInfoId"
+                      :rules="[
+                        {
+                          required: true,
+                          message: '璇烽�夋嫨浠撳簱',
+                          trigger: 'change',
+                        }
+                      ]">
+          <el-select v-model="formState.warehouseInfoId"
+                     placeholder="璇烽�夋嫨浠撳簱"
+                     clearable
+                     @change="handleWarehouseChange"
+                     style="width: 100%">
+            <el-option v-for="warehouse in warehouseList"
+                       :key="warehouse.id"
+                       :label="warehouse.warehouseName"
+                       :value="warehouse.id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鎵瑰彿"
+                      prop="batchNo"
+                      :rules="[
+                        {
+                          required: true,
+                          message: '璇烽�夋嫨鎵瑰彿',
+                          trigger: 'change',
+                        }
+                      ]">
+          <el-select v-model="formState.batchNo"
+                     placeholder="璇烽�夋嫨鎵瑰彿"
+                     clearable
+                     @change="handleBatchNoChange"
+                     style="width: 100%">
+            <el-option v-for="batch in batchNoList"
+                       :key="batch"
+                       :label="batch + ' (搴撳瓨: ' + (batchNoStockMap[batch] || 0) + ')'"
+                       :value="batch" />
+          </el-select>
+        </el-form-item>
+        <el-form-item v-if="formState.batchNo && batchNoStockMap[formState.batchNo] !== undefined"
+                      label="褰撳墠鎵瑰彿搴撳瓨"
+                      prop="currentStock">
+          <el-input :model-value="batchNoStockMap[formState.batchNo]" disabled />
+        </el-form-item>
+        <el-form-item label="鍑哄簱鏁伴噺"
+                      prop="qualitity"
+                      :rules="[
+                        {
+                          required: true,
+                          message: '璇疯緭鍏ュ嚭搴撴暟閲�',
+                          trigger: 'blur',
+                        },
+                        {
+                          validator: (rule, value, callback) => {
+                            if (formState.maxStock > 0 && value > formState.maxStock) {
+                              callback('鍑哄簱鏁伴噺涓嶈兘瓒呰繃褰撳墠鎵瑰彿搴撳瓨 ' + formState.maxStock);
+                            } else {
+                              callback();
+                            }
+                          },
+                          trigger: 'blur',
+                        }
+                      ]">
+          <el-input-number v-model="formState.qualitity"
+                           :step="1"
+                           :min="1"
+                           :max="formState.maxStock > 0 ? formState.maxStock : undefined"
+                           style="width: 100%" />
+        </el-form-item>
+        <el-form-item v-if="isEdit"
+                      label="鏉ユ簮"
+                      prop="recordType">
+          <el-select v-model="formState.recordType"
+                     placeholder="璇烽�夋嫨鏉ユ簮"
+                     disabled>
+            <el-option v-for="item in stockRecordTypeOptions"
+                       :key="item.value"
+                       :label="item.label"
+                       :value="item.value" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="搴撳瓨绫诲瀷"
+                      prop="type"
+                      :rules="[
+                        {
+                          required: true,
+                          message: '璇烽�夋嫨搴撳瓨绫诲瀷',
+                          trigger: 'change',
+                        }
+                      ]">
+          <el-select v-model="formState.type"
+                     placeholder="璇烽�夋嫨搴撳瓨绫诲瀷"
+                     >
+            <el-option label="鍚堟牸搴撳瓨"
+                       value="qualified" />
+            <el-option label="涓嶅悎鏍煎簱瀛�"
+                       value="unqualified" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="澶囨敞"
+                      prop="remark">
+          <el-input v-model="formState.remark"
+                    type="textarea" />
+        </el-form-item>
+      </el-form>
+      <!-- 浜у搧閫夋嫨寮圭獥 -->
+      <ProductSelectDialog v-model="showProductSelect"
+                           @confirm="handleProductSelect"
+                           :top-product-parent-id="props.topParentProductId"
+                           request-url="/basic/product/pageModelAndQua"
+                           single />
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="handleSubmit">纭</el-button>
+          <el-button @click="closeDialog">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup>
 import pagination from "@/components/PIMTable/Pagination.vue";
-import { ref } from "vue";
-import { ElMessageBox } from "element-plus";
+import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue";
+import { ref, reactive, toRefs, computed, getCurrentInstance, watch, onMounted } from "vue";
+import { ElMessageBox, ElMessage } from "element-plus";
 import useUserStore from "@/store/modules/user";
 import { getCurrentDate } from "@/utils/index.js";
 import {
   getStockOutPage,
   delPendingStockOut,
   batchApproveStockOutRecords,
+  updateStockOutRecord,
 } from "@/api/inventoryManagement/stockOut.js";
 import {
   findAllQualifiedStockOutRecordTypeOptions,
   findAllUnQualifiedStockOutRecordTypeOptions,
 } from "@/api/basicData/enum.js";
+import { addStockOutRecordOnly, getStockInventoryByModelId } from "@/api/inventoryManagement/stockInventory.js";
+import { addUnqualifiedStockOutRecordOnly } from "@/api/inventoryManagement/stockUninventory.js";
+import { getWarehouseList } from "@/api/inventoryManagement/warehouse.js";
+import { productModelListByUrl } from "@/api/basicData/productModel.js";
 
 const userStore = useUserStore();
 const { proxy } = getCurrentInstance();
@@ -130,6 +300,14 @@
 const tableLoading = ref(false);
 // 鏉ユ簮绫诲瀷閫夐」
 const stockRecordTypeOptions = ref([]);
+// 鎵瑰彿鍒楄〃锛堜粠batchNoMaps鑾峰彇锛�
+const batchNoList = ref([]);
+// 鎵瑰彿搴撳瓨鏄犲皠
+const batchNoStockMap = ref({});
+// 浠撳簱鍒楄〃
+const warehouseList = ref([]);
+// 鍘熷batchNoMaps鏁版嵁
+const rawBatchNoMaps = ref({});
 const page = reactive({
   current: 1,
   size: 100,
@@ -161,6 +339,41 @@
   },
 });
 const { searchForm } = toRefs(data);
+
+// 瀵硅瘽妗嗙浉鍏�
+const dialogVisible = ref(false);
+const dialogType = ref('add'); // 'add' 鎴� 'edit'
+const dialogTitle = computed(() => dialogType.value === 'add' ? '鏂板鍑哄簱璁板綍' : '缂栬緫鍑哄簱璁板綍');
+const isEdit = computed(() => dialogType.value === 'edit');
+const formRef = ref();
+const showProductSelect = ref(false);
+
+// 琛ㄥ崟鏁版嵁
+const formState = ref({
+  id: undefined,
+  productId: undefined,
+  productModelId: undefined,
+  productName: "",
+  productModelName: "",
+  unit: "",
+  warehouseInfoId: null, // 浠撳簱ID
+  type: undefined,
+  qualitity: 0,
+  batchNo: null,
+  recordType: "",
+  remark: "",
+  maxStock: 0, // 褰撳墠閫変腑鎵瑰彿鐨勬渶澶у簱瀛�
+});
+
+// 鎵瑰彿涓虹┖鏃惰浆涓� null
+watch(
+  () => formState.value.batchNo,
+  val => {
+    if (val === "") {
+      formState.value.batchNo = null;
+    }
+  }
+);
 
 // 鏌ヨ鍒楄〃
 /** 鎼滅储鎸夐挳鎿嶄綔 */
@@ -239,6 +452,349 @@
   return "warning";
 };
 
+// 鏂板
+const handleAdd = () => {
+  dialogType.value = 'add';
+  resetForm();
+  // 鏍规嵁褰撳墠tab璁剧疆榛樿搴撳瓨绫诲瀷
+  formState.value.type = props.type === '0' ? 'qualified' : 'unqualified';
+  dialogVisible.value = true;
+};
+
+// 缂栬緫
+const handleEdit = async (row) => {
+  dialogType.value = 'edit';
+  resetForm();
+
+  // 鍏堝姞杞芥墍鏈夋暟鎹紝鏈�鍚庡啀璧嬪�� formState
+  let loadedWarehouseList = [];
+  let loadedBatchNoList = [];
+  let loadedBatchNoStockMap = {};
+  let loadedMaxStock = 0;
+  let loadedRawBatchNoMaps = {};
+
+  // 缂栬緫鏃跺姞杞戒粨搴撳垪琛�
+  if (row.warehouseInfoId) {
+    const allWarehouses = await loadWarehouseList();
+    const currentWarehouse = allWarehouses.find(w => String(w.id) === String(row.warehouseInfoId));
+    if (currentWarehouse) {
+      loadedWarehouseList = [{
+        id: currentWarehouse.id,
+        warehouseName: currentWarehouse.warehouseName || currentWarehouse.name || currentWarehouse.warehouseCode || `浠撳簱${currentWarehouse.id}`
+      }];
+    }
+  }
+
+  // 缂栬緫鏃舵煡璇骇鍝佸簱瀛�
+  if (row.productModelId) {
+    try {
+      console.log('缂栬緫鏃舵煡璇㈠簱瀛橈紝productModelId:', row.productModelId);
+      console.log('褰撳墠row鏁版嵁:', row);
+      const res = await productModelListByUrl('/basic/product/pageModelAndQua', {
+        id: row.productModelId,
+        page: 1,
+        size: 1
+      });
+      console.log('鏌ヨ搴撳瓨鎺ュ彛杩斿洖:', res);
+      // 鎺ュ彛鐩存帴杩斿洖 {records: [], total: ...}锛屾病鏈� data 灞傚拰 code
+      const records = res.records || (res.data && res.data.records) || [];
+      if (records.length > 0) {
+        const product = records[0];
+        console.log('浜у搧鏁版嵁:', product);
+        console.log('batchNoMaps:', product.batchNoMaps);
+        if (product.batchNoMaps && Object.keys(product.batchNoMaps).length > 0) {
+          loadedRawBatchNoMaps = product.batchNoMaps;
+          // 鑾峰彇鎵�鏈変粨搴撲俊鎭敤浜庡弽鏄惧悕绉�
+          const allWarehouses = await loadWarehouseList();
+          const warehouseMap = {};
+          allWarehouses.forEach(w => {
+            warehouseMap[w.id] = w.warehouseName || w.name || w.warehouseCode || `浠撳簱${w.id}`;
+          });
+          // 鏋勫缓浠撳簱鍒楄〃锛岀‘淇濆寘鍚綋鍓嶈褰曠殑浠撳簱
+          const warehouseIds = Object.keys(product.batchNoMaps);
+          // 濡傛灉褰撳墠璁板綍鐨勪粨搴撲笉鍦� product.batchNoMaps 涓紝娣诲姞杩涘幓
+          if (row.warehouseInfoId && !warehouseIds.some(id => String(id) === String(row.warehouseInfoId))) {
+            warehouseIds.push(String(row.warehouseInfoId));
+          }
+          loadedWarehouseList = warehouseIds.map(warehouseInfoId => ({
+            id: warehouseInfoId,
+            warehouseName: warehouseMap[warehouseInfoId] || `浠撳簱${warehouseInfoId}`
+          }));
+          console.log('褰撳墠浠撳簱ID:', row.warehouseInfoId);
+          console.log('璇ヤ粨搴撶殑batchNoMaps:', product.batchNoMaps[row.warehouseInfoId]);
+          // 濡傛灉褰撳墠鏈変粨搴揑D锛岃В鏋愯浠撳簱鐨勬壒鍙峰簱瀛橈紙澶勭悊绫诲瀷涓嶅尮閰嶉棶棰橈級
+          let batchArray = null;
+          if (row.warehouseInfoId) {
+            // 灏濊瘯澶氱鏂瑰紡鑾峰彇鎵瑰彿鏁版嵁
+            batchArray = product.batchNoMaps[row.warehouseInfoId] ||
+                        product.batchNoMaps[String(row.warehouseInfoId)] ||
+                        product.batchNoMaps[Number(row.warehouseInfoId)];
+          }
+          if (batchArray) {
+            console.log('batchArray:', batchArray);
+            const batchMap = {};
+            const batches = [];
+            batchArray.forEach(item => {
+              const batchNo = Object.keys(item)[0];
+              const stock = item[batchNo];
+              console.log('鎵瑰彿:', batchNo, '搴撳瓨:', stock);
+              batches.push(batchNo);
+              batchMap[batchNo] = stock;
+            });
+            loadedBatchNoList = batches;
+            loadedBatchNoStockMap = batchMap;
+            console.log('batchMap:', batchMap);
+            console.log('褰撳墠鎵瑰彿:', row.batchNo);
+            // 璁剧疆褰撳墠鎵瑰彿鐨勫簱瀛�
+            if (row.batchNo && batchMap[row.batchNo] !== undefined) {
+              loadedMaxStock = batchMap[row.batchNo];
+              console.log('璁剧疆maxStock涓�:', loadedMaxStock);
+            } else {
+              console.log('鏈壘鍒板綋鍓嶆壒鍙风殑搴撳瓨');
+              loadedMaxStock = 0;
+            }
+          } else {
+            console.log('鏈壘鍒板綋鍓嶄粨搴撶殑batchNoMaps');
+            loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+            loadedBatchNoStockMap = {};
+            loadedMaxStock = 0;
+          }
+        } else {
+          console.log('浜у搧娌℃湁batchNoMaps');
+          loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+          loadedBatchNoStockMap = {};
+          loadedMaxStock = 0;
+        }
+      } else {
+        console.log('鎺ュ彛杩斿洖鏁版嵁寮傚父:', res);
+        loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+        loadedBatchNoStockMap = {};
+        loadedMaxStock = 0;
+      }
+    } catch (error) {
+      console.error('鏌ヨ浜у搧搴撳瓨澶辫触', error);
+      loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+      loadedBatchNoStockMap = {};
+      loadedMaxStock = 0;
+    }
+  } else {
+    console.log('娌℃湁productModelId');
+    loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
+    loadedBatchNoStockMap = {};
+    loadedMaxStock = 0;
+  }
+
+  // 鎵�鏈夋暟鎹姞杞藉畬鎴愬悗锛屼竴娆℃�ц祴鍊�
+  warehouseList.value = loadedWarehouseList;
+  batchNoList.value = loadedBatchNoList;
+  batchNoStockMap.value = loadedBatchNoStockMap;
+  rawBatchNoMaps.value = loadedRawBatchNoMaps;
+
+  // 鏈�鍚庤祴鍊� formState锛岀‘淇濅粨搴撳垪琛ㄥ凡缁忓噯澶囧ソ
+  // 娉ㄦ剰锛氬皢 warehouseInfoId 杞崲涓哄瓧绗︿覆锛岀‘淇濅笌 warehouseList 涓殑 id 绫诲瀷鍖归厤
+  formState.value = {
+    id: row.id,
+    productId: row.productId,
+    productModelId: row.productModelId,
+    productName: row.productName,
+    productModelName: row.model,
+    unit: row.unit,
+    type: props.type === '0' ? 'qualified' : 'unqualified',
+    qualitity: row.stockOutNum,
+    batchNo: row.batchNo,
+    warehouseInfoId: row.warehouseInfoId != null ? String(row.warehouseInfoId) : null,
+    recordType: row.recordType,
+    remark: row.remark || "",
+    maxStock: loadedMaxStock,
+  };
+
+  // 鎵�鏈夋暟鎹姞杞藉畬鎴愬悗鍐嶆樉绀哄脊绐�
+  dialogVisible.value = true;
+};
+
+// 閲嶇疆琛ㄥ崟
+const resetForm = () => {
+  formState.value = {
+    id: undefined,
+    productId: undefined,
+    productModelId: undefined,
+    productName: "",
+    productModelName: "",
+    unit: "",
+    warehouseInfoId: null,
+    type: undefined,
+    qualitity: 0,
+    batchNo: null,
+    recordType: "",
+    remark: "",
+    maxStock: 0,
+  };
+  warehouseList.value = [];
+  batchNoList.value = [];
+  batchNoStockMap.value = {};
+  rawBatchNoMaps.value = {};
+};
+
+// 鍏抽棴瀵硅瘽妗�
+const closeDialog = () => {
+  dialogVisible.value = false;
+  resetForm();
+};
+
+// 鍔犺浇浠撳簱鍒楄〃
+const loadWarehouseList = async () => {
+  try {
+    const res = await getWarehouseList();
+    if (res.code === 200) {
+      return res.data || [];
+    }
+  } catch (error) {
+    console.error('鍔犺浇浠撳簱鍒楄〃澶辫触', error);
+  }
+  return [];
+};
+
+// 浜у搧閫夋嫨澶勭悊
+const handleProductSelect = async products => {
+  if (products && products.length > 0) {
+    const product = products[0];
+    formState.value.productId = product.productId;
+    formState.value.productName = product.productName;
+    formState.value.productModelName = product.model;
+    formState.value.productModelId = product.id;
+    formState.value.unit = product.unit;
+    // 瑙f瀽batchNoMaps鏁版嵁锛屾牸寮忎负锛歿 浠撳簱ID: [{鎵瑰彿: 搴撳瓨}, {鎵瑰彿: 搴撳瓨}] }
+    warehouseList.value = [];
+    batchNoList.value = [];
+    batchNoStockMap.value = {};
+    rawBatchNoMaps.value = {};
+    formState.value.warehouseInfoId = null;
+    formState.value.batchNo = null;
+    formState.value.maxStock = 0;
+
+    if (product.batchNoMaps && Object.keys(product.batchNoMaps).length > 0) {
+      rawBatchNoMaps.value = product.batchNoMaps;
+      // 鑾峰彇鎵�鏈変粨搴撲俊鎭敤浜庡弽鏄惧悕绉�
+      const allWarehouses = await loadWarehouseList();
+      const warehouseMap = {};
+      allWarehouses.forEach(w => {
+        warehouseMap[w.id] = w.warehouseName || w.name || w.warehouseCode || `浠撳簱${w.id}`;
+      });
+      // 鏋勫缓浠撳簱鍒楄〃
+      warehouseList.value = Object.keys(product.batchNoMaps).map(warehouseInfoId => ({
+        id: warehouseInfoId,
+        warehouseName: warehouseMap[warehouseInfoId] || `浠撳簱${warehouseInfoId}`
+      }));
+    }
+    showProductSelect.value = false;
+    // 瑙﹀彂琛ㄥ崟楠岃瘉鏇存柊
+    proxy.$refs["formRef"]?.validateField("productModelId");
+  }
+};
+
+// 浠撳簱閫夋嫨鍙樺寲澶勭悊
+const handleWarehouseChange = (warehouseInfoId) => {
+  batchNoList.value = [];
+  batchNoStockMap.value = {};
+  formState.value.batchNo = null;
+  formState.value.maxStock = 0;
+
+  if (warehouseInfoId && rawBatchNoMaps.value[warehouseInfoId]) {
+    // 瑙f瀽璇ヤ粨搴撲笅鐨勬壒鍙锋暟鎹紝鏍煎紡涓猴細[{鎵瑰彿: 搴撳瓨}, {鎵瑰彿: 搴撳瓨}]
+    const batchArray = rawBatchNoMaps.value[warehouseInfoId];
+    const batchMap = {};
+    const batches = [];
+
+    batchArray.forEach(item => {
+      const batchNo = Object.keys(item)[0];
+      const stock = item[batchNo];
+      batches.push(batchNo);
+      batchMap[batchNo] = stock;
+    });
+
+    batchNoList.value = batches;
+    batchNoStockMap.value = batchMap;
+  }
+};
+
+// 鎵瑰彿閫夋嫨鍙樺寲澶勭悊
+const handleBatchNoChange = (batchNo) => {
+  if (batchNo && batchNoStockMap.value[batchNo]) {
+    formState.value.maxStock = batchNoStockMap.value[batchNo];
+    // 濡傛灉褰撳墠鍑哄簱鏁伴噺瓒呰繃鏈�澶у簱瀛橈紝鑷姩璋冩暣涓烘渶澶у簱瀛�
+    if (formState.value.qualitity > formState.value.maxStock) {
+      formState.value.qualitity = formState.value.maxStock;
+    }
+  } else {
+    formState.value.maxStock = 0;
+  }
+};
+
+// 鎻愪氦琛ㄥ崟
+const handleSubmit = () => {
+  proxy.$refs["formRef"].validate(valid => {
+    if (valid) {
+      // 楠岃瘉鏄惁閫夋嫨浜嗕骇鍝�
+      if (!formState.value.productModelId) {
+        ElMessage.error("璇烽�夋嫨浜у搧");
+        return;
+      }
+
+      if (dialogType.value === 'add') {
+        submitAdd();
+      } else {
+        submitEdit();
+      }
+    }
+  });
+};
+
+// 鎻愪氦鏂板
+const submitAdd = () => {
+  const params = { ...formState.value };
+
+  if (formState.value.type === "qualified") {
+    addStockOutRecordOnly(params).then(res => {
+      ElMessage.success("鏂板鎴愬姛");
+      closeDialog();
+      getList();
+    }).catch(() => {
+      ElMessage.error("鏂板澶辫触");
+    });
+  } else {
+    addUnqualifiedStockOutRecordOnly(params).then(res => {
+      ElMessage.success("鏂板鎴愬姛");
+      closeDialog();
+      getList();
+    }).catch(() => {
+      ElMessage.error("鏂板澶辫触");
+    });
+  }
+};
+
+// 鎻愪氦缂栬緫
+const submitEdit = () => {
+  const params = {
+    productId: formState.value.productId,
+    productModelId: formState.value.productModelId,
+    productName: formState.value.productName,
+    model: formState.value.productModelName,
+    unit: formState.value.unit,
+    batchNo: formState.value.batchNo,
+    stockOutNum: formState.value.qualitity,
+    recordType: formState.value.recordType,
+    remark: formState.value.remark,
+  };
+
+  updateStockOutRecord(formState.value.id, params).then(() => {
+    ElMessage.success("缂栬緫鎴愬姛");
+    closeDialog();
+    getList();
+  }).catch(() => {
+    ElMessage.error("缂栬緫澶辫触");
+  });
+};
+
 // 鑾峰彇鏉ユ簮绫诲瀷閫夐」
 const fetchStockRecordTypeOptions = () => {
   if (props.type === "0") {

--
Gitblit v1.9.3