地图日历列表

master
271556543@qq.com 4 years ago
parent 573f702db4
commit 644189921d

@ -48,4 +48,8 @@
page {
background-color: #F4F5F9;
}
.u-navbar {
border-radius: 0 0 40rpx 40rpx;
}
</style>

@ -27,6 +27,18 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/map/map",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/detailNursing/detailNursing",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/login/login",
"style": {
@ -53,26 +65,26 @@
"color": "#ABAEBE",
"selectedColor": "#1479FF",
"list": [{
"iconPath": "/static/tabbar/首页 copy.png",
"selectedIconPath": "/static/tabbar/首页.png",
"iconPath": "/static/tabbar/home.png",
"selectedIconPath": "/static/tabbar/home-active.png",
"pagePath": "pages/home/home",
"text": "首页"
},
{
"iconPath": "/static/tabbar/notification.png",
"selectedIconPath": "/static/tabbar/notification 2.png",
"selectedIconPath": "/static/tabbar/notification-active.png",
"pagePath": "pages/todayNursing/todayNursing",
"text": "今日护理"
},
{
"iconPath": "/static/tabbar/日历@2x.png",
"selectedIconPath": "/static/tabbar/日历2@2x.png",
"iconPath": "/static/tabbar/canlendar.png",
"selectedIconPath": "/static/tabbar/canlendar-active.png",
"pagePath": "pages/nursingCalendar/nursingCalendar",
"text": "护理日历"
},
{
"iconPath": "/static/tabbar/列表@2x.png",
"selectedIconPath": "/static/tabbar/列表 2@2x.png",
"iconPath": "/static/tabbar/list.png",
"selectedIconPath": "/static/tabbar/list-active.png",
"pagePath": "pages/list/list",
"text": "护理列表"
}

@ -0,0 +1,252 @@
<template>
<view>
<cpn-navbar title="护理详情" :isBack="true"></cpn-navbar>
<view>
<!-- 用户信息 -->
<view class="user-info">
<view class="top">
<view class="left">
<u-image src="/static/logo.png" width="104" height="104" shape="circle"></u-image>
</view>
<view class="center">
<view class="name">余美君</view>
<view class="infos">
<view class="age">74</view>
<view class="sex"></view>
<view class="organ">机构护理</view>
</view>
</view>
<view class="right">
<view class="icon3"></view>
<view>进行中</view>
</view>
</view>
<view class="line"></view>
<view class="bottom">
<view class="client">
<u-icon name="/static/detail/people.png" width="26" height="26"></u-icon>
<view>委托人余夏秀</view>
</view>
<view class="address">
<u-icon name="map" width="28" height="28" color="#1479FF"></u-icon>
<view>通园路666号地图通园路66号</view>
</view>
<view class="phone">
<u-icon name="phone" width="28" height="28" color="#1479FF"></u-icon>
<view>158****5455</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
},
computed: {
},
}
</script>
<style scoped lang="scss">
//
.icon1 {
width: 16rpx;
height: 16rpx;
background: #FDB030;
border-radius: 100%;
margin-right: 14rpx;
}
//
.icon2 {
width: 16rpx;
height: 16rpx;
background: #1173FF;
border-radius: 100%;
margin-right: 14rpx;
}
//
.icon3 {
width: 12rpx;
height: 12rpx;
background: #2EC28B;
border-radius: 100%;
margin-right: 14rpx;
position: relative;
&::after {
content: '';
width: 24rpx;
height: 24rpx;
border: 2rpx solid #2EC28B;
border-radius: 100%;
animation: icon-scale 3s linear infinite;
position: absolute;
top: -8rpx;
left: -8rpx;
}
@keyframes icon-scale {
0%,
30%,
100%,
40% {
transform: scale(0.7, 0.7);
}
70% {
transform: scale(1, 1);
}
}
}
.user-info {
width: 710rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(219, 218, 218, 0.5);
margin: 40rpx auto 0 auto;
.top {
display: flex;
justify-content: space-between;
align-items: flex-start;
padding-top: 34rpx;
padding-bottom: 30rpx;
.left {
padding-left: 20rpx;
}
.center {
flex: 1;
padding-left: 24rpx;
.name {
height: 48rpx;
font-size: 32rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #333333;
line-height: 24rpx;
}
.infos {
display: flex;
align-items: center;
padding-top: 20rpx;
.age {
height: 34rpx;
font-size: 24rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #A7AFBC;
line-height: 34rpx;
}
.sex {
width: 40rpx;
height: 40rpx;
background: #FDECEC;
opacity: 0.5;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
text-align: center;
line-height: 40rpx;
margin-left: 20rpx;
}
.organ {
width: 140rpx;
height: 40rpx;
background: #F9F9F9;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 40rpx;
text-align: center;
margin-left: 20rpx;
}
}
}
.right {
display: flex;
align-items: center;
padding-right: 20rpx;
}
}
.line {
width: 670rpx;
height: 2rpx;
border: 2rpx solid #EEEFF5;
margin: 30rpx auto 0 auto;
}
.bottom {
padding: 26rpx 0 34rpx 24rpx;
.bottom-item {
display: flex;
align-items: center;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
&>view {
padding-left: 16rpx;
}
}
.client {
@extend .bottom-item;
}
.address {
@extend .bottom-item;
padding-top: 18rpx;
}
.phone {
@extend .bottom-item;
padding-top: 18rpx;
}
}
}
</style>

