This commit is contained in:
曹辉 2022-12-01 17:03:02 +08:00
parent 2d4aafb855
commit d4bb76e568
32 changed files with 1840 additions and 242 deletions

View File

@ -19,7 +19,7 @@
height: 100%;
// position: relative;
color: #000000;
padding: 30rpx 0 0 0;
padding: 30rpx 0 150rpx 0;
.cards {
width: 94%;

View File

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

View File

@ -18,8 +18,8 @@
},
/* */
"modules" : {
"Geolocation" : {},
"Maps" : {}
"Maps" : {},
"Geolocation" : {}
},
/* */
"distribute" : {
@ -32,6 +32,7 @@
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
@ -49,22 +50,21 @@
]
},
/* ios */
"ios" : {},
"ios" : {
"dSYMs" : false
},
/* SDK */
"sdkConfigs" : {
"maps" : {
"amap" : {
"appkey_ios" : "",
"appkey_ios" : "b38c6aa0cb9a6323f48b05ea6462aed5",
"appkey_android" : "b38c6aa0cb9a6323f48b05ea6462aed5"
}
},
"geolocation" : {
"system" : {
"__platform__" : [ "android" ]
},
"amap" : {
"__platform__" : [ "android" ],
"appkey_ios" : "",
"__platform__" : [ "ios", "android" ],
"appkey_ios" : "b38c6aa0cb9a6323f48b05ea6462aed5",
"appkey_android" : "b38c6aa0cb9a6323f48b05ea6462aed5"
}
},
@ -75,10 +75,11 @@
"appid" : "",
"UniversalLinks" : ""
}
}
},
"ad" : {}
},
"splashscreen" : {
"androidStyle" : "default",
"androidStyle" : "common",
"android" : {
"xxhdpi" : "static/xxhdpi.png",
"hdpi" : "static/hdpi.png",

View File

@ -9,6 +9,37 @@
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
}, {
"path": "pages/ProjectDetails/ProjectDetails",
"style": {
"navigationBarTitleText": "护理项目详情",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff" //
}
},
{
"path": "pages/Bodysatelliteintegration/Bodysatelliteintegration",
"style": {
"navigationBarTitleText": "体卫融合",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff" //
}
}, {
"path": "pages/Geriatricdisease/Geriatricdisease",
"style": {
"navigationBarTitleText": "老年病中心",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/diseasemanagement/diseasemanagement",
"style": {
"navigationBarTitleText": "专病管理",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ffffff"
}
}, {
"path": "pages/goodsorderRate/goodsorderRate",
"style": {

View File

@ -10,10 +10,10 @@
<image src="../../static/pic.png" mode=""></image>
</view>
<view class="priceinfo">退款金额
<view class="priceback">{{order.godTotalPrice}}
<view class="priceback">{{order.totalPrice}}
</view>
<!-- <view class="words">
已修改最多{{order.godTotalPrice}}含发货邮费 0.00
已修改最多{{order.totalPrice}}含发货邮费 0.00
</view> -->
</view>
</view>

View File

@ -0,0 +1,72 @@
<template>
<view class="app">
<view class="concent">
<view class="background">
<image src="/static/logo.png" mode=""></image>
<view>
<view class="detailed">
<view>
体卫融合是推进我国全民健身与全民健康深度融合的重要途径在发挥全民健身提高人民身体素质和健康水平促进人的全面发展方面具有不可替代作用体卫融合可引导广大居民践行掌握一项体育技能享受一生健康生活的健康活动方式树立健康在我预防为先科学健身贵在坚持等生活理念使全面健康新理念深入人心
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
};
}
}
</script>
<style lang="scss">
.app {
padding-top: 10rpx;
.concent {
width: 701rpx;
height: 850rpx;
background: #4C7BC9;
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 20rpx;
margin: 5% auto 20px;
.background {
position: relative;
width: 657rpx;
height: 800rpx;
background: #FFFFFF;
border-radius: 25rpx;
background-color: white;
margin: 0 auto;
top: 50%;
transform: translateY(-50%);
image {
width: 178rpx;
height: 84rpx;
background: #FFFFFF;
border-radius: 25px;
margin-left: 68%;
margin-top: 5%;
}
}
}
}
.detailed {
width: 657rpx;
padding: 0 42rpx;
line-height: 56rpx;
}
.detailed view {
text-indent: 2em;
}
</style>

View File

@ -33,7 +33,7 @@
</view>
<view class="refund">
实付款
<text class="price">{{item.godTotalPrice}}</text>
<text class="price">{{item.totalPrice}}</text>
</view>
</view>
</view>

View File

@ -0,0 +1,77 @@
<template>
<view class="app">
<view class="concent">
<view class="background">
<image src="/static/logo.png" mode=""></image>
<view>
<view class="detailed">
<view class="">
国家老年病中心山东分中心是依托于首都医科大学宣武医院的国家老年疾病临床医学研究中心国家科技部国家卫计委中央军委后勤保障部国家食品药品监督管理总局联合批准的国家级临床医学研究中心老年慢性病全国网络化诊治体系及医疗大数据系统医疗与健康一体化的新型服务体系和数据体系山东省建设单位为提升山东省基层医院老年病学科水平建设区域老年疾病预防管理体系利用国家中心在老年疾病临床诊疗的优势在衰老老年常见重大疾病帕金森和老年痴呆等老年神经变性病心脑及外周血管病糖尿病和老年综合征衰弱跌倒便秘等防治领域围绕老年高龄外科围手术期管理老年用药管理老年共病老年重症以及老年常见疾病帕金森病痴呆心脑外周血管病糖尿病等早期预警干预及全程管理的综合评估干预和管理新技术
</view>
<view class="">
主要开展的科室有帕金森两腺科妇科心脑血管等精准治疗
</view>
<view class="">
开展项目有慢病管理血液净化高血脂症妇科筛查老年病筛查康复治疗等
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
};
}
}
</script>
<style lang="scss">
.app {
padding-top: 10rpx;
.concent {
width: 701rpx;
height: 100%;
background: #4C7BC9;
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 20rpx;
margin: 5% auto 20px;
padding: 30rpx 0;
.background {
width: 657rpx;
height: 100%;
background: #FFFFFF;
border-radius: 25rpx;
background-color: white;
margin: 0 auto;
image {
width: 178rpx;
height: 84rpx;
background: #FFFFFF;
border-radius: 25px;
margin-left: 68%;
margin-top: 5%;
}
}
}
}
.detailed {
width: 657rpx;
height: 100%;
padding: 0 42rpx 20rpx;
line-height: 56rpx;
}
.detailed view {
text-indent: 2em;
}
</style>

View File

@ -8,7 +8,7 @@
{{item.orderStatus=='PAY'?'已付款':''}}
{{item.orderStatus=='WAIT_DISPATCH'?'待服务':''}}
{{item.orderStatus=='NOT_FINISH'?'待完成':''}}
{{item.orderStatus=='COMPLETE'?'评价':''}}
{{item.orderStatus=='COMPLETE'?'评价':''}}
{{item.orderStatus=='EVALUATED'?'服务完成':''}}
{{item.orderStatus=='WAIT_REFUND'?'退款中':''}}
{{item.orderStatus=='REFUNDED'?'已退款':''}}

View File

@ -0,0 +1,171 @@
.app {
height: 100%;
padding: 2% 2% 150rpx 2%;
padding-top: 10rpx;
font-size: 34rpx;
.mask {
.information {
width: 70%;
height: 400rpx;
margin: 50% auto;
background: #FFFFFF;
border-radius: 30rpx;
text-align: center;
color: #FFFFFF;
position: relative;
.determine,
.cancel {
width: 200rpx;
height: 70rpx;
border-radius: 26rpx;
font-size: 34rpx;
line-height: 70rpx;
position: absolute;
top: 74%;
}
.determine {
background: #4C7BC9;
right: 36rpx;
}
.cancel {
background: #C5BFBF;
left: 36rpx;
}
.title {
font-size: 42rpx;
margin-top: 40rpx;
color: #000000;
}
image {
width: 100rpx;
height: 100rpx;
margin: 10% 0 0 0;
}
}
}
.appointment {
width: 120rpx;
height: 70rpx;
background: #4C7BC9;
border-radius: 26rpx;
color: #ffffff;
text-align: center;
line-height: 70rpx;
position: absolute;
bottom:20rpx;
right:5%;
}
.detail {
position: relative;
width: 94%;
height: 100%;
margin: 0 auto;
background: #FFFFFF;
border-radius: 20rpx;
margin-top: 3%;
font-size: 31rpx;
padding: 3%;
padding-bottom: 50rpx;
.textInfo {
word-break:break-all;
font-size: 29rpx;
text-indent: 2rem;
line-height: 42rpx;
color: #666666;
padding-top: 30rpx;
/deep/ .richPic {
width: 100% !important;
height: 100% !important;
}
}
.Introduction {
font-size: 31rpx;
color: #333333;
line-height: 12rpx;
margin-left: -3%;
padding: 3%;
}
}
.item {
width: 95%;
height: 100%;
background: #FFFFFF;
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 20rpx;
margin: 20rpx auto 0;
padding: 3% 3% 40rpx 3%;
line-height: 60rpx;
position: relative;
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;
}
}
/* 耗材包 */
.Consumablespackage {
width: 95%;
height: 100%;
background: #FFFFFF;
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 20rpx;
margin: 20rpx auto 0;
padding: 3% 3% 40rpx 3%;
line-height: 60rpx;
font-size: 32rpx;
.detail {
font-size: 30rpx;
color: #000000;
}
span {
color: red;
float: right;
}
}
}

View File

