@@ -4,11 +4,15 @@ import index from "./modules/index"; | |||
import login from './modules/login'; | |||
// 产品相关 | |||
import product from './modules/product'; | |||
export default [{ | |||
// 物业相关 | |||
import property from './modules/property'; | |||
export default [ | |||
{ | |||
path: "*", | |||
redirect: "/index", // 重定向 | |||
}, | |||
...index, | |||
...login, | |||
...product, | |||
...property, | |||
]; |
@@ -0,0 +1,18 @@ | |||
/** | |||
* | |||
* 物业路由 | |||
* | |||
*/ | |||
export default [ | |||
// 物业详情 | |||
{ | |||
path: "/property-detail", | |||
name: "PropertyDetail", | |||
component: () => | |||
import ("../../views/property/detail/PropertyDetail.vue"), | |||
meta: { | |||
title: "物业详情", | |||
}, | |||
}, | |||
]; |
@@ -6,4 +6,5 @@ export const commonJs = { | |||
let routeData = router.resolve(routerPath); | |||
window.open(routeData.href, "_blank"); | |||
}, | |||
}; | |||
}; | |||
@@ -22,7 +22,7 @@ export default { | |||
.login { | |||
// @include size(100%, 600px); | |||
min-height: 100vh; | |||
background: url("~@/assets/images/login/loginPageBgc.png") no-repeat; | |||
background: url("~@/assets/image/login/loginPageBgc.png") no-repeat; | |||
background-size: 100% 100%; | |||
position: relative; | |||
.nav { |
@@ -34,7 +34,7 @@ | |||
> | |||
<img | |||
slot="prefix" | |||
src="~@/assets/images/login/verificationCode.png" | |||
src="~@/assets/image/login/verificationCode.png" | |||
class="img-code-icon" | |||
alt | |||
/> | |||
@@ -48,7 +48,7 @@ | |||
> | |||
<img | |||
slot="prefix" | |||
src="~@/assets/images/login/numCodeIcon.png" | |||
src="~@/assets/image/login/numCodeIcon.png" | |||
class="img-code-icon" | |||
alt | |||
/> | |||
@@ -86,7 +86,7 @@ | |||
> | |||
<img | |||
slot="prefix" | |||
src="~@/assets/images/login/verificationCode.png" | |||
src="~@/assets/image/login/verificationCode.png" | |||
class="img-code-icon" | |||
alt | |||
/> | |||
@@ -101,7 +101,7 @@ | |||
> | |||
<img | |||
slot="prefix" | |||
src="~@/assets/images/login/numCodeIcon.png" | |||
src="~@/assets/image/login/numCodeIcon.png" | |||
class="img-code-icon-num" | |||
alt | |||
/> |
@@ -1,6 +1,6 @@ | |||
.product-detial[data-1664250138954] { | |||
height: 250px; | |||
background: url("~@/assets/images/product/productDetialHeaderBgc.png") | |||
background: url("~@/assets/image/product/productDetialHeaderBgc.png") | |||
no-repeat; | |||
background-size: 100% 100%; | |||
.header-box { |
@@ -7,7 +7,7 @@ | |||
<span class="current-position"> | |||
<i class="el-icon-location"></i> 当前位置: | |||
</span> | |||
<span class="current-position link">首页</span> | |||
<span class="current-position link" @click="toPath('/')">首页</span> | |||
<span class="current-position link"> | |||
<i class="el-icon-arrow-right"></i> | |||
</span> | |||
@@ -33,7 +33,7 @@ | |||
{{ mainDetailText }} | |||
</div> | |||
<div class="main-btn"> | |||
<img src="~@assets/images/product/consult-icon.png" class="consult-icon" alt="icon"> 立即咨询 | |||
<img src="~@assets/image/product/consult-icon.png" class="consult-icon" alt="icon"> 立即咨询 | |||
</div> | |||
</div> | |||
</div> | |||
@@ -46,19 +46,26 @@ | |||
</div> | |||
</div> | |||
</div> | |||
<Footer></Footer> | |||
</div> | |||
</template> | |||
<script> | |||
import Nav from "@components/Header.vue"; | |||
import Footer from "@components/Footer.vue"; | |||
import "./ProductDetail.scss"; | |||
export default { | |||
components: { Nav }, | |||
components: { Nav,Footer }, | |||
data() { | |||
return { | |||
mainDetailText: `根据一个纳税年度内的所得、应纳税额、已缴(扣)税额、抵免(扣)税额、应补(退)税额等情况,如实填写并报送《个人所得税纳税申报表(适用于年所得12万元以上的纳税人申报)》、个人有效身份证件复印件,以及主管税务机关要求报送的其他有关资料。有效身份证件,包括纳税人的身份证、护照、回乡证、军人身份证件等。`, | |||
}; | |||
}, | |||
methods:{ | |||
toPath(path){ | |||
this.$router.push(path) | |||
} | |||
} | |||
}; | |||
</script> | |||
@@ -0,0 +1,215 @@ | |||
.property-detial[data-1664250138954] { | |||
height: 250px; | |||
background: url("~@/assets/image/product/productDetialHeaderBgc.png") | |||
no-repeat; | |||
background-size: 100% 100%; | |||
.header-box { | |||
width: 1200px; | |||
margin: 0 auto; | |||
height: 150px; | |||
position: relative; | |||
.breadcrumb-nav { | |||
float: left; | |||
margin-top: 32px; | |||
.current-position { | |||
position: relative; | |||
z-index: 2; | |||
color: #fff; | |||
font-size: 16px; | |||
&.link { | |||
margin-right: 3px; | |||
cursor: pointer; | |||
} | |||
&.active { | |||
font-weight: bold; | |||
} | |||
} | |||
} | |||
.content { | |||
position: absolute; | |||
left: 0; | |||
top: 0; | |||
width: 100%; | |||
height: 100%; | |||
text-align: center; | |||
color: #fff; | |||
.title { | |||
font-size: 36px; | |||
font-weight: bold; | |||
height: 50px; | |||
line-height: 50px; | |||
margin-top: 36px; | |||
} | |||
.sub-title { | |||
margin-top: 5px; | |||
font-size: 14px; | |||
} | |||
} | |||
} | |||
.detial-container { | |||
width: 1200px; | |||
margin: 0 auto; | |||
margin-top: 30px; | |||
padding-bottom: 50px; | |||
border-top: 2px solid #2c94f0; | |||
.ditial-banner { | |||
height: 387px; | |||
background: linear-gradient(to bottom, #cde8fb, #fff); | |||
box-sizing: border-box; | |||
padding: 27px 28px 0 30px; | |||
.main-img { | |||
float: left; | |||
width: 530px; | |||
height: 360px; | |||
margin-right: 32px; | |||
background: green; | |||
} | |||
.main-item { | |||
float: left; | |||
height: 360px; | |||
width: calc(100% - 562px); | |||
.main-title { | |||
height: 33px; | |||
line-height: 33px; | |||
font-weight: bold; | |||
font-size: 24px; | |||
color: #334a5f; | |||
@include text-ellipsis(); | |||
} | |||
} | |||
.main-price { | |||
margin-top: 23px; | |||
line-height: 42px; | |||
font-size: 30px; | |||
color: #334a5f; | |||
font-weight: bold; | |||
.price-value { | |||
color: #d9121a; | |||
} | |||
} | |||
.mian-detail { | |||
font-size: 16px; | |||
height: 120px; | |||
margin-top: 25px; | |||
box-sizing: border-box; | |||
line-height: 30px; | |||
color: #637485; | |||
@include text-ellipsis-multiple(4); | |||
.mian-detail-span { | |||
font-weight: bold; | |||
color: #334a5f; | |||
} | |||
} | |||
.listing-address { | |||
margin-top: 10px; | |||
height: 30px; | |||
line-height: 30px; | |||
} | |||
.main-btn { | |||
margin-top: 20px; | |||
height: 56px; | |||
line-height: 56px; | |||
width: 190px; | |||
background-image: linear-gradient( | |||
135deg, | |||
#42a6fe 0%, | |||
#0070d2 100% | |||
); | |||
border-radius: 28px; | |||
color: #fff; | |||
font-size: 24px; | |||
text-align: center; | |||
.consult-icon { | |||
position: relative; | |||
top: 6px; | |||
left: -3px; | |||
} | |||
cursor: pointer; | |||
} | |||
} | |||
.block-title { | |||
margin: 30px 0 20px 0; | |||
height: 60px; | |||
line-height: 60px; | |||
background-image: linear-gradient(135deg, #42a6fe 0%, #0070d2 100%); | |||
@include font(24px, #fff); | |||
padding-left: 30px; | |||
} | |||
.block-table { | |||
width: 100%; | |||
th { | |||
background: #f0f9fe; | |||
border-bottom: 0; | |||
height: 80px; | |||
} | |||
td { | |||
border-color: #bcd8e9; | |||
} | |||
&.serve { | |||
td { | |||
height: 68px; | |||
} | |||
} | |||
&::before { | |||
background-color: #bcd8e9; | |||
} | |||
.img-icon { | |||
display: inline-block; | |||
width: 136px; | |||
height: 92px; | |||
img, | |||
video { | |||
width: 100%; | |||
height: 100%; | |||
cursor: pointer; | |||
} | |||
} | |||
} | |||
.detail-container { | |||
width: 1140px; | |||
margin: 0 auto; | |||
margin-top: 30px; | |||
.housing-advantage { | |||
height: 30px; | |||
margin-bottom: 20px; | |||
&.facilities { | |||
margin-bottom: 30px | |||
} | |||
.title { | |||
@include font(16px, #637485); | |||
margin-right: 23px; | |||
} | |||
.item-span { | |||
display: inline-block; | |||
height: 22px; | |||
line-height: 22px; | |||
@include font(14px, #fff); | |||
padding: 0 10px; | |||
margin-right: 15px; | |||
} | |||
.item-facilities { | |||
height: 30px; | |||
line-height: 30px; | |||
@include font(16px, #334a5f); | |||
display: inline-block; | |||
margin-right: 25px; | |||
img { | |||
// height: 100%; | |||
// display: none; | |||
position: relative; | |||
top: 6px; | |||
} | |||
} | |||
} | |||
.housing-detail { | |||
.dt { | |||
height: 300px; | |||
background: green; | |||
color: #fff; | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,343 @@ | |||
<template> | |||
<div class="property-detial" data-1664250138954> | |||
<div class="detial-header"> | |||
<Nav></Nav> | |||
<div class="header-box"> | |||
<div class="breadcrumb-nav"> | |||
<span class="current-position"> | |||
<i class="el-icon-location"></i> 当前位置: | |||
</span> | |||
<span class="current-position link" @click="toPath('/')">首页</span> | |||
<span class="current-position link"> | |||
<i class="el-icon-arrow-right"></i> | |||
</span> | |||
<span class="current-position link active">招商服务</span> | |||
</div> | |||
<div class="content"> | |||
<div class="title">招商服务</div> | |||
<div class="sub-title">Investment promotion service</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="detial-container"> | |||
<div class="ditial-banner"> | |||
<div class="main-img">123</div> | |||
<div class="main-item"> | |||
<div | |||
class="main-title" | |||
:title="'写字楼出租写字楼出租写字楼出租写字楼出租写字楼出租'" | |||
>写字楼出租写字楼出租写字楼出租写字楼出租写字楼出租</div> | |||
<div class="main-price"> | |||
<span class="price-label">价格:</span> | |||
<span class="price-value">¥80.00元</span> | |||
</div> | |||
<div class="mian-detail" :title="mainDetailText"> | |||
<span class="mian-detail-span">详情:</span> | |||
{{ mainDetailText }} | |||
</div> | |||
<div class="mian-detail listing-address" :title="listingAddress"> | |||
<span class="mian-detail-span">房源地址:</span> | |||
{{ listingAddress }} | |||
</div> | |||
<div class="main-btn"> | |||
<img | |||
src="~@assets/image/product/consult-icon.png" | |||
class="consult-icon" | |||
alt="icon" | |||
/> 立即咨询 | |||
</div> | |||
</div> | |||
</div> | |||
<div class="block-title">可选房源</div> | |||
<el-table class="block-table" :data="listingList"> | |||
<el-table-column | |||
:label="item.label" | |||
:align="'center'" | |||
v-for="(item,inx) of listingColum" | |||
:key="inx" | |||
> | |||
<template slot-scope="scope"> | |||
<div v-if="item.prop == 'img'"> | |||
<span class="img-icon"> | |||
<el-image | |||
v-if="checkFile(scope.row.img, 'image')" | |||
:src="scope.row.img" | |||
:preview-src-list="[scope.row.img]" | |||
></el-image> | |||
<video | |||
v-if="checkFile(scope.row.img, 'video')" | |||
:src="scope.row.img" | |||
@click="playVideo(scope.row.img)" | |||
></video> | |||
</span> | |||
</div> | |||
<div v-else>{{ scope.row[item.prop] }}</div> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<div class="block-title">服务详情</div> | |||
<el-table class="block-table serve" :data="serverDetailList"> | |||
<el-table-column | |||
:label="item.label" | |||
:align="'center'" | |||
v-for="(item,inx) of serverDetailColum" | |||
:key="inx" | |||
> | |||
<template slot-scope="scope"> | |||
<div v-if="item.prop == 'img'"> | |||
<span class="img-icon"></span> | |||
</div> | |||
<div v-else>{{ scope.row[item.prop] }}</div> | |||
</template> | |||
</el-table-column> | |||
</el-table> | |||
<div class="detail-container"> | |||
<div class="housing-advantage"> | |||
<span class="title">房源优势</span> | |||
<span | |||
class="item-span" | |||
v-for="(item,inx) of housingAdvantage" | |||
:key="inx" | |||
:style="item.style" | |||
>{{ item.label }}</span> | |||
</div> | |||
<div class="housing-advantage facilities"> | |||
<span class="title">房源设施</span> | |||
<span | |||
class="item-facilities" | |||
v-for="(item,inx) of listingFacilities" | |||
:key="inx" | |||
> | |||
<img | |||
:src="require('@assets/image/propety/icon' + item.type + '.png')" | |||
alt="icon" | |||
:class="['facilities-' + item.type]" | |||
/> | |||
{{ item.label }} | |||
</span> | |||
</div> | |||
<div class="housing-detail"> | |||
<div class="dt">大图</div> | |||
</div> | |||
</div> | |||
</div> | |||
<Footer></Footer> | |||
<!-- video预览 --> | |||
<el-dialog :visible.sync="videoPreview.isShow"> | |||
<video | |||
width="100%" | |||
:src="videoPreview.src" | |||
controls="controls" | |||
webkit-playsinline="true" | |||
playsinline="true" | |||
></video> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import Nav from "@components/Header.vue"; | |||
import Footer from "@components/Footer.vue"; | |||
import "./PropertyDetail.scss"; | |||
import ret from "bluebird/js/release/util"; | |||
export default { | |||
components: { Nav, Footer }, | |||
data() { | |||
return { | |||
// 主体详情 | |||
mainDetailText: `根据一个纳税年度内的所得、应纳税额、已缴(扣)税额、抵免(扣)税额、应补(退)税额等情况,如实填写并报送《个人所得税纳税申报表(适用于年所得12万元以上的纳税人申报)》、个人有效身份证件复印件,以及主管税务机关要求报送的其他有关资料。有效身份证件,包括纳税人的身份证、护照、回乡证、军人身份证件等。`, | |||
// 房源地址 | |||
listingAddress: "上海市徐汇区吴中路金辉大厦8楼", | |||
// 可选房源 | |||
listingColum: [ | |||
{ | |||
prop: "img", | |||
label: "照片", | |||
}, | |||
{ | |||
prop: "v1", | |||
label: "租售类型", | |||
}, | |||
{ | |||
prop: "v2", | |||
label: "房源面积", | |||
}, | |||
{ | |||
prop: "v3", | |||
label: "最大容纳人数", | |||
}, | |||
{ | |||
prop: "v4", | |||
label: "装修状况", | |||
}, | |||
{ | |||
prop: "v5", | |||
label: "可注册", | |||
}, | |||
{ | |||
prop: "v6", | |||
label: "单价", | |||
}, | |||
], | |||
listingList: [ | |||
{ | |||
img: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg", | |||
v1: "可租可售", | |||
v2: "5000m²", | |||
v3: "1000", | |||
v4: "毛坯", | |||
v5: "否", | |||
v6: "80.30", | |||
}, | |||
{ | |||
img: "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4", | |||
v1: "可租可售", | |||
v2: "5000m²", | |||
v3: "1000", | |||
v4: "毛坯", | |||
v5: "否", | |||
v6: "80.30", | |||
}, | |||
], | |||
// 服务详情 | |||
serverDetailColum: [ | |||
{ | |||
prop: "v1", | |||
label: "房源类型", | |||
}, | |||
{ | |||
prop: "v2", | |||
label: "最短起租", | |||
}, | |||
{ | |||
prop: "v3", | |||
label: "支付方式", | |||
}, | |||
{ | |||
prop: "v4", | |||
label: "停车费", | |||
}, | |||
{ | |||
prop: "v5", | |||
label: "物业费", | |||
}, | |||
{ | |||
prop: "v6", | |||
label: "可选房源", | |||
}, | |||
], | |||
serverDetailList: [ | |||
{ | |||
v1: "暂无数据", | |||
v2: "1年起租", | |||
v3: "暂无数据", | |||
v4: "--", | |||
v5: "20元/㎡/月", | |||
v6: "2", | |||
}, | |||
{ | |||
v1: "暂无数据", | |||
v2: "1年起租", | |||
v3: "暂无数据", | |||
v4: "--", | |||
v5: "20元/㎡/月", | |||
v6: "2", | |||
}, | |||
], | |||
// 房源优势 | |||
housingAdvantage: [ | |||
{ | |||
label: "精装修", | |||
style: { | |||
"background-image": | |||
"linear-gradient(135deg, #01d8ba 0%, #0086e7 100%)", | |||
}, | |||
}, | |||
{ | |||
label: "面积大", | |||
style: { | |||
"background-image": | |||
"linear-gradient(135deg, #afd801 0%, #00b4e7 100%)", | |||
}, | |||
}, | |||
{ | |||
label: "享受税收优惠", | |||
style: { | |||
"background-image": | |||
"linear-gradient(135deg, #8d6dff 0%, #5f24eb 100%)", | |||
}, | |||
}, | |||
], | |||
// 房源设施 | |||
listingFacilities: [ | |||
{ | |||
label: "精装修", | |||
type: 1, | |||
}, | |||
{ | |||
label: "有线网络", | |||
type: 2, | |||
}, | |||
{ | |||
label: "Wi-Fi网络", | |||
type: 3, | |||
}, | |||
{ | |||
label: "饮水", | |||
type: 4, | |||
}, | |||
{ | |||
label: "空调", | |||
type: 5, | |||
}, | |||
{ | |||
label: "24小时办公", | |||
type: 6, | |||
}, | |||
{ | |||
label: "打印/复印", | |||
type: 7, | |||
}, | |||
], | |||
// 视频预览 | |||
videoPreview: { | |||
isShow: false, | |||
src: "", | |||
}, | |||
}; | |||
}, | |||
methods: { | |||
toPath(path) { | |||
this.$router.push(path); | |||
}, | |||
// 播放video | |||
playVideo(src) { | |||
this.videoPreview.isShow = true; | |||
this.videoPreview.src = src; | |||
}, | |||
// 判断是图片还是视频 | |||
checkFile(fileValue, type) { | |||
let index = fileValue.indexOf("."); | |||
let fileValueSuffix = fileValue.substring(index); //截断"."之前的,得到后缀 | |||
if (type == "video") { | |||
if (!/(.*)\.(mp4|rmvb|avi|ts)$/.test(fileValueSuffix)) { | |||
//根据后缀,判断是否符合视频格式 | |||
return false; | |||
} | |||
} | |||
if (type == "image") { | |||
if ( | |||
!/(.*)\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test( | |||
fileValueSuffix | |||
) | |||
) { | |||
//根据后缀,判断是否符合图片格式 | |||
return false; | |||
} | |||
} | |||
return true; | |||
}, | |||
}, | |||
}; | |||
</script> | |||