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.

319 lines
9.7 KiB

<template>
<view class="page">
<view class="navBox" :style="'height:'+navHeight+'px;padding-top:'+topSafeHeight+'px'">
<text :style="'line-height:' + navLineHeight + 'px'"
class="text-44 text-fe text-bold margin-right-10">禾大师</text>
<text class="text-26 text-fe">你身边的总工</text>
</view>
<view class="pageMain" :style="'padding-top:' + navHeight + 'px'" v-if="showPage">
<view class="gzhBox flex align-center" v-if="!isSubscribeWeixin">
<view class="flex-one text-30 text-ff margin-right-10">关注公众号,接受消息提醒</view>
<view class="gzhBtn text-center text-208 text-30 text-bold text-center"
@click="go('/pages/home/webUrl')">去关注</view>
</view>
<view class="topBox">
<view class="searchBox flex align-center margin-bottom-20" @click="go('/pages/home/search')">
<view class="tyIcon-sousuo text-98 text-24"></view>
<view class="text-28 text-b3 margin-left-10">请输入您想咨询专家的专业方向、建筑类型</view>
</view>
<view class="swiperBox" v-if="swipers.length > 0">
<swiper :indicator-dots="swipers.length >1 ? true : false" :autoplay="true" :interval="3000"
indicator-active-color="#fff" indicator-color="rgba(255,255,255,.3)" circular
class="width-100p height-100p">
<swiper-item class="width-100p height-100p" v-for="(item,index) in swipers" :key="index">
<image :src="item.image" class="swiperImg" mode="aspectFill" @click="go(item.link_url)">
</image>
</swiper-item>
</swiper>
</view>
<view class="flex">
<view class="flex-one flex flex-direction align-center" @click="go('/pages/expert/index',3)">
<image src="/static/home/homeIcon1.png" class="iconImg"></image>
<view class="text-33 text-bold text-30">专家咨询</view>
<view class="text-24 text-aa text-cut-one">{{configData.one_category_subtitle}}</view>
</view>
<view class="flex-one flex flex-direction align-center" @click="go('/pages/material/index' , 3)">
<image src="/static/home/homeIcon2.png" class="iconImg"></image>
<view class="text-33 text-bold text-30">材料查询</view>
<view class="text-24 text-aa text-cut-one">{{configData.two_category_subtitle}}</view>
</view>
<view class="flex-one flex flex-direction align-center" @click="go('/pages/home/knowledgeList')">
<image src="/static/home/homeIcon3.png" class="iconImg"></image>
<view class="text-33 text-bold text-30">消防知识</view>
<view class="text-24 text-aa text-cut-one">{{configData.three_category_subtitle}}</view>
</view>
</view>
<view class="margin-top-35 zjBox">
<view class="flex align-center justify-between margin-bottom-25">
<view class="flex align-center">
<image src="/static/home/icon-zhuanjia.png" class="iconZjImg margin-right-5"></image>
<text class="text-32 text-33 text-bold line-40">在线</text>
<text class="text-ff85 text-32 text-bold line-40">总工</text>
</view>
<view class="flex align-center" @click="go('/pages/expert/index',3)">
<view class="text-26 text-77">更多</view>
<view class="tyIcon-fanhui text-aa text-24 margin-left-5"></view>
</view>
</view>
<view class="flex align-center align-center" v-for="(item,index) in experts"
:class="index == 0 ? '' : 'margin-top-30'" :key="index"
@click="go('/pages/expert/detail?id=' + item.id)">
<view class="zjHeader margin-right-15">
<image :src="item.head_img" mode="aspectFill" class="width-100p height-100p">
</image>
</view>
<view class="flex-one">
<view class="flex margin-bottom-5">
<view class="flex-one margin-right-30 text-30 text-33 text-bold">{{item.name}}</view>
<view class="text-ff85 text-price text-bold text-32">{{item.price}}</view>
</view>
<view class="text-909298 text-26 text-cut-one">{{item.brief}}</view>
</view>
</view>
</view>
<view class="margin-top-35">
<view class="text-32 text-33 text-bold line-40 padding-bottom-5">
消防计算器
</view>
<view class="flex flex-wrap ">
<view class="text-26 text-33 text-bold jsq1" style="background: #F5FAE6;"
@click="go('/pages/home/calculator?type=1')">疏散宽度计算</view>
<view class="text-26 text-33 text-bold jsq1" style="background: #E7F5FB;"
@click="go('/pages/home/calculator?type=2')">疏散距离查询</view>
<view class="text-26 text-33 text-bold jsq2" style="background: #FDF3FD;"
@click="go('/pages/home/calculator?type=3')">安全出口数量查询</view>
<view class="text-26 text-33 text-bold jsq1" style="background: #E7F5FB;"
@click="go('/pages/home/calculator?type=4')">楼梯类型查询</view>
<view class="text-26 text-33 text-bold jsq1" style="background: #F7F2E4;"
@click="go('/pages/home/calculator?type=5')">防火间距查询</view>
</view>
</view>
</view>
<view class="margin-top-25 quesBox">
<view class="flex align-center justify-between">
<view class="flex align-center">
<image src="/static/home/icon-wenti.png" class="wtImg"></image>
<view class="margin-left-5">
消防常见问题
</view>
</view>
<view class="flex align-center" @click="go('/pages/home/knowledgeList')">
<view class="text-26 text-77 margin-right-5">更多</view>
<view class="tyIcon-fanhui text-aa text-24"></view>
</view>
</view>
<view class="padding-top-30 padding-bottom-15" v-for="(item,index) in knowledges" :key="index"
:class="index == (knowledges.length - 1)? '' : 'border-bottom-ed'"
@click="go('/pages/home/knowledgeDetail?id='+item.id)">
<view class="text-33 line-40 text-30 margin-bottom-10 text-cut-two">
{{item.title}}
</view>
<view class="text-24 text-aa">
{{item.show_create_time}}
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
navHeight: 0, //顶部导航栏高度
topSafeHeight: 0, //顶部导航兰安全区域
navLineHeight: '', //顶部导航栏展示高度
isSubscribeWeixin:true,//是否关注公众号
swipers: [],
experts: [],
knowledges: [],
configData: {},
home_share: {},
showPage: false,
}
},
onLoad(options) {
//自定义顶部导航兰
const systemInfo = uni.getSystemInfoSync();
const menu = uni.getMenuButtonBoundingClientRect()
this.navHeight = systemInfo.statusBarHeight + menu.height + (menu.top - systemInfo.statusBarHeight) * 2;
this.topSafeHeight = systemInfo.statusBarHeight;
this.navLineHeight = menu.height + (menu.top - systemInfo.statusBarHeight) * 2;
// this.getPageData();
// this.getShareMsg()
},
onShow() {
if (this.cn.isLogin()) {
this.getBottomTabRed()
this.rq.getData('base/mpweixin/api/User/isSubscribeWeixin').then(res => {
if (res.code == 0) {
this.isSubscribeWeixin = res.data.is_subscribe_weixin
}
})
}
this.getPageData();
this.getShareMsg()
},
onShareAppMessage() {
return {
title: this.home_share.home_share_title,
imageUrl: this.home_share.home_share_img_url,
path: '/pages/home/index'
}
},
methods: {
getBottomTabRed() {
this.rq.getData('chat/api/FriendsChat/getNoReadNumber').then((res) => {
if (res.code == 0) {
if (res.data.number > 0) {
uni.showTabBarRedDot({
index: 1
})
} else {
uni.removeTabBarBadge({
index: 1
})
}
}
})
},
getShareMsg() {
this.rq.getData('project/api/Config/getMpweixinConfig').then(res => {
if (res.code == 0) {
this.home_share = res.data.mpweixin
}
})
},
getPageData() {
this.rq.getData('fire/api/Fire/getIndexData').then(res => {
if (res.code == 0) {
this.swipers = res.data.carousel;
this.experts = res.data.expert;
this.knowledges = res.data.knowledge;
this.configData = res.data.config;
this.showPage = true;
}
})
}
}
}
</script>
<style scoped>
.navBox {
position: fixed;
top: 0;
left: 0;
width: 100vw;
background: #2088FF;
padding-left: 40rpx;
box-sizing: border-box;
z-index: 999;
}
.topBox {
width: 100vw;
background: linear-gradient(180deg, #2088FF 0%, #FFFFFF 255rpx);
padding: 15rpx 30rpx 25rpx;
border-radius: 0rpx 0rpx 20rpx 20rpx;
box-sizing: border-box;
}
.searchBox {
width: calc(100vw - 60rpx);
height: 60rpx;
background: #F5F5F5;
border-radius: 33rpx;
padding: 0 20rpx;
box-sizing: border-box;
}
.swiperImg,
.swiperBox {
width: calc(100vw - 60rpx);
height: 290rpx;
border-radius: 20rpx;
}
.swiperBox {
overflow: hidden;
}
.iconImg {
width: 130rpx;
height: 130rpx;
}
.zjBox {
width: 100%;
padding: 25rpx 25rpx 30rpx;
box-sizing: border-box;
background: linear-gradient(170deg, #E5F1FF 0%, #F9F1FF 100%);
border-radius: 15rpx;
}
.iconZjImg {
width: 40rpx;
height: 40rpx;
}
.zjHeader {
width: 110rpx;
height: 110rpx;
border-radius: 10rpx;
overflow: hidden;
}
.jsq1 {
width: 200rpx;
height: 88rpx;
border-radius: 10rpx;
text-align: center;
line-height: 88rpx;
margin-right: 14rpx;
margin-top: 15rpx;
}
.jsq2 {
width: 262rpx;
height: 88rpx;
background: #FDF3FD;
text-align: center;
line-height: 88rpx;
margin-top: 15rpx;
border-radius: 10rpx;
}
.quesBox {
width: 100vw;
border-top-left-radius: 20rpx;
border-top-right-radius: 20rpx;
background: #fff;
padding: 25rpx 30rpx 30rpx;
box-sizing: border-box;
}
.wtImg {
width: 40rpx;
height: 40rpx;
}
/* 3qi */
.gzhBox {
width: 100vw;
height: 100rpx;
background: #2088FF;
padding: 0 30rpx;
box-sizing: border-box;
}
.gzhBtn {
width: 150rpx;
height: 60rpx;
background: #FFFFFF;
border-radius: 40rpx;
line-height: 60rpx;
}
</style>