From a563ea879ef5fb6897e76d2df661e465dce2ab9b Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 01 六月 2026 15:02:27 +0800
Subject: [PATCH] Merge branch 'dev_新疆_大罗素马铃薯new' of http://114.132.189.42:9002/r/product-inventory-management into dev_新疆_大罗素马铃薯new
---
src/views/salesManagement/salesLedger/index.vue | 125 ++++++++++++++++++++++++++---------------
1 files changed, 80 insertions(+), 45 deletions(-)
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 4c13d3d..3f467cd 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -419,6 +419,41 @@
</el-row>
<el-row :gutter="30">
<el-col :span="12">
+ <el-form-item label="閲囪喘鍚堝悓鍙凤細" prop="purchaseContractNumber">
+ <el-select
+ v-model="form.purchaseContractNumber"
+ placeholder="璇烽�夋嫨閲囪喘鍚堝悓鍙�"
+ clearable
+ filterable
+ style="width: 100%"
+ :disabled="operationType === 'view'"
+ >
+ <el-option
+ v-for="item in purchaseContractOptions"
+ :key="item.purchaseContractNumber"
+ :label="item.purchaseContractNumber + ' - ' + item.supplierName"
+ :value="item.purchaseContractNumber"
+ />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浜よ揣鏃ユ湡锛�" prop="entryDate">
+ <el-date-picker
+ style="width: 100%"
+ v-model="form.deliveryDate"
+ value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD"
+ type="date"
+ placeholder="璇烽�夋嫨"
+ clearable
+ :disabled="operationType === 'view'"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
<el-form-item label="褰曞叆浜猴細" prop="entryPerson">
<el-select
v-model="form.entryPerson"
@@ -444,22 +479,6 @@
<el-date-picker
style="width: 100%"
v-model="form.entryDate"
- value-format="YYYY-MM-DD"
- format="YYYY-MM-DD"
- type="date"
- placeholder="璇烽�夋嫨"
- clearable
- :disabled="operationType === 'view'"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="浜よ揣鏃ユ湡锛�" prop="entryDate">
- <el-date-picker
- style="width: 100%"
- v-model="form.deliveryDate"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
@@ -527,13 +546,14 @@
prop="taxExclusiveTotalPrice"
:formatter="formattedNumber"
/>
- <el-table-column label="鏄惁鐢熶骇" prop="isProduction" width="150">
+ <!-- 鏄惁鐢熶骇鍒楀凡闅愯棌锛岄粯璁ゅ�间负 false -->
+ <!-- <el-table-column label="鏄惁鐢熶骇" prop="isProduction" width="150">
<template #default="scope">
<el-tag :type="scope.row.isProduction ? 'success' : 'info'">
{{ scope.row.isProduction ? "鏄�" : "鍚�" }}
</el-tag>
</template>
- </el-table-column>
+ </el-table-column> -->
<el-table-column
fixed="right"
label="鎿嶄綔"
@@ -823,14 +843,15 @@
</el-select>
</el-form-item>
</el-col>
- <el-col :span="12">
+ <!-- 鏄惁鐢熶骇瀛楁宸查殣钘忥紝榛樿鍊间负 false -->
+ <!-- <el-col :span="12">
<el-form-item label="鏄惁鐢熶骇锛�" prop="isProduction">
<el-radio-group v-model="productForm.isProduction">
<el-radio label="鏄�" :value="true" />
<el-radio label="鍚�" :value="false" />
</el-radio-group>
</el-form-item>
- </el-col>
+ </el-col> -->
</el-row>
</el-form>
</FormDialog>
@@ -1062,6 +1083,15 @@
/>
</el-form-item>
</el-col>
+ <el-col :span="24" v-if="deliveryForm.type === '璐ц溅'">
+ <el-form-item label="鍑哄簱鎵瑰彿锛�" prop="outboundBatches">
+ <el-input
+ v-model="deliveryForm.outboundBatches"
+ placeholder="璇疯緭鍏ュ嚭搴撴壒鍙�"
+ clearable
+ />
+ </el-form-item>
+ </el-col>
<el-col :span="24" v-else>
<el-form-item label="蹇�掑叕鍙革細" prop="expressCompany">
<el-input
@@ -1180,6 +1210,7 @@
} from "@/api/salesManagement/salesLedger.js";
import { getStockInventoryByModelId } from "@/api/inventoryManagement/stockInventory.js";
import { modelList, productTreeList } from "@/api/basicData/product.js";
+import { purchaseList } from "@/api/procurementManagement/procurementLedger.js";
import useFormData from "@/hooks/useFormData.js";
import dayjs from "dayjs";
import FileUpload from "@/components/AttachmentUpload/file/index.vue";
@@ -1204,6 +1235,7 @@
const customerOption = ref([]);
const productOptions = ref([]);
const modelOptions = ref([]);
+const purchaseContractOptions = ref([]);
const tableLoading = ref(false);
const page = reactive({
current: 1,
@@ -1237,6 +1269,7 @@
executionDate: "",
hasProductionRecord: false,
createTime: "",
+ purchaseContractNumber: "",
},
rules: {
salesman: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
@@ -1264,7 +1297,7 @@
taxInclusiveTotalPrice: "",
taxExclusiveTotalPrice: "",
invoiceType: "",
- isProduction: false,
+ isProduction: false, // 榛樿鍊间负 false锛堝惁锛�
},
productRules: {
productCategory: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
@@ -1375,22 +1408,9 @@
const getDeliveryBatchNoList = async (productModelId) => {
if (!productModelId) return [];
const res = await getStockInventoryByModelId(productModelId);
- const rawList = Array.isArray(res?.data)
- ? res.data
- : res?.data?.records || res?.data?.rows || [];
+ const rawList = res.data || [];
const seenIds = new Set();
return rawList
- .filter((item) => {
- if (!item?.id || !item?.batchNo || seenIds.has(item.id)) {
- return false;
- }
- seenIds.add(item.id);
- return true;
- })
- .map((item) => ({
- ...item,
- deliveryQuantity: 0,
- }));
};
const validateDeliveryShippingCarNumber = (_rule, value, callback) => {
if (deliveryForm.value.type === "璐ц溅" && !value) {
@@ -1410,6 +1430,7 @@
expressCompany: "",
expressNumber: "",
type: "璐ц溅", // 璐ц溅, 蹇��
+ outboundBatches: "",
},
deliveryRules: {
shippingCarNumber: [
@@ -1742,6 +1763,8 @@
listCustomer({ current: -1, size: -1, type: 0 }).then((res) => {
customerOption.value = res.data.records;
});
+ // 鑾峰彇閲囪喘鍚堝悓鍒楄〃
+ await getPurchaseContractList();
form.value.entryPerson = userStore.id;
if (type === "add") {
// 鏂板鏃惰缃綍鍏ユ棩鏈熶负褰撳ぉ
@@ -1749,7 +1772,7 @@
// 绛捐鏃ユ湡榛樿涓哄綋澶�
form.value.executionDate = getCurrentDate();
// 鍒涘缓鏃堕棿榛樿涓哄綋澶�
- form.value.createTime = getCurrentDate();
+ form.value.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
// 榛樿鑷姩鐢熸垚閿�鍞悎鍚屽彿
form.value.autoGenerateContractNo = true;
} else {
@@ -1871,7 +1894,7 @@
taxInclusiveTotalPrice: taxInclusiveTotalPrice,
taxExclusiveTotalPrice: taxExclusiveTotalPrice,
invoiceType: "澧炴櫘绁�",
- isProduction: true,
+ isProduction: false, // 榛樿鍊间负 false锛堝惁锛�
productId: p.productId,
productModelId: p.productModelId,
};
@@ -1927,7 +1950,7 @@
productOperationType.value = type;
productForm.value = {};
if (type === "add") {
- productForm.value.isProduction = true;
+ productForm.value.isProduction = false; // 榛樿鍊间负 false锛堝惁锛�
}
proxy.resetForm("productFormRef");
if (type === "edit") {
@@ -1962,6 +1985,17 @@
getProductOptions();
}
productFormVisible.value = true;
+};
+
+// 鑾峰彇閲囪喘鍚堝悓鍒楄〃
+const getPurchaseContractList = async () => {
+ try {
+ const res = await purchaseList({ current: -1, size: -1 });
+ purchaseContractOptions.value = res.rows;
+ } catch (error) {
+ console.error("鑾峰彇閲囪喘鍚堝悓鍒楄〃澶辫触", error);
+ purchaseContractOptions.value = [];
+ }
};
// 鎻愪氦浜у搧琛ㄥ崟
const submitProduct = () => {
@@ -2155,7 +2189,7 @@
};
// 鎵撳嵃鍔熻兘
-const handlePrint = async () => {
+ const handlePrint = async () => {
if (selectedRows.value.length === 0) {
proxy.$modal.msgWarning("璇烽�夋嫨瑕佹墦鍗扮殑鏁版嵁");
return;
@@ -2512,11 +2546,7 @@
// 鏍煎紡鍖栨棩鏈�
const formatDate = (dateString) => {
if (!dateString) return getCurrentDate();
- const date = new Date(dateString);
- const year = date.getFullYear();
- const month = String(date.getMonth() + 1).padStart(2, "0");
- const day = String(date.getDate()).padStart(2, "0");
- return `${year}/${month}/${day}`;
+ return dayjs(dateString).format("YYYY/MM/DD HH:mm:ss");
};
// 鏍煎紡鍖栨棩鏈熸椂闂�
const formatDateTime = (date) => {
@@ -2860,6 +2890,7 @@
type: "璐ц溅",
batchNo: [],
batchNoList,
+ outboundBatches: "",
};
deliveryFileList.value = [];
deliveryFormVisible.value = true;
@@ -2902,6 +2933,10 @@
shippingCarNumber:
deliveryForm.value.type === "璐ц溅"
? deliveryForm.value.shippingCarNumber
+ : "",
+ outboundBatches:
+ deliveryForm.value.type === "璐ц溅"
+ ? deliveryForm.value.outboundBatches
: "",
expressCompany:
deliveryForm.value.type === "蹇��"
@@ -3179,4 +3214,4 @@
page-break-after: avoid;
}
}
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.3