From a32e60bf3366bf3b2d8d0d53b8257290acfb3d4e Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 12 六月 2026 10:26:58 +0800
Subject: [PATCH] 班次配置,夜班不限制时间顺序
---
src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue | 188 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 181 insertions(+), 7 deletions(-)
diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue b/src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue
index 6b18f8f..ecff3a4 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue
@@ -35,15 +35,173 @@
</div>
<div class="detail-block">
<div class="detail-block-title">濉姤鍐呭</div>
- <FormPayloadFields :fields="formResolved.fields"
+ <!-- 榛樿琛ㄥ崟灞曠ず -->
+ <FormPayloadFields v-if="!isSpecialApprovalType"
+ :fields="formResolved.fields"
:form-payload="formResolved.formPayload"
readonly />
+ <!-- 鍙戣揣瀹℃壒璇︽儏 -->
+ <template v-else-if="row.businessType === 7">
+ <div v-if="detailData.shippingInfo"
+ class="shipment-detail">
+ <el-divider content-position="left">鍙戣揣璇︽儏</el-divider>
+ <el-descriptions :column="2"
+ border>
+ <el-descriptions-item label="閿�鍞鍗�">{{ detailData.shippingInfo.salesContractNo || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="鍙戣揣璁㈠崟鍙�">{{ detailData.shippingInfo.shippingNo || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ detailData.shippingInfo.customerName || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="鍙戣揣绫诲瀷">{{ detailData.shippingInfo.type || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="鍙戣揣鏃ユ湡">{{ detailData.shippingInfo.shippingDateDate || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="瀹℃牳鐘舵��">{{ detailData.shippingInfo.status || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="鍙戣揣杞︾墝鍙�">{{ detailData.shippingInfo.shippingCarNumber || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="蹇�掑叕鍙�">{{ detailData.shippingInfo.expressCompany || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="蹇�掑崟鍙�"
+ :span="2">{{ detailData.shippingInfo.expressNumber || "--" }}</el-descriptions-item>
+ </el-descriptions>
+ <div v-if="detailData.shippingProductDetailDtoList.length"
+ style="margin-top: 20px;">
+ <h4>浜у搧鏄庣粏</h4>
+ <el-table :data="detailData.shippingProductDetailDtoList"
+ border
+ size="small"
+ style="width: 100%">
+ <el-table-column label="鎵瑰彿"
+ prop="batchNo"
+ min-width="160"
+ show-overflow-tooltip />
+ <el-table-column label="浜у搧鍚嶇О"
+ prop="productName"
+ min-width="160"
+ show-overflow-tooltip />
+ <el-table-column label="瑙勬牸鍨嬪彿"
+ prop="specificationModel"
+ min-width="160"
+ show-overflow-tooltip />
+ <el-table-column label="鍙戣揣鏁伴噺"
+ prop="deliveryQuantity"
+ min-width="120"
+ align="center" />
+ </el-table>
+ </div>
+ </div>
+ </template>
+ <!-- 閲囪喘瀹℃壒璇︽儏 -->
+ <template v-else-if="row.businessType === 5">
+ <div v-if="detailData"
+ class="procurement-detail">
+ <el-divider content-position="left">閲囪喘璇︽儏</el-divider>
+ <el-descriptions :column="2"
+ border>
+ <el-descriptions-item label="閲囪喘鍚堝悓鍙�">{{ detailData.purchaseContractNumber || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="渚涘簲鍟嗗悕绉�">{{ detailData.supplierName || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="椤圭洰鍚嶇О">{{ detailData.projectName || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="閿�鍞悎鍚屽彿">{{ detailData.salesContractNo || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="绛捐鏃ユ湡">{{ detailData.executionDate || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="褰曞叆鏃ユ湡">{{ detailData.entryDate || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="浠樻鏂瑰紡">{{ detailData.paymentMethod || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="杞︾墝鍙�">{{ detailData.carPlateNumber || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="杩愯緭鍗曚綅/涓汉">{{ detailData.transportUnitOrPerson || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="鍚堝悓閲戦" :span="2">
+ <span style="font-size: 18px; color: #e6a23c; font-weight: bold;">
+ 楼{{ Number(detailData.contractAmount ?? 0).toFixed(2) }}
+ </span>
+ </el-descriptions-item>
+ </el-descriptions>
+ <div v-if="detailData.productData.length"
+ style="margin-top: 20px;">
+ <h4>浜у搧鏄庣粏</h4>
+ <el-table :data="detailData.productData"
+ border
+ style="width: 100%">
+ <el-table-column prop="productCategory"
+ label="浜у搧鍚嶇О" />
+ <el-table-column prop="specificationModel"
+ label="瑙勬牸鍨嬪彿" />
+ <el-table-column prop="unit"
+ label="鍗曚綅" />
+ <el-table-column prop="quantity"
+ label="鏁伴噺" />
+ <el-table-column prop="freightUnitPrice"
+ label="杩愯垂鍗曚环">
+ <template #default="scope">楼{{ Number(scope.row.freightUnitPrice ?? 0).toFixed(2) }}</template>
+ </el-table-column>
+ <el-table-column prop="totalFreight"
+ label="杩愯垂鎬讳环">
+ <template #default="scope">楼{{ Number(scope.row.totalFreight ?? 0).toFixed(2) }}</template>
+ </el-table-column>
+ <el-table-column prop="taxInclusiveUnitPrice"
+ label="鍚◣鍗曚环">
+ <template #default="scope">楼{{ Number(scope.row.taxInclusiveUnitPrice ?? 0).toFixed(2) }}</template>
+ </el-table-column>
+ <el-table-column prop="taxInclusiveTotalPrice"
+ label="鍚◣鎬讳环">
+ <template #default="scope">楼{{ Number(scope.row.taxInclusiveTotalPrice ?? 0).toFixed(2) }}</template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ </template>
+ <!-- 鎶ヤ环瀹℃壒璇︽儏 -->
+ <template v-else-if="row.businessType === 6">
+ <div v-if="detailData"
+ class="quotation-detail">
+ <el-divider content-position="left">鎶ヤ环璇︽儏</el-divider>
+ <el-descriptions :column="2"
+ border>
+ <el-descriptions-item label="鎶ヤ环鍗曞彿">{{ detailData.quotationNo || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ detailData.customer || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="涓氬姟鍛�">{{ detailData.salesperson || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="鎶ヤ环鏃ユ湡">{{ detailData.quotationDate || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="鏈夋晥鏈熻嚦">{{ detailData.validDate || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="浠樻鏂瑰紡">{{ detailData.paymentMethod || "--" }}</el-descriptions-item>
+ <el-descriptions-item label="鎶ヤ环鎬婚"
+ :span="2">
+ <span style="font-size: 18px; color: #e6a23c; font-weight: bold;">
+ 楼{{ Number(detailData.totalAmount ?? 0).toFixed(2) }}
+ </span>
+ </el-descriptions-item>
+ </el-descriptions>
+ <div v-if="detailData.products.length"
+ style="margin-top: 20px;">
+ <h4>浜у搧鏄庣粏</h4>
+ <el-table :data="detailData.products"
+ border
+ style="width: 100%">
+ <el-table-column prop="product"
+ label="浜у搧鍚嶇О" />
+ <el-table-column prop="specification"
+ label="瑙勬牸鍨嬪彿" />
+ <el-table-column prop="unit"
+ label="鍗曚綅" />
+ <el-table-column prop="quantity"
+ label="鏁伴噺" />
+ <el-table-column prop="freightUnitPrice"
+ label="杩愯垂鍗曚环">
+ <template #default="scope">楼{{ Number(scope.row.freightUnitPrice ?? 0).toFixed(2) }}</template>
+ </el-table-column>
+ <el-table-column prop="totalFreight"
+ label="杩愯垂鎬讳环">
+ <template #default="scope">楼{{ Number(scope.row.totalFreight ?? 0).toFixed(2) }}</template>
+ </el-table-column>
+ <el-table-column prop="unitPrice"
+ label="鍗曚环">
+ <template #default="scope">楼{{ Number(scope.row.unitPrice ?? 0).toFixed(2) }}</template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <div v-if="detailData.remark"
+ style="margin-top: 20px;">
+ <h4>澶囨敞</h4>
+ <p>{{ detailData.remark }}</p>
+ </div>
+ </div>
+ </template>
</div>
- <div v-if="row.storageBlobVOList && row.storageBlobVOList.length"
+ <div v-if="attachmentList.length"
class="detail-block">
<div class="detail-block-title">闄勪欢鍒楄〃</div>
<div class="attachment-list">
- <div v-for="file in row.storageBlobVOList"
+ <div v-for="file in attachmentList"
:key="file.id"
class="attachment-item">
<el-icon class="file-icon">
@@ -54,11 +212,11 @@
{{ file.name || file.originalFilename }}
</span>
<div class="file-actions">
- <el-link v-if="file.previewURL"
+ <el-link v-if="file.previewURL || file.url"
type="primary"
:underline="false"
- @click="openFile(file.previewURL)">棰勮</el-link>
- <el-divider v-if="file.previewURL && file.downloadURL"
+ @click="openFile(file.previewURL || file.url)">棰勮</el-link>
+ <el-divider v-if="(file.previewURL || file.url) && file.downloadURL"
direction="vertical" />
<el-link v-if="file.downloadURL"
type="primary"
@@ -86,9 +244,25 @@
const props = defineProps({
row: { type: Object, default: () => ({}) },
+ detailData: { type: Object, default: () => ({}) },
});
const formResolved = computed(() => resolveInstanceFormFields(props.row));
+
+ // 鏄惁涓虹壒娈婂鎵圭被鍨嬶紙閲囪喘銆佸彂璐с�佹姤浠凤級
+ const isSpecialApprovalType = computed(() => {
+ return [5, 7, 6].includes(props.row.businessType);
+ });
+
+ // 璇︽儏鏁版嵁锛堢洿鎺ヤ娇鐢ㄤ紶鍏ョ殑 detail-data 鍙傛暟锛�
+ const detailData = computed(() => {
+ return props.detailData || {};
+ });
+
+ const attachmentList = computed(() => {
+ const list = props.row.storageBlobVOList || props.row.storageBlobDTOs || [];
+ return Array.isArray(list) ? list : [];
+ });
function openFile(url) {
if (!url) return;
@@ -159,4 +333,4 @@
align-items: center;
flex-shrink: 0;
}
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.3