查看报告增加隐私提示

main
yanzai 2 days ago
parent 443fe8a4e0
commit 2fdab1a39b

@ -41,6 +41,7 @@ url_array['User/status'] = `${url_}/api/Mp/User/status`;
url_array['Hospital/info'] = `${url_}/api/Mp/Hospital/info`;
url_array['Carousel/list'] = `${url_}/api/Mp/Carousel/list`;
url_array['Config/get'] = `${url_}/api/Mp/Config/get`;
url_array['Post/info'] = `${url_}/api/Mp/Post/info`;
url_array['YO'] = `${url_}/api/yo`;
const api = (mark) => {
if (mark === '') return url_;

@ -133,6 +133,10 @@ export const HospitalInfoAction = async (data) => await $post({
url: 'Hospital/info',
data
})
export const PostInfo = async (data) => await $post({
url: 'Post/info',
data
})
export const yo = async (data) => await $post({
url: 'YO',
data

@ -0,0 +1,208 @@
<template>
<view>
<uni-popup ref="ys_popup" border-radius="20px" @change="popupChange">
<view class="privacy-popup">
<view class="privacy-title">隐私协议</view>
<view class="privacy-content">
<view class="privacy-text" v-html="YinSiContent.content">
</view>
</view>
<view class="privacy-agree">
<view class="checkbox-wrapper" @click="toggleAgree">
<view class="checkbox" :class="{ 'checked': agree }">
<text v-if="agree" class="checkbox-text"></text>
</view>
<text class="agree-text">我已阅读并同意隐私协议</text>
</view>
</view>
<view class="privacy-buttons">
<view class="cancel-button" @click="closePopup"></view>
<view class="confirm-button" :class="{ 'disabled': !agree }" @click="confirmAgree"></view>
</view>
</view>
</uni-popup>
</view>
</template>
<script setup>
import {
ref, nextTick,watch
} from 'vue'
import { onShow } from '@dcloudio/uni-app'
import {
PostInfo,
$response
} from '@/api'
const emit = defineEmits(['agree', 'close'])
let ys_popup = ref(null)
const agree = ref(false)
const show = ref(false)
const props = defineProps({
IsOpenYinSi: {
type: Boolean,
required: true
}
})
watch(
() => props.IsOpenYinSi,
(newVal, oldVal) => {
console.log('visible 从', oldVal, '变为', newVal)
if (newVal) {
if(newVal===true){
openPopup()
}
}
}
)
let YinSiContent=ref('')
const GetPostInfo = async () => {
const response = await PostInfo({
id: 1
})
$response(response, () => {
YinSiContent.value=response.data.info
})
}
//
const openPopup = async() => {
await GetPostInfo()
agree.value = false
show.value = true
nextTick(() => {
ys_popup.value.open('center')
})
}
//
const closePopup = () => {
show.value = false
ys_popup.value.close()
emit('close')
}
//
const toggleAgree = () => {
agree.value = !agree.value
}
//
const confirmAgree = () => {
if (agree.value) {
closePopup()
emit('agree','agree_report')
}
}
//
const popupChange = ({ show: popupShow }) => {
show.value = popupShow
}
</script>
<style scoped>
.privacy-popup {
width: 560rpx;
background: #FFFFFF;
border-radius: 20rpx;
padding: 40rpx;
}
.privacy-title {
font-size: 32rpx;
font-weight: bold;
color: #333333;
text-align: center;
margin-bottom: 30rpx;
}
.privacy-content {
max-height: 600rpx;
overflow-y: auto;
margin-bottom: 40rpx;
}
.privacy-text {
font-size: 26rpx;
color: #666666;
line-height: 42rpx;
text-align: justify;
}
.privacy-agree {
margin-bottom: 40rpx;
}
.checkbox-wrapper {
display: flex;
align-items: center;
justify-content: center;
}
.checkbox {
width: 32rpx;
height: 32rpx;
border: 2rpx solid #CCCCCC;
border-radius: 6rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12rpx;
transition: all 0.3s;
}
.checkbox.checked {
background: #0BBACF;
border-color: #0BBACF;
}
.checkbox-text {
font-size: 20rpx;
color: #FFFFFF;
font-weight: bold;
}
.agree-text {
font-size: 24rpx;
color: #666666;
}
.privacy-buttons {
display: flex;
justify-content: space-between;
gap: 30rpx;
}
.cancel-button {
flex: 1;
height: 80rpx;
background: #F5F5F5;
border-radius: 40rpx;
font-size: 30rpx;
color: #666666;
line-height: 80rpx;
text-align: center;
}
.confirm-button {
flex: 1;
height: 80rpx;
background: #0BBACF;
border-radius: 40rpx;
font-size: 30rpx;
color: #FFFFFF;
line-height: 80rpx;
text-align: center;
transition: all 0.3s;
}
.confirm-button.disabled {
background: #CCCCCC;
color: #FFFFFF;
}
</style>

@ -19,6 +19,7 @@
import {
onShow
} from '@dcloudio/uni-app'
import YinSi from '@/components/YinSi.vue'
import {
useStore
} from '@/store'
@ -102,14 +103,8 @@
})
break;
case 'report':
uni.$lu.jump({
jump_type: 3,
jump_path: ReportUrl({
hospital: hospital_info.value.id,
id_number: info.id_number
}),
login_type: 1
})
IsOpenYinSi.value=true
break;
case 'question':
$store.buy_info.hospital = hospital_info.value.id
@ -178,7 +173,23 @@
})
})
}
let IsOpenYinSi=ref(false)
const YinSiAgreeFunc=(e)=>{
if(e='agree_report'){
uni.$lu.jump({
jump_type: 3,
jump_path: ReportUrl({
hospital: hospital_info.value.id,
id_number: $store.buy_info.person[0].id_number
}),
login_type: 1
})
}
}
const YinSiCloseFunc=()=>{
IsOpenYinSi.value=false
}
const toEditPersonClick = () => {
uni.navigateTo({
url: `/pages/user/edit/edit?id=0`
@ -187,6 +198,7 @@
</script>
<template>
<view>
<YinSi :IsOpenYinSi="IsOpenYinSi" @agree="YinSiAgreeFunc" @close="YinSiCloseFunc"></YinSi>
<view v-if="choose_type_show">
<uni-popup :ref="chooseTypePopupRef" background-color="#ffffff00" @change="chooseTypeChange">
<view class="choose_type_popup_wrapper">
@ -227,6 +239,7 @@
</view>
<view v-else class="user_person_list_wrapper">
<view v-for="(i,k) in user_person_list" :key="k" class="user_person_item_wrapper">
<view class="user_person_info_tag_wrapper" :class="[
i.relationship === '本人' ? 'user_person_info_tag_active_wrapper' : ''

Loading…
Cancel
Save