From fd9a6bc8cf6b5d28566fbb3f083368d30347e442 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Sat, 22 Nov 2025 15:05:34 +0800 Subject: [PATCH] 1 --- src/views/lease/detailLease.vue | 5 +++ src/views/lease/index.vue | 5 ++- src/views/lease/leaseLog.vue | 66 ++++++++++++++++++++++++++------- 3 files changed, 62 insertions(+), 14 deletions(-) diff --git a/src/views/lease/detailLease.vue b/src/views/lease/detailLease.vue index 53bc27c..cacb71d 100644 --- a/src/views/lease/detailLease.vue +++ b/src/views/lease/detailLease.vue @@ -624,6 +624,11 @@ export default { }, contentFormat() { return function (i) { + // 特殊处理出租方字段:如果chuzufang为空,则显示department?.name + if (i.field === 'chuzufang') { + return this.detail[i.field] || this.detail['department']?.name || ''; + } + let { _relations } = i; if (_relations && _relations.link_table_name) { if ( diff --git a/src/views/lease/index.vue b/src/views/lease/index.vue index fd6268c..3d9844f 100644 --- a/src/views/lease/index.vue +++ b/src/views/lease/index.vue @@ -429,7 +429,10 @@ export default { } else { myAsset = row } - data.push([...myRow,myAsset.name||myAssetLink.name,myAssetLink.chuzumianji,myAssetLink.xiangxiweizhi]) + // 资产名称添加【土地】或【房产】标识 + const assetType = myAssetLink.land_id ? '【土地】' : '【房产】' + const assetName = myAsset.name || myAssetLink.name || '' + data.push([...myRow, `${assetType}${assetName}`, myAssetLink.chuzumianji, myAssetLink.xiangxiweizhi]) } if (headers.length > 0) { for (let q = 0;q < headers.length;q ++) { diff --git a/src/views/lease/leaseLog.vue b/src/views/lease/leaseLog.vue index 4318c19..e82f65b 100644 --- a/src/views/lease/leaseLog.vue +++ b/src/views/lease/leaseLog.vue @@ -206,6 +206,12 @@ + - @@ -325,18 +324,59 @@ export default { }, async exportExcel(sheetName) { + let filterTableColumns = this.$refs['xyTable']?.tableFormat || [] const res = await index( Object.assign(this.select, { page: 1, page_size: 9999 }) ); if (res.data) { - let headers = this.form.map((i) => { + let headers = filterTableColumns.filter(i => !!i.prop).map((i) => { return { - key: i.field, - title: i.name, + key: i.prop, + title: i.label, }; }); - const data = res.data.map((row) => - headers.map((header) => row[header.key]) + const data = res.data.map((row, rindex) => + headers.map((header) => { + const i = this.form.find(i => i.field === header.key) + // 处理选择项(select_item) + if ( + i && + i.select_item && + typeof i.select_item === "object" && + !(i.select_item instanceof Array) + ) { + let keys = Object.keys(i.select_item); + let paramMap = new Map(); + keys.forEach((key) => { + paramMap.set(i.select_item[key], key); + }); + return paramMap.get(row[i.field]?.toString()) || row[i.field]; + } + // 处理关联数据(_relations) + if (i && i._relations) { + let { link_relation, foreign_key, link_with_name } = i._relations; + if (link_relation === "newHasOne" || link_relation === "hasOne") { + return row[link_with_name]?.original_name || row[link_with_name]?.name || + row[link_with_name]?.no || + row[link_with_name]?.value || '' + } + + if (link_relation === "hasMany" || link_relation === "newHasMany") { + return row[link_with_name]?.map((o) => ( + o?.name || + o?.no || + o?.value || + o?.biaoti || + o?.mingcheng + )).join(', ') || '' + } + } + // 处理格式化器(formatter) + if (this.table.find(i => i.prop === header.key)?.formatter) { + return this.table.find(i => i.prop === header.key).formatter(row, {}, row[header.key], rindex) + } + return row[header.key] || '' + }) ); data.unshift(headers.map((header) => header.title)); const wb = XLSX.utils.book_new(); @@ -349,7 +389,7 @@ export default { }); saveAs( new Blob([wbout], { type: "application/octet-stream" }), - `${sheetName}.xlsx` + `租赁合同变更记录_${sheetName}.xlsx` ); } },