diff --git a/public/img/文件夹.png b/public/img/文件夹.png
new file mode 100644
index 0000000..27e2f81
Binary files /dev/null and b/public/img/文件夹.png differ
diff --git a/src/api/business/process-config.js b/src/api/business/process-config.js
index a43262c..a8aa28e 100644
--- a/src/api/business/process-config.js
+++ b/src/api/business/process-config.js
@@ -13,11 +13,14 @@ export const getDetail = (id, waybillId) =>
...(waybillId === undefined ? {} : { waybillId }),
},
});
-export const getVoucherImages = waybillId =>
+export const getVoucherImages = (waybillId, params = {}) =>
request({
url: '/blade-transport/process-config/voucher-images',
method: 'get',
- params: { waybillId },
+ params: {
+ waybillId,
+ ...params,
+ },
});
export const submit = api.submit;
export const remove = api.remove;
diff --git a/src/api/business/voucher-manage.js b/src/api/business/voucher-manage.js
index b4a3152..2b65bfe 100644
--- a/src/api/business/voucher-manage.js
+++ b/src/api/business/voucher-manage.js
@@ -26,6 +26,8 @@ export const replaceFolderByObject = (voucherId, plateNo, fileInfo) =>
export const removeFolder = (voucherId, plateNo) =>
request({ url: `${baseUrl}/folder-remove`, method: 'post', params: { voucherId, plateNo } });
export const submit = data => request({ url: `${baseUrl}/submit`, method: 'post', data });
+export const changeWaybillBatch = data =>
+ request({ url: `${baseUrl}/change-waybill-batch`, method: 'post', data });
export const createUploadDraft = data =>
request({ url: `${baseUrl}/upload-draft`, method: 'post', data });
export const completeUploadFile = data =>
diff --git a/src/views/business/components/waybill-manage-page.vue b/src/views/business/components/waybill-manage-page.vue
index 8b08153..3e5c39c 100644
--- a/src/views/business/components/waybill-manage-page.vue
+++ b/src/views/business/components/waybill-manage-page.vue
@@ -1949,18 +1949,61 @@
label="批量补录"
name="batchSupplement"
>
+
+
+ 返回文件夹
+
+ {{ waybillVoucherFolderName(waybillVoucherFolder) }}
+
-
+
+
+ {{ waybillVoucherFolderName(image) }}
+
{
this.waybillVoucherImages = extractRecords(res);
+ this.waybillVoucherFolders = this.waybillVoucherImages.filter(item =>
+ this.isWaybillVoucherFolder(item)
+ );
+ this.waybillVoucherFolder = null;
+ this.waybillVoucherFolderView = false;
if (this.waybillVoucherImages.length) this.waybillHasRelatedVoucher = true;
this.waybillVoucherImagesLoaded = true;
})
@@ -4229,11 +4283,49 @@ export default {
this.waybillVoucherImagesLoading = false;
});
},
+ isWaybillVoucherFolder(item) {
+ return Boolean(item && (item.isFolder === true || item.type === 'folder'));
+ },
+ waybillVoucherFolderName(folder) {
+ return folder?.folderName || folder?.name || folder?.plateNo || '凭证文件夹';
+ },
+ openWaybillVoucherFolder(folder) {
+ if (!this.detailRow.id || !this.isWaybillVoucherFolder(folder)) return;
+ if (!folder.voucherId || !folder.folderName) {
+ this.$message.warning('凭证文件夹信息不完整');
+ return;
+ }
+ this.waybillVoucherImagesLoading = true;
+ getProcessConfigVoucherImages(this.detailRow.id, {
+ voucherId: folder.voucherId,
+ folderName: folder.folderName,
+ })
+ .then(res => {
+ this.waybillVoucherFolder = folder;
+ this.waybillVoucherImages = extractRecords(res).filter(
+ item => !this.isWaybillVoucherFolder(item)
+ );
+ this.waybillVoucherFolderView = true;
+ })
+ .finally(() => {
+ this.waybillVoucherImagesLoading = false;
+ });
+ },
+ backToWaybillVoucherFolders() {
+ this.waybillVoucherImages = [...this.waybillVoucherFolders];
+ this.waybillVoucherFolder = null;
+ this.waybillVoucherFolderView = false;
+ },
previewWaybillVoucherImage(index) {
- this.attachmentImagePreviewUrls = this.waybillVoucherImages
+ const imageRows = this.waybillVoucherImages.filter(
+ image => !this.isWaybillVoucherFolder(image)
+ );
+ const currentImage = this.waybillVoucherImages[index];
+ const imageIndex = imageRows.findIndex(image => image === currentImage);
+ this.attachmentImagePreviewUrls = imageRows
.map(image => image.url)
.filter(Boolean);
- this.attachmentImagePreviewIndex = index;
+ this.attachmentImagePreviewIndex = imageIndex >= 0 ? imageIndex : 0;
this.attachmentImagePreviewVisible = this.attachmentImagePreviewUrls.length > 0;
},
buildWaybillRouteNodes(rows = []) {
@@ -8984,6 +9076,7 @@ export default {
}
&__voucher-image-item {
+ position: relative;
aspect-ratio: 1;
overflow: hidden;
cursor: pointer;
@@ -8995,6 +9088,42 @@ export default {
width: 100%;
height: 100%;
}
+
+ &--folder {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ gap: 6px;
+ padding: 12px;
+ background: #fff;
+
+ .el-image {
+ width: 64px;
+ height: 64px;
+ flex: none;
+ }
+ }
+ }
+
+ &__voucher-folder-toolbar {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ min-height: 32px;
+ margin-bottom: 8px;
+ color: #606266;
+ font-size: 13px;
+ }
+
+ &__voucher-folder-name {
+ width: 100%;
+ overflow: hidden;
+ color: #606266;
+ font-size: 13px;
+ text-align: center;
+ text-overflow: ellipsis;
+ white-space: nowrap;
}
&__route-change-dialog {
diff --git a/src/views/business/project-apply.vue b/src/views/business/project-apply.vue
index a176e10..96f3623 100644
--- a/src/views/business/project-apply.vue
+++ b/src/views/business/project-apply.vue
@@ -1389,7 +1389,7 @@ export default {
this.page.total = result.total || 0;
this.data = result.records || [];
this.selectionClear();
- this.refreshFundRiskStats({ ...params, ...this.query, allDept: this.allDept });
+ // this.refreshFundRiskStats({ ...params, ...this.query, allDept: this.allDept });
})
.finally(() => {
this.loading = false;
diff --git a/src/views/business/voucher-manage-detail.vue b/src/views/business/voucher-manage-detail.vue
index 93851ab..5b68a91 100644
--- a/src/views/business/voucher-manage-detail.vue
+++ b/src/views/business/voucher-manage-detail.vue
@@ -22,7 +22,7 @@
- 单个上传查看删除
+ 单个上传查看删除
@@ -39,15 +39,23 @@