@ -0,0 +1,160 @@
<template>
<view class="app">
<view class="item">
<image :src="list.itemPictureUrl"></image>
<view class="huanyao">{{list.nurseItemName}}
</view>
<!-- <view class="pingfen">
<u-rate :count="5" value="2"></u-rate>
</view> -->
<view class="servicetime">服务时长:{{list.serveDurationUnit?list.serveDurationUnit:'0'}}</view>
<view class="price">{{list.nurseItemPrice==null?'0':list.nurseItemPrice}}</view>
</view>
<view class="Consumablespackage" v-if='list.itemConsumableList'>耗材包详情:
<span>{{list.consumableTotalPrice==null?'0':list.consumableTotalPrice}}</span>
<view class="detail" v-for='(item,index) in list.itemConsumableList' :key="index">
·{{item.consumableDetail}}
</view>
</view>
<view class="detail">
<view class="Introduction">服务详情:</view>
<view class="textInfo" v-html="list.nurseItemContent">
</view>
</view>
<view class="appointment" @tap.stop='goappointments(item)'>预约</view>
<u-toast ref="uToast" />
<u-mask :show="usershow" class='mask'>
<view class="information">
<image src="../../static/information.png" mode=""></image>
<view class="title">
请完善个人信息
</view>
<view class="cancel" @tap='usershow=false'>
取消
</view>
<view class="determine" @tap='goinformation'>
去完善
</view>
</view>
</u-mask>
</view>
</template>
<script>
import {
AppIdentification
} from '@/api/AppIdentification/index.js'
import baseurl from '@/api/baseurl.js'
import {
getAppStationItemInfo
} from '@/api/ProjectDetails/index.js'
export default {
data() {
return {
baseurl: '',
list: {},
orderNo: '',
usershow: false, //
list: [], //list
timer: null,
}
},
onLoad(options) {
//
this.getlist(options.stationId, options.stationItemId, options.stationItemPriceId)
},
onShow() {
this.usershow = false
},
methods: {
//
goappointments() {
let that = this
try {
const value = uni.getStorageSync('openid');
if (value) {
const value2 = uni.getStorageSync('patientId');
if (value2) {
AppIdentification(value2).then(res => {
if (res.code == 200) {
if (res.data.loginFlag) {
that.usershow = false
uni.navigateTo({
url: `/pages/appointmenttime/appointmenttime?stationId=${this.list.stationId}&stationItemId=${this.list.stationItemId}&stationItemPriceId=${this.list.stationItemPriceId}`,
})
} else {
that.usershow = true
}
} else {
that.$refs.uToast.show({
title: res.msg,
type: 'error'
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.navigateTo({
url: '/pages/login/login'
})
}, 1500)
}
})
} else {
that.$refs.uToast.show({
title: '未登录,请先登录',
type: 'error'
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.navigateTo({
url: '/pages/login/login'
})
}, 1500)
}
} else {
that.$refs.uToast.show({
title: '未登录,请先登录',
type: 'error'
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.navigateTo({
url: '/pages/login/login'
})
}, 1500)
}
} catch (e) {
uni.navigateTo({
url: '/pages/login/login'
})
}
},
//
goinformation() {
this.usershow = false
uni.navigateTo({
url: '/pages/information/information'
})
},
//
getlist(stationId, stationItemId, stationItemPriceId) {
getAppStationItemInfo(stationId, stationItemId, stationItemPriceId).then(res => {
res.data.nurseItemContent = res.data.nurseItemContent.replace(/\<img/gi,
"<img class='richPic'")
// res.data.nurseItemContent = res.data.nurseItemContent.replace(/\<img/,
// "<br/> <img class='richPic'")
res.data.itemPictureUrl = baseurl + res.data.itemPictureUrl
this.list = res.data
})
},
}
}
</script>
<style lang="scss">
@import './ProjectDetails.scss';
</style>

View File

