From f300d2d0d34ec8e6725fb2410ca5465546171a25 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 28 五月 2026 16:59:03 +0800
Subject: [PATCH] 新增库存增加厂家下拉框,并且在其他位置回显
---
src/views/inventoryManagement/stockManagement/New.vue | 33 +-
src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue | 380 +++++++++++++++++----------------
src/views/inventoryManagement/receiptManagement/Record.vue | 234 ++++++++++++++++++--
3 files changed, 420 insertions(+), 227 deletions(-)
diff --git a/src/views/inventoryManagement/receiptManagement/Record.vue b/src/views/inventoryManagement/receiptManagement/Record.vue
index 0a01def..1c899f0 100644
--- a/src/views/inventoryManagement/receiptManagement/Record.vue
+++ b/src/views/inventoryManagement/receiptManagement/Record.vue
@@ -110,6 +110,13 @@
<el-table-column label="鍏ュ簱鏃堕棿"
prop="createTime"
show-overflow-tooltip />
+ <el-table-column label="鍘傚"
+ prop="manufacturerId"
+ show-overflow-tooltip>
+ <template #default="scope">
+ {{ getManufacturerName(scope.row.manufacturerId) }}
+ </template>
+ </el-table-column>
<el-table-column label="浜у搧澶х被"
prop="productName"
show-overflow-tooltip />
@@ -129,10 +136,9 @@
prop="createBy"
show-overflow-tooltip />
<el-table-column label="鏉ユ簮"
- prop="recordType"
show-overflow-tooltip>
<template #default="scope">
- {{ getRecordType(scope.row.recordType) }}
+ {{ scope.row.qualifiedSourceText || scope.row.unQualifiedSourceText || getRecordType(scope.row.recordType) || "--" }}
</template>
</el-table-column>
<el-table-column v-if="showSourceOrderNoColumn"
@@ -162,6 +168,60 @@
:limit="page.size"
@pagination="pageProductChange" />
</div>
+ <!-- 瀹℃壒寮圭獥 -->
+ <el-dialog v-model="approveDialogVisible"
+ title="瀹℃壒"
+ width="800px"
+ append-to-body>
+ <el-form :model="approveForm"
+ label-width="80px">
+ <el-form-item label="瀹℃壒缁撴灉">
+ <el-radio-group v-model="approveForm.approvalStatus">
+ <el-radio :label="1">閫氳繃</el-radio>
+ <el-radio :label="2">椹冲洖</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="鏄庣粏纭"
+ v-if="approveForm.approvalStatus === 1">
+ <div class="approve-items-list">
+ <div class="list-header">
+ <span class="header-product">浜у搧淇℃伅</span>
+ <span class="header-num">鍏ュ簱鏁伴噺</span>
+ </div>
+ <div v-for="item in approveForm.items"
+ :key="item.id"
+ class="approve-item">
+ <div class="item-info">
+ <div class="product-name"
+ :title="item.productName">{{ item.productName }}</div>
+ <div class="product-info-sub">
+ <span class="product-model"
+ :title="item.model">{{ item.model }}</span>
+ <span class="product-batch"
+ v-if="item.batchNo"
+ :title="'鎵瑰彿: ' + item.batchNo"> | 鎵瑰彿: {{ item.batchNo }}</span>
+ </div>
+ </div>
+ <div class="item-input">
+ <el-input-number v-model="item.stockInNum"
+ :min="0"
+ :precision="2"
+ controls-position="right"
+ style="width: 130px" />
+ </div>
+ </div>
+ </div>
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="approveDialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary"
+ @click="submitApprove"
+ :loading="approveLoading">纭畾</el-button>
+ </span>
+ </template>
+ </el-dialog>
</div>
</template>
@@ -186,6 +246,7 @@
findAllQualifiedStockInRecordTypeOptions,
// findAllUnQualifiedStockInRecordTypeOptions,
} from "@/api/basicData/enum.js";
+ import { getManufacturerOptions } from "@/api/inspectionManagement/manufacturerManageFile.js";
const { proxy } = getCurrentInstance();
@@ -206,11 +267,20 @@
const tableLoading = ref(false);
// 鏉ユ簮绫诲瀷閫夐」
const stockRecordTypeOptions = ref([]);
+ const manufacturerOptions = ref([]);
const page = reactive({
current: 1,
size: 10,
});
const total = ref(0);
+
+ // 瀹℃壒鐩稿叧
+ const approveDialogVisible = ref(false);
+ const approveLoading = ref(false);
+ const approveForm = reactive({
+ approvalStatus: 1,
+ items: [], // 瀛樺偍姣忎釜閫変腑鐨勬潯鐩強鍏跺叆搴撴暟閲�
+ });
const data = reactive({
searchForm: {
@@ -234,6 +304,13 @@
return (
stockRecordTypeOptions.value.find(item => item.value === recordType)
?.label || ""
+ );
+ };
+
+ const getManufacturerName = manufacturerId => {
+ return (
+ manufacturerOptions.value.find(item => item.id === manufacturerId)?.name ||
+ "--"
);
};
@@ -370,6 +447,12 @@
// })
};
+ const fetchManufacturerOptions = () => {
+ getManufacturerOptions().then(res => {
+ manufacturerOptions.value = res.data || [];
+ });
+ };
+
// 琛ㄦ牸閫夋嫨鏁版嵁
const handleSelectionChange = selection => {
selectedRows.value = selection.filter(
@@ -410,36 +493,49 @@
proxy.$modal.msgWarning("璇烽�夋嫨寰呭鎵圭殑鏁版嵁");
return;
}
- const ids = selectedRows.value.map(item => item.id);
- ElMessageBox.confirm("璇烽�夋嫨瀹℃壒缁撴灉", "瀹℃壒", {
- confirmButtonText: "閫氳繃",
- cancelButtonText: "椹冲洖",
- type: "warning",
- distinguishCancelAndClose: true,
- })
+ // 鍒濆鍖栧鎵硅〃鍗�
+ approveForm.approvalStatus = 1;
+ approveForm.items = selectedRows.value.map(row => ({
+ id: row.id,
+ productName: row.productName,
+ model: row.model,
+ batchNo: row.batchNo,
+ stockInNum: row.stockInNum || 0,
+ }));
+ approveDialogVisible.value = true;
+ };
+
+ const submitApprove = () => {
+ const params = {
+ approvalStatus: approveForm.approvalStatus,
+ };
+
+ // 鍙湁鍦ㄩ�氳繃鏃舵墠浼犲寘鍚暟閲忕殑鏄庣粏鍒楄〃锛屽惁鍒欎粎浼� ID 鍒楄〃
+ if (approveForm.approvalStatus === 1) {
+ params.items = approveForm.items.map(item => ({
+ id: item.id,
+ stockInNum: item.stockInNum,
+ }));
+ } else {
+ params.ids = approveForm.items.map(item => item.id);
+ }
+
+ approveLoading.value = true;
+ batchApproveStockInRecords(params)
.then(() => {
- batchApproveStockInRecords({ ids, approvalStatus: 1 })
- .then(() => {
- proxy.$modal.msgSuccess("瀹℃壒閫氳繃鎴愬姛");
- getList();
- })
- .catch(() => {
- proxy.$modal.msgError("瀹℃壒閫氳繃澶辫触");
- });
+ proxy.$modal.msgSuccess(
+ approveForm.approvalStatus === 1 ? "瀹℃壒閫氳繃鎴愬姛" : "瀹℃壒椹冲洖鎴愬姛"
+ );
+ approveDialogVisible.value = false;
+ getList();
})
- .catch(action => {
- if (action === "cancel") {
- batchApproveStockInRecords({ ids, approvalStatus: 2 })
- .then(() => {
- proxy.$modal.msgSuccess("瀹℃壒椹冲洖鎴愬姛");
- getList();
- })
- .catch(() => {
- proxy.$modal.msgError("瀹℃壒椹冲洖澶辫触");
- });
- return;
- }
- proxy.$modal.msg("宸插彇娑�");
+ .catch(() => {
+ proxy.$modal.msgError(
+ approveForm.approvalStatus === 1 ? "瀹℃壒閫氳繃澶辫触" : "瀹℃壒椹冲洖澶辫触"
+ );
+ })
+ .finally(() => {
+ approveLoading.value = false;
});
};
@@ -494,6 +590,7 @@
onMounted(() => {
getList();
fetchStockRecordTypeOptions();
+ fetchManufacturerOptions();
});
watch(
@@ -511,4 +608,81 @@
justify-content: flex-end;
margin-bottom: 10px;
}
+
+ .approve-items-list {
+ max-height: 400px;
+ overflow-y: auto;
+ width: 100%;
+ border: 1px solid #ebeef5;
+ border-radius: 4px;
+
+ .list-header {
+ display: flex;
+ background-color: #f5f7fa;
+ padding: 8px 12px;
+ font-weight: bold;
+ border-bottom: 1px solid #ebeef5;
+ font-size: 13px;
+
+ .header-product {
+ flex: 1;
+ }
+
+ .header-num {
+ width: 130px;
+ text-align: center;
+ }
+ }
+
+ .approve-item {
+ display: flex;
+ align-items: center;
+ padding: 10px 12px;
+ border-bottom: 1px solid #ebeef5;
+
+ &:last-child {
+ border-bottom: none;
+ }
+
+ .item-info {
+ flex: 1;
+ min-width: 0;
+ margin-right: 15px;
+
+ .product-name {
+ font-weight: bold;
+ font-size: 13px;
+ color: #303133;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .product-info-sub {
+ display: flex;
+ align-items: center;
+ font-size: 12px;
+ color: #909399;
+ margin-top: 2px;
+ white-space: nowrap;
+ overflow: hidden;
+
+ .product-model,
+ .product-batch {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+
+ .product-batch {
+ margin-left: 4px;
+ color: #409eff;
+ }
+ }
+ }
+
+ .item-input {
+ width: 130px;
+ }
+ }
+ }
</style>
diff --git a/src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue b/src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue
index a835ef4..707c44d 100644
--- a/src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue
+++ b/src/views/inventoryManagement/stockManagement/BatchNoQtyDetail.vue
@@ -1,227 +1,241 @@
<template>
- <el-dialog
- v-model="isShow"
- title="搴撳瓨璇︽儏"
- width="90%"
- top="3vh"
- class="batch-no-qty-detail-dialog"
- @close="closeModal"
- >
+ <el-dialog v-model="isShow"
+ title="搴撳瓨璇︽儏"
+ width="90%"
+ top="3vh"
+ class="batch-no-qty-detail-dialog"
+ @close="closeModal">
<div class="detail-content">
<div class="detail-table-wrapper">
- <el-table
- :data="tableData"
- border
- v-loading="tableLoading"
- style="width: 100%"
- height="100%"
- >
- <el-table-column
- label="浜у搧鍚嶇О"
- prop="productName"
- show-overflow-tooltip
- />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="model" show-overflow-tooltip />
- <el-table-column label="鍗曚綅" prop="unit" show-overflow-tooltip />
- <el-table-column label="鎵瑰彿" prop="batchNo" show-overflow-tooltip />
- <el-table-column
- label="鍚堟牸搴撳瓨鏁伴噺"
- prop="qualifiedQuantity"
- show-overflow-tooltip
- />
- <el-table-column
- label="涓嶅悎鏍煎簱瀛樻暟閲�"
- prop="unQualifiedQuantity"
- show-overflow-tooltip
- />
- <el-table-column
- label="鍚堟牸鍐荤粨鏁伴噺"
- prop="qualifiedLockedQuantity"
- show-overflow-tooltip
- />
- <el-table-column
- label="涓嶅悎鏍煎喕缁撴暟閲�"
- prop="unQualifiedLockedQuantity"
- show-overflow-tooltip
- />
- <el-table-column
- label="搴撳瓨棰勮鏁伴噺"
- prop="warnNum"
- show-overflow-tooltip
- />
- <el-table-column label="澶囨敞" prop="remark" show-overflow-tooltip />
- <el-table-column
- label="鏈�杩戞洿鏂版椂闂�"
- prop="updateTime"
- show-overflow-tooltip
- />
- <el-table-column fixed="right" label="鎿嶄綔" min-width="180" align="center">
+ <el-table :data="tableData"
+ border
+ v-loading="tableLoading"
+ style="width: 100%"
+ height="100%">
+ <el-table-column label="浜у搧鍚嶇О"
+ prop="productName"
+ show-overflow-tooltip />
+ <el-table-column label="瑙勬牸鍨嬪彿"
+ prop="model"
+ show-overflow-tooltip />
+ <el-table-column label="鍘傚"
+ prop="manufacturerId"
+ show-overflow-tooltip>
<template #default="scope">
- <el-button
- link
- type="primary"
- @click="handleSubtract(scope.row)"
- :disabled="
+ {{ getManufacturerName(scope.row.manufacturerId) }}
+ </template>
+ </el-table-column>
+ <el-table-column label="鏉ユ簮"
+ show-overflow-tooltip>
+ <template #default="scope">
+ {{ scope.row.qualifiedSourceText || scope.row.unQualifiedSourceText || "--" }}
+ </template>
+ </el-table-column>
+ <el-table-column label="鍗曚綅"
+ prop="unit"
+ show-overflow-tooltip />
+ <el-table-column label="鎵瑰彿"
+ prop="batchNo"
+ show-overflow-tooltip />
+ <el-table-column label="鍚堟牸搴撳瓨鏁伴噺"
+ prop="qualifiedQuantity"
+ show-overflow-tooltip />
+ <el-table-column label="涓嶅悎鏍煎簱瀛樻暟閲�"
+ prop="unQualifiedQuantity"
+ show-overflow-tooltip />
+ <el-table-column label="鍚堟牸鍐荤粨鏁伴噺"
+ prop="qualifiedLockedQuantity"
+ show-overflow-tooltip />
+ <el-table-column label="涓嶅悎鏍煎喕缁撴暟閲�"
+ prop="unQualifiedLockedQuantity"
+ show-overflow-tooltip />
+ <el-table-column label="搴撳瓨棰勮鏁伴噺"
+ prop="warnNum"
+ show-overflow-tooltip />
+ <el-table-column label="澶囨敞"
+ prop="remark"
+ show-overflow-tooltip />
+ <el-table-column label="鏈�杩戞洿鏂版椂闂�"
+ prop="updateTime"
+ show-overflow-tooltip />
+ <el-table-column fixed="right"
+ label="鎿嶄綔"
+ min-width="180"
+ align="center">
+ <template #default="scope">
+ <el-button link
+ type="primary"
+ @click="handleSubtract(scope.row)"
+ :disabled="
(scope.row.qualifiedUnLockedQuantity || 0) +
(scope.row.qualifiedPendingOutQuantity || 0) <=
0 &&
(scope.row.unQualifiedUnLockedQuantity || 0) +
(scope.row.unQualifiedPendingOutQuantity || 0) <=
0
- "
- >棰嗙敤</el-button
- >
- <el-button
- link
- type="primary"
- v-if="
+ ">棰嗙敤</el-button>
+ <el-button link
+ type="primary"
+ v-if="
scope.row.unQualifiedUnLockedQuantity > 0 ||
scope.row.qualifiedUnLockedQuantity > 0
"
- @click="handleFrozen(scope.row)"
- >鍐荤粨</el-button
- >
- <el-button
- link
- type="primary"
- v-if="
+ @click="handleFrozen(scope.row)">鍐荤粨</el-button>
+ <el-button link
+ type="primary"
+ v-if="
scope.row.qualifiedLockedQuantity > 0 ||
scope.row.unQualifiedLockedQuantity > 0
"
- @click="handleThaw(scope.row)"
- >瑙e喕</el-button
- >
+ @click="handleThaw(scope.row)">瑙e喕</el-button>
</template>
</el-table-column>
</el-table>
</div>
- <pagination
- v-show="total > 0"
- :total="total"
- layout="total, sizes, prev, pager, next, jumper"
- :page="page.current"
- :limit="page.size"
- @pagination="paginationChange"
- />
+ <pagination v-show="total > 0"
+ :total="total"
+ layout="total, sizes, prev, pager, next, jumper"
+ :page="page.current"
+ :limit="page.size"
+ @pagination="paginationChange" />
</div>
</el-dialog>
</template>
<script setup>
-import pagination from "@/components/PIMTable/Pagination.vue";
-import { computed, reactive, ref, watch } from "vue";
-import { getStockInventoryBatchNoQty } from "@/api/inventoryManagement/stockInventory.js";
+ import pagination from "@/components/PIMTable/Pagination.vue";
+ import { computed, reactive, ref, watch, onMounted } from "vue";
+ import { getStockInventoryBatchNoQty } from "@/api/inventoryManagement/stockInventory.js";
+ import { getManufacturerOptions } from "@/api/inspectionManagement/manufacturerManageFile.js";
-const props = defineProps({
- visible: {
- type: Boolean,
- required: true,
- },
- record: {
- type: Object,
- default: () => ({}),
- },
-});
+ const props = defineProps({
+ visible: {
+ type: Boolean,
+ required: true,
+ },
+ record: {
+ type: Object,
+ default: () => ({}),
+ },
+ });
-const emit = defineEmits(["update:visible", "subtract", "frozen", "thaw"]);
+ const emit = defineEmits(["update:visible", "subtract", "frozen", "thaw"]);
-const isShow = computed({
- get() {
- return props.visible;
- },
- set(val) {
- emit("update:visible", val);
- },
-});
+ const isShow = computed({
+ get() {
+ return props.visible;
+ },
+ set(val) {
+ emit("update:visible", val);
+ },
+ });
-const tableData = ref([]);
-const tableLoading = ref(false);
-const total = ref(0);
-const page = reactive({
- current: 1,
- size: 20,
-});
+ const tableData = ref([]);
+ const tableLoading = ref(false);
+ const manufacturerOptions = ref([]);
+ const total = ref(0);
+ const page = reactive({
+ current: 1,
+ size: 20,
+ });
-const getList = () => {
- if (!props.record?.productId || !props.record?.productModelId) {
- tableData.value = [];
- total.value = 0;
- return;
- }
+ const getManufacturerName = manufacturerId => {
+ return (
+ manufacturerOptions.value.find(item => item.id === manufacturerId)?.name ||
+ "--"
+ );
+ };
- tableLoading.value = true;
- getStockInventoryBatchNoQty({
- current: page.current,
- size: page.size,
- productId: props.record.productId,
- productModelId: props.record.productModelId,
- })
- .then((res) => {
- tableData.value = res.data?.records || [];
- total.value = res.data?.total || 0;
- })
- .finally(() => {
- tableLoading.value = false;
+ const fetchManufacturerOptions = () => {
+ getManufacturerOptions().then(res => {
+ manufacturerOptions.value = res.data || [];
});
-};
+ };
-const paginationChange = (obj) => {
- page.current = obj.page;
- page.size = obj.limit;
- getList();
-};
+ onMounted(() => {
+ fetchManufacturerOptions();
+ });
-const handleSubtract = (row) => {
- emit("subtract", row);
-};
-
-const handleFrozen = (row) => {
- emit("frozen", row);
-};
-
-const handleThaw = (row) => {
- emit("thaw", row);
-};
-
-const closeModal = () => {
- isShow.value = false;
- page.current = 1;
- page.size = 20;
- tableData.value = [];
- total.value = 0;
-};
-
-watch(
- () => props.visible,
- (visible) => {
- if (!visible) {
+ const getList = () => {
+ if (!props.record?.productId || !props.record?.productModelId) {
+ tableData.value = [];
+ total.value = 0;
return;
}
- page.current = 1;
+
+ tableLoading.value = true;
+ getStockInventoryBatchNoQty({
+ current: page.current,
+ size: page.size,
+ productId: props.record.productId,
+ productModelId: props.record.productModelId,
+ })
+ .then(res => {
+ tableData.value = res.data?.records || [];
+ total.value = res.data?.total || 0;
+ })
+ .finally(() => {
+ tableLoading.value = false;
+ });
+ };
+
+ const paginationChange = obj => {
+ page.current = obj.page;
+ page.size = obj.limit;
getList();
- },
- { immediate: true }
-);
+ };
+
+ const handleSubtract = row => {
+ emit("subtract", row);
+ };
+
+ const handleFrozen = row => {
+ emit("frozen", row);
+ };
+
+ const handleThaw = row => {
+ emit("thaw", row);
+ };
+
+ const closeModal = () => {
+ isShow.value = false;
+ page.current = 1;
+ page.size = 20;
+ tableData.value = [];
+ total.value = 0;
+ };
+
+ watch(
+ () => props.visible,
+ visible => {
+ if (!visible) {
+ return;
+ }
+ page.current = 1;
+ getList();
+ },
+ { immediate: true }
+ );
</script>
<style scoped lang="scss">
-.detail-content {
- display: flex;
- flex-direction: column;
- height: calc(100vh - 170px);
- min-height: 520px;
-}
+ .detail-content {
+ display: flex;
+ flex-direction: column;
+ height: calc(100vh - 170px);
+ min-height: 520px;
+ }
-.detail-table-wrapper {
- flex: 1;
- min-height: 0;
-}
+ .detail-table-wrapper {
+ flex: 1;
+ min-height: 0;
+ }
-:deep(.batch-no-qty-detail-dialog .el-dialog) {
- max-width: calc(100vw - 48px);
-}
+ :deep(.batch-no-qty-detail-dialog .el-dialog) {
+ max-width: calc(100vw - 48px);
+ }
-:deep(.batch-no-qty-detail-dialog .el-dialog__body) {
- padding-top: 12px;
-}
+ :deep(.batch-no-qty-detail-dialog .el-dialog__body) {
+ padding-top: 12px;
+ }
</style>
diff --git a/src/views/inventoryManagement/stockManagement/New.vue b/src/views/inventoryManagement/stockManagement/New.vue
index 065ce39..7ee84ea 100644
--- a/src/views/inventoryManagement/stockManagement/New.vue
+++ b/src/views/inventoryManagement/stockManagement/New.vue
@@ -33,8 +33,8 @@
disabled />
</el-form-item>
<el-form-item label="鍘傚"
- prop="manufacturer">
- <el-select v-model="formState.manufacturer"
+ prop="manufacturerId">
+ <el-select v-model="formState.manufacturerId"
placeholder="璇烽�夋嫨鍘傚"
clearable
filterable
@@ -78,9 +78,9 @@
<el-select v-model="formState.source"
placeholder="璇烽�夋嫨鏉ユ簮">
<el-option v-for="item in sourceOptions"
- :key="item"
- :label="item"
- :value="item" />
+ :key="item.value"
+ :label="item.label"
+ :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="搴撳瓨鏁伴噺"
@@ -155,7 +155,7 @@
productModelName: "",
unit: "",
type: undefined,
- manufacturer: "",
+ manufacturerId: "",
source: "",
qualitity: 0,
batchNo: null,
@@ -165,19 +165,24 @@
const sourceOptions = computed(() => {
if (formState.value.type === "qualified") {
- return ["閲囪喘鍏ュ簱", "鐢熶骇鍏ュ簱", "澶栧崗鍏ュ簱", "淇鍏ュ簱"];
+ return [
+ { value: "purchaseReceipt", label: "閲囪喘鍏ュ簱" },
+ { value: "productionReceipt", label: "鐢熶骇鍏ュ簱" },
+ { value: "outsourcedReceipt", label: "澶栧崗鍏ュ簱" },
+ { value: "repairReceipt", label: "淇鍏ュ簱" },
+ ];
} else if (formState.value.type === "waste") {
- return ["鐢熶骇浜х敓", "杩愯緭浜х敓", "瑁佸壀浜х敓"];
+ return [
+ { value: "prodGenerated", label: "鐢熶骇浜х敓" },
+ { value: "transGenerated", label: "杩愯緭浜х敓" },
+ { value: "cuttingGenerated", label: "瑁佸壀浜х敓" },
+ ];
}
return [];
});
const handleTypeChange = val => {
- if (val === "unqualified") {
- formState.value.source = "鑷畾涔�";
- } else {
- formState.value.source = "";
- }
+ formState.value.source = "";
};
const isShow = computed({
@@ -223,7 +228,7 @@
productModelName: "",
unit: "",
type: undefined,
- manufacturer: "",
+ manufacturerId: "",
source: "",
qualitity: 0,
batchNo: null,
--
Gitblit v1.9.3