From 8e9bc97e709f7e49586dffb9cc3d2dac4cfef4ca Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 26 三月 2026 10:13:02 +0800
Subject: [PATCH] 进销存升级 1.语法修改
---
src/views/customerService/feedbackRegistration/components/formDia.vue | 93 +++++++++++++++++++++++++++++++++-------------
1 files changed, 66 insertions(+), 27 deletions(-)
diff --git a/src/views/customerService/feedbackRegistration/components/formDia.vue b/src/views/customerService/feedbackRegistration/components/formDia.vue
index 2af71da..93e5c6b 100644
--- a/src/views/customerService/feedbackRegistration/components/formDia.vue
+++ b/src/views/customerService/feedbackRegistration/components/formDia.vue
@@ -106,6 +106,11 @@
:column="tableColumn"
:tableData="tableData"
>
+ <template #approveStatus="{ row }">
+ <el-tag :type="getApproveStatusType(row)" size="small">
+ {{ getApproveStatusText(row) }}
+ </el-tag>
+ </template>
<template #shippingStatus="{ row }">
<el-tag :type="getShippingStatusType(row)" size="small">
{{ getShippingStatusText(row) }}
@@ -185,6 +190,31 @@
const serviceTypeOptions = computed(() => post_sale_waiting_list?.value || []);
const urgencyOptions = computed(() => degree_of_urgency?.value || []);
+const getProductRowId = (row) => {
+ return row?.id ?? row?.productModelId ?? row?.modelId ?? `${row?.productCategory || row?.productName || ""}-${row?.specificationModel || row?.model || ""}-${row?.unit || ""}`
+}
+
+const normalizeProductRow = (row) => {
+ return {
+ ...row,
+ id: getProductRowId(row),
+ productCategory: row?.productCategory ?? row?.productName ?? '',
+ specificationModel: row?.specificationModel ?? row?.model ?? '',
+ unit: row?.unit ?? '',
+ approveStatus: row?.approveStatus ?? null,
+ shippingStatus: row?.shippingStatus ?? '',
+ expressCompany: row?.expressCompany ?? '',
+ expressNumber: row?.expressNumber ?? '',
+ shippingCarNumber: row?.shippingCarNumber ?? '',
+ shippingDate: row?.shippingDate ?? '',
+ quantity: row?.quantity ?? 0,
+ taxRate: row?.taxRate ?? 0,
+ taxInclusiveUnitPrice: row?.taxInclusiveUnitPrice ?? 0,
+ taxInclusiveTotalPrice: row?.taxInclusiveTotalPrice ?? 0,
+ taxExclusiveTotalPrice: row?.taxExclusiveTotalPrice ?? 0,
+ }
+}
+
const tableColumn = ref([
{ label: "浜у搧澶х被", prop: "productCategory" },
{ label: "瑙勬牸鍨嬪彿", prop: "specificationModel" },
@@ -194,9 +224,8 @@
prop: "approveStatus",
width: 100,
align: "center",
- dataType: "tag",
- formatData: (v) => (v === 1 ? "鍏呰冻" : "涓嶈冻"),
- formatType: (v) => (v === 1 ? "success" : "danger"),
+ dataType: "slot",
+ slot: "approveStatus",
},
{
label: "鍙戣揣鐘舵��",
@@ -239,7 +268,7 @@
name: "鍒犻櫎",
type: "text",
clickFun: (row) => {
- tableData.value = tableData.value.filter(i => i.id !== row.id)
+ tableData.value = tableData.value.filter(i => getProductRowId(i) !== getProductRowId(row))
},
},
@@ -251,37 +280,21 @@
const isShowProductSelectDialog = ref(false)
const handleSelectProducts = (rows) => {
if (!Array.isArray(rows)) return
- const existingIds = new Set(tableData.value.map(i => i.id))
+ const existingIds = new Set(tableData.value.map(i => String(getProductRowId(i))))
const mapped = rows
- .filter(r => !existingIds.has(r.id))
- .map(r => ({
- id: r.id,
- productCategory: r.productName,
- specificationModel: r.model,
- unit: r.unit || '',
- approveStatus: null,
- shippingStatus: '',
- expressCompany: '',
- expressNumber: '',
- shippingCarNumber: '',
- shippingDate: '',
- quantity: 0,
- taxRate: 0,
- taxInclusiveUnitPrice: 0,
- taxInclusiveTotalPrice: 0,
- taxExclusiveTotalPrice: 0,
- }))
+ .map(normalizeProductRow)
+ .filter(r => !existingIds.has(String(getProductRowId(r))))
tableData.value = tableData.value.concat(mapped)
}
const currentSelectedProductIds = computed(() => {
- return tableData.value.map(item => item.id)
+ return tableData.value.map(item => getProductRowId(item)).filter(item => item !== undefined && item !== null && item !== '')
})
const associatedSalesOrderNumberChange = () => {
const opt = associatedSalesOrderNumberOptions.value.find(
(item) => item.value === form.value.salesContractNo
)
- tableData.value = opt?.productData || []
+ tableData.value = (opt?.productData || []).map(normalizeProductRow)
form.value.salesLedgerId = opt?.id || null
}
@@ -291,13 +304,19 @@
const opt = associatedSalesOrderNumberOptions.value.find(
(item) => item.value === form.value.salesContractNo
)
- return opt?.productData || []
+ return (opt?.productData || []).map(normalizeProductRow)
})
const customerNameChange = (val) => {
+ form.value.salesContractNo = "";
+ form.value.salesLedgerId = null;
+ tableData.value = [];
+ associatedSalesOrderNumberOptions.value = [];
const opt = customerNameOptions.value.find(item => item.value === val);
if (opt) {
form.value.customerId = opt.id;
+ } else {
+ form.value.customerId = null;
}
getSalesLedger({
customerName: form.value.customerName
@@ -311,6 +330,22 @@
}))
}
})
+}
+
+const getApproveStatusText = (row) => {
+ if (!row) return '涓嶈冻'
+ if (row.approveStatus === 1 && (!row.shippingDate || !row.shippingCarNumber)) {
+ return '鍏呰冻'
+ }
+ if (row.approveStatus === 0 && (row.shippingDate || row.shippingCarNumber)) {
+ return '宸插嚭搴�'
+ }
+ return '涓嶈冻'
+}
+
+const getApproveStatusType = (row) => {
+ const statusText = getApproveStatusText(row)
+ return statusText === '涓嶈冻' ? 'danger' : 'success'
}
const getShippingStatusText = (row) => {
@@ -356,7 +391,11 @@
// 鎵撳紑寮规
const openDialog =async (type, row) => {
// 璇锋眰澶氫釜鎺ュ彛锛岃幏鍙栨暟鎹�
- let res = await getAllCustomerList();
+ let res = await getAllCustomerList({
+ current: 1,
+ size: 1000,
+ total: 0,
+ });
if(res.records){
customerNameOptions.value = res.records.map(item => ({
label: item.customerName,
--
Gitblit v1.9.3