From 7ec0b6ddb14897fa47769b14cc4cb36049bb5ebb Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 22 六月 2026 09:11:53 +0800
Subject: [PATCH] 1、报价系统中,需将付款方式改为选择项(现金、电汇、微信、支付宝等),不能做成手工输入;4、退货单未明确退货规则;5、客户往来信息过于简单,只做总结性信息,无多维度明细信息;
---
src/views/salesManagement/returnOrder/components/formDia.vue | 139 ++++++++++++++++++++++++++++++++++++++++------
1 files changed, 120 insertions(+), 19 deletions(-)
diff --git a/src/views/salesManagement/returnOrder/components/formDia.vue b/src/views/salesManagement/returnOrder/components/formDia.vue
index 0ef4754..1f59c96 100644
--- a/src/views/salesManagement/returnOrder/components/formDia.vue
+++ b/src/views/salesManagement/returnOrder/components/formDia.vue
@@ -32,14 +32,32 @@
</el-form-item>
</el-col>
<el-col :span="4">
- <el-form-item label="鍏宠仈鎵瑰彿锛�" prop="shippingId">
- <el-select v-model="form.shippingId" filterable placeholder="璇烽�夋嫨鍏宠仈鎵瑰彿" @change="outboundNoChange">
+ <el-form-item label="鍙戣揣淇℃伅锛�" prop="shippingId">
+ <el-select
+ v-model="form.shippingId"
+ filterable
+ placeholder="璇烽�夋嫨鍙戣揣淇℃伅"
+ :disabled="!form.customerId"
+ @change="outboundNoChange"
+ >
<el-option
v-for="item in outboundOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
+ :key="item.shippingId"
+ :label="item.displayLabel"
+ :value="item.shippingId"
+ :disabled="item.returnStatus === '鍏ㄩ儴閫�璐�'"
+ >
+ <div style="display: flex; justify-content: space-between; align-items: center;">
+ <span>{{ item.displayLabel }}</span>
+ <el-tag
+ size="small"
+ :type="getReturnStatusType(item.returnStatus)"
+ style="margin-left: 8px;"
+ >
+ {{ item.returnStatus || '鏃犻��璐�' }}
+ </el-tag>
+ </div>
+ </el-option>
</el-select>
</el-form-item>
</el-col>
@@ -71,6 +89,39 @@
<el-col :span="4">
<el-form-item label="閫�娆炬�婚锛�" prop="refundAmount">
<el-input v-model="form.refundAmount" disabled placeholder="鑷姩璁$畻" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <!-- 鍙戣揣淇℃伅鍥炴樉 -->
+ <el-row :gutter="30" v-if="form.shippingId">
+ <el-col :span="4">
+ <el-form-item label="鎵规鍙凤細">
+ <el-input v-model="form.batchNo" disabled placeholder="--" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="4">
+ <el-form-item label="杞︾墝鍙凤細">
+ <el-input v-model="form.shippingCarNumber" disabled placeholder="--" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="4">
+ <el-form-item label="浜у搧鍚嶇О锛�">
+ <el-input v-model="form.productName" disabled placeholder="--" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="4">
+ <el-form-item label="瑙勬牸鍨嬪彿锛�">
+ <el-input v-model="form.model" disabled placeholder="--" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="4">
+ <el-form-item label="鍙戣揣鏁伴噺锛�">
+ <el-input v-model="form.shippingQuantity" disabled placeholder="--" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="4">
+ <el-form-item label="閿�鍞悎鍚屽彿锛�">
+ <el-input v-model="form.salesContractNo" disabled placeholder="--" />
</el-form-item>
</el-col>
</el-row>
@@ -172,7 +223,7 @@
<script setup>
import { reactive, ref, toRefs, getCurrentInstance } from "vue";
-import { returnManagementAdd, returnManagementUpdate, returnManagementGetByShippingId, getSalesLedger, returnManagementGetById } from "@/api/salesManagement/returnOrder.js";
+import { returnManagementAdd, returnManagementUpdate, returnManagementGetByShippingId, getSalesLedger, returnManagementGetById, getShippingInfoForReturn } from "@/api/salesManagement/returnOrder.js";
import useUserStore from "@/store/modules/user.js";
import { userListNoPageByTenantId } from "@/api/system/user.js";
import { listProject } from "@/api/projectManagement/project.js";
@@ -197,6 +248,14 @@
status: 0,
returnReason: "",
refundAmount: "",
+ // 鍙戣揣淇℃伅鍥炴樉瀛楁
+ batchNo: "",
+ shippingCarNumber: "",
+ productName: "",
+ model: "",
+ shippingQuantity: null,
+ salesContractNo: "",
+ shippingNo: "",
},
rules: {
returnNo: [{
@@ -207,7 +266,7 @@
}, trigger: "blur"
}],
customerId: [{ required: true, message: "璇烽�夋嫨瀹㈡埛", trigger: "change" }],
- shippingId: [{ required: true, message: "璇烽�夋嫨鍏宠仈鍑哄簱鍗曞彿", trigger: "change" }],
+ shippingId: [{ required: true, message: "璇烽�夋嫨鍙戣揣淇℃伅", trigger: "change" }],
}
});
const { form, rules } = toRefs(data);
@@ -501,6 +560,13 @@
status: 0,
returnReason: "",
refundAmount: "",
+ batchNo: "",
+ shippingCarNumber: "",
+ productName: "",
+ model: "",
+ shippingQuantity: null,
+ salesContractNo: "",
+ shippingNo: "",
});
form.value.maker = userStore.nickName || userStore.name || "";
form.value.makeTime = new Date().toISOString().replace('T', ' ').split('.')[0]; // Default to now
@@ -584,33 +650,68 @@
if (clearDownstream) {
form.value.shippingId = "";
outboundOptions.value = [];
+ clearShippingInfo();
}
-
- // Find customer name for getSalesLedger if it requires name
+
+ // Find customer name for API
const customer = customerNameOptions.value.find(c => c.id === val);
if (!customer) return;
- // Assuming getSalesLedger takes customerName. If it takes ID, adjust accordingly.
- // Previous code used customerName. Let's try passing customerName.
- getSalesLedger({
- customerName: customer.label,
+ // 浣跨敤鏂版帴鍙� getShippingInfoForReturn
+ getShippingInfoForReturn({
+ customerName: customer.label,
}).then(res => {
if(res.code === 200){
- outboundOptions.value = res.data.map(item => ({
- label: item.shippingNo, // Or whatever the outbound number field is
- value: item.id,
- }))
+ outboundOptions.value = res.data || [];
}
})
};
+// 娓呯┖鍙戣揣淇℃伅
+const clearShippingInfo = () => {
+ form.value.batchNo = "";
+ form.value.shippingCarNumber = "";
+ form.value.productName = "";
+ form.value.model = "";
+ form.value.shippingQuantity = null;
+ form.value.salesContractNo = "";
+ form.value.shippingNo = "";
+};
+
+// 鑾峰彇閫�璐х姸鎬佹爣绛剧被鍨�
+const getReturnStatusType = (returnStatus) => {
+ const statusMap = {
+ '鏃犻��璐�': 'success',
+ '閮ㄥ垎閫�璐�': 'warning',
+ '鍏ㄩ儴閫�璐�': 'danger',
+ };
+ return statusMap[returnStatus] || 'info';
+};
+
const outboundNoChange = async (val, clearTable = true) => {
// val is shippingId
+ // 浠� outboundOptions 涓壘鍒伴�変腑鐨勫彂璐т俊鎭�
+ const selected = outboundOptions.value.find(item => item.shippingId === val);
+
+ if (selected) {
+ // 鍥炴樉鏁版嵁
+ form.value.batchNo = selected.batchNo || "";
+ form.value.shippingCarNumber = selected.shippingCarNumber || "";
+ form.value.productName = selected.productName || "";
+ form.value.model = selected.model || "";
+ form.value.shippingQuantity = selected.shippingQuantity || 0;
+ form.value.salesContractNo = selected.salesContractNo || "";
+ form.value.shippingNo = selected.shippingNo || "";
+ } else {
+ clearShippingInfo();
+ }
+
+ // 鑾峰彇浜у搧鍒楄〃
let res = await returnManagementGetByShippingId({ shippingId: val });
if(res.code === 200){
// If backend returns project info, set it
if (res.data.projectId) form.value.projectId = res.data.projectId;
-
+
availableProducts.value = mergeShippingProductLists(res.data);
if (clearTable) tableData.value = [];
}
--
Gitblit v1.9.3