@ -1,86 +1,95 @@
.app {
font-size: 34rpx;
padding-top: 10rpx;
height: 100%;
.mask{
.Agreement{
width: 100%;
background-color: #F4F5F7;
text-align: center;
height: 1000rpx;
position: absolute;
width:94%;
left:3%;
top:5%;
font-size: 30rpx;
.title{
height: 100rpx;
line-height: 100rpx;
border-bottom: 1px solid #eeeeee;
font-size: 34rpx;
margin: 0px auto;
width: 100%;
text-align: center;
}
.scroll-Y{
width: 98%;
margin: 0 auto;
height:830rpx ;
overflow-y:scroll;
text-align: left;
text-indent: 2em;
}
.cancel {
height:70rpx;
line-height: 70rpx;
font-size: 32rpx;
background-color: #F4F5F7;
position: absolute;
border-top: 1rpx solid #000000;
bottom:0;
right:0;
width: 50%;
color: #000000;
}
.determine {
height:70rpx;
line-height: 70rpx;
font-size: 32rpx;
width: 50%;
color: #F4F5F7;
background: #4C7BC9;
position: absolute;
bottom:0;
left:0;
}
}
}
.addressitem{
width: 97%;
border-bottom: 1rpx solid #D8D4D4;
margin-left: 3%;
font-size: 34rpx;
padding-top: 10rpx;
height: 100%;
.leftaddress{
width:15%;
.mask {
.Agreement {
width: 100%;
background-color: #F4F5F7;
text-align: center;
height: 1000rpx;
position: absolute;
top: 5%;
width: 94%;
left: 3%;
font-size: 30rpx;
.title {
height: 100rpx;
line-height: 100rpx;
border-bottom: 1px solid #eeeeee;
font-size: 34rpx;
margin: 0px auto;
width: 100%;
text-align: center;
}
.scroll-Y {
width: 98%;
margin: 0 auto;
height: 830rpx;
overflow-y: scroll;
text-align: left;
text-indent: 2em;
}
.cancel {
height: 70rpx;
line-height: 70rpx;
font-size: 32rpx;
background-color: #F4F5F7;
position: absolute;
border-top: 1rpx solid #000000;
bottom: 0;
right: 0;
width: 50%;
color: #000000;
}
.determine {
height: 70rpx;
line-height: 70rpx;
font-size: 32rpx;
width: 50%;
color: #F4F5F7;
background: #4C7BC9;
position: absolute;
bottom: 0;
left: 0;
}
}
}
.addressitem {
width: 97%;
border-bottom: 1rpx solid #D8D4D4;
margin-left: 3%;
height: 100%;
display: flex;
display: inline-block;
.leftaddress {
width: 15%;
height: 100%;
display: flex;
display: inline-block;
}
.addition {
color: #666666;
display: inline-block;
line-height: 50rpx;
font-size: 28rpx;
}
}
.addition{
color: #666666;
display: inline-block;
line-height: 50rpx;
font-size: 28rpx;
}
}
.money {
font-size: 32rpx;
color: #D43953;
position: absolute;
right:5%;
top:20%;
right: 5%;
top: 20%;
}
.user {
background: #FFFFFF;
width: 94%;
@ -88,35 +97,46 @@
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 20rpx;
line-height: 93rpx;
.selecttime {
height: 93rpx;
margin-left: 3%;
position: relative;
text {
font-size: 34rpx;
color: #878987;
}
image {
width: 18rpx;
height: 27rpx;
margin-left:50%;
position: absolute;
right: 5%;
top: 50%;
transform: translateY(-50%);
}
.addition{
.addition {
color: #666666;
line-height: 30rpx;
font-size: 28rpx;
}
}
.item {
width: 97%;
border-bottom: 1rpx solid #D8D4D4;
margin-left: 3%;
.addition{
.addition {
color: #666666;
line-height: 30rpx;
font-size: 28rpx;
}
}
}
.remarks {
width: 94%;
height: 382rpx;
@ -128,32 +148,37 @@
border-radius: 20rpx;
margin-top: 20rpx;
position: relative;
span{
span {
display: inline-block;
width: 20%;
}
input {
position: absolute;
top:50%;
left:23%;
top: 50%;
left: 23%;
width: 77%;
transform: translateY(-50%);
}
}
.priceback {
width: 99%;
background: #FFFFFF;
height: 100rpx;
position:fixed;
bottom:0;
position: fixed;
bottom: 0;
padding-bottom: 20rpx;
display: flex;
justify-content: space-around;
.prices {
font-size: 48rpx;
color: #D43953;
line-height: 100rpx;
}
.xiugai {
width: 200rpx;
height: 70rpx;
@ -165,6 +190,7 @@
text-align: center;
color: #ffffff;
}
.queren {
width: 200rpx;
height: 70rpx;
@ -176,22 +202,26 @@
color: #ffffff;
}
}
.radio-content {
margin: 50rpx auto;
width: 70%;
text-align: center;
font-size: 28rpx;
position: relative;
.agreement {
position: absolute;
top:50%;
left:20%;
top: 50%;
left: 20%;
transform: translateY(-50%);
color: #878987;
}
}
.radio-right {
height: 100rpx;
width: 100rpx;
.radio {
display: inline-block;
width: 35rpx;
@ -199,21 +229,25 @@
border-radius: 70%;
border: 2rpx solid #178ffb;
position: absolute;
top:50%;
left:5%;
top: 50%;
left: 5%;
transform: translateY(-50%);
.radio-active {
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background-color: #178ffb;
margin-left: 26%;
margin-top: 22%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
// margin: 0 auto;
}
}
}
}
/* 耗材包 */
.Consumablespackage {
width: 94%;
@ -225,15 +259,14 @@
margin-top: 20rpx;
position: relative;
padding-bottom: 40rpx;
.detail {
width: 301rpx;
height: 31rpx;
font-size: 32rpx;
color: #666666;
line-height: 31rpx;
width: 100%;
line-height: 60rpx;
margin: 20rpx 0 0 40rpx;
}
}
/* 套餐 */
.Package {
width: 94%;
@ -243,18 +276,20 @@
font-size: 34rpx;
background: #FFFFFF;
border-radius: 20rpx;
margin-top:20rpx;
margin-top: 20rpx;
position: relative;
.detail {
line-height: 31rpx;
font-size: 32rpx;
color: #666666;
line-height: 31rpx;
position: absolute;
left:10%;
top:60%;
left: 10%;
top: 60%;
}
}
.message {
width: 94%;
background: white;
@ -263,4 +298,4 @@
text-align: center;
line-height: 96rpx;
}
}
}

View File

@ -14,9 +14,20 @@
<span>地址</span>
<span class='addition'>{{personInfo.address}}</span>
</view>
<view class="item" style="border: 0;">
<span></span>
<span class='addition'>请您选择希望护理员到达的时间区间</span>
</view>
<view class="selecttime" @tap='yearshow=true'>
<span>日期</span>
<text v-if="yeartime==''" class='addition'>请选择日期
<image src="../../static/jiantou.png"></image>
</text>
<text v-else class='addition'>{{yeartime}}</text>
</view>
<view class="selecttime" @tap='timeshow=true'>
<span>时间</span>
<text v-if="usertime==''" class='addition'>请选择时间
<text v-if="usertime==''" class='addition'>请选择时间区间
<image src="../../static/jiantou.png"></image>
</text>
<text v-else class='addition'>{{usertime}}</text>
@ -34,15 +45,21 @@
</view>
<view class="Consumablespackage">耗材包详情
<text class="money">{{orderlist.consumableTotalPrice}}</text>
<view class="detail" v-for="(item,index) in orderlist.itemConsumableList">
·<span style='padding-left: 10rpx;'>{{item.consumableDetail}}</span>
<view class="detail">
<u-checkbox-group @change="checkboxGroupChange" wrap='true'>
<u-checkbox @change="checkboxChange" v-model="item.radio"
v-for="(item, index) in orderlist.itemConsumableList" :key="index"
:name="item.consumableDetail">
{{item.consumableDetail}}
</u-checkbox>
</u-checkbox-group>
</view>
</view>
<view class="remarks">
<span>备注</span>
<input placeholder="">
</view>
<view class="radio-content" >
<view class="radio-content">
<view class="radio-right" @tap="changeRadio">
<view class="radio" :class="radio == 2 ? 'radio-default':''">
<view :class="radio == 2 ? 'radio-active':''"></view>
@ -57,7 +74,9 @@
<view class="queren" @tap='updata'>确认预约</view>
</view>
<u-toast ref="uToast" />
<upicker v-model="timeshow" mode="time" start-year='2022' :params="timeparams" @confirm='timeconfirm'></upicker>
<u-picker v-model="yearshow" mode="time" start-year='2022' :params="yearparams" @confirm='yeartimeconfirm'>
</u-picker>
<upicker v-model="timeshow" mode="time" :params="timeparams" @confirm='timeconfirm'></upicker>
<!-- // -->
<u-mask :show="maskshow" class='mask' @click='maskshow=false'>
<view class="Agreement">
@ -94,15 +113,26 @@
data() {
return {
timeparams: { //picker
year: true,
month: true,
day: true,
year: false,
month: false,
day: false,
hour: true,
endhour: true,
minute: true,
endminute: true,
},
timeshow: false, //
usertime: '', //
yearparams: { //picker
year: true,
month: true,
day: true,
hour: false,
minute: false,
second: false
},
yearshow: false, //
yeartime: '', //
maskshow: false, //
radio: 1, //
personInfo: [], //
@ -178,9 +208,13 @@
},
//
getPatientInfo(stationId, stationItemId, stationItemPriceId) {
let that = this;
getAppStationItemInfo(stationId, stationItemId, stationItemPriceId).then(res => {
if (res.code == 200) {
if (res.data.itemConsumableList) {
res.data.itemConsumableList.forEach(e => {
e.radio = true
})
}
this.orderlist = res.data
}
})
@ -196,7 +230,12 @@
this.orderlist.orderChannel = "MOBILE_APP"
this.orderlist.buySource = "NURSE_STATION"
this.orderlist.orderCount = 1;
this.orderlist.orderConsumableList = this.orderlist.itemConsumableList
this.orderlist.orderConsumableList = []
this.orderlist.itemConsumableList.forEach(e => {
if (e.radio) {
this.orderlist.orderConsumableList.push(e)
}
})
// submitAppointment(this.orderlist).then(res => {
// if (res.code == 500) {
// this.$refs.uToast.show({
@ -221,14 +260,21 @@
this.radio = 1;
}
},
// checkboxcheckbox-group
checkboxGroupChange(e) {},
//
checkedAll() {},
//
timeconfirm(e) {
this.orderlist.serviceDate = e.year + '-' + e.month + '-' + e.day
this.orderlist.serviceStartTime = e.hour + ":" + e.minute
this.usertime = e.hour + ":" + e.minute + '--' + e.endhour + ":" + e.endminute
this.orderlist.serviceEndTime = e.endhour + ":" + e.endminute
this.usertime = e.year + '年' + e.month + '月' + e.day + '日' + e.hour + ":" + e.minute + '至' + e.endhour +
":" + e.endminute
console.log(this.orderlist, this.usertime)
this.orderlist.patientId = this.personInfo.patientId
this.orderlist.serviceAddress = this.personInfo.address
},
yeartimeconfirm(e) {
this.orderlist.serviceDate = e.year + '-' + e.month + '-' + e.day
this.yeartime = e.year + '年' + e.month + '月' + e.day + "日"
},
goaddress() {
uni.navigateTo({

View File

@ -119,7 +119,6 @@
methods: {
buy() {
// addStationGoodsOrder(this.updata).then(res => {
// console.log(res)
// if (res.code == 500) {
// this.$refs.uToast.show({
// title: res.msg,

View File

@ -0,0 +1,72 @@
<template>
<view class="app">
<view class="concent">
<view class="background">
<image src="/static/logo.png" mode=""></image>
<view>
<view class="detailed">
<view>
专病管理简介慢性病已成为我国老年人健康的最大威胁建立标准化的慢病专病并发症防治中心建立规范化的导诊流程建立慢病专病综合电子档案对于慢病及并发症的早期发现早期治疗延缓并发症的发生发展降低患者政府经济负担具有重要现实意义组建金字塔式医生服务团队由省级知名专家全程介入慢病管理远程会诊绿色就医通道基层全科医生护师落实专家指导意见和上门随访服务辅以营养师和运动处方师根据筛查监测数据提供营养膳食和专属运动处方运动建议打造一人一病一处方的管理模式
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
};
}
}
</script>
<style lang="scss">
.app {
padding-top: 10rpx;
.concent {
width: 701rpx;
height: 850rpx;
background: #4C7BC9;
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 20rpx;
margin: 5% auto 20px;
.background {
position: relative;
width: 657rpx;
height: 800rpx;
background: #FFFFFF;
border-radius: 25rpx;
background-color: white;
margin: 0 auto;
top: 50%;
transform: translateY(-50%);
image {
width: 178rpx;
height: 84rpx;
background: #FFFFFF;
border-radius: 25px;
margin-left: 68%;
margin-top: 5%;
}
}
}
}
.detailed {
width: 657rpx;
padding: 0 42rpx;
line-height: 56rpx;
}
.detailed view {
text-indent: 2em;
}
</style>

View File

@ -13,19 +13,19 @@
就医
</view>
</view>
<view class="elderly item" @tap='gono'>
<view class="elderly item" @tap='goGeriatricdisease'>
<image src="../../static/ylfw.png" mode=""></image>
<view class="title" style="font-size: 40rpx;">
国家老年病中心
</view>
</view>
<view class="item Bodyguard" @tap='gono'>
<view class="item Bodyguard" @tap='goBodysatelliteintegration'>
<image src="../../static/pb.png" mode=""></image>
<view class="title">
体卫融合
</view>
</view>
<view class="item knowledge" @tap='gono'>
<view class="item knowledge" @tap='godiseasemanagement'>
<image src="../../static/zs.png" mode=""></image>
<view class="title">
专病管理
@ -48,12 +48,28 @@
return {};
},
methods: {
//
gono() {
this.$refs.uToast.show({
title: '暂未开放',
type: 'error',
duration: '1000'
//
godiseasemanagement() {
uni.navigateTo({
url: '/pages/diseasemanagement/diseasemanagement'
})
},
//
goGeriatricdisease() {
uni.navigateTo({
url: '/pages/Geriatricdisease/Geriatricdisease'
})
},
//
goBodysatelliteintegration() {
uni.navigateTo({
url: "/pages/Bodysatelliteintegration/Bodysatelliteintegration"
})
},
//
gomedicine() {
uni.navigateTo({
url: '/pages/medicine/medicine'
})
},
//
@ -68,17 +84,6 @@
url: '/pages/shopping/shopping'
})
},
//
gomedicine() {
this.$refs.uToast.show({
title: '暂未开放',
type: 'error',
duration: '1000'
})
// uni.navigateTo({
// url: '/pages/medicine/medicine'
// })
},
}
}
</script>

View File

@ -1,6 +1,104 @@
.app {
padding:0;
height:100vh;
.btn{
width:28%;
float: right;
background-color: #2979ff;
height: 80rpx;
line-height: 80rpx;
border-radius: 20rpx;
color: #FFFFFF;
text-align: center;
font-size: 38rpx;
margin-right: 30rpx;
}
.Agreement{
width: 100%;
background-color: #F4F5F7;
text-align: center;
height: 1000rpx;
position: absolute;
top:5%;
font-size: 30rpx;
.title{
height: 100rpx;
line-height: 100rpx;
border-bottom: 1px solid #eeeeee;
font-size: 34rpx;
margin: 0px auto;
width: 100%;
text-align: center;
}
.scroll-Y{
height:830rpx ;
overflow-y:scroll;
text-align: left;
text-indent: 2em;
}
.cancel {
height:70rpx;
line-height: 70rpx;
font-size: 32rpx;
background-color: #F4F5F7;
position: absolute;
border-top: 1rpx solid #000000;
bottom:0;
right:0;
width: 50%;
color: #000000;
}
.determine {
height:70rpx;
line-height: 70rpx;
font-size: 32rpx;
width: 50%;
color: #F4F5F7;
background: #4C7BC9;
position: absolute;
bottom:0;
left:0;
}
}
.radio-content {
margin: 50rpx auto;
width: 70%;
text-align: center;
font-size: 28rpx;
position: relative;
.agreement {
position: absolute;
top:50%;
left:20%;
transform: translateY(-50%);
color: #878987;
}
.radio-right {
height: 100rpx;
.radio {
display: inline-block;
width: 35rpx;
height: 35rpx;
border-radius: 70%;
border: 2rpx solid #178ffb;
position: absolute;
top:50%;
left:5%;
transform: translateY(-50%);
.radio-active {
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background-color: #178ffb;
position: absolute;
top:50%;
left:50%;
transform: translate(-50%,-50%);
}
}
}
}
.service {
width: 90%;
margin: 0 auto;

View File

@ -50,9 +50,37 @@
</view>
</view>
</view>
<u-button type="primary" style='width:30%;float: right;margin-top: 50rpx;' @tap='informationinfo'>提交
</u-button>
</view>
<view class="radio-content">
<view class="radio-right" @tap="changeRadio">
<view class="radio" :class="radio == 2 ? 'radio-default':''">
<view :class="radio == 2 ? 'radio-active':''"></view>
</view>
</view>
<view class="agreement">我已阅读并同意<text @tap='maskshow=true'
style="color: #000000;border-bottom: 1rpx solid #000000;">用户协议</text>
</view>
</view>
<view class="btn" @tap='informationinfo'>
提交
</view>
<!-- // -->
<u-mask :show="maskshow" class='mask' @click='maskshow=false'>
<view class="Agreement">
<view class="title">
用户协议与隐私政策
</view>
<scroll-view scroll-y="true" class="scroll-Y" style="">
<contenttext></contenttext>
</scroll-view>
<view class="cancel" @tap='maskshow=false'>
取消
</view>
<view class="determine" @tap='tapradio'>
确定并同意
</view>
</view>
</u-mask>
<u-toast ref="uToast" />
</view>
</template>
@ -63,15 +91,21 @@
getNurseType,
information
} from '@/api/information/index.js'
import contenttext from './text.vue'
export default {
components: {
contenttext
},
data() {
return {
radio: 1,
timer: null,
arealist: [], //list
areashow: false, //
getNurseTypelist: [], //
medicalcarelist: [], //
address: '', //
maskshow: false, //
chooseLocation: '',
query: { //
patientName: "",
@ -172,6 +206,17 @@
url: `/pages/disease/disease?diseaseInfoList=${JSON.stringify(this.query.diseaseInfoList)}`
})
},
changeRadio() {
if (this.radio == 1) {
this.radio = 2;
} else {
this.radio = 1;
}
},
tapradio() {
this.radio = 2;
this.maskshow = false;
},
},
onUnload() {
// nullgeLocation

384
pages/information/text.vue Normal file
View File

@ -0,0 +1,384 @@
<template>
<view class="">
泉医到家简称我们深知个人信息对您的重要性也感谢您对我们的信任
我们将通过本政策向您说明我们如何收集存储保护使用及对外提供您的信息并说明您享有的权利其中要点如下
<view class="">
1为了便于您了解您在使用我们的服务时我们需要收集的信息类型与用途我们将结合具体服务向您逐一说明
</view>
<view class="">
2为了向您提供服务所需我们会按照合法正当必要的原则收集您的信息
</view>
<view class="">
3如果为了向您提供服务而需要将您的信息共享至第三方我们将评估第三方收集信息的合法性正当性必要性我们将要求第三方对您的信息采取保护措施并且严格遵守相关法律法规与监管要求另外我们会按照法律法规及国家标准的要求以确认协议具体场景下的文案确认弹窗提示等形式征得您的同意或确认第三方已征得您的同意
</view>
<view class="">
4如果为了向您提供服务而需要从第三方获取您的信息我们将要求第三方说明信息来源并要求第三方保障其提供信息的合法性如果我们开展业务提供服务需进行的个人信息处理活动超出您原本向第三方提供个人信息的授权范围我们将征得您的明确同意
</view>
<view class="">
5 您可以通过本隐私政策介绍的方式访问和管理您的信息设置隐私功能或进行投诉举报
</view>
<view class="" style="padding-top: 20rpx;">
您可以根据以下索引阅读相应章节进一步了解本政策的具体约定
</view>
<view>我们如何收集和使用个人信息</view>
<view> 我们对Cookie或同类技术的使用</view>
<view> 我们如何存储个人信息</view>
<view> 我们如何共享转让公开披露个人信息</view>
<view> 我们如何保护个人信息的安全</view>
<view> 您的权利</view>
<view> 未成年人使用条款</view>
<view> 隐私政策的修订和通知</view>
<view> 适用范围</view>
<view> 第三方软件开发包SDK个人信息收集情况</view>
<view> 十一联系我们</view>
<view> 我们将按照法律规定保护您的个人信息及隐私安全我们制定本隐私政策并特别提示希望您在使用泉医到家及相关服务前仔细阅读并理解本隐私政策以便做出适当的选择</view>
<view class="" style="text-indent: 0em;padding: 20rpx 0;">
我们如何收集和使用个人信息
</view>
<view class="">
在您使用泉医到家及服务的过程中我们将根据合法正当必要的原则收集信息我们收集或您提供的信息将用于
</view>
<view class="">
1.保障产品的正常基础运行
</view>
<view> 2.实现各项功能和服务</view>
<view> 3.优化改善产品和服务</view>
<view> 4.保障产品服务以及用户使用安全</view>
<view> 5.遵循法律法规与国家标准的规定</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 我们直接收集与使用的个人信息</view>
<view> 我们会按照如下方式收集您在使用服务时主动提供的以及通过自动化手段收集您在使用功能或接受服务过程中产生的信息</view>
<view> 1.保障泉医到家和相关服务的正常运行</view>
<view>
当您使用泉医到家及相关服务时为了保障软件与服务的正常运行我们会收集您的硬件型号操作系统版本号国际移动设备识别码IMEI网络设备硬件地址MACIP地址软件版本号网络接入方式及类型操作日志电话状态等信息请您了解这些信息是我们提供服务和保障产品正常运行所必须收集的基本信息
</view>
<view> 2.注册认证登录泉医到家和相关服务</view>
<view>
1当您注册登录泉医到家及相关服务时您可以通过手机号创建账号我们将通过发送短信验证码来验证您的身份是否有效并且您可以完善相关的网络身份识别信息如头像昵称和密码收集这些信息是为了帮助您完成注册您还可以根据自身需求选择填写性别生日等信息完善您的个人信息
</view>
<view>
2您也可以使用第三方账号如微信登录进入泉医到家您此时将授权我们获取您在第三方平台注册的公开信息头像昵称等并在您同意本隐私政策后将您的第三方账号与您的泉医到家账号绑定使您可以通过第三方账号直接登录并使用本产品和相关服务
</view>
<view> 3.获得您的明示同意后的地理位置信息</view>
<view> 在本地频道中我们会基于IP地址对应的城市济南向您展示推荐您所在地区的本地相关信息</view>
<view> 拒绝提供地理位置信息我们将不会基于地理位置向您推送信息但不会影响泉医到家其他功能与服务的正常使用</view>
<view> 4.为您提供信息发布功能或服务</view>
<view> 您发布内容评论提问或回答时我们将收集您发布的信息并展示您的昵称头像发布内容等</view>
<view> 您使用上传图片发布音视频功能时我们会请求您授权相机照片麦克风等敏感权限您如果拒绝授权提供将无法使用此功能但不影响您正常使用泉医到家的其他功能</view>
<view> 您发布信息并选择显示位置时我们会请求您授权地理位置权限并收集与本服务相关的位置信息这些技术包括 IP 地址GPS 以及能够提供相关信息的
WI-FI接入点蓝牙和基站等传感器技术您如果拒绝授权提供将无法使用此功能但不影响您正常使用泉医到家的其他功能</view>
<view>
我们会将缓存写入外置存储器为此需要您授权外置存储器读写权限
</view>
<view>
5.为您提供搜索服务
</view>
<view>
您使用泉医到家的搜索服务时我们会收集您的搜索关键字信息日志记录等为了提供高效的搜索服务部分前述信息会暂时存储在您的本地存储设备之中并可向您展示搜索结果内容搜索历史记录
</view>
<view>
6.保障产品服务及用户使用安全
</view>
<view>
为帮助我们更好地了解泉医到家及相关服务的运行情况以便确保运行与提供服务的安全我们可能记录网络日志信息以及使用软件及相关服务的频率崩溃数据总体安装使用情况性能数据等信息
</view>
<view>
7.为您提供意见反馈服务
</view>
<view>
为了确认您的身份信息及在处理完您的意见反馈后便于向您回复需要您提交意见反馈时填写您的电话或QQ或邮箱等此信息仅用于确认身份及回复您使用
</view>
<view style="text-indent: 0em;padding: 10rpx 0;">
我们可能从第三方获得的您的个人信息
</view>
<view>
1.当您主动使用第三方账号登录泉医到家我们会收集第三方账号的昵称头像等信息
</view>
<view>
2.用户因使用我们的产品或者服务而被我们收集的信息例如其他用户发布的信息中可能含有您的部分信息在评论留言发布图文音视频中涉及到与您相关的信息
</view>
<view style="text-indent: 0em;padding: 10rpx 0;">
收集使用个人信息目的变更的处理
</view>
<view>
请您了解随着我们业务的发展可能会对泉医到家的功能和提供的服务有所调整变化原则上当新功能或服务与发布信息互动交流搜索查询注册认证等场景相关时收集与使用的个人信息将与原处理目的具有直接或合理关联在与原处理目的无直接或合理关联的场景下我们收集使用您的个人信息会再次进行告知并征得您的同意
</view>
<view style="text-indent: 0em;padding: 10rpx 0;">
依法豁免征得同意收集和使用的个人信息
</view>
<view> 请您理解在下列情形中根据法律法规及相关国家标准我们收集和使用您的个人信息无需征得您的授权同意</view>
<view> 1与国家安全国防安全直接相关的</view>
<view> 2与公共安全公共卫生重大公共利益直接相关的</view>
<view> 3与犯罪侦查起诉审判和判决执行等直接相关的</view>
<view> 4出于维护个人信息主体或其他个人的生命财产等重大合法权益但又很难得到本人同意的</view>
<view> 5所收集的您的个人信息是您自行向社会公众公开的</view>
<view> 6从合法公开披露的信息中收集的您的个人信息的如合法的新闻报道政府信息公开等渠道</view>
<view> 7根据您的要求签订或履行合同所必需的</view>
<view> 8用于维护泉医到家软件及相关服务的安全稳定运行所必需的例如发现处置泉医到家软件及相关服务的故障</view>
<view> 9学术研究机构基于公共利益开展统计或学术研究所必要且对外提供学术研究或描述的结果时对结果中所包含的个人信息进行去标识化处理的</view>
<view> 10法律法规规定的及与履行行业主管部门有关规定的义务相关的其他情形</view>
<view>
特别提示您注意如信息无法单独或结合其他信息识别到您的个人身份其不属于法律意义上您的个人信息当您的信息可以单独或结合其他信息识别到您的个人身份时或我们将无法与任何特定个人信息建立联系的数据与其他您的个人信息结合使用时这些信息在结合使用期间将作为您的个人信息按照本隐私政策处理与保护
</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 其他</view>
<view>
请您理解我们向您提供的服务是不断更新和发展的如您选择使用了前述说明当中未涵盖的其他服务基于该服务我们需要收集您的信息的我们会通过页面提示交互流程协议约定的方式另行向您说明信息收集的范围与目的并征得您的同意我们会按照本政策以及相应的用户协议约定使用存储对外提供及保护您的信息如您选择不提供前述信息您可能无法使用某项或某部分服务但不影响您使用我们提供的其他服务
</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 我们对Cookie或同类技术的使用</view>
<view> 为使您获得更轻松的访问体验您访问泉医到家提供的服务时我们可能会通过小型数据文件识别您的身份帮您省去重复输入登录信息的步骤或者帮助您判断您的账户是否安全这些数据文件可能是CookieFlash
Cookie或您的浏览器或关联应用程序提供的其他本地存储统称Cookie请您理解我们的某些服务只能通过使用Cookie才可得到实现如果您的浏览器或浏览器附加服务允许您可以修改对Cookie的接受程度或者拒绝泉医到家的Cookie但这一举动在某些情况下可能会影响您安全访问泉医到家和使用泉医到家提供的服务我们使用
Cookie或同类技术主要为了实现以下功能或服务</view>
<view> 保障产品与服务的安全高效运转</view>
<view> 我们可能会设置认证与保障安全性的cookie或匿名标识符使我们确认您是否安全登录服务或者是否遇到盗用欺诈等不法行为这些技术还会帮助我们改进服务效率提升登录和响应速度</view>
<view> 帮助您获得更轻松的访问体验</view>
<view> 使用此类技术可以帮助您省去重复您填写个人信息输入搜索内容的步骤和流程例如记录搜索历史</view>
<view> 为您推荐展示推送您可能感兴趣的内容或账号</view>
<view> 我们可能会利用Cookie或同类技术了解您的偏好和使用习惯进行咨询或数据分析以改善产品服务及用户体验并优化您对广告的选择</view>
<view> 我们承诺我们不会将Cookie用于本隐私政策所述目的之外的任何其他用途</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 我们如何存储个人信息</view>
<view> 信息存储的地点</view>
<view> 我们依照法律法规的规定将在境内运营过程中收集和产生的您的个人信息存储于中华人民共和国境内</view>
<view> 存储期限</view>
<view>
我们仅在为提供泉医到家及服务之目的所必需的期间内保留您的个人信息例如您发布的信息评论点赞等信息在您未撤回删除或未注销账号期间我们会保留相关信息超出必要期限后我们将对您的个人信息进行删除或匿名化处理但法律法规另有规定的除外
</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 我们如何共享转让公开披露个人信息</view>
<view> 个人信息的共享转让</view>
<view> 我们不会向第三方共享转让您的个人信息除非经过您本人事先授权同意或者共享转让的个人信息是去标识化处理后的信息且共享第三方无法重新识别此类信息的自然人主体</view>
<view> 1.我们可能会共享的个人信息</view>
<view> 1.1为实现特定功能而与业务合作伙伴共享</view>
<view>
当软件服务提供商智能设备提供商或系统服务提供商与我们联合为您提供服务时例如您需要使用地理位置功能时为实现这一功能我们可能会收集您的位置信息及相关设备信息例如硬件型号操作系统版本号国际移动设备身份识别码IMEI网络设备硬件地址MAC经过去标识化后并提供给前述提供商
</view>
<view> 1.2帮助您参加营销推广活动</view>
<view> 当您选择参加我们举办的有关营销活动时根据活动需要您提供姓名通信地址联系方式等信息经过您的明示同意我们会将上述信息与第三方共享以便我们能委托第三方及时向您提供奖品</view>
<view> 2.对共享个人信息第三方主体的谨慎评估及责任约束</view>
<view>
2.1如果为了向您提供服务而需要将您的信息共享至第三方我们将评估第三方收集信息的合法性正当性必要性我们将要求第三方对您的信息采取保护措施并且严格遵守相关法律法规与监管要求另外我们会按照法律法规及国家标准的要求以确认协议具体场景下的文案确认弹窗提示等形式征得您的同意或确认第三方已征得您的同意
</view>
<view> 2.2对我们与之共享您个人信息的第三方该些第三方会与我们签订保密协议同时我们会对其数据安全能力与环境进行评估并要求第三方以不低于本隐私政策所要求的保密和安全措施来保护信息</view>
<view> 个人信息的公开披露</view>
<view> 我们不会公开披露您的信息除非遵循国家法律法规规定或者获得您的同意我们公开披露您的个人信息会采用符合行业内标准的安全保护措施</view>
<view> 依法豁免征得同意共享转让公开披露的个人信息</view>
<view> 请您理解在下列情形中根据法律法规及国家标准我们共享转让公开披露您的个人信息无需征得您的授权同意</view>
<view> 1.与国家安全国防安全直接相关的</view>
<view> 2.与公共安全公共卫生重大公共利益直接相关的</view>
<view> 3.与犯罪侦查起诉审判和判决执行等直接相关的</view>
<view> 4.出于维护您或其他个人的生命财产等重大合法权益但又很难得到本人同意的</view>
<view> 5.您自行向社会公众公开的个人信息</view>
<view> 6.从合法公开披露的信息中收集个人信息的如合法的新闻报道政府信息公开等渠道</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 我们如何保护个人信息安全</view>
<view> 我们非常重视您个人信息的安全将努力采取合理的安全措施包括技术方面和管理方面来保护您的个人信息防止您提供的个人信息被不当使用或未经授权的情况下被访问公开披露使用修改损坏丢失或泄漏
</view>
<view> 我们会使用加密技术匿名化处理等合理可行的手段保护您的个人信息并使用安全保护机制防止您的个人信息遭到恶意攻击</view>
<view> 我们会建立专门的安全部门安全管理制度数据安全流程保障您的个人信息安全我们采取严格的数据使用和访问制度确保只有授权人员才可访问您的个人 信息并适时对数据和技术进行安全审计</view>
<view>
尽管已经采取了上述合理有效措施并已经遵守了相关法律规定要求的标准但请您理解由于技术的限制以及可能存在的各种恶意手段在互联网行业即便竭尽所能加强安全措施也不可能始终保证信息百分之百的安全我们将尽力确保您提供给我们的个人信息的安全性您知悉并理解您接入我们的服务所用的系统和通讯网络有可能因我们可控范围外的因素而出现问题因此我们强烈建议您采取积极措施保护个人信息的安全包括但不限于使用复杂密码定期修改密码不将自己的账号密码等个人信息透露给他人
</view>
<view>
我们会制定应急处理预案并在发生用户信息安全事件时立即启动应急预案努力阻止该等安全事件的影响和后果扩大一旦发生用户信息安全事件泄露丢失等我们将按照法律法规的要求及时向您告知安全事件的基本情况和可能的影响我们已经采取或将要采取的处置措施您可自主防范和降低风险的建议对您的补救措施等我们将及时将事件相关情况以推送通知邮件信函短信等形式告知您难以逐一告知时我们会采取合理有效的方式发布公告同时我们还将按照相关监管部门要求上报用户信息安全事件的处置情况
</view>
<view>
我们谨此特别提醒您本隐私政策提供的个人信息保护措施仅适用于泉医到家及相关服务一旦您离开泉医到家及相关服务浏览或使用其他网站服务及内容资源我们即没有能力及义务保护您在泉医到家及相关服务之外的软件网站提交的任何个人信息无论您登录浏览或使用上述软件网站是否基于泉医到家的链接或引导
</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 您的权利</view>
<view> 我们非常重视您对个人信息的管理并尽全力保护您对于您个人信息的查询访问修改删除撤回同意授权在设置页面注销账号投诉举报以及设置隐私功能等权利以使您有能力保障您的隐私和安全</view>
<view> 访问删除更正您的个人信息</view>
<view> 您可以通过以下方式管理您的信息</view>
<view> 1. 访问个人账号信息</view>
<view> 您可以查询访问您的头像用户名简介性别生日地区位置等基本信息身份证个人信息除外您可以在泉医到家的编辑资料中进行查询访问</view>
<view> 2. 查询访问更改删除您的收藏记录清理缓存</view>
<view> 2.1 点击我的点击我的收藏进入查询访问删除</view>
<view> 2.2 您可以通过点击我的设置点击清理缓存</view>
<view> 3. 注销账号</view>
<view> 点击我的点击设置点击账号注销同意账户注销协议并点击确定按钮如需人工处理我们将在核实您的身份之日起15日之内予以处理并回复</view>
<view>
特别提示您注意出于安全性和身份识别如号码申诉服务的考虑您可能无法自主修改注册时提交的某些初始注册信息如您确有需要修改该类注册信息请根据本隐私政策载明的联系方式联系我们我们核查并验证您的用户身份后会在15个工作日内处理并给予回复
</view>
<view> 改变您授权同意范围或撤销授权</view>
<view> 1. 改变或撤回敏感信息权限</view>
<view> 您可以通过更改系统设置以及在设备本身操作系统中关闭地理位置通讯录摄像头麦克风等权限改变同意范围或撤回您的授权</view>
<view> 2. 拒绝接受推送及营销信息</view>
<view> 您可以通过设置关闭推送通知拒绝消息的推送</view>
<view> 请您理解特定的业务功能和服务将需要您的信息才能得以完成当您撤回同意或授权后我们无法继续为您提供撤回同意或授权所对应的功能和服务也不再处理您相应的个人信息</view>
<view> 投诉举报</view>
<view>
您可按照我们公示的制度进行投诉或举报如果您认为您的个人信息权利可能受到侵害或者发现侵害个人信息权利的线索例如认为我们收集您的个人信息违反法律规定或者双方约定您可以通过点击我的进入举报反馈界面与我们联系我们核查后会在15个工作日内反馈您的投诉与举报
</view>
<view> 访问隐私政策</view>
<view> 您可以在我的设置中查看本隐私政策的全部内容</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 未成年人使用条款</view>
<view> 若您是未满18周岁的未成年人且无完全民事行为能力在使用泉医到家及相关服务前应在您的父母或其他监护人监护指导下共同阅读并在征得您父母或者监护人同意的前提下使用我们的服务或向我们提供信息
</view>
<view>
我们根据国家相关法律法规的规定保护未成年人的个人信息只会在法律允许父母或其他监护人明确同意或保护未成年人所必要的情况下收集使用储存共享转让或披露未成年人的个人信息如果我们发现在违背了法律有关规定或未事先获得可证实的父母同意的情况下收集了未成年人的个人信息则会设法尽快删除相关信息
</view>
<view> 若您是未成年人的监护人当您对您所监护的未成年人的个人信息有相关疑问时请通过本隐私政策公示的联系方式与我们联系</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 隐私政策的修订和通知</view>
<view>
为了给您提供更好的服务泉医到家及相关服务将不时更新与变化我们会适时对本隐私政策进行修订这些修订构成本隐私政策的一部分并具有等同于本隐私政策的效力未经您明确同意我们不会削减您依据当前生效的本隐私政策所应享受的权利
</view>
<view> 本隐私政策更新后我们会在泉医到家发出更新版本以便您及时了解本隐私政策的最新版本</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 适用范围</view>
<view> 本隐私政策仅适用于泉医到家客户端不适用于有单独的隐私政策且未纳入本隐私政策的第三方产品或服务</view>
<view> 本隐私权政策不适用于</view>
<view> 1. 其他第三方产品或服务可能包括在推荐中向您显示的产品或网站和广告内容或者泉医到家服务中链接到的其他产品或网站</view>
<view> 2. 泉医到家服务进行广告宣传的其他第三方</view>
<view> 第三方主体可能会通过泉医到家向您提供服务当您进入第三方主体运营的服务界面时请注意相关服务由第三方主体向您提供涉及到第三方主体向您收集信息的建议您仔细查看第三方主体的隐私政策或协议约定</view>
<view> 请您了解本隐私政策中所述的泉医到家及相关服务可能会根据您所使用的手机型号系统版本软件应用程序版本移动客户端等因素而有所不同最终的产品和服务以您所使用的泉医到家软件及相关服务为准</view>
<view style="text-indent: 0em;padding: 10rpx 0;"> 第三方软件开发包SDK个人信息收集情况</view>
<view>
1.地理位置服务当您使用地理位置相关服务时我们会将您的WLAN状态信息定位信息终端设备唯一标识符与位置服务提供商百度地图进行共享以便可以返回您的位置信息并最终向您提供定位服务我们会使用各种技术进行定位包括IP地址GNSS以及能够提供相关信息的其他传感器如可能会为百度提供附近设备WLAN接入点和基站的信息这些个人信息的收集仅会在已获得您的终端设备系统权限允许的前提下进行若您拒绝提供仅会影响地理位置服务功能但不影响其他功能的正常使用
</view>
<view> 以下将详细列出我们的基本服务功能及为实现该功能所需收集的个人信息类型以及与收集个人信息相关的权限</view>
<uni-table border stripe emptyText="">
<uni-tr>
<uni-th>权限类型</uni-th>
<uni-th>功能及服务</uni-th>
<uni-th>权限授权方式</uni-th>
</uni-tr>
<uni-tr>
<uni-td>访问WI-FI状态</uni-td>
<uni-td>获取连接WIFI信息返回至百度定位服务端作为辅助定位依据再返回给开发者更精准的位置信息 </uni-td>
<uni-td> 由设备系统开发方及开发者应用决定当最终用户同意向开发者应用授予该权限时开启</uni-td>
</uni-tr>
<uni-tr>
<uni-td>获取位置</uni-td>
<uni-td>
获取的位置信息可能包括GNSS信息WIFI地址及信号强度信息基站ID数据信息传感器信息手机信号强度信息以便无需最终用户手动输入自身地理坐标就可以给开发者返回最终用户的位置信息
</uni-td>
<uni-td>由设备系统开发方及开发者应用决定当最终用户同意向开发者应用授予该权限时开启</uni-td>
</uni-tr>
</uni-table>
<view style="text-indent: 0em">更多内容请参考百度地图隐私政策链接http://privacy.baidu.com/detail?id=288</view>
<view>
2.分享服务当您使用客户端分享服务时我们会向提供该服务的上海游昆信息技术有限公司以下称MobTech共享您的系统运营网络状态MAC地址国际移动设备识别码IMEI匿名设备标识符(OAID)国际移动用户识别码IMSI应用列表基站信息社交平台OpenID地理位置以确保您的分享功能能够正常使用以上信息将在您授权后收集关于MobTech收集个人信息的保护规则及退出机制等更多内容详见MobTech官网www.mob.com
隐私政策条款https://www.mob.com/about/policy</view>
<uni-table border stripe emptyText="">
<uni-tr>
<uni-th>SDK名称</uni-th>
<uni-th>场景描述</uni-th>
<uni-th>收集个人信息的类型</uni-th>
</uni-tr>
<uni-tr>
<uni-td>MobTechShareSDK</uni-td>
<uni-td>社交分享第三方登录</uni-td>
<uni-td>
系统运营信息网络状态信息MAC地址国际移动设备识别码IMEI匿名设备标识符(OAID)国际移动用户识别码IMSI应用列表信息基站信息社交平台OpenID地理位置
</uni-td>
</uni-tr>
</uni-table>
<view>
3.推送服务当您使用客户端消息推送接收服务时我们会收集您的设备信息网络信息位置信息与推送服务提供商极光进行共享以便您能够正常收到本软件推送的消息此外我们将收集您的推送打开情况等统计数据与推送服务提供商极光共享以协助本软件运营人员分析服务使用情况提供更好的消息推送服务极光收集使用实现服务所必须的个人信息将通过加密通道将消息和通知推送给您
</view>
<view>极光SDK绝不收集或者要求您提供包括但不限于个人种族政治倾向宗教信仰个人基因数据或生物特征数据性取向等个人敏感信息当我们要将收集而来的个人信息用于本政策未载明的其它用途时会事先征求您的同意
</view>
<view>如您拒绝开启消息推送服务以上信息将不会共享给第三方且仅影响消息推送服务功能不影响其他功能的正常使用</view>
<view> 极光SDK收集信息及目的如下</view>
<uni-table border stripe emptyText="">
<uni-tr>
<uni-th>权限类型</uni-th>
<uni-th>内容</uni-th>
<uni-th>目的</uni-th>
</uni-tr>
<uni-tr>
<uni-td>设备信息</uni-td>
<uni-td>设备标识符IMEIIDFAAndroid
IDMACOAID等相关信息应用信息或运行中的进程信息应用崩溃信息通知开关状态软件列表等相关信息设备参数及系统信息设备类型设备型号操作系统及硬件相关信息
</uni-td>
<uni-td>
用于识别唯一用户保证消息推送的精准送达优化推送通道资源我们会根据设备上不同APP的活跃情况整合消息推送的通道资源为开发者提高消息送达率为开发者提供智能标签以及展示业务统计信息的服务
</uni-td>
</uni-tr>
<uni-tr>
<uni-td>网络信息</uni-td>
<uni-td>
</uni-td>
<uni-td>
优化SDK与极光服务器的网络连接请求保证服务的稳定性和连续性</uni-td>
</uni-tr>
<uni-tr>
<uni-td>位置信息</uni-td>
<uni-td></uni-td>
<uni-td>
实现区域推送功能 </uni-td>
</uni-tr>
</uni-table>
<view> 提请您注意并知悉极光 SDK 为实现上述业务功能收集您终端用户设备信 网络信息/位置信息的前提是终端用户授权同意开启 SD
卡权限网络访问权限设备信息权限/位置权限 如果您的终端用户不想被收集上述信息可以通过关闭读写 SD 卡权限 络访问权限设备信息权限/位置权限实现</view>
<view style="text-indent: 0em"> 更多内容请参考极光隐私政策链接https://www.jiguang.cn/license/privacy</view>
<view>4.分析统计 : 为分析产品与服务的使用情况提升用户使用的体验我们会与移动应用统计服务商友盟统计共享产品使用情况打开闪退崩溃的统计性数据以及硬件
型号操作系统版本号网络设备硬件地址软件版本号网络信息启动来源 使用时长地理位置访问路经等统计性数据这些数据难以与其他信息结合识 别您的个人身份将通过加密技术传输我们不会在您同意隐私协议并同意获取
相应数据前分享给相应 SDK</view>
<view> 各项业务功能对系统隐私权限的调用将在经过您的授权后开启您可 以随时在系统中取消授权取消授权会导致您无法使用相关业务功能 但不会导致最终用户无法使用其他业务功能的使用</view>
<view> +SDK 需要收集您的唯一设备识别码 IMEI/android ID/IDFA/OPENUDID/GUIDSIM IMSI
信息您安装的应用信息或运行中的进程信息无法通过唯一设备识别码标识设备的特殊情况下如您使用平板设备或电视盒子时 集设备 Mac 地址作为用户唯一标识以提供统计分析服务并获取您的 位置信息及 IP
地址校准用户地域分布数据提供基础反作弊能力</view>
<view style="text-indent: 0;">具体获取权限及其用途列表如下</view>
<view class="" style="width: 100%;">
<uni-table border stripe emptyText="">
<uni-tr>
<uni-th>权限</uni-th>
<uni-th>用途</uni-th>
</uni-tr>
<uni-tr>
<uni-td> ACCESS_NETWORK_STATE</uni-td>
<uni-td>检测联网方式在网络异常状态下避免数据发送节省流量和电量</uni-td>
</uni-tr>
<uni-tr>
<uni-td>READ_PHONE_STATE</uni-td>
<uni-td>获取用户设备的 IMEI通过 IMEI 对用户进行唯一标识以便提供统计分析服务</uni-td>
</uni-tr>
<uni-tr>
<uni-td>ACCESS_WIFI_STATE </uni-td>
<uni-td> 获取 WIFI mac 地址在平板设备或电视盒子上无法通过 IMEI 标识设备我们会将 WIFI mac 地址作为用户的唯一标识以便正
常提供统计分析服务</uni-td>
</uni-tr>
<uni-tr>
<uni-td>INTERNET</uni-td>
<uni-td>
允许应用程序联网和发送统计数据的权限以便提供统计分析服务
</uni-td>
</uni-tr>
<uni-tr>
<uni-td>ACCESS_FINE_LOCATION可选) </uni-td>
<uni-td>
通过获取位置信息为开发者提供反作弊功能剔除作弊设备 同时校正用户的地域分布数据使报表数据更加准确
</uni-td>
</uni-tr>
<uni-tr>
<uni-td>ACCESS_COARSE_LOCATION可选</uni-td>
<uni-td>
通过获取位置信息为开发者提供反作弊功能剔除作弊设备 同时校正用户的地域分布数据使报表数据更加准确
</uni-td>
</uni-tr>
</uni-table>
</view>
<view> 友盟 SDK 安全能力通过</view>
<view> 公安部三级等保认证非银机构最高安全等级</view>
<view> ISO27001 信息安全管理体系认证</view>
<view> ISO27018 公有云个人信息保护体系认证</view>
<view> 更多内容请参考友盟隐私政策链接https://www.umeng.com/page/policy</view>
<view>
5.语音服务当您使用客户端语音搜索服务时我们会向提供该服务的科大讯飞股份有限公司以下称讯飞共享您的设备标识信息地理位置信息以确保您的语音功能能够正常使用以上信息将在您授权后收集关于讯飞收集个人信息的保护规则及退出机制等更多内容详见讯飞官网隐私政策页面https://www.xfyun.cn/doc/policy/privacy.html
</view>
<view style="text-indent: 0; padding: 20rpx 0;"> 十一联系我们</view>
<view> 1.如果您对个人信息保护问题有投诉建议疑问您可通过登录泉医到家客户端内的举报反馈页面与我们联系我们核查并验证您的用户身份后会在15个工作日内反馈您的投诉与举报 </view>
<view> 2.如对本隐私政策内容有任何疑问意见或建议您也可通过登录泉医到家客户端内的举报反馈页面与我们联系</view>
<view> 3.APP运营单位山东新医路信息科技有限公司地址山东省济南市槐荫区经十路22799号银座中心2号楼1608室 联系电话0558-69900398</view>
<view></view>
<view></view>
<view></view>
</view>
</template>
<script>
</script>
<style>
</style>

View File

@ -1,6 +1,6 @@
<template>
<view class="app">
<view class="cards">
<!-- <view class="cards">
<view class="item" style="background: #4C7BC9;" @tap='godoctorslist'>
<image src="../../static/yuyue.png" mode=""></image>
<view class="title" style="font-size: 42rpx;">
@ -13,6 +13,23 @@
查看结果
</view>
</view>
</view> -->
<view class="concent">
<view class="background">
<image src="/static/logo.png" mode=""></image>
<view>
<view class="detailed">
<view>
互联网+医疗健康高速发展的当下以远程诊疗大数据人工智能为代表的新技术应用越来越多的应用在医疗健康服务当中依托三甲专家团队赋能基层医疗打造的全闭环商业模式实现物联网化医生联合体布局提供数字化远程医疗解决方案提升基层医疗水平提高医疗效率降低看病成本
平台将全力打造智慧诊所为基层全科医生医提供物联网可穿戴式医疗设备基层医生负责操作收集医生集团的三甲专家远程出具诊断报告有效将三甲医院医生基层医生与患者连接从而更加方便快捷高效随时随地满足患者的长期医疗需求可以为基层医生解决技术缺陷设备不足等难题遇到病情紧急严重的还可以打开绿色就医通道进行转诊服务
</view>
</view>
</view>
</view>
</view>
</view>
</template>
@ -45,5 +62,46 @@
}
}
}
.concent {
width: 701rpx;
height: 100%;
background: #4C7BC9;
box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 20rpx;
margin: 5% auto 20px;
padding: 30rpx 0;
.background {
position: relative;
width: 657rpx;
height: 100%;
background: #FFFFFF;
border-radius: 25rpx;
background-color: white;
margin: 0 auto;
image {
width: 178rpx;
height: 84rpx;
background: #FFFFFF;
border-radius: 25px;
margin-left: 68%;
margin-top: 5%;
}
}
}
.detailed {
width: 657rpx;
height: 100%;
padding: 0 42rpx 20rpx;
line-height: 56rpx;
}
.detailed view {
text-indent: 2em;
}
}
</style>

