From 2547698d2681dd5cdeb42982a5cf0c585896f75d Mon Sep 17 00:00:00 2001 From: xy <271556543@qq.com> Date: Fri, 6 Sep 2024 18:04:49 +0800 Subject: [PATCH] daochu --- src/views/assets/component/addHandles.vue | 18 ++++- src/views/assets/handle.vue | 52 +++++++++++++- src/views/assets/handleSign.vue | 17 +++++ src/views/assets/house.vue | 76 +++++++++++++------- src/views/assets/land.vue | 84 ++++++++++++++--------- src/views/component/table.vue | 40 ++++++++++- src/views/lease/index.vue | 43 +++++++++++- src/views/statics/lease.vue | 2 +- 8 files changed, 265 insertions(+), 67 deletions(-) diff --git a/src/views/assets/component/addHandles.vue b/src/views/assets/component/addHandles.vue index 5d70fd4..23c18eb 100644 --- a/src/views/assets/component/addHandles.vue +++ b/src/views/assets/component/addHandles.vue @@ -93,13 +93,23 @@ export default { }, { "prop": "shijimianji", - "label": "实际面积(m²)", + "label": "调整前面积(m²)", "width": 0, "align": "center" }, + { + "prop": "_bencizhengshoumianji", + "label": "本次征收面积(m²)", + "width": 170, + customFn: row => { + return ( + + ) + } + }, { "prop": "_zichanshengyumianji", - "label": "资产剩余面积(m²)", + "label": "调整后面积(m²)", "width": 170, customFn: row => { return ( @@ -369,6 +379,7 @@ export default { zichanweizhi: row.zichanweizhi, shijimianji: row.shijimianji, _zichanshengyumianji: 0, + _bencizhengshoumianji: 0, _relation_id: "", }) } else { @@ -550,6 +561,7 @@ export default { zichanweizhi: row.zichanweizhi, shijimianji: row.shijimianji, _zichanshengyumianji: 0, + _bencizhengshoumianji: 0, _relation_id: "", land_id: row.land_id }) @@ -680,6 +692,7 @@ export default { zichanweizhi: land.zichanweizhi, shijimianji: land.shijimianji, _zichanshengyumianji: item.zichanshengyumianji||0, + _bencizhengshoumianji: item.bencizhengshoumianji||0, _relation_id: item.id, }); } @@ -693,6 +706,7 @@ export default { zichanweizhi: house.zichanweizhi, shijimianji: house.shijimianji, _zichanshengyumianji: item.zichanshengyumianji||0, + _bencizhengshoumianji: item.bencizhengshoumianji||0, _relation_id: item.id, land_id: house.land_id, }); diff --git a/src/views/assets/handle.vue b/src/views/assets/handle.vue index fd3fcf1..7ba5363 100644 --- a/src/views/assets/handle.vue +++ b/src/views/assets/handle.vue @@ -344,18 +344,66 @@ 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 = this.form.filter(i => filterTableColumns.find(j => j.prop === i.field)).map((i) => { return { key: i.field, title: i.name, }; }); + if(filterTableColumns.find(j => j.prop === 'assets')) { + headers.unshift({ + key: 'assets', + title: '资产' + }) + } const data = res.data.map((row) => - headers.map((header) => row[header.key]) + headers.map((header) => { + if(header.key === 'assets') { + return row.asset_handles_to_assets?.map(i => (i.land_id ? '【土地】' : '【房产】')+(i.lands?.name || i.house?.name)).toString() + } + const i = this.form.find(i => i.field === header.key) + //if (i.edit_input === 'file' || i.edit_input === 'files') return '' + // if ( + // 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()); + // } + if (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 + )).toString() + } + } + + if (this.table.find(i => i.prop === header.key)?.formatter) { + return this.table.find(i => i.prop === header.key).formatter(row, {}, row[header.key]) + } + return row[header.key] + }) ); data.unshift(headers.map((header) => header.title)); const wb = XLSX.utils.book_new(); diff --git a/src/views/assets/handleSign.vue b/src/views/assets/handleSign.vue index 2b2d035..3bddad8 100644 --- a/src/views/assets/handleSign.vue +++ b/src/views/assets/handleSign.vue @@ -137,6 +137,16 @@ export default { width: 0, align: "center", }, + { + "prop": "_bencizhengshoumianji", + "label": "本次征收面积(m²)", + "width": 170, + customFn: row => { + return ( + + ) + } + }, { prop: "_zichanshengyumianji", label: "资产剩余面积(m²)", @@ -415,6 +425,7 @@ export default { zichanweizhi: row.zichanweizhi, shijimianji: row.shijimianji, _zichanshengyumianji: 0, + _bencizhengshoumianji: 0, _relation_id: "", }) } else { @@ -602,6 +613,7 @@ export default { zuoluo: row.zuoluo, zichanweizhi: row.zichanweizhi, shijimianji: row.shijimianji, + _bencizhengshoumianji: 0, _zichanshengyumianji: 0, _relation_id: "", land_id: row.land_id @@ -732,6 +744,7 @@ export default { zichanweizhi: land.zichanweizhi, shijimianji: land.shijimianji, _zichanshengyumianji: item.zichanshengyumianji, + _bencizhengshoumianji: item.bencizhengshoumianji, _relation_id: item.id, }); } @@ -745,6 +758,7 @@ export default { zichanweizhi: house.zichanweizhi, shijimianji: house.shijimianji, _zichanshengyumianji: item.zichanshengyumianji, + _bencizhengshoumianji: item.bencizhengshoumianji, _relation_id: item.id, _TAG_: "house", land_id: house.land_id @@ -787,6 +801,7 @@ export default { land_id: !item.hasOwnProperty("land_id") ? item.id : "", house_id: item.hasOwnProperty("land_id") ? item.id : "", zichanshengyumianji: item._zichanshengyumianji, + bencizhengshoumianji: item._bencizhengshoumianji, handle_sign_id: res.id })); let hisEvolutionsAssetsData = this.nowAssets.map(item => ({ @@ -919,6 +934,7 @@ export default { zichanweizhi: land.zichanweizhi, shijimianji: land.shijimianji, _zichanshengyumianji: item.zichanshengyumianji||0, + _bencizhengshoumianji: item.bencizhengshoumianji||0, _relation_id: item.id, ORIGINAL_DATA: land, }); @@ -933,6 +949,7 @@ export default { zichanweizhi: house.zichanweizhi, shijimianji: house.shijimianji, _zichanshengyumianji: item.zichanshengyumianji||0, + _bencizhengshoumianji: item.bencizhengshoumianji||0, _relation_id: item.id, land_id: house.land_id, ORIGINAL_DATA: house, diff --git a/src/views/assets/house.vue b/src/views/assets/house.vue index be96705..206b828 100644 --- a/src/views/assets/house.vue +++ b/src/views/assets/house.vue @@ -436,18 +436,57 @@ 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 = this.form.filter(i => filterTableColumns.find(j => j.prop === i.field)).map((i) => { return { key: i.field, title: i.name, }; }); const data = res.data.map((row) => - headers.map((header) => row[header.key]) + headers.map((header) => { + const i = this.form.find(i => i.field === header.key) + //if (i.edit_input === 'file' || i.edit_input === 'files') return '' + // if ( + // 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()); + // } + if (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 + )).toString() + } + } + + if (this.table.find(i => i.prop === header.key)?.formatter) { + return this.table.find(i => i.prop === header.key).formatter(row, {}, row[header.key]) + } + return row[header.key] + }) ); data.unshift(headers.map((header) => header.title)); const wb = XLSX.utils.book_new(); @@ -582,13 +621,13 @@ export default { !(i.select_item instanceof Array) ) { let keys = Object.keys(i.select_item); - linkOb.customFn = (row) => { + linkOb.formatter = (row) => { let paramMap = new Map(); keys.forEach((key) => { paramMap.set(i.select_item[key], key); }); - return {paramMap.get(row[i.field]?.toString())}; + return paramMap.get(row[i.field]?.toString()); }; } if (i._relations) { @@ -681,30 +720,15 @@ export default { // break; case "bufuqingkuang": this.table.push({ + prop: i.field, label: i.name, width: i.width, - customFn: (row) => { - return ( -
- {row.tudiquanshuren !== row.quanliren || - row.dengjimianji !== row.shijimianji ? ( -
- - {row.tudiquanshuren !== row.quanliren - ? "权利人名称不符" - : ""} - - - {row.dengjimianji !== row.shijimianji - ? "登记面积不符" - : ""} - -
- ) : ( - - )} -
- ); + formatter: (row, column, cellValue, index) => { + let text = ""; + text += row.tudiquanshuren !== row.quanliren ? "权利人名称不符" : "" + text += text ? "," : "" + text += row.dengjimianji !== row.shijimianji ? "登记面积不符": "" + return text || "无" }, }); break; diff --git a/src/views/assets/land.vue b/src/views/assets/land.vue index 87f0058..db5d1e0 100644 --- a/src/views/assets/land.vue +++ b/src/views/assets/land.vue @@ -244,7 +244,6 @@ :btn-width="360" :auths="auths_auth_mixin" :delay-req="true" - :row-style="rowStyle" :destroy-action="destroy" ref="xyTable" :border="true" @@ -416,18 +415,57 @@ 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 = this.form.filter(i => filterTableColumns.find(j => j.prop === i.field)).map((i) => { return { key: i.field, title: i.name, }; }); const data = res.data.map((row) => - headers.map((header) => row[header.key]) + headers.map((header) => { + const i = this.form.find(i => i.field === header.key) + //if (i.edit_input === 'file' || i.edit_input === 'files') return '' + // if ( + // 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()); + // } + if (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 + )).toString() + } + } + + if (this.table.find(i => i.prop === header.key)?.formatter) { + return this.table.find(i => i.prop === header.key).formatter(row, {}, row[header.key]) + } + return row[header.key] + }) ); data.unshift(headers.map((header) => header.title)); const wb = XLSX.utils.book_new(); @@ -559,13 +597,13 @@ export default { !(i.select_item instanceof Array) ) { let keys = Object.keys(i.select_item); - linkOb.customFn = (row) => { + linkOb.formatter = (row) => { let paramMap = new Map(); keys.forEach((key) => { paramMap.set(i.select_item[key], key); }); - return {paramMap.get(row[i.field]?.toString())}; + return paramMap.get(row[i.field]?.toString()); }; } if (i._relations) { @@ -670,41 +708,23 @@ export default { break; case "fangchanzhuangtai": this.table.push({ + prop: i.field, label: i.name, width: i.width, - customFn:row => { - return ( - { row.id_house_properties_land_id_relation?.land_id === row.id ? '房地权属合一' : '房地权属分离' } - ) - } + formatter: (row, column, cellValue, index) => (row.id_house_properties_land_id_relation?.land_id === row.id ? '房地权属合一' : '房地权属分离'), }) break; case "bufuqingkuang": this.table.push({ + prop: i.field, label: i.name, width: i.width, - customFn: (row) => { - return ( -
- {row.tudiquanshuren !== row.quanliren || - row.dengjimianji !== row.shijimianji ? ( -
- - {row.tudiquanshuren !== row.quanliren - ? "权利人名称不符" - : ""} - - - {row.dengjimianji !== row.shijimianji - ? "登记面积不符" - : ""} - -
- ) : ( - - )} -
- ); + formatter: (row, column, cellValue, index) => { + let text = ""; + text += row.tudiquanshuren !== row.quanliren ? "权利人名称不符" : "" + text += text ? "," : "" + text += row.dengjimianji !== row.shijimianji ? "登记面积不符": "" + return text || "无" }, }); break; diff --git a/src/views/component/table.vue b/src/views/component/table.vue index 034606d..826ba0a 100644 --- a/src/views/component/table.vue +++ b/src/views/component/table.vue @@ -353,18 +353,54 @@ 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 = this.form.filter(i => filterTableColumns.find(j => j.prop === i.field)).map((i) => { return { key: i.field, title: i.name, }; }); const data = res.data.map((row) => - headers.map((header) => row[header.key]) + headers.map((header) => { + const i = this.form.find(i => i.field === header.key) + //if (i.edit_input === 'file' || i.edit_input === 'files') return '' + if ( + 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()); + } + if (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 + )).toString() + } + } + + return row[header.key] + }) ); data.unshift(headers.map((header) => header.title)); const wb = XLSX.utils.book_new(); diff --git a/src/views/lease/index.vue b/src/views/lease/index.vue index 12fd868..afdc17f 100644 --- a/src/views/lease/index.vue +++ b/src/views/lease/index.vue @@ -365,18 +365,57 @@ 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 = this.form.filter(i => filterTableColumns.find(j => j.prop === i.field)).map((i) => { return { key: i.field, title: i.name, }; }); const data = res.data.map((row) => - headers.map((header) => row[header.key]) + headers.map((header) => { + const i = this.form.find(i => i.field === header.key) + //if (i.edit_input === 'file' || i.edit_input === 'files') return '' + // if ( + // 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()); + // } + if (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 + )).toString() + } + } + + if (this.table.find(i => i.prop === header.key)?.formatter) { + return this.table.find(i => i.prop === header.key).formatter(row, {}, row[header.key]) + } + return row[header.key] + }) ); data.unshift(headers.map((header) => header.title)); const wb = XLSX.utils.book_new(); diff --git a/src/views/statics/lease.vue b/src/views/statics/lease.vue index a69e799..9fa8056 100644 --- a/src/views/statics/lease.vue +++ b/src/views/statics/lease.vue @@ -236,7 +236,7 @@ export default { this.spanArr.push(1); this.pos = i; } - if(temp[i].land_id ? (temp[i].land_id_lands_id_relation.area === temp[i - 1].land_id_lands_id_relation?.area) : (temp[i].house_id_houses_id_relation.area === temp[i - 1].house_id_houses_id_relation?.area)){ + if(temp[i].land_id ? (temp[i].land_id_lands_id_relation?.area === temp[i - 1].land_id_lands_id_relation?.area) : (temp[i].house_id_houses_id_relation?.area === temp[i - 1].house_id_houses_id_relation?.area)){ this.spanArr1[this.pos1] += 1; this.spanArr1.push(0) }else{