修改
This commit is contained in:
parent
c36e398b05
commit
c45269efff
@ -1,4 +1,4 @@
|
||||
import request from "../request.js"
|
||||
import request from "../../request.js"
|
||||
|
||||
export function getHeathHousingList(pageNum, pageSize) {
|
||||
return request({
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import request from "../request.js"
|
||||
import request from "../../request.js"
|
||||
export function appPersonal(patientId) {
|
||||
return request({
|
||||
url: `/nurseApp/login/appPersonal?patientId=${patientId}`,
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import request from "../request.js"
|
||||
import request from "../../request.js"
|
||||
|
||||
export function getPoserInfoListByType() {
|
||||
return request({
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import request from "../request.js"
|
||||
import request from "../../request.js"
|
||||
|
||||
//区街道list
|
||||
export function getRegionAndStreetInfo() {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import request from "../request.js"
|
||||
import request from "../../request.js"
|
||||
|
||||
// 根据被护理人id查询基本信息
|
||||
export function goodPatientInfo(patientId) {
|
||||
|
||||
39
components/appointmenttimetext.vue
Normal file
39
components/appointmenttimetext.vue
Normal file
@ -0,0 +1,39 @@
|
||||
<template>
|
||||
<view class="" style="text-align: justify;padding: 0 2%;">
|
||||
<view class="">
|
||||
为确保护理安全及双方权益,请认真阅读此知情同意书并签字,若因违反此协议而造成的后果,由双方各自承担相应的责任。
|
||||
</view>
|
||||
<view style="text-indent: 0;padding: 20rpx 0;"> 护理人员、患者/家属责任义务</view>
|
||||
<view> 1.详细查看了解并接受平台的服务介绍和规定。</view>
|
||||
<view> 2.医务人员将告知您在家中进行治疗的风险;并向您交代该项治疗护理的注意事项。</view>
|
||||
<view> 3.在护士/护理员上门服务期间胸前佩戴工作记录仪和报警装置。</view>
|
||||
<view> 4.非医院开出的药品或一次性材料及各种耗材一律不在本次服务中使用。</view>
|
||||
<view> 5.家属按预约治疗时间提前做好各项准备工作。如擦拭桌面、地面、保护患者不受凉的情况下开窗通风、备好护士操作用台面等。</view>
|
||||
<view> 6.家属需全程看护患者,听从医护人员安排。</view>
|
||||
<view> 7.治疗潜在风险</view>
|
||||
<view> 因环境限制、患者个体差异和病情变化,治疗期间有可能发生以下意外及并发症,患者/家属需理解任何护理操作及治疗服务都存在风险,包括但不限于以下情况:</view>
|
||||
<view> (1)上门护理因检查设备限制,容易出现漏诊、误诊等风险。</view>
|
||||
<view> (2)治疗期间可能发生原发疾病复发,如休克、高血压、心脑血管意外、心律失常、循环衰竭、心搏骤停等。</view>
|
||||
<view> (3)伤口换药后容易出现感染、迁延性愈合等不可预知的风险。</view>
|
||||
<view> (4)因不可抗拒因素出现的其他医疗意外风险。</view>
|
||||
<view> 8.经评估后不宜居家护理的,护士有权拒绝服务,对本次上门产生的专家劳务费和交通费将不予退还。</view>
|
||||
<view> 9.服务结束患者/家属对本次护理服务进行评价,如有任何不满可拨打投诉电话: *****。</view>
|
||||
<view style="text-indent: 0;padding: 20rpx 0;font-size: 40rpx;font-weight: 600;"> 患者(监护人)知情同意确认:</view>
|
||||
<view style="font-size: 36rpx;font-weight: 600;"> *本人已了解将要进行的护理操作及可能发生的并发症和风险</view>
|
||||
<view style="font-size: 36rpx;font-weight: 600;"> *本人接受平台的有关规定</view>
|
||||
<view style="font-size: 36rpx;font-weight: 600;"> *本人并未得到任何百分百操作成功的许诺</view>
|
||||
<view style="font-size: 36rpx;font-weight: 600;"> *以上情况本人已了解,本人坚持要求护理站为本人进行护理服务操作,出现相关问题或者风险由本人自己负责,与护理站及平台无关。
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
412
components/m-city/m-city.vue
Normal file
412
components/m-city/m-city.vue
Normal file
@ -0,0 +1,412 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="mask" :class="{ maskShow: showPicker }" @click="goemit" @click.stop.prevent @touchmove.stop.prevent
|
||||
catchtouchmove="true"></view>
|
||||
<view class="cpicker-content" :class="{ cpickerShow: showPicker }">
|
||||
<view class="city-head" @click.stop.prevent @touchmove.stop.prevent catchtouchmove="true">
|
||||
<view class="city-head-title">{{ headTitle }}</view>
|
||||
<!-- <view class="titlecancel" @click="hide">
|
||||
取消
|
||||
</view>
|
||||
<view class="titletap" @click="goemit">
|
||||
确定
|
||||
</view> -->
|
||||
<icon type="clear" v-if="clearRightIcon" class="clearRightIcon" size="20" color="#cccccc"
|
||||
@click="goemit">
|
||||
</icon>
|
||||
</view>
|
||||
<scroll-view id="nav-bar" class="nav-bar" scroll-x="true" scroll-with-animation="true"
|
||||
:scroll-left="scrollLeft">
|
||||
<view v-for="(item, index) in tabbars" class="nav-item" :key="index" :id="'tab' + index"
|
||||
@click="changeTab(index)" :class="{ current: index === tabCurrentIndex }"><text
|
||||
class="nav-bar-title">{{ item.localName }}</text></view>
|
||||
</scroll-view>
|
||||
<view class="city_content">
|
||||
<scroll-view class="panel-scroll-box" :scroll-y="enableScroll" :cscrollTop="scrollTop"
|
||||
:current="tabCurrentIndex" :scroll-top="scrollTop">
|
||||
<block v-for="(item, index) in tabbars[tabCurrentIndex].children" :key="index">
|
||||
<view class="flex-row-c-c" @click="changCity(tabCurrentIndex, item)">
|
||||
<text class="city-text"
|
||||
:class="{ color: tabbars[tabCurrentIndex].id == item.id }">{{ item.areaName }}</text>
|
||||
<icon type="success_no_circle" v-if="tabbars[tabCurrentIndex].id == item.id"
|
||||
:id="'show' + tabCurrentIndex" class="ischeck" size="14" :color="$lightColor"></icon>
|
||||
</view>
|
||||
</block>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
let windowWidth = 0
|
||||
import {
|
||||
getSubordinateRegions,
|
||||
getSubordinateInfo
|
||||
} from '@/api/pagesB/modifyAddress/modifyAddress.js';
|
||||
export default {
|
||||
name: "UniCityNvue",
|
||||
props: {
|
||||
headTitle: {
|
||||
//标题
|
||||
type: String,
|
||||
default: "地区选择",
|
||||
},
|
||||
pickerSize: {
|
||||
// 使用多少个tab
|
||||
type: [String, String],
|
||||
default: "1",
|
||||
},
|
||||
provinceData: {
|
||||
// 默认的省市区id,如果不使用id的情况下则为[];
|
||||
type: Array,
|
||||
default: function() {
|
||||
return [];
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
clearRightIcon: true, //是否显示右侧关闭icon
|
||||
scrollLeft: 500, //顶部选项卡左滑距离
|
||||
scrollTop: 0, //默认滚动顶部为0
|
||||
enableScroll: true, //是否启用滚动
|
||||
tabCurrentIndex: 0, //当前选项卡索引
|
||||
tabbars: [{
|
||||
id: "",
|
||||
localName: "请选择",
|
||||
children: [],
|
||||
}, ], //默认的省市区id
|
||||
pickersize: this.pickerSize, //多少个tab 推荐为4级
|
||||
showPicker: false, //显示选取器
|
||||
};
|
||||
},
|
||||
onShow() {},
|
||||
onLoad() {},
|
||||
onUnload() {},
|
||||
methods: {
|
||||
goemit() {
|
||||
var list = null
|
||||
if (this.tabbars[this.tabbars.length - 1].localName == '请选择') {
|
||||
list = this.tabbars.filter(e => e.localName != '请选择')
|
||||
} else {
|
||||
list = this.tabbars
|
||||
}
|
||||
this.$emit("funcValue", list);
|
||||
this.hide();
|
||||
},
|
||||
/**
|
||||
* 显示选择器
|
||||
*/
|
||||
show() {
|
||||
this.showPicker = true;
|
||||
this.tabbars[0].children = this.provinceData;
|
||||
// if (this.tabbars[0].children.length == 0) {
|
||||
// getSubordinateRegions('').then((res) => {
|
||||
// if (res.code == 200) {
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
windowWidth = uni.getSystemInfoSync().windowWidth;
|
||||
},
|
||||
|
||||
/**
|
||||
* 关闭选择器
|
||||
*/
|
||||
hide() {
|
||||
this.showPicker = false;
|
||||
},
|
||||
|
||||
/**
|
||||
* tab切换
|
||||
*/
|
||||
changeTab(e) {
|
||||
let index = e;
|
||||
this.setScroll(index);
|
||||
//延迟300ms,等待swiper动画结束再修改tabbar
|
||||
this.tabCurrentIndex = index;
|
||||
setTimeout(() => {
|
||||
this.getScroll("show" + index);
|
||||
}, 10);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获得元素的大小
|
||||
*/
|
||||
getElSize(id) {
|
||||
return new Promise((res, rej) => {
|
||||
let el = uni
|
||||
.createSelectorQuery()
|
||||
.in(this)
|
||||
.select("#" + id);
|
||||
el.fields({
|
||||
size: true,
|
||||
scrollOffset: true,
|
||||
rect: true,
|
||||
},
|
||||
(data) => {
|
||||
res(data);
|
||||
}
|
||||
).exec();
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 点击城市后回调
|
||||
*/
|
||||
async changCity(index, item) {
|
||||
if (this.tabbars[index].id != item.id) {
|
||||
this.tabbars[index].localName = item.areaName;
|
||||
this.tabbars[index].id = item.areaCode;
|
||||
if (index < this.tabbars.length - 1) {
|
||||
this.tabbars.splice(index + 1, this.tabbars.length - index - 1);
|
||||
}
|
||||
if (this.tabbars.length < this.pickersize) {
|
||||
let data = await getSubordinateInfo(item.areaCode);
|
||||
// 当前选项级为最后一级时回调,将选中的数据返回
|
||||
if (data.data.length == 0) {
|
||||
this.$emit("funcValue", this.tabbars);
|
||||
this.hide();
|
||||
} else {
|
||||
// 将新的数据填充进下一级
|
||||
var current = {
|
||||
localName: "请选择",
|
||||
id: "",
|
||||
children: data.data,
|
||||
};
|
||||
this.tabbars.push(current);
|
||||
if (this.tabCurrentIndex == 2) {
|
||||
this.tabbars[3].children.unshift({
|
||||
areaCode: "",
|
||||
areaLevel: 4,
|
||||
areaName: "暂不选择",
|
||||
children: null,
|
||||
id: 999999,
|
||||
parentId: 999999999,
|
||||
sort: null,
|
||||
})
|
||||
}
|
||||
this.tabCurrentIndex++;
|
||||
// 当前距离重新为最上面
|
||||
this.$set(this, 'scrollTop', 0)
|
||||
}
|
||||
} else {
|
||||
this.$emit("funcValue", this.tabbars);
|
||||
this.hide();
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 获取当前tab中滚动的距离
|
||||
*/
|
||||
async setScroll(index) {
|
||||
let width = 0;
|
||||
let nowWidth = 0;
|
||||
for (let i = 0; i <= index; i++) {
|
||||
let result = await this.getElSize("tab" + i);
|
||||
width += result.width;
|
||||
if (i === index) {
|
||||
nowWidth = result.width;
|
||||
}
|
||||
}
|
||||
if (width + nowWidth > windowWidth) {
|
||||
this.scrollLeft = width + nowWidth;
|
||||
} else {
|
||||
this.scrollLeft = 0;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 计算当前的滚动距离
|
||||
*/
|
||||
getScroll(id) {
|
||||
uni
|
||||
.createSelectorQuery()
|
||||
.in(this)
|
||||
.select(".panel-scroll-box")
|
||||
.boundingClientRect((data) => {
|
||||
uni
|
||||
.createSelectorQuery()
|
||||
.in(this)
|
||||
.select("#" + id)
|
||||
.boundingClientRect((res) => {
|
||||
if (res != undefined && res != null && res != "") {
|
||||
this.scrollTop = res.top - data.top;
|
||||
}
|
||||
})
|
||||
.exec();
|
||||
})
|
||||
.exec();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.mask {
|
||||
visibility: hidden;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
z-index: 1000;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
opacity: 0;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.maskShow {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.cpicker-content {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: #ffffff;
|
||||
transition: all 0.3s ease;
|
||||
transform: translateY(100%);
|
||||
z-index: 3000;
|
||||
}
|
||||
|
||||
.cpickerShow {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.city-head {
|
||||
width: 750rpx;
|
||||
height: 88rpx;
|
||||
flex-direction: column;
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-color: #f4f4f4;
|
||||
border-bottom-style: solid;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.city-head-title {
|
||||
font-size: 30rpx;
|
||||
line-height: 88rpx;
|
||||
align-items: center;
|
||||
/* #ifndef APP-NVUE */
|
||||
text-align: center;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.titletap {
|
||||
display: inline-block;
|
||||
fonts-size: 24rpx;
|
||||
position: absolute;
|
||||
right: 5%;
|
||||
top: 22rpx;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.titlecancel {
|
||||
display: inline-block;
|
||||
fonts-size: 24rpx;
|
||||
position: absolute;
|
||||
left: 5%;
|
||||
top: 22rpx;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.clearRightIcon {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
top: 12px;
|
||||
font-size: 10px;
|
||||
color: #bebebe;
|
||||
}
|
||||
|
||||
.nav-bar {
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
height: 90rpx;
|
||||
white-space: nowrap;
|
||||
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.06);
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: inline-flex !important;
|
||||
/* #endif */
|
||||
/* #ifdef APP-NVUE */
|
||||
flex-direction: row !important;
|
||||
/* #endif */
|
||||
width: 170rpx;
|
||||
padding: 7px 0px;
|
||||
line-height: 26px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #303133;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.nav-bar-title {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.current {
|
||||
// color: $aider-light-color;
|
||||
// border-color: $aider-light-color;
|
||||
border-bottom-width: 4rpx;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
.current:after {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.panel-scroll-box {
|
||||
height: 750rpx;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.flex-row-c-c {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: block;
|
||||
/* #endif */
|
||||
/* #ifdef APP-NVUE */
|
||||
flex-direction: row;
|
||||
/* #endif */
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
.city-text {
|
||||
/* #ifdef APP-NVUE */
|
||||
flex-direction: row;
|
||||
/* #endif */
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.hide {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.ischeck {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: inline-flex !important;
|
||||
/* #endif */
|
||||
/* #ifdef APP-NVUE */
|
||||
flex-direction: column;
|
||||
/* #endif */
|
||||
margin-right: 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.color {
|
||||
// color: $light-color;
|
||||
}
|
||||
|
||||
icon {
|
||||
margin-left: 40rpx;
|
||||
}
|
||||
</style>
|
||||
384
components/text.vue
Normal file
384
components/text.vue
Normal file
@ -0,0 +1,384 @@
|
||||
<template>
|
||||
<view style="text-align: justify;padding: 0 2%;">
|
||||
泉医到家(简称“我们”)深知个人信息对您的重要性,也感谢您对我们的信任。
|
||||
我们将通过本政策向您说明我们如何收集、存储、保护、使用及对外提供您的信息,并说明您享有的权利,其中要点如下:
|
||||
<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)、网络设备硬件地址(MAC)、IP地址、软件版本号、网络接入方式及类型、操作日志、电话状态等信息。请您了解,这些信息是我们提供服务和保障产品正常运行所必须收集的基本信息。
|
||||
</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> 为使您获得更轻松的访问体验,您访问“泉医到家”提供的服务时,我们可能会通过小型数据文件识别您的身份,帮您省去重复输入登录信息的步骤,或者帮助您判断您的账户是否安全。这些数据文件可能是Cookie、Flash
|
||||
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>MobTech,ShareSDK</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>设备标识符(IMEI、IDFA、Android
|
||||
ID、MAC、OAID等相关信息)、应用信息或运行中的进程信息(应用崩溃信息、通知开关状态、软件列表等相关信息)、设备参数及系统信息(设备类型、设备型号、操作系统及硬件相关信息)
|
||||
</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/GUID、SIM 卡 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>
|
||||
450
components/timepicker/timepicker.vue
Normal file
450
components/timepicker/timepicker.vue
Normal file
@ -0,0 +1,450 @@
|
||||
<template>
|
||||
<u-popup :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="timeshow" length="auto"
|
||||
:safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex">
|
||||
<view class="u-datetime-picker">
|
||||
<view class="u-picker-header" @touchmove.stop.prevent="">
|
||||
<view class="u-btn-picker u-btn-picker--tips" :style="{ color: cancelColor }" hover-class="u-opacity"
|
||||
:hover-stay-time="150" @tap="getResult('cancel')">{{cancelText}}</view>
|
||||
<view class="u-picker__title">{{ title }}</view>
|
||||
<view class="u-btn-picker u-btn-picker--primary" :style="{ color: moving ? cancelColor : confirmColor }"
|
||||
hover-class="u-opacity" :hover-stay-time="150" @touchmove.stop="" @tap.stop="getResult('confirm')">
|
||||
{{confirmText}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="u-picker-body">
|
||||
<picker-view :value="valueArr" @change="change" class="u-picker-view" @pickstart="pickstart"
|
||||
@pickend="pickend">
|
||||
<picker-view-column v-if="!reset && params.year" style="flex:6">
|
||||
<view class="u-column-item" v-for="(item, index) in years" :key="index">
|
||||
{{ item }}
|
||||
<text class="u-text" v-if="showTimeTag"></text>
|
||||
</view>
|
||||
</picker-view-column>
|
||||
<picker-view-column v-if="!reset && params.month" style="flex:5">
|
||||
<view class="u-column-item" v-for="(item, index) in months" :key="index">
|
||||
{{ formatNumber(item) }}
|
||||
<text class="u-text" v-if="showTimeTag"></text>
|
||||
</view>
|
||||
</picker-view-column>
|
||||
<picker-view-column v-if="!reset && params.day" style="flex:5">
|
||||
<view class="u-column-item" v-for="(item, index) in days" :key="index">
|
||||
{{ formatNumber(item) }}
|
||||
<text class="u-text" v-if="showTimeTag"></text>
|
||||
</view>
|
||||
</picker-view-column>
|
||||
<view class="u-column-item">
|
||||
<text class="u-text">一</text>
|
||||
</view>
|
||||
<picker-view-column v-if="!reset && params.endmonth" style="flex:5">
|
||||
<view class="u-column-item" v-for="(item, index) in months" :key="index">
|
||||
{{ formatNumber(item) }}
|
||||
<text class="u-text" v-if="showTimeTag"></text>
|
||||
</view>
|
||||
</picker-view-column>
|
||||
<picker-view-column v-if="!reset && params.endday" style="flex:5">
|
||||
<view class="u-column-item" v-for="(item, index) in enddays" :key="index">
|
||||
{{ formatNumber(item) }}
|
||||
<text class="u-text" v-if="showTimeTag"></text>
|
||||
</view>
|
||||
</picker-view-column>
|
||||
</picker-view>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'timepicker',
|
||||
props: {
|
||||
// picker中需要显示的参数
|
||||
params: {
|
||||
type: Object,
|
||||
default () {
|
||||
return {
|
||||
year: true,
|
||||
month: true,
|
||||
day: true,
|
||||
endday: true,
|
||||
endmonth: true,
|
||||
};
|
||||
}
|
||||
},
|
||||
// 模式选择,region-地区类型,time-时间类型,selector-单列模式,multiSelector-多列模式
|
||||
mode: {
|
||||
type: String,
|
||||
default: 'time'
|
||||
},
|
||||
// 年份开始时间
|
||||
startYear: {
|
||||
type: [String, Number],
|
||||
default: 2023
|
||||
},
|
||||
// 年份结束时间
|
||||
endYear: {
|
||||
type: [String, Number],
|
||||
default: 2100
|
||||
},
|
||||
// "取消"按钮的颜色
|
||||
cancelColor: {
|
||||
type: String,
|
||||
default: '#606266'
|
||||
},
|
||||
// "确定"按钮的颜色
|
||||
confirmColor: {
|
||||
type: String,
|
||||
default: '#2979ff'
|
||||
},
|
||||
// 默认显示的时间,2025-07-02 || 2025-07-02 13:01:00 || 2025/07/02
|
||||
defaultTime: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
// 时间模式时,是否显示后面的年月日中文提示
|
||||
showTimeTag: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
safeAreaInsetBottom: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否允许通过点击遮罩关闭Picker
|
||||
maskCloseAble: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
// 通过双向绑定控制组件的弹出与收起
|
||||
timepicker: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 弹出的z-index值
|
||||
zIndex: {
|
||||
type: [String, Number],
|
||||
default: 0
|
||||
},
|
||||
// 顶部标题
|
||||
title: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
// 取消按钮的文字
|
||||
cancelText: {
|
||||
type: String,
|
||||
default: '取消'
|
||||
},
|
||||
// 确认按钮的文字
|
||||
confirmText: {
|
||||
type: String,
|
||||
default: '确认'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
timeshow: false,
|
||||
years: [],
|
||||
months: [],
|
||||
days: [],
|
||||
enddays: [],
|
||||
year: 0,
|
||||
month: 0,
|
||||
day: 0,
|
||||
endmonth: 0,
|
||||
endday: 0,
|
||||
reset: false,
|
||||
startDate: '',
|
||||
endDate: '',
|
||||
valueArr: [],
|
||||
moving: false // 列是否还在滑动中,微信小程序如果在滑动中就点确定,结果可能不准确
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.init();
|
||||
},
|
||||
computed: {
|
||||
yearAndMonth() {
|
||||
return `${this.year}-${this.month}`;
|
||||
},
|
||||
yearAndendMonth() {
|
||||
return `${this.year}-${this.endmonth}`;
|
||||
},
|
||||
uZIndex() {
|
||||
// 如果用户有传递z-index值,优先使用
|
||||
return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// watch监听月份的变化,实时变更日的天数,因为不同月份,天数不一样
|
||||
// 一个月可能有30,31天,甚至闰年2月的29天,平年2月28天
|
||||
yearAndMonth(val) {
|
||||
if (this.params.year) {
|
||||
this.setDays();
|
||||
}
|
||||
},
|
||||
yearAndendMonth(val) {
|
||||
if (this.params.year) {
|
||||
this.setendDays();
|
||||
}
|
||||
},
|
||||
// 微信和QQ小程序由于一些奇怪的原因(故同时对所有平台均初始化一遍),需要重新初始化才能显示正确的值
|
||||
timepicker(n) {
|
||||
this.timeshow = this.timepicker
|
||||
if (n) {
|
||||
this.reset = true;
|
||||
setTimeout(() => this.init(), 10);
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 标识滑动开始,只有微信小程序才有这样的事件
|
||||
pickstart() {
|
||||
// #ifdef MP-WEIXIN
|
||||
this.moving = true;
|
||||
// #endif
|
||||
},
|
||||
// 标识滑动结束
|
||||
pickend() {
|
||||
// #ifdef MP-WEIXIN
|
||||
this.moving = false;
|
||||
// #endif
|
||||
},
|
||||
// 小于10前面补0,用于月份,日期,时分秒等
|
||||
formatNumber(num) {
|
||||
return +num < 10 ? '0' + num : String(num);
|
||||
},
|
||||
// 生成递进的数组
|
||||
generateArray: function(start, end) {
|
||||
// 转为数值格式,否则用户给end-year等传递字符串值时,下面的end+1会导致字符串拼接,而不是相加
|
||||
start = Number(start);
|
||||
end = Number(end);
|
||||
end = end > start ? end : start;
|
||||
// 生成数组,获取其中的索引,并剪出来
|
||||
return [...Array(end + 1).keys()].slice(start);
|
||||
},
|
||||
getIndex: function(arr, val) {
|
||||
let index = arr.indexOf(val);
|
||||
// 如果index为-1(即找不到index值),~(-1)=-(-1)-1=0,导致条件不成立
|
||||
return ~index ? index : 0;
|
||||
},
|
||||
//日期时间处理
|
||||
initTimeValue() {
|
||||
// 格式化时间,在IE浏览器(uni不存在此情况),无法识别日期间的"-"间隔符号
|
||||
let fdate = this.defaultTime.replace(/\-/g, '/');
|
||||
fdate = fdate && fdate.indexOf('/') == -1 ? `2020/01/01 ${fdate}` : fdate;
|
||||
let time = null;
|
||||
if (fdate) time = new Date(fdate);
|
||||
else time = new Date();
|
||||
// 获取年日月时分秒
|
||||
this.year = time.getFullYear();
|
||||
this.month = Number(time.getMonth()) + 1;
|
||||
this.day = time.getDate();
|
||||
this.endmonth = Number(time.getMonth()) + 1;
|
||||
this.endday = time.getDate();
|
||||
// this.second = time.getSeconds();
|
||||
},
|
||||
init() {
|
||||
this.valueArr = [];
|
||||
this.reset = false;
|
||||
if (this.mode == 'time') {
|
||||
this.initTimeValue();
|
||||
if (this.params.year) {
|
||||
this.valueArr.push(0);
|
||||
this.setYears();
|
||||
}
|
||||
if (this.params.month) {
|
||||
this.valueArr.push(0);
|
||||
this.setMonths();
|
||||
}
|
||||
if (this.params.day) {
|
||||
this.valueArr.push(0);
|
||||
this.setDays();
|
||||
}
|
||||
if (this.params.endmonth) {
|
||||
this.valueArr.push(0);
|
||||
this.setendMonths();
|
||||
}
|
||||
if (this.params.endday) {
|
||||
this.valueArr.push(0);
|
||||
this.setendDays();
|
||||
}
|
||||
}
|
||||
this.$forceUpdate();
|
||||
},
|
||||
// 设置picker的某一列值
|
||||
setYears() {
|
||||
// 获取年份集合
|
||||
this.years = this.generateArray(this.startYear, this.endYear);
|
||||
// 设置this.valueArr某一项的值,是为了让picker预选中某一个值
|
||||
this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.years, this.year));
|
||||
},
|
||||
setMonths() {
|
||||
this.months = this.generateArray(1, 12);
|
||||
this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.months, this.month));
|
||||
},
|
||||
setDays() {
|
||||
let totalDays = new Date(this.year, this.month, 0).getDate();
|
||||
this.days = this.generateArray(1, totalDays);
|
||||
let index = 0;
|
||||
// 这里不能使用类似setMonths()中的this.valueArr.splice(this.valueArr.length - 1, xxx)做法
|
||||
// 因为this.month和this.year变化时,会触发watch中的this.setDays(),导致this.valueArr.length计算有误
|
||||
if (this.params.year && this.params.month) index = 2;
|
||||
else if (this.params.month) index = 1;
|
||||
else if (this.params.year) index = 1;
|
||||
else index = 0;
|
||||
// 当月份变化时,会导致日期的天数也会变化,如果原来选的天数大于变化后的天数,则重置为变化后的最大值
|
||||
// 比如原来选中3月31日,调整为2月后,日期变为最大29,这时如果day值继续为31显然不合理,于是将其置为29(picker-column从1开始)
|
||||
if (this.day > this.days.length) this.day = this.days.length;
|
||||
this.valueArr.splice(index, 1, this.getIndex(this.days, this.day));
|
||||
},
|
||||
setendMonths() {
|
||||
this.months = this.generateArray(1, 12);
|
||||
this.valueArr.splice(this.valueArr.length - 1, 1, this.getIndex(this.months, this.endmonth));
|
||||
},
|
||||
setendDays() {
|
||||
let totalDays = new Date(this.year, this.endmonth, 0).getDate();
|
||||
this.enddays = this.generateArray(1, totalDays);
|
||||
let index = 0;
|
||||
// 这里不能使用类似setMonths()中的this.valueArr.splice(this.valueArr.length - 1, xxx)做法
|
||||
// 因为this.month和this.year变化时,会触发watch中的this.setDays(),导致this.valueArr.length计算有误
|
||||
if (this.params.year && this.params.endmonth) index = 4;
|
||||
else if (this.params.endmonth) index = 3;
|
||||
else if (this.params.year) index = 3;
|
||||
else index = 0;
|
||||
// 当月份变化时,会导致日期的天数也会变化,如果原来选的天数大于变化后的天数,则重置为变化后的最大值
|
||||
// 比如原来选中3月31日,调整为2月后,日期变为最大29,这时如果day值继续为31显然不合理,于是将其置为29(picker-column从1开始)
|
||||
if (this.endday > this.enddays.length) this.endday = this.enddays.length;
|
||||
this.valueArr.splice(index, 1, this.getIndex(this.enddays, this.endday));
|
||||
},
|
||||
close() {
|
||||
this.$emit('input', false);
|
||||
},
|
||||
// 用户更改picker的列选项
|
||||
change(e) {
|
||||
this.valueArr = e.detail.value;
|
||||
let i = 0;
|
||||
// 这里使用i++,是因为this.valueArr数组的长度是不确定长度的,它根据this.params的值来配置长度
|
||||
// 进入if规则,i会加1,保证了能获取准确的值
|
||||
if (this.params.year) this.year = this.years[this.valueArr[i++]];
|
||||
if (this.params.month) this.month = this.months[this.valueArr[i++]];
|
||||
if (this.params.day) this.day = this.days[this.valueArr[i++]];
|
||||
if (this.params.endmonth) this.endmonth = this.months[this.valueArr[i++]];
|
||||
if (this.params.endday) this.endday = this.enddays[this.valueArr[i++]];
|
||||
},
|
||||
// 用户点击确定按钮
|
||||
getResult(event = null) {
|
||||
let result = {};
|
||||
// 只返回用户在this.params中配置了为true的字段
|
||||
if (this.params.year) result.year = this.formatNumber(this.year || 0);
|
||||
if (this.params.month) result.month = this.formatNumber(this.month || 0);
|
||||
if (this.params.day) result.day = this.formatNumber(this.day || 0);
|
||||
if (this.params.endmonth) result.endmonth = this.formatNumber(this.endmonth || 0);
|
||||
if (this.params.endday) result.endday = this.formatNumber(this.endday || 0);
|
||||
// const newObj = {};
|
||||
// for (let prop in result) {
|
||||
// if (result.hasOwnProperty(prop) && (prop === 'year' || prop === 'month')) {
|
||||
// newObj[prop] = result[prop];
|
||||
// }
|
||||
// }
|
||||
this.$emit('timeconfirm', result);
|
||||
this.close();
|
||||
},
|
||||
// 获取时间戳
|
||||
getTimestamp() {
|
||||
// yyyy-mm-dd为安卓写法,不支持iOS,需要使用"/"分隔,才能二者兼容
|
||||
let time = this.year + '/' + this.month + '/' + this.day + ' ' + this.hour + ':' + this.minute + ':' + this
|
||||
.second;
|
||||
return new Date(time).getTime() / 1000;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
// 定义混入指令,用于在非nvue环境下的flex定义,因为nvue没有display属性,会报错
|
||||
@mixin vue-flex($direction: row) {
|
||||
/* #ifndef APP-NVUE */
|
||||
display: flex;
|
||||
flex-direction: $direction;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.u-datetime-picker {
|
||||
position: relative;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.u-picker-view {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.u-picker-header {
|
||||
width: 100%;
|
||||
height: 90rpx;
|
||||
padding: 0 40rpx;
|
||||
@include vue-flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
font-size: 30rpx;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.u-picker-header::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
border-bottom: 1rpx solid #eaeef1;
|
||||
-webkit-transform: scaleY(0.5);
|
||||
transform: scaleY(0.5);
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.u-picker__title {
|
||||
color: $u-content-color;
|
||||
}
|
||||
|
||||
.u-picker-body {
|
||||
padding-top: 20rpx;
|
||||
width: 100%;
|
||||
height: 500rpx;
|
||||
overflow: hidden;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.u-column-item {
|
||||
@include vue-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 30rpx;
|
||||
color: $u-main-color;
|
||||
padding: 0 8rpx;
|
||||
}
|
||||
|
||||
.u-text {
|
||||
font-size: 24rpx;
|
||||
padding-left: 8rpx;
|
||||
}
|
||||
|
||||
.u-btn-picker {
|
||||
padding: 16rpx;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.u-opacity {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.u-btn-picker--primary {
|
||||
color: $u-type-primary;
|
||||
}
|
||||
|
||||
.u-btn-picker--tips {
|
||||
color: $u-tips-color;
|
||||
}
|
||||
</style>
|
||||
51
package-lock.json
generated
51
package-lock.json
generated
@ -1,28 +1,27 @@
|
||||
{
|
||||
"name": "xinelu-applet-ui",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "xinelu-applet-ui",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"uview-ui": "^1.8.8"
|
||||
}
|
||||
},
|
||||
"node_modules/uview-ui": {
|
||||
"version": "1.8.8",
|
||||
"resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.8.tgz",
|
||||
"integrity": "sha512-Osal3yzXiHor0In9OPTZuXTaqTbDglMZ9RGK/MPYDoQQs+y0hrBCUD0Xp5T70C8i2lLu2X6Z11zJhmsQWMR7Jg=="
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"uview-ui": {
|
||||
"version": "1.8.8",
|
||||
"resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.8.tgz",
|
||||
"integrity": "sha512-Osal3yzXiHor0In9OPTZuXTaqTbDglMZ9RGK/MPYDoQQs+y0hrBCUD0Xp5T70C8i2lLu2X6Z11zJhmsQWMR7Jg=="
|
||||
}
|
||||
}
|
||||
"name": "海报生成,随心所欲绘制样式,原生canvas方法的二次封装,自定义函数,持续更新",
|
||||
"version": "1.3.1",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "海报生成,随心所欲绘制样式,原生canvas方法的二次封装,自定义函数,持续更新",
|
||||
"version": "1.3.1",
|
||||
"dependencies": {
|
||||
"uview-ui": "^1.8.8"
|
||||
}
|
||||
},
|
||||
"node_modules/uview-ui": {
|
||||
"version": "1.8.8",
|
||||
"resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.8.tgz",
|
||||
"integrity": "sha512-Osal3yzXiHor0In9OPTZuXTaqTbDglMZ9RGK/MPYDoQQs+y0hrBCUD0Xp5T70C8i2lLu2X6Z11zJhmsQWMR7Jg=="
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"uview-ui": {
|
||||
"version": "1.8.8",
|
||||
"resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.8.tgz",
|
||||
"integrity": "sha512-Osal3yzXiHor0In9OPTZuXTaqTbDglMZ9RGK/MPYDoQQs+y0hrBCUD0Xp5T70C8i2lLu2X6Z11zJhmsQWMR7Jg=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,19 +1,615 @@
|
||||
<template>
|
||||
<view>
|
||||
|
||||
<view class="app">
|
||||
<!-- <u-swiper :list="swiperImgUrls" effect3d='true' height='400' interval='5000' duration='2000'></u-swiper> -->
|
||||
<!-- <swiper class="swiper-block" :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000"
|
||||
:circular='true' previous-margin='90rpx' next-margin='90rpx' current='0' @change="swiperChange">
|
||||
<swiper-item class="swiper-item" v-for="(item,index) in swiperImgUrls">
|
||||
<image :src="item" :class="['slide-image', currentIndex === index?'active':'']" mode="aspectFill">
|
||||
</image>
|
||||
</swiper-item>
|
||||
</swiper> -->
|
||||
<view class="container" v-if="swiperImgUrls">
|
||||
<swiper :indicator-dots="true" :current="currentIndex" previous-margin="55rpx" next-margin="55rpx"
|
||||
:autoplay="autoplay" :interval="3000" :duration="1000" class="swiper-block" :circular='true'
|
||||
@change="swiperChange">
|
||||
<swiper-item v-for="(item ,index) in swiperImgUrls" :key="index" class="swiper-item">
|
||||
<view v-show="!splits(item)" wx-if="{item}" @tap='goswiper(item)'>
|
||||
<image v-if="item" :src="item" :class="['slide-image', currentIndex === index?'active':'']"
|
||||
mode="aspectFill">
|
||||
</image>
|
||||
</view>
|
||||
<view v-show="splits(item)" v-if="item">
|
||||
<video :id="'myVideo'+index" :autoplay="false" :src="item" controls show-fullscreen-btn
|
||||
object-fit="fill" @play="play" @pause="pause" @ended="ended" auto-pause-if-navigate
|
||||
show-play-btn :enable-progress-gesture='true' :show-center-play-btn='true'
|
||||
enable-play-gesture auto-pause-if-open-native show-mute-btn :poster='poster'
|
||||
:class="['slide-image', currentIndex === index?'active':'']"></video>
|
||||
</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
<view class="items">
|
||||
<view class="item" @tap="gosite">
|
||||
<image src="../../static/pagesB/hlz.png" mode=""></image>
|
||||
<view class="title">
|
||||
护理机构
|
||||
</view>
|
||||
</view>
|
||||
<view class="item" @tap="gomedicine">
|
||||
<image src="../../static/pagesB/jkzx.png" mode=""></image>
|
||||
<view class="title">
|
||||
齐鲁名医
|
||||
</view>
|
||||
</view>
|
||||
<view class="item" @tap='godiseasemanagement'>
|
||||
<image src="../../static/pagesB/zbgl.png" mode=""></image>
|
||||
<view class="title">
|
||||
专病管理
|
||||
</view>
|
||||
</view>
|
||||
<view class="item" @tap='goycjc'>
|
||||
<image src="../../static/pagesB/jiance.png" mode=""></image>
|
||||
<view class="title">
|
||||
远程监测
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="Welfarecustomerservice">
|
||||
<view class="topimgs">
|
||||
<image src="../../static/pagesB/ynph.png" mode="" @tap='gopzyh'></image>
|
||||
<image src="../../static/pagesB/jypz.png" mode="" @tap='goseekmedicaladvice'></image>
|
||||
<image src="../../static/pagesB/qyzq.png" mode="" @tap='gosuyu'></image>
|
||||
</view>
|
||||
<view class="rightimg">
|
||||
<image src="../../static/pagesB/guanjia.png" mode="" @tap='goguanjia'></image>
|
||||
<image class="" src="../../static/pagesB/96558.png" mode="" @tap='gonight'></image>
|
||||
</view>
|
||||
<view class="rightimg">
|
||||
<image src="../../static/pagesB/fuli.png" mode="" @tap='gomaterialbenefits'></image>
|
||||
<image src="../../static/pagesB/kefu.png" mode="" @tap='gocustomerservice'></image>
|
||||
</view>
|
||||
<image class="shopping" src="../../static/pagesB/shoping.png" mode="" @tap='goshopping'></image>
|
||||
</view>
|
||||
<view class="Healthknowledge">
|
||||
<view class="title">
|
||||
健康常识
|
||||
</view>
|
||||
<view class="more" @tap='gohealth'>
|
||||
<view class="title">
|
||||
查看更多
|
||||
</view>
|
||||
<image src="../../static/huijiantou.png" mode=""></image>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="item" v-for="(item,index) in informationCategoryVOList" :key="index"
|
||||
@tap='gohealthitem(item)'>
|
||||
<view class="text">
|
||||
{{item.informationTitle}}
|
||||
</view>
|
||||
<view class="author"></view>
|
||||
<image :src="item.leadThumbnailUrl" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<u-toast ref="uToast" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState,
|
||||
mapActions
|
||||
} from "vuex";
|
||||
import {
|
||||
getPoserInfoListByType
|
||||
} from '@/api/pagesB/homepage/index.js'
|
||||
import {
|
||||
getHeathHousingList
|
||||
} from '@/api/pagesB/Healthknowledge/index.js'
|
||||
import baseurl from '../../api/baseurl';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
swiperImglink: [], //sweiper跳转link
|
||||
swiperImgUrls: [],
|
||||
autoplay: true, //自动切换轮播图
|
||||
videoContext: '',
|
||||
currentIndex: 0,
|
||||
informationCategoryVOList: [], //咨询信息
|
||||
informationCategorytotal: 0,
|
||||
pageNum: 1,
|
||||
pageSize: 5,
|
||||
poster: '', //视频封面
|
||||
};
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
//1.获取state数据的第一种方法
|
||||
// getcount(){
|
||||
// return this.$store.state.count;
|
||||
// },
|
||||
//2.获取State的第二种方法---映射
|
||||
// ...mapState(["name"])
|
||||
},
|
||||
onShow() {
|
||||
this.pageNum = 1
|
||||
this.swiperImgUrls = []
|
||||
this.getPoserInfo();
|
||||
},
|
||||
methods: {
|
||||
//点击海报跳转
|
||||
goswiper(item) {
|
||||
this.swiperImglink.forEach(e => {
|
||||
e.image = baseurl + e.posterPictureUrl
|
||||
if (e.image == item) {
|
||||
if (e.dictLabel == '专病管理') {
|
||||
const phone = uni.getStorageSync('phone');
|
||||
if (phone) {
|
||||
uni.navigateToMiniProgram({
|
||||
appId: 'wx3341cfb0602789f6',
|
||||
path: 'pages/index/index',
|
||||
extraData: {
|
||||
'from': 'qy',
|
||||
'phone': phone
|
||||
},
|
||||
success(res) {}
|
||||
})
|
||||
} else {
|
||||
this.$refs.uToast.show({
|
||||
title: '您未登录,请先登录',
|
||||
type: 'error',
|
||||
duration: '1000',
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
} else if (e.dictLabel == '新医象') {
|
||||
this.goycjc();
|
||||
} else {
|
||||
if (e.jumpLink == '/pages/ConsultationDetails/ConsultationDetails') {
|
||||
const url = `/pagesB/ConsultationDetails/ConsultationDetails?goto=${'homepage'}`
|
||||
uni.navigateTo({
|
||||
url: url
|
||||
})
|
||||
} else if (e.jumpLink == '/pages/homepage/homepage' || e.jumpLink ==
|
||||
'/pages/Personal/Personal') {
|
||||
uni.switchTab({
|
||||
url: e.jumpLink
|
||||
})
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: e.jumpLink
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
swiperChange(e) {
|
||||
this.currentIndex = e.detail.current
|
||||
let {
|
||||
current,
|
||||
source
|
||||
} = e.detail
|
||||
this.videoContext = uni.createVideoContext('myVideo' + (current - 1));
|
||||
//只有手动切换时开始轮播,并且上一页视频暂停
|
||||
if (source === 'touch') {
|
||||
this.videoContext.pause(); //暂停
|
||||
this.autoplay = true
|
||||
}
|
||||
},
|
||||
// 获取数据
|
||||
GetBanner() {},
|
||||
// 处理banner返回的是是视频还是图片
|
||||
splits(url) {
|
||||
if (url.indexOf('.') != -1) {
|
||||
var ext = url.substring(url.lastIndexOf('.') + 1);
|
||||
return ['mp4', 'webm', 'mpeg4', 'ogg'].indexOf(ext) != -1
|
||||
}
|
||||
},
|
||||
// 点击开始/继续播放
|
||||
play() {
|
||||
this.autoplay = false
|
||||
// this.videoContext.requestFullScreen()
|
||||
},
|
||||
// 视频暂停
|
||||
pause() {
|
||||
this.autoplay = true
|
||||
},
|
||||
// 视频结束
|
||||
ended() {
|
||||
this.autoplay = true
|
||||
},
|
||||
//跳转item
|
||||
gohealthitem(item) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/Healthitem/Healthitem?item=${encodeURIComponent(JSON.stringify(item))}`
|
||||
})
|
||||
},
|
||||
//齐鲁名医
|
||||
getHeathHousing() {
|
||||
getHeathHousingList(this.pageNum, this.pageSize).then(res => {
|
||||
if (res.rows) {
|
||||
res.rows.forEach(e => {
|
||||
e.leadThumbnailUrl = baseurl + e.leadThumbnailUrl
|
||||
})
|
||||
}
|
||||
this.informationCategoryVOList = res.rows
|
||||
this.informationCategorytotal = res.total
|
||||
})
|
||||
},
|
||||
//海报
|
||||
getPoserInfo() {
|
||||
getPoserInfoListByType().then(res => {
|
||||
if (res.code == 200) {
|
||||
if (res.data.poserInfoList) {
|
||||
this.swiperImglink = res.data.poserInfoList
|
||||
res.data.poserInfoList.forEach(e => {
|
||||
e.image = baseurl + e.posterPictureUrl
|
||||
this.swiperImgUrls.push(e.image)
|
||||
})
|
||||
if (res.data.poserInfoList[0].posterVideoUrl) {
|
||||
res.data.poserInfoList[0].video = baseurl + res.data.poserInfoList[0]
|
||||
.posterVideoUrl
|
||||
this.swiperImgUrls.push(res.data.poserInfoList[0].video)
|
||||
}
|
||||
}
|
||||
this.getHeathHousing();
|
||||
}
|
||||
})
|
||||
},
|
||||
//专病管理
|
||||
godiseasemanagement() {
|
||||
const phone = uni.getStorageSync('phone');
|
||||
if (phone) {
|
||||
uni.navigateToMiniProgram({
|
||||
appId: 'wx3341cfb0602789f6',
|
||||
path: 'pages/index/index',
|
||||
extraData: {
|
||||
'from': 'qy',
|
||||
'phone': phone
|
||||
},
|
||||
success(res) {}
|
||||
})
|
||||
} else {
|
||||
this.$refs.uToast.show({
|
||||
title: '您未登录,请先登录',
|
||||
type: 'error',
|
||||
duration: '1000',
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/diseasemanagement/diseasemanagement'
|
||||
// })
|
||||
},
|
||||
//齐鲁名医
|
||||
gomedicine() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/medicine/medicine'
|
||||
})
|
||||
},
|
||||
//跳转客服
|
||||
gocustomerservice() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/customerservice/customerservice'
|
||||
})
|
||||
},
|
||||
//跳转护理站页面
|
||||
gosite() {
|
||||
this.openPopup();
|
||||
setTimeout(e => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/site/site'
|
||||
})
|
||||
}, 0)
|
||||
},
|
||||
//健康常识
|
||||
gohealth() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/Healthknowledge/Healthknowledge'
|
||||
})
|
||||
},
|
||||
//新人福利
|
||||
// 第一种 直接映射
|
||||
...mapActions(["openPopup"]),
|
||||
gomaterialbenefits() {
|
||||
// 第二种引入
|
||||
// this.$store.dispatch("openPopup");
|
||||
this.openPopup();
|
||||
setTimeout(e => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/materialbenefits/materialbenefits'
|
||||
})
|
||||
}, 0)
|
||||
},
|
||||
//跳转商城
|
||||
goshopping() {
|
||||
this.openPopup();
|
||||
setTimeout(e => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/shopping/shopping'
|
||||
})
|
||||
}, 0)
|
||||
},
|
||||
//跳转新意象
|
||||
goycjc() {
|
||||
uni.navigateToMiniProgram({
|
||||
appId: 'wxa2335d45fb25ee50',
|
||||
success(res) {}
|
||||
})
|
||||
},
|
||||
//跳转疏于
|
||||
gosuyu() {
|
||||
uni.navigateToMiniProgram({
|
||||
appId: 'wxa0e41e29dd9e540b',
|
||||
path: 'pages/index/index?source=ad_app_yryl-qydjtzwx',
|
||||
success(res) {}
|
||||
})
|
||||
},
|
||||
//跳转就医
|
||||
goseekmedicaladvice() {
|
||||
uni.navigateToMiniProgram({
|
||||
appId: 'wx4f1d77226064cfc1',
|
||||
path: 'pages/index/index',
|
||||
success(res) {}
|
||||
})
|
||||
},
|
||||
//跳转管家
|
||||
goguanjia() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/Industrialbutler/Industrialbutler'
|
||||
})
|
||||
},
|
||||
//跳转
|
||||
gopzyh() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/nursestation/nursestation?nurseStationId=${13}`
|
||||
})
|
||||
},
|
||||
//跳转贴心智养
|
||||
gonight() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/night/night'
|
||||
})
|
||||
},
|
||||
},
|
||||
// onReachBottom() { //下滑加载
|
||||
// if (this.informationCategoryVOList.length >= this.informationCategorytotal) {} else {
|
||||
// this.pageNum++
|
||||
// getHeathHousingList(this.pageNum, this.pageSize).then(res => {
|
||||
// if (res.rows) {
|
||||
// res.rows.forEach(e => {
|
||||
// e.leadThumbnailUrl = baseurl + e.leadThumbnailUrl
|
||||
// this.informationCategoryVOList.push(e)
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// },
|
||||
// onPullDownRefresh() { //下拉刷新
|
||||
// this.pageNum = 1;
|
||||
// this.getHeathHousing();
|
||||
// setTimeout(function() {
|
||||
// uni.stopPullDownRefresh();
|
||||
// }, 1000);
|
||||
// },
|
||||
//1.分享给朋友
|
||||
onShareAppMessage(res) {
|
||||
let pages = getCurrentPages();
|
||||
let url = pages[pages.length - 1].$page.fullPath
|
||||
return {
|
||||
title: '泉医到家',
|
||||
path: url,
|
||||
}
|
||||
},
|
||||
//2.分享到朋友圈
|
||||
onShareTimeline(res) {
|
||||
let pages = getCurrentPages();
|
||||
let url = pages[pages.length - 1].$page.fullPath
|
||||
return {
|
||||
title: '泉医到家',
|
||||
path: url,
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.app {
|
||||
padding: 0 0 0 0;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
|
||||
</style>
|
||||
.container {
|
||||
padding-top: 65rpx;
|
||||
background-color: #fff
|
||||
}
|
||||
|
||||
.swiper-block {
|
||||
height: 500rpx;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.swiper-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: flex-start;
|
||||
overflow: unset;
|
||||
}
|
||||
|
||||
.slide-image {
|
||||
height: 270rpx;
|
||||
width: 580rpx;
|
||||
border-radius: 9rpx;
|
||||
box-shadow: 0px 0px 30rpx rgba(0, 0, 0, 0.2);
|
||||
margin: 0 0 0 30rpx;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.active {
|
||||
transform: scale(1.10);
|
||||
transition: all 0.2s ease-in 0s;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
video {
|
||||
// height: 100%;
|
||||
// width: 100%;
|
||||
}
|
||||
|
||||
.Healthknowledge {
|
||||
width: 100%;
|
||||
padding: 40rpx 50rpx 50rpx;
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
line-height: 46rpx;
|
||||
|
||||
.more {
|
||||
position: absolute;
|
||||
right: 20rpx;
|
||||
top: 40rpx;
|
||||
height: 46rpx;
|
||||
width: 30%;
|
||||
|
||||
.title {
|
||||
position: absolute;
|
||||
right: 30rpx;
|
||||
top: 50%;
|
||||
text-align: right;
|
||||
transform: translateY(-50%);
|
||||
font-size: 26rpx;
|
||||
font-family: Adobe Heiti Std;
|
||||
font-weight: normal;
|
||||
color: #969494;
|
||||
}
|
||||
|
||||
image {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 15rpx;
|
||||
height: 25rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.list {
|
||||
width: 100%;
|
||||
margin: 20rpx auto 0;
|
||||
|
||||
.item {
|
||||
width: 100%;
|
||||
height: 250rpx;
|
||||
position: relative;
|
||||
border-bottom: 2rpx solid #CDC9C9;
|
||||
|
||||
image {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.author {
|
||||
position: absolute;
|
||||
bottom: 20rpx;
|
||||
left: 0;
|
||||
font-size: 20rpx;
|
||||
color: #969494;
|
||||
}
|
||||
|
||||
.text {
|
||||
position: absolute;
|
||||
top: 20rpx;
|
||||
left: 0;
|
||||
width: 65%;
|
||||
font-size: 30rpx;
|
||||
text-overflow: -o-ellipsis-lastline;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 5; //行数需设置
|
||||
line-clamp: 5;
|
||||
-webkit-box-orient: vertical;
|
||||
text-align: justify;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.Welfarecustomerservice {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
flex-wrap: wrap;
|
||||
background-color: #fff;
|
||||
width: 100%;
|
||||
padding: 30rpx 2%;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.topimgs {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
width: 100%;
|
||||
margin-bottom: 30rpx;
|
||||
|
||||
image {
|
||||
width: 30%;
|
||||
height: 160rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.shopping {
|
||||
width: 98%;
|
||||
height: 160rpx;
|
||||
}
|
||||
|
||||
.rightimg {
|
||||
display: inline-block;
|
||||
width: 48%;
|
||||
|
||||
image {
|
||||
display: block;
|
||||
margin-bottom: 15rpx;
|
||||
width: 100%;
|
||||
height: 120rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.night {
|
||||
width: 48%;
|
||||
height: 340rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.items {
|
||||
background-color: #fff;
|
||||
padding: 30rpx 20rpx 20px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.item {
|
||||
width: 25%;
|
||||
|
||||
image {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
display: block;
|
||||
margin: 0 auto 20rpx;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 36rpx;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -15,7 +15,7 @@
|
||||
<script>
|
||||
import {
|
||||
getNurseClassifyList
|
||||
} from '@/api/site/site.js';
|
||||
} from '@/api/pagesB/site/site.js';
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
data() {
|
||||
|
||||
@ -82,16 +82,16 @@
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
import {
|
||||
lookrate
|
||||
} from '@/api/lookrate/index.js'
|
||||
} from '@/api/pagesB/lookrate/index.js'
|
||||
import {
|
||||
appletAppointmentOrderPay
|
||||
} from '@/api/appointmenttime/appointmenttime.js'
|
||||
} from '@/api/pagesB/appointmenttime/appointmenttime.js'
|
||||
import {
|
||||
addAppointmentEvaluate
|
||||
} from '@/api/ServiceDetails/ServiceDetails.js'
|
||||
} from '@/api/pagesB/ServiceDetails/ServiceDetails.js'
|
||||
import {
|
||||
appServiceOrder
|
||||
} from '@/api/Nursingstationserviceorder/Nursingstationserviceorder.js'
|
||||
} from '@/api/pagesB/Nursingstationserviceorder/Nursingstationserviceorder.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -201,7 +201,7 @@
|
||||
}
|
||||
this.timer = setTimeout(e => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/ratesuccess/ratesuccess?delta=${1}`
|
||||
url: `/pagesB/ratesuccess/ratesuccess?delta=${1}`
|
||||
})
|
||||
}, 1500)
|
||||
}
|
||||
@ -275,7 +275,7 @@
|
||||
},
|
||||
gofinished(item) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/ServiceDetails/ServiceDetails?orderNo=${item.orderNo}`
|
||||
url: `/pagesB/ServiceDetails/ServiceDetails?orderNo=${item.orderNo}`
|
||||
})
|
||||
},
|
||||
},
|
||||
|
||||
@ -1,186 +0,0 @@
|
||||
.app {
|
||||
font-size: 35rpx;
|
||||
padding: 0 0 200rpx 0;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
.service {
|
||||
position: absolute;
|
||||
top:985rpx;
|
||||
left:2%;
|
||||
width: 96%;
|
||||
height: 100rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0,0,0,0.03);
|
||||
border-radius: 10rpx;
|
||||
image {
|
||||
width: 13rpx;
|
||||
height: 23rpx;
|
||||
position: absolute;
|
||||
right:40rpx;
|
||||
top:50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
.serviceorder {
|
||||
font-size: 32rpx;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
position: absolute;
|
||||
left: 31rpx;
|
||||
}
|
||||
}
|
||||
.content {
|
||||
position: absolute;
|
||||
top:670rpx;
|
||||
left:2%;
|
||||
width: 96%;
|
||||
height: 300rpx;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0,0,0,0.03);
|
||||
border-radius: 10rpx;
|
||||
.center {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
padding-top: 50rpx;
|
||||
.OrderStatus {
|
||||
position: relative;
|
||||
height: 180rpx;
|
||||
width: 25%;
|
||||
.title{
|
||||
position: absolute;
|
||||
top: 80rpx;
|
||||
width:100%;
|
||||
left:50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
image {
|
||||
width: 71rpx;
|
||||
height: 63rpx;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.orderCount {
|
||||
width: 38rpx;
|
||||
height: 38rpx;
|
||||
background: #FFFFFF;
|
||||
border: 3rpx solid #DC222F;
|
||||
position: absolute;
|
||||
top: -20rpx;
|
||||
right: 35rpx;
|
||||
font-size: 22rpx;
|
||||
border-radius: 50%;
|
||||
line-height: 35rpx;
|
||||
color: #DC222F;
|
||||
}
|
||||
}
|
||||
}
|
||||
.CommodityOrder {
|
||||
font-size: 32rpx;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
position: relative;
|
||||
.title{
|
||||
position: absolute;
|
||||
left: 31rpx;
|
||||
}
|
||||
.text{
|
||||
position: absolute;
|
||||
right: 40rpx;
|
||||
font-size: 26rpx;
|
||||
color: #969494;
|
||||
image{
|
||||
position: absolute;
|
||||
top:50%;
|
||||
transform: translateY(-50%);
|
||||
padding-left: 10rpx;
|
||||
width: 13rpx;
|
||||
height: 23rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.userinfo{
|
||||
position: absolute;
|
||||
top:420rpx;
|
||||
left:2%;
|
||||
display: flex;
|
||||
width: 96%;
|
||||
height: 220rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 10rpx;
|
||||
box-shadow: 0rpx 0rpx 24rpx 0rpx rgba(101,176,249,0.41);
|
||||
.item{
|
||||
width: 33%;
|
||||
height: 100%;
|
||||
padding-top: 40rpx;
|
||||
.text{
|
||||
font-size: 30rpx;
|
||||
line-height: 60rpx;
|
||||
}
|
||||
image{
|
||||
// margin-left: 50%;
|
||||
// transform: translateX(-50%);
|
||||
width: 85rpx;
|
||||
height: 74rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.user {
|
||||
width: 100%;
|
||||
height: 550rpx;
|
||||
position: relative;
|
||||
color: #FFFFFF;
|
||||
font-size: 39rpx;
|
||||
.modify {
|
||||
position: absolute;
|
||||
right: 3%;
|
||||
top:250rpx;
|
||||
font-size:28rpx;
|
||||
image{
|
||||
width: 23rpx;
|
||||
height: 23rpx;
|
||||
padding-left: 10rpx;
|
||||
}
|
||||
}
|
||||
.login{
|
||||
position: absolute;
|
||||
top: 220rpx;
|
||||
left: 35%;
|
||||
font-size: 36rpx;
|
||||
width: 180rpx;
|
||||
line-height: 70rpx;
|
||||
border:1rpx solid #fff;
|
||||
height: 70rpx;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
.nickname {
|
||||
position: absolute;
|
||||
top: 300rpx;
|
||||
left: 35%;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.phone {
|
||||
position: absolute;
|
||||
top: 180rpx;
|
||||
left: 35%;
|
||||
}
|
||||
.bjimg{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
image{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.img {
|
||||
width: 150rpx;
|
||||
height: 150rpx;
|
||||
border-radius: 50%;
|
||||
background: #F6F6F6;
|
||||
position: absolute;
|
||||
top: 180rpx;
|
||||
left: 8%;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,388 +0,0 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<view class="user" v-if="appPersonallist">
|
||||
<image v-if="appPersonallist.headPictureUrl" class="img" :src="baseurl+appPersonallist.headPictureUrl"
|
||||
mode=""></image>
|
||||
<image class="img" v-else src="../../static/user.png" mode=""></image>
|
||||
<image class="bjimg" :src="bjimg" mode=""></image>
|
||||
<view class="phone" v-if="appPersonallist.patientName">
|
||||
{{appPersonallist.patientName}}
|
||||
</view>
|
||||
<view class="nickname" style="top:250rpx">
|
||||
<span style='padding-right: 10rpx;' v-if="appPersonallist.age!=null&&appPersonallist.age>=0">
|
||||
{{appPersonallist.age}}
|
||||
</span>
|
||||
<span style='padding-right: 30rpx;' v-if="appPersonallist.age!=null&&appPersonallist.age>=0">
|
||||
岁
|
||||
</span>
|
||||
{{appPersonallist.sex=='MALE'?'男':''}}
|
||||
{{appPersonallist.sex=='FEMALE'?'女':''}}
|
||||
</span>
|
||||
</view>
|
||||
<view class="nickname">
|
||||
{{appPersonallist.phone}}
|
||||
</view>
|
||||
<view class="modify" @tap='updatainfo()'>
|
||||
修改信息
|
||||
<image src="../../static/xg.png" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="user" v-else>
|
||||
<image class="img" src="../../static/user.png" mode=""></image>
|
||||
<image class="bjimg" :src="bjimg" mode=""></image>
|
||||
<view class="login" @tap='gologin'>
|
||||
登录
|
||||
</view>
|
||||
</view>
|
||||
<view class="userinfo">
|
||||
<view class="item" @tap='goHealthrecords'>
|
||||
<image src="../../static/jkda.png" mode=""></image>
|
||||
<view class="text">
|
||||
健康档案
|
||||
</view>
|
||||
</view>
|
||||
<view class="item" @tap='gointegral'>
|
||||
<image src="../../static/jifen.png" mode=""></image>
|
||||
<view class="text">
|
||||
积分
|
||||
<span style='padding:0 5rpx' v-if="appPersonallist.integral&&appPersonallist.integral>=0">
|
||||
{{appPersonallist.integral}}</span>
|
||||
<span style='padding:0 5rpx' v-else>
|
||||
0</span>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item" @tap="gocoupon">
|
||||
<image src="../../static/yhj.png" mode=""></image>
|
||||
<view class="text">
|
||||
优惠券
|
||||
<span style='padding:0 5rpx'
|
||||
v-if="appPersonallist.patientCouponCount&&appPersonallist.patientCouponCount>=0">
|
||||
{{appPersonallist.patientCouponCount}}</span>
|
||||
<span style='padding:0 5rpx' v-else>
|
||||
0</span>张
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="content">
|
||||
<view class="CommodityOrder" @tap="goorder">
|
||||
<view class="title">
|
||||
商品订单
|
||||
</view>
|
||||
<view class="text">
|
||||
查看全部
|
||||
<image src="../../static/huijiantou.png" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="center">
|
||||
<view class="OrderStatus" @tap="gopaid('WAIT_PAY')">
|
||||
<image src="/static/Tobepaid.png" mode=""></image>
|
||||
<view class="title">待付款</view>
|
||||
<view class="orderCount" v-if="appPersonallist.waitPayCount>0&&appPersonallist.waitPayCount<100">
|
||||
{{appPersonallist.waitPayCount}}
|
||||
</view>
|
||||
<view class="orderCount" style="width: 57rpx;border-radius: 17rpx;right:25rpx"
|
||||
v-if="appPersonallist.waitPayCount>=100">
|
||||
99+
|
||||
</view>
|
||||
</view>
|
||||
<view class="OrderStatus" @tap="goreceive('WAIT_RECEIVED_GOODS')">
|
||||
<image src="/static/received.png" mode=""></image>
|
||||
<view class="title">待收货</view>
|
||||
<view class="orderCount"
|
||||
v-if="appPersonallist.waitReceivedGoodsCount>0&&appPersonallist.waitReceivedGoodsCount<100">
|
||||
{{appPersonallist.waitReceivedGoodsCount}}
|
||||
</view>
|
||||
<view class="orderCount" style="width: 57rpx;border-radius: 17rpx;right:25rpx"
|
||||
v-if="appPersonallist.waitReceivedGoodsCount>=100">
|
||||
99+
|
||||
</view>
|
||||
</view>
|
||||
<view class="OrderStatus" @tap="gocompleted('RECEIVED_GOODS')">
|
||||
<image src="/static/evaluated.png" mode=""></image>
|
||||
<view class="title">待评价</view>
|
||||
<view class="orderCount"
|
||||
v-if="appPersonallist.receivedGoodsCount>0&&appPersonallist.receivedGoodsCount<100">
|
||||
{{appPersonallist.receivedGoodsCount}}
|
||||
</view>
|
||||
<view class="orderCount" style="width: 57rpx;border-radius: 17rpx;right:25rpx"
|
||||
v-if="list.receivedGoodsCount>=100">
|
||||
99+
|
||||
</view>
|
||||
</view>
|
||||
<view class="OrderStatus" @tap="goEVALUATED('EVALUATED')">
|
||||
<image src="/static/finished.png" mode=""></image>
|
||||
<view class="title">已完成</view>
|
||||
<!-- <view class="orderCount" v-if="list.evaluatedCount>0&&list.evaluatedCount<100">
|
||||
{{list.evaluatedCount}}
|
||||
</view>
|
||||
<view class="orderCount" v-if="list.evaluatedCount>=100">
|
||||
99+
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="service" @tap="gonursestation">
|
||||
<view class="serviceorder">预约服务订单</view>
|
||||
<image src="../../static/huijiantou.png" mode=""></image>
|
||||
</view>
|
||||
<!-- <view class="service" style="top:1100rpx" @tap="">
|
||||
<view class="serviceorder">健康咨询订单</view>
|
||||
<image src="../../static/huijiantou.png" mode=""></image>
|
||||
</view> -->
|
||||
<view class="service" style="top:1100rpx" @tap='remove'>
|
||||
<view class="serviceorder">退出账号</view>
|
||||
<image src="../../static/huijiantou.png" mode=""></image>
|
||||
</view>
|
||||
<u-toast ref="uToast" />
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
mapActions
|
||||
} from "vuex";
|
||||
import {
|
||||
appPersonal,
|
||||
} from '@/api/Personal/Personal.js';
|
||||
import {
|
||||
existPatientInfo
|
||||
} from '@/api/startup/index.js'
|
||||
import {
|
||||
createMobileToken
|
||||
} from '@/api/login/index.js'
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
baseurl: '',
|
||||
appPersonallist: null, //获取个人信息
|
||||
timer: null,
|
||||
list: {},
|
||||
bjimg: '',
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.bjimg = baseurl + '/profile/appletPicture/inviteFriendsOne.png'
|
||||
let that = this
|
||||
this.baseurl = baseurl
|
||||
this.myInfo()
|
||||
const value = uni.getStorageSync('patientId');
|
||||
if (value) {} else {
|
||||
that.appPersonallist = null
|
||||
that.$refs.uToast.show({
|
||||
title: '您未登录,请先登录',
|
||||
type: 'error',
|
||||
duration: '1000',
|
||||
})
|
||||
}
|
||||
},
|
||||
onLoad(options) {},
|
||||
methods: {
|
||||
remove() {
|
||||
let that = this
|
||||
const value = uni.getStorageSync('patientId');
|
||||
if (value) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确认要退出此账号吗',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.clearStorageSync();
|
||||
that.$refs.uToast.show({
|
||||
title: '退出账号成功',
|
||||
type: 'success',
|
||||
duration: '1000'
|
||||
})
|
||||
createMobileToken().then(res => {
|
||||
uni.setStorageSync("token", res.data.token)
|
||||
})
|
||||
if (that.timer) {
|
||||
clearTimeout(that.timer)
|
||||
}
|
||||
that.timer = setTimeout(e => {
|
||||
uni.switchTab({
|
||||
url: '/pages/homepage/homepage'
|
||||
})
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
that.$refs.uToast.show({
|
||||
title: '您未登录,请先登录',
|
||||
type: 'error',
|
||||
duration: '1000'
|
||||
})
|
||||
}
|
||||
},
|
||||
removes() {
|
||||
this.appPersonallist = null
|
||||
uni.removeStorageSync('patientId');
|
||||
uni.removeStorageSync('openid');
|
||||
uni.removeStorageSync('phone');
|
||||
uni.removeStorageSync('Refresh');
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
},
|
||||
//获取个人信息
|
||||
myInfo() {
|
||||
var that = this
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
existPatientInfo(value).then(res => {
|
||||
if (res.code == 200 && res.msg == 'LOGIN') {
|
||||
appPersonal(value2).then(Response => {
|
||||
if (Response.code == 200) {
|
||||
that.appPersonallist = Response.data
|
||||
if (!that.appPersonallist.integral) {
|
||||
that.appPersonallist.integral = 0
|
||||
}
|
||||
that.appPersonallist.homeLatitude = Number(that.appPersonallist
|
||||
.homeLatitude)
|
||||
that.appPersonallist.homeLongitude = Number(that.appPersonallist
|
||||
.homeLongitude)
|
||||
} else if (Response.code == 9999) {} else {
|
||||
that.removes();
|
||||
}
|
||||
})
|
||||
} else {
|
||||
that.removes();
|
||||
}
|
||||
})
|
||||
} else {
|
||||
that.removes();
|
||||
}
|
||||
},
|
||||
updatainfo() {
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/modify/modify`
|
||||
})
|
||||
} else {
|
||||
this.gologin();
|
||||
}
|
||||
},
|
||||
//护理站服务订单
|
||||
gonursestation() {
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/Nursingstationserviceorder/Nursingstationserviceorder'
|
||||
})
|
||||
} else {
|
||||
this.gologin();
|
||||
}
|
||||
},
|
||||
//待收货
|
||||
goreceive(item) {
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/CommodityOrder/CommodityOrder?orderStatus=${item}`
|
||||
})
|
||||
} else {
|
||||
this.gologin();
|
||||
}
|
||||
},
|
||||
//全部订单
|
||||
goorder() {
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/CommodityOrder/CommodityOrder'
|
||||
})
|
||||
} else {
|
||||
this.gologin();
|
||||
}
|
||||
},
|
||||
//去登陆
|
||||
gologin() {
|
||||
this.$refs.uToast.show({
|
||||
title: '您未登录,请先登录',
|
||||
type: 'error',
|
||||
duration: '1000',
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
},
|
||||
//优惠券
|
||||
gocoupon() {
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/coupon/coupon'
|
||||
})
|
||||
} else {
|
||||
this.gologin();
|
||||
}
|
||||
},
|
||||
//积分页面
|
||||
...mapActions(["integralopenPopup"]),
|
||||
gointegral() {
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
this.integralopenPopup();
|
||||
setTimeout(e => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/integral/integral?integral=${this.appPersonallist.integral}`
|
||||
})
|
||||
}, 0)
|
||||
} else {
|
||||
this.gologin();
|
||||
}
|
||||
},
|
||||
//已完成
|
||||
goEVALUATED(item) {
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/CommodityOrder/CommodityOrder?orderStatus=${item}`
|
||||
})
|
||||
} else {
|
||||
this.gologin();
|
||||
}
|
||||
},
|
||||
//待评价
|
||||
gocompleted(item) {
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/CommodityOrder/CommodityOrder?orderStatus=${item}`
|
||||
})
|
||||
} else {
|
||||
this.gologin();
|
||||
}
|
||||
},
|
||||
//待付款
|
||||
gopaid(item) {
|
||||
const value = uni.getStorageSync('openid');
|
||||
const value2 = uni.getStorageSync('patientId');
|
||||
if (value && value2) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/CommodityOrder/CommodityOrder?orderStatus=${item}`
|
||||
})
|
||||
} else {
|
||||
this.gologin();
|
||||
}
|
||||
},
|
||||
//健康档案
|
||||
goHealthrecords() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/Healthrecords/Healthrecords'
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
@import "./Personal.scss";
|
||||
</style>
|
||||
@ -3,7 +3,7 @@
|
||||
<u-tabs :list="GoodsCategorychildrenlist" :current="tabIndex" @change="toggleTab"
|
||||
v-if="GoodsCategorychildrenlist.length>=2"></u-tabs>
|
||||
<view class="fenlei" @tap='toggleTab(1111111111111)' v-if="GoodsCategorychildrenlist.length>=2">
|
||||
<image src="../../static/fenlei.png" mode=""></image>
|
||||
<image src="../../static/pagesB/fenlei.png" mode=""></image>
|
||||
<view class="">
|
||||
分类
|
||||
</view>
|
||||
@ -39,7 +39,7 @@
|
||||
import {
|
||||
goodsList,
|
||||
getGoodsCategoryNameList
|
||||
} from '@/api/ProductList/ProductList.js';
|
||||
} from '@/api/pagesB/ProductList/ProductList.js';
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
components: {},
|
||||
|
||||
@ -47,7 +47,7 @@
|
||||
<u-toast ref="uToast" />
|
||||
<u-mask :show="usershow" class='mask'>
|
||||
<view class="information">
|
||||
<image src="../../static/information.png" mode=""></image>
|
||||
<image src="../../static/pagesB/information.png" mode=""></image>
|
||||
<view class="title">
|
||||
请完善个人信息
|
||||
</view>
|
||||
@ -64,11 +64,11 @@
|
||||
<script>
|
||||
import {
|
||||
AppIdentification
|
||||
} from '@/api/AppIdentification/index.js'
|
||||
} from '@/api/pagesB/AppIdentification/index.js'
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
import {
|
||||
getAppStationItemInfo
|
||||
} from '@/api/ProjectDetails/index.js'
|
||||
} from '@/api/pagesB/ProjectDetails/index.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -164,11 +164,11 @@
|
||||
const scenenurseStationId = uni.getStorageSync('scenenurseStationId');
|
||||
if (that.nurseStationId == scenenurseStationId) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/hospitalcare/hospitalcare?stationId=${this.stationId}&stationItemId=${this.stationItemId}&stationItemPriceId=${this.stationItemPriceId}`,
|
||||
url: `/pagesB/hospitalcare/hospitalcare?stationId=${this.stationId}&stationItemId=${this.stationItemId}&stationItemPriceId=${this.stationItemPriceId}`,
|
||||
})
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: `/pages/appointmenttime/appointmenttime?stationId=${this.stationId}&stationItemId=${this.stationItemId}&stationItemPriceId=${this.stationItemPriceId}`,
|
||||
url: `/pagesB/appointmenttime/appointmenttime?stationId=${this.stationId}&stationItemId=${this.stationItemId}&stationItemPriceId=${this.stationItemPriceId}`,
|
||||
})
|
||||
}
|
||||
} else {
|
||||
|
||||
@ -146,16 +146,16 @@
|
||||
<script>
|
||||
import {
|
||||
appletAppointmentOrderPay
|
||||
} from '@/api/appointmenttime/appointmenttime.js'
|
||||
} from '@/api/pagesB/appointmenttime/appointmenttime.js'
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
import {
|
||||
getAppointmentDetailsInfo,
|
||||
addAppointmentEvaluate,
|
||||
handCloseOrder
|
||||
} from '@/api/ServiceDetails/ServiceDetails.js'
|
||||
} from '@/api/pagesB/ServiceDetails/ServiceDetails.js'
|
||||
import {
|
||||
lookrate
|
||||
} from '@/api/lookrate/index.js'
|
||||
} from '@/api/pagesB/lookrate/index.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@ -265,7 +265,7 @@
|
||||
title: '支付成功',
|
||||
type: 'success',
|
||||
duration: 1500,
|
||||
url: `/pages/paysuccess/paysuccess?delta=${2}`
|
||||
url: `/pagesB/paysuccess/paysuccess?delta=${2}`
|
||||
})
|
||||
},
|
||||
fail: function(err) {
|
||||
@ -310,7 +310,7 @@
|
||||
}
|
||||
this.timer = setTimeout(e => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/ratesuccess/ratesuccess?delta=${1}`
|
||||
url: `/pagesB/ratesuccess/ratesuccess?delta=${1}`
|
||||
})
|
||||
}, 1500)
|
||||
} else {
|
||||
@ -365,7 +365,7 @@
|
||||
},
|
||||
cancelorderment() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/cancelorder/cancelorder?nurseItemPrice=${this.list.totalPrice}&appointmentOrderId=${this.list.appointmentOrderId}`
|
||||
url: `/pagesB/cancelorder/cancelorder?nurseItemPrice=${this.list.totalPrice}&appointmentOrderId=${this.list.appointmentOrderId}`
|
||||
})
|
||||
},
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
<view class="content" v-for="(item,index) in HospitalPersonlist" :key="item.id">
|
||||
<image class="hospitalimage" v-if="item.personPictureUrl"
|
||||
:src="baseurl+item.personPictureUrl" mode=""></image>
|
||||
<image class="hospitalimage" v-else src="@/static/yis.png" mode=""></image>
|
||||
<image class="hospitalimage" v-else src="@/static/pagesB/yis.png" mode=""></image>
|
||||
<view class="hospitalteacher">{{item.personName}}</view>
|
||||
<view class="physician">
|
||||
{{ item.academicTitle=='CHIEF_PHYSICIAN'?'主任医师':''}}
|
||||
@ -60,7 +60,7 @@
|
||||
</view>
|
||||
<u-mask :show="usershow" class='mask'>
|
||||
<view class="information">
|
||||
<image src="../../static/information.png" mode=""></image>
|
||||
<image src="../../static/pagesB/information.png" mode=""></image>
|
||||
<view class="title">
|
||||
请完善个人信息
|
||||
</view>
|
||||
@ -79,11 +79,11 @@
|
||||
<script>
|
||||
import {
|
||||
AppIdentification
|
||||
} from '@/api/AppIdentification/index.js'
|
||||
} from '@/api/pagesB/AppIdentification/index.js'
|
||||
import {
|
||||
selectDepartment,
|
||||
selectHospitalPerson
|
||||
} from '@/api/medicine/index.js'
|
||||
} from '@/api/pagesB/medicine/index.js'
|
||||
import baseurl from '../../api/baseurl';
|
||||
export default {
|
||||
data() {
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<view class="userinfo">
|
||||
<view class="itemimgs">
|
||||
<image class="picture" :src="img" mode="" v-if="img" @tap='uploadImag'></image>
|
||||
<image class="picture" src="../../static/userl.png" mode="" v-else @tap='uploadImag'></image>
|
||||
<image class="picture" src="../../static/pagesB/userl.png" mode="" v-else @tap='uploadImag'></image>
|
||||
</view>
|
||||
<view class="item">
|
||||
<span>姓名:</span>
|
||||
@ -104,18 +104,18 @@
|
||||
<script>
|
||||
import {
|
||||
getRegionAndStreetInfo
|
||||
} from '@/api/information/index.js'
|
||||
} from '@/api/pagesB/information/index.js'
|
||||
import {
|
||||
information
|
||||
} from '@/api/information/index.js'
|
||||
} from '@/api/pagesB/information/index.js'
|
||||
import contenttext from '../../components/text.vue'
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
import {
|
||||
appPersonal,
|
||||
} from '@/api/Personal/Personal.js';
|
||||
} from '@/api/pagesB/Personal/Personal.js';
|
||||
import {
|
||||
getSubordinateRegions,
|
||||
} from '@/api/modifyAddress/modifyAddress.js';
|
||||
} from '@/api/pagesB/modifyAddress/modifyAddress.js';
|
||||
import gkcity from "../../components/m-city/m-city.vue";
|
||||
export default {
|
||||
components: {
|
||||
@ -182,8 +182,10 @@
|
||||
appPersonal(value).then(Response => {
|
||||
if (Response.code == 200) {
|
||||
that.appPersonallist = Response.data
|
||||
Number(that.appPersonallist.homeLatitude) > 0 ? that.appPersonallist.homeLatitude = Number(that.appPersonallist.homeLatitude) : that.appPersonallist.homeLatitude = null
|
||||
Number(that.appPersonallist.homeLongitude) > 0 ? that.appPersonallist.homeLongitude = Number(that.appPersonallist.homeLongitude):that.appPersonallist.homeLongitude = null
|
||||
Number(that.appPersonallist.homeLatitude) > 0 ? that.appPersonallist.homeLatitude = Number(
|
||||
that.appPersonallist.homeLatitude) : that.appPersonallist.homeLatitude = null
|
||||
Number(that.appPersonallist.homeLongitude) > 0 ? that.appPersonallist.homeLongitude =
|
||||
Number(that.appPersonallist.homeLongitude) : that.appPersonallist.homeLongitude = null
|
||||
if (that.appPersonallist.headPictureUrl) {
|
||||
that.img = baseurl + that.appPersonallist.headPictureUrl
|
||||
}
|
||||
@ -432,4 +434,4 @@
|
||||
|
||||
<style lang="scss">
|
||||
@import "./modify.scss"
|
||||
</style>
|
||||
</style>
|
||||
@ -32,7 +32,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="ADDress" @tap='add()'>
|
||||
<image src="../../static/add.png" mode=""></image>
|
||||
<image src="../../static/pagesB/add.png" mode=""></image>
|
||||
<span class="ADDtext">
|
||||
添加地址
|
||||
</span>
|
||||
@ -42,7 +42,7 @@
|
||||
<view class="payment" @click.stop=''>
|
||||
<span>{{shipAddress}}</span>
|
||||
<view class="cencel" @tap="cencel()">
|
||||
<image src="../../static/gb.png" mode=""></image>
|
||||
<image src="../../static/pagesB/gb.png" mode=""></image>
|
||||
</view>
|
||||
<view class="addinfos">
|
||||
<u-field v-model="infolist.receiveName" label="收货人" placeholder="姓名" class="items" maxlength='10'>
|
||||
@ -93,7 +93,7 @@
|
||||
getSubordinateRegions,
|
||||
getSubordinate,
|
||||
updateDefaultAddress
|
||||
} from '@/api/modifyAddress/modifyAddress.js';
|
||||
} from '@/api/pagesB/modifyAddress/modifyAddress.js';
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
import gkcity from "../../components/m-city/m-city.vue";
|
||||
export default {
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="address" @tap="goMap">
|
||||
<image src="../../static/locatinsmall.png" mode=""></image>
|
||||
<image src="../../static/pagesB/locatinsmall.png" mode=""></image>
|
||||
<view class="text">
|
||||
{{list.address||'暂无'}}
|
||||
</view>
|
||||
@ -64,7 +64,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="address" style="margin: 20rpx 0 0 33rpx;" @tap='gophone'>
|
||||
<image src="../../static/phone.png" mode=""></image>
|
||||
<image src="../../static/pagesB/phone.png" mode=""></image>
|
||||
<view class="text">
|
||||
{{list.dutyPhone||'暂无'}}
|
||||
</view>
|
||||
@ -118,7 +118,7 @@
|
||||
</view>
|
||||
<u-mask :show="usershow" class='mask'>
|
||||
<view class="information">
|
||||
<image src="../../static/information.png" mode=""></image>
|
||||
<image src="../../static/pagesB/information.png" mode=""></image>
|
||||
<view class="title">
|
||||
请完善个人信息
|
||||
</view>
|
||||
@ -138,18 +138,18 @@
|
||||
<script>
|
||||
import {
|
||||
getPatientInfo,
|
||||
} from '@/api/site/site.js';
|
||||
} from '@/api/pagesB/site/site.js';
|
||||
import {
|
||||
AppIdentification
|
||||
} from '@/api/AppIdentification/index.js'
|
||||
} from '@/api/pagesB/AppIdentification/index.js'
|
||||
import {
|
||||
introductionList,
|
||||
itemList,
|
||||
productInformation,
|
||||
} from '@/api/nursestation/nursestation.js';
|
||||
} from '@/api/pagesB/nursestation/nursestation.js';
|
||||
import {
|
||||
createMobileToken
|
||||
} from '@/api/login/index.js'
|
||||
} from '@/api/pagesB/login/index.js'
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
data() {
|
||||
@ -332,7 +332,7 @@
|
||||
const scenenurseStationId = uni.getStorageSync('scenenurseStationId');
|
||||
if (that.list.nurseStationId == scenenurseStationId) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/hospitalcare/hospitalcare?stationId=${item.stationId}&stationItemId=${item.stationItemId}&stationItemPriceId=${item.stationItemPriceId}`,
|
||||
url: `/pagesB/hospitalcare/hospitalcare?stationId=${item.stationId}&stationItemId=${item.stationItemId}&stationItemPriceId=${item.stationItemPriceId}`,
|
||||
})
|
||||
} else {
|
||||
AppIdentification(patientId).then(res => {
|
||||
@ -340,7 +340,7 @@
|
||||
if (res.data.loginFlag) {
|
||||
that.usershow = false
|
||||
uni.navigateTo({
|
||||
url: `/pages/appointmenttime/appointmenttime?stationId=${item.stationId}&stationItemId=${item.stationItemId}&stationItemPriceId=${item.stationItemPriceId}`,
|
||||
url: `/pagesB/appointmenttime/appointmenttime?stationId=${item.stationId}&stationItemId=${item.stationItemId}&stationItemPriceId=${item.stationItemPriceId}`,
|
||||
})
|
||||
} else {
|
||||
that.usershow = true
|
||||
@ -349,7 +349,7 @@
|
||||
that.$refs.uToast.show({
|
||||
title: res.msg,
|
||||
type: 'error',
|
||||
url: '/pages/login/login'
|
||||
url: '/pagesB/login/login'
|
||||
})
|
||||
}
|
||||
})
|
||||
@ -433,19 +433,19 @@
|
||||
//跳转商品详情页
|
||||
goCommodityDetails(item) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/CommodityDetails/CommodityDetails?goodsPrice=${item.goodsPrice}&goodsInfoId=${item.goodsInfoId}&buySource=${'NURSE_STATION'}&goodsAttributeId=${item.goodsAttributeId}`
|
||||
url: `/pagesB/CommodityDetails/CommodityDetails?goodsPrice=${item.goodsPrice}&goodsInfoId=${item.goodsInfoId}&buySource=${'NURSE_STATION'}&goodsAttributeId=${item.goodsAttributeId}`
|
||||
})
|
||||
},
|
||||
//跳转完善页面
|
||||
goinformation() {
|
||||
this.usershow = false
|
||||
uni.navigateTo({
|
||||
url: '/pages/information/information'
|
||||
url: '/pagesB/information/information'
|
||||
})
|
||||
},
|
||||
goProjectDetails(item) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/ProjectDetails/ProjectDetails?nurseStationId=${this.nurseStationId}&stationId=${item.stationId}&stationItemId=${item.stationItemId}&stationItemPriceId=${item.stationItemPriceId}`,
|
||||
url: `/pagesB/ProjectDetails/ProjectDetails?nurseStationId=${this.nurseStationId}&stationId=${item.stationId}&stationItemId=${item.stationItemId}&stationItemPriceId=${item.stationItemPriceId}`,
|
||||
})
|
||||
},
|
||||
gophone() {
|
||||
|
||||
@ -139,14 +139,14 @@
|
||||
<script>
|
||||
import {
|
||||
appletGoodsOrderPay
|
||||
} from '@/api/confirmOrder/index.js'
|
||||
} from '@/api/pagesB/confirmOrder/index.js'
|
||||
import {
|
||||
confirmReceipt,
|
||||
goodsOrder
|
||||
} from '@/api/CommodityOrder/index.js'
|
||||
} from '@/api/pagesB/CommodityOrder/index.js'
|
||||
import {
|
||||
handCloseOrder
|
||||
} from '@/api/ServiceDetails/ServiceDetails.js'
|
||||
} from '@/api/pagesB/ServiceDetails/ServiceDetails.js'
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
data() {
|
||||
@ -182,7 +182,7 @@
|
||||
//查看评价
|
||||
golookrate() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/lookrate/lookrate?item=${JSON.stringify(this.order)}`
|
||||
url: `/pagesB/lookrate/lookrate?item=${JSON.stringify(this.order)}`
|
||||
})
|
||||
},
|
||||
//收货
|
||||
@ -199,7 +199,7 @@
|
||||
this.goodsOrderinfo()
|
||||
setTimeout(e => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/goodsorderRate/goodsorderRate?item=${JSON.stringify(this.order)}&delta=${2}`
|
||||
url: `/pagesB/goodsorderRate/goodsorderRate?item=${JSON.stringify(this.order)}&delta=${2}`
|
||||
})
|
||||
}, 1000)
|
||||
} else {
|
||||
@ -219,13 +219,13 @@
|
||||
//看物流信息
|
||||
gologistics() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/logistics/logistics?item=${JSON.stringify(this.order)}`
|
||||
url: `/pagesB/logistics/logistics?item=${JSON.stringify(this.order)}`
|
||||
})
|
||||
},
|
||||
//评价
|
||||
rate() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/goodsorderRate/goodsorderRate?item=${JSON.stringify(this.order)}&delta=${2}`
|
||||
url: `/pagesB/goodsorderRate/goodsorderRate?item=${JSON.stringify(this.order)}&delta=${2}`
|
||||
})
|
||||
},
|
||||
//支付
|
||||
@ -252,7 +252,7 @@
|
||||
title: '支付成功',
|
||||
type: 'success',
|
||||
duration: 1500,
|
||||
url: `/pages/paysuccess/paysuccess?delta=${2}`
|
||||
url: `/pagesB/paysuccess/paysuccess?delta=${2}`
|
||||
})
|
||||
},
|
||||
fail: function(err) {
|
||||
@ -275,7 +275,7 @@
|
||||
//退款页面
|
||||
gorefundType() {
|
||||
uni.navigateTo({
|
||||
url: `/pages/refundType/refundType?order=${JSON.stringify(this.order)}`
|
||||
url: `/pagesB/refundType/refundType?order=${JSON.stringify(this.order)}`
|
||||
})
|
||||
},
|
||||
goodsOrderinfo() {
|
||||
@ -296,7 +296,7 @@
|
||||
//跳转售后详情
|
||||
goAftersalesdetails(item) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/Aftersalesdetails/Aftersalesdetails?goodsOrderId=${this.order.goodsOrderId}`
|
||||
url: `/pagesB/Aftersalesdetails/Aftersalesdetails?goodsOrderId=${this.order.goodsOrderId}`
|
||||
})
|
||||
},
|
||||
},
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<image src="../../static/paysuccess.png" mode=""></image>
|
||||
<image src="../../static/pagesB/paysuccess.png" mode=""></image>
|
||||
<view class="success">
|
||||
支付成功
|
||||
</view>
|
||||
@ -37,7 +37,7 @@
|
||||
},
|
||||
gohome() {
|
||||
uni.switchTab({
|
||||
url: '/pages/homepage/homepage'
|
||||
url: '/pagesB/homepage/homepage'
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="app">
|
||||
<image src="../../static/paysuccess.png" mode=""></image>
|
||||
<image src="../../static/pagesB/paysuccess.png" mode=""></image>
|
||||
<view class="success">
|
||||
评价完成
|
||||
</view>
|
||||
@ -51,7 +51,7 @@
|
||||
},
|
||||
gohome() {
|
||||
uni.switchTab({
|
||||
url: '/pages/homepage/homepage'
|
||||
url: '/pagesB/homepage/homepage'
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
选择退款类型
|
||||
</view>
|
||||
<view class="myrefund" @tap='goApplforrefund(1)'>
|
||||
<image class="images" src="../../static/myrefund.png" mode=""></image>
|
||||
<image class="images" src="../../static/pagesB/myrefund.png" mode=""></image>
|
||||
<view class="refundfo">
|
||||
<view>我要退款(无需退货)</view>
|
||||
<view class="text">没收到货</view>
|
||||
@ -42,7 +42,7 @@
|
||||
|
||||
</view>
|
||||
<view class="myrefund" @tap='goApplforrefund(2)'>
|
||||
<image class="images" src="../../static/refundgoods.png" mode=""></image>
|
||||
<image class="images" src="../../static/pagesB/refundgoods.png" mode=""></image>
|
||||
<view class="refundfo">
|
||||
<view>我要退货退款</view>
|
||||
<view class="text">已收到货,需要退还收到的货物</view>
|
||||
@ -67,7 +67,7 @@
|
||||
<script>
|
||||
import {
|
||||
refund
|
||||
} from '@/api/Applforrefund/index.js'
|
||||
} from '@/api/pagesB/Applforrefund/index.js'
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
data() {
|
||||
@ -111,11 +111,11 @@
|
||||
goApplforrefund(e) {
|
||||
if (e == 1) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/Applforrefund/Applforrefund?typename=${'我要退款(无需退货)'}&order=${JSON.stringify(this.order)}`
|
||||
url: `/pagesB/Applforrefund/Applforrefund?typename=${'我要退款(无需退货)'}&order=${JSON.stringify(this.order)}`
|
||||
})
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: `/pages/Applforrefund/Applforrefund?typename=${'已收到货,需要退还收到的货物'}&order=${JSON.stringify(this.order)}`
|
||||
url: `/pagesB/Applforrefund/Applforrefund?typename=${'已收到货,需要退还收到的货物'}&order=${JSON.stringify(this.order)}`
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
//跳转到商品列表页面
|
||||
goProductList(item) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/ProductList/ProductList?title=${item.goodsCategoryName}&goodsCategoryId=${item.id}`
|
||||
url: `/pagesB/ProductList/ProductList?title=${item.goodsCategoryName}&goodsCategoryId=${item.id}`
|
||||
})
|
||||
},
|
||||
//获取商城信息
|
||||
|
||||
@ -66,7 +66,7 @@
|
||||
nearbyList,
|
||||
getPatientInfo,
|
||||
getNurseClassifyList
|
||||
} from '@/api/site/site.js';
|
||||
} from '@/api/pagesB/site/site.js';
|
||||
import baseurl from '@/api/baseurl.js'
|
||||
export default {
|
||||
data() {
|
||||
@ -107,7 +107,7 @@
|
||||
},
|
||||
lengthlist() {
|
||||
uni.navigateTo({
|
||||
url: "/pages/Moreoptions/Moreoptions"
|
||||
url: "/pagesB/Moreoptions/Moreoptions"
|
||||
})
|
||||
// uni.showLoading({
|
||||
// title: '',
|
||||
@ -196,13 +196,13 @@
|
||||
},
|
||||
godetails(item) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/nursestation/nursestation?nurseStationId=${item.nurseStationId}`
|
||||
url: `/pagesB/nursestation/nursestation?nurseStationId=${item.nurseStationId}`
|
||||
})
|
||||
},
|
||||
cancel() {
|
||||
this.mask = false
|
||||
uni.switchTab({
|
||||
url: '/pages/homepage/homepage',
|
||||
url: '/pagesB/homepage/homepage',
|
||||
})
|
||||
},
|
||||
},
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<script>
|
||||
import {
|
||||
createMobileToken
|
||||
} from '@/api/login/index.js'
|
||||
} from '@/api/pagesB/login/index.js'
|
||||
export default {
|
||||
data() {
|
||||
return {};
|
||||
|
||||
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 316 B |
Loading…
Reference in New Issue
Block a user