View File

@ -3,6 +3,92 @@
background-color: #F4F5F7;
width: 100%;
color: #000000;
.Agreement{
width: 100%;
background-color: #F4F5F7;
text-align: center;
height: 1000rpx;
position: absolute;
top:5%;
font-size: 30rpx;
.title{
height: 100rpx;
line-height: 100rpx;
border-bottom: 1px solid #eeeeee;
font-size: 34rpx;
margin: 0px auto;
width: 100%;
text-align: center;
}
.scroll-Y{
height:830rpx ;
overflow-y:scroll;
text-align: left;
text-indent: 2em;
}
.cancel {
height:70rpx;
line-height: 70rpx;
font-size: 32rpx;
background-color: #F4F5F7;
position: absolute;
border-top: 1rpx solid #000000;
bottom:0;
right:0;
width: 50%;
color: #000000;
}
.determine {
height:70rpx;
line-height: 70rpx;
font-size: 32rpx;
width: 50%;
color: #F4F5F7;
background: #4C7BC9;
position: absolute;
bottom:0;
left:0;
}
}
.radio-content {
margin: 50rpx auto;
width: 70%;
text-align: center;
font-size: 28rpx;
position: relative;
.agreement {
position: absolute;
top:50%;
left:20%;
transform: translateY(-50%);
color: #878987;
}
.radio-right {
height: 100rpx;
.radio {
display: inline-block;
width: 35rpx;
height: 35rpx;
border-radius: 70%;
border: 2rpx solid #178ffb;
position: absolute;
top:50%;
left:5%;
transform: translateY(-50%);
.radio-active {
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background-color: #178ffb;
position: absolute;
top:50%;
left:50%;
transform: translate(-50%,-50%);
}
}
}
}
.finish{
width: 25%;
height: 68rpx;

View File

@ -8,7 +8,8 @@
</view>
<view class="item">
<span>姓名:</span>
<u-input :clearable='false' v-model="appPersonallist.patientName" placeholder="请输入" type="text" maxlength='5' />
<u-input :clearable='false' v-model="appPersonallist.patientName" placeholder="请输入" type="text"
maxlength='5' />
</view>
<!-- <view class="item">
<span>电话:</span>
@ -16,7 +17,8 @@
</view> -->
<view class="item">
<span>身份证号:</span>
<u-input :clearable='false' v-model="appPersonallist.cardNo" placeholder="请输入" type="text" maxlength='18' />
<u-input :clearable='false' v-model="appPersonallist.cardNo" placeholder="请输入" type="text"
maxlength='18' />
</view>
<view class="item" @tap='areashow=true'>
<span>所属区域:</span>
@ -26,9 +28,10 @@
<span>详细地址:</span>
<u-input :clearable='false' v-model="appPersonallist.address" type="text" placeholder='小区、单元、门牌号' />
</view>
<view class="item" @tap='getAddress()'>
<view class="item" @tap='getAddress'>
<span>所在位置:</span>
<view class="address" style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">{{chooseLocation}}</view>
<view class="address" style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">
{{chooseLocation}}</view>
</view>
<view class="disease" style="border: none;" @tap="godisease">
<view style="display: block;line-height: 120rpx;">疾病类型:</view>
@ -38,11 +41,38 @@
</view>
</view>
</view>
<view class="radio-content">
<view class="radio-right" @tap="changeRadio">
<view class="radio" :class="radio == 2 ? 'radio-default':''">
<view :class="radio == 2 ? 'radio-active':''"></view>
</view>
</view>
<view class="agreement">我已阅读并同意<text @tap='maskshow=true'
style="color: #000000;border-bottom: 1rpx solid #000000;">用户协议</text>
</view>
</view>
<u-select v-model="areashow" mode="mutil-column-auto" label-name='areaName' value-name='areaCode'
:list="arealist" @confirm="areaconfirm"></u-select>
<view class="finish" @tap="informationinfo()">完成
</view>
<u-toast ref="uToast" />
<!-- // -->
<u-mask :show="maskshow" class='mask' @click='maskshow=false'>
<view class="Agreement">
<view class="title">
用户协议与隐私政策
</view>
<scroll-view scroll-y="true" class="scroll-Y" style="">
<contenttext></contenttext>
</scroll-view>
<view class="cancel" @tap='maskshow=false'>
取消
</view>
<view class="determine" @tap='tapradio'>
确定并同意
</view>
</view>
</u-mask>
</view>
</template>
@ -53,15 +83,21 @@
import {
information
} from '@/api/information/index.js'
import contenttext from '../information/text.vue'
import baseurl from '@/api/baseurl.js'
export default {
components: {
contenttext
},
data() {
return {
timer:null,
radio: 1,
timer: null,
baseurl: '',
address: '',
arealist: [],
areashow: false,
maskshow:false,//
chooseLocation: '',
img: null,
image: null,
@ -102,68 +138,76 @@
informationinfo() {
//
var that = this
if (this.image) {
uni.uploadFile({
url: baseurl + '/nurseApplet/uploadFile/uploadHeadPictureUrl',
filePath: that.appPersonallist.headPictureUrl,
name: 'file',
formData: {
'patientId': that.appPersonallist.patientId
},
timeout: 5000,
success(res) {
that.appPersonallist.headPictureUrl = JSON.parse(res.data).imgUrl
that.appPersonallist.diseaseInfoList = that.patientDiseaseInfoList
information(that.appPersonallist).then(res => {
if (res.code == 200) {
that.$refs.uToast.show({
title: '修改信息成功',
type: 'success',
duration: '1500'
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.navigateBack({
delta: 1
})
}, 1500)
} else if (res.code == 500) {
that.$refs.uToast.show({
title: res.msg,
type: 'error',
url: ''
})
}
})
}
var that = this
if (that.radio == 1) {
that.$refs.uToast.show({
title: '请审核并同意用户协议',
type: 'error'
})
} else {
that.appPersonallist.diseaseInfoList = that.patientDiseaseInfoList
information(that.appPersonallist).then(res => {
if (res.code == 200) {
that.$refs.uToast.show({
title: '修改信息成功',
type: 'success',
duration: '1500'
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.navigateBack({
delta: 1
if (this.image) {
uni.uploadFile({
url: baseurl + '/nurseApplet/uploadFile/uploadHeadPictureUrl',
filePath: that.appPersonallist.headPictureUrl,
name: 'file',
formData: {
'patientId': that.appPersonallist.patientId
},
timeout: 5000,
success(res) {
that.appPersonallist.headPictureUrl = JSON.parse(res.data).imgUrl
that.appPersonallist.diseaseInfoList = that.patientDiseaseInfoList
information(that.appPersonallist).then(res => {
if (res.code == 200) {
that.$refs.uToast.show({
title: '修改信息成功',
type: 'success',
duration: '1500'
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.navigateBack({
delta: 1
})
}, 1500)
} else if (res.code == 500) {
that.$refs.uToast.show({
title: res.msg,
type: 'error',
url: ''
})
}
})
}, 1500)
} else if (res.code == 500) {
that.$refs.uToast.show({
title: res.msg,
type: 'error',
url: ''
})
}
})
}
})
} else {
that.appPersonallist.diseaseInfoList = that.patientDiseaseInfoList
information(that.appPersonallist).then(res => {
if (res.code == 200) {
that.$refs.uToast.show({
title: '修改信息成功',
type: 'success',
duration: '1500'
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.navigateBack({
delta: 1
})
}, 1500)
} else if (res.code == 500) {
that.$refs.uToast.show({
title: res.msg,
type: 'error',
url: ''
})
}
})
}
}
},
//
@ -179,6 +223,17 @@
}
})
},
tapradio() {
this.radio = 2;
this.maskshow = false;
},
changeRadio() {
if (this.radio == 1) {
this.radio = 2;
} else {
this.radio = 1;
}
},
//
getAddress() {
var that = this;

View File

@ -22,7 +22,7 @@
<view class="ADDress" @tap='add()'>
<image src="../../static/add.png" mode=""></image>
<span class="ADDtext">
添加收货地址
添加地址
</span>
</view>
<!-- 弹框 -->
@ -185,7 +185,7 @@
},
//
updataxg(item) {
this.shipAddress = '修改收货地址'
this.shipAddress = '修改地址'
this.isedit = false
nursingStationGoodsinfo(item.id).then(res => {
this.infolist = res.data

View File

@ -208,6 +208,10 @@
line-height: 42rpx;
color: #666666;
padding-top: 30rpx;
/deep/ .richPic {
width: 100% !important;
height: 100% !important;
}
}
.Introduction {
font-size: 31rpx;

View File

@ -19,8 +19,7 @@
</view>
<view class="detail">
<view class="Introduction">机构简介</view>
<view class="textInfo">
{{list.agencyIntroduce}}
<view class="textInfo" v-html="list.agencyIntroduce">
</view>
</view>
<view class="Nursestationconfiguration">
@ -159,6 +158,7 @@
getInfo() {
introductionList(this.nurseStationId).then(res => {
res.data.stationIntroducePcitureUrl = baseurl + res.data.stationIntroducePcitureUrl
res.data.agencyIntroduce = res.data.agencyIntroduce.replace(/\<img/gi, "<img class='richPic'")
this.list = res.data
if (res.data.nurseStationLabelList) {
this.nurseStationLabelList = res.data.nurseStationLabelList
@ -214,6 +214,7 @@
itemList: ['呼叫', ],
success: function(res) {
if (res.tapIndex + 1 == 1) {
console.log(1)
uni.makePhoneCall({
phoneNumber: that.list.phone //
});

View File

@ -42,7 +42,7 @@
</view>
<view class="payinfo">
<text class="pay">实付款</text>
<text class="price">{{order.godTotalPrice}}</text>
<text class="price">{{order.totalPrice}}</text>
</view>
</view>
</view>

View File

@ -0,0 +1,180 @@
<template>
<view class="app" v-if="order">
<view class="time" style="" v-if="order.orderStatus=='WAIT_PAY'">
剩余付款时间
<u-count-down style='' :timestamp="timestamp">
</u-count-down>
</view>
<!-- <custom-nav nav='To' Url="/pages/CommodityOrder/CommodityOrder" title='商品订单'></custom-nav> -->
<view class="content">
<view class="name">
店铺名称
<image src="../../static/rowsright.png" mode=""></image>
</view>
<view class="details">
<view class="detailslist">
<image :src="baseurl+order.attributePitureUrl" mode=""></image>
<view class="model">
<view class="top">
<span>{{order.goodsName}}</span>
<span>{{order.goodsPrice}}</span>
</view>
<view class="bottom">
<span class="box">型号{{order.goodsAttributeName}}</span>
<span class="box">X{{order.goodsCount}}</span>
</view>
<view class="refund" @tap='gorefundType'
v-if="order.orderStatus != 'WAIT_PAY'&& order.orderStatus!='CANCEL'&&order.orderStatus!='WAIT_REFUND'&&order.orderStatus!='REFUNDED'&&order.orderStatus!='RETURNED_GOODS'&&order.orderStatus!='WAIT_RETURNED_GOODS'">
申请退款
</view>
<view class="refund" v-if="order.orderStatus=='WAIT_REFUND'" @tap='goAftersalesdetails(order)'>
退款中
</view>
<view class="refund" v-if="order.orderStatus=='REFUNDED'">
退款成功
</view>
<!-- <view class="refund" v-if="order.orderStatus=='RETURNED_GOODS'">
退货中
</view> -->
<view class="refund" v-if="order.orderStatus=='WAIT_RETURNED_GOODS'">
待退货
</view>
<view class="refund" v-if="order.orderStatus=='CANCEL'">
已取消
</view>
</view>
</view>
<view class="payinfo">
<text class="pay">实付款</text>
<text class="price">{{order.totalPrice}}</text>
</view>
</view>
</view>
<view class="info" v-if="order.orderStatus != ' WAIT_PAY'&& order.orderStatus!='CANCEL'">
<span>收货人<text>{{order.receiver}}</text></span>
<span>联系电话<text>{{order.phone}}</text></span>
<span>收货地址<text>{{order.receiveAddress}}</text></span>
<span>订单编号<text>{{order.goOrderNo}}</text></span>
<!-- <span>获得积分<text>30点积分</text></span> -->
<span>下单时间<text>{{order.orderTime}}</text></span>
<span v-if="order.orderStatus=='REFUNDED'">退款时间<text>{{order.updateTime}}</text></span>
<!-- <span>成交时间<text>2022-10-28 113126</text></span> -->
</view>
<view class="buy" v-if="order.orderStatus == 'WAIT_PAY'" @tap='pay'>
<view class="pay">
去支付
</view>
</view>
<u-toast ref="uToast" />
</view>
</template>
<script>
import {
appletGoodsOrderPay
} from '@/api/confirmOrder/index.js'
import {
goodsOrder
} from '@/api/CommodityOrder/index.js'
import baseurl from '@/api/baseurl.js'
export default {
data() {
return {
baseurl: '',
order: null,
patientId: '',
openid: null,
orderStatus: '',
pageSize: 10,
pageNum: 1,
timestamp: 0,
}
},
methods: {
//
pay() {
var that = this
let paydata = this.order
paydata.openid = this.openid
paydata.payType = "WECHAT_PAY"
paydata.paymentPrice = this.order.totalPrice
paydata.orderChannel = 'WECHAT_APPLET'
paydata.orderNo = this.order.goOrderNo
appletGoodsOrderPay(paydata).then(response => {
if (response.code == 200) {
uni.requestPayment({
timeStamp: response.data.timeStamp,
nonceStr: response.data.nonceStr,
package: response.data.prepayId,
signType: response.data.signType,
paySign: response.data.paySign,
success: function(res) {
that.$refs.uToast.show({
title: '支付成功',
type: 'success',
toast: 1500,
url: `/pages/paysuccess/paysuccess?delta=${3}`
})
},
fail: function(err) {
that.$refs.uToast.show({
title: '取消支付',
type: 'error',
toast: 1500,
})
}
});
} else {
that.$refs.uToast.show({
title: response.msg,
type: 'error',
toast: 2000
})
}
})
},
//退
gorefundType() {
uni.navigateTo({
url: `/pages/refundType/refundType?order=${JSON.stringify(this.order)}`
})
},
goodsOrderinfo(goodsOrderId) {
goodsOrder(this.patientId, this.orderStatus, goodsOrderId, this.pageSize, this.pageNum).then(res => {
this.order = res.rows[0]
var time = new Date(this.order.orderTime).getTime() / 1000 + (60 * 60 * 24)
var times = new Date().getTime() / 1000
this.timestamp = time - times
})
},
//
goAftersalesdetails(item) {
uni.navigateTo({
url: `/pages/Aftersalesdetails/Aftersalesdetails?goodsOrderId=${item.goodsOrderId}`
})
},
},
onLoad(options) {
this.baseurl = baseurl
let that = this
try {
const value = uni.getStorageSync('patientId');
if (value) {
that.patientId = value
that.goodsOrderinfo(options.goodsOrderId)
}
} catch (e) {}
try {
const value = uni.getStorageSync('openid');
if (value) {
that.openid = value
} else {}
} catch (e) {}
},
onUnload() {},
}
</script>
<style lang="scss">
@import '../orderDetails/orderDetails.scss'
</style>

View File

@ -197,7 +197,7 @@
//
title: {
type: String,
default: '预约时间'
default: '预约时间区间'
},
//
cancelText: {
@ -331,7 +331,7 @@
this.day = time.getDate();
this.hour = time.getHours();
this.minute = time.getMinutes();
this.endhour = time.getHours()+1;
this.endhour = time.getHours();
this.endminute = time.getMinutes();
// this.second = time.getSeconds();
},
@ -427,7 +427,6 @@
// picker
change(e) {
this.valueArr = e.detail.value;
console.log(this.valueArr)
let i = 0;
if (this.mode == 'time') {
// 使i++this.valueArrthis.params
@ -437,8 +436,8 @@
if (this.params.day) this.day = this.days[this.valueArr[i++]];
if (this.params.hour) this.hour = this.hours[this.valueArr[i++]];
if (this.params.minute) this.minute = this.minutes[this.valueArr[i++]];
if (this.params.endhour) this.endhour = this.hours[this.valueArr[6]]
if (this.params.endminute) this.endminute = this.endminutes[this.valueArr[7]];
if (this.params.endhour) this.endhour = this.hours[this.valueArr[3]]
if (this.params.endminute) this.endminute = this.endminutes[this.valueArr[4]];
// if (this.params.second) this.second = this.seconds[this.valueArr[i++]];
}
},

View File

@ -128,9 +128,10 @@
height: 16rpx;
border-radius: 50%;
background-color: #178ffb;
margin-left: 26%;
margin-top: 22%;
// margin: 0 auto;
position: absolute;
top:50%;
left:50%;
transform: translate(-50%,-50%);
}
}
}

View File

@ -3,8 +3,9 @@
<view class="cards">
<view class="item" :style="{background:listcolor[index]}" @tap='goProductList(item)'
v-for="(item,index) in goodsCategoryList" :key="index">
<image :src="listimg[index].img" mode=""></image>
<view class="title" style="font-size:42rpx">
<image :style="index==4?'top:0;border-radius: 20rpx;width:100%;height: 300rpx;':''"
:src="item.goodsCategoryPicture" mode=""></image>
<view class="title" style="font-size:42rpx" v-if="index!=4">
{{item.goodsCategoryName}}
</view>
</view>
@ -38,7 +39,9 @@
img: '../../static/cp.png',
},
],
listcolor: ['#00C176', '#D43953', '#E1AE3C', '#4C7BC9', '#00C176', '#D43953', '#E1AE3C', '#4C7BC9'], //
listcolor: ['#00C176', '#D43953', '#E1AE3C', '#4C7BC9', '#9e4dd0', '#00C176', '#D43953', '#E1AE3C',
'#4C7BC9', '#9e4dd0',
], //
};
},
onLoad(options) { //
@ -56,9 +59,10 @@
goodsCategory() {
goodsCategoryList(this.pageSize, this.pageNum).then(res => {
res.rows.forEach(e => {
e.goodsCatrgoryPicture = baseurl + e.goodsCatrgoryPicture
e.goodsCategoryPicture = baseurl + e.goodsCategoryPicture
this.goodsCategoryList.push(e)
})
console.log(this.goodsCategoryList)
this.total = res.total
})
}
@ -73,7 +77,7 @@
this.pageNum = 1;
goodsCategoryList(this.pageSize, this.pageNum).then(res => {
res.rows.forEach(e => {
e.goodsCatrgoryPicture = baseurl + e.goodsCatrgoryPicture
e.goodsCategoryPicture = baseurl + e.goodsCategoryPicture
})
this.goodsCategoryList = res.rows
this.total = res.total

View File

@ -12,7 +12,7 @@
<view class="addressContent" v-for="(item,index) in nursestationlist" :key="index">
<view class="lists">
<view class="nurse">{{item.nurseStationName}}</view>
<view class="distance">距离您{{item.distance}}</view>
<view class="distance">距离您{{item.distance}}KM</view>
<image class="background" :src="item.stationPictureUrl" mode=""></image>
<view class="understand" @tap='godetails(item)'>
点击了解
@ -63,12 +63,13 @@
},
methods: {
getlocation() {
var that = this
uni.getLocation({
type: 'wgs84',
success: res => {
this.latitude = res.latitude
this.longitude = res.longitude
this.markers.push({
that.latitude = res.latitude
that.longitude = res.longitude
that.markers.push({
id: 3,
latitude: res.latitude,
longitude: res.longitude,
@ -76,7 +77,7 @@
height: 25,
iconPath: "../../static/locatinsmall.png"
})
this.requestinfo();
that.requestinfo();
},
fail: error => {
uni.showModal({

View File

@ -132,7 +132,7 @@
that.removeS();
} else if (res.cancel) {
that.$refs.uToast.show({
title: '退出账号失败',
title: '取消退出账号',
type: 'error',
duration: '1000'
})
@ -196,14 +196,19 @@
uni.removeStorageSync('patientId');
uni.removeStorageSync('phone');
uni.removeStorageSync('password');
that.$refs.uToast.show({
title: '退出账号成功',
type: 'success',
duration: '1000'
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.reLaunch({
url: '/pages/login/login'
uni.navigateBack({
delta: 1
})
}, 1500)
}, 1000)
},
updatainfo() {
uni.navigateTo({