|
|
|
|
@ -288,7 +288,7 @@ import { op } from "@/const/op";
|
|
|
|
|
import { download } from "@/utils/downloadRequest";
|
|
|
|
|
import { getparameter } from "@/api/system/dictionary";
|
|
|
|
|
import { show } from "@/api/system/customForm";
|
|
|
|
|
import * as XLSX from "xlsx";
|
|
|
|
|
import * as XLSX from "xlsx-js-style";
|
|
|
|
|
import { saveAs } from "file-saver";
|
|
|
|
|
import { listdept } from "@/api/system/department"
|
|
|
|
|
|
|
|
|
|
@ -344,118 +344,306 @@ export default {
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 判断字段是否为数字类型
|
|
|
|
|
isNumericField(field, fieldName) {
|
|
|
|
|
if (!field) return false;
|
|
|
|
|
|
|
|
|
|
// 检查配置中的类型
|
|
|
|
|
if (field.edit_input === 'number' ||
|
|
|
|
|
field.type === 'number' ||
|
|
|
|
|
field.type === 'integer' ||
|
|
|
|
|
field.type === 'decimal' ||
|
|
|
|
|
field.type === 'float') {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 检查字段名是否包含数字相关关键词
|
|
|
|
|
const numericKeywords = ['面积', '值', '金额', '价格', '费用', '成本', '数量', '元', '万元', '平方米', 'm²', '㎡', '单价', '缴税', '征收', '剩余', '评估'];
|
|
|
|
|
if (fieldName) {
|
|
|
|
|
for (let keyword of numericKeywords) {
|
|
|
|
|
if (fieldName.includes(keyword)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
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 = filterTableColumns.filter(i => !!i.prop).map((i) => {
|
|
|
|
|
let headers = filterTableColumns.filter(i => !!i.prop && i.prop !== 'assets').map((i) => {
|
|
|
|
|
// 从 form 中查找字段配置
|
|
|
|
|
const fieldConfig = this.form.find(f => f.field === i.prop);
|
|
|
|
|
return {
|
|
|
|
|
key: i.prop,
|
|
|
|
|
title: i.label,
|
|
|
|
|
isNumber: this.isNumericField(fieldConfig, i.label)
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 添加提交人、提交单位和创建时间到 headers
|
|
|
|
|
headers.push({
|
|
|
|
|
key: 'admin.name',
|
|
|
|
|
title: '提交人'
|
|
|
|
|
title: '提交人',
|
|
|
|
|
isNumber: false
|
|
|
|
|
});
|
|
|
|
|
headers.push({
|
|
|
|
|
key: 'department.name',
|
|
|
|
|
title: '提交单位'
|
|
|
|
|
title: '提交单位',
|
|
|
|
|
isNumber: false
|
|
|
|
|
});
|
|
|
|
|
headers.push({
|
|
|
|
|
key: 'created_at',
|
|
|
|
|
title: '创建时间'
|
|
|
|
|
title: '创建时间',
|
|
|
|
|
isNumber: false
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 资产标的相关列
|
|
|
|
|
const assetHeaders = [
|
|
|
|
|
{ title: '资产名称', isNumber: false },
|
|
|
|
|
{ title: '分类', isNumber: false },
|
|
|
|
|
{ title: '坐落', isNumber: false },
|
|
|
|
|
{ title: '详细位置', isNumber: false },
|
|
|
|
|
{ title: '实际面积(m²)', isNumber: true },
|
|
|
|
|
{ title: '本次调整面积(m²)', isNumber: true },
|
|
|
|
|
{ title: '调整后面积(m²)', isNumber: true }
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
let data = []
|
|
|
|
|
let merges = []
|
|
|
|
|
let rowIndex = 0
|
|
|
|
|
res.data.forEach((row, rindex) => {
|
|
|
|
|
let myRow = headers.map((header) => {
|
|
|
|
|
let value;
|
|
|
|
|
// 处理提交人、提交单位和创建时间字段
|
|
|
|
|
if (header.key === 'admin.name') {
|
|
|
|
|
return row['admin']?.name || '';
|
|
|
|
|
value = row['admin']?.name || '';
|
|
|
|
|
} else if (header.key === 'department.name') {
|
|
|
|
|
value = row['department']?.name || '';
|
|
|
|
|
} else if (header.key === 'created_at') {
|
|
|
|
|
value = row['created_at'] ? this.$moment(row['created_at']).format('YYYY-MM-DD HH:mm:ss') : '';
|
|
|
|
|
} else {
|
|
|
|
|
const i = this.form.find(i => i.field === header.key)
|
|
|
|
|
if (i && i._relations) {
|
|
|
|
|
let { link_relation, foreign_key, link_with_name } = i._relations;
|
|
|
|
|
if (link_relation === "newHasOne" || link_relation === "hasOne") {
|
|
|
|
|
value = row[link_with_name]?.original_name || row[link_with_name]?.name ||
|
|
|
|
|
row[link_with_name]?.no ||
|
|
|
|
|
row[link_with_name]?.value
|
|
|
|
|
} else if (link_relation === "hasMany" || link_relation === "newHasMany") {
|
|
|
|
|
value = row[link_with_name]?.map((o) => (
|
|
|
|
|
o?.name ||
|
|
|
|
|
o?.no ||
|
|
|
|
|
o?.value ||
|
|
|
|
|
o?.biaoti ||
|
|
|
|
|
o?.mingcheng
|
|
|
|
|
)).toString()
|
|
|
|
|
} else {
|
|
|
|
|
value = row[header.key]
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (this.table.find(i => i.prop === header.key)?.formatter) {
|
|
|
|
|
value = this.table.find(i => i.prop === header.key).formatter(row, {}, row[header.key], rindex)
|
|
|
|
|
} else {
|
|
|
|
|
value = row[header.key]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (header.key === 'department.name') {
|
|
|
|
|
return row['department']?.name || '';
|
|
|
|
|
|
|
|
|
|
// 如果是数字类型字段,确保值是数字类型
|
|
|
|
|
if (header.isNumber && value !== null && value !== undefined && value !== '') {
|
|
|
|
|
let numValue;
|
|
|
|
|
if (typeof value === 'string') {
|
|
|
|
|
const cleanedValue = value.toString().replace(/[元万元m²㎡\s,,/天]/g, '').trim();
|
|
|
|
|
numValue = Number(cleanedValue);
|
|
|
|
|
} else {
|
|
|
|
|
numValue = Number(value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!isNaN(numValue) && numValue !== '') {
|
|
|
|
|
return numValue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (header.key === 'created_at') {
|
|
|
|
|
return row['created_at'] ? this.$moment(row['created_at']).format('YYYY-MM-DD HH:mm:ss') : '';
|
|
|
|
|
|
|
|
|
|
return value;
|
|
|
|
|
})
|
|
|
|
|
// 辅助函数:获取资产数据
|
|
|
|
|
const getAssetData = (myAssetLink) => {
|
|
|
|
|
let myAsset = {}
|
|
|
|
|
if (myAssetLink.land_id) {
|
|
|
|
|
myAsset = myAssetLink['lands'] || {}
|
|
|
|
|
} else if (myAssetLink.house_id) {
|
|
|
|
|
myAsset = myAssetLink['house'] || {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const i = this.form.find(i => i.field === header.key)
|
|
|
|
|
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
|
|
|
|
|
// 判断资产类型
|
|
|
|
|
let assetType = '资产';
|
|
|
|
|
if (myAssetLink.house_id) {
|
|
|
|
|
assetType = '房产';
|
|
|
|
|
} else if (myAssetLink.land_id) {
|
|
|
|
|
assetType = '土地';
|
|
|
|
|
} else if (myAssetLink.biaodileixing) {
|
|
|
|
|
assetType = myAssetLink.biaodileixing;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 处理面积字段,确保是数字类型
|
|
|
|
|
let shijimianji = 0;
|
|
|
|
|
if (myAsset.shijimianji !== null && myAsset.shijimianji !== undefined && myAsset.shijimianji !== '') {
|
|
|
|
|
if (typeof myAsset.shijimianji === 'string') {
|
|
|
|
|
const cleaned = myAsset.shijimianji.toString().replace(/[元万元m²㎡\s,,/天]/g, '').trim();
|
|
|
|
|
shijimianji = Number(cleaned) || 0;
|
|
|
|
|
} else {
|
|
|
|
|
shijimianji = Number(myAsset.shijimianji) || 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let bencizhengshoumianji = 0;
|
|
|
|
|
if (myAssetLink.bencizhengshoumianji !== null && myAssetLink.bencizhengshoumianji !== undefined && myAssetLink.bencizhengshoumianji !== '') {
|
|
|
|
|
if (typeof myAssetLink.bencizhengshoumianji === 'string') {
|
|
|
|
|
const cleaned = myAssetLink.bencizhengshoumianji.toString().replace(/[元万元m²㎡\s,,/天]/g, '').trim();
|
|
|
|
|
bencizhengshoumianji = Number(cleaned) || 0;
|
|
|
|
|
} else {
|
|
|
|
|
bencizhengshoumianji = Number(myAssetLink.bencizhengshoumianji) || 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
let zichanshengyumianji = 0;
|
|
|
|
|
if (myAssetLink.zichanshengyumianji !== null && myAssetLink.zichanshengyumianji !== undefined && myAssetLink.zichanshengyumianji !== '') {
|
|
|
|
|
if (typeof myAssetLink.zichanshengyumianji === 'string') {
|
|
|
|
|
const cleaned = myAssetLink.zichanshengyumianji.toString().replace(/[元万元m²㎡\s,,/天]/g, '').trim();
|
|
|
|
|
zichanshengyumianji = Number(cleaned) || 0;
|
|
|
|
|
} else {
|
|
|
|
|
zichanshengyumianji = Number(myAssetLink.zichanshengyumianji) || 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return row[header.key]
|
|
|
|
|
})
|
|
|
|
|
if (row['asset_handles_to_assets'].length > 0) {
|
|
|
|
|
for (let j = 0;j<row['asset_handles_to_assets'].length;j++) {
|
|
|
|
|
let myAssetLink = row['asset_handles_to_assets'][j]
|
|
|
|
|
let myAsset = {}
|
|
|
|
|
if (myAssetLink.land_id) {
|
|
|
|
|
myAsset = myAssetLink['lands']
|
|
|
|
|
} else if (myAssetLink.house_id) {
|
|
|
|
|
myAsset = myAssetLink['house']
|
|
|
|
|
|
|
|
|
|
return [
|
|
|
|
|
myAsset.name || myAssetLink.name || '',
|
|
|
|
|
assetType,
|
|
|
|
|
myAsset.zuoluo || myAssetLink.zuoluo || '',
|
|
|
|
|
myAsset.xiangxiweizhi || myAssetLink.xiangxiweizhi || '',
|
|
|
|
|
shijimianji,
|
|
|
|
|
bencizhengshoumianji,
|
|
|
|
|
zichanshengyumianji
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (row['asset_handles_to_assets'] && row['asset_handles_to_assets'].length > 0) {
|
|
|
|
|
// 记录当前记录在主数据中的起始行(不包括标题行,从0开始)
|
|
|
|
|
const startRowIndex = data.length;
|
|
|
|
|
|
|
|
|
|
// 主数据行的资产列:如果有资产,显示第一个资产;否则为空
|
|
|
|
|
let firstAssetData = getAssetData(row['asset_handles_to_assets'][0]);
|
|
|
|
|
const mainRowWithAssets = [...myRow, ...firstAssetData];
|
|
|
|
|
data.push(mainRowWithAssets);
|
|
|
|
|
|
|
|
|
|
// 添加剩余的资产行(从第二个开始)
|
|
|
|
|
if (row['asset_handles_to_assets'].length > 1) {
|
|
|
|
|
for (let j = 1; j < row['asset_handles_to_assets'].length; j++) {
|
|
|
|
|
const assetRow = headers.map(() => ''); // 基础列为空
|
|
|
|
|
const assetData = getAssetData(row['asset_handles_to_assets'][j]);
|
|
|
|
|
data.push([...assetRow, ...assetData]);
|
|
|
|
|
}
|
|
|
|
|
data.push([...myRow,myAsset.name,myAssetLink.bencizhengshoumianji,myAssetLink.zichanshengyumianji])
|
|
|
|
|
}
|
|
|
|
|
if (headers.length > 0) {
|
|
|
|
|
for (let q = 0;q < headers.length;q ++) {
|
|
|
|
|
|
|
|
|
|
// 如果有多行(主数据行 + 资产行),需要合并主数据列
|
|
|
|
|
if (row['asset_handles_to_assets'].length > 1) {
|
|
|
|
|
const endRowIndex = data.length - 1; // 结束行索引(不包括标题行)
|
|
|
|
|
headers.forEach((header, colIndex) => {
|
|
|
|
|
merges.push({
|
|
|
|
|
s: {
|
|
|
|
|
r: rowIndex + 1,
|
|
|
|
|
c: q
|
|
|
|
|
},
|
|
|
|
|
e: {
|
|
|
|
|
r: rowIndex + 1 + row['asset_handles_to_assets'].length - 1,
|
|
|
|
|
c: q
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
s: { r: startRowIndex + 1, c: colIndex }, // +1 因为标题行
|
|
|
|
|
e: { r: endRowIndex + 1, c: colIndex } // +1 因为标题行
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rowIndex += row['asset_handles_to_assets'].length
|
|
|
|
|
} else {
|
|
|
|
|
// 如果没有资产,添加一行空的资产行
|
|
|
|
|
const emptyAssetData = assetHeaders.map(() => '');
|
|
|
|
|
data.push([...myRow, ...emptyAssetData]);
|
|
|
|
|
rowIndex++
|
|
|
|
|
data.push(myRow)
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
headers.push({
|
|
|
|
|
title: '资产名称'
|
|
|
|
|
})
|
|
|
|
|
headers.push({
|
|
|
|
|
title: '本次征收面积'
|
|
|
|
|
})
|
|
|
|
|
headers.push({
|
|
|
|
|
title: '资产剩余面积'
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
headers.push(...assetHeaders)
|
|
|
|
|
data.unshift(headers.map((header) => header.title));
|
|
|
|
|
const wb = XLSX.utils.book_new();
|
|
|
|
|
const ws = XLSX.utils.aoa_to_sheet(data);
|
|
|
|
|
ws['!merges'] = merges
|
|
|
|
|
|
|
|
|
|
// 设置数字类型单元格的格式
|
|
|
|
|
const range = XLSX.utils.decode_range(ws['!ref']);
|
|
|
|
|
for (let R = 1; R <= range.e.r; R++) { // 跳过标题行(R=0)
|
|
|
|
|
for (let C = 0; C <= range.e.c; C++) {
|
|
|
|
|
const cellAddress = XLSX.utils.encode_cell({ r: R, c: C });
|
|
|
|
|
if (!ws[cellAddress]) continue;
|
|
|
|
|
const header = headers[C];
|
|
|
|
|
|
|
|
|
|
// 设置样式:标题行使用 headerStyle,其他行使用 cellStyle
|
|
|
|
|
if (R === 0) {
|
|
|
|
|
// 标题行
|
|
|
|
|
ws[cellAddress].s = {
|
|
|
|
|
fill: { fgColor: { rgb: "E6E6FA" } },
|
|
|
|
|
font: { bold: true, sz: 12 },
|
|
|
|
|
alignment: { horizontal: "center", vertical: "center" },
|
|
|
|
|
border: {
|
|
|
|
|
top: { style: "thin" },
|
|
|
|
|
bottom: { style: "thin" },
|
|
|
|
|
left: { style: "thin" },
|
|
|
|
|
right: { style: "thin" }
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
} else {
|
|
|
|
|
// 数据行
|
|
|
|
|
ws[cellAddress].s = {
|
|
|
|
|
alignment: { horizontal: "center", vertical: "center" },
|
|
|
|
|
border: {
|
|
|
|
|
top: { style: "thin" },
|
|
|
|
|
bottom: { style: "thin" },
|
|
|
|
|
left: { style: "thin" },
|
|
|
|
|
right: { style: "thin" }
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 处理数字类型字段
|
|
|
|
|
if (header && header.isNumber && R > 0) {
|
|
|
|
|
const cell = ws[cellAddress];
|
|
|
|
|
let numValue;
|
|
|
|
|
|
|
|
|
|
// 处理单元格值,转换为数字
|
|
|
|
|
if (typeof cell.v === 'string') {
|
|
|
|
|
const cleanedValue = cell.v.toString().replace(/[元万元m²㎡\s,,/天]/g, '').trim();
|
|
|
|
|
numValue = Number(cleanedValue);
|
|
|
|
|
} else {
|
|
|
|
|
numValue = Number(cell.v);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!isNaN(numValue) && cell.v !== null && cell.v !== undefined && cell.v !== '') {
|
|
|
|
|
cell.t = 'n'; // 设置为数字类型
|
|
|
|
|
cell.v = numValue; // 确保值是数字
|
|
|
|
|
// 根据字段名设置合适的格式
|
|
|
|
|
if (header.title && (header.title.includes('面积') || header.title.includes('m²') || header.title.includes('㎡'))) {
|
|
|
|
|
cell.z = '#,##0.00'; // 面积保留2位小数
|
|
|
|
|
} else if (header.title && (header.title.includes('值') || header.title.includes('金额') || header.title.includes('元') || header.title.includes('单价') || header.title.includes('评估'))) {
|
|
|
|
|
cell.z = '#,##0.00'; // 金额保留2位小数
|
|
|
|
|
} else {
|
|
|
|
|
cell.z = '#,##0'; // 整数格式
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 设置列宽
|
|
|
|
|
ws['!cols'] = headers.map(() => ({ wch: 15 }));
|
|
|
|
|
|
|
|
|
|
XLSX.utils.book_append_sheet(wb, ws, sheetName);
|
|
|
|
|
const wbout = XLSX.write(wb, {
|
|
|
|
|
bookType: "xlsx",
|
|
|
|
|
@ -667,30 +855,136 @@ export default {
|
|
|
|
|
this.table.unshift( {
|
|
|
|
|
label: "资产",
|
|
|
|
|
prop: 'assets',
|
|
|
|
|
width: 300,
|
|
|
|
|
width: 320,
|
|
|
|
|
align: 'left',
|
|
|
|
|
customFn: row => {
|
|
|
|
|
let tags = row.asset_handles_to_assets?.map(i => (
|
|
|
|
|
<Tag color="success" style="background: rgb(65, 100, 227) !important;">{(i.land_id ? '【土地】' : '【房产】')+(i.lands?.name || i.house?.name)}</Tag>
|
|
|
|
|
))
|
|
|
|
|
if (!row.asset_handles_to_assets || row.asset_handles_to_assets.length === 0) {
|
|
|
|
|
return <span>-</span>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 判断资产类型:有 house_id 是房产,有 land_id 是土地,都没有则根据 biaodileixing 判断
|
|
|
|
|
const getAssetType = (item) => {
|
|
|
|
|
if (item.house_id) return '房产'
|
|
|
|
|
if (item.land_id) return '土地'
|
|
|
|
|
if (item.biaodileixing) return item.biaodileixing
|
|
|
|
|
return '资产'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取资产详细信息
|
|
|
|
|
const getAssetInfo = (item) => {
|
|
|
|
|
let asset = {}
|
|
|
|
|
if (item.land_id) {
|
|
|
|
|
asset = item.lands || {}
|
|
|
|
|
} else if (item.house_id) {
|
|
|
|
|
asset = item.house || {}
|
|
|
|
|
}
|
|
|
|
|
return asset
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let tags = row.asset_handles_to_assets.slice(0, 1).map(i => {
|
|
|
|
|
const assetType = getAssetType(i)
|
|
|
|
|
const asset = getAssetInfo(i)
|
|
|
|
|
const assetName = asset.name || i.name || " "
|
|
|
|
|
const detailLocation = asset.xiangxiweizhi || i.xiangxiweizhi || ""
|
|
|
|
|
return (
|
|
|
|
|
<Tag color="success" style="background: rgb(65, 100, 227) !important;">
|
|
|
|
|
【{assetType}】{assetName}{detailLocation ? '-' + detailLocation : ''}
|
|
|
|
|
</Tag>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div>
|
|
|
|
|
{
|
|
|
|
|
tags.slice(0, 1)
|
|
|
|
|
tags
|
|
|
|
|
}
|
|
|
|
|
<el-popover title="资产名称" width={200}>
|
|
|
|
|
<el-link slot="reference"
|
|
|
|
|
type="primary"
|
|
|
|
|
style={{
|
|
|
|
|
"word-break": "keep-all",
|
|
|
|
|
display: tags.length > 1 ? "inline" : "none",
|
|
|
|
|
}}>更多</el-link>
|
|
|
|
|
<div slot="default">
|
|
|
|
|
{
|
|
|
|
|
tags
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
</el-popover>
|
|
|
|
|
{row.asset_handles_to_assets.length > 1 && [
|
|
|
|
|
<br key="br"></br>,
|
|
|
|
|
<el-popover key="popover" title="资产" width={1000}>
|
|
|
|
|
<el-link slot="reference"
|
|
|
|
|
type="primary"
|
|
|
|
|
style={{
|
|
|
|
|
"font-size": "13px",
|
|
|
|
|
"word-break": "keep-all",
|
|
|
|
|
display: "inline",
|
|
|
|
|
}}>更多</el-link>
|
|
|
|
|
<div slot="default">
|
|
|
|
|
<Table size="small"
|
|
|
|
|
data={row.asset_handles_to_assets}
|
|
|
|
|
columns={[
|
|
|
|
|
{
|
|
|
|
|
title: '资产名称',
|
|
|
|
|
key: 'name',
|
|
|
|
|
width: 180,
|
|
|
|
|
render: (h, { row: myRow }) => {
|
|
|
|
|
const asset = getAssetInfo(myRow)
|
|
|
|
|
return h('span', asset.name || myRow.name || " ")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '分类',
|
|
|
|
|
key: 'type',
|
|
|
|
|
width: 100,
|
|
|
|
|
render: (h, { row: myRow }) => {
|
|
|
|
|
let type = '资产'
|
|
|
|
|
if (myRow.house_id) {
|
|
|
|
|
type = '房产'
|
|
|
|
|
} else if (myRow.land_id) {
|
|
|
|
|
type = '土地'
|
|
|
|
|
} else if (myRow.biaodileixing) {
|
|
|
|
|
type = myRow.biaodileixing
|
|
|
|
|
}
|
|
|
|
|
return h('span', type)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '坐落',
|
|
|
|
|
key: 'zuoluo',
|
|
|
|
|
minWidth: 200,
|
|
|
|
|
render: (h, { row: myRow }) => {
|
|
|
|
|
const asset = getAssetInfo(myRow)
|
|
|
|
|
return h('span', asset.zuoluo || myRow.zuoluo || " ")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '详细位置',
|
|
|
|
|
key: 'xiangxiweizhi',
|
|
|
|
|
minWidth: 200,
|
|
|
|
|
render: (h, { row: myRow }) => {
|
|
|
|
|
const asset = getAssetInfo(myRow)
|
|
|
|
|
return h('span', asset.xiangxiweizhi || myRow.xiangxiweizhi || " ")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '实际面积(m²)',
|
|
|
|
|
key: 'shijimianji',
|
|
|
|
|
width: 140,
|
|
|
|
|
render: (h, { row: myRow }) => {
|
|
|
|
|
const asset = getAssetInfo(myRow)
|
|
|
|
|
return h('span', asset.shijimianji || myRow.shijimianji || "0")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '本次调整面积(m²)',
|
|
|
|
|
key: 'bencizhengshoumianji',
|
|
|
|
|
width: 140,
|
|
|
|
|
render: (h, { row: myRow }) => {
|
|
|
|
|
return h('span', myRow.bencizhengshoumianji || "0")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '调整后面积(m²)',
|
|
|
|
|
key: 'zichanshengyumianji',
|
|
|
|
|
width: 140,
|
|
|
|
|
render: (h, { row: myRow }) => {
|
|
|
|
|
return h('span', myRow.zichanshengyumianji || "0")
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
]}>
|
|
|
|
|
</Table>
|
|
|
|
|
</div>
|
|
|
|
|
</el-popover>
|
|
|
|
|
]}
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|