新首页,新护理站列表页,新护理站详情页和新护理项目详情页

This commit is contained in:
曹辉 2023-02-16 10:44:21 +08:00
parent 0b635ddcb1
commit 349e0d1698
17 changed files with 560 additions and 363 deletions

View File

@ -2,7 +2,7 @@ import request from "../request.js"
export function getAppStationItemInfo(stationId, stationItemId, stationItemPriceId) { export function getAppStationItemInfo(stationId, stationItemId, stationItemPriceId) {
return request({ return request({
url: `/nurseApp/login/getAppStationItemInfo?stationId=${stationId}&stationItemId=${stationItemId}&stationItemPriceId=${stationItemPriceId}`, url: `/nurseApplet/login/getStationItemInfo?stationId=${stationId}&stationItemId=${stationItemId}&stationItemPriceId=${stationItemPriceId}`,
method: 'GET' method: 'GET'
}) })
} }

9
api/homepage/index.js Normal file
View File

@ -0,0 +1,9 @@
import request from "../request.js"
export function informationCategoryList() {
return request({
url: `/nurseApplet/nearbyNursingStation/informationCategoryList?moduleType=HOME_PAGE_MODULE&&jumpType=HOME_PAGE&&informationCategoryType=HEALTH_NOUS`,
method: 'GET'
})
}

View File

@ -9,9 +9,9 @@ export function introductionList(id) {
} }
export function itemList(id,pageSize,pageNum) { export function itemList(id,pageSize,pageNum,nurseClassifyInfoId) {
return request({ return request({
url: `/nurseApplet/nearbyNursingStation/itemList?pageSize=${pageSize}&pageNum=${pageNum}&nurseStationId=${id}`, url: `/nurseApplet/nearbyNursingStation/itemList?pageSize=${pageSize}&pageNum=${pageNum}&nurseStationId=${id}&nurseClassifyInfoId=${nurseClassifyInfoId}`,
method: 'GET' method: 'GET'
}) })
} }

View File

@ -1,11 +1,8 @@
import request from "../request.js" import request from "../request.js"
export function nearbyList(pageSize, pageNum, longitude, latitude,nurseClassId,itemClassId) {
export function nearbyList(pageSize,pageNum,longitude, latitude) {
return request({ return request({
url: `/nurseApplet/nearbyNursingStation/nearbyList?pageSize=${pageSize}&pageNum=${pageNum}&homeLongitude=${longitude}&homeLatitude=${latitude}`, url: `/nurseApplet/nearbyNursingStation/getNearbyNursingStationInfoList?pageSize=${pageSize}&pageNum=${pageNum}&homeLongitude=${longitude}&homeLatitude=${latitude}&nurseClassId=${nurseClassId}&itemClassId=${itemClassId}`,
method: 'GET' method: 'GET'
}) })
} }
@ -16,4 +13,12 @@ export function getPatientInfo(id) {
url: `/nurseApplet/login/getPatientInfo?patientId=${id}`, url: `/nurseApplet/login/getPatientInfo?patientId=${id}`,
method: 'GET' method: 'GET'
}) })
} }
//护理站和护理项目分类
export function getNurseClassifyList() {
return request({
url: `/nurseApplet/nearbyNursingStation/getNurseClassifyList?moduleType=NURSE_AGENCY_MODULE`,
method: 'GET'
})
}

View File

