This commit is contained in:
2026-03-15 22:13:51 +08:00
parent 66f2bd2daa
commit a86fb9803a
+30 -8
View File
@@ -1531,6 +1531,29 @@ const InventoryView = {
}
};
const ensureStockBaseData = async () => {
if (!state.products.length) {
await loadProducts();
}
if (!state.warehouses.length) {
await loadWarehouses();
}
if (!state.warehouses.length) {
try {
await apiRequest('/api/warehouses', {
method: 'POST',
body: JSON.stringify({
name: '默认仓库'
})
});
await loadWarehouses();
addNotification('已自动创建默认仓库', 'success');
} catch (e) {
handleApiError(e, '自动创建默认仓库');
}
}
};
const loadSuppliers = async () => {
state.loading = true;
try {
@@ -1645,12 +1668,7 @@ const InventoryView = {
} else {
state.form = {};
if (type === 'stockIn' || type === 'stockOut') {
if (!state.products.length) {
await loadProducts();
}
if (!state.warehouses.length) {
await loadWarehouses();
}
await ensureStockBaseData();
state.form = {
product_id: state.products[0]?.id || null,
warehouse_id: state.warehouses.find(w => w.is_default)?.id || state.warehouses[0]?.id || null,
@@ -2359,6 +2377,7 @@ const InventoryView = {
<div class="form-group">
<label class="form-label">产品 *</label>
<select v-model.number="state.form.product_id" class="form-input" required>
<option v-if="!state.products.length" :value="null" disabled>暂无产品,请先新增产品</option>
<option v-for="product in state.products" :key="'stockin-product-' + product.id" :value="product.id">
{{ product.sku }} - {{ product.name }}(ID: {{ product.id }})
</option>
@@ -2367,6 +2386,7 @@ const InventoryView = {
<div class="form-group">
<label class="form-label">仓库 *</label>
<select v-model.number="state.form.warehouse_id" class="form-input" required>
<option v-if="!state.warehouses.length" :value="null" disabled>暂无仓库,系统将自动创建默认仓库</option>
<option v-for="warehouse in state.warehouses" :key="'stockin-warehouse-' + warehouse.id" :value="warehouse.id">
{{ warehouse.name }}{{ warehouse.code ? ' (' + warehouse.code + ')' : '' }}{{ warehouse.is_default ? ' [默认]' : '' }}(ID: {{ warehouse.id }})
</option>
@@ -2386,7 +2406,7 @@ const InventoryView = {
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="closeModal">取消</button>
<button type="submit" class="btn btn-primary">确认入库</button>
<button type="submit" class="btn btn-primary" :disabled="!state.form.product_id || !state.form.warehouse_id">确认入库</button>
</div>
</form>
@@ -2395,6 +2415,7 @@ const InventoryView = {
<div class="form-group">
<label class="form-label">产品 *</label>
<select v-model.number="state.form.product_id" class="form-input" required>
<option v-if="!state.products.length" :value="null" disabled>暂无产品,请先新增产品</option>
<option v-for="product in state.products" :key="'stockout-product-' + product.id" :value="product.id">
{{ product.sku }} - {{ product.name }}(ID: {{ product.id }})
</option>
@@ -2403,6 +2424,7 @@ const InventoryView = {
<div class="form-group">
<label class="form-label">仓库 *</label>
<select v-model.number="state.form.warehouse_id" class="form-input" required>
<option v-if="!state.warehouses.length" :value="null" disabled>暂无仓库,系统将自动创建默认仓库</option>
<option v-for="warehouse in state.warehouses" :key="'stockout-warehouse-' + warehouse.id" :value="warehouse.id">
{{ warehouse.name }}{{ warehouse.code ? ' (' + warehouse.code + ')' : '' }}{{ warehouse.is_default ? ' [默认]' : '' }}(ID: {{ warehouse.id }})
</option>
@@ -2422,7 +2444,7 @@ const InventoryView = {
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="closeModal">取消</button>
<button type="submit" class="btn btn-primary">确认出库</button>
<button type="submit" class="btn btn-primary" :disabled="!state.form.product_id || !state.form.warehouse_id">确认出库</button>
</div>
</form>
</div>