From ccd67e291e00a2ad9c29ad8df43de6fab5a4afed Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期四, 09 四月 2026 09:30:08 +0800
Subject: [PATCH] feat(协同审批/报价单): 添加附件上传、预览和下载功能
---
src/views/salesManagement/salesLedger/index.vue | 55 +++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 47 insertions(+), 8 deletions(-)
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index 1833bc1..a3b8304 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -51,7 +51,9 @@
width="100px"
align="center">
<template #default="scope">
- <el-tag v-if="scope.row.approveStatus === 1"
+ <el-tag v-if="getShippingStatusText(scope.row) === '宸插彂璐�'"
+ type="success">宸插嚭搴�</el-tag>
+ <el-tag v-else-if="scope.row.hasSufficientStock"
type="success">鍏呰冻</el-tag>
<el-tag v-else
type="danger">涓嶈冻</el-tag>
@@ -118,10 +120,11 @@
<el-table-column label="褰曞叆鏃ユ湡" prop="entryDate" width="120" show-overflow-tooltip />
<el-table-column label="绛捐鏃ユ湡" prop="executionDate" width="120" show-overflow-tooltip />
<el-table-column label="浜や粯鏃ユ湡" prop="deliveryDate" width="120" show-overflow-tooltip />
- <el-table-column label="澶囨敞" prop="remarks" width="200" show-overflow-tooltip />
- <el-table-column fixed="right" label="鎿嶄綔" min-width="100" align="center">
+ <el-table-column label="鍏跺畠璇存槑浜嬮」" prop="remarks" width="200" show-overflow-tooltip />
+ <el-table-column fixed="right" label="鎿嶄綔" min-width="200" align="center">
<template #default="scope">
<el-button link type="primary" size="small" @click="openForm('edit', scope.row)" :disabled="!scope.row.isEdit">缂栬緫</el-button>
+ <el-button link type="primary" size="small" @click="exportSalesContracts(scope.row)">瀵煎嚭閿�鍞悎鍚�</el-button>
<!-- <el-button link type="primary" size="small" @click="openForm('view', scope.row)">璇︽儏</el-button>-->
<el-button link type="primary" size="small" @click="downLoadFile(scope.row)">闄勪欢</el-button>
<!-- <el-button link type="primary" size="small" @click="openDeliveryForm(scope.row)">鍙戣揣</el-button>-->
@@ -213,6 +216,11 @@
type="date" placeholder="璇烽�夋嫨" clearable />
</el-form-item>
</el-col>
+ <el-col :span="12">
+ <el-form-item label="绛捐鍦扮偣锛�" prop="placeOfSinging">
+ <el-input v-model="form.placeOfSinging" placeholder="璇疯緭鍏�" clearable :disabled="operationType === 'view'" />
+ </el-form-item>
+ </el-col>
</el-row>
<el-row>
<el-form-item label="浜у搧淇℃伅锛�" prop="entryDate">
@@ -243,7 +251,7 @@
</el-table>
<el-row :gutter="30">
<el-col :span="24">
- <el-form-item label="澶囨敞锛�" prop="remarks">
+ <el-form-item label="鍏跺畠璇存槑浜嬮」锛�" prop="remarks">
<el-input v-model="form.remarks" placeholder="璇疯緭鍏�" clearable type="textarea" :rows="2" :disabled="operationType === 'view'" />
</el-form-item>
</el-col>
@@ -481,7 +489,7 @@
<div v-for="(item, index) in printData" :key="index" class="print-page">
<div class="delivery-note">
<div class="header">
- <div class="company-name">榧庤瘹鐟炲疄涓氭湁闄愯矗浠诲叕鍙�</div>
+ <div class="company-name">闃冲厜鍗板埛鏈夐檺璐d换鍏徃</div>
<div class="document-title">闆跺敭鍙戣揣鍗�</div>
</div>
@@ -675,6 +683,7 @@
addOrUpdateSalesLedgerProduct,
delProduct,
delLedgerFile, getProductInventory,
+ exportSalesContract
} from "@/api/salesManagement/salesLedger.js";
import { modelList, productTreeList } from "@/api/basicData/product.js";
import useFormData from "@/hooks/useFormData.js";
@@ -728,6 +737,7 @@
entryDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
deliveryDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
executionDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+ placeOfSinging: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
},
});
const { form, rules } = toRefs(data);
@@ -1411,6 +1421,7 @@
/** 鍒ゆ柇鍗曚釜浜у搧鏄惁宸插彂璐э紙鏍规嵁shippingStatus鍒ゆ柇锛屽凡鍙戣揣鎴栧鏍搁�氳繃涓嶅彲缂栬緫鍜屽垹闄わ級 */
const isProductShipped = (product) => {
if (!product) return false;
+
const status = String(product.shippingStatus || "").trim();
// 濡傛灉鍙戣揣鐘舵�佹槸"宸插彂璐�"鎴�"瀹℃牳閫氳繃"锛屽垯涓嶅彲缂栬緫鍜屽垹闄�
return status === "宸插彂璐�" || status === "瀹℃牳閫氳繃";
@@ -1670,7 +1681,7 @@
<div class="print-page">
<div class="delivery-note">
<div class="header">
- <div class="company-name">榧庤瘹鐟炲疄涓氭湁闄愯矗浠诲叕鍙�</div>
+ <div class="company-name">闃冲厜褰╁嵃鏈夐檺璐d换鍏徃</div>
<div class="document-title">闆跺敭鍙戣揣鍗�</div>
</div>
@@ -2073,8 +2084,8 @@
* @param row 琛屾暟鎹�
*/
const canShip = (row) => {
- // 浜у搧鐘舵�佸繀椤绘槸鍏呰冻锛坅pproveStatus === 1锛�
- if (row.approveStatus !== 1) {
+ // 浜у搧鐘舵�佸繀椤绘槸鍏呰冻锛堝熀浜� hasSufficientStock 鍒ゆ柇锛�
+ if (!row || !row.hasSufficientStock) {
return false;
}
@@ -2092,6 +2103,34 @@
};
/**
+ * 瀵煎嚭閿�鍞悎鍚�
+ *
+ * @param row 瀵煎嚭閿�鍞悎鍚岀殑鐩稿叧淇℃伅瀵硅薄
+ */
+const exportSalesContracts = (row) => {
+ exportSalesContract({ id: row.id }).then((res) => {
+ if (res) {
+ const downloadUrl = window.URL.createObjectURL(res);
+ const link = document.createElement('a');
+ link.href = downloadUrl;
+ console.log(row.executionDate)
+ link.download = row.projectName+row.executionDate + "閿�鍞悎鍚�.docx"; // 璁剧疆涓嬭浇鏂囦欢鍚�
+ link.style.display = 'none'; // 闅愯棌a鏍囩
+ document.body.appendChild(link);
+ link.click(); // 瑙﹀彂鐐瑰嚮涓嬭浇
+ // 4. 娓呯悊璧勬簮锛堥伩鍏嶅唴瀛樻硠婕忥級
+ document.body.removeChild(link);
+ window.URL.revokeObjectURL(downloadUrl);
+
+ // 5. 鎻愮ず瀵煎嚭鎴愬姛
+ proxy.$modal.msgSuccess("瀵煎嚭閿�鍞悎鍚屾垚鍔�");
+ } else {
+ proxy.$modal.msgError(res.msg || "瀵煎嚭閿�鍞悎鍚屽け璐�");
+ }
+ });
+}
+
+/**
* 涓嬭浇鏂囦欢
*
* @param row 涓嬭浇鏂囦欢鐨勭浉鍏充俊鎭璞�
--
Gitblit v1.9.3