You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
982 lines
32 KiB
982 lines
32 KiB
<template>
|
|
<div>
|
|
<el-page-header
|
|
:content="$route.meta.title"
|
|
style="
|
|
padding: 1em;
|
|
font-size: 1em;
|
|
background: #fff;
|
|
margin: 1.67em 0;
|
|
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
|
|
border-radius: 5px;
|
|
"
|
|
@back="$router.back()"
|
|
>
|
|
</el-page-header>
|
|
|
|
<el-row :gutter="24">
|
|
<el-col :span="21" class="print-content">
|
|
<el-card
|
|
id="detail-pictures"
|
|
v-if="
|
|
(detail.id_assets_atlas_files_house_id_relation &&
|
|
detail.id_assets_atlas_files_house_id_relation.length > 0) ||
|
|
(detail.id_assets_atlas_files_land_id_relation &&
|
|
detail.id_assets_atlas_files_land_id_relation.length > 0)
|
|
"
|
|
>
|
|
<div class="el-descriptions__header el-descriptions__title">
|
|
资产图集
|
|
</div>
|
|
<el-carousel trigger="click" height="150px">
|
|
<el-carousel-item
|
|
v-for="item in (detail.id_assets_atlas_files_house_id_relation || detail.id_assets_atlas_files_land_id_relation)"
|
|
>
|
|
<el-image
|
|
style="width: 100%; height: 100%"
|
|
:src="item.url"
|
|
:preview-src-list="picList"
|
|
fit="cover"
|
|
></el-image>
|
|
</el-carousel-item>
|
|
</el-carousel>
|
|
</el-card>
|
|
<el-card id="detail-info">
|
|
<div class="el-descriptions__header el-descriptions__title">
|
|
基本信息
|
|
</div>
|
|
<el-descriptions
|
|
border
|
|
size="small"
|
|
:column="2"
|
|
:label-style="{ 'font-weight': '600' }"
|
|
>
|
|
<el-descriptions-item
|
|
v-for="item in fields"
|
|
:label="item.name"
|
|
v-if="!['file', 'picture'].find((j) => j === item.field)"
|
|
>{{ contentFormat(item)
|
|
}}{{ units.get(item.field) }}</el-descriptions-item
|
|
>
|
|
<el-descriptions-item :label="'关联'+(detail.hasOwnProperty('id_houses_land_id_relation') ? '房产' : '土地')">
|
|
<template v-if="/\/land/g.test($route.path)">
|
|
<div v-for="item in detail.id_houses_land_id_relation" style="display: flex;align-items: center;">
|
|
<span>{{ item.name }}</span>
|
|
<el-link style="margin-left: 10px;white-space: nowrap;" @click="$router.push(/houseDetail/+item.id)">查看</el-link>
|
|
</div>
|
|
</template>
|
|
<template v-if="/\/house/g.test($route.path)">
|
|
<div style="display: flex;align-items: center;">
|
|
<span>{{ (detail.land_id_lands_id_relation ? detail.land_id_lands_id_relation.name : '') }}</span>
|
|
<el-link style="margin-left: 10px;white-space: nowrap;" @click="$router.push('/landDetail/'+detail.land_id_lands_id_relation.id)">查看</el-link>
|
|
</div>
|
|
</template>
|
|
<!-- <div style="display: flex;align-items: center;">-->
|
|
<!-- <span>{{ detail.hasOwnProperty('id_houses_land_id_relation') ? (detail.id_houses_land_id_relation ? detail.id_houses_land_id_relation.name : '') : (detail.land_id_lands_id_relation ? detail.land_id_lands_id_relation.name : '') }}</span>-->
|
|
<!-- <el-link style="margin-left: 10px;white-space: nowrap;" @click="$router.push(detail.hasOwnProperty('id_houses_land_id_relation') ? (detail.id_houses_land_id_relation ? ('/houseDetail/'+detail.id_houses_land_id_relation.id) : '') : (detail.land_id_lands_id_relation ? ('/landDetail/'+detail.land_id_lands_id_relation.id) : ''))">查看</el-link>-->
|
|
<!-- </div>-->
|
|
</el-descriptions-item>
|
|
</el-descriptions>
|
|
</el-card>
|
|
|
|
<!-- <el-card id="detail-documents">-->
|
|
<!-- <div class="el-descriptions__header el-descriptions__title">-->
|
|
<!-- 资产证件图片-->
|
|
<!-- </div>-->
|
|
<!-- <template>-->
|
|
<!-- <template-->
|
|
<!-- v-if="-->
|
|
<!-- (detail.id_asset_picture_files_land_id_relation &&-->
|
|
<!-- detail.id_asset_picture_files_land_id_relation.length > 0) ||-->
|
|
<!-- (detail.id_asset_picture_files_house_id_relation &&-->
|
|
<!-- detail.id_asset_picture_files_house_id_relation.length > 0)-->
|
|
<!-- "-->
|
|
<!-- >-->
|
|
<!-- <div style="display: flex;flex-wrap: wrap;">-->
|
|
<!-- <div-->
|
|
<!-- v-for="item in /\/land/g.test($route.path) ? detail.id_asset_picture_files_land_id_relation : detail.id_asset_picture_files_house_id_relation"-->
|
|
<!-- >-->
|
|
<!-- <el-image-->
|
|
<!-- style="width: 100%; max-width: 200px;margin-right: 10px;"-->
|
|
<!-- :src="item.url"-->
|
|
<!-- :preview-src-list="-->
|
|
<!-- (/\/land/g.test($route.path) ? detail.id_asset_picture_files_land_id_relation : detail.id_asset_picture_files_house_id_relation).map(-->
|
|
<!-- (i) => i.url-->
|
|
<!-- )-->
|
|
<!-- "-->
|
|
<!-- fit="contain"-->
|
|
<!-- ></el-image>-->
|
|
<!-- </div>-->
|
|
<!-- </div>-->
|
|
<!-- </template>-->
|
|
<!-- <template v-else>-->
|
|
<!-- <el-empty description="无"></el-empty>-->
|
|
<!-- </template>-->
|
|
<!-- </template>-->
|
|
<!-- </el-card>-->
|
|
<el-card id="detail-histories">
|
|
<div class="el-descriptions__header el-descriptions__title">
|
|
历史沿革
|
|
</div>
|
|
<template>
|
|
<template v-if="histories && histories.length > 0">
|
|
<Timeline>
|
|
<TimelineItem v-for="(item, index) in histories" :key="item.id">
|
|
<el-descriptions :column="1" size="mini" border :title="$moment(item.fashengshijian).format('YYYY-MM-DD')" :label-style="{ 'width': '86px' }">
|
|
<el-descriptions-item>
|
|
<template slot="label">
|
|
<i class="el-icon-coordinate"></i>
|
|
面积调整
|
|
</template>
|
|
{{ item.mianjitiaozheng }}
|
|
</el-descriptions-item>
|
|
<el-descriptions-item>
|
|
<template slot="label">
|
|
<i class="el-icon-office-building"></i>
|
|
资产来源
|
|
</template>
|
|
{{ item.zichanlaiyuan }}
|
|
</el-descriptions-item>
|
|
<el-descriptions-item>
|
|
<template slot="label">
|
|
<i class="el-icon-chat-line-square"></i>
|
|
其他说明
|
|
</template>
|
|
{{ item.qitashuoming }}
|
|
</el-descriptions-item>
|
|
<el-descriptions-item>
|
|
<template slot="label">
|
|
<i class="el-icon-picture-outline"></i>
|
|
文件目录
|
|
</template>
|
|
<div style="display: flex;flex-wrap: wrap;padding-top: 10px;">
|
|
<div style="display: flex;flex-direction: column; align-items: center;margin-right: 16px;cursor: pointer;"
|
|
v-for="(img,index) in item.tupian_detail"
|
|
:key="img.id">
|
|
<!-- <el-image-->
|
|
<!-- style="height: 160px"-->
|
|
<!-- :src="img.url"-->
|
|
<!-- fit="contain"-->
|
|
<!-- :preview-src-list="item.id_his_tupian_files_asset_history_id_relation.map(i => i.url)"-->
|
|
<!-- ></el-image>-->
|
|
<i class="el-icon-document" style="font-size: 24px;" @click="open(img.url)"></i>
|
|
<div style="color: #3477c6;padding: 10px 0;" @click="open(img.url)">{{ ++index }}. <span style="font-weight: 600;">{{ img.original_name }}</span></div>
|
|
<div style="color: #3477c6" @click="down(img)"><i class="el-icon-download"></i>点击下载</div>
|
|
</div>
|
|
</div>
|
|
</el-descriptions-item>
|
|
</el-descriptions>
|
|
|
|
</TimelineItem>
|
|
</Timeline>
|
|
</template>
|
|
<template v-else>
|
|
<el-empty description="无"></el-empty>
|
|
</template>
|
|
</template>
|
|
</el-card>
|
|
<el-card id="detail-assetsMap">
|
|
<div class="el-descriptions__header el-descriptions__title">
|
|
<p>资产地图</p>
|
|
</div>
|
|
|
|
<div
|
|
class="map"
|
|
id="detail-map"
|
|
style="width: 100%; height: 300px"
|
|
></div>
|
|
|
|
</el-card>
|
|
<!-- <el-card id="detail-safe">-->
|
|
<!-- <div class="el-descriptions__header el-descriptions__title">-->
|
|
<!-- 安全检查-->
|
|
<!-- </div>-->
|
|
|
|
<!-- <xy-table :is-page="false" :height="300" :list="inspections" :table-item="inspectionTable" style="margin-top: 20px" size="mini" stripe ref="table1" :auths="[]" ></xy-table>-->
|
|
<!-- </el-card>-->
|
|
|
|
<el-card id="detail-contract">
|
|
<div class="el-descriptions__header el-descriptions__title">
|
|
租赁合同
|
|
</div>
|
|
|
|
<xy-table :is-page="false" :height="300" :list="leases" :table-item="leaseTable" style="margin-top: 20px" size="mini" stripe ref="table1" :auths="[]" ></xy-table>
|
|
</el-card>
|
|
|
|
<el-card id="detail-repair">
|
|
<div class="el-descriptions__header el-descriptions__title">
|
|
维修保养
|
|
</div>
|
|
|
|
<xy-table :is-page="false" :height="300" :list="keeps" :table-item="keepTable" style="margin-top: 20px" size="mini" stripe ref="table1" :auths="[]" ></xy-table>
|
|
</el-card>
|
|
|
|
<el-card id="detail-files">
|
|
<div class="el-descriptions__header el-descriptions__title">
|
|
资产相关附件
|
|
</div>
|
|
<template>
|
|
<template
|
|
v-if="
|
|
(detail.id_asset_file_files_land_id_relation &&
|
|
detail.id_asset_file_files_land_id_relation.length > 0) ||
|
|
(detail.id_asset_file_files_house_id_relation &&
|
|
detail.id_asset_file_files_house_id_relation.length > 0)
|
|
"
|
|
>
|
|
<div
|
|
v-for="item in /\/land/g.test($route.path) ? detail.id_asset_file_files_land_id_relation : detail.id_asset_file_files_house_id_relation"
|
|
style="display: flex; justify-content: space-between;margin-bottom: 4px;"
|
|
>
|
|
<a :download="item.url">{{ item.original_name }}</a>
|
|
<div>
|
|
<el-button
|
|
type="primary"
|
|
icon="el-icon-download"
|
|
circle
|
|
size="mini"
|
|
@click="down(item)"
|
|
></el-button>
|
|
<el-button
|
|
type="primary"
|
|
icon="el-icon-search"
|
|
circle
|
|
size="mini"
|
|
@click="open(item.url)"
|
|
></el-button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<template v-else>
|
|
<el-empty description="无"></el-empty>
|
|
</template>
|
|
</template>
|
|
</el-card>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<Anchor show-ink :offset-top="64">
|
|
<AnchorLink href="#detail-pictures" title="资产图集" v-if="
|
|
(detail.id_assets_atlas_files_house_id_relation &&
|
|
detail.id_assets_atlas_files_house_id_relation.length > 0) ||
|
|
(detail.id_assets_atlas_files_land_id_relation &&
|
|
detail.id_assets_atlas_files_land_id_relation.length > 0)
|
|
" />
|
|
<AnchorLink href="#detail-info" title="基本信息" />
|
|
<!-- <AnchorLink href="#detail-documents" title="证件图片" />-->
|
|
<AnchorLink href="#detail-histories" title="历史沿革" />
|
|
<AnchorLink href="#detail-assetsMap" title="资产地图" />
|
|
<!-- <AnchorLink href="#detail-safe" title="安全检查"></AnchorLink>-->
|
|
<AnchorLink href="#detail-contract" title="租赁合同"></AnchorLink>
|
|
<AnchorLink href="#detail-repair" title="维修保养"></AnchorLink>
|
|
<AnchorLink href="#detail-files" title="相关附件" />
|
|
</Anchor>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<Modal
|
|
:width="76"
|
|
transfer
|
|
:z-index="6000"
|
|
v-model="showModal"
|
|
:footer-hide="true"
|
|
title="预览"
|
|
>
|
|
<template>
|
|
<iframe
|
|
style="width: 100%; height: 57vh"
|
|
:src="codeUri"
|
|
border="0"
|
|
></iframe>
|
|
</template>
|
|
</Modal>
|
|
|
|
<div style="position:fixed;right: 40px;bottom: 80px;background: #fff;border-radius: 100%;width: 40px;height: 40px;display: flex;align-items: center;justify-content: center;font-size: 20px;cursor: pointer;" @click="print">
|
|
<Icon type="md-print" />
|
|
</div>
|
|
<div style="position:fixed;right: 40px;bottom: 30px;background: #fff;border-radius: 100%;width: 40px;height: 40px;display: flex;align-items: center;justify-content: center;font-size: 20px;cursor: pointer;" @click="isShowSearch = !isShowSearch">
|
|
<Icon type="md-search" />
|
|
</div>
|
|
|
|
<transition name="search-container">
|
|
<el-card v-show="isShowSearch" class="search-container">
|
|
<template #header>
|
|
<div style="display:flex;align-items: center;">
|
|
<p>搜索附件</p>
|
|
|
|
<i class="el-icon-close" style="margin-left: auto;" @click="isShowSearch = false"></i>
|
|
</div>
|
|
</template>
|
|
|
|
<template>
|
|
<!-- <div>-->
|
|
<!-- <Button size="small" type="success" ghost>资产</Button>-->
|
|
<!-- <Button size="small" type="info" ghost>文件</Button>-->
|
|
<!-- </div>-->
|
|
<el-input v-model="searchKeyword" size="mini" style="margin-top: 4px;" placeholder="请输入名称" clearable>
|
|
<el-button type="primary" slot="append" icon="el-icon-search" @click="searchFile"></el-button>
|
|
</el-input>
|
|
|
|
<ul class="search-file-list">
|
|
<li v-for="(item, index) in filesFilter" :key="item.name+item.id">
|
|
<div style="display: flex;justify-content: space-between;align-items: center;">
|
|
<a style="flex-basis: 50%;" :download="item.url">{{index+1}}.{{ item.original_name }}</a>
|
|
|
|
<!-- <p style="flex-basis: 25%;flex-shrink: 0;">-->
|
|
<!-- {{ item.land.name ? `[土地]${item.land.name}` : `[房产]${item.house.name}` }}-->
|
|
<!-- </p>-->
|
|
|
|
<div>
|
|
<el-button
|
|
type="primary"
|
|
icon="el-icon-download"
|
|
circle
|
|
size="mini"
|
|
@click="down(item)"
|
|
></el-button>
|
|
<el-button
|
|
type="primary"
|
|
icon="el-icon-search"
|
|
circle
|
|
size="mini"
|
|
@click="open(item.url)"
|
|
></el-button>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</template>
|
|
</el-card>
|
|
</transition>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import html2canvas from "html2canvas";
|
|
|
|
import { show, index } from "@/api/system/baseForm";
|
|
import { show as formShow } from "@/api/system/customForm";
|
|
import { getparameter } from "@/api/system/dictionary";
|
|
import { listdept } from "@/api/system/department";
|
|
import { download } from "@/utils/downloadRequest";
|
|
import { getFiles } from "@/api/common";
|
|
export default {
|
|
name: "detail",
|
|
data() {
|
|
return {
|
|
isShowSearch: false,
|
|
showModal: false,
|
|
codeUri: "",
|
|
center: [120.283692, 31.614211],
|
|
marker: {},
|
|
|
|
detail: {},
|
|
fields: [],
|
|
relation: [],
|
|
customForm: {
|
|
customFormId: "",
|
|
tableName: "",
|
|
},
|
|
|
|
histories: [],
|
|
leases: [],
|
|
inspections: [],
|
|
keeps: [],
|
|
units: new Map([
|
|
["dengjimianji", "m²"],
|
|
["shijimianji", "m²"],
|
|
["dikuaizongjia", "元"],
|
|
["dikuaimianji", "m²"],
|
|
["muqianjunjia", "元"],
|
|
]),
|
|
|
|
inspectionTable: [
|
|
{
|
|
fixed: 'left',
|
|
type: 'index',
|
|
width: 46,
|
|
},
|
|
{
|
|
label: "检查记录",
|
|
prop: "jianchajilu",
|
|
minWidth: 200,
|
|
align: "left"
|
|
},
|
|
{
|
|
label: "日期",
|
|
prop: "riqi",
|
|
width: 160
|
|
}
|
|
],
|
|
keepTable: [
|
|
{
|
|
fixed: 'left',
|
|
type: 'index',
|
|
width: 46,
|
|
},
|
|
{
|
|
label: "保养内容",
|
|
prop: "baoyangneirong",
|
|
minWidth: 200,
|
|
align: "left"
|
|
},
|
|
{
|
|
label: "保养日期",
|
|
prop: "baoyangriqi",
|
|
width: 160
|
|
},
|
|
{
|
|
label: "经办人",
|
|
prop: "jingbanren",
|
|
width: 140
|
|
}
|
|
],
|
|
leaseTable: [
|
|
{
|
|
fixed: 'left',
|
|
type: 'index',
|
|
width: 46,
|
|
},
|
|
{
|
|
label: '地块名称',
|
|
prop: 'assets',
|
|
width: 180,
|
|
fixed: 'left',
|
|
align: 'left',
|
|
customFn: row => {
|
|
return (
|
|
<div>
|
|
{
|
|
row.land?.map(i => (
|
|
<Tag color="green">{ i.name }</Tag>
|
|
))
|
|
}
|
|
{
|
|
row.house?.map(i => (
|
|
<Tag color="blue">{ i.name }</Tag>
|
|
))
|
|
}
|
|
</div>
|
|
)
|
|
}
|
|
},
|
|
{
|
|
label: '承租方',
|
|
prop: 'chengzufang',
|
|
width: 150
|
|
},
|
|
{
|
|
label: '租赁期限',
|
|
width: 190,
|
|
customFn:row => {
|
|
return (
|
|
<div>
|
|
<span>{ this.$moment(new Date(row.zulinkaishiqixian)).format('YYYY.MM.DD') }</span>
|
|
<span> - </span>
|
|
<span>{ this.$moment(new Date(row.zulinjieshuqixian)).format('YYYY.MM.DD') }</span>
|
|
</div>
|
|
)
|
|
}
|
|
},
|
|
{
|
|
label: '合同交租期限',
|
|
width: 190,
|
|
customFn:row => {
|
|
return (
|
|
<div>
|
|
<span>{ this.$moment(new Date(row.hetongjiaozukaishishijian)).format('YYYY.MM.DD') }</span>
|
|
<span> - </span>
|
|
<span>{ this.$moment(new Date(row.hetongjiaozujieshushijian)).format('YYYY.MM.DD') }</span>
|
|
</div>
|
|
)
|
|
}
|
|
},
|
|
{
|
|
label: '年租金单价',
|
|
prop: 'nianzujindanjia',
|
|
align: 'right',
|
|
width: 120
|
|
},
|
|
{
|
|
label: '签订年月',
|
|
prop: 'qiandingnianyue',
|
|
align: 'right',
|
|
width: 120
|
|
},
|
|
],
|
|
|
|
|
|
searchKeyword: "",
|
|
searchFiles: [],
|
|
searchFileTotal: 0,
|
|
|
|
myFiles: [],
|
|
};
|
|
},
|
|
methods: {
|
|
async searchFile () {
|
|
try {
|
|
const res = await getFiles({ keyword: this.searchKeyword });
|
|
this.searchFiles = res.list.data;
|
|
this.searchFileTotal = res.list.total
|
|
} catch (err) {
|
|
|
|
}
|
|
},
|
|
|
|
open(url) {
|
|
this.codeUri = `${process.env.VUE_APP_PREVIEW}?url=${encodeURIComponent(
|
|
new Buffer(url).toString("base64")
|
|
)}`;
|
|
|
|
this.showModal = true;
|
|
},
|
|
|
|
down(e) {
|
|
download(e.url, "get", {}, e.original_name);
|
|
},
|
|
|
|
init() {
|
|
//创建卫星图层
|
|
const satellite = new AMap.TileLayer.Satellite();
|
|
const roadNet = new AMap.TileLayer.RoadNet();
|
|
this.map = new AMap.Map("detail-map", {
|
|
center: this.center,
|
|
mapStyle: "amap://styles/bfb1bb3feb0db7082367abca96b8d214", // 设置地图的显示样式
|
|
zoom: 60,
|
|
layers: [satellite, roadNet]
|
|
});
|
|
this.map.plugin(["AMap.ToolBar"],() => {
|
|
//加载工具条
|
|
this.map.addControl(new AMap.ToolBar());
|
|
});
|
|
|
|
this.map.remove(this.marker);
|
|
if (this.detail.zichanweizhi) {
|
|
let lat, lng;
|
|
[lng, lat] = this.detail.zichanweizhi.split(",");
|
|
let marker = new AMap.Marker({
|
|
icon: "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",
|
|
position: [Number(lng), Number(lat)],
|
|
offset: new AMap.Pixel(-13, -30),
|
|
});
|
|
let markerContent = document.createElement("div");
|
|
markerContent.setAttribute("class", "map-marker");
|
|
let markerImg = document.createElement("img");
|
|
markerImg.src =
|
|
"//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png";
|
|
let markerSpan = document.createElement("span");
|
|
markerSpan.setAttribute("class", "map-marker__text");
|
|
markerSpan.innerText = this.detail.name;
|
|
markerContent.appendChild(markerImg);
|
|
markerContent.appendChild(markerSpan);
|
|
marker.setContent(markerContent);
|
|
|
|
this.marker = marker;
|
|
this.map.add(this.marker);
|
|
this.map.setFitView(this.marker);
|
|
this.map.setZoom(15);
|
|
}
|
|
},
|
|
|
|
async getFields() {
|
|
if (this.$route.meta.params?.custom_form) {
|
|
let decode = decodeURIComponent(this.$route.meta.params?.custom_form);
|
|
try {
|
|
let custom_form = JSON.parse(decode);
|
|
this.customForm.customFormId = custom_form.custom_form_id;
|
|
this.customForm.tableName = custom_form.table_name;
|
|
} catch (err) {
|
|
console.warn(err);
|
|
}
|
|
}
|
|
|
|
const res = await formShow({ id: this.customForm.customFormId }, false);
|
|
this.fields = res.fields.filter(i => i.list_show).sort((a, b) => a.sort - b.sort);
|
|
this.relation = res.relation;
|
|
|
|
//字段处理
|
|
//初始表白名单
|
|
let baseTable = new Map([
|
|
[
|
|
"departments",
|
|
async () => {
|
|
const res = await listdept();
|
|
return res;
|
|
},
|
|
],
|
|
["admins", []],
|
|
]);
|
|
let { fields, relation } = this;
|
|
if (
|
|
!fields ||
|
|
!relation ||
|
|
!fields instanceof Array ||
|
|
!relation instanceof Array
|
|
) {
|
|
throw new Error("fields或relation格式错误");
|
|
}
|
|
fields
|
|
.forEach((i) => {
|
|
i._relations = relation.find(
|
|
(j) => j.link_table_name.split("_")[1] === i.field
|
|
);
|
|
if (i.select_item && typeof i.select_item === "object") {
|
|
let keys = Object.keys(i.select_item);
|
|
i._params = keys.map((key) => {
|
|
return {
|
|
key,
|
|
value: /^\d*$/.test(i.select_item[key])
|
|
? Number(i.select_item[key])
|
|
: i.select_item[key],
|
|
};
|
|
});
|
|
}
|
|
if (i.edit_input === "file" || i.edit_input === "files") {
|
|
return;
|
|
}
|
|
if (i._relations) {
|
|
if (baseTable.get(i._relations.link_table_name)) {
|
|
baseTable
|
|
.get(i._relations.link_table_name)()
|
|
.then((res) => {
|
|
i._params = res.data;
|
|
});
|
|
} else {
|
|
i._params = i._relations.parameter_id
|
|
? getparameter({ id: i._relations.parameter_id }, false).then(
|
|
(res) => {
|
|
i._params = res.detail;
|
|
}
|
|
)
|
|
: this.index({
|
|
table_name: i._relations.link_table_name,
|
|
page: 1,
|
|
page_size: 9999,
|
|
}).then((res) => {
|
|
i._params = res.data;
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
const detail = await show({
|
|
id: this.$route.params.id,
|
|
table_name: this.customForm.tableName,
|
|
});
|
|
this.detail = detail;
|
|
this.init();
|
|
|
|
this.myFiles.push(...detail.id_asset_file_files_land_id_relation);
|
|
this.myFiles.push(...detail.id_asset_picture_files_land_id_relation);
|
|
this.myFiles.push(...detail.id_assets_atlas_files_land_id_relation);
|
|
},
|
|
|
|
|
|
async getHistories () {
|
|
const res = await index({
|
|
table_name: 'his_evolutions',
|
|
page: 1,
|
|
page_size: 999,
|
|
sort_name: "fashengshijian",
|
|
filter:[
|
|
{
|
|
key: /\/land/g.test(this.$route.path) ? 'land_id' : 'house_id',
|
|
op: 'eq',
|
|
value: this.$route.params.id
|
|
}
|
|
]
|
|
})
|
|
this.histories = res.data;
|
|
|
|
res.data.forEach(i => {
|
|
this.myFiles.push(...i.tupian_detail)
|
|
})
|
|
},
|
|
|
|
async getLeases () {
|
|
const res = await index({
|
|
table_name: 'leases',
|
|
page: 1,
|
|
page_size: 999,
|
|
filter:[
|
|
{
|
|
key: "id",
|
|
op: 'range',
|
|
value: this.detail.leases.map(i => i.id).toString()
|
|
}
|
|
]
|
|
})
|
|
this.leases = res.data;
|
|
|
|
res.data.forEach(i => {
|
|
this.myFiles.push(...i.fujian_detail)
|
|
})
|
|
},
|
|
|
|
async getKeeps () {
|
|
const res = await index({
|
|
table_name: 'asset_safety_keeps',
|
|
page: 1,
|
|
page_size: 999,
|
|
filter:[
|
|
{
|
|
key: /\/land/g.test(this.$route.path) ? 'land_id' : 'house_id',
|
|
op: 'eq',
|
|
value: this.$route.params.id
|
|
}
|
|
]
|
|
})
|
|
this.keeps = res.data;
|
|
|
|
res.data.forEach(i => {
|
|
this.myFiles.push(...i.fujian_detail)
|
|
})
|
|
},
|
|
|
|
async getInspections () {
|
|
const res = await index({
|
|
table_name: 'asset_safety_inspections',
|
|
page: 1,
|
|
page_size: 999,
|
|
filter:[
|
|
{
|
|
key: /\/land/g.test(this.$route.path) ? 'land_id' : 'house_id',
|
|
op: 'eq',
|
|
value: this.$route.params.id
|
|
}
|
|
]
|
|
})
|
|
this.inspections = res.data;
|
|
|
|
res.data.forEach(i => {
|
|
this.myFiles.push(...i.fujian_detail)
|
|
})
|
|
},
|
|
|
|
print () {
|
|
const iframeEL=document.querySelector('.print-iframe');
|
|
if(iframeEL){
|
|
iframeEL.remove();
|
|
}
|
|
const dom = document.querySelector('.print-content')
|
|
html2canvas(dom,{
|
|
useCORS: true,
|
|
ignoreElements:ele => {
|
|
const ignoreIds = ['detail-pictures']
|
|
if (ignoreIds.indexOf(ele.id) !== -1) {
|
|
return true
|
|
}
|
|
}
|
|
}).then(canvas => {
|
|
const img = new Image();
|
|
img.src = canvas.toDataURL('image/png');
|
|
img.style.width='100%'
|
|
// 在 iframe 文档中添加图片元素
|
|
const iframe = document.createElement('iframe');
|
|
iframe.style.width='100%'
|
|
iframe.classList.add('print-iframe')
|
|
document.body.appendChild(iframe)
|
|
const doc = iframe.contentWindow.document
|
|
doc.body.appendChild(img);
|
|
//避免图片没有加载完成就打印
|
|
setTimeout(()=>{
|
|
iframe.contentWindow.print();
|
|
},100)
|
|
})
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
filesFilter () {
|
|
return this.myFiles.filter((i) => (new RegExp(`${this.searchKeyword}.`).test(i.original_name)));
|
|
},
|
|
|
|
picList() {
|
|
if (/\/house/g.test(this.$route.path)) {
|
|
return (
|
|
this.detail?.id_assets_atlas_files_house_id_relation?.map(
|
|
(i) => i.url
|
|
) || []
|
|
);
|
|
}
|
|
if (/\/land/g.test(this.$route.path)) {
|
|
return (
|
|
this.detail?.id_assets_atlas_files_land_id_relation?.map(
|
|
(i) => i.url
|
|
) || []
|
|
);
|
|
}
|
|
},
|
|
contentFormat() {
|
|
return function (i) {
|
|
let { field, _relations } = i;
|
|
if (field === 'bufuqingkuang') {
|
|
if ((this.detail.tudiquanshuren !== this.detail.quanliren) ||
|
|
(this.detail.dengjimianji !== this.detail.shijimianji)) {
|
|
let text = ""
|
|
text += this.detail.tudiquanshuren !== this.detail.quanliren
|
|
? " 权利人名称不符 "
|
|
: ""
|
|
text += this.detail.dengjimianji !== this.detail.shijimianji
|
|
? " 登记面积不符 "
|
|
: ""
|
|
return text;
|
|
}
|
|
return "无"
|
|
}
|
|
if (_relations && _relations.link_table_name) {
|
|
if (
|
|
_relations.link_relation === "hasOne" ||
|
|
_relations.link_relation === "newHasOne"
|
|
) {
|
|
return (
|
|
this.detail[_relations.link_with_name]?.name ||
|
|
this.detail[_relations.link_with_name]?.no ||
|
|
this.detail[_relations.link_with_name]?.value
|
|
);
|
|
}
|
|
if (
|
|
_relations.link_relation === "hasMany" ||
|
|
_relations.link_relation === "newHasMany"
|
|
) {
|
|
return this.detail[_relations.link_with_name]
|
|
?.map((o) => o?.original_name || o?.name || o?.no || o?.value)
|
|
?.toString();
|
|
}
|
|
|
|
return;
|
|
}
|
|
if (i._params && i._params.length > 0) {
|
|
return i._params.find((j) => j.value == this.detail[i.field])?.key;
|
|
}
|
|
|
|
return this.detail[i.field];
|
|
};
|
|
},
|
|
},
|
|
created() {
|
|
this.getFields().then(res => {
|
|
this.getHistories()
|
|
this.getKeeps()
|
|
this.getLeases()
|
|
// this.getInspections()
|
|
})
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.el-card__body > .el-descriptions__title,.el-card__body > ::v-deep .el-descriptions__title {
|
|
|
|
position: relative;
|
|
padding-left: 14px;
|
|
|
|
&::before {
|
|
content: '';
|
|
width: 4px;
|
|
background: linear-gradient(to bottom,rgb(57, 129, 199), rgba(118, 148, 183, 0.7));
|
|
|
|
position: absolute;
|
|
left: 0;
|
|
top: 2px;
|
|
bottom: 2px;
|
|
}
|
|
}
|
|
::v-deep .el-card {
|
|
margin-bottom: 20px;
|
|
}
|
|
::v-deep .el-empty__image {
|
|
width: 120px;
|
|
}
|
|
|
|
a {
|
|
color: red;
|
|
text-decoration: none;
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
a:hover {
|
|
color: red;
|
|
text-decoration: underline;
|
|
}
|
|
|
|
::v-deep .ivu-anchor-link-title:hover {
|
|
transition: all 0.2s;
|
|
color: $primaryColor !important;
|
|
}
|
|
|
|
.el-image + .el-image {
|
|
margin-left: 6px;
|
|
}
|
|
|
|
.search-container-enter-active {
|
|
animation: slide-in-fwd-br 0.4s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
|
|
|
|
}
|
|
.search-container-leave-active {
|
|
animation: slide-out-fwd-br 0.6s cubic-bezier(0.550, 0.085, 0.680, 0.530) both;
|
|
}
|
|
@keyframes slide-in-fwd-br {
|
|
0% {
|
|
transform: translateZ(-1400px) translateY(800px) translateX(1000px);
|
|
opacity: 0;
|
|
}
|
|
100% {
|
|
transform: translateZ(0) translateY(0) translateX(0);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
@keyframes slide-out-fwd-br {
|
|
0% {
|
|
transform: translateZ(0) translateY(0) translateX(0);
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
transform: translateZ(600px) translateY(300px) translateX(400px);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
.search-container {
|
|
min-width: 460px;
|
|
background: #fff;
|
|
|
|
z-index: 4000;
|
|
position: fixed;
|
|
right: 100px;
|
|
bottom: 30px;
|
|
}
|
|
|
|
.search-file-list {
|
|
|
|
margin-top: 20px;
|
|
li {
|
|
transition: all 0.2s;
|
|
list-style: none;
|
|
line-height: 1.5;
|
|
border-radius: 6px;
|
|
border: 1px solid transparent;
|
|
padding: 6px 10px;
|
|
|
|
&:hover {
|
|
border-color: $primaryColor;
|
|
}
|
|
}
|
|
}
|
|
</style>
|
|
<style lang="scss">
|
|
.map-marker {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
|
|
&__text {
|
|
background: #fff;
|
|
zoom: 0.9;
|
|
padding: 2px 6px;
|
|
border-radius: 4px;
|
|
white-space: nowrap;
|
|
filter: drop-shadow(2px 2px 5px #00000055);
|
|
}
|
|
}
|
|
</style>
|