@ -9,6 +9,13 @@
"navigationBarTitleText": "", "navigationBarTitleText": "",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, {
"path": "pages/ProjectDetails/ProjectDetails",
"style": {
"navigationBarTitleText": "护理项目详情",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff" //
}
}, { }, {
"path": "pages/modifyAddress/modifyAddress", "path": "pages/modifyAddress/modifyAddress",
"style": { "style": {
@ -38,13 +45,6 @@
"enablePullDownRefresh": false, "enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff" // "navigationBarBackgroundColor": "#ffffff" //
} }
}, {
"path": "pages/ProjectDetails/ProjectDetails",
"style": {
"navigationBarTitleText": "护理项目详情",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff" //
}
}, { }, {
"path": "pages/goodsorderRate/goodsorderRate", "path": "pages/goodsorderRate/goodsorderRate",
"style": { "style": {
@ -276,7 +276,7 @@
{ {
"path": "pages/site/site", "path": "pages/site/site",
"style": { "style": {
"navigationBarTitleText": "附近护理站", "navigationBarTitleText": "护理站",
"enablePullDownRefresh": false, "enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff", // "navigationBarBackgroundColor": "#ffffff", //
"onReachBottomDistance": 40, // px "onReachBottomDistance": 40, // px

View File

@ -1,6 +1,6 @@
.app { .app {
height: 100%; height: 100%;
padding: 2% 2% 150rpx 2%; padding: 0 0 0 0;
padding-top: 10rpx; padding-top: 10rpx;
font-size: 34rpx; font-size: 34rpx;
position: relative; position: relative;
@ -49,101 +49,69 @@
} }
} }
} }
.appointment { .bottomcontent{
width: 120rpx; position: fixed;
height: 70rpx; width: 100%;
background: #4C7BC9; height: 100rpx;
border-radius: 26rpx; bottom: 0;
color: #ffffff; background-color: #FFFFFF;
text-align: center; .appoinprice{
line-height: 70rpx; padding-left: 20rpx;
position: absolute; font-size: 48rpx;
bottom:20rpx; color: #F44B2F;
right:5%; line-height: 70rpx;
}
.appointment {
width: 200rpx;
height: 70rpx;
background: #F44B2F;
border-radius: 30rpx;
color: #ffffff;
text-align: center;
line-height: 70rpx;
position: absolute;
bottom:20rpx;
right:5%;
}
} }
.detailtitle { .detailtitle {
position: relative; position: relative;
width: 94%; width: 100%;
height: 100%; height: 100%;
margin: 0 auto; margin: 0 auto;
background: #FFFFFF; background: #FFFFFF;
border-radius: 20rpx;
margin-top: 3%; margin-top: 3%;
font-size: 31rpx; font-size: 31rpx;
padding: 3%; padding: 3%;
padding-bottom: 50rpx; padding-bottom: 150rpx;
.textInfo { .textInfo {
word-break:break-all; word-break:break-all;
font-size: 29rpx; font-size: 29rpx;
text-indent: 2rem; text-indent: 2rem;
line-height: 42rpx; line-height: 42rpx;
color: #666666; color: #666666;
padding-top: 30rpx;
/deep/ .richPic { /deep/ .richPic {
width: 100% !important; width: 100% !important;
height: 100% !important; height: 100% !important;
} }
} }
.Introduction { .Introduction {
font-size: 31rpx; padding: 3% 3% 3% 0;
color: #333333; font-size: 32rpx;
line-height: 12rpx;
margin-left: -3%;
padding: 3%;
} }
} }
.item { .item {
width: 95%; margin: 0 auto;
height: 100%; width: 100%;
height: 200rpx;
background: #FFFFFF; background: #FFFFFF;
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03); .text{
border-radius: 20rpx; padding: 40rpx 20% 0 40rpx;
margin: 20rpx auto 0; width: 100%;
padding: 3% 3% 40rpx 3%; height: 81rpx;
line-height: 60rpx; font-size: 38rpx;
position: relative; font-weight: 500;
image {
width: 170rpx;
height: 170rpx;
margin-left: 3%;
}
.servicetime {
color: #999999;
line-height: 37rpx;
font-size: 30rpx;
position: absolute;
top: 35%;
left: 35%;
}
.price {
color: red;
font-size: 32rpx;
position: absolute;
top: 65%;
left: 35%;
}
.product {
color: #000000;
width: 60%;
position: absolute;
top: 14%;
left: 32%;
font-size: 28rpx;
}
.huanyao {
color: #000000;
position: absolute;
top: 10%;
left: 35%;
width: 60%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
} }
} }

View File

@ -1,30 +1,36 @@
<template> <template>
<view class="app"> <view class="app">
<u-swiper v-if="lbinfo" :list="lbinfo" height="350" style='background-size: 100%;' mode='none'></u-swiper>
<view class="item"> <view class="item">
<image :src="list.itemPictureUrl"></image> <view class="text" v-if='list.nurseItemName'>{{list.nurseItemName}}
<view class="huanyao" v-if='list.nurseItemName'>{{list.nurseItemName}}
</view> </view>
<view class="huanyao" v-else>暂无 <view class="text" v-else>暂无
</view>
<view class="classtype">
</view> </view>
<!-- <view class="pingfen"> <!-- <view class="pingfen">
<u-rate :count="5" value="2"></u-rate> <u-rate :count="5" value="2"></u-rate>
</view> --> </view> -->
<view class="servicetime">服务时长:{{list.serveDurationUnit?list.serveDurationUnit:'0'}}</view>
<view class="price">{{list.nurseItemPrice==null?'0':list.nurseItemPrice}}</view>
</view> </view>
<view class="Consumablespackage" v-if='list.itemConsumableList'>耗材包详情: <!-- <view class="Consumablespackage" v-if='list.itemConsumableList'>耗材包详情:
<span>{{list.consumableTotalPrice==null?'0':list.consumableTotalPrice}}</span> <span>{{list.consumableTotalPrice==null?'0':list.consumableTotalPrice}}</span>
<view class="detail" v-for='(item,index) in list.itemConsumableList' :key="index"> <view class="detail" v-for='(item,index) in list.itemConsumableList' :key="index">
·{{item.consumableDetail}} ·{{item.consumableDetail}}
<span>{{item.consumableCount}}{{item.consumableUnit}}/{{item.consumablePrice}}</span> <span>{{item.consumableCount}}{{item.consumableUnit}}/{{item.consumablePrice}}</span>
</view> </view>
</view> </view> -->
<view class="detailtitle"> <view class="detailtitle">
<view class="Introduction">服务详情:</view> <view class="Introduction">服务详情:</view>
<view class="textInfo" v-html="list.nurseItemContent"> <view class="textInfo" v-if="list.nurseItemContent" v-html="list.nurseItemContent">
</view> </view>
</view> </view>
<view class="appointment" @tap.stop='goappointments(item)'>预约</view> <view class="bottomcontent">
<view class="appoinprice" v-if="list.totalPrice">
{{list.totalPrice}}
</view>
<view class="appointment" @tap.stop='goappointments(item)'>立即预约</view>
</view>
<u-toast ref="uToast" /> <u-toast ref="uToast" />
<u-mask :show="usershow" class='mask'> <u-mask :show="usershow" class='mask'>
<view class="information"> <view class="information">
@ -53,11 +59,11 @@
export default { export default {
data() { data() {
return { return {
lbinfo: [], //
baseurl: '', baseurl: '',
list: {},
orderNo: '', orderNo: '',
usershow: false, // usershow: false, //
list: [], //list list: {}, //list
timer: null, timer: null,
stationId: null, stationId: null,
stationItemId: null, stationItemId: null,
@ -87,7 +93,7 @@
if (res.data.loginFlag) { if (res.data.loginFlag) {
that.usershow = false that.usershow = false
uni.navigateTo({ uni.navigateTo({
url: `/pages/appointmenttime/appointmenttime?stationId=${this.list.stationId}&stationItemId=${this.list.stationItemId}&stationItemPriceId=${this.list.stationItemPriceId}`, url: `/pages/appointmenttime/appointmenttime?stationId=${this.stationId}&stationItemId=${this.stationItemId}&stationItemPriceId=${this.stationItemPriceId}`,
}) })
} else { } else {
that.usershow = true that.usershow = true
@ -143,6 +149,15 @@
res.data.nurseItemContent = res.data.nurseItemContent.replace(/\<img/gi, res.data.nurseItemContent = res.data.nurseItemContent.replace(/\<img/gi,
"<br/> <img class='richPic'") "<br/> <img class='richPic'")
} }
if (res.data.poserInfoList) {
res.data.poserInfoList.forEach(e => {
e.posterPictureUrl = baseurl + e.posterPictureUrl
var obj = {
image: e.posterPictureUrl
}
this.lbinfo.push(obj)
})
}
res.data.itemPictureUrl = baseurl + res.data.itemPictureUrl res.data.itemPictureUrl = baseurl + res.data.itemPictureUrl
this.list = res.data this.list = res.data
}) })

View File

@ -49,7 +49,7 @@
.concent { .concent {
width: 701rpx; width: 701rpx;
height: 850rpx; height: 900rpx;
background: #4C7BC9; background: #4C7BC9;
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03); box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 20rpx; border-radius: 20rpx;
@ -80,7 +80,7 @@
.detailed { .detailed {
width: 657rpx; width: 657rpx;
padding: 0 42rpx; padding: 0 20rpx;
line-height: 56rpx; line-height: 56rpx;
} }

View File

@ -42,32 +42,12 @@
<image src="../../static/huijiantou.png" mode=""></image> <image src="../../static/huijiantou.png" mode=""></image>
</view> </view>
<view class="list"> <view class="list">
<view class="item"> <view class="item" v-for="(item,index) in informationCategoryVOList" :key="index">
<view class="text"> <view class="text">
医疗资讯医疗资讯医疗 资讯医疗资讯 {{item.informationTitle}}
</view> </view>
<view class="author"> <view class="author"></view>
信赖保障 <image :src="item.leadThumbnailUrl" mode=""></image>
</view>
<image src="../../static/kefu.png" mode=""></image>
</view>
<view class="item">
<view class="text">
医疗资讯医疗资讯医疗 资讯医疗资讯
</view>
<view class="author">
信赖保障
</view>
<image src="../../static/kefu.png" mode=""></image>
</view>
<view class="item">
<view class="text">
医疗资讯医疗资讯医疗资讯医疗资讯
</view>
<view class="author">
信赖保障
</view>
<image src="../../static/kefu.png" mode=""></image>
</view> </view>
</view> </view>
</view> </view>
@ -76,18 +56,34 @@
</template> </template>
<script> <script>
import {
informationCategoryList
} from '@/api/homepage/index.js'
import baseurl from '../../api/baseurl';
export default { export default {
data() { data() {
return { return {
swiperImgUrls: [ swiperImgUrls: [],
'../../static/zixun.png',
'../../static/zixun.png',
'../../static/zixun.png',
],
currentIndex: 0, currentIndex: 0,
informationCategoryVOList: [], //
}; };
}, },
onLoad() {
this.informationCategoryinfo()
},
methods: { methods: {
informationCategoryinfo() {
informationCategoryList().then(res => {
res.data.informationCategoryVOList.forEach(e => {
e.leadThumbnailUrl = baseurl + e.leadThumbnailUrl
})
this.informationCategoryVOList = res.data.informationCategoryVOList
res.data.poserInfoList.forEach(e => {
e.posterPictureUrl = baseurl + e.posterPictureUrl
this.swiperImgUrls.push(e.posterPictureUrl)
})
})
},
swiperChange(event) { swiperChange(event) {
this.currentIndex = event.detail.current this.currentIndex = event.detail.current
}, },
@ -142,6 +138,7 @@
top: 40rpx; top: 40rpx;
height: 46rpx; height: 46rpx;
width: 30%; width: 30%;
.title { .title {
position: absolute; position: absolute;
right: 30rpx; right: 30rpx;

View File

@ -50,9 +50,14 @@
.content { .content {
font-size: 36rpx; font-size: 36rpx;
padding-bottom: 10rpx; padding-bottom: 10rpx;
margin-top: -80rpx;
z-index: 999;
::v-deep .u-tabs{
background-color: #F4F5F7 !important;
padding-bottom: 10rpx;
}
.tive { .tive {
width: 94%; width: 94%;
background-color: #ffffff;
margin: 20rpx auto; margin: 20rpx auto;
border-radius: 11rpx; border-radius: 11rpx;
padding-bottom: 60rpx; padding-bottom: 60rpx;
@ -74,30 +79,35 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
position: relative; position: relative;
padding: 30rpx 30rpx; background-color: #fff;
padding: 30rpx 0;
margin: 10rpx auto;
border-radius: 20rpx;
color: #000000;
image { image {
width: 170rpx; width: 170rpx;
height: 170rpx; height: 170rpx;
margin-left: 3%; margin-left: 3%;
} }
.servicetime { // .servicetime {
color: #999999; // color: #999999;
line-height: 37rpx; // line-height: 37rpx;
font-size: 30rpx; // font-size: 30rpx;
position: absolute; // position: absolute;
top:35%; // top:35%;
left:35%; // left:35%;
} // }
.appointment { .appointment {
font-size: 30rpx;
width: 120rpx; width: 120rpx;
height: 70rpx; height: 52rpx;
background: #4C7BC9;
border-radius: 26rpx; border-radius: 26rpx;
color: #ffffff; color: #ffffff;
background: #F44B2F;
text-align: center; text-align: center;
line-height: 70rpx; line-height: 52rpx;
position: absolute; position: absolute;
top:40%; top:55%;
right:5%; right:5%;
} }
.buy{ .buy{
@ -105,25 +115,26 @@
top: 55%; top: 55%;
} }
.price { .price {
color: red; height: 52rpx;
font-size: 32rpx; color: #F44B2F;
line-height: 52rpx;
font-size: 36rpx;
position: absolute; position: absolute;
top:65%; top:55%;
left:35%; left:35%;
} }
.product { .product {
color: #000000;
width: 60%;
position: absolute; position: absolute;
top:14%; top:15%;
left:32%; left:35%;
font-size: 28rpx; width: 60%;
overflow: hidden;white-space: nowrap;text-overflow: ellipsis; overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
} }
.huanyao { .huanyao {
color: #000000;
position: absolute; position: absolute;
top:10%; top:15%;
left:35%; left:35%;
width: 60%; width: 60%;
overflow: hidden; overflow: hidden;
@ -167,30 +178,20 @@
} }
} }
} }
.Nursestationconfiguration {
width: 94%;
height: 100%;
background: #FFFFFF;
border-radius: 20rpx;
padding-bottom: 30rpx;
margin: 20rpx auto;
.configuration { .configuration {
font-size: 31rpx; margin:0 30rpx;
color: #333333; padding-bottom: 30rpx;
padding: 3%; border-bottom: 1rpx solid #CDC9C9;
.text { .text {
margin-top: 10rpx; background: #F8D7D1;
border-radius: 15rpx;
display: inline-block; display: inline-block;
padding: 10rpx 20rpx; padding: 10rpx 20rpx;
margin-right: 18rpx; margin-right: 10rpx;
line-height: 40rpx; font-size: 18rpx;
background-color: #f6f6f6; color: #F44B2F;
border-radius: 34rpx;
font-size: 24rpx;
color: #666666;
} }
} }
}
.detail { .detail {
position: relative; position: relative;
width: 94%; width: 94%;
@ -229,17 +230,29 @@
border-radius: 20rpx; border-radius: 20rpx;
margin: 10px auto; margin: 10px auto;
padding-bottom: 20rpx; padding-bottom: 20rpx;
.picture { .time{
position: absolute; font-size: 27rpx;
width: 170rpx; margin: 10rpx 0;
height: 170rpx; color: #666666;
margin-left: 5%; .timeday{
margin-top: 5%; display: inline-block;
}
.text{
margin:0 10rpx 0 30rpx;
display: inline-block;
}
.texttime{
margin:0 20rpx 0 30rpx;
view{
display: inline-block;
margin-right: 20rpx;
}
}
} }
.title { .title {
margin-left: 35%; padding-top: 40rpx;
line-height: 49px; margin:0 0 0 30rpx;
font-size: 33rpx; line-height: 59rpx;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
@ -290,14 +303,31 @@
} }
} }
.address { .address {
font-size: 25rpx; font-size: 27rpx;
margin-left: 35%; color: #666666;
color: #999999; margin:40rpx 0 10rpx 30rpx;
line-height: 37rpx;
word-break:break-all; word-break:break-all;
line-height: 40rpx;
// overflow: hidden; // overflow: hidden;
// text-overflow: ellipsis; // text-overflow: ellipsis;
// white-space: nowrap; // white-space: nowrap;
position: relative;
.distance{
position: absolute;
right:30rpx;
top:50%;
transform: translateY(-50%);
}
.text{
padding-left: 40rpx;
}
image{
position: absolute;
top:50%;
transform: translateY(-50%);
width: 28rpx;
height: 35rpx;
}
} }
} }
} }

View File

@ -1,50 +1,65 @@
<template> <template>
<view class="app"> <view class="app">
<u-swiper v-if="lbinfo" :list="lbinfo" height="400" style='background-size: 100%;' mode='none'></u-swiper>
<view class="content"> <view class="content">
<view class="righttext"> <view class="righttext">
<image class="picture" :src="list.stationIntroducePcitureUrl"></image>
<view class="title" v-if="list.nurseStationName"> <view class="title" v-if="list.nurseStationName">
{{list.nurseStationName}} {{list.nurseStationName}}
</view> </view>
<view class="title" v-else> <view class="title" v-else>
暂无 暂无
</view> </view>
<view class="address" v-if="list.address">{{list.address}} </view> <view class="time">
<view class="address" v-else> <view class="text">
暂无 {{list.businessStatus}}
</view>
<view class="call">
<view class="callme" @tap="gophone()">
<u-icon class='icon' name="phone-fill" color="#ffffff" size="30"></u-icon>
<view class="text">联系我们</view>
</view> </view>
<!-- <view class="Navigation"> <view class="timeday">
<image src="/static/daohang.png" mode="">导航</image> {{list.openingHoursDescribe}}
</view> --> </view>
</view> <view class="texttime">
</view> <view class="">
<view class="detail"> 上午{{list.morningOpenStartTime}}-{{list.morningOpenEndTime}}
<view class="Introduction">机构简介</view> </view>
<view class="textInfo" v-html="list.agencyIntroduce"> <view class="">
</view> 下午{{list.afternoonOpenStartTime}}-{{list.afternoonOpenEndTime}}
</view>
<view class="Nursestationconfiguration">
<view class="configuration">
护理站配置
<view class="" style="margin-top: 30rpx;">
<view class="text" v-for="(item,index) in nurseStationLabelList" :key="index">
{{item.labelDescription}}
</view> </view>
</view> </view>
</view> </view>
</view> <view class="configuration">
<view class="tive"> <view class="text" v-for="(item,index) in nurseStationLabelList" :key="index">
<view class="tab-box"> {{item.labelDescription}}
<view class="tab-item" @tap="testTabClick(index)" v-for="(item,index) in tabList" :key="index"
:class="tabIndex == index?'active':''">
{{item.name}}
</view> </view>
</view> </view>
<view class="address" v-if="list.address">
<image src="../../static/locatinsmall.png" mode=""></image>
<view class="text">
{{list.address}}
</view>
<view class="distance">
{{distance}}KM
</view>
</view>
<view class="address" v-else>
暂无
</view>
<view class="address" v-if="list.dutyPhone" style="margin: 20rpx 0 0 33rpx;" @tap='gophone'>
<image src="../../static/phone.png" mode=""></image>
<view class="text">
{{list.dutyPhone}}
</view>
</view>
<view class="address" v-else style="margin: 0 0 0 30rpx;">
暂无
</view>
</view>
<view class="tive">
<!-- <view class="tab-box">
<view class="tab-item" @tap="testTabClick(index)" v-for="(item,index) in tabList" :key="index"
:class="tabIndex == index?'active':''">
{{item.classifyName}}
</view>
</view> -->
<u-tabs :list="tabList" :current="classifycurrent" @change="change"></u-tabs>
<view class="" v-if="servelist.length>0&&choicetab==false"> <view class="" v-if="servelist.length>0&&choicetab==false">
<view class="item" v-for="item in servelist" :key="" v-show='choicetab==false' <view class="item" v-for="item in servelist" :key="" v-show='choicetab==false'
@click.stop='goProjectDetails(item)'> @click.stop='goProjectDetails(item)'>
@ -54,7 +69,7 @@
<!-- <view class="pingfen"> <!-- <view class="pingfen">
<u-rate :count="5" value="2"></u-rate> <u-rate :count="5" value="2"></u-rate>
</view> --> </view> -->
<view class="servicetime">服务时长:{{item.serveDurationUnit?item.serveDurationUnit:'0'}}</view> <!-- <view class="servicetime">服务时长:{{item.serveDurationUnit?item.serveDurationUnit:'0'}}</view> -->
<view class="appointment" @tap.stop='goappointments(item)'>预约</view> <view class="appointment" @tap.stop='goappointments(item)'>预约</view>
<view class="price">{{item.nurseItemPrice==null?'0':item.nurseItemPrice}}</view> <view class="price">{{item.nurseItemPrice==null?'0':item.nurseItemPrice}}</view>
</view> </view>
@ -69,9 +84,11 @@
<view class="item" v-show='choicetab' v-for="(item,index) in productlist" :key="index"> <view class="item" v-show='choicetab' v-for="(item,index) in productlist" :key="index">
<image :src="item.goodsPictureUrl"></image> <image :src="item.goodsPictureUrl"></image>
<view class="product">{{item.goodsName}}</view> <view class="product">{{item.goodsName}}</view>
<view class="product" style="top:38%;font-size: 24rpx;color: #999999;">{{item.attributeDetailsName}}</view> <!-- <view class="product" style="top:38%;font-size: 24rpx;color: #999999;">
{{item.attributeDetailsName}}
</view> -->
<view class="buy appointment" @tap="goCommodityDetails(item)">购买</view> <view class="buy appointment" @tap="goCommodityDetails(item)">购买</view>
<view class="price" style="left:32%">{{item.goodsPrice==null?'0':item.goodsPrice}}</view> <view class="price">{{item.goodsPrice==null?'0':item.goodsPrice}}</view>
</view> </view>
</view> </view>
<view class="noorder" v-if="productlist.length==0&&choicetab"> <view class="noorder" v-if="productlist.length==0&&choicetab">
@ -113,6 +130,7 @@
export default { export default {
data() { data() {
return { return {
lbinfo: [], //list
usershow: false, // usershow: false, //
choicetab: false, // choicetab: false, //
list: [], //list list: [], //list
@ -126,13 +144,14 @@
nurseStationId: '', nurseStationId: '',
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
tabIndex: 0,
timer: null, timer: null,
tabList: [{ tabList: [{
name: "服务项目" name: '全部',
}, { id: ''
name: "产品" }], //
}, ] classifycurrent: 0, //
distance: null, //
nurseClassifyInfoId: '', //id
} }
}, },
onShow() { onShow() {
@ -141,8 +160,20 @@
}, },
onLoad(options) { onLoad(options) {
this.nurseStationId = options.nurseStationId this.nurseStationId = options.nurseStationId
this.distance = options.distance
}, },
methods: { methods: {
//
change(index) {
this.classifycurrent = index;
this.nurseClassifyInfoId = this.tabList[index].id
this.serveinfo()
if (this.tabList[index].name == '产品') {
this.choicetab = true
} else {
this.choicetab = false
}
},
goappointments(item) { goappointments(item) {
let that = this let that = this
try { try {
@ -199,12 +230,31 @@
if (res.code == 200) { if (res.code == 200) {
this.serveinfo() this.serveinfo()
this.productinfo() this.productinfo()
res.data.morningOpenStartTime = res.data.morningOpenStartTime.slice(0, 5)
res.data.morningOpenEndTime = res.data.morningOpenEndTime.slice(0, 5)
res.data.afternoonOpenStartTime = res.data.afternoonOpenStartTime.slice(0, 5)
res.data.afternoonOpenEndTime = res.data.afternoonOpenEndTime.slice(0, 5)
res.data.stationIntroducePcitureUrl = baseurl + res.data.stationIntroducePcitureUrl res.data.stationIntroducePcitureUrl = baseurl + res.data.stationIntroducePcitureUrl
if (res.data.agencyIntroduce) { if (res.data.agencyIntroduce) {
res.data.agencyIntroduce = res.data.agencyIntroduce.replace(/\<img/gi, res.data.agencyIntroduce = res.data.agencyIntroduce.replace(/\<img/gi,
"<br/><img class='richPic'") "<br/><img class='richPic'")
} }
res.data.nurseClassifyInfoList.forEach(e => {
e.name = e.classifyName
this.tabList.push(e)
})
var obj = {
name: '产品'
}
this.tabList.push(obj)
this.list = res.data this.list = res.data
res.data.poserInfoList.forEach(e => {
e.posterPictureUrl = baseurl + e.posterPictureUrl
var obj = {
image: e.posterPictureUrl
}
this.lbinfo.push(obj)
})
if (res.data.nurseStationLabelList) { if (res.data.nurseStationLabelList) {
this.nurseStationLabelList = res.data.nurseStationLabelList this.nurseStationLabelList = res.data.nurseStationLabelList
} }
@ -213,7 +263,7 @@
}, },
serveinfo() { serveinfo() {
this.pageNum = 1 this.pageNum = 1
itemList(this.nurseStationId, this.pageSize, this.pageNum).then(res => { itemList(this.nurseStationId, this.pageSize, this.pageNum, this.nurseClassifyInfoId).then(res => {
uni.removeStorageSync('Refresh'); uni.removeStorageSync('Refresh');
res.rows.forEach(e => { res.rows.forEach(e => {
e.itemPictureUrl = baseurl + e.itemPictureUrl e.itemPictureUrl = baseurl + e.itemPictureUrl
@ -233,10 +283,6 @@
this.producttotal = res.total this.producttotal = res.total
}) })
}, },
testTabClick(index) {
this.tabIndex = index
this.choicetab = this.tabIndex
},
// //
goCommodityDetails(item) { goCommodityDetails(item) {
uni.navigateTo({ uni.navigateTo({
@ -280,8 +326,8 @@
}); });
} }
}, },
onReachBottom() { // onReachBottom() { //
if (this.choicetab == 0) { if (!this.choicetab) {
if (this.servelist.length >= this.servetotal) {} else { if (this.servelist.length >= this.servetotal) {} else {
this.pageNum++ this.pageNum++
itemList(this.nurseStationId, this.pageSize, this.pageNum).then(res => { itemList(this.nurseStationId, this.pageSize, this.pageNum).then(res => {
@ -305,7 +351,7 @@
}, },
onPullDownRefresh() { // onPullDownRefresh() { //
this.pageNum = 1; this.pageNum = 1;
if (this.choicetab == 0) { if (!this.choicetab) {
itemList(this.nurseStationId, this.pageSize, this.pageNum).then(res => { itemList(this.nurseStationId, this.pageSize, this.pageNum).then(res => {
res.rows.forEach(e => { res.rows.forEach(e => {
e.itemPictureUrl = baseurl + e.itemPictureUrl e.itemPictureUrl = baseurl + e.itemPictureUrl

View File

@ -1,46 +1,174 @@
//护理站列表 //护理站列表
.app{ .app{
padding: 0 0 5rpx 0; padding: 0;
background-color: #fff;
}
::v-deep .u-tabs{
background-color: #F4F5F7 !important;
padding-bottom: 20rpx;
}
.swiper-block {
height: 200rpx;
width: 94%;
padding: 30rpx 3% 10rpx;
background-color: #F4F5F7;
}
.swiper-item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
}
.slide-image {
height: 200rpx;
width: 100%;
margin: 0 auto;
border-radius: 20rpx;
}
.Classificationlist{
margin: 30rpx 0 0;
width: 100%;
height: 380rpx;
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
text-align: center;
.itemclass{
color: #4C7BC9;
width: 25%;
height: 190rpx;
image{
display: block;
margin: 0 auto;
width: 100rpx;
height: 100rpx;
}
.title{
padding: 0 10rpx;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 30rpx;
font-weight: 600;
line-height: 70rpx;
}
}
.item{
width: 25%;
height: 190rpx;
image{
display: block;
margin: 0 auto;
width: 100rpx;
height: 100rpx;
}
.title{
padding: 0 10rpx;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 30rpx;
font-weight: 500;
line-height: 70rpx;
}
}
}
.inputs {
border: 1px solid #f0f0f0;
width: 90%;
height: 65rpx;
margin: 0 0 10rpx 50%;
transform: translateX(-50%);
border-radius: 20rpx;
background-color: #F4F5F7;
z-index: 999;
.input {
margin: 0 auto;
position: absolute;
height: 65rpx;
// top: 8%;
left: 10%;
width: 90%;
font-size: 26rpx;
color: #000000;
}
.icon {
background: url(@/static/sousuo.png) no-repeat;
width: 30rpx;
height: 28rpx;
background-size: cover;
position: absolute;
top: 30%;
left: 3%;
}
} }
.conNew { .conNew {
width: 96%; background-color: #F4F5F7;
// z-index: 999; width: 100%;
// position: fixed; padding: 30rpx 0 50rpx;
// top: 450rpx;
margin: 0 auto; margin: 0 auto;
// left: 2%;
height: 100%; height: 100%;
.title{
font-size: 32rpx;
font-weight: bold;
padding-left: 2%;
}
.addressContent { .addressContent {
width: 100%; width: 96%;
background-color: #ffffff;
margin: 0 auto;
} }
.lists { .lists {
background-color: #ffffff;
width: 100%; width: 100%;
height: 240rpx; height: 300rpx;
margin-bottom: 14rpx; margin-bottom: 14rpx;
border-radius: 20rpx; border-radius: 20rpx;
position: relative; position: relative;
background-color: #ffffff;
.nurse { .tags{
font-size: 28rpx; display: flex;
position: absolute; position: absolute;
top: 15%; top: 55%;
left: 35%; left: 35%;
text-overflow: -o-ellipsis-lastline; width: 65%;
overflow: hidden; flex-wrap: wrap;
text-overflow: ellipsis; .tag{
display: -webkit-box; background: #F8D7D1;
-webkit-line-clamp: 2; opacity: 0.8;
line-clamp: 2; margin: 0 10rpx 10rpx 0;
-webkit-box-orient: vertical; overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
padding: 0 10rpx;
height: 50rpx;
line-height: 50rpx;
text-align: center;
border-radius: 10rpx;
font-size: 22rpx;
color: #F44B2F;
}
}
.nurse {
font-size: 32rpx;
position: absolute;
top: 12%;
left: 35%;
width: 63%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
} }
.distance { .distance {
position: absolute; position: absolute;
bottom: 20%; top: 32%;
font-size: 24rpx; left:35%;
left: 35%; font-size: 27rpx;
color: #666666; color: #666666;
} }
@ -74,20 +202,6 @@
display: block; display: block;
margin: 10% auto; margin: 10% auto;
} }
.understand {
font-size: 28rpx;
color: #ffffff;
width: 160rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
background-color: #4C7BC9;
position: absolute;
bottom: 10%;
right: 1%;
border-radius: 35rpx;
}
} }
} }

View File

@ -1,10 +1,36 @@
<template> <template>
<view class="app"> <view class="app">
<view class="map" style="height:35vh;"> <view class="inputs">
<map style="width:100%; height:100%" scale="17" :latitude="latitude" :longitude="longitude" <i class="icon"></i>
:markers="markers"></map> <input v-model="goodsName" type="text" name="" id="" class="input" placeholder="请输入">
</view> </view>
<view class="Classificationlist">
<view v-for="(item,index) in nurseItemClassifyInfoList" :key="index" @tap='tapitemclass(item)'
:class="item.id == itemClassId?'itemclass':'item'">
<image :src="item.classifyPictureUrl" mode=""></image>
<view class="title">
{{item.classifyName}}
</view>
</view>
<view class="item" v-if='nurseItemClassifyInfoList.length>8'>
<image src="../../static/gd.png" mode=""></image>
<view class="title">
更多
</view>
</view>
</view>
<swiper class="swiper-block" :indicator-dots="true" :autoplay="true" :interval="5000" :duration="3000"
circular='true' current='0'>
<swiper-item class="swiper-item" v-for="(item,index) in lbinfo">
<image :src="item.image" class="slide-image">
</image>
</swiper-item>
</swiper>
<view class="conNew"> <view class="conNew">
<view class="title">
周边医养机构
</view>
<u-tabs :list="nurseAgencyClassifyInfoList" :current="conNewcurrent" @change="change"></u-tabs>
<view class="addressContent" v-for="(item,index) in nursestationlist" :key="index"> <view class="addressContent" v-for="(item,index) in nursestationlist" :key="index">
<view class="lists" @tap='godetails(item)'> <view class="lists" @tap='godetails(item)'>
<view class="nurse">{{item.nurseStationName}}</view> <view class="nurse">{{item.nurseStationName}}</view>
@ -12,8 +38,10 @@
v-show="homeLatitudeLongitude.homeLatitude&&homeLatitudeLongitude.homeLongitude"> v-show="homeLatitudeLongitude.homeLatitude&&homeLatitudeLongitude.homeLongitude">
距离您{{item.distance}}KM</view> 距离您{{item.distance}}KM</view>
<image class="background" :src="item.stationPictureUrl" mode=""></image> <image class="background" :src="item.stationPictureUrl" mode=""></image>
<view class="understand"> <view class="tags">
点击了解 <view class="tag" v-for="uitem in item.nurseStationClassifyList">
{{uitem.classifyName}}
</view>
</view> </view>
</view> </view>
</view> </view>
@ -37,26 +65,70 @@
<script> <script>
import { import {
nearbyList, nearbyList,
getPatientInfo getPatientInfo,
getNurseClassifyList
} from '@/api/site/site.js'; } from '@/api/site/site.js';
import baseurl from '@/api/baseurl.js' import baseurl from '@/api/baseurl.js'
export default { export default {
data() { data() {
return { return {
nurseAgencyClassifyInfoList: [], //
conNewcurrent: 0,
nurseItemClassifyInfoList: [], //
lbinfo: [{
image: 'http://192.168.16.30:8088/profile/goodsPictureUrl/2023/02/15/2ff771a32e9e218b7a375437f3912a4_20230215094755A00126dbdd9a1d.png',
},
{
image: 'http://192.168.16.30:8088/profile/goodsPictureUrl/2023/02/15/2ff771a32e9e218b7a375437f3912a4_20230215094755A00126dbdd9a1d.png',
},
{
image: 'http://192.168.16.30:8088/profile/goodsPictureUrl/2023/02/15/2ff771a32e9e218b7a375437f3912a4_20230215094755A00126dbdd9a1d.png',
}
], //list
nursestationlist: [], nursestationlist: [],
mask: false, mask: false,
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
total: 0, total: 0,
//map
id: 0, // 使 marker id
latitude: 39.90374, latitude: 39.90374,
longitude: 116.397827, longitude: 116.397827,
markers: [],
homeLatitudeLongitude: null, homeLatitudeLongitude: null,
nurseClassId: '', //id
itemClassId: '', //id
} }
}, },
methods: { methods: {
//
tapitemclass(item) {
if (this.itemClassId == item.id) {
this.itemClassId = ''
} else {
this.itemClassId = item.id
}
this.requestinfo()
},
//
getNurseClassifyinfo() {
getNurseClassifyList().then(res => {
this.nurseAgencyClassifyInfoList.push({
name: '全部',
id: '',
})
res.data.nurseAgencyClassifyInfoList.forEach(e => {
e.name = e.classifyName
this.nurseAgencyClassifyInfoList.push(e)
})
res.data.nurseItemClassifyInfoList.forEach(e => {
e.classifyPictureUrl = baseurl + e.classifyPictureUrl
})
this.nurseItemClassifyInfoList = res.data.nurseItemClassifyInfoList.slice(0, 7)
})
},
change(index) {
this.conNewcurrent = index;
this.nurseClassId = this.nurseAgencyClassifyInfoList[index].id
this.requestinfo()
},
getlocation(value) { getlocation(value) {
var that = this var that = this
uni.openSetting({ uni.openSetting({
@ -67,14 +139,6 @@
// success: function(res) { // success: function(res) {
// that.latitude = res.latitude // that.latitude = res.latitude
// that.longitude = res.longitude // that.longitude = res.longitude
// that.markers.push({
// id: 3,
// latitude: res.Latitude,
// longitude: res.Longitude,
// width: 20,
// height: 25,
// iconPath: "../../static/locatinsmall.png"
// })
// that.mask = false // that.mask = false
// } // }
// }); // });
@ -84,21 +148,23 @@
}, },
requestinfo() { requestinfo() {
this.pageNum = 1; this.pageNum = 1;
nearbyList(this.pageSize, this.pageNum, this.longitude, this.latitude, this.nurseTypeCode).then(res => { nearbyList(this.pageSize, this.pageNum, this.longitude, this.latitude, this.nurseClassId, this.itemClassId)
if (res.total > 0) { .then(res => {
uni.removeStorageSync('Refresh'); if (res.total > 0) {
res.rows.forEach(e => { uni.removeStorageSync('Refresh');
e.stationPictureUrl = baseurl + e.stationPictureUrl res.rows.forEach(e => {
}) e.stationPictureUrl = baseurl + e.stationPictureUrl
this.nursestationlist = res.rows e.nurseStationClassifyList = e.nurseStationClassifyList.slice(0, 2)
this.mask = false })
this.total = res.total this.nursestationlist = res.rows
} this.mask = false
}) this.total = res.total
}
})
}, },
godetails(item) { godetails(item) {
uni.navigateTo({ uni.navigateTo({
url: `/pages/nursestation/nursestation?nurseStationId=${item.nurseStationId}` url: `/pages/nursestation/nursestation?nurseStationId=${item.nurseStationId}&distance=${item.distance}`
}) })
}, },
cancel() { cancel() {
@ -108,13 +174,14 @@
}) })
}, },
}, },
onReachBottom() { onReachBottom() { //
if (this.nursestationlist.length >= this.total) {} else { if (this.nursestationlist.length >= this.total) {} else {
this.pageNum++; this.pageNum++;
nearbyList(this.pageSize, this.pageNum, this.longitude, this.latitude, this.nurseTypeCode, this.iptVal) nearbyList(this.pageSize, this.pageNum, this.longitude, this.latitude, this.nurseClassId, this.itemClassId)
.then(res => { .then(res => {
res.rows.forEach(e => { res.rows.forEach(e => {
e.stationPictureUrl = baseurl + e.stationPictureUrl e.stationPictureUrl = baseurl + e.stationPictureUrl
e.nurseStationClassifyList = e.nurseStationClassifyList.slice(0, 2)
this.nursestationlist.push(e) this.nursestationlist.push(e)
}) })
}) })
@ -122,13 +189,7 @@
}, },
onPullDownRefresh() { // onPullDownRefresh() { //
this.pageNum = 1; this.pageNum = 1;
nearbyList(this.pageSize, this.pageNum, this.longitude, this.latitude, this.nurseTypeCode, this.iptVal) this.requestinfo()
.then(res => {
res.rows.forEach(e => {
e.stationPictureUrl = baseurl + e.stationPictureUrl
})
this.nursestationlist = res.rows
})
setTimeout(function() { setTimeout(function() {
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
}, 1000); }, 1000);
@ -139,6 +200,8 @@
}, },
}, },
onShow() { onShow() {
this.nurseClassId = ''
this.itemClassId = ''
var that = this var that = this
const value = uni.getStorageSync('patientId'); const value = uni.getStorageSync('patientId');
if (value) { if (value) {
@ -148,32 +211,14 @@
if (res.data.homeLatitude && res.data.homeLongitude) { if (res.data.homeLatitude && res.data.homeLongitude) {
that.latitude = res.data.homeLatitude that.latitude = res.data.homeLatitude
that.longitude = res.data.homeLongitude that.longitude = res.data.homeLongitude
that.markers.push({
id: 3,
latitude: res.data.homeLatitude,
longitude: res.data.homeLongitude,
width: 20,
height: 25,
iconPath: "../../static/locatinsmall.png"
})
that.requestinfo(); that.requestinfo();
} else { } else {
that.latitude = that.latitude
that.longitude = that.longitude
that.requestinfo(); that.requestinfo();
// uni.getLocation({ // uni.getLocation({
// type: 'wgs84', // type: 'wgs84',
// success: function(resp) { // success: function(resp) {
// that.latitude = resp.latitude // that.latitude = resp.latitude
// that.longitude = resp.longitude // that.longitude = resp.longitude
// that.markers.push({
// id: 3,
// latitude: resp.latitude,
// longitude: resp.longitude,
// width: 20,
// height: 25,
// iconPath: "../../static/locatinsmall.png"
// })
// that.requestinfo(); // that.requestinfo();
// }, // },
// fail(err) { // fail(err) {
@ -181,51 +226,17 @@
// } // }
// }); // });
} }
} else if (res.code == 9999) { } else if (res.code == 9999) {} else {
} else {
that.latitude = that.latitude
that.longitude = that.longitude
that.requestinfo(); that.requestinfo();
// that.markers.push({
// uni.getLocation({
// type: 'wgs84',
// success: function(resh) {
// that.latitude = resh.latitude
// that.longitude = resh.longitude
// that.markers.push({
// id: 3,
// latitude: resh.latitude,
// longitude: resh.longitude,
// width: 20,
// height: 25,
// iconPath: "../../static/locatinsmall.png"
// })
// that.requestinfo();
// },
// fail(err) {
// that.mask = true;
// }
// });
} }
}) })
} else { } else {
that.latitude = that.latitude
that.longitude = that.longitude
that.requestinfo(); that.requestinfo();
// uni.getLocation({ // uni.getLocation({
// type: 'wgs84', // type: 'wgs84',
// success: function(res) { // success: function(res) {
// that.latitude = res.latitude // that.latitude = res.latitude
// that.longitude = res.longitude // that.longitude = res.longitude
// that.markers.push({
// id: 3,
// latitude: res.latitude,
// longitude: res.longitude,
// width: 20,
// height: 25,
// iconPath: "../../static/locatinsmall.png"
// })
// that.requestinfo(); // that.requestinfo();
// }, // },
// fail(err) { // fail(err) {
@ -234,7 +245,9 @@
// }); // });
} }
}, },
onLoad() {}, onLoad() {
this.getNurseClassifyinfo();
},
//1. //1.
onShareAppMessage(res) { onShareAppMessage(res) {
let pages = getCurrentPages(); let pages = getCurrentPages();

BIN
static/gd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 990 B

BIN
static/phone.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB