From 2d95cc0f94335eee717406e7a777c1193a42081c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 25 四月 2026 15:00:34 +0800
Subject: [PATCH] 天津宝东 1.销售台账填完信息后,可以导出模版供客户直接盖章 2.销售台账打印报价单,可以多选销售订单,得相同公司名称,样式随意发挥 3.销售台账子表格产品的库存状态改为库存数量
---
src/views/financialManagement/accounting/index.vue | 2
src/api/basicData/product.js | 6
src/views/basicData/product/index.vue | 18
src/views/qualityManagement/metricMaintenance/index0.vue | 2
src/views/qualityManagement/rawMaterialInspection/index.vue | 2
src/views/inventoryManagement/stockWarning/index.vue | 6
src/views/productionManagement/productionDispatching/index.vue | 2
src/views/energyManagement/energyPower/index.vue | 2
src/views/qualityManagement/finalInspection/index.vue | 2
src/views/equipmentManagement/ledger/Form.vue | 6
src/views/qualityManagement/processInspection/index.vue | 2
src/views/productionManagement/productStructure/index.vue | 2
src/views/salesManagement/invoiceLedger/index.vue | 2
src/views/collaborativeApproval/purchaseApproval/index.vue | 2
src/api/salesManagement/salesQuotationProduct.js | 48 ++
src/views/collaborativeApproval/shipmentReview/index.vue | 2
src/views/equipmentManagement/calibration/index.vue | 2
src/views/equipmentManagement/ledger/index.vue | 6
src/views/procurementManagement/purchaseReturnOrder/ProductList.vue | 2
src/views/procurementManagement/invoiceEntry/components/Modal.vue | 4
src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue | 2
src/views/procurementManagement/advancedPriceManagement/index.vue | 4
src/views/inventoryManagement/receiptManagement/Record.vue | 2
src/views/equipmentManagement/upkeep/index.vue | 4
src/views/qualityManagement/processInspection/components/formDia.vue | 8
src/views/salesManagement/deliveryLedger/index.vue | 2
src/views/equipmentManagement/operationManagement/index.vue | 2
src/views/energyManagement/waterManagement/waterBill.vue | 2
src/views/energyManagement/energyArea/index.vue | 8
src/views/equipmentManagement/repair/Modal/RepairModal.vue | 6
src/views/salesManagement/strategyControl/index.vue | 6
src/views/inventoryManagement/issueManagement/index.vue | 2
src/views/safeProduction/safeWorkApproval/components/approvalDia.vue | 4
src/views/salesManagement/salesQuotation/index.vue | 543 +++++++++++++------------
src/views/productionManagement/operationScheduling/index.vue | 2
src/views/energyManagement/gasManagement/index.vue | 8
src/views/productionManagement/productStructure/StructureEdit.vue | 2
src/views/procurementManagement/procurementLedger/index.vue | 8
src/views/qualityManagement/nonconformingManagement/components/formDia.vue | 2
src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue | 2
src/views/productionManagement/productionReporting/index.vue | 2
src/views/qualityManagement/rawMaterialInspection/components/formDia.vue | 8
src/views/procurementManagement/purchaseReturnOrder/New.vue | 2
src/views/inventoryManagement/stockReport/index.vue | 2
src/views/qualityManagement/nonconformingManagement/index.vue | 2
src/views/procurementManagement/procurementInvoiceLedger/index.vue | 2
src/views/customerService/feedbackRegistration/components/formDia.vue | 2
src/views/equipmentManagement/measurementEquipment/components/rowClickData.vue | 2
src/views/procurementManagement/qualityInspection/index.vue | 4
src/views/equipmentManagement/upkeep/Form/PlanModal.vue | 6
src/views/salesManagement/returnOrder/components/detailDia.vue | 2
src/views/productionManagement/productionDispatching/components/formDia.vue | 4
src/views/procurementManagement/paymentEntry/index.vue | 4
src/views/salesManagement/salesLedger/index.vue | 370 +++++++++++++----
src/views/energyManagement/energyTrends/index.vue | 2
src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue | 4
src/views/inventoryManagement/dispatchLog/Record.vue | 4
src/views/salesManagement/returnOrder/components/formDia.vue | 4
src/views/financialManagement/inventoryAccounting/index.vue | 2
src/views/projectManagement/Management/components/formDia.vue | 4
src/views/procurementManagement/purchaseReturnOrder/index.vue | 2
src/views/inventoryManagement/stockManagement/Record.vue | 2
src/views/inventoryManagement/stockManagement/Unqualified.vue | 2
src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue | 2
src/views/procurementManagement/procurementReport/index.vue | 2
src/views/salesManagement/receiptPayment/index.vue | 4
src/views/energyManagement/waterManagement/index.vue | 2
src/views/energyManagement/waterManagement/waterTrends.vue | 2
src/views/qualityManagement/finalInspection/components/formDia.vue | 8
src/views/productionManagement/productionCosting/index.vue | 2
src/views/equipmentManagement/repair/index.vue | 6
src/views/inventoryManagement/stockManagement/Qualified.vue | 2
src/views/procurementManagement/priceManagement/index.vue | 6
src/views/salesManagement/invoiceRegistration/index.vue | 4
src/utils/request.js | 23
src/views/productionManagement/productStructure/Detail/index.vue | 2
src/views/equipmentManagement/deviceInfo/index.vue | 2
src/views/projectManagement/Management/projectDetail.vue | 2
src/views/equipmentManagement/upkeep/Form/formDia.vue | 8
src/views/procurementManagement/transferManagement/index.vue | 2
80 files changed, 765 insertions(+), 491 deletions(-)
diff --git a/src/api/basicData/product.js b/src/api/basicData/product.js
index d29a064..8e6636f 100644
--- a/src/api/basicData/product.js
+++ b/src/api/basicData/product.js
@@ -17,7 +17,7 @@
data: query
})
}
-// 瑙勬牸鍨嬪彿鏂板淇敼
+// 灏哄鏂板淇敼
export function addOrEditProductModel(query) {
return request({
url: '/basic/product/addOrEditProductModel',
@@ -33,7 +33,7 @@
data: query
})
}
-// 瑙勬牸鍨嬪彿鍒犻櫎
+// 灏哄鍒犻櫎
export function delProductModel(query) {
return request({
url: '/basic/product/delProductModel',
@@ -41,7 +41,7 @@
data: query
})
}
-// 瑙勬牸鍨嬪彿鏌ヨ
+// 灏哄鏌ヨ
export function modelList(query) {
return request({
url: '/basic/product/modelList',
diff --git a/src/api/salesManagement/salesQuotationProduct.js b/src/api/salesManagement/salesQuotationProduct.js
new file mode 100644
index 0000000..99d60e0
--- /dev/null
+++ b/src/api/salesManagement/salesQuotationProduct.js
@@ -0,0 +1,48 @@
+import request from "@/utils/request";
+
+export function quotationProductListPage(query) {
+ return request({
+ url: "/sales/quotationProduct/listPage",
+ method: "get",
+ params: query,
+ });
+}
+
+export function quotationProductList(query) {
+ return request({
+ url: "/sales/quotationProduct/list",
+ method: "get",
+ params: query,
+ });
+}
+
+export function getQuotationProductInfo(id) {
+ return request({
+ url: `/sales/quotationProduct/${id}`,
+ method: "get",
+ });
+}
+
+export function addOrUpdateQuotationProduct(data) {
+ return request({
+ url: "/sales/quotationProduct/addOrUpdate",
+ method: "post",
+ data,
+ });
+}
+
+export function editQuotationProduct(data) {
+ return request({
+ url: "/sales/quotationProduct/edit",
+ method: "post",
+ data,
+ });
+}
+
+export function deleteQuotationProduct(ids) {
+ return request({
+ url: "/sales/quotationProduct/delete",
+ method: "delete",
+ data: ids,
+ });
+}
diff --git a/src/utils/request.js b/src/utils/request.js
index 9cfcf5b..ba31649 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -125,16 +125,25 @@
// 閫氱敤涓嬭浇鏂规硶
export function download(url, params, filename, config) {
downloadLoadingInstance = ElLoading.service({ text: "姝e湪涓嬭浇鏁版嵁锛岃绋嶅��", background: "rgba(0, 0, 0, 0.7)", })
- return service.post(url, params, {
- transformRequest: [(params) => { return tansParams(params) }],
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
- responseType: 'blob',
- ...config
- }).then(async (data) => {
+ const downloadName = config?.filename || filename
+ const requestMethod = (config?.method || 'post').toLowerCase()
+ const requestPromise = requestMethod === 'get'
+ ? service.get(url, {
+ params,
+ responseType: 'blob',
+ ...config
+ })
+ : service.post(url, params, {
+ transformRequest: [(params) => { return tansParams(params) }],
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
+ responseType: 'blob',
+ ...config
+ })
+ return requestPromise.then(async (data) => {
const isBlob = blobValidate(data)
if (isBlob) {
const blob = new Blob([data])
- saveAs(blob, filename)
+ saveAs(blob, downloadName)
} else {
const resText = await data.text()
const rspObj = JSON.parse(resText)
diff --git a/src/views/basicData/product/index.vue b/src/views/basicData/product/index.vue
index 10b51bf..85add2a 100644
--- a/src/views/basicData/product/index.vue
+++ b/src/views/basicData/product/index.vue
@@ -77,7 +77,7 @@
<div class="right">
<div style="margin-bottom: 10px" v-if="isShowButton">
<el-button type="primary" @click="openModelDia('add')">
- 鏂板瑙勬牸鍨嬪彿
+ 鏂板灏哄
</el-button>
<ImportExcel :product-id="currentId" @uploadSuccess="getModelList" />
<el-button
@@ -132,7 +132,7 @@
</el-dialog>
<el-dialog
v-model="modelDia"
- title="瑙勬牸鍨嬪彿"
+ title="灏哄"
width="400px"
@close="closeModelDia"
@keydown.enter.prevent
@@ -146,10 +146,10 @@
>
<el-row>
<el-col :span="24">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="model">
+ <el-form-item label="灏哄锛�" prop="model">
<el-input
v-model="modelForm.model"
- placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+ placeholder="璇疯緭鍏ュ昂瀵�"
clearable
@keydown.enter.prevent
/>
@@ -294,7 +294,7 @@
const expandedKeys = ref([]);
const tableColumn = ref([
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "model",
},
{
@@ -397,7 +397,7 @@
form.value.productName = data.productName;
}
};
-// 鎵撳紑瑙勬牸鍨嬪彿寮规
+// 鎵撳紑灏哄寮规
const openModelDia = (type, data) => {
modelOperationType.value = type;
modelDia.value = true;
@@ -474,7 +474,7 @@
getModelList();
};
-// 鎻愪氦瑙勬牸鍨嬪彿淇敼
+// 鎻愪氦灏哄淇敼
const submitModelForm = () => {
proxy.$refs.modelFormRef.validate((valid) => {
if (valid) {
@@ -497,7 +497,7 @@
selectedRows.value = selection;
};
-// 鏌ヨ瑙勬牸鍨嬪彿
+// 鏌ヨ灏哄
const pagination = (obj) => {
page.current = obj.page;
page.size = obj.limit;
@@ -516,7 +516,7 @@
tableLoading.value = false;
});
};
-// 鍒犻櫎瑙勬牸鍨嬪彿
+// 鍒犻櫎灏哄
const handleDelete = () => {
let ids = [];
if (selectedRows.value.length > 0) {
diff --git a/src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue b/src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue
index 1269621..2b1f16a 100644
--- a/src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue
+++ b/src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue
@@ -71,7 +71,7 @@
<h4>浜у搧鏄庣粏</h4>
<el-table :data="currentQuotation.products || []" border style="width: 100%">
<el-table-column prop="product" label="浜у搧鍚嶇О" />
- <el-table-column prop="specification" label="瑙勬牸鍨嬪彿" />
+ <el-table-column prop="specification" label="灏哄" />
<el-table-column prop="unit" label="鍗曚綅" />
<el-table-column prop="unitPrice" label="鍗曚环">
<template #default="scope">楼{{ Number(scope.row.unitPrice ?? 0).toFixed(2) }}</template>
@@ -119,7 +119,7 @@
<h4>浜у搧鏄庣粏</h4>
<el-table :data="currentPurchase.productData || []" border style="width: 100%">
<el-table-column prop="productCategory" label="浜у搧鍚嶇О" />
- <el-table-column prop="specificationModel" label="瑙勬牸鍨嬪彿" />
+ <el-table-column prop="specificationModel" label="灏哄" />
<el-table-column prop="unit" label="鍗曚綅" />
<el-table-column prop="quantity" label="鏁伴噺" />
<el-table-column prop="taxInclusiveUnitPrice" label="鍚◣鍗曚环">
diff --git a/src/views/collaborativeApproval/purchaseApproval/index.vue b/src/views/collaborativeApproval/purchaseApproval/index.vue
index af17bbe..4b6b042 100644
--- a/src/views/collaborativeApproval/purchaseApproval/index.vue
+++ b/src/views/collaborativeApproval/purchaseApproval/index.vue
@@ -66,7 +66,7 @@
width="60"
/>
<el-table-column label="浜у搧澶х被" prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
+ <el-table-column label="灏哄" prop="specificationModel" />
<el-table-column label="鍗曚綅" prop="unit" />
<el-table-column label="鏁伴噺" prop="quantity" />
<el-table-column label="绋庣巼(%)" prop="taxRate" />
diff --git a/src/views/collaborativeApproval/shipmentReview/index.vue b/src/views/collaborativeApproval/shipmentReview/index.vue
index ac2b790..3121b1f 100644
--- a/src/views/collaborativeApproval/shipmentReview/index.vue
+++ b/src/views/collaborativeApproval/shipmentReview/index.vue
@@ -125,7 +125,7 @@
width: 200
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "specificationModel",
width: 220
},
diff --git a/src/views/customerService/feedbackRegistration/components/formDia.vue b/src/views/customerService/feedbackRegistration/components/formDia.vue
index 1fe4eb6..994ee34 100644
--- a/src/views/customerService/feedbackRegistration/components/formDia.vue
+++ b/src/views/customerService/feedbackRegistration/components/formDia.vue
@@ -217,7 +217,7 @@
const tableColumn = ref([
{ label: "浜у搧澶х被", prop: "productCategory" },
- { label: "瑙勬牸鍨嬪彿", prop: "specificationModel" },
+ { label: "灏哄", prop: "specificationModel" },
{ label: "鍗曚綅", prop: "unit" },
{
label: "浜у搧鐘舵��",
diff --git a/src/views/energyManagement/energyArea/index.vue b/src/views/energyManagement/energyArea/index.vue
index 63feff8..6d24350 100644
--- a/src/views/energyManagement/energyArea/index.vue
+++ b/src/views/energyManagement/energyArea/index.vue
@@ -281,7 +281,7 @@
form.value.areaName = data.areaName;
}
};
-// 鎵撳紑瑙勬牸鍨嬪彿寮规
+// 鎵撳紑灏哄寮规
const openModelDia = (type, data,fatherId) => {
modelOperationType.value = type;
modelDia.value = true;
@@ -356,7 +356,7 @@
getModelList(true);
};
-// 鎻愪氦瑙勬牸鍨嬪彿淇敼
+// 鎻愪氦灏哄淇敼
const submitModelForm = () => {
proxy.$refs.modelFormRef.validate((valid) => {
if (valid) {
@@ -380,7 +380,7 @@
selectedRows.value = selection;
};
-// 鏌ヨ瑙勬牸鍨嬪彿
+// 鏌ヨ灏哄
const pagination = (obj) => {
page.current = obj.page;
page.size = obj.limit;
@@ -406,7 +406,7 @@
tableLoading.value = false;
});
};
-// 鍒犻櫎瑙勬牸鍨嬪彿
+// 鍒犻櫎灏哄
const handleDelete = () => {
let ids = [];
if (selectedRows.value.length > 0) {
diff --git a/src/views/energyManagement/energyPower/index.vue b/src/views/energyManagement/energyPower/index.vue
index 6311019..3b6eab6 100644
--- a/src/views/energyManagement/energyPower/index.vue
+++ b/src/views/energyManagement/energyPower/index.vue
@@ -106,7 +106,7 @@
width: 200,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "code",
width: 200,
},
diff --git a/src/views/energyManagement/energyTrends/index.vue b/src/views/energyManagement/energyTrends/index.vue
index 7f67be7..34b04ba 100644
--- a/src/views/energyManagement/energyTrends/index.vue
+++ b/src/views/energyManagement/energyTrends/index.vue
@@ -55,7 +55,7 @@
width: 220,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "code",
width: 220,
},
diff --git a/src/views/energyManagement/gasManagement/index.vue b/src/views/energyManagement/gasManagement/index.vue
index a9b9abe..8bed1f5 100644
--- a/src/views/energyManagement/gasManagement/index.vue
+++ b/src/views/energyManagement/gasManagement/index.vue
@@ -148,7 +148,7 @@
<el-table-column label="璁惧缂栧彿" prop="deviceCode" width="120" show-overflow-tooltip />
<el-table-column label="璁惧鍚嶇О" prop="deviceName" width="150" show-overflow-tooltip />
<el-table-column label="璁惧绫诲瀷" prop="deviceType" width="120" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specification" width="150" show-overflow-tooltip />
+ <el-table-column label="灏哄" prop="specification" width="150" show-overflow-tooltip />
<el-table-column label="褰撳墠鍘嬪姏(MPa)" prop="currentPressure" width="130" show-overflow-tooltip>
<template #default="scope">
<span :class="getPressureClass(scope.row.currentPressure)">
@@ -217,8 +217,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿" prop="specification">
- <el-input v-model="deviceForm.specification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
+ <el-form-item label="灏哄" prop="specification">
+ <el-input v-model="deviceForm.specification" placeholder="璇疯緭鍏ュ昂瀵�" />
</el-form-item>
</el-col>
</el-row>
@@ -284,7 +284,7 @@
deviceCode: [{ required: true, message: '璇疯緭鍏ヨ澶囩紪鍙�', trigger: 'blur' }],
deviceName: [{ required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: 'blur' }],
deviceType: [{ required: true, message: '璇烽�夋嫨璁惧绫诲瀷', trigger: 'change' }],
- specification: [{ required: true, message: '璇疯緭鍏ヨ鏍煎瀷鍙�', trigger: 'blur' }],
+ specification: [{ required: true, message: '璇疯緭鍏ュ昂瀵�', trigger: 'blur' }],
designPressure: [{ required: true, message: '璇疯緭鍏ヨ璁″帇鍔�', trigger: 'blur' }],
volume: [{ required: true, message: '璇疯緭鍏ュ绉�', trigger: 'blur' }]
}
diff --git a/src/views/energyManagement/waterManagement/index.vue b/src/views/energyManagement/waterManagement/index.vue
index 4ada029..24fac74 100644
--- a/src/views/energyManagement/waterManagement/index.vue
+++ b/src/views/energyManagement/waterManagement/index.vue
@@ -106,7 +106,7 @@
width: 200,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "deviceModel",
width: 200,
},
diff --git a/src/views/energyManagement/waterManagement/waterBill.vue b/src/views/energyManagement/waterManagement/waterBill.vue
index ea382f0..4bf5f47 100644
--- a/src/views/energyManagement/waterManagement/waterBill.vue
+++ b/src/views/energyManagement/waterManagement/waterBill.vue
@@ -59,7 +59,7 @@
width: 200,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "code",
width: 200,
},
diff --git a/src/views/energyManagement/waterManagement/waterTrends.vue b/src/views/energyManagement/waterManagement/waterTrends.vue
index 12e45fc..859cda4 100644
--- a/src/views/energyManagement/waterManagement/waterTrends.vue
+++ b/src/views/energyManagement/waterManagement/waterTrends.vue
@@ -51,7 +51,7 @@
width: 220,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "code",
width: 220,
},
diff --git a/src/views/equipmentManagement/calibration/index.vue b/src/views/equipmentManagement/calibration/index.vue
index e3eaef6..955013a 100644
--- a/src/views/equipmentManagement/calibration/index.vue
+++ b/src/views/equipmentManagement/calibration/index.vue
@@ -114,7 +114,7 @@
width: 200,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "model",
width:200
},
diff --git a/src/views/equipmentManagement/deviceInfo/index.vue b/src/views/equipmentManagement/deviceInfo/index.vue
index de162cc..5c17e68 100644
--- a/src/views/equipmentManagement/deviceInfo/index.vue
+++ b/src/views/equipmentManagement/deviceInfo/index.vue
@@ -15,7 +15,7 @@
<span class="value">{{ deviceInfo.deviceName }}</span>
</div>
<div class="info-row">
- <span class="label">瑙勬牸鍨嬪彿锛�</span>
+ <span class="label">灏哄锛�</span>
<span class="value">{{ deviceInfo.deviceModel }}</span>
</div>
<div class="info-row">
diff --git a/src/views/equipmentManagement/ledger/Form.vue b/src/views/equipmentManagement/ledger/Form.vue
index 72d594e..2dbf6a9 100644
--- a/src/views/equipmentManagement/ledger/Form.vue
+++ b/src/views/equipmentManagement/ledger/Form.vue
@@ -7,8 +7,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿" prop="deviceModel">
- <el-input v-model="form.deviceModel" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
+ <el-form-item label="灏哄" prop="deviceModel">
+ <el-input v-model="form.deviceModel" placeholder="璇疯緭鍏ュ昂瀵�" />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -215,7 +215,7 @@
const { form, resetForm } = useFormData({
deviceName: undefined, // 璁惧鍚嶇О
- deviceModel: undefined, // 瑙勬牸鍨嬪彿
+ deviceModel: undefined, // 灏哄
deviceBrand: undefined, // 璁惧鍝佺墝
type: undefined, // 璁惧绫诲瀷
supplierName: undefined, // 渚涘簲鍟�
diff --git a/src/views/equipmentManagement/ledger/index.vue b/src/views/equipmentManagement/ledger/index.vue
index 7ba9401..e64bb6d 100644
--- a/src/views/equipmentManagement/ledger/index.vue
+++ b/src/views/equipmentManagement/ledger/index.vue
@@ -10,11 +10,11 @@
@change="getTableData"
/>
</el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿">
+ <el-form-item label="灏哄">
<el-input
v-model="filters.deviceModel"
style="width: 200px"
- placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+ placeholder="璇疯緭鍏ュ昂瀵�"
clearable
@change="getTableData"
/>
@@ -174,7 +174,7 @@
prop: "deviceName",
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "deviceModel",
},
{
diff --git a/src/views/equipmentManagement/measurementEquipment/components/rowClickData.vue b/src/views/equipmentManagement/measurementEquipment/components/rowClickData.vue
index 6604587..8a199a0 100644
--- a/src/views/equipmentManagement/measurementEquipment/components/rowClickData.vue
+++ b/src/views/equipmentManagement/measurementEquipment/components/rowClickData.vue
@@ -62,7 +62,7 @@
width: 200,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "model",
width:200
},
diff --git a/src/views/equipmentManagement/operationManagement/index.vue b/src/views/equipmentManagement/operationManagement/index.vue
index 008cc2c..97d57ff 100644
--- a/src/views/equipmentManagement/operationManagement/index.vue
+++ b/src/views/equipmentManagement/operationManagement/index.vue
@@ -34,7 +34,7 @@
show-overflow-tooltip
/>
<el-table-column
- label="瑙勬牸鍨嬪彿"
+ label="灏哄"
prop="deviceModel"
show-overflow-tooltip
/>
diff --git a/src/views/equipmentManagement/repair/Modal/RepairModal.vue b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
index 1728b37..d6121a8 100644
--- a/src/views/equipmentManagement/repair/Modal/RepairModal.vue
+++ b/src/views/equipmentManagement/repair/Modal/RepairModal.vue
@@ -22,10 +22,10 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿">
+ <el-form-item label="灏哄">
<el-input
v-model="form.deviceModel"
- placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+ placeholder="璇疯緭鍏ュ昂瀵�"
disabled
/>
</el-form-item>
@@ -115,7 +115,7 @@
const { form, resetForm } = useFormData({
deviceLedgerId: undefined, // 璁惧Id
deviceName: undefined, // 璁惧鍚嶇О
- deviceModel: undefined, // 瑙勬牸鍨嬪彿
+ deviceModel: undefined, // 灏哄
repairTime: dayjs().format("YYYY-MM-DD"), // 鎶ヤ慨鏃ユ湡锛岄粯璁ゅ綋澶�
repairName: userStore.nickName, // 鎶ヤ慨浜�
remark: undefined, // 鏁呴殰鐜拌薄
diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index 27d0acb..3e5c359 100644
--- a/src/views/equipmentManagement/repair/index.vue
+++ b/src/views/equipmentManagement/repair/index.vue
@@ -11,11 +11,11 @@
@change="getTableData"
/>
</el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿">
+ <el-form-item label="灏哄">
<el-input
v-model="filters.deviceModel"
style="width: 240px"
- placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿"
+ placeholder="璇烽�夋嫨灏哄"
clearable
:prefix-icon="Search"
@change="getTableData"
@@ -183,7 +183,7 @@
prop: "deviceName",
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
align: "center",
prop: "deviceModel",
},
diff --git a/src/views/equipmentManagement/upkeep/Form/PlanModal.vue b/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
index 6fa6595..6164e00 100644
--- a/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
+++ b/src/views/equipmentManagement/upkeep/Form/PlanModal.vue
@@ -25,10 +25,10 @@
></el-option>
</el-select>
</el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿">
+ <el-form-item label="灏哄">
<el-input
v-model="form.deviceModel"
- placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+ placeholder="璇疯緭鍏ュ昂瀵�"
disabled
/>
</el-form-item>
@@ -110,7 +110,7 @@
const { form, resetForm } = useFormData({
deviceLedgerId: undefined, // 璁惧Id
deviceName: undefined, // 璁惧鍚嶇О
- deviceModel: undefined, // 瑙勬牸鍨嬪彿
+ deviceModel: undefined, // 灏哄
maintenancePlanTime: undefined, // 璁″垝淇濆吇鏃ユ湡
createUser: undefined, // 褰曞叆浜�
status: 0, //淇濅慨鐘舵��
diff --git a/src/views/equipmentManagement/upkeep/Form/formDia.vue b/src/views/equipmentManagement/upkeep/Form/formDia.vue
index 66bf067..b8354c8 100644
--- a/src/views/equipmentManagement/upkeep/Form/formDia.vue
+++ b/src/views/equipmentManagement/upkeep/Form/formDia.vue
@@ -23,10 +23,10 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿">
+ <el-form-item label="灏哄">
<el-input
v-model="form.deviceModel"
- placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+ placeholder="璇疯緭鍏ュ昂瀵�"
disabled
/>
</el-form-item>
@@ -159,7 +159,7 @@
frequencyDetail: '',
week: '',
time: '',
- deviceModel: undefined, // 瑙勬牸鍨嬪彿
+ deviceModel: undefined, // 灏哄
registrationDate: ''
},
rules: {
@@ -176,7 +176,7 @@
deviceOptions.value = data;
};
-// 閫夋嫨璁惧鏃讹紝鍥炲~璁惧鍚嶇О(taskName)鍜岃鏍煎瀷鍙�(deviceModel)
+// 閫夋嫨璁惧鏃讹紝鍥炲~璁惧鍚嶇О(taskName)鍜屽昂瀵�(deviceModel)
const setDeviceModel = (id) => {
const option = deviceOptions.value.find((item) => item.id === id);
if (option) {
diff --git a/src/views/equipmentManagement/upkeep/index.vue b/src/views/equipmentManagement/upkeep/index.vue
index 1e65663..4f239a3 100644
--- a/src/views/equipmentManagement/upkeep/index.vue
+++ b/src/views/equipmentManagement/upkeep/index.vue
@@ -301,7 +301,7 @@
const scheduledColumns = ref([
{ prop: "taskName", label: "璁惧鍚嶇О"},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "deviceModel",
},
{
@@ -357,7 +357,7 @@
prop: "deviceName",
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
align: "center",
prop: "deviceModel",
},
diff --git a/src/views/financialManagement/accounting/index.vue b/src/views/financialManagement/accounting/index.vue
index ea858e1..b1803c8 100644
--- a/src/views/financialManagement/accounting/index.vue
+++ b/src/views/financialManagement/accounting/index.vue
@@ -157,7 +157,7 @@
>
<el-table-column type="index" label="搴忓彿" width="60" :index="(index) => (pagination.currentPage - 1) * pagination.pageSize + index + 1" />
<el-table-column prop="deviceName" label="璁惧鍚嶇О" width="250" />
- <el-table-column prop="deviceModel" label="瑙勬牸鍨嬪彿" min-width="150" />
+ <el-table-column prop="deviceModel" label="灏哄" min-width="150" />
<el-table-column prop="supplierName" label="渚涘簲鍟�" min-width="120" />
<el-table-column prop="unit" label="鍗曚綅" width="120" />
<el-table-column prop="number" label="鏁伴噺" width="120" />
diff --git a/src/views/financialManagement/inventoryAccounting/index.vue b/src/views/financialManagement/inventoryAccounting/index.vue
index 3acf5d9..6125c0f 100644
--- a/src/views/financialManagement/inventoryAccounting/index.vue
+++ b/src/views/financialManagement/inventoryAccounting/index.vue
@@ -103,7 +103,7 @@
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
<el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" show-overflow-tooltip />
<el-table-column label="浜у搧" prop="productCategory" min-width="100" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" min-width="200" show-overflow-tooltip />
+ <el-table-column label="灏哄" prop="specificationModel" min-width="200" show-overflow-tooltip />
<el-table-column label="鍗曚綅" prop="unit" width="70" show-overflow-tooltip />
<el-table-column label="鍏ュ簱鏁伴噺" prop="inboundNum" width="90" show-overflow-tooltip />
<el-table-column label="搴撳瓨鏁伴噺" prop="inboundNum0" width="90" show-overflow-tooltip />
diff --git a/src/views/inventoryManagement/dispatchLog/Record.vue b/src/views/inventoryManagement/dispatchLog/Record.vue
index a7a8a4b..c2b29cc 100644
--- a/src/views/inventoryManagement/dispatchLog/Record.vue
+++ b/src/views/inventoryManagement/dispatchLog/Record.vue
@@ -62,7 +62,7 @@
show-overflow-tooltip
/>
<el-table-column
- label="瑙勬牸鍨嬪彿"
+ label="灏哄"
prop="model"
show-overflow-tooltip
/>
@@ -430,7 +430,7 @@
<thead>
<tr>
<th>浜у搧鍚嶇О</th>
- <th>瑙勬牸鍨嬪彿</th>
+ <th>灏哄</th>
<th>鍗曚綅</th>
<th>鍗曚环</th>
<th>闆跺敭鏁伴噺</th>
diff --git a/src/views/inventoryManagement/issueManagement/index.vue b/src/views/inventoryManagement/issueManagement/index.vue
index 2bba7d0..5d20726 100644
--- a/src/views/inventoryManagement/issueManagement/index.vue
+++ b/src/views/inventoryManagement/issueManagement/index.vue
@@ -33,7 +33,7 @@
<el-table-column label="鍏ュ簱鎵规" prop="inboundBatches" width="160" show-overflow-tooltip />
<el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" show-overflow-tooltip />
<el-table-column label="浜у搧澶х被" prop="productCategory" width="100" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="200" show-overflow-tooltip />
+ <el-table-column label="灏哄" prop="specificationModel" width="200" show-overflow-tooltip />
<el-table-column label="鍗曚綅" prop="unit" width="70" show-overflow-tooltip />
<el-table-column label="鍏ュ簱鏁伴噺" prop="inboundNum" width="90" show-overflow-tooltip />
<el-table-column label="搴撳瓨鏁伴噺" prop="inboundNum0" width="90" show-overflow-tooltip />
diff --git a/src/views/inventoryManagement/receiptManagement/Record.vue b/src/views/inventoryManagement/receiptManagement/Record.vue
index 3f90edf..446a31b 100644
--- a/src/views/inventoryManagement/receiptManagement/Record.vue
+++ b/src/views/inventoryManagement/receiptManagement/Record.vue
@@ -64,7 +64,7 @@
<el-table-column label="浜у搧澶х被"
prop="productName"
show-overflow-tooltip/>
- <el-table-column label="瑙勬牸鍨嬪彿"
+ <el-table-column label="灏哄"
prop="model"
show-overflow-tooltip/>
<el-table-column label="鍗曚綅"
diff --git a/src/views/inventoryManagement/stockManagement/Qualified.vue b/src/views/inventoryManagement/stockManagement/Qualified.vue
index a958f42..f620987 100644
--- a/src/views/inventoryManagement/stockManagement/Qualified.vue
+++ b/src/views/inventoryManagement/stockManagement/Qualified.vue
@@ -24,7 +24,7 @@
<el-table-column align="center" type="selection" width="55" />
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
<el-table-column label="浜у搧澶х被" prop="productName" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="model" 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="qualitity" show-overflow-tooltip />
<el-table-column label="鍐荤粨鏁伴噺" prop="lockedQuantity" show-overflow-tooltip />
diff --git a/src/views/inventoryManagement/stockManagement/Record.vue b/src/views/inventoryManagement/stockManagement/Record.vue
index 4f9537f..ee9102e 100644
--- a/src/views/inventoryManagement/stockManagement/Record.vue
+++ b/src/views/inventoryManagement/stockManagement/Record.vue
@@ -24,7 +24,7 @@
<el-table-column align="center" type="selection" width="55" />
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
<el-table-column label="浜у搧澶х被" prop="productName" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="model" 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="qualifiedQuantity" show-overflow-tooltip />
<el-table-column label="涓嶅悎鏍煎簱瀛樻暟閲�" prop="unQualifiedQuantity" show-overflow-tooltip />
diff --git a/src/views/inventoryManagement/stockManagement/Unqualified.vue b/src/views/inventoryManagement/stockManagement/Unqualified.vue
index 55662be..8c5150c 100644
--- a/src/views/inventoryManagement/stockManagement/Unqualified.vue
+++ b/src/views/inventoryManagement/stockManagement/Unqualified.vue
@@ -21,7 +21,7 @@
<el-table-column align="center" type="selection" width="55" />
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
<el-table-column label="浜у搧澶х被" prop="productName" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="model" 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="qualitity" show-overflow-tooltip />
<el-table-column label="鍐荤粨鏁伴噺" prop="lockedQuantity" show-overflow-tooltip />
diff --git a/src/views/inventoryManagement/stockReport/index.vue b/src/views/inventoryManagement/stockReport/index.vue
index 89773cf..b20cb7d 100644
--- a/src/views/inventoryManagement/stockReport/index.vue
+++ b/src/views/inventoryManagement/stockReport/index.vue
@@ -181,7 +181,7 @@
show-overflow-tooltip
/>
<el-table-column
- label="瑙勬牸鍨嬪彿"
+ label="灏哄"
prop="model"
show-overflow-tooltip
/>
diff --git a/src/views/inventoryManagement/stockWarning/index.vue b/src/views/inventoryManagement/stockWarning/index.vue
index b5216cb..cccb67a 100644
--- a/src/views/inventoryManagement/stockWarning/index.vue
+++ b/src/views/inventoryManagement/stockWarning/index.vue
@@ -59,7 +59,7 @@
<el-table-column label="鍌ㄦ皵缃愮紪鐮�" prop="tankCode" width="120" show-overflow-tooltip />
<el-table-column label="鍌ㄦ皵缃愬悕绉�" prop="tankName" width="200" show-overflow-tooltip />
<el-table-column label="鍌ㄦ皵缃愮被鍨�" prop="tankType" width="120" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="150" show-overflow-tooltip />
+ <el-table-column label="灏哄" prop="specificationModel" width="150" show-overflow-tooltip />
<el-table-column label="瀹圭Н(m鲁)" prop="volume" width="100" show-overflow-tooltip />
<!-- 搴撳瓨鐩稿叧瀛楁 -->
@@ -171,8 +171,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="specificationModel">
- <el-input v-model="form.specificationModel" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
+ <el-form-item label="灏哄锛�" prop="specificationModel">
+ <el-input v-model="form.specificationModel" placeholder="璇疯緭鍏ュ昂瀵�" />
</el-form-item>
</el-col>
</el-row>
diff --git a/src/views/procurementManagement/advancedPriceManagement/index.vue b/src/views/procurementManagement/advancedPriceManagement/index.vue
index 84bd160..864b151 100644
--- a/src/views/procurementManagement/advancedPriceManagement/index.vue
+++ b/src/views/procurementManagement/advancedPriceManagement/index.vue
@@ -157,8 +157,8 @@
</el-row>
<el-row :gutter="20">
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿" prop="specification">
- <el-input v-model="formData.specification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
+ <el-form-item label="灏哄" prop="specification">
+ <el-input v-model="formData.specification" placeholder="璇疯緭鍏ュ昂瀵�" />
</el-form-item>
</el-col>
<el-col :span="12">
diff --git a/src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue b/src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue
index d329768..1ef94bd 100644
--- a/src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue
+++ b/src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue
@@ -42,7 +42,7 @@
prop: "productCategory",
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "specificationModel",
},
{
diff --git a/src/views/procurementManagement/invoiceEntry/components/Modal.vue b/src/views/procurementManagement/invoiceEntry/components/Modal.vue
index 33d5144..1ddfc16 100644
--- a/src/views/procurementManagement/invoiceEntry/components/Modal.vue
+++ b/src/views/procurementManagement/invoiceEntry/components/Modal.vue
@@ -112,7 +112,7 @@
</template>
</el-table-column>
<el-table-column label="浜у搧澶х被" prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="150" />
+ <el-table-column label="灏哄" prop="specificationModel" width="150" />
<el-table-column label="鍗曚綅" prop="unit" width="70" />
<el-table-column label="鏁伴噺" prop="quantity" width="70" />
<el-table-column label="绋庣巼(%)" prop="taxRate" width="80" />
@@ -264,7 +264,7 @@
width: 120,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "specificationModel",
width: 120,
},
diff --git a/src/views/procurementManagement/paymentEntry/index.vue b/src/views/procurementManagement/paymentEntry/index.vue
index 73c5a1a..f283dff 100644
--- a/src/views/procurementManagement/paymentEntry/index.vue
+++ b/src/views/procurementManagement/paymentEntry/index.vue
@@ -150,7 +150,7 @@
width="100"
/>
<el-table-column
- label="瑙勬牸鍨嬪彿"
+ label="灏哄"
prop="specificationModel"
show-overflow-tooltip
width="150"
@@ -280,7 +280,7 @@
showOverflowTooltip: true,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "specificationModel",
showOverflowTooltip: true,
width: 150
diff --git a/src/views/procurementManagement/priceManagement/index.vue b/src/views/procurementManagement/priceManagement/index.vue
index 76a39ed..2856fee 100644
--- a/src/views/procurementManagement/priceManagement/index.vue
+++ b/src/views/procurementManagement/priceManagement/index.vue
@@ -31,7 +31,7 @@
<el-table :data="tableData" border v-loading="loading" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="鍟嗗搧鍚嶇О" prop="productName" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specification" />
+ <el-table-column label="灏哄" prop="specification" />
<el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" />
<el-table-column label="鍘熶环鏍�" prop="oldPrice" width="120">
<template #default="{ row }">楼{{ row.oldPrice.toFixed(2) }}</template>
@@ -71,8 +71,8 @@
<el-option label="鍟嗗搧C" value="鍟嗗搧C" />
</el-select>
</el-form-item>
- <el-form-item label="瑙勬牸鍨嬪彿">
- <el-input v-model="formData.specification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
+ <el-form-item label="灏哄">
+ <el-input v-model="formData.specification" placeholder="璇疯緭鍏ュ昂瀵�" />
</el-form-item>
<el-form-item label="渚涘簲鍟嗗悕绉�">
<el-select v-model="formData.supplierName" placeholder="璇烽�夋嫨渚涘簲鍟�" style="width: 100%">
diff --git a/src/views/procurementManagement/procurementInvoiceLedger/index.vue b/src/views/procurementManagement/procurementInvoiceLedger/index.vue
index d82e3e7..1578429 100644
--- a/src/views/procurementManagement/procurementInvoiceLedger/index.vue
+++ b/src/views/procurementManagement/procurementInvoiceLedger/index.vue
@@ -171,7 +171,7 @@
width: 150,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "specificationModel",
width: 150,
},
diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue
index 1c8f564..924e2a9 100644
--- a/src/views/procurementManagement/procurementLedger/index.vue
+++ b/src/views/procurementManagement/procurementLedger/index.vue
@@ -84,7 +84,7 @@
width="60" />
<el-table-column label="浜у搧澶х被"
prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿"
+ <el-table-column label="灏哄"
prop="specificationModel" />
<el-table-column label="鍗曚綅"
prop="unit" />
@@ -362,7 +362,7 @@
width="60" />
<el-table-column label="浜у搧澶х被"
prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿"
+ <el-table-column label="灏哄"
prop="specificationModel" />
<el-table-column label="鍗曚綅"
prop="unit"
@@ -513,7 +513,7 @@
</el-row>
<el-row :gutter="30">
<el-col :span="24">
- <el-form-item label="瑙勬牸鍨嬪彿锛�"
+ <el-form-item label="灏哄锛�"
prop="productModelId">
<el-select v-model="productForm.productModelId"
placeholder="璇烽�夋嫨"
@@ -1422,7 +1422,7 @@
);
if (modelItem) {
productForm.value.productModelId = modelItem.id;
- // 璁剧疆瑙勬牸鍨嬪彿鍜屽崟浣�
+ // 璁剧疆灏哄鍜屽崟浣�
getProductModel(modelItem.id);
}
}
diff --git a/src/views/procurementManagement/procurementReport/index.vue b/src/views/procurementManagement/procurementReport/index.vue
index 4ba1802..25998fe 100644
--- a/src/views/procurementManagement/procurementReport/index.vue
+++ b/src/views/procurementManagement/procurementReport/index.vue
@@ -111,7 +111,7 @@
prop: 'productCategory',
},
{
- label: '瑙勬牸鍨嬪彿',
+ label: '灏哄',
prop: 'specificationModel',
},
{
diff --git a/src/views/procurementManagement/purchaseReturnOrder/New.vue b/src/views/procurementManagement/purchaseReturnOrder/New.vue
index dffdeea..ca0ebe9 100644
--- a/src/views/procurementManagement/purchaseReturnOrder/New.vue
+++ b/src/views/procurementManagement/purchaseReturnOrder/New.vue
@@ -242,7 +242,7 @@
width="60" />
<el-table-column label="浜у搧澶х被"
prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿"
+ <el-table-column label="灏哄"
prop="specificationModel" />
<el-table-column label="鍗曚綅"
prop="unit"
diff --git a/src/views/procurementManagement/purchaseReturnOrder/ProductList.vue b/src/views/procurementManagement/purchaseReturnOrder/ProductList.vue
index 3eeb167..f018047 100644
--- a/src/views/procurementManagement/purchaseReturnOrder/ProductList.vue
+++ b/src/views/procurementManagement/purchaseReturnOrder/ProductList.vue
@@ -19,7 +19,7 @@
width="60" />
<el-table-column label="浜у搧澶х被"
prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿"
+ <el-table-column label="灏哄"
prop="specificationModel" />
<el-table-column label="鍗曚綅"
prop="unit"
diff --git a/src/views/procurementManagement/purchaseReturnOrder/index.vue b/src/views/procurementManagement/purchaseReturnOrder/index.vue
index cd2c7f4..bae6dd7 100644
--- a/src/views/procurementManagement/purchaseReturnOrder/index.vue
+++ b/src/views/procurementManagement/purchaseReturnOrder/index.vue
@@ -79,7 +79,7 @@
>
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
<el-table-column label="浜у搧澶х被" prop="productCategory" min-width="120" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" min-width="140" show-overflow-tooltip />
+ <el-table-column label="灏哄" prop="specificationModel" min-width="140" show-overflow-tooltip />
<el-table-column label="鍗曚綅" prop="unit" width="80" />
<el-table-column label="鏁伴噺" prop="quantity" width="80" />
<el-table-column label="閫�璐ф暟閲�" prop="returnQuantity" width="100" />
diff --git a/src/views/procurementManagement/qualityInspection/index.vue b/src/views/procurementManagement/qualityInspection/index.vue
index ab19d6f..d4a2c54 100644
--- a/src/views/procurementManagement/qualityInspection/index.vue
+++ b/src/views/procurementManagement/qualityInspection/index.vue
@@ -75,9 +75,9 @@
<el-input v-model="row.productName" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" />
</template>
</el-table-column>
- <el-table-column label="瑙勬牸鍨嬪彿" width="150">
+ <el-table-column label="灏哄" width="150">
<template #default="{ row }">
- <el-input v-model="row.specification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" />
+ <el-input v-model="row.specification" placeholder="璇疯緭鍏ュ昂瀵�" />
</template>
</el-table-column>
<el-table-column label="鍒拌揣鏁伴噺" width="150">
diff --git a/src/views/procurementManagement/transferManagement/index.vue b/src/views/procurementManagement/transferManagement/index.vue
index 3646449..50ee885 100644
--- a/src/views/procurementManagement/transferManagement/index.vue
+++ b/src/views/procurementManagement/transferManagement/index.vue
@@ -90,7 +90,7 @@
width="60"
/>
<el-table-column label="浜у搧澶х被" prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
+ <el-table-column label="灏哄" prop="specificationModel" />
<el-table-column label="鍗曚綅" prop="unit" width="70" />
<el-table-column label="渚涘簲鍟�" prop="supplierName" width="100" />
<el-table-column label="閲囪喘鏁伴噺" prop="quantity" width="100" />
diff --git a/src/views/productionManagement/operationScheduling/index.vue b/src/views/productionManagement/operationScheduling/index.vue
index a9c06fb..4244bc2 100644
--- a/src/views/productionManagement/operationScheduling/index.vue
+++ b/src/views/productionManagement/operationScheduling/index.vue
@@ -133,7 +133,7 @@
width: 150,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "specificationModel",
width: 150,
},
diff --git a/src/views/productionManagement/productStructure/Detail/index.vue b/src/views/productionManagement/productStructure/Detail/index.vue
index 832c121..86ea952 100644
--- a/src/views/productionManagement/productStructure/Detail/index.vue
+++ b/src/views/productionManagement/productStructure/Detail/index.vue
@@ -143,7 +143,7 @@
prop="bomNo" />
<el-table-column label="浜у搧鍚嶇О"
prop="productName" />
- <el-table-column label="瑙勬牸鍨嬪彿"
+ <el-table-column label="灏哄"
prop="model" />
</el-table>
<product-select-dialog v-if="dataValue.showProductDialog"
diff --git a/src/views/productionManagement/productStructure/StructureEdit.vue b/src/views/productionManagement/productStructure/StructureEdit.vue
index 4d07f5d..40e9cf5 100644
--- a/src/views/productionManagement/productStructure/StructureEdit.vue
+++ b/src/views/productionManagement/productStructure/StructureEdit.vue
@@ -156,7 +156,7 @@
</el-table-column>
<el-table-column label="浜у搧缂栫爜" prop="productCode" />
<el-table-column label="浜у搧鍚嶇О" prop="productName" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="model" />
+ <el-table-column label="灏哄" prop="model" />
<el-table-column label="鍗曚綅" prop="unit" />
</el-table>
diff --git a/src/views/productionManagement/productStructure/index.vue b/src/views/productionManagement/productStructure/index.vue
index bc5a538..d6ec9a1 100644
--- a/src/views/productionManagement/productStructure/index.vue
+++ b/src/views/productionManagement/productStructure/index.vue
@@ -80,7 +80,7 @@
minWidth: 160
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "productModelName",
minWidth: 140
},
diff --git a/src/views/productionManagement/productionCosting/index.vue b/src/views/productionManagement/productionCosting/index.vue
index fc93570..3376970 100644
--- a/src/views/productionManagement/productionCosting/index.vue
+++ b/src/views/productionManagement/productionCosting/index.vue
@@ -100,7 +100,7 @@
minWidth: 100,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "productModelName",
minWidth: 100,
},
diff --git a/src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue b/src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue
index b4a76f6..a3a838e 100644
--- a/src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue
+++ b/src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue
@@ -20,7 +20,7 @@
<el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" width="200" />
<!-- <el-table-column label="椤圭洰鍚嶇О" prop="projectName" width="250" /> -->
<el-table-column label="浜у搧澶х被" prop="productCategory" width="150" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="200" />
+ <el-table-column label="灏哄" prop="specificationModel" width="200" />
<el-table-column label="缁戝畾鏈哄櫒" prop="speculativeTradingName" width="120" />
<el-table-column label="鎬绘暟閲�" prop="quantity" width="100" align="right" />
<el-table-column label="宸叉帓浜�" prop="schedulingNum" width="100" align="right" fixed="right" />
diff --git a/src/views/productionManagement/productionDispatching/components/formDia.vue b/src/views/productionManagement/productionDispatching/components/formDia.vue
index a514d9a..e5e5908 100644
--- a/src/views/productionManagement/productionDispatching/components/formDia.vue
+++ b/src/views/productionManagement/productionDispatching/components/formDia.vue
@@ -21,7 +21,7 @@
</el-row> -->
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="specificationModel">
+ <el-form-item label="灏哄锛�" prop="specificationModel">
<el-input v-model="form.specificationModel" placeholder="璇疯緭鍏�" clearable disabled/>
</el-form-item>
</el-col>
@@ -125,7 +125,7 @@
form: {
projectName: "",
productCategory: "",
- specificationModel: "", // 瑙勬牸鍨嬪彿
+ specificationModel: "", // 灏哄
quantity: "",
schedulingNum: "",
schedulingUserId: "",
diff --git a/src/views/productionManagement/productionDispatching/index.vue b/src/views/productionManagement/productionDispatching/index.vue
index 2d39890..7f6cdf4 100644
--- a/src/views/productionManagement/productionDispatching/index.vue
+++ b/src/views/productionManagement/productionDispatching/index.vue
@@ -128,7 +128,7 @@
width: 160,
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "specificationModel",
width: 120,
},
diff --git a/src/views/productionManagement/productionReporting/index.vue b/src/views/productionManagement/productionReporting/index.vue
index 8490b85..c0e661b 100644
--- a/src/views/productionManagement/productionReporting/index.vue
+++ b/src/views/productionManagement/productionReporting/index.vue
@@ -183,7 +183,7 @@
width: 120,
},
{
- label: "浜у搧瑙勬牸鍨嬪彿",
+ label: "浜у搧灏哄",
prop: "productModelName",
width: 120,
},
diff --git a/src/views/projectManagement/Management/components/formDia.vue b/src/views/projectManagement/Management/components/formDia.vue
index f29512b..e84ae64 100644
--- a/src/views/projectManagement/Management/components/formDia.vue
+++ b/src/views/projectManagement/Management/components/formDia.vue
@@ -192,7 +192,7 @@
<el-table-column v-if="!isView" align="center" type="selection" width="55" />
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
<el-table-column label="浜у搧澶х被" prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
+ <el-table-column label="灏哄" prop="specificationModel" />
<el-table-column label="鍗曚綅" prop="unit" />
<el-table-column label="鏁伴噺" prop="quantity" />
<el-table-column label="绋庣巼(%)" prop="taxRate" />
@@ -555,7 +555,7 @@
</el-row>
<el-row :gutter="30">
<el-col :span="24">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
+ <el-form-item label="灏哄锛�" prop="productModelId">
<el-select v-model="productForm.productModelId" placeholder="璇烽�夋嫨" clearable filterable @change="getProductModel">
<el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
</el-select>
diff --git a/src/views/projectManagement/Management/projectDetail.vue b/src/views/projectManagement/Management/projectDetail.vue
index c54a389..bb0bbcb 100644
--- a/src/views/projectManagement/Management/projectDetail.vue
+++ b/src/views/projectManagement/Management/projectDetail.vue
@@ -64,7 +64,7 @@
<el-table :data="productRows" border show-summary :summary-method="summarizeProductTable">
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
<el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />
+ <el-table-column label="灏哄" prop="specificationModel" show-overflow-tooltip />
<el-table-column label="鍗曚綅" prop="unit" width="90" />
<el-table-column label="鏁伴噺" prop="quantity" width="90" />
<el-table-column label="绋庣巼(%)" prop="taxRate" width="90" />
diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue
index 5f4c975..91abf02 100644
--- a/src/views/qualityManagement/finalInspection/components/formDia.vue
+++ b/src/views/qualityManagement/finalInspection/components/formDia.vue
@@ -24,7 +24,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
+ <el-form-item label="灏哄锛�" prop="productModelId">
<el-select v-model="form.productModelId" placeholder="璇烽�夋嫨" clearable :disabled="operationType === 'edit'"
filterable readonly @change="handleChangeModel">
<el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
@@ -235,12 +235,12 @@
proxy.$refs.formRef?.clearValidate();
});
- // 缂栬緫妯″紡涓嬶紝骞惰鍔犺浇瑙勬牸鍨嬪彿鍜屾寚鏍囬�夐」
+ // 缂栬緫妯″紡涓嬶紝骞惰鍔犺浇灏哄鍜屾寚鏍囬�夐」
if (currentProductId.value) {
// 璁剧疆浜у搧鍚嶇О
form.value.productName = findNodeById(productOptions.value, currentProductId.value);
- // 骞惰鍔犺浇瑙勬牸鍨嬪彿鍜屾寚鏍囬�夐」
+ // 骞惰鍔犺浇灏哄鍜屾寚鏍囬�夐」
const params = {
productId: currentProductId.value,
inspectType: 2
@@ -250,7 +250,7 @@
modelList({ id: currentProductId.value }),
qualityInspectDetailByProductId(params)
]).then(([modelRes, testStandardRes]) => {
- // 璁剧疆瑙勬牸鍨嬪彿閫夐」
+ // 璁剧疆灏哄閫夐」
modelOptions.value = modelRes || [];
// 濡傛灉琛ㄥ崟涓凡鏈� productModelId锛岃缃搴旂殑 model 鍜� unit
if (form.value.productModelId && modelOptions.value.length > 0) {
diff --git a/src/views/qualityManagement/finalInspection/index.vue b/src/views/qualityManagement/finalInspection/index.vue
index eaed2e9..461f1e3 100644
--- a/src/views/qualityManagement/finalInspection/index.vue
+++ b/src/views/qualityManagement/finalInspection/index.vue
@@ -115,7 +115,7 @@
prop: "productName",
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "model",
},
{
diff --git a/src/views/qualityManagement/metricMaintenance/index0.vue b/src/views/qualityManagement/metricMaintenance/index0.vue
index 016a4c1..0d34d45 100644
--- a/src/views/qualityManagement/metricMaintenance/index0.vue
+++ b/src/views/qualityManagement/metricMaintenance/index0.vue
@@ -350,7 +350,7 @@
});
};
-// 鎻愪氦瑙勬牸鍨嬪彿淇敼
+// 鎻愪氦灏哄淇敼
const submitModelForm = () => {
proxy.$refs.modelFormRef.validate((valid) => {
if (valid) {
diff --git a/src/views/qualityManagement/nonconformingManagement/components/formDia.vue b/src/views/qualityManagement/nonconformingManagement/components/formDia.vue
index 0c6562c..7fab7a6 100644
--- a/src/views/qualityManagement/nonconformingManagement/components/formDia.vue
+++ b/src/views/qualityManagement/nonconformingManagement/components/formDia.vue
@@ -34,7 +34,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="model">
+ <el-form-item label="灏哄锛�" prop="model">
<el-select v-model="form.model" placeholder="璇烽�夋嫨" clearable :disabled="operationType === 'edit'"
filterable readonly @change="handleChangeModel">
<el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
diff --git a/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue b/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue
index 8f4492a..97e9c7a 100644
--- a/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue
+++ b/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue
@@ -35,7 +35,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="model">
+ <el-form-item label="灏哄锛�" prop="model">
<el-input v-model="form.model" placeholder="璇疯緭鍏�" clearable disabled/>
</el-form-item>
</el-col>
diff --git a/src/views/qualityManagement/nonconformingManagement/index.vue b/src/views/qualityManagement/nonconformingManagement/index.vue
index 55d2472..bbef6ef 100644
--- a/src/views/qualityManagement/nonconformingManagement/index.vue
+++ b/src/views/qualityManagement/nonconformingManagement/index.vue
@@ -140,7 +140,7 @@
prop: "productName",
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "model",
},
{
diff --git a/src/views/qualityManagement/processInspection/components/formDia.vue b/src/views/qualityManagement/processInspection/components/formDia.vue
index c1185d2..44a072e 100644
--- a/src/views/qualityManagement/processInspection/components/formDia.vue
+++ b/src/views/qualityManagement/processInspection/components/formDia.vue
@@ -33,7 +33,7 @@
</el-row>
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
+ <el-form-item label="灏哄锛�" prop="productModelId">
<el-select v-model="form.productModelId" placeholder="璇烽�夋嫨" clearable :disabled="operationType === 'edit'"
filterable readonly @change="handleChangeModel">
<el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
@@ -248,7 +248,7 @@
}
testStandardOptions.value = [];
tableData.value = [];
- // 鍏堢‘淇濅骇鍝佹爲宸插姞杞斤紝鍚﹀垯缂栬緫鏃朵骇鍝�/瑙勬牸鍨嬪彿鏃犳硶鍙嶆樉
+ // 鍏堢‘淇濅骇鍝佹爲宸插姞杞斤紝鍚﹀垯缂栬緫鏃朵骇鍝�/灏哄鏃犳硶鍙嶆樉
await getProductOptions();
if (operationType.value === 'edit') {
// 鍏堜繚瀛� testStandardId锛岄伩鍏嶈娓呯┖
@@ -256,7 +256,7 @@
// 鍏堣缃〃鍗曟暟鎹紝浣嗘殏鏃舵竻绌� testStandardId锛岀瓑閫夐」鍔犺浇瀹屾垚鍚庡啀璁剧疆
form.value = {...row, testStandardId: ''}
currentProductId.value = row.productId || 0
- // 鍏抽敭锛氱紪杈戞椂鍔犺浇瑙勬牸鍨嬪彿涓嬫媺閫夐」锛屾墠鑳藉弽鏄� productModelId
+ // 鍏抽敭锛氱紪杈戞椂鍔犺浇灏哄涓嬫媺閫夐」锛屾墠鑳藉弽鏄� productModelId
if (currentProductId.value) {
try {
const res = await modelList({ id: currentProductId.value });
@@ -266,7 +266,7 @@
handleChangeModel(form.value.productModelId);
}
} catch (e) {
- console.error("鍔犺浇瑙勬牸鍨嬪彿澶辫触", e);
+ console.error("鍔犺浇灏哄澶辫触", e);
modelOptions.value = [];
}
}
diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index cbeab71..2cb567f 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -114,7 +114,7 @@
prop: "productName",
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "model",
},
{
diff --git a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
index 7e373bf..9dd920d 100644
--- a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
@@ -43,7 +43,7 @@
</el-row>
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
+ <el-form-item label="灏哄锛�" prop="productModelId">
<el-select v-model="form.productModelId" placeholder="璇烽�夋嫨" clearable :disabled="operationType === 'edit'"
filterable readonly @change="handleChangeModel">
<el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
@@ -258,14 +258,14 @@
}
testStandardOptions.value = [];
tableData.value = [];
- // 鍏堢‘淇濅骇鍝佹爲宸插姞杞斤紝鍚﹀垯缂栬緫鏃朵骇鍝�/瑙勬牸鍨嬪彿鏃犳硶鍙嶆樉
+ // 鍏堢‘淇濅骇鍝佹爲宸插姞杞斤紝鍚﹀垯缂栬緫鏃朵骇鍝�/灏哄鏃犳硶鍙嶆樉
await getProductOptions();
if (operationType.value === 'edit') {
// 鍏堜繚瀛� testStandardId锛岄伩鍏嶈娓呯┖
const savedTestStandardId = row.testStandardId;
form.value = {...row}
currentProductId.value = row.productId || 0
- // 鍏抽敭锛氱紪杈戞椂鍔犺浇瑙勬牸鍨嬪彿涓嬫媺閫夐」锛屾墠鑳藉弽鏄� productModelId
+ // 鍏抽敭锛氱紪杈戞椂鍔犺浇灏哄涓嬫媺閫夐」锛屾墠鑳藉弽鏄� productModelId
if (currentProductId.value) {
try {
const res = await modelList({ id: currentProductId.value });
@@ -275,7 +275,7 @@
handleChangeModel(form.value.productModelId);
}
} catch (e) {
- console.error("鍔犺浇瑙勬牸鍨嬪彿澶辫触", e);
+ console.error("鍔犺浇灏哄澶辫触", e);
modelOptions.value = [];
}
}
diff --git a/src/views/qualityManagement/rawMaterialInspection/index.vue b/src/views/qualityManagement/rawMaterialInspection/index.vue
index 26504b0..09d36ce 100644
--- a/src/views/qualityManagement/rawMaterialInspection/index.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/index.vue
@@ -116,7 +116,7 @@
prop: "productName",
},
{
- label: "瑙勬牸鍨嬪彿",
+ label: "灏哄",
prop: "model",
},
{
diff --git a/src/views/safeProduction/safeWorkApproval/components/approvalDia.vue b/src/views/safeProduction/safeWorkApproval/components/approvalDia.vue
index 8d40a2e..a7132af 100644
--- a/src/views/safeProduction/safeWorkApproval/components/approvalDia.vue
+++ b/src/views/safeProduction/safeWorkApproval/components/approvalDia.vue
@@ -116,7 +116,7 @@
<el-table-column prop="product"
label="浜у搧鍚嶇О" />
<el-table-column prop="specification"
- label="瑙勬牸鍨嬪彿" />
+ label="灏哄" />
<el-table-column prop="unit"
label="鍗曚綅" />
<el-table-column prop="unitPrice"
@@ -176,7 +176,7 @@
<el-table-column prop="productCategory"
label="浜у搧鍚嶇О" />
<el-table-column prop="specificationModel"
- label="瑙勬牸鍨嬪彿" />
+ label="灏哄" />
<el-table-column prop="unit"
label="鍗曚綅" />
<el-table-column prop="quantity"
diff --git a/src/views/salesManagement/deliveryLedger/index.vue b/src/views/salesManagement/deliveryLedger/index.vue
index d8fc265..d0fea74 100644
--- a/src/views/salesManagement/deliveryLedger/index.vue
+++ b/src/views/salesManagement/deliveryLedger/index.vue
@@ -31,7 +31,7 @@
<el-table-column label="鍙戣揣璁㈠崟鍙�" prop="shippingNo" show-overflow-tooltip />
<el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" show-overflow-tooltip />
<el-table-column label="浜у搧鍚嶇О" prop="productCategory" show-overflow-tooltip />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" show-overflow-tooltip />
+ <el-table-column label="灏哄" prop="specificationModel" show-overflow-tooltip />
<el-table-column label="鍙戣揣杩涘害" align="center" width="150">
<template #default="scope">
<el-progress
diff --git a/src/views/salesManagement/invoiceLedger/index.vue b/src/views/salesManagement/invoiceLedger/index.vue
index 3827854..153554c 100644
--- a/src/views/salesManagement/invoiceLedger/index.vue
+++ b/src/views/salesManagement/invoiceLedger/index.vue
@@ -33,7 +33,7 @@
<el-table-column label="閿�鍞悎鍚屽彿" prop="salesContractNo" show-overflow-tooltip width="180" />
<el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" show-overflow-tooltip width="240" />
<el-table-column label="浜у搧澶х被" prop="productCategory" width="200" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="160" show-overflow-tooltip />
+ <el-table-column label="灏哄" prop="specificationModel" width="160" show-overflow-tooltip />
<el-table-column label="鍙戠エ鍙�" prop="invoiceNo" width="200" show-overflow-tooltip />
<el-table-column label="鍙戠エ閲戦(鍏�)" prop="invoiceTotal" show-overflow-tooltip :formatter="formattedNumber"
width="200" />
diff --git a/src/views/salesManagement/invoiceRegistration/index.vue b/src/views/salesManagement/invoiceRegistration/index.vue
index 44e1c4e..7a21e34 100644
--- a/src/views/salesManagement/invoiceRegistration/index.vue
+++ b/src/views/salesManagement/invoiceRegistration/index.vue
@@ -69,7 +69,7 @@
/>
<el-table-column label="浜у搧澶х被" prop="productCategory" />
<el-table-column
- label="瑙勬牸鍨嬪彿"
+ label="灏哄"
prop="specificationModel"
width="150"
/>
@@ -274,7 +274,7 @@
</el-table-column>
<el-table-column label="浜у搧澶х被" prop="productCategory" />
<el-table-column
- label="瑙勬牸鍨嬪彿"
+ label="灏哄"
prop="specificationModel"
width="150"
/>
diff --git a/src/views/salesManagement/receiptPayment/index.vue b/src/views/salesManagement/receiptPayment/index.vue
index 25bd280..521cee1 100644
--- a/src/views/salesManagement/receiptPayment/index.vue
+++ b/src/views/salesManagement/receiptPayment/index.vue
@@ -155,7 +155,7 @@
width="100"
/>
<el-table-column
- label="瑙勬牸鍨嬪彿"
+ label="灏哄"
prop="specificationModel"
show-overflow-tooltip
width="200"
@@ -215,7 +215,7 @@
width="100"
/>
<el-table-column
- label="瑙勬牸鍨嬪彿"
+ label="灏哄"
prop="specificationModel"
show-overflow-tooltip
width="200"
diff --git a/src/views/salesManagement/returnOrder/components/detailDia.vue b/src/views/salesManagement/returnOrder/components/detailDia.vue
index 9ff4e89..619fabb 100644
--- a/src/views/salesManagement/returnOrder/components/detailDia.vue
+++ b/src/views/salesManagement/returnOrder/components/detailDia.vue
@@ -43,7 +43,7 @@
const tableColumn = [
{align: "center", label: "浜у搧澶х被", prop: "productCategory"},
- {align: "center", label: "瑙勬牸鍨嬪彿", prop: "specificationModel"},
+ {align: "center", label: "灏哄", prop: "specificationModel"},
{align: "center", label: "鍗曚綅", prop: "unit", width: 80},
{align: "center", label: "鎬绘暟閲�", prop: "quantity", width: 120},
{align: "center", label: "宸查��璐ф暟閲�", prop: "totalReturnNum", width: 120},
diff --git a/src/views/salesManagement/returnOrder/components/formDia.vue b/src/views/salesManagement/returnOrder/components/formDia.vue
index 27bbb0d..af30b77 100644
--- a/src/views/salesManagement/returnOrder/components/formDia.vue
+++ b/src/views/salesManagement/returnOrder/components/formDia.vue
@@ -146,7 +146,7 @@
>
<el-table-column align="center" type="selection" width="55" />
<el-table-column align="center" prop="productCategory" label="浜у搧澶х被" />
- <el-table-column align="center" prop="specificationModel" label="瑙勬牸鍨嬪彿" />
+ <el-table-column align="center" prop="specificationModel" label="灏哄" />
<el-table-column align="center" prop="unit" label="鍗曚綅" />
<el-table-column align="center" prop="quantity" label="鎬绘暟閲�" />
<el-table-column align="center" prop="unQuantity" label="鏈��璐ф暟閲�" />
@@ -216,7 +216,7 @@
const tableColumn = ref([
{align: "center", label: "浜у搧澶х被", prop: "productCategory" },
- {align: "center", label: "瑙勬牸鍨嬪彿", prop: "specificationModel" },
+ {align: "center", label: "灏哄", prop: "specificationModel" },
{align: "center", label: "鍗曚綅", prop: "unit", width: 80 },
{align: "center", label: "鎬绘暟閲�", prop: "quantity", width: 120 },
{align: "center", label: "宸查��璐ф暟閲�", prop: "totalReturnNum", width: 120 },
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 57ecb7f..86e03a3 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -30,6 +30,9 @@
<el-button type="primary" @click="openForm('add')">
鏂板鍙拌处
</el-button>
+ <el-button type="primary" plain :disabled="selectedRows.length === 0" @click="handleBatchExportContract">
+ 瀵煎嚭鍚堝悓
+ </el-button>
<el-button type="primary" plain @click="handleImport">瀵煎叆</el-button>
<el-button @click="handleOut">瀵煎嚭</el-button>
<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
@@ -45,18 +48,10 @@
<el-table :data="props.row.children" border show-summary :summary-method="(param) => summarizeChildrenTable(param, props.row)">
<el-table-column align="center" label="搴忓彿" type="index"/>
<el-table-column label="浜у搧澶х被" prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
+ <el-table-column label="灏哄" prop="specificationModel" />
+ <el-table-column label="绾稿紶" prop="paper" />
<el-table-column label="鍗曚綅" prop="unit" />
- <el-table-column label="浜у搧鐘舵��"
- width="100px"
- align="center">
- <template #default="scope">
- <el-tag v-if="scope.row.approveStatus === 1"
- type="success">鍏呰冻</el-tag>
- <el-tag v-else
- type="danger">涓嶈冻</el-tag>
- </template>
- </el-table-column>
+ <el-table-column label="浜у搧鏁伴噺" width="100px" align="center" prop="productNum"></el-table-column>
<el-table-column label="鍙戣揣鐘舵��" width="140" align="center">
<template #default="scope">
<el-tag :type="getShippingStatusType(scope.row)" size="small">
@@ -121,13 +116,13 @@
:operation-type="operationType" @close="closeDia" @confirm="submitForm" @cancel="closeDia">
<el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
<!-- 鎶ヤ环鍗曞鍏ュ叆鍙o細鏀惧湪琛ㄥ崟椤堕儴锛岄�夋嫨鍚庡弽鏄惧鎴�/涓氬姟鍛樼瓑 -->
- <el-row v-if="operationType === 'add'" style="margin-bottom: 10px;">
- <el-col :span="24" style="text-align: right;">
- <el-button type="primary" plain @click="openQuotationDialog">
- 浠庨攢鍞姤浠峰鍏�
- </el-button>
- </el-col>
- </el-row>
+<!-- <el-row v-if="operationType === 'add'" style="margin-bottom: 10px;">-->
+<!-- <el-col :span="24" style="text-align: right;">-->
+<!-- <el-button type="primary" plain @click="openQuotationDialog">-->
+<!-- 浠庨攢鍞姤浠峰鍏�-->
+<!-- </el-button>-->
+<!-- </el-col>-->
+<!-- </el-row>-->
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="閿�鍞悎鍚屽彿锛�" prop="salesContractNo">
@@ -147,11 +142,7 @@
<el-col :span="12">
<el-form-item label="瀹㈡埛鍚嶇О锛�" prop="customerId">
<el-select v-model="form.customerId" placeholder="璇烽�夋嫨" clearable :disabled="operationType === 'view'" filterable>
- <el-option v-for="item in customerOption" :key="item.id" :label="item.customerName" :value="item.id">
- {{
- item.customerName + "鈥斺��" + item.taxpayerIdentificationNumber
- }}
- </el-option>
+ <el-option v-for="item in customerOption" :key="item.id" :label="item.customerName" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -161,7 +152,7 @@
</el-form-item>
</el-col>
</el-row>
- <el-row :gutter="30">
+ <el-row :gutter="30">
<el-col :span="12">
<el-form-item label="绛捐鏃ユ湡锛�" prop="executionDate">
<el-date-picker style="width: 100%" v-model="form.executionDate" value-format="YYYY-MM-DD"
@@ -171,6 +162,36 @@
<el-col :span="12">
<el-form-item label="浠樻鏂瑰紡">
<el-input v-model="form.paymentMethod" placeholder="璇疯緭鍏�" clearable :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="浠锋牸绫诲瀷锛�">
+ <el-input v-model="form.priceType" placeholder="璇疯緭鍏�" clearable :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="瀹氶噾姣斾緥(%)锛�">
+ <el-input-number v-model="form.depositRatio" :min="0" :max="100" :precision="2" :step="0.1" style="width: 100%" :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="瀹氶噾閲戦(鍏�)锛�">
+ <el-input-number v-model="form.depositAmount" :min="0" :precision="2" :step="0.01" style="width: 100%" :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="閫佽揣鍦板潃锛�">
+ <el-input v-model="form.deliveryAddress" placeholder="璇疯緭鍏�" clearable :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍙戣揣鍛ㄦ湡锛�">
+ <el-input-number v-model="form.deliveryCycle" :min="0" :precision="0" style="width: calc(100% - 68px)" :disabled="operationType === 'view'" />
+ <span style="margin-left: 8px; color: #606266;">宸ヤ綔鏃�</span>
</el-form-item>
</el-col>
</el-row>
@@ -212,13 +233,15 @@
:selectable="(row) => !isProductShipped(row)" />
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
<el-table-column label="浜у搧澶х被" prop="productCategory" />
- <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
+ <el-table-column label="灏哄" prop="specificationModel" />
+ <el-table-column label="绾稿紶" prop="paper" />
<el-table-column label="鍗曚綅" prop="unit" />
<el-table-column label="鏁伴噺" prop="quantity" />
<el-table-column label="绋庣巼(%)" prop="taxRate" />
<el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" :formatter="formattedNumber" />
<el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" :formatter="formattedNumber" />
<el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" :formatter="formattedNumber" />
+ <el-table-column label="澶囨敞" prop="remark" show-overflow-tooltip />
<el-table-column fixed="right" label="鎿嶄綔" min-width="60" align="center" v-if="operationType !== 'view'">
<template #default="scope">
<el-button link type="primary" size="small"
@@ -263,13 +286,6 @@
>
<div style="margin-bottom: 12px; display:flex; gap: 12px; align-items:center;">
<el-input
- v-model="quotationSearchForm.quotationNo"
- placeholder="璇疯緭鍏ユ姤浠峰崟鍙�"
- clearable
- style="max-width: 260px;"
- @change="fetchQuotationList"
- />
- <el-input
v-model="quotationSearchForm.customer"
placeholder="璇疯緭鍏ュ鎴峰悕绉�"
clearable
@@ -288,10 +304,46 @@
height="420px"
>
<el-table-column align="center" label="搴忓彿" type="index" width="60" />
- <el-table-column prop="quotationNo" label="鎶ヤ环鍗曞彿" width="180" show-overflow-tooltip />
- <el-table-column prop="customer" label="瀹㈡埛鍚嶇О" min-width="220" show-overflow-tooltip />
- <el-table-column prop="salesperson" label="涓氬姟鍛�" width="120" show-overflow-tooltip />
- <el-table-column prop="quotationDate" label="鎶ヤ环鏃ユ湡" width="140" />
+ <el-table-column label="浜у搧鍚嶇О" min-width="180" show-overflow-tooltip>
+ <template #default="{ row }">
+ {{ getPrimaryQuotationProductField(row, "product") }}
+ </template>
+ </el-table-column>
+ <el-table-column label="灏哄" min-width="140" show-overflow-tooltip>
+ <template #default="{ row }">
+ {{ getPrimaryQuotationProductField(row, "specification") }}
+ </template>
+ </el-table-column>
+ <el-table-column label="绾稿紶" min-width="120" show-overflow-tooltip>
+ <template #default="{ row }">
+ {{ getPrimaryQuotationProductField(row, "paper") }}
+ </template>
+ </el-table-column>
+ <el-table-column label="瀹氶噺" min-width="100" show-overflow-tooltip>
+ <template #default="{ row }">
+ {{ getPrimaryQuotationProductField(row, "grammage") }}
+ </template>
+ </el-table-column>
+ <el-table-column label="鍗曚环(鍏�)" width="120" align="right">
+ <template #default="{ row }">
+ {{ formatQuotationMoney(getPrimaryQuotationProductValue(row, "unitPrice")) }}
+ </template>
+ </el-table-column>
+ <el-table-column label="鍗扮増璐�(鍏�)" width="120" align="right">
+ <template #default="{ row }">
+ {{ formatQuotationMoney(getPrimaryQuotationProductValue(row, "printingPlateFee")) }}
+ </template>
+ </el-table-column>
+ <el-table-column label="鍒�鐗堣垂(鍏�)" width="120" align="right">
+ <template #default="{ row }">
+ {{ formatQuotationMoney(getPrimaryQuotationProductValue(row, "diePlateFee")) }}
+ </template>
+ </el-table-column>
+ <el-table-column label="纾ㄥ叿璐�(鍏�)" width="120" align="right">
+ <template #default="{ row }">
+ {{ formatQuotationMoney(getPrimaryQuotationProductValue(row, "moldFee")) }}
+ </template>
+ </el-table-column>
<el-table-column prop="status" label="瀹℃壒鐘舵��" width="120" align="center" />
<el-table-column prop="totalAmount" label="鎶ヤ环閲戦(鍏�)" width="160" align="right">
<template #default="scope">
@@ -337,10 +389,17 @@
</el-row>
<el-row :gutter="30">
<el-col :span="24">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
+ <el-form-item label="灏哄锛�" prop="productModelId">
<el-select v-model="productForm.productModelId" placeholder="璇烽�夋嫨" clearable @change="getProductModel" filterable>
<el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
</el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="24">
+ <el-form-item label="绾稿紶锛�">
+ <el-input v-model="productForm.paper" placeholder="璇疯緭鍏�" clearable />
</el-form-item>
</el-col>
</el-row>
@@ -351,7 +410,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="绋庣巼(%)锛�" prop="taxRate">
+ <el-form-item label="绋庣巼(%)锛堥�夊~锛夛細" prop="taxRate">
<el-select v-model="productForm.taxRate" placeholder="璇烽�夋嫨" clearable @change="calculateFromTaxRate">
<el-option label="1" value="1" />
<el-option label="6" value="6" />
@@ -395,6 +454,13 @@
<el-option label="澧炴櫘绁�" value="澧炴櫘绁�" />
<el-option label="澧炰笓绁�" value="澧炰笓绁�" />
</el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="24">
+ <el-form-item label="澶囨敞锛�">
+ <el-input v-model="productForm.remark" placeholder="璇疯緭鍏�" clearable type="textarea" :rows="2" />
</el-form-item>
</el-col>
</el-row>
@@ -493,7 +559,7 @@
<thead>
<tr>
<th>浜у搧鍚嶇О</th>
- <th>瑙勬牸鍨嬪彿</th>
+ <th>灏哄</th>
<th>鍗曚綅</th>
<th>鍗曚环</th>
<th>闆跺敭鏁伴噺</th>
@@ -647,12 +713,19 @@
salesContractNo: "",
salesman: "",
customerId: "",
+ projectName: "",
+ priceType: "",
+ depositRatio: null,
+ depositAmount: null,
+ deliveryAddress: "",
+ deliveryCycle: null,
entryPerson: "",
entryDate: "",
deliveryDate: "",
maintenanceTime: "",
productData: [],
executionDate: "",
+ remarks: "",
hasProductionRecord: false,
},
rules: {
@@ -674,6 +747,7 @@
productForm: {
productCategory: "",
specificationModel: "",
+ paper: "",
unit: "",
quantity: "",
taxInclusiveUnitPrice: "",
@@ -681,6 +755,7 @@
taxInclusiveTotalPrice: "",
taxExclusiveTotalPrice: "",
invoiceType: "",
+ remark: "",
},
productRules: {
productCategory: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
@@ -693,7 +768,6 @@
taxInclusiveUnitPrice: [
{ required: true, message: "璇疯緭鍏�", trigger: "blur" },
],
- taxRate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
taxInclusiveTotalPrice: [
{ required: true, message: "璇疯緭鍏�", trigger: "blur" },
],
@@ -704,6 +778,27 @@
},
});
const { productForm, productRules } = toRefs(productFormData);
+const createDefaultProductForm = () => ({
+ productCategory: "",
+ specificationModel: "",
+ paper: "",
+ unit: "",
+ quantity: "",
+ taxInclusiveUnitPrice: "",
+ taxRate: "",
+ taxInclusiveTotalPrice: "",
+ taxExclusiveTotalPrice: "",
+ invoiceType: "",
+ remark: "",
+});
+const normalizeProductItem = (target) => {
+ if (!target) return target;
+ const remark = target.remark ?? "";
+ return {
+ ...target,
+ remark: remark,
+ };
+};
// 闃叉寰幆璁$畻鐨勬爣蹇�
const isCalculating = ref(false);
const upload = reactive({
@@ -1022,6 +1117,25 @@
"taxExclusiveTotalPrice",
]);
};
+const createDefaultForm = () => ({
+ salesContractNo: "",
+ salesman: "",
+ customerId: "",
+ projectName: "",
+ priceType: "",
+ depositRatio: null,
+ depositAmount: null,
+ deliveryAddress: "",
+ deliveryCycle: null,
+ entryPerson: userStore.id,
+ entryDate: getCurrentDate(),
+ deliveryDate: "",
+ maintenanceTime: "",
+ productData: [],
+ executionDate: getCurrentDate(),
+ remarks: "",
+ hasProductionRecord: false,
+});
// 鎵撳紑寮规
const openForm = async (type, row) => {
if (type === "edit" && row && !canEditLedger(row)) {
@@ -1029,7 +1143,7 @@
return;
}
operationType.value = type;
- form.value = {};
+ form.value = createDefaultForm();
productData.value = [];
selectedQuotation.value = null;
let userLists = await userListNoPage();
@@ -1037,18 +1151,16 @@
listCustomerPrivatePool({current: -1,size:-1}).then((res) => {
customerOption.value = res.data.records;
});
- form.value.entryPerson = userStore.id;
if (type === "add") {
- // 鏂板鏃惰缃綍鍏ユ棩鏈熶负褰撳ぉ
- form.value.entryDate = getCurrentDate();
- // 绛捐鏃ユ湡榛樿涓哄綋澶�
- form.value.executionDate = getCurrentDate();
+ // 榛樿鍊煎凡鍦� createDefaultForm 涓缃�
} else {
currentId.value = row.id;
getSalesLedgerWithProducts({ id: row.id, type: 1 }).then((res) => {
- form.value = { ...res };
+ form.value = { ...createDefaultForm(), ...res };
form.value.entryPerson = Number(res.entryPerson);
- productData.value = form.value.productData;
+ productData.value = (form.value.productData || []).map((item) =>
+ normalizeProductItem(item)
+ );
fileList.value = form.value.salesLedgerFiles;
});
}
@@ -1058,7 +1170,6 @@
// form.value.entryPerson = userAll.user.userId // 璁剧疆榛樿涓氬姟鍛樹负褰撳墠鐢ㄦ埛
// }
// });
- form.value.entryDate = getCurrentDate(); // 璁剧疆榛樿褰曞叆鏃ユ湡涓哄綋鍓嶆棩鏈�
dialogFormVisible.value = true;
};
@@ -1113,6 +1224,28 @@
fetchQuotationList();
};
+const getPrimaryQuotationProduct = (row) => {
+ if (!Array.isArray(row?.products) || row.products.length === 0) return null;
+ return row.products[0];
+};
+
+const getPrimaryQuotationProductField = (row, field) => {
+ const primary = getPrimaryQuotationProduct(row);
+ const value = primary?.[field];
+ if (value === undefined || value === null || value === "") return "--";
+ if ((field === "product" || field === "specification") && Array.isArray(row?.products) && row.products.length > 1) {
+ return `${value} 绛�${row.products.length}椤筦;
+ }
+ return value;
+};
+
+const getPrimaryQuotationProductValue = (row, field) => {
+ const primary = getPrimaryQuotationProduct(row);
+ return Number(primary?.[field] || 0);
+};
+
+const formatQuotationMoney = (value) => Number(value || 0).toFixed(2);
+
// 閫変腑鎶ヤ环鍗曞悗鍥炲~鍒板彴璐﹁〃鍗�
const applyQuotation = (row) => {
if (!row) return;
@@ -1139,13 +1272,18 @@
productData.value = products.map((p) => {
const quantity = Number(p.quantity ?? 0) || 0;
const unitPrice = Number(p.unitPrice ?? 0) || 0;
- const taxRate = "13"; // 榛樿 13%锛屼究浜庣洿鎺ユ彁浜わ紙濡傞渶鍙湪浜у搧涓嚜琛屼慨鏀癸級
+ const taxRate = p.taxRate !== undefined && p.taxRate !== null && p.taxRate !== ""
+ ? String(p.taxRate)
+ : "";
const taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
- const taxExclusiveTotalPrice = proxy.calculateTaxExclusiveTotalPrice(taxInclusiveTotalPrice, taxRate);
+ const taxExclusiveTotalPrice = taxRate
+ ? proxy.calculateTaxExclusiveTotalPrice(taxInclusiveTotalPrice, taxRate)
+ : taxInclusiveTotalPrice;
return {
// 鍙拌处瀛楁
productCategory: p.product || p.productName || "",
specificationModel: p.specification || "",
+ paper: p.paper || "",
unit: p.unit || "",
quantity: quantity,
taxRate: taxRate,
@@ -1153,6 +1291,7 @@
taxInclusiveTotalPrice: taxInclusiveTotalPrice,
taxExclusiveTotalPrice: taxExclusiveTotalPrice,
invoiceType: "澧炴櫘绁�",
+ remark: p.remark || "",
};
});
@@ -1203,7 +1342,10 @@
if (valid) {
console.log('productData.value--', productData.value)
if (productData.value !== null && productData.value.length > 0) {
- form.value.productData = proxy.HaveJson(productData.value);
+ const normalizedProductData = productData.value.map((item) =>
+ normalizeProductItem(item)
+ );
+ form.value.productData = proxy.HaveJson(normalizedProductData);
} else {
proxy.$modal.msgWarning("璇锋坊鍔犱骇鍝佷俊鎭�");
return;
@@ -1239,12 +1381,12 @@
}
productOperationType.value = type;
- productForm.value = {};
+ productForm.value = createDefaultProductForm();
proxy.resetForm("productFormRef");
if (type === "edit") {
- productForm.value = { ...row };
+ productForm.value = { ...createDefaultProductForm(), ...normalizeProductItem(row) };
productIndex.value = index;
- // 缂栬緫鏃舵牴鎹骇鍝佸ぇ绫诲悕绉板弽鏌� tree 鑺傜偣 id锛屽苟鍔犺浇瑙勬牸鍨嬪彿鍒楄〃
+ // 缂栬緫鏃舵牴鎹骇鍝佸ぇ绫诲悕绉板弽鏌� tree 鑺傜偣 id锛屽苟鍔犺浇灏哄鍒楄〃
try {
const options = productOptions.value && productOptions.value.length > 0
? productOptions.value
@@ -1253,7 +1395,7 @@
if (categoryId) {
const models = await modelList({ id: categoryId });
modelOptions.value = models || [];
- // 鏍规嵁褰撳墠瑙勬牸鍨嬪彿鍚嶇О鍙嶆煡骞惰缃� productModelId锛屼究浜庝笅鎷夋鏄剧ず宸查�夊��
+ // 鏍规嵁褰撳墠灏哄鍚嶇О鍙嶆煡骞惰缃� productModelId锛屼究浜庝笅鎷夋鏄剧ず宸查�夊��
const currentModel = (modelOptions.value || []).find(
(m) => m.model === productForm.value.specificationModel
);
@@ -1263,17 +1405,28 @@
}
} catch (e) {
// 鍔犺浇澶辫触鏃朵繚鎸佸彲缂栬緫锛屼笉涓柇寮圭獥
- console.error("鍔犺浇浜у搧瑙勬牸鍨嬪彿澶辫触", e);
+ console.error("鍔犺浇浜у搧灏哄澶辫触", e);
}
} else {
getProductOptions()
}
productFormVisible.value = true;
};
+const normalizeProductTaxFields = (target) => {
+ if (!target) return;
+ const inclusiveTotalPrice = Number(target.taxInclusiveTotalPrice || 0);
+ const taxRate = target.taxRate;
+ if (taxRate) {
+ target.taxExclusiveTotalPrice = proxy.calculateTaxExclusiveTotalPrice(inclusiveTotalPrice, taxRate);
+ } else {
+ target.taxExclusiveTotalPrice = inclusiveTotalPrice.toFixed(2);
+ }
+};
// 鎻愪氦浜у搧琛ㄥ崟
const submitProduct = () => {
proxy.$refs["productFormRef"].validate((valid) => {
if (valid) {
+ normalizeProductTaxFields(productForm.value);
if (operationType.value === "edit") {
submitProductEdit();
} else {
@@ -1290,11 +1443,11 @@
const submitProductEdit = () => {
productForm.value.salesLedgerId = currentId.value;
productForm.value.type = 1
- addOrUpdateSalesLedgerProduct(productForm.value).then((res) => {
+ addOrUpdateSalesLedgerProduct(normalizeProductItem(productForm.value)).then((res) => {
proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
closeProductDia();
getSalesLedgerWithProducts({ id: currentId.value, type: 1 }).then((res) => {
- productData.value = res.productData;
+ productData.value = (res.productData || []).map((item) => normalizeProductItem(item));
});
});
};
@@ -1337,7 +1490,7 @@
closeProductDia();
getSalesLedgerWithProducts({ id: currentId.value, type: 1 }).then(
(res) => {
- productData.value = res.productData;
+ productData.value = (res.productData || []).map((item) => normalizeProductItem(item));
}
);
});
@@ -1678,7 +1831,7 @@
<thead>
<tr>
<th>浜у搧鍚嶇О</th>
- <th>瑙勬牸鍨嬪彿</th>
+ <th>灏哄</th>
<th>鍗曚綅</th>
<th>鍗曚环</th>
<th>闆跺敭鏁伴噺</th>
@@ -1837,6 +1990,8 @@
productForm.value.taxInclusiveTotalPrice,
productForm.value.taxRate
);
+ } else {
+ productForm.value.taxExclusiveTotalPrice = Number(productForm.value.taxInclusiveTotalPrice || 0).toFixed(2);
}
};
@@ -1863,6 +2018,8 @@
totalPrice,
productForm.value.taxRate
);
+ } else {
+ productForm.value.taxExclusiveTotalPrice = totalPrice.toFixed(2);
}
isCalculating.value = false;
@@ -1870,25 +2027,24 @@
// 鏍规嵁涓嶅惈绋庢�讳环璁$畻鍚◣鍗曚环鍜屾暟閲�
const calculateFromExclusiveTotalPrice = () => {
- if (!productForm.value.taxRate) {
- proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
- return;
- }
if (isCalculating.value) return;
const exclusiveTotalPrice = parseFloat(productForm.value.taxExclusiveTotalPrice);
const quantity = parseFloat(productForm.value.quantity);
const taxRate = parseFloat(productForm.value.taxRate);
- if (!exclusiveTotalPrice || !quantity || quantity <= 0 || !taxRate) {
+ if (!exclusiveTotalPrice || !quantity || quantity <= 0) {
return;
}
isCalculating.value = true;
- // 鍏堣绠楀惈绋庢�讳环 = 涓嶅惈绋庢�讳环 / (1 - 绋庣巼/100)
- const taxRateDecimal = taxRate / 100;
- const inclusiveTotalPrice = exclusiveTotalPrice / (1 - taxRateDecimal);
+ let inclusiveTotalPrice = exclusiveTotalPrice;
+ if (taxRate) {
+ // 鍏堣绠楀惈绋庢�讳环 = 涓嶅惈绋庢�讳环 / (1 - 绋庣巼/100)
+ const taxRateDecimal = taxRate / 100;
+ inclusiveTotalPrice = exclusiveTotalPrice / (1 - taxRateDecimal);
+ }
productForm.value.taxInclusiveTotalPrice = inclusiveTotalPrice.toFixed(2);
// 璁$畻鍚◣鍗曚环 = 鍚◣鎬讳环 / 鏁伴噺
@@ -1899,10 +2055,6 @@
// 鏍规嵁鏁伴噺鍙樺寲璁$畻鎬讳环
const calculateFromQuantity = () => {
- if (!productForm.value.taxRate) {
- proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
- return;
- }
if (isCalculating.value) return;
const quantity = parseFloat(productForm.value.quantity);
@@ -1924,6 +2076,8 @@
productForm.value.taxInclusiveTotalPrice,
productForm.value.taxRate
);
+ } else {
+ productForm.value.taxExclusiveTotalPrice = Number(productForm.value.taxInclusiveTotalPrice || 0).toFixed(2);
}
isCalculating.value = false;
@@ -1931,10 +2085,6 @@
// 鏍规嵁鍚◣鍗曚环鍙樺寲璁$畻鎬讳环
const calculateFromUnitPrice = () => {
- if (!productForm.value.taxRate) {
- proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
- return;
- }
if (isCalculating.value) return;
const quantity = parseFloat(productForm.value.quantity);
@@ -1956,6 +2106,8 @@
productForm.value.taxInclusiveTotalPrice,
productForm.value.taxRate
);
+ } else {
+ productForm.value.taxExclusiveTotalPrice = Number(productForm.value.taxInclusiveTotalPrice || 0).toFixed(2);
}
isCalculating.value = false;
@@ -1963,27 +2115,27 @@
// 鏍规嵁绋庣巼鍙樺寲璁$畻涓嶅惈绋庢�讳环
const calculateFromTaxRate = () => {
- if (!productForm.value.taxRate) {
- proxy.$modal.msgWarning("璇峰厛閫夋嫨绋庣巼");
- return;
- }
if (isCalculating.value) return;
const inclusiveTotalPrice = parseFloat(productForm.value.taxInclusiveTotalPrice);
const taxRate = parseFloat(productForm.value.taxRate);
- if (!inclusiveTotalPrice || !taxRate) {
+ if (!inclusiveTotalPrice) {
return;
}
isCalculating.value = true;
- // 璁$畻涓嶅惈绋庢�讳环
- productForm.value.taxExclusiveTotalPrice =
- proxy.calculateTaxExclusiveTotalPrice(
- inclusiveTotalPrice,
- taxRate
- );
+ if (taxRate) {
+ // 璁$畻涓嶅惈绋庢�讳环
+ productForm.value.taxExclusiveTotalPrice =
+ proxy.calculateTaxExclusiveTotalPrice(
+ inclusiveTotalPrice,
+ taxRate
+ );
+ } else {
+ productForm.value.taxExclusiveTotalPrice = inclusiveTotalPrice.toFixed(2);
+ }
isCalculating.value = false;
};
@@ -2063,6 +2215,11 @@
* @param row 琛屾暟鎹�
*/
const canShip = (row) => {
+ const productNum = Number(row.productNum);
+ const quantity = Number(row.quantity);
+ if (!Number.isFinite(productNum) || !Number.isFinite(quantity) || productNum < quantity) {
+ return false;
+ }
// 浜у搧鐘舵�佸繀椤绘槸鍏呰冻锛坅pproveStatus === 1锛�
if (row.approveStatus !== 1) {
return false;
@@ -2138,11 +2295,46 @@
});
}
+const handleBatchExportContract = () => {
+ if (selectedRows.value.length === 0) {
+ proxy.$modal.msgWarning("璇烽�夋嫨瑕佸鍑虹殑鍙拌处");
+ return;
+ }
+ const firstCustomerKey =
+ selectedRows.value[0].customerId ?? selectedRows.value[0].customerName ?? "";
+ const hasDifferentCustomer = selectedRows.value.some((row) => {
+ const customerKey = row.customerId ?? row.customerName ?? "";
+ return String(customerKey) !== String(firstCustomerKey);
+ });
+ if (hasDifferentCustomer) {
+ proxy.$modal.msgWarning("浠呮敮鎸佸悓涓�瀹㈡埛鍚屾椂瀵煎嚭鍚堝悓");
+ return;
+ }
+ const ids = selectedRows.value
+ .map((row) => row.id)
+ .filter((id) => id !== null && id !== undefined);
+ if (ids.length === 0) {
+ proxy.$modal.msgWarning("鏈幏鍙栧埌鍚堝悓ID");
+ return;
+ }
+ proxy.download(
+ "/sales/ledger/exportContract",
+ ids,
+ `閿�鍞悎鍚宊鎵归噺_${dayjs().format("YYYYMMDDHHmmss")}.docx`,
+ {
+ method: "post",
+ filename: `閿�鍞悎鍚宊鎵归噺_${dayjs().format("YYYYMMDDHHmmss")}.docx`,
+ headers: { "Content-Type": "application/json;charset=utf-8" },
+ transformRequest: [(data) => JSON.stringify(data)],
+ }
+ );
+}
+
// 鎵撳紑鍙戣揣寮规
const openDeliveryForm = (row) => {
// 妫�鏌ユ槸鍚﹀彲浠ュ彂璐�
if (!canShip(row)) {
- proxy.$modal.msgWarning("鍙湁鍦ㄤ骇鍝佺姸鎬佹槸鍏呰冻锛屽彂璐х姸鎬佹槸寰呭彂璐ф垨瀹℃牳鎷掔粷鐨勬椂鍊欐墠鍙互鍙戣揣");
+ proxy.$modal.msgWarning("浜у搧鏁伴噺蹇呴』澶т簬绛変簬鏁伴噺锛屼笖鐘舵�佹弧瓒冲彂璐ф潯浠跺悗鎵嶅彲浠ュ彂璐�");
return;
}
diff --git a/src/views/salesManagement/salesQuotation/index.vue b/src/views/salesManagement/salesQuotation/index.vue
index ee93e46..075c19b 100644
--- a/src/views/salesManagement/salesQuotation/index.vue
+++ b/src/views/salesManagement/salesQuotation/index.vue
@@ -5,35 +5,18 @@
<el-row :gutter="20" class="search-row">
<el-col :span="8">
<el-input
- v-model="searchForm.quotationNo"
- placeholder="璇疯緭鍏ユ姤浠峰崟鍙�"
+ v-model="searchForm.product"
+ placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�"
clearable
- @keyup.enter="handleSearch"
+ @keyup.enter="handleSearch(true)"
>
<template #prefix>
<el-icon><Search /></el-icon>
</template>
</el-input>
</el-col>
- <el-col :span="8">
- <el-select v-model="searchForm.customer" placeholder="璇烽�夋嫨瀹㈡埛" clearable>
- <el-option v-for="item in customerOption" :key="item.id" :label="item.customerName" :value="item.customerName">
- {{
- item.customerName + "鈥斺��" + item.taxpayerIdentificationNumber
- }}
- </el-option>
- </el-select>
- </el-col>
-<!-- <el-col :span="6">-->
-<!-- <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨鎶ヤ环鐘舵��" clearable>-->
-<!-- <el-option label="鑽夌" value="鑽夌"></el-option>-->
-<!-- <el-option label="宸插彂閫�" value="宸插彂閫�"></el-option>-->
-<!-- <el-option label="瀹㈡埛纭" value="瀹㈡埛纭"></el-option>-->
-<!-- <el-option label="宸茶繃鏈�" value="宸茶繃鏈�"></el-option>-->
-<!-- </el-select>-->
-<!-- </el-col>-->
- <el-col :span="8">
- <el-button type="primary" @click="handleSearch">鎼滅储</el-button>
+ <el-col :span="4">
+ <el-button type="primary" @click="handleSearch(true)">鎼滅储</el-button>
<el-button @click="resetSearch">閲嶇疆</el-button>
<el-button style="float: right;" type="primary" @click="handleAdd">
鏂板鎶ヤ环
@@ -50,27 +33,27 @@
stripe
height="calc(100vh - 22em)"
>
- <el-table-column align="center" label="搴忓彿" type="index" width="60" />
- <el-table-column prop="quotationNo" label="鎶ヤ环鍗曞彿" />
- <el-table-column prop="customer" label="瀹㈡埛鍚嶇О" />
- <el-table-column prop="salesperson" label="涓氬姟鍛�" width="100" />
- <el-table-column prop="quotationDate" label="鎶ヤ环鏃ユ湡" width="120" />
- <el-table-column prop="validDate" label="鏈夋晥鏈熻嚦" width="120" />
- <el-table-column prop="status" label="瀹℃壒鐘舵��" width="120" align="center">
- <template #default="{ row }">
- <el-tag :type="getStatusType(row.status)" disable-transitions>
- {{ row.status || '--' }}
- </el-tag>
- </template>
+ <el-table-column align="center" label="搴忓彿" type="index" width="60" />
+ <el-table-column prop="product" label="浜у搧鍚嶇О" min-width="180" show-overflow-tooltip />
+ <el-table-column prop="specification" label="灏哄" min-width="140" show-overflow-tooltip />
+ <el-table-column prop="paper" label="绾稿紶" min-width="120" show-overflow-tooltip />
+ <el-table-column prop="paperWeight" label="瀹氶噺" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="unitPrice" label="鍗曚环" width="120" align="right">
+ <template #default="{ row }">{{ formatMoney(row.unitPrice) }}</template>
</el-table-column>
- <el-table-column prop="totalAmount" label="鎶ヤ环閲戦" width="120">
- <template #default="scope">
- 楼{{ scope.row.totalAmount.toFixed(2) }}
- </template>
+ <el-table-column prop="printingFee" label="鍗扮増璐�" width="120" align="right">
+ <template #default="{ row }">{{ formatMoney(row.printingFee) }}</template>
</el-table-column>
+ <el-table-column prop="dieCuttingFee" label="鍒�鐗堣垂" width="120" align="right">
+ <template #default="{ row }">{{ formatMoney(row.dieCuttingFee) }}</template>
+ </el-table-column>
+ <el-table-column prop="grindingFee" label="纾ㄥ叿璐�" width="120" align="right">
+ <template #default="{ row }">{{ formatMoney(row.grindingFee) }}</template>
+ </el-table-column>
+ <el-table-column prop="quantity" label="鏁伴噺" width="90" align="right" />
<el-table-column label="鎿嶄綔" width="200" fixed="right" align="center">
<template #default="scope">
- <el-button link type="primary" @click="handleEdit(scope.row)" :disabled="!['寰呭鎵�','鎷掔粷'].includes(scope.row.status)">缂栬緫</el-button>
+ <el-button link type="primary" @click="handleEdit(scope.row)">缂栬緫</el-button>
<el-button link type="primary" @click="handleView(scope.row)" style="color: #67C23A">鏌ョ湅</el-button>
<el-button link type="danger" @click="handleDelete(scope.row)">鍒犻櫎</el-button>
</template>
@@ -91,77 +74,13 @@
<FormDialog v-model="dialogVisible" :title="dialogTitle" width="85%" :close-on-click-modal="false" @close="dialogVisible = false" @confirm="handleSubmit" @cancel="dialogVisible = false">
<div class="quotation-form-container">
<el-form :model="form" :rules="rules" ref="formRef" label-width="120px" class="quotation-form">
- <!-- 鍩烘湰淇℃伅 -->
- <el-card class="form-card" shadow="hover">
- <template #header>
- <div class="card-header-wrapper">
- <el-icon class="card-icon"><Document /></el-icon>
- <span class="card-title">鍩烘湰淇℃伅</span>
- </div>
- </template>
- <div class="form-content">
- <el-row :gutter="24">
- <el-col :span="12">
- <el-form-item label="瀹㈡埛鍚嶇О" prop="customer">
- <el-select v-model="form.customer" placeholder="璇烽�夋嫨瀹㈡埛" style="width: 100%" clearable filterable>
- <el-option v-for="item in customerOption" :key="item.id" :label="item.customerName" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="涓氬姟鍛�" prop="salesperson">
- <el-select v-model="form.salesperson" placeholder="璇烽�夋嫨涓氬姟鍛�" style="width: 100%" clearable filterable>
- <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
- :value="item.nickName" />
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24">
- <el-col :span="12">
- <el-form-item label="鎶ヤ环鏃ユ湡" prop="quotationDate">
- <el-date-picker
- v-model="form.quotationDate"
- type="date"
- placeholder="閫夋嫨鎶ヤ环鏃ユ湡"
- style="width: 100%"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD"
- clearable
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鏈夋晥鏈熻嚦" prop="validDate">
- <el-date-picker
- v-model="form.validDate"
- type="date"
- placeholder="閫夋嫨鏈夋晥鏈�"
- style="width: 100%"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD"
- clearable
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="24">
- <el-col :span="12">
- <el-form-item label="浠樻鏂瑰紡" prop="paymentMethod">
- <el-input v-model="form.paymentMethod" placeholder="璇疯緭鍏ヤ粯娆炬柟寮�" clearable />
- </el-form-item>
- </el-col>
- </el-row>
- </div>
- </el-card>
-
<!-- 浜у搧淇℃伅 -->
<el-card class="form-card" shadow="hover">
<template #header>
<div class="card-header-wrapper">
<el-icon class="card-icon"><Box /></el-icon>
<span class="card-title">浜у搧淇℃伅</span>
- <el-button type="primary" size="small" @click="addProduct" class="header-btn">
+ <el-button type="primary" size="small" @click="addProduct" class="header-btn" :disabled="isEdit">
<el-icon><Plus /></el-icon>
娣诲姞浜у搧
</el-button>
@@ -185,7 +104,7 @@
</el-form-item>
</template>
</el-table-column>
- <el-table-column prop="specification" label="瑙勬牸鍨嬪彿" width="200">
+ <el-table-column prop="specification" label="灏哄" width="200">
<template #default="scope">
<el-form-item :prop="`products.${scope.$index}.specificationId`" class="product-table-form-item">
<el-select
@@ -212,10 +131,45 @@
</el-form-item>
</template>
</el-table-column>
+ <el-table-column prop="paper" label="绾稿紶" width="180">
+ <template #default="scope">
+ <el-form-item :prop="`products.${scope.$index}.paper`" class="product-table-form-item">
+ <el-input v-model="scope.row.paper" placeholder="绾稿紶" clearable />
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column prop="paperWeight" label="瀹氶噺" width="140">
+ <template #default="scope">
+ <el-form-item :prop="`products.${scope.$index}.paperWeight`" class="product-table-form-item">
+ <el-input v-model="scope.row.paperWeight" placeholder="瀹氶噺" clearable />
+ </el-form-item>
+ </template>
+ </el-table-column>
<el-table-column prop="unitPrice" label="鍗曚环">
<template #default="scope">
<el-form-item :prop="`products.${scope.$index}.unitPrice`" class="product-table-form-item">
<el-input-number v-model="scope.row.unitPrice" :min="0" :precision="2" style="width: 100%" />
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column prop="printingFee" label="鍗扮増璐�" width="140">
+ <template #default="scope">
+ <el-form-item :prop="`products.${scope.$index}.printingFee`" class="product-table-form-item">
+ <el-input-number v-model="scope.row.printingFee" :min="0" :precision="2" style="width: 100%" />
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column prop="dieCuttingFee" label="鍒�鐗堣垂" width="140">
+ <template #default="scope">
+ <el-form-item :prop="`products.${scope.$index}.dieCuttingFee`" class="product-table-form-item">
+ <el-input-number v-model="scope.row.dieCuttingFee" :min="0" :precision="2" style="width: 100%" />
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column prop="grindingFee" label="纾ㄥ叿璐�" width="140">
+ <template #default="scope">
+ <el-form-item :prop="`products.${scope.$index}.grindingFee`" class="product-table-form-item">
+ <el-input-number v-model="scope.row.grindingFee" :min="0" :precision="2" style="width: 100%" />
</el-form-item>
</template>
</el-table-column>
@@ -256,36 +210,37 @@
<!-- 鏌ョ湅璇︽儏瀵硅瘽妗� -->
<el-dialog v-model="viewDialogVisible" title="鎶ヤ环璇︽儏" width="800px">
- <el-descriptions :column="2" border>
- <el-descriptions-item label="鎶ヤ环鍗曞彿">{{ currentQuotation.quotationNo }}</el-descriptions-item>
- <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ currentQuotation.customer }}</el-descriptions-item>
- <el-descriptions-item label="涓氬姟鍛�">{{ currentQuotation.salesperson }}</el-descriptions-item>
- <el-descriptions-item label="鎶ヤ环鏃ユ湡">{{ currentQuotation.quotationDate }}</el-descriptions-item>
- <el-descriptions-item label="鏈夋晥鏈熻嚦">{{ currentQuotation.validDate }}</el-descriptions-item>
- <el-descriptions-item label="浠樻鏂瑰紡">{{ currentQuotation.paymentMethod }}</el-descriptions-item>
-<!-- <el-descriptions-item label="鎶ヤ环鐘舵��">-->
-<!-- <el-tag :type="getStatusType(currentQuotation.status)">{{ currentQuotation.status }}</el-tag>-->
-<!-- </el-descriptions-item>-->
- <el-descriptions-item label="鎶ヤ环鎬婚" :span="2">
- <span style="font-size: 18px; color: #e6a23c; font-weight: bold;">楼{{ currentQuotation.totalAmount?.toFixed(2) }}</span>
- </el-descriptions-item>
- </el-descriptions>
-
<div style="margin: 20px 0;">
<h4>浜у搧鏄庣粏</h4>
<el-table :data="currentQuotation.products" border style="width: 100%">
<el-table-column prop="product" label="浜у搧鍚嶇О" />
- <el-table-column prop="specification" label="瑙勬牸鍨嬪彿" />
+ <el-table-column prop="specification" label="灏哄" />
<el-table-column prop="unit" label="鍗曚綅" />
+ <el-table-column prop="paper" label="绾稿紶" />
+ <el-table-column prop="paperWeight" label="瀹氶噺" />
<el-table-column prop="unitPrice" label="鍗曚环">
<template #default="scope">
楼{{ scope.row.unitPrice.toFixed(2) }}
</template>
</el-table-column>
+ <el-table-column prop="printingFee" label="鍗扮増璐�">
+ <template #default="scope">
+ 楼{{ Number(scope.row.printingFee || 0).toFixed(2) }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="dieCuttingFee" label="鍒�鐗堣垂">
+ <template #default="scope">
+ 楼{{ Number(scope.row.dieCuttingFee || 0).toFixed(2) }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="grindingFee" label="纾ㄥ叿璐�">
+ <template #default="scope">
+ 楼{{ Number(scope.row.grindingFee || 0).toFixed(2) }}
+ </template>
+ </el-table-column>
</el-table>
</div>
-
- <div v-if="currentQuotation.remark" style="margin-top: 20px;">
+ <div v-if="currentQuotation.remark" style="margin-top: 12px;">
<h4>澶囨敞</h4>
<p>{{ currentQuotation.remark }}</p>
</div>
@@ -296,11 +251,16 @@
<script setup>
import { ref, reactive, computed, onMounted, markRaw, shallowRef } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
-import { Search, Document, Box, EditPen, Plus } from '@element-plus/icons-vue'
+import { Search, Box, EditPen, Plus } from '@element-plus/icons-vue'
import Pagination from '@/components/PIMTable/Pagination.vue'
import FormDialog from '@/components/Dialog/FormDialog.vue'
-import {getQuotationList,addQuotation,updateQuotation,deleteQuotation} from '@/api/salesManagement/salesQuotation.js'
-import {customerList} from "@/api/salesManagement/salesLedger.js";
+import {
+ quotationProductListPage,
+ getQuotationProductInfo,
+ addOrUpdateQuotationProduct,
+ editQuotationProduct,
+ deleteQuotationProduct
+} from '@/api/salesManagement/salesQuotationProduct.js'
import {modelList, productTreeList} from "@/api/basicData/product.js";
import {listCustomerPrivatePool} from "@/api/basicData/customerFile.js";
import { userListNoPage } from "@/api/system/user.js";
@@ -308,9 +268,7 @@
// 鍝嶅簲寮忔暟鎹�
const loading = ref(false)
const searchForm = reactive({
- quotationNo: '',
- customer: '',
- status: ''
+ product: ''
})
const quotationList = ref([])
@@ -344,17 +302,11 @@
totalAmount: 0
})
-const baseRules = {
- customer: [{ required: true, message: '璇烽�夋嫨瀹㈡埛', trigger: 'change' }],
- salesperson: [{ required: true, message: '璇烽�夋嫨涓氬姟鍛�', trigger: 'change' }],
- quotationDate: [{ required: true, message: '璇烽�夋嫨鎶ヤ环鏃ユ湡', trigger: 'change' }],
- validDate: [{ required: true, message: '璇烽�夋嫨鏈夋晥鏈�', trigger: 'change' }],
- paymentMethod: [{ required: true, message: '璇疯緭鍏ヤ粯娆炬柟寮�', trigger: 'blur' }]
-}
+const baseRules = {}
const productRowRules = {
productId: [{ required: true, message: '璇烽�夋嫨浜у搧鍚嶇О', trigger: 'change' }],
- specificationId: [{ required: true, message: '璇烽�夋嫨瑙勬牸鍨嬪彿', trigger: 'change' }],
+ specificationId: [{ required: true, message: '璇烽�夋嫨灏哄', trigger: 'change' }],
unit: [{ required: true, message: '璇峰~鍐欏崟浣�', trigger: 'blur' }],
unitPrice: [{ required: true, message: '璇峰~鍐欏崟浠�', trigger: 'change' }]
}
@@ -377,25 +329,19 @@
// 璁$畻灞炴��
const filteredList = computed(() => {
- let list = quotationList.value
- return list
+ const keyword = String(searchForm.product || '').trim()
+ if (!keyword) return quotationList.value
+ return quotationList.value.filter((row) => {
+ const p = String(row?.product || '').toLowerCase()
+ return p.includes(keyword.toLowerCase())
+ })
})
// 鏂规硶
-const getStatusType = (status) => {
- const statusMap = {
- '寰呭鎵�': 'info',
- '瀹℃牳涓�': 'primary',
- '閫氳繃': 'success',
- '鎷掔粷': 'danger'
- }
- return statusMap[status] || 'info'
-}
+const formatMoney = (value) => `楼${Number(value || 0).toFixed(2)}`
const resetSearch = () => {
- searchForm.quotationNo = ''
- searchForm.customer = ''
- searchForm.status = ''
+ searchForm.product = ''
// 閲嶇疆鍒扮涓�椤靛苟閲嶆柊鏌ヨ
pagination.currentPage = 1
handleSearch()
@@ -464,7 +410,7 @@
if (label) {
row.product = label;
}
- // 鑾峰彇瑙勬牸鍨嬪彿鍒楄〃锛岃缃埌褰撳墠琛岀殑 modelOptions
+ // 鑾峰彇灏哄鍒楄〃锛岃缃埌褰撳墠琛岀殑 modelOptions
modelList({ id: value }).then((res) => {
row.modelOptions = res || [];
});
@@ -504,29 +450,105 @@
}
return null; // 娌℃湁鎵惧埌鑺傜偣锛岃繑鍥瀗ull
};
-const handleView = (row) => {
- // 鍙鍒堕渶瑕佺殑瀛楁锛岄伩鍏嶅皢缁勪欢寮曠敤鏀惧叆鍝嶅簲寮忓璞�
- currentQuotation.value = {
- quotationNo: row.quotationNo || '',
- customer: row.customer || '',
- salesperson: row.salesperson || '',
- quotationDate: row.quotationDate || '',
- validDate: row.validDate || '',
- paymentMethod: row.paymentMethod || '',
- status: row.status || '',
- remark: row.remark || '',
- products: row.products ? row.products.map(product => ({
- productId: product.productId || '',
- product: product.product || product.productName || '',
- specificationId: product.specificationId || '',
- specification: product.specification || '',
- quantity: product.quantity || 0,
- unit: product.unit || '',
- unitPrice: product.unitPrice || 0,
- amount: product.amount || 0
- })) : [],
- totalAmount: row.totalAmount || 0
+const mapProductItem = (product) => ({
+ id: product?.id || '',
+ salesQuotationId: product?.salesQuotationId || '',
+ productId: product?.productId || '',
+ product: product?.product || product?.productName || '',
+ specificationId: product?.specificationId || '',
+ specification: product?.specification || '',
+ quantity: product?.quantity || 0,
+ unit: product?.unit || '',
+ paper: product?.paper || '',
+ paperWeight: product?.paperWeight || '',
+ unitPrice: product?.unitPrice || 0,
+ printingFee: Number(product?.printingFee || 0),
+ dieCuttingFee: Number(product?.dieCuttingFee || 0),
+ grindingFee: Number(product?.grindingFee || 0),
+ amount: product?.amount || 0
+})
+
+const mapQuotationItem = (item) => ({
+ id: item?.id,
+ salesQuotationId: item?.salesQuotationId || '',
+ product: item?.product || '',
+ specification: item?.specification || '',
+ unit: item?.unit || '',
+ paper: item?.paper || '',
+ paperWeight: item?.paperWeight || '',
+ unitPrice: Number(item?.unitPrice || 0),
+ printingFee: Number(item?.printingFee || 0),
+ dieCuttingFee: Number(item?.dieCuttingFee || 0),
+ grindingFee: Number(item?.grindingFee || 0),
+ quantity: Number(item?.quantity || 0),
+ amount: Number(item?.amount || 0),
+ createTime: item?.createTime || '',
+ quotationNo: item?.quotationNo || '',
+ customer: item?.customer || '',
+ salesperson: item?.salesperson || '',
+ quotationDate: item?.quotationDate || '',
+ validDate: item?.validDate || '',
+ paymentMethod: item?.paymentMethod || '',
+ status: item?.status || '鑽夌',
+ approveUserIds: item?.approveUserIds || '',
+ remark: item?.remark || '',
+ products: Array.isArray(item?.products) && item.products.length > 0
+ ? item.products.map(mapProductItem)
+ : [mapProductItem(item)],
+ subtotal: item?.subtotal || 0,
+ freight: item?.freight || 0,
+ otherFee: item?.otherFee || 0,
+ discountRate: item?.discountRate || 0,
+ discountAmount: item?.discountAmount || 0,
+ totalAmount: item?.totalAmount || 0
+})
+
+const calcTotalAmountFromProducts = (products) => {
+ return (products || []).reduce((sum, product) => {
+ const price = Number(product.unitPrice) || 0
+ const printingFee = Number(product.printingFee) || 0
+ const dieCuttingFee = Number(product.dieCuttingFee) || 0
+ const grindingFee = Number(product.grindingFee) || 0
+ return sum + price + printingFee + dieCuttingFee + grindingFee
+ }, 0)
+}
+
+const buildProductPayload = (product) => {
+ const quantity = Number(product?.quantity || 0)
+ const unitPrice = Number(product?.unitPrice || 0)
+ const printingFee = Number(product?.printingFee || 0)
+ const dieCuttingFee = Number(product?.dieCuttingFee || 0)
+ const grindingFee = Number(product?.grindingFee || 0)
+ return {
+ id: product?.id || undefined,
+ salesQuotationId: product?.salesQuotationId || form.salesQuotationId || null,
+ product: product?.product || '',
+ specification: product?.specification || '',
+ unit: product?.unit || '',
+ paper: product?.paper || '',
+ paperWeight: product?.paperWeight || '',
+ unitPrice,
+ printingFee,
+ dieCuttingFee,
+ grindingFee,
+ quantity,
+ amount: Number(product?.amount ?? quantity * unitPrice),
+ remark: product?.remark ?? form.remark ?? ''
}
+}
+
+const handleView = async (row) => {
+ let source = row
+ if (row?.id) {
+ try {
+ const res = await getQuotationProductInfo(row.id)
+ source = res?.data || row
+ } catch (error) {
+ source = row
+ }
+ }
+ source.totalAmount = source.totalAmount || calcTotalAmountFromProducts(source?.products || [source])
+ currentQuotation.value = mapQuotationItem(source)
viewDialogVisible.value = true
}
@@ -537,24 +559,38 @@
form.id = row.id || form.id || null
// 鍏堝姞杞戒骇鍝佹爲鏁版嵁锛屽惁鍒� el-tree-select 鏃犳硶鍙嶆樉浜у搧鍚嶇О
await getProductOptions()
+ let source = row
+ if (row?.id) {
+ try {
+ const res = await getQuotationProductInfo(row.id)
+ source = res?.data || row
+ } catch (error) {
+ source = row
+ }
+ }
+ source.totalAmount = source.totalAmount || calcTotalAmountFromProducts(source?.products || [source])
+
+ const sourceProducts = Array.isArray(source?.products) && source.products.length > 0
+ ? source.products
+ : [source]
// 鍙鍒堕渶瑕佺殑瀛楁锛岄伩鍏嶅皢缁勪欢寮曠敤鏀惧叆鍝嶅簲寮忓璞�
- form.quotationNo = row.quotationNo || ''
- form.customer = row.customer || ''
- form.salesperson = row.salesperson || ''
- form.quotationDate = row.quotationDate || ''
- form.validDate = row.validDate || ''
- form.paymentMethod = row.paymentMethod || ''
- form.status = row.status || '鑽夌'
- form.remark = row.remark || ''
- form.products = row.products ? await Promise.all(row.products.map(async (product) => {
+ form.quotationNo = source.quotationNo || ''
+ form.customer = source.customer || ''
+ form.salesperson = source.salesperson || ''
+ form.quotationDate = source.quotationDate || ''
+ form.validDate = source.validDate || ''
+ form.paymentMethod = source.paymentMethod || ''
+ form.status = source.status || '鑽夌'
+ form.remark = source.remark || ''
+ form.products = await Promise.all(sourceProducts.map(async (product) => {
const productName = product.product || product.productName || ''
// 浼樺厛鐢� productId锛涘鏋滃彧鏈夊悕绉帮紝灏濊瘯鍙嶆煡 id 浠ヤ究鏍戦�夋嫨鍣ㄥ弽鏄�
const resolvedProductId = product.productId
? Number(product.productId)
: findNodeIdByLabel(productOptions.value, productName) || ''
- // 濡傛灉鏈変骇鍝両D锛屽姞杞藉搴旂殑瑙勬牸鍨嬪彿鍒楄〃
+ // 濡傛灉鏈変骇鍝両D锛屽姞杞藉搴旂殑灏哄鍒楄〃
let modelOptions = [];
let resolvedSpecificationId = product.specificationId || '';
@@ -571,7 +607,7 @@
}
}
} catch (error) {
- console.error('鍔犺浇瑙勬牸鍨嬪彿澶辫触:', error);
+ console.error('鍔犺浇灏哄澶辫触:', error);
}
}
@@ -582,17 +618,22 @@
specification: product.specification || '',
quantity: product.quantity || 0,
unit: product.unit || '',
+ paper: product.paper || '',
+ paperWeight: product.paperWeight || '',
unitPrice: product.unitPrice || 0,
+ printingFee: Number(product.printingFee || 0),
+ dieCuttingFee: Number(product.dieCuttingFee || 0),
+ grindingFee: Number(product.grindingFee || 0),
amount: product.amount || 0,
- modelOptions: modelOptions // 涓烘瘡琛屾坊鍔犵嫭绔嬬殑瑙勬牸鍨嬪彿鍒楄〃
+ modelOptions: modelOptions // 涓烘瘡琛屾坊鍔犵嫭绔嬬殑灏哄鍒楄〃
}
- })) : []
- form.subtotal = row.subtotal || 0
- form.freight = row.freight || 0
- form.otherFee = row.otherFee || 0
- form.discountRate = row.discountRate || 0
- form.discountAmount = row.discountAmount || 0
- form.totalAmount = row.totalAmount || 0
+ }))
+ form.subtotal = source.subtotal || 0
+ form.freight = source.freight || 0
+ form.otherFee = source.otherFee || 0
+ form.discountRate = source.discountRate || 0
+ form.discountAmount = source.discountAmount || 0
+ form.totalAmount = source.totalAmount || 0
dialogVisible.value = true
}
@@ -604,23 +645,21 @@
cancelButtonText: '鍙栨秷',
type: 'warning'
}).then(() => {
- const index = quotationList.value.findIndex(item => item.id === row.id)
- if (index > -1) {
- deleteQuotation(row.id).then(res=>{
- // console.log(res)
- if(res.code===200){
- ElMessage.success('鍒犻櫎鎴愬姛')
- handleSearch()
- }
- })
- // quotationList.value.splice(index, 1)
- // pagination.total--
- // ElMessage.success('鍒犻櫎鎴愬姛')
+ if (!row?.id) {
+ ElMessage.warning('鏈幏鍙栧埌鍙垹闄ょ殑浜у搧ID')
+ return
}
+ deleteQuotationProduct([row.id]).then(res=>{
+ if(res.code===200){
+ ElMessage.success('鍒犻櫎鎴愬姛')
+ handleSearch()
+ }
+ })
})
}
const resetForm = () => {
+ form.id = null
form.customer = ''
form.salesperson = ''
form.quotationDate = ''
@@ -638,6 +677,10 @@
}
const addProduct = () => {
+ if (isEdit.value) {
+ ElMessage.warning('缂栬緫鏃朵笉鍏佽鏂板浜у搧')
+ return
+ }
form.products.push({
productId: '',
product: '',
@@ -646,9 +689,14 @@
specification: '',
quantity: 1,
unit: '',
+ paper: '',
+ paperWeight: '',
unitPrice: 0,
+ printingFee: 0,
+ dieCuttingFee: 0,
+ grindingFee: 0,
amount: 0,
- modelOptions: [] // 涓烘瘡琛屾坊鍔犵嫭绔嬬殑瑙勬牸鍨嬪彿鍒楄〃
+ modelOptions: [] // 涓烘瘡琛屾坊鍔犵嫭绔嬬殑灏哄鍒楄〃
})
}
@@ -683,26 +731,28 @@
// 璁$畻鎵�鏈変骇鍝佺殑鍗曚环鎬诲拰
form.totalAmount = form.products.reduce((sum, product) => {
const price = Number(product.unitPrice) || 0
- return sum + price
+ const printingFee = Number(product.printingFee) || 0
+ const dieCuttingFee = Number(product.dieCuttingFee) || 0
+ const grindingFee = Number(product.grindingFee) || 0
+ return sum + price + printingFee + dieCuttingFee + grindingFee
}, 0)
-
if (isEdit.value) {
- // 缂栬緫
- const index = quotationList.value.findIndex(item => item.id === editId.value)
- if (index > -1) {
- updateQuotation(form).then(res=>{
- // console.log(res)
- if(res.code===200){
- ElMessage.success('缂栬緫鎴愬姛')
- dialogVisible.value = false
- handleSearch()
- }
- })
- }
+ const editingItem = form.products[0] || {}
+ const payload = buildProductPayload({
+ ...editingItem,
+ id: editingItem.id || form.id
+ })
+ editQuotationProduct(payload).then((res) => {
+ if (res?.code === 200) {
+ ElMessage.success('缂栬緫鎴愬姛')
+ dialogVisible.value = false
+ handleSearch()
+ }
+ })
} else {
- // 鏂板
- addQuotation(form).then(res=>{
- if(res.code===200){
+ const payloadList = form.products.map((item) => buildProductPayload(item))
+ addOrUpdateQuotationProduct(payloadList).then((res) => {
+ if (res?.code === 200) {
ElMessage.success('鏂板鎴愬姛')
dialogVisible.value = false
handleSearch()
@@ -720,52 +770,27 @@
// 鍒嗛〉鍙樺寲鏃堕噸鏂版煡璇㈠垪琛�
handleSearch()
}
-const handleSearch = ()=>{
+const handleSearch = (resetPage = false)=>{
+ if (resetPage) {
+ pagination.currentPage = 1
+ }
const params = {
// 鍚庣鍒嗛〉鍙傛暟锛歝urrent / size
current: pagination.currentPage,
size: pagination.pageSize,
...searchForm
}
- getQuotationList(params).then(res=>{
- // console.log(res)
+ quotationProductListPage(params).then(res=>{
if(res.code===200){
- // 鍙鍒堕渶瑕佺殑瀛楁锛岄伩鍏嶅皢缁勪欢寮曠敤鎴栧叾浠栧璞℃斁鍏ュ搷搴斿紡瀵硅薄
- quotationList.value = (res.data.records || []).map(item => ({
- id: item.id,
- quotationNo: item.quotationNo || '',
- customer: item.customer || '',
- salesperson: item.salesperson || '',
- quotationDate: item.quotationDate || '',
- validDate: item.validDate || '',
- paymentMethod: item.paymentMethod || '',
- status: item.status || '鑽夌',
- // 瀹℃壒浜猴紙鐢ㄤ簬缂栬緫鏃跺弽鏄撅級
- approveUserIds: item.approveUserIds || '',
- remark: item.remark || '',
- products: item.products ? item.products.map(product => ({
- productId: product.productId || '',
- product: product.product || product.productName || '',
- specificationId: product.specificationId || '',
- specification: product.specification || '',
- quantity: product.quantity || 0,
- unit: product.unit || '',
- unitPrice: product.unitPrice || 0,
- amount: product.amount || 0
- })) : [],
- subtotal: item.subtotal || 0,
- freight: item.freight || 0,
- otherFee: item.otherFee || 0,
- discountRate: item.discountRate || 0,
- discountAmount: item.discountAmount || 0,
- totalAmount: item.totalAmount || 0
- }))
+ const records = res.data.records || []
+ quotationList.value = records.map((item) => {
+ const mapped = mapQuotationItem(item)
+ mapped.totalAmount = calcTotalAmountFromProducts(mapped.products)
+ return mapped
+ })
pagination.total = res.data.total
}
})
- // customerList().then((res) => {
- // customerOption.value = res;
- // });
}
const getUserList = async () => {
diff --git a/src/views/salesManagement/strategyControl/index.vue b/src/views/salesManagement/strategyControl/index.vue
index dbdae38..ecff9c7 100644
--- a/src/views/salesManagement/strategyControl/index.vue
+++ b/src/views/salesManagement/strategyControl/index.vue
@@ -48,7 +48,7 @@
</el-table-column>
<el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" width="180"/>
<el-table-column prop="productName" label="浜у搧鍚嶇О" width="200"/>
- <el-table-column prop="specification" label="瑙勬牸鍨嬪彿" width="120"/>
+ <el-table-column prop="specification" label="灏哄" width="120"/>
<el-table-column prop="basePrice" label="鍩虹浠锋牸" width="100">
<template #default="scope">
楼{{ scope.row.basePrice }}/鍚�
@@ -628,8 +628,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿" prop="specification">
- <el-input v-model="priceStrategyForm.specification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" :disabled="priceStrategyDialogMode === 'view'" />
+ <el-form-item label="灏哄" prop="specification">
+ <el-input v-model="priceStrategyForm.specification" placeholder="璇疯緭鍏ュ昂瀵�" :disabled="priceStrategyDialogMode === 'view'" />
</el-form-item>
</el-col>
</el-row>
--
Gitblit v1.9.3