@ -26,7 +26,7 @@
<swiper indicator-dots="true" indicator-color="rgba(255,255,255,0.5)" indicator-active-color="#FFFFFF">
<swiper-item v-for="(item,index) in 3" :key="index">
<view class="swiper-content"
style="background-image: url('../../static/home/Covid - 19 Data.png');background-size: 100% 100%;">
style="background-image: url('../../static/home/swiper-pic.png');background-size: 100% 100%;">
<view class="swiper-title">
四世同堂服务管理
</view>
@ -121,21 +121,23 @@
</view>
</view>
<view class="info-list">
<view v-for="(item,inedx) in infoList" :key="index" class="info-item">
<view class="info-icon">
<u-image :src="item.icon" height="80" width="80" shape="circle"></u-image>
</view>
<view class="info-content">
<view class="info-title">
{{item.title}}
<scroll-view :scroll-y="true" style="height: 320rpx;">
<view class="info-list">
<view v-for="(item,inedx) in infoList" :key="index" class="info-item">
<view class="info-icon">
<u-image src="/static/home/chat.png" height="40" width="40" shape="circle"></u-image>
</view>
<view class="info-time">
{{item.time}}
<view class="info-content">
<view class="info-title">
{{item.title}}
</view>
<view class="info-time">
{{item.time}}
</view>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
</view>
</template>
@ -168,12 +170,10 @@
}],
infoList: [{
title: "学习护理让老年人活动康复的训练",
icon: "/static/logo.png",
time: "2022-06-26 12:23:45"
},
{
title: "学习护理让老年人活动康复的训练",
icon: "/static/logo.png",
time: "2022-06-26 12:23:45"
}
]
@ -601,7 +601,12 @@
padding: 38rpx 0 20rpx 0;
.info-icon {}
.info-icon {
border-radius: 100%;
background-color: rgba(20, 121, 255, 0.2);
padding: 20rpx;
}
.info-content {

@ -1,25 +1,410 @@
<template>
<view>
<cpn-navbar title="护理列表"></cpn-navbar>
<view>
<!-- 搜索 -->
<view class="search">
<view class="input-content">
<u-input height="30" :custom-style="inputStyle"></u-input>
</view>
<view class="icon">
<u-icon name="search" size="46" color="#ABAEBE"></u-icon>
</view>
</view>
<!-- 下拉菜单 -->
<view class="drop-down">
<u-dropdown>
<u-dropdown-item title="状态" :options="options2"></u-dropdown-item>
<u-dropdown-item title="性别" :options="options2"></u-dropdown-item>
<u-dropdown-item title="时间" :options="options2"></u-dropdown-item>
</u-dropdown>
</view>
<!-- 护理列表 -->
<view class="nursing-list">
<view v-for="(item,index) in nursingList" :key="index" class="list-item">
<view class="top">
<view class="time">{{item.time}}</view>
<view class="status">
<view class="status-icon"
:class="{icon1:item.status === 0,icon2:item.status === 1,icon3:item.status === 2}">
</view>
<view v-if="item.status === 2" class="status-text"></view>
<view v-else-if="item.status === 0" class="status-text">待护理</view>
<view v-else class="status-text">已完成</view>
</view>
</view>
<view class="line"></view>
<view class="center">
<view class="avatar">
<u-image src="/static/logo.png" height="104" width="104" shape="circle"></u-image>
</view>
<view class="user-info">
<view class="name">{{item.name}}</view>
<view class="tel">
<view>
<u-icon name="phone" size="28" color="#1479FF"></u-icon>
</view>
<view class="text">{{item.tel}}</view>
</view>
<view class="address">
<view>
<u-icon name="map" size="28" color="#1479FF"></u-icon>
</view>
<view class="text">{{item.address}}</view>
</view>
</view>
<view class="sex">
<view class="sex-text">
{{item.sex}}
</view>
</view>
</view>
<view class="bottom">
<view class="distance">
<view class="distance-icon">
<u-image src="/static/todayNursing/distance.png" height="42" width="42"></u-image>
</view>
<view class="distance-text">{{item.distance}}</view>
</view>
<view class="to-there">
<view class="to-there-text">去那里</view>
<view class="to-there-icon">
<u-image src="/static/todayNursing/to-there.png" height="46" width="46"></u-image>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default{
data(){
return{
export default {
data() {
return {
inputStyle: {
width: "468rpx",
fontSize: "28rpx",
fontWeight: "500"
},
options2: [{
label: '去冰',
value: 1,
},
{
label: '加冰',
value: 2,
},
],
nursingList: [{
time: "2022-06-25",
name: "冯美君",
tel: "158****5455",
address: "通园路666号地图通园路66号",
distance: "距您1.7km",
status: 2,
sex: "女"
},
{
time: "2022-06-25",
name: "冯美君",
tel: "158****5455",
address: "通园路666号地图通园路66号",
distance: "距您1.7km",
status: 0,
sex: "女"
},
{
time: "2022-06-25",
name: "冯美君",
tel: "158****5455",
address: "通园路666号地图通园路66号",
distance: "距您1.7km",
status: 1,
sex: "男"
}
]
}
},
methods:{
methods: {
},
computed:{
computed: {
},
}
</script>
<style scoped lang="scss">
</style>
//
/deep/.u-dropdown__menu {
justify-content: space-evenly !important;
}
/deep/.u-dropdown__menu__item {
width: 224rpx !important;
flex: none !important;
height: 70rpx;
background: #FFFFFF;
border-radius: 10rpx;
justify-content: space-between !important;
}
/deep/.u-flex {
flex: 1;
}
/deep/.u-dropdown__menu__item__text {
flex: 1 !important;
font-size: 32rpx !important;
font-family: PingFang-SC-Medium, PingFang-SC !important;
font-weight: 500 !important;
color: #333333 !important;
text-align: center;
padding: 12rpx 0rpx !important;
}
/deep/.u-dropdown__menu__item__arrow {
width: 70rpx !important;
height: 70rpx !important;
background: rgba(20, 121, 255, 0.1) !important;
border-radius: 10rpx !important;
border: 2rpx solid #FFFFFF !important;
display: flex;
justify-content: center;
align-items: center;
}
.search {
width: 710rpx;
height: 70rpx;
background: #FFFFFF;
border: 2rpx solid #FAFBFC;
display: flex;
align-items: center;
justify-content: space-between;
margin: 24rpx 24rpx 0 24rpx;
.input-content {
margin-left: 30rpx;
}
.icon {
margin-right: 30rpx;
}
}
.drop-down {
margin-top: 20rpx;
}
.nursing-list {
margin-top: 10rpx;
.list-item {
width: 710rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(219, 218, 218, 0.5);
margin: 0 20rpx 26rpx 22rpx;
.top {
display: flex;
justify-content: space-between;
align-items: center;
padding: 22rpx 0;
.time {
height: 40rpx;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 40rpx;
padding-left: 20rpx;
}
.status {
display: flex;
align-items: center;
.status-icon {
margin-right: 10rpx;
}
.status-text {
width: 84rpx;
height: 40rpx;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 40rpx;
margin-right: 20rpx;
}
}
}
.line {
width: 670rpx;
height: 2rpx;
border: 2rpx solid #EEEFF5;
margin: 0 auto;
}
.center {
display: flex;
justify-content: space-between;
padding-top: 24rpx;
.avatar {
padding-top: 4rpx;
padding-left: 20rpx;
}
.user-info {
padding-left: 24rpx;
.name {
width: 270rpx;
height: 48rpx;
font-size: 32rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #333333;
}
.tel {
height: 40rpx;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 40rpx;
display: flex;
margin-top: 18rpx;
.text {
margin-left: 10rpx;
}
}
.address {
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 40rpx;
display: flex;
margin-top: 14rpx;
.text {
margin-left: 10rpx;
}
}
}
.sex {
width: 40rpx;
height: 40rpx;
background: #FDECEC;
opacity: 0.5;
display: flex;
justify-content: center;
align-items: center;
margin-right: 20rpx;
.sex-text {
width: 28rpx;
height: 34rpx;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 34rpx;
}
}
}
.bottom {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 16rpx;
padding-bottom: 26rpx;
.distance {
align-items: center;
display: flex;
.distance-icon {
padding-left: 20rpx;
}
.distance-text {
height: 34rpx;
font-size: 24rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #A7AFBC;
line-height: 34rpx;
padding-left: 20rpx;
}
}
.to-there {
display: flex;
align-items: center;
margin-right: 20rpx;
.to-there-text {
height: 34rpx;
font-size: 24rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #A7AFBC;
line-height: 34rpx;
margin-right: 14rpx;
}
.to-there-icon {
margin-left: 3rpx;
}
}
}
}
}
</style>

@ -1,5 +1,5 @@
<template>
<view class="login" style="background-image: url('/static/login/登录 背景.png');background-size: 100% 100%;">
<view class="login" style="background-image: url('/static/login/bkg-login.png');background-size: 100% 100%;">
<view class="title">
<view class="top-word">HELLO</view>
<view class="bottom-word">欢迎使用四世同堂管理系统</view>

@ -0,0 +1,465 @@
<template>
<view>
<cpn-navbar title="护理地图" :isBack="true"></cpn-navbar>
<map id="map" :latitude="location.latitude" :longitude="location.longitude" @markertap="markertap"></map>
<u-popup v-model="isShowPopup" mode="bottom" :mask="false" height="294rpx" :border-radius="40">
<view class="top">
<view class="left">
<view class="name">{{selectMarker.label.content}}</view>
<view class="sex"></view>
</view>
<view class="right">
<view class="icon icon3"></view>
<view class="text">进行中</view>
</view>
</view>
<view class="center">
<view class="tel">
<view>
<u-icon name="phone" size="28" color="#1479FF"></u-icon>
</view>
<view class="text">158****5455</view>
</view>
<view class="address">
<view>
<u-icon name="map" size="28" color="#1479FF"></u-icon>
</view>
<view class="text">通园路666号地图通园路66号</view>
</view>
</view>
<view class="bottom">
<view class="distance">
<view class="distance-icon">
<u-image src="/static/todayNursing/distance.png" height="42" width="42"></u-image>
</view>
<view class="distance-text">距您1.7km</view>
</view>
<view class="to-there">
<view class="to-there-text">去那里</view>
<view class="to-there-icon">
<u-image src="/static/todayNursing/to-there.png" height="46" width="46"></u-image>
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
data() {
return {
mapCtx: null,
location: {
latitude: null,
longitude: null,
covers: []
},
isShowPopup: false,
selectMarker: null,
}
},
methods: {
async markertap(e) {
let marker = this.covers[e.detail.markerId - 1]
this.selectMarker = marker
console.log(marker);
this.isShowPopup = true
this.mapCtx.moveToLocation({
longitude: marker.longitude,
latitude: marker.latitude
})
},
async getNowLocation() {
const location = (await uni.getLocation())[1]
this.location.latitude = location.latitude
this.location.longitude = location.longitude
},
updateClusters(clusters) {
let clusterMarkers = []
clusters.forEach(item => {
const {
center,
clusterId,
markerIds
} = item
let clusterObj = {
clusterId,
...center,
width: 20,
height: 24,
iconPath: "/static/map/done.png",
joinCluster: true,
label: { //
content: markerIds.length + '人',
fontSize: 16,
color: '#36596A',
width: 50,
height: 25,
bgColor: 'rgba(255, 255, 255, 0.95)',
borderRadius: 5,
textAlign: 'center',
anchorX: 0,
anchorY: 0,
}
}
clusterMarkers.push(clusterObj)
})
this.mapCtx.addMarkers({
markers: clusterMarkers,
clear: false
})
},
getCovers() {
this.covers = [{
id: 1,
latitude: 31.26000,
longitude: 120.63000,
width: 14,
height: 18,
iconPath: '/static/map/doing.png',
joinCluster: true,
label: {
content: "冯晓梅",
fontSize: 14,
color: '#36596A',
width: 54,
height: 25,
bgColor: 'rgba(255, 255, 255, 0.95)',
borderRadius: 5,
textAlign: 'center',
anchorX: 0,
anchorY: 0,
}
},
{
id: 2,
latitude: 31.26044,
longitude: 120.63013,
width: 14,
height: 18,
iconPath: '/static/map/done.png',
joinCluster: true,
label: {
content: "项小北",
fontSize: 14,
color: '#36596A',
width: 54,
height: 25,
bgColor: 'rgba(255, 255, 255, 0.95)',
borderRadius: 5,
textAlign: 'center',
anchorX: 0,
anchorY: 0,
}
},
{
id: 3,
latitude: 31.24998,
longitude: 120.63007,
width: 14,
height: 18,
iconPath: '/static/map/done.png',
joinCluster: true,
label: {
content: "冯晓梅",
fontSize: 14,
color: '#36596A',
width: 54,
height: 25,
bgColor: 'rgba(255, 255, 255, 0.95)',
borderRadius: 5,
textAlign: 'center',
anchorX: 0,
anchorY: 0,
}
},
{
id: 4,
latitude: 31.23451,
longitude: 120.62768,
width: 14,
height: 18,
iconPath: '/static/map/todo.png',
joinCluster: true,
label: {
content: "项小北",
fontSize: 14,
color: '#36596A',
width: 54,
height: 25,
bgColor: 'rgba(255, 255, 255, 0.95)',
borderRadius: 5,
textAlign: 'center',
anchorX: 0,
anchorY: 0,
}
},
{
id: 5,
latitude: 31.26014,
longitude: 120.63066,
width: 14,
height: 18,
iconPath: '/static/map/todo.png',
joinCluster: true,
label: {
content: "冯晓梅",
fontSize: 14,
color: '#36596A',
width: 54,
height: 25,
bgColor: 'rgba(255, 255, 255, 0.95)',
borderRadius: 5,
textAlign: 'center',
anchorX: 0,
anchorY: 0,
}
}
]
this.mapCtx.addMarkers({
markers: this.covers,
clear: false,
complete: (res) => {}
})
}
},
computed: {
},
onLoad() {
this.getNowLocation()
},
async onReady() {
this.mapCtx = uni.createMapContext("map", this)
this.mapCtx.initMarkerCluster({
enableDefaultStyle: false,
zoomOnClick: true,
gridSize: 20
})
this.mapCtx.on("markerClusterCreate", e => {
this.updateClusters(e.clusters)
})
this.getCovers()
}
}
</script>
<style scoped lang="scss">
//
.icon1 {
width: 16rpx;
height: 16rpx;
background: #FDB030;
border-radius: 100%;
margin-right: 14rpx;
}
//
.icon2 {
width: 16rpx;
height: 16rpx;
background: #1173FF;
border-radius: 100%;
margin-right: 14rpx;
}
//
.icon3 {
width: 12rpx;
height: 12rpx;
background: #2EC28B;
border-radius: 100%;
margin-right: 14rpx;
position: relative;
&::after {
content: '';
width: 24rpx;
height: 24rpx;
border: 2rpx solid #2EC28B;
border-radius: 100%;
animation: icon-scale 3s linear infinite;
position: absolute;
top: -8rpx;
left: -8rpx;
}
@keyframes icon-scale {
0%,
30%,
100%,
40% {
transform: scale(0.7, 0.7);
}
70% {
transform: scale(1, 1);
}
}
}
map {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
}
/deep/.u-drawer-bottom {
box-shadow: 2rpx 6rpx 10rpx 10rpx rgba(206, 204, 204, 0.5);
}
.top {
display: flex;
align-items: center;
justify-content: space-between;
padding-top: 50rpx;
.left {
display: flex;
align-items: center;
padding-left: 40rpx;
.name {
font-size: 32rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #333333;
}
.sex {
width: 40rpx;
height: 40rpx;
background: #FDECEC;
opacity: 0.5;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 40rpx;
text-align: center;
margin-left: 20rpx;
}
}
.right {
display: flex;
align-items: center;
padding-right: 40rpx;
.icon {
margin-right: 16rpx;
}
}
}
.center {
padding-left: 40rpx;
padding-top: 18rpx;
.tel {
height: 40rpx;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 40rpx;
display: flex;
.text {
margin-left: 10rpx;
}
}
.address {
height: 40rpx;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 40rpx;
display: flex;
margin-top: 8rpx;
.text {
margin-left: 10rpx;
}
}
}
.bottom {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20rpx;
.distance {
align-items: center;
display: flex;
.distance-icon {
padding-left: 40rpx;
}
.distance-text {
height: 34rpx;
font-size: 24rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #A7AFBC;
line-height: 34rpx;
padding-left: 20rpx;
}
}
.to-there {
display: flex;
align-items: center;
margin-right: 40rpx;
.to-there-text {
height: 34rpx;
font-size: 24rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #A7AFBC;
line-height: 34rpx;
margin-right: 14rpx;
}
.to-there-icon {
margin-left: 3rpx;
}
}
}
</style>

@ -5,26 +5,38 @@
<view>
<!-- 选择器 -->
<view class="selecter">
<view class="select-year">
<view class="select-year" @click="isShowCell = true">
<view class="text">
{{select.year}}
</view>
<view class="arrow">
<view class="arrow" :class="{arrowAni:isShowCell,arrowAni1:!isShowCell}">
<u-icon name="arrow-down" size="20" color="#36596A"></u-icon>
</view>
</view>
<view class="select-month">
<view class="arrow">
<view class="arrow" @click="monthMin">
<u-icon name="arrow-left" size="20" color="#36596A"></u-icon>
</view>
<view class="text">
{{select.month}}
</view>
<view class="arrow">
<view class="arrow" @click="monthPlus">
<u-icon name="arrow-right" size="20" color="#36596A"></u-icon>
</view>
</view>
</view>
<!-- 选择年列表 -->
<view class="year-options" v-show="isShowCell">
<view class="mask" @click="isShowCell = false"> </view>
<view class="options">
<scroll-view scroll-y="true" style="height: 300rpx;">
<view class="item" v-for="(item,index) in opsionts" :key="index"
@click="select.year = item,isShowCell = false">
{{item}}
</view>
</scroll-view>
</view>
</view>
<!-- 日历表 -->
<view class="canlendar">
@ -38,18 +50,52 @@
<!-- 日期状态提示 -->
<view class="status">
<view class="status-item">
<view class="icon1"></view>
<view class="icon3"></view>
<view>进行中</view>
</view>
<view class="status-item">
<view class="icon2"></view>
<view class="icon1"></view>
<view>待护理</view>
</view>
<view class="status-item">
<view class="icon3"></view>
<view class="icon2"></view>
<view>已完成</view>
</view>
</view>
<!-- 选中护理当日信息 -->
<view class="select-info">
<view class="selet-date">
{{select.year}}-{{select.month}}-{{dateIndex}}
</view>
<view class="select-day">
{{getDay(select.year+"/"+select.month+"/"+dateIndex)}}
</view>
</view>
<!-- 选中当日护理人员 -->
<view class="select-user-list">
<scroll-view :scroll-y="true" style="height: 520rpx;">
<view v-for="(item,index) in selectUserList" :key="index" class="user-item">
<view class="left">
<u-image src="/static/logo.png" height="104" width="104" shape="circle"></u-image>
</view>
<view class="center">
<view class="top">{{item.name}}</view>
<view class="bottom">
<view class="time">{{item.time}}</view>
<view class="list-status-icon"
:class="{icon1:item.status === 0,icon2:item.status === 1,icon3:item.status === 2}">
</view>
<view class="list-status-text">{{formatStatus(item.status)}}</view>
</view>
</view>
<view class="right">
<u-icon name="arrow-right" size="22"></u-icon>
</view>
</view>
</scroll-view>
</view>
</view>
</view>
</template>
@ -58,13 +104,21 @@
export default {
data() {
return {
opsionts: (() => {
let res = []
for (let i = 0; i < 20; i++) {
res.push(new Date().getFullYear() - i)
}
return res
})(),
isShowCell: false,
//
select: {
year: new Date().getFullYear(),
month: new Date().getMonth() + 1
},
//
dateIndex: null,
dateIndex: new Date().getDate(),
calendar: '',
params: {
year: true,
@ -74,10 +128,39 @@
minute: false,
second: false
},
show: false,
selectUserList: [{
name: "王新",
time: "09:00",
status: 2
},
{
name: "王新",
time: "09:00",
status: 0
},
{
name: "王新",
time: "09:00",
status: 1
},
]
}
},
methods: {
monthPlus() {
this.$u.throttle(() => {
if (this.select.month < 12) {
this.select.month++
}
})
},
monthMin() {
this.$u.throttle(() => {
if (this.select.month > 1) {
this.select.month--
}
})
},
dateClick(date, index1) {
if (date.type === 0) {
this.dateIndex = date.date
@ -169,20 +252,40 @@
}
},
computed: {
getDay() {
return function(date) {
if (!date) {
return " "
}
let dayList = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
return dayList[new Date(date).getDay()] ?? " "
}
},
formatStatus() {
return function(status) {
switch (status) {
case 0:
return "待护理"
break;
case 1:
return "进行中"
break;
case 2:
return "已完成"
break;
default:
return "未知"
}
}
}
},
watch: {
year: {
select: {
handler(newVal, oldVal) {
this.getCalendar(this.select.year, this.select.month)
},
immediate: false
},
month: {
handler(newVal, oldVal) {
this.getCalendar(this.select.year, this.select.month)
},
immediate: true
immediate: true,
deep: true
}
}
}
@ -190,10 +293,6 @@
<style scoped lang="scss">
//
/deep/.u-navbar {
border-radius: 0 0 50rpx 50rpx;
}
//
.icon1 {
width: 16rpx;
@ -290,6 +389,34 @@
justify-content: center;
align-items: center;
}
.arrowAni {
animation: rotate 500ms forwards;
}
.arrowAni1 {
animation: rotate2 500ms forwards;
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(180deg);
}
}
@keyframes rotate2 {
0% {
transform: rotate(180deg);
}
100% {
transform: rotate(0deg);
}
}
}
.select-month {
@ -315,7 +442,7 @@
}
.text {
width: 52rpx;
height: 40rpx;
font-size: 32rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
@ -326,6 +453,57 @@
}
}
.year-options {
.mask {
opacity: 0;
position: fixed;
inset: 0 0 0 0;
}
.options {
background: #fff;
width: 224rpx;
height: 300rpx;
border-radius: 20rpx;
box-shadow: 2rpx 6rpx 10rpx 10rpx rgba(206, 204, 204, 0.5);
animation: enter 500ms forwards;
position: absolute;
top: 350rpx;
left: 34rpx;
.item {
font-size: 32rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #333333;
text-align: center;
border-bottom: 2rpx solid #EEEFF5;
padding: 30rpx 0;
margin: 0 20rpx;
}
}
@keyframes enter {
0% {
opacity: 0;
transform: translateY(-50%);
}
40% {
opacity: 0;
transform: translateY(-35%);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
}
.canlendar {
width: 710rpx;
background: #FFFFFF;
@ -345,7 +523,7 @@
line-height: 64rpx;
border-radius: 10rpx;
margin: 20rpx;
margin: 10rpx;
}
//
@ -381,4 +559,102 @@
}
}
.select-info {
height: 46rpx;
font-size: 32rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 46rpx;
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 36rpx;
padding: 0 48rpx 0 44rpx;
}
.select-user-list {
width: 710rpx;
height: 520rpx;
background: #FFFFFF;
border-radius: 10rpx;
margin: 18rpx auto;
.user-item {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 2rpx solid #EEEFF5;
padding: 36rpx 0;
margin: 0 20rpx;
.left {}
.center {
flex: 1;
margin-left: 28rpx;
.top {
height: 46rpx;
font-size: 32rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #333333;
line-height: 46rpx;
}
.bottom {
display: flex;
align-items: center;
padding-top: 18rpx;
.time {
width: 100rpx;
background: #F9F9F9;
height: 40rpx;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 40rpx;
text-align: center;
border-radius: 10rpx;
}
.list-status-icon {
margin-left: 16rpx;
}
.list-status-text {
height: 40rpx;
font-size: 28rpx;
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #585858;
line-height: 40rpx;
margin-left: 16rpx;
}
}
}
.right {
width: 70rpx;
height: 70rpx;
background: #F9F9F9;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
}
}
}
</style>

@ -5,8 +5,8 @@
<view class="content">
<view class="map">
<view class="map-text">护理地图</view>
<view class="map-icon">
<u-image src="/static/todayNursing/地图.png" height="84" width="84" shape="circle"></u-image>
<view class="map-icon" @click="toMap">
<u-image src="/static/todayNursing/map.png" height="84" width="84" shape="circle"></u-image>
</view>
</view>
@ -55,14 +55,14 @@
<view class="bottom">
<view class="distance">
<view class="distance-icon">
<u-image src="/static/todayNursing/距离.png" height="42" width="42"></u-image>
<u-image src="/static/todayNursing/distance.png" height="42" width="42"></u-image>
</view>
<view class="distance-text">{{item.distance}}</view>
</view>
<view class="to-there">
<view class="to-there-text">去那里</view>
<view class="to-there-icon">
<u-image src="/static/todayNursing/Group 104.png" height="46" width="46"></u-image>
<u-image src="/static/todayNursing/to-there.png" height="46" width="46"></u-image>
</view>
</view>
</view>
@ -108,7 +108,14 @@
}
},
methods: {
//
toMap() {
uni.$u.throttle(() => {
uni.navigateTo({
url: "/pages/map/map"
})
})
}
},
computed: {
@ -117,11 +124,6 @@
</script>
<style scoped lang="scss">
//
/deep/.u-navbar {
border-radius: 0 0 50rpx 50rpx;
}
//
.icon1 {
width: 16rpx;
@ -194,7 +196,7 @@
font-family: PingFang-SC-Medium, PingFang-SC;
font-weight: 500;
color: #36596A;
line-height: 30rpx;
line-height: 42rpx;
}
@ -397,8 +399,6 @@
margin-left: 3rpx;
}
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Before

Width:  |  Height:  |  Size: 193 KiB

After

Width:  |  Height:  |  Size: 193 KiB

Before

Width:  |  Height:  |  Size: 452 KiB

After

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Loading…
Cancel
Save