From b8ee898cfa6e3fe1e26930604b53696ba7b6003a Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 03 七月 2026 13:01:53 +0800
Subject: [PATCH] 销售退货新增页面基本信息加上发货类型下拉框,可选货车或者快递。货车 展示发货车牌号,选择快递则展示快递公司,快递单号。对应的列表也要加上相应的字段,采购退货也是一样加下
---
src/views/salesManagement/returnOrder/components/formDia.vue | 56 +++++++++++
src/views/salesManagement/returnOrder/components/detailDia.vue | 12 ++
src/views/procurementManagement/purchaseReturnOrder/New.vue | 78 +++++++++++++++
src/views/procurementManagement/purchaseReturnOrder/index.vue | 38 +++++++
src/views/salesManagement/returnOrder/index.vue | 16 +++
src/views/financialManagement/payable/purchaseReturn.vue | 24 ++++
src/views/financialManagement/receivable/salesReturn.vue | 24 ++++
7 files changed, 246 insertions(+), 2 deletions(-)
diff --git a/src/views/financialManagement/payable/purchaseReturn.vue b/src/views/financialManagement/payable/purchaseReturn.vue
index 4171df2..5c274ac 100644
--- a/src/views/financialManagement/payable/purchaseReturn.vue
+++ b/src/views/financialManagement/payable/purchaseReturn.vue
@@ -85,6 +85,30 @@
{ label: "閫�璐у崟鍙�", prop: "returnNo", minWidth: "150" },
{ label: "渚涘簲鍟�", prop: "supplierName", minWidth: "180" },
{ label: "鍏宠仈鍏ュ簱鍗曞彿", prop: "inboundBatches", minWidth: "150" },
+ {
+ label: "鍙戣揣绫诲瀷",
+ prop: "shippingType",
+ minWidth: "110",
+ formatData: (val) => ({ 1: "璐ц溅", 2: "蹇��" }[String(val)] || "--"),
+ },
+ {
+ label: "鍙戣揣杞︾墝鍙�",
+ prop: "truckPlateNo",
+ minWidth: "140",
+ formatData: (_val, row) => (String(row?.shippingType) === "1" ? row?.truckPlateNo || "--" : "--"),
+ },
+ {
+ label: "蹇�掑叕鍙�",
+ prop: "expressCompany",
+ minWidth: "140",
+ formatData: (_val, row) => (String(row?.shippingType) === "2" ? row?.expressCompany || "--" : "--"),
+ },
+ {
+ label: "蹇�掑崟鍙�",
+ prop: "expressNo",
+ minWidth: "150",
+ formatData: (_val, row) => (String(row?.shippingType) === "2" ? row?.expressNo || "--" : "--"),
+ },
{ label: "閫�璐ф棩鏈�", prop: "preparedAt", minWidth: "170" },
{
label: "閫�娆炬�婚",
diff --git a/src/views/financialManagement/receivable/salesReturn.vue b/src/views/financialManagement/receivable/salesReturn.vue
index afe363c..85153bf 100644
--- a/src/views/financialManagement/receivable/salesReturn.vue
+++ b/src/views/financialManagement/receivable/salesReturn.vue
@@ -77,6 +77,30 @@
{ label: "閫�璐у崟鍙�", prop: "returnNo", minWidth: "150" },
{ label: "瀹㈡埛鍚嶇О", prop: "customerName", minWidth: "180" },
{ label: "鍏宠仈鍙戣揣鍗曞彿", prop: "shippingNo", minWidth: "150" },
+ {
+ label: "鍙戣揣绫诲瀷",
+ prop: "shippingType",
+ minWidth: "110",
+ formatData: (val) => ({ 1: "璐ц溅", 2: "蹇��" }[String(val)] || "--"),
+ },
+ {
+ label: "鍙戣揣杞︾墝鍙�",
+ prop: "truckPlateNo",
+ minWidth: "140",
+ formatData: (_val, row) => (String(row?.shippingType) === "1" ? row?.truckPlateNo || "--" : "--"),
+ },
+ {
+ label: "蹇�掑叕鍙�",
+ prop: "expressCompany",
+ minWidth: "140",
+ formatData: (_val, row) => (String(row?.shippingType) === "2" ? row?.expressCompany || "--" : "--"),
+ },
+ {
+ label: "蹇�掑崟鍙�",
+ prop: "expressNo",
+ minWidth: "150",
+ formatData: (_val, row) => (String(row?.shippingType) === "2" ? row?.expressNo || "--" : "--"),
+ },
{ label: "閫�璐ф棩鏈�", prop: "makeTime", minWidth: "170" },
{
label: "閫�娆炬�婚",
diff --git a/src/views/procurementManagement/purchaseReturnOrder/New.vue b/src/views/procurementManagement/purchaseReturnOrder/New.vue
index 0453310..186a552 100644
--- a/src/views/procurementManagement/purchaseReturnOrder/New.vue
+++ b/src/views/procurementManagement/purchaseReturnOrder/New.vue
@@ -58,6 +58,63 @@
</el-form-item>
<el-form-item
+ label="鍙戣揣绫诲瀷"
+ prop="shippingType"
+ :rules="[
+ {
+ required: true,
+ message: '璇烽�夋嫨鍙戣揣绫诲瀷',
+ trigger: 'change',
+ }
+ ]"
+ >
+ <el-select
+ v-model="formState.shippingType"
+ placeholder="璇烽�夋嫨鍙戣揣绫诲瀷"
+ style="width: 240px"
+ @change="handleShippingTypeChange"
+ >
+ <el-option label="璐ц溅" :value="1" />
+ <el-option label="蹇��" :value="2" />
+ </el-select>
+ </el-form-item>
+
+ <el-form-item
+ v-if="formState.shippingType === 1"
+ label="鍙戣揣杞︾墝鍙�"
+ prop="truckPlateNo"
+ >
+ <el-input
+ v-model="formState.truckPlateNo"
+ placeholder="璇疯緭鍏ュ彂璐ц溅鐗屽彿"
+ style="width: 240px"
+ />
+ </el-form-item>
+
+ <template v-else-if="formState.shippingType === 2">
+ <el-form-item
+ label="蹇�掑叕鍙�"
+ prop="expressCompany"
+ >
+ <el-input
+ v-model="formState.expressCompany"
+ placeholder="璇疯緭鍏ュ揩閫掑叕鍙�"
+ style="width: 240px"
+ />
+ </el-form-item>
+ <el-form-item
+ label="蹇�掑崟鍙�"
+ prop="expressNo"
+ >
+ <el-input
+ v-model="formState.expressNo"
+ placeholder="璇疯緭鍏ュ揩閫掑崟鍙�"
+ style="width: 240px"
+ />
+ </el-form-item>
+ </template>
+
+ <el-form-item
label="渚涘簲鍟嗗悕绉�"
prop="supplierId"
:rules="[
@@ -458,6 +515,10 @@
no: '',
isDefaultNo: true,
returnType: 0,
+ shippingType: undefined,
+ truckPlateNo: '',
+ expressCompany: '',
+ expressNo: '',
incomeType: undefined,
remark: '',
supplierId: undefined,
@@ -503,6 +564,19 @@
const purchaseLedgerOptions = ref([])
// 鏄惁灞曠ず浜у搧鍒楄〃鏁版嵁
const isShowProductsModal = ref(false)
+
+const handleShippingTypeChange = (val) => {
+ if (val === 1) {
+ formState.value.expressCompany = '';
+ formState.value.expressNo = '';
+ } else if (val === 2) {
+ formState.value.truckPlateNo = '';
+ } else {
+ formState.value.truckPlateNo = '';
+ formState.value.expressCompany = '';
+ formState.value.expressNo = '';
+ }
+};
const isShow = computed({
get() {
@@ -576,6 +650,10 @@
}
const closeModal = () => {
+ formState.value.shippingType = undefined;
+ formState.value.truckPlateNo = '';
+ formState.value.expressCompany = '';
+ formState.value.expressNo = '';
isShow.value = false;
};
diff --git a/src/views/procurementManagement/purchaseReturnOrder/index.vue b/src/views/procurementManagement/purchaseReturnOrder/index.vue
index df2c137..fbb5414 100644
--- a/src/views/procurementManagement/purchaseReturnOrder/index.vue
+++ b/src/views/procurementManagement/purchaseReturnOrder/index.vue
@@ -89,6 +89,20 @@
<el-descriptions-item label="閫�鏂欎汉">{{
detailData.returnUserName || "--"
}}</el-descriptions-item>
+ <el-descriptions-item label="鍙戣揣绫诲瀷">{{
+ getShippingTypeLabel(detailData.shippingType)
+ }}</el-descriptions-item>
+ <el-descriptions-item v-if="String(detailData.shippingType) === '1'" label="鍙戣揣杞︾墝鍙�">{{
+ detailData.truckPlateNo || "--"
+ }}</el-descriptions-item>
+ <template v-else-if="String(detailData.shippingType) === '2'">
+ <el-descriptions-item label="蹇�掑叕鍙�">{{
+ detailData.expressCompany || "--"
+ }}</el-descriptions-item>
+ <el-descriptions-item label="蹇�掑崟鍙�">{{
+ detailData.expressNo || "--"
+ }}</el-descriptions-item>
+ </template>
<el-descriptions-item label="鏁村崟鎶樻墸棰�">{{
formatAmount(detailData.totalDiscountAmount)
}}</el-descriptions-item>
@@ -290,6 +304,15 @@
prop: "returnUserName",
width: 110,
},
+ {
+ label: "鍙戣揣绫诲瀷",
+ prop: "shippingType",
+ width: 100,
+ formatData: (val) => getShippingTypeLabel(val),
+ },
+ { label: "鍙戣揣杞︾墝鍙�", prop: "truckPlateDisplay", width: 140 },
+ { label: "蹇�掑叕鍙�", prop: "expressCompanyDisplay", width: 140 },
+ { label: "蹇�掑崟鍙�", prop: "expressNoDisplay", width: 150 },
{
label: "鏁村崟鎶樻墸棰�",
@@ -423,7 +446,12 @@
findPurchaseReturnOrderListPage({ ...searchForm.value, ...page })
.then((res) => {
tableLoading.value = false;
- tableData.value = res.data.records;
+ tableData.value = (res.data.records || []).map((row) => ({
+ ...row,
+ truckPlateDisplay: String(row?.shippingType) === "1" ? (row?.truckPlateNo || "--") : "--",
+ expressCompanyDisplay: String(row?.shippingType) === "2" ? (row?.expressCompany || "--") : "--",
+ expressNoDisplay: String(row?.shippingType) === "2" ? (row?.expressNo || "--") : "--",
+ }));
page.total = res.data.total;
})
.catch(() => {
@@ -451,6 +479,14 @@
);
};
+const getShippingTypeLabel = (value) => {
+ const shippingTypeMap = {
+ 1: "璐ц溅",
+ 2: "蹇��",
+ };
+ return shippingTypeMap[String(value)] || shippingTypeMap[value] || "--";
+};
+
const formatAmount = (value) => {
if (value === null || value === undefined || value === "") {
return "--";
diff --git a/src/views/salesManagement/returnOrder/components/detailDia.vue b/src/views/salesManagement/returnOrder/components/detailDia.vue
index 60b485b..a09149f 100644
--- a/src/views/salesManagement/returnOrder/components/detailDia.vue
+++ b/src/views/salesManagement/returnOrder/components/detailDia.vue
@@ -11,6 +11,12 @@
<el-descriptions-item label="閿�鍞崟鍙�">{{ detail.salesContractNo }}</el-descriptions-item>
<el-descriptions-item label="涓氬姟鍛�">{{ detail.salesman }}</el-descriptions-item>
<el-descriptions-item label="鍏宠仈鍙戣揣鍗曞彿">{{ detail.shippingNo }}</el-descriptions-item>
+ <el-descriptions-item label="鍙戣揣绫诲瀷">{{ getShippingTypeText(detail.shippingType) }}</el-descriptions-item>
+ <el-descriptions-item v-if="String(detail.shippingType) === '1'" label="鍙戣揣杞︾墝鍙�">{{ detail.truckPlateNo || "--" }}</el-descriptions-item>
+ <template v-else-if="String(detail.shippingType) === '2'">
+ <el-descriptions-item label="蹇�掑叕鍙�">{{ detail.expressCompany || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="蹇�掑崟鍙�">{{ detail.expressNo || "--" }}</el-descriptions-item>
+ </template>
<!-- <el-descriptions-item label="椤圭洰鍚嶇О">{{ detail.projectName }}</el-descriptions-item> -->
<el-descriptions-item label="鍒跺崟浜�">{{ detail.maker }}</el-descriptions-item>
<el-descriptions-item label="鍒跺崟鏃堕棿">{{ detail.makeTime }}</el-descriptions-item>
@@ -41,6 +47,10 @@
const detail = ref({});
const tableData = ref([]);
const availableProducts = ref([]);
+const shippingTypeMap = {
+ 1: "璐ц溅",
+ 2: "蹇��",
+};
const sameKey = (a, b) => a != null && b != null && String(a) === String(b);
@@ -111,6 +121,8 @@
return Math.max(total - un, 0);
};
+const getShippingTypeText = (value) => shippingTypeMap[String(value)] || shippingTypeMap[value] || "--";
+
/** 璇︽儏琛ㄧ敤 productName / model锛涘悎骞舵椂鍕胯绌轰覆鐩栨帀鍑哄簱琛屽瓧娈� */
const mergeDetailProductRow = (product, normalized) => {
const row = { ...product, ...normalized };
diff --git a/src/views/salesManagement/returnOrder/components/formDia.vue b/src/views/salesManagement/returnOrder/components/formDia.vue
index 40c98dc..4fc0859 100644
--- a/src/views/salesManagement/returnOrder/components/formDia.vue
+++ b/src/views/salesManagement/returnOrder/components/formDia.vue
@@ -69,6 +69,31 @@
</el-form-item>
</el-col>
<el-col :span="4">
+ <el-form-item label="鍙戣揣绫诲瀷锛�" prop="shippingType">
+ <el-select v-model="form.shippingType" placeholder="璇烽�夋嫨鍙戣揣绫诲瀷" @change="handleShippingTypeChange">
+ <el-option label="璐ц溅" :value="1" />
+ <el-option label="蹇��" :value="2" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="4" v-if="form.shippingType === 1">
+ <el-form-item label="鍙戣揣杞︾墝鍙凤細" prop="truckPlateNo">
+ <el-input v-model="form.truckPlateNo" placeholder="璇疯緭鍏ュ彂璐ц溅鐗屽彿" />
+ </el-form-item>
+ </el-col>
+ <template v-else-if="form.shippingType === 2">
+ <el-col :span="4">
+ <el-form-item label="蹇�掑叕鍙革細" prop="expressCompany">
+ <el-input v-model="form.expressCompany" placeholder="璇疯緭鍏ュ揩閫掑叕鍙�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="4">
+ <el-form-item label="蹇�掑崟鍙凤細" prop="expressNo">
+ <el-input v-model="form.expressNo" placeholder="璇疯緭鍏ュ揩閫掑崟鍙�" />
+ </el-form-item>
+ </el-col>
+ </template>
+ <el-col :span="4">
<el-form-item label="閫�娆炬�婚锛�" prop="refundAmount">
<el-input v-model="form.refundAmount" disabled placeholder="鑷姩璁$畻" />
</el-form-item>
@@ -186,6 +211,10 @@
returnNo: "",
customerId: "",
shippingId: "",
+ shippingType: "",
+ truckPlateNo: "",
+ expressCompany: "",
+ expressNo: "",
projectId: "",
maker: "",
makeTime: "",
@@ -203,6 +232,7 @@
}],
customerId: [{ required: true, message: "璇烽�夋嫨瀹㈡埛", trigger: "change" }],
shippingId: [{ required: true, message: "璇烽�夋嫨鍏宠仈鍑哄簱鍗曞彿", trigger: "change" }],
+ shippingType: [{ required: true, message: "璇烽�夋嫨鍙戣揣绫诲瀷", trigger: "change" }],
}
});
const { form, rules } = toRefs(data);
@@ -491,6 +521,10 @@
returnNo: "",
customerId: "",
shippingId: "",
+ shippingType: "",
+ truckPlateNo: "",
+ expressCompany: "",
+ expressNo: "",
projectId: "",
maker: "",
makeTime: "",
@@ -537,6 +571,11 @@
const payload = { ...form.value, returnSaleProducts };
delete payload.returnNoCheckbox;
if (operationType.value === "add" && form.value.returnNoCheckbox) delete payload.returnNo;
+ if (payload.shippingType !== 1) payload.truckPlateNo = "";
+ if (payload.shippingType !== 2) {
+ payload.expressCompany = "";
+ payload.expressNo = "";
+ }
if (operationType.value === "add") {
returnManagementAdd(payload).then(() => {
proxy.$modal.msgSuccess("鏂板鎴愬姛");
@@ -560,6 +599,10 @@
returnNo: "",
customerId: "",
shippingId: "",
+ shippingType: "",
+ truckPlateNo: "",
+ expressCompany: "",
+ expressNo: "",
projectId: "",
maker: "",
makeTime: "",
@@ -603,6 +646,19 @@
formRef.value?.validateField('returnNo');
};
+const handleShippingTypeChange = (val) => {
+ if (val === 1) {
+ form.value.expressCompany = "";
+ form.value.expressNo = "";
+ } else if (val === 2) {
+ form.value.truckPlateNo = "";
+ } else {
+ form.value.truckPlateNo = "";
+ form.value.expressCompany = "";
+ form.value.expressNo = "";
+ }
+};
+
const customerNameChange = async (val, clearDownstream = true) => {
// val is customerId now
if (clearDownstream) {
diff --git a/src/views/salesManagement/returnOrder/index.vue b/src/views/salesManagement/returnOrder/index.vue
index e190901..1bcda4d 100644
--- a/src/views/salesManagement/returnOrder/index.vue
+++ b/src/views/salesManagement/returnOrder/index.vue
@@ -123,6 +123,15 @@
{ label: "閿�鍞崟鍙�", prop: "salesContractNo", minWidth: 160 },
{ label: "涓氬姟鍛�", prop: "salesman", minWidth: 120 },
{ label: "鍏宠仈鍙戣揣鍗曞彿", prop: "shippingNo", minWidth: 170 },
+ {
+ label: "鍙戣揣绫诲瀷",
+ prop: "shippingType",
+ minWidth: 100,
+ formatData: (val) => ({ 1: "璐ц溅", 2: "蹇��" }[String(val)] || "--"),
+ },
+ { label: "鍙戣揣杞︾墝鍙�", prop: "truckPlateDisplay", minWidth: 140 },
+ { label: "蹇�掑叕鍙�", prop: "expressCompanyDisplay", minWidth: 140 },
+ { label: "蹇�掑崟鍙�", prop: "expressNoDisplay", minWidth: 150 },
{ label: "椤圭洰鍚嶇О", prop: "projectName", minWidth: 180 },
{ label: "鍒跺崟浜�", prop: "maker", minWidth: 120 },
{
@@ -168,7 +177,12 @@
tableLoading.value = true;
returnManagementList({ ...searchForm.value, ...page }).then(res => {
tableLoading.value = false;
- tableData.value = res?.data?.records || [];
+ tableData.value = (res?.data?.records || []).map((row) => ({
+ ...row,
+ truckPlateDisplay: String(row?.shippingType) === "1" ? (row?.truckPlateNo || "--") : "--",
+ expressCompanyDisplay: String(row?.shippingType) === "2" ? (row?.expressCompany || "--") : "--",
+ expressNoDisplay: String(row?.shippingType) === "2" ? (row?.expressNo || "--") : "--",
+ }));
page.total = res?.data?.total || 0;
}).finally(() => tableLoading.value = false);
};
--
Gitblit v1.9.3