This commit is contained in:
2023-10-13 13:39:29 +08:00
parent 5859b4a6ef
commit 82a151ff81
17 changed files with 852 additions and 324 deletions

View File

@ -1,7 +1,7 @@
import request from "@/api/request.js"
export function getDoctorList(pageNum, pageSize, teamNo, region) {
export function getDoctorListtwo(pageNum, pageSize, teamNo, region) {
return request({
url: `/applet/signinfo/getDoctorList?pageNum=${pageNum}&pageSize=${pageSize}&teamNo=${teamNo}`,
method: 'get',
@ -9,4 +9,4 @@ export function getDoctorList(pageNum, pageSize, teamNo, region) {
region: region
}
})
}
}

View File

@ -9,4 +9,16 @@ export function getContent(orgNo, region) {
region: region
}
})
}
}
export function getSignProtocol(cardNo, region) {
return request({
url: `/applet/signinfo/getSignProtocol/${cardNo}`,
method: 'get',
header: {
region: region
}
})
}

View File

@ -0,0 +1,263 @@
<template>
<view class="app">
<view class="agreement-title-box">
家庭医生签约服务协议书
</view>
<view class="agreement-content-container">
<view class="agreement-content_parta-box">
<h4>甲方</h4>
<h4 class="box-line">{{list.signInfo.agencyOrgName}}</h4>
</view>
<view class="agreement-content_parta-box">
<h4>乙方</h4>
<h4 class="box-line">{{list.signInfo.residentName?list.signInfo.residentName:''}}</h4>
</view>
<uni-table border stripe emptyText="暂无更多数据">
<uni-tr>
<uni-th>姓名</uni-th>
<uni-th>性别</uni-th>
<uni-th>年龄</uni-th>
<uni-th>身份证号</uni-th>
<uni-th>现住址</uni-th>
<uni-th>手机号码</uni-th>
<uni-th>选择签约基础服务包 </uni-th>
<uni-th>选择签约个性服务包</uni-th>
</uni-tr>
<uni-tr>
<uni-td>{{list.signInfo.residentName?list.signInfo.residentName:''}}</uni-td>
<uni-td>{{list.signInfo.gender === '1' ? '男' : '女'}}</uni-td>
<uni-td>{{list.signInfo.age?list.signInfo.age:''}}</uni-td>
<uni-td>{{list.signInfo.identity?list.signInfo.identity:''}}</uni-td>
<uni-td>{{list.signInfo.address?list.signInfo.address:''}}</uni-td>
<uni-td>{{list.signInfo.phone?list.signInfo.phone:''}}</uni-td>
<uni-td>{{list.basePackagesName?list.basePackagesName:''}} </uni-td>
<uni-td>{{list.specialPackagesName?list.specialPackagesName:""}}</uni-td>
</uni-tr>
</uni-table>
<view>
<p style='padding-top: 30rpx;line-height: 46rpx;'>甲乙双方本着平等尊重和自愿的原则签订此协议接受以下条款的约定</p>
<p style='padding: 30rpx 0;line-height: 46rpx;'>甲乙双方共同确定
<text class="box-line">{{list.signInfo.teamName}}</text>为乙方的家庭医生服务团队
</p>
<uni-table border stripe emptyText="暂无更多数据">
<uni-tr>
<uni-th>专病管理服务团队成员</uni-th>
<uni-th>姓名</uni-th>
<uni-th>职称</uni-th>
<uni-th>固定电话</uni-th>
<uni-th>联系电话</uni-th>
</uni-tr>
<uni-tr v-for="(member, index) in list.signInfo.dutyDoctorList" :index="index" :key="index">
<uni-td v-if="member.teamLeader">
团队长
</uni-td>
<uni-td v-else>
{{member.teamMemberType=='0'?'全科医生':''}}
{{member.teamMemberType=='1'?'专科医生':''}}
{{member.teamMemberType=='2'?'社区护士':''}}
{{member.teamMemberType=='3'?'公共卫生人员':''}}
</uni-td>
<uni-td>{{member.realname?member.realname:''}}</uni-td>
<uni-td>
{{member.profTitle=='0'?'初级':''}}
{{member.profTitle=='1'?'中级':''}}
{{member.profTitle=='2'?'高级':''}}
{{member.profTitle=='99'?'其他':''}}
</uni-td>
<uni-td>{{member.landline?member.landline:''}}</uni-td>
<uni-td>{{member.mobilePhone?member.mobilePhone:''}}</uni-td>
</uni-tr>
</uni-table>
<u-parse style="margin-top: 30rpx;" :html="list.protocolContent.content"></u-parse>
<h4 style='padding-top: 30rpx;font-weight: 600;'>服务收费</h4>
<p style='padding-top: 30rpx;line-height: 46rpx;'>1. 根据自愿选择的原则乙方选择<text
class="box-line">{{list.basePackagesName?list.basePackagesName:''}}{{list.specialPackagesName?''+list.specialPackagesName:''}}</text>由甲方提供相应服务服务费为<text
class="box-line">{{list.packSignCost}}</text>/</p>
<p style='padding-top: 30rpx;line-height: 46rpx;'>2.服务过程中根据医生判断及患者临时需求增加的服务内容按照国家相关规定和当地物价部门规定收费
</p>
<p style='padding-top: 30rpx;line-height: 46rpx;'>3.乙方应于<text
class="box-line">{{list.signInfo.signTime}}</text>
前将签约服务费缴纳至甲方机构指定科室不得由签约团队成员代收
</p>
<h4 style='padding-top: 30rpx;font-weight: 600;'>其他约定服务<text class="box-line">{{' '}}</text></h4>
<h4 style='padding-top: 30rpx;font-weight: 600;'>
保密条款签约居民授权其所签约的家庭医生及其团队成员可调阅其电子健康档案和在其他医疗机构的诊疗记录信息甲方有义务对签约居民的电子健康档案和在其他医疗机构的诊
疗记录信息予以保密除法律法规规定外未经签约居民允许不得泄露给第三方
</h4>
<h4 style='padding-top:30rpx;font-weight: 600;'>本协议未尽事宜经双方协商一致签订补充协议补充协议具有同等效力</h4>
<h4 style='padding-top: 30rpx;font-weight: 600;'>
本协议解释权归甲方协议一式两份乙双方各执一份自双方签字之日起生效
<text
class="box-line">{{list.signInfo.signTime}}{{' —— '}}{{list.signInfo.signDeadline}}</text>有效期<text
class="box-line">{{list.signYears}}</text>
</h4>
</view>
</view>
<view class="agreement-execute_container-img">
<view class="parta-execute_box">
<view class="textparta">甲方(团队长)签字</br><text style="padding-left: 15rpx;">(单位盖章)</text></view>
<image :src="list.doctorBase64" mode="aspectFill" style="width: 280rpx; height: 200rpx;"></image>
</view>
<view class="parta-execute_box">
<view class="textparta">乙方(居民)签字</br><text style="padding-left: 8rpx;">或拍照</text></view>
<image :src="list.residentBase64" mode="widthFix" style="width: 180rpx; height: 180rpx;"></image>
</view>
<view class="parta-execute_box">
<view class="textparta">机构公章</view>
<image :src="list.orgBase64" mode="widthFix" style="width: 180rpx; height: 180rpx;"></image>
</view>
</view>
<u-mask :show="signatureshow" @click="signatureshow = false">
<view style="position:absolute;bottom:0;height:900rpx;width:100%;background-color: #fff;"
v-if='signatureshow'>
<signature @userSignaturePictureUrl='userSignaturePicture' @click.native.stop
style='background-color: #F4F5F7;width: 100%;height: 900rpx;'></signature>
</view>
</u-mask>
<uni-fab ref="fab" horizontal="left" vertical="bottom" :content="fabContent" @trigger="fabTrigger" />
</view>
</template>
<script>
import baseurl from '@/api/baseurl.js'
import signature from '@/components/signature/signature.vue'
import {
getSignProtocol
} from '@/api/pagesC/contractsigningprotocol/index.js'
export default {
components: {
signature
},
data() {
return {
signatureshow: false,
list: null,
fabContent: [{
iconPath: '/static/pageC/signature-unselected.png',
selectedIconPath: '/static/pageC/signature-selected.png',
text: '居民签字',
active: true
}, {
iconPath: '/static/pageC/camera-unselected.png',
selectedIconPath: '/static/pageC/camera.png',
text: '居民拍照',
active: true
}],
};
},
methods: {
fabTrigger(e) {
if (e.index === 0) {
this.signatureshow = true
} else if (e.index === 1) {
this.openCamera()
}
},
openCamera() {
let that = this
setTimeout(function() {
uni.chooseImage({
sizeType: ['compressed'],
sourceType: ['camera'],
success: function(res) {
let tempFilePath = res.tempFilePaths[0]
uni.saveImageToPhotosAlbum({
filePath: tempFilePath,
success: (resp) => {
uni.uploadFile({
url: baseurl +
'/applet/sign/apply/residentSignatureUpload',
filePath: tempFilePath,
name: 'file',
header: {
region: '1'
},
timeout: 10000,
success(respp) {
// residentAutographPath
console.log(respp)
}
})
}
})
}
})
},
150)
},
// //
userSignaturePicture(data) {
this.signatureshow = false
},
info() {
getSignProtocol(this.cardNo, '1').then(res => {
this.list = res.data
})
},
},
onLoad(options) {
this.cardNo = options.cardNo
this.cardNo = '372424194703207523'
this.info();
},
}
</script>
<style lang="scss">
.app {
width: 98%;
margin: 10rpx auto;
background-color: #fff;
}
.agreement-title-box {
padding-top: 20rpx;
margin: 0 0 30rpx;
font-size: 40rpx;
font-weight: 600;
text-align: center;
}
.agreement-content-container {
margin: 10rpx 10rpx;
font-size: 16px;
color: #333333;
padding-bottom: 100rpx;
}
.agreement-content_parta-box {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
margin-bottom: 20rpx;
}
.box-line {
display: inline-block;
padding: 0 20rpx;
text-align: center;
border-bottom: 1px #808080 solid;
}
.agreement-execute_container-img {
display: flex;
flex-wrap: wrap;
padding-bottom: 200rpx;
.parta-execute_box {
width: 50%;
.textparta {
display: inline-block;
width: 100%;
text-align: center;
}
image {
display: block;
margin: 30rpx auto;
}
}
}
</style>

View File

@ -4,17 +4,17 @@
},
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/homepage/homepage",
"style": {
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "pages/startup/startup",
"style": {
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
}, {
"path": "pages/homepage/homepage",
"style": {
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "pages/medicalservice/medicalservice",
@ -502,7 +502,8 @@
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},{
},
{
"path": "contractsigningprotocol/contractsigningprotocol",
"style": {
"navigationBarTitleText": "签约协议",

View File

@ -114,7 +114,7 @@
//
goonline() {
uni.navigateTo({
url: "/pagesB/mysigning/mysigning"
url: "/pagesC/Onlinesigning/Onlinesigning"
})
// if (!this.userinfo) {
// this.gologin();
@ -246,4 +246,4 @@
<style lang="scss">
@import "./homepage.scss";
</style>
</style>

View File

@ -0,0 +1,178 @@
.app {
padding-top: 10rpx;
width: 100%;
.btns {
width: 100%;
display: flex;
font-size: 31rpx;
justify-content: space-around;
text-align: center;
font-weight: 500;
margin-top: 80rpx;
padding-bottom: 50rpx;
.btnleft {
width: 290rpx;
height: 62rpx;
background: #FFFFFF;
border: 1px solid #26A888;
border-radius: 5rpx;
color: #26A888;
line-height: 62rpx
}
.btnright {
width: 289rpx;
height: 62rpx;
background: #26A888;
border-radius: 5rpx;
color: #FFFFFF;
line-height: 62rpx;
}
}
.item {
width: 96%;
margin: 20rpx auto;
background-color: #fff;
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 5rpx;
padding-bottom: 50rpx;
.select {
width: 90%;
height: 80rpx;
background: #F6F6F6;
margin: 12rpx auto;
border-radius: 5rpx;
display: flex;
position: relative;
text {
padding: 0 60rpx 0 20rpx;
line-height: 80rpx;
font-size: 22rpx;
font-weight: 400;
height: 80rpx;
color: #8E8E8E;
// text-overflow: -o-ellipsis-lastline;
// overflow: hidden;
// text-overflow: ellipsis;
// display: -webkit-box;
// -webkit-line-clamp: 1;
// line-clamp: 1;
// -webkit-box-orient: vertical;
// white-space:normal;
// word-break:break-all;
}
image {
width: 9rpx;
height: 17rpx;
position: absolute;
right: 40rpx;
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
}
.textarea {
font-size: 18rpx;
font-weight: 400;
color: #8E8E8E;
line-height: 42rpx;
padding: 30rpx 0 0 40rpx;
}
.text {
font-size: 30rpx;
font-weight: 400;
color: #333333;
padding: 30rpx 0 0 40rpx;
}
::v-deep .u-upload {
padding: 30rpx 30rpx 0 30rpx;
}
.input {
width: 90%;
height: 80rpx;
border-radius: 5rpx;
background: #f6f6f6;
margin: 20rpx 0 0 40rpx;
position: relative;
padding-left: 10rpx;
image {
width: 10rpx;
height: 20rpx;
position: absolute;
top: 50%;
right: 5%;
transform: translateY(-50%);
}
.uni-textarea-placeholder {
padding-left: 12rpx;
font-size: 22rpx;
font-weight: 400;
color: #8E8E8E !important;
}
.phsy {
padding-left: 12rpx;
font-size: 22rpx;
font-weight: 400;
color: #8E8E8E !important;
}
.inputtext {
padding-left: 12rpx;
color: black;
font-size: 26rpx;
width: 90%;
height: 80rpx;
line-height: 80rpx;
}
.uinput {
color: black;
font-size: 26rpx;
width: 90%;
height: 80rpx;
line-height: 80rpx;
}
.noimageuinput {
width: 98% !important;
}
}
}
.title {
width: 100%;
padding: 10rpx 0 10rpx 35rpx;
.left {
vertical-align: middle;
display: inline-block;
width: 10rpx;
height: 30rpx;
background: #26A888;
border-radius: 1rpx;
}
.right {
vertical-align: middle;
display: inline-block;
font-size: 30rpx;
font-weight: 500;
color: #26A888;
line-height: 30rpx;
margin-left: 20rpx;
}
}
}

View File

@ -42,8 +42,9 @@
<view class="text">
选择医生
</view>
<view class="select">
<text>请选择医生</text>
<view class="select" @tap='gochoosedoctor'>
<text v-if="formdata.doctorName" style="font-size: 26rpx;color: #303133;">{{formdata.doctorName}}</text>
<text v-else>请选择医生</text>
<image src="../../static/huijiantou.png" mode=""></image>
</view>
</view>
@ -170,6 +171,13 @@
},
onShow() {
this.areaInfo();
let that = this
uni.$on('doctordata', function(data) {
let item = JSON.parse(data.data)
that.formdata.doctorName = item.realname
that.formdata.doctorId = item.userNo
uni.$off('doctordata')
})
},
methods: {
updata() {
@ -229,187 +237,15 @@
this.address = '请选择所属地区'
}
},
gochoosedoctor() {
uni.navigateTo({
url: '/pagesC/choosedoctor/choosedoctor'
})
},
}
}
</script>
<style lang="scss">
.app {
padding-top: 10rpx;
width: 100%;
.btns {
width: 100%;
display: flex;
font-size: 31rpx;
justify-content: space-around;
text-align: center;
font-weight: 500;
margin-top: 80rpx;
padding-bottom: 50rpx;
.btnleft {
width: 290rpx;
height: 62rpx;
background: #FFFFFF;
border: 1px solid #26A888;
border-radius: 5rpx;
color: #26A888;
line-height: 62rpx
}
.btnright {
width: 289rpx;
height: 62rpx;
background: #26A888;
border-radius: 5rpx;
color: #FFFFFF;
line-height: 62rpx;
}
}
.item {
width: 96%;
margin: 20rpx auto;
background-color: #fff;
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 5rpx;
padding-bottom: 50rpx;
.select {
width: 90%;
height: 80rpx;
background: #F6F6F6;
margin: 12rpx auto;
border-radius: 5rpx;
display: flex;
position: relative;
text {
padding: 0 60rpx 0 20rpx;
line-height: 80rpx;
font-size: 22rpx;
font-weight: 400;
height: 80rpx;
color: #8E8E8E;
// text-overflow: -o-ellipsis-lastline;
// overflow: hidden;
// text-overflow: ellipsis;
// display: -webkit-box;
// -webkit-line-clamp: 1;
// line-clamp: 1;
// -webkit-box-orient: vertical;
// white-space:normal;
// word-break:break-all;
}
image {
width: 9rpx;
height: 17rpx;
position: absolute;
right: 40rpx;
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
}
.textarea {
font-size: 18rpx;
font-weight: 400;
color: #8E8E8E;
line-height: 42rpx;
padding: 30rpx 0 0 40rpx;
}
.text {
font-size: 30rpx;
font-weight: 400;
color: #333333;
padding: 30rpx 0 0 40rpx;
}
::v-deep .u-upload {
padding: 30rpx 30rpx 0 30rpx;
}
.input {
width: 90%;
height: 80rpx;
border-radius: 5rpx;
background: #f6f6f6;
margin: 20rpx 0 0 40rpx;
position: relative;
padding-left: 10rpx;
image {
width: 10rpx;
height: 20rpx;
position: absolute;
top: 50%;
right: 5%;
transform: translateY(-50%);
}
.uni-textarea-placeholder {
padding-left: 12rpx;
font-size: 22rpx;
font-weight: 400;
color: #8E8E8E !important;
}
.phsy {
padding-left: 12rpx;
font-size: 22rpx;
font-weight: 400;
color: #8E8E8E !important;
}
.inputtext {
padding-left: 12rpx;
color: black;
font-size: 26rpx;
width: 90%;
height: 80rpx;
line-height: 80rpx;
}
.uinput {
color: black;
font-size: 26rpx;
width: 90%;
height: 80rpx;
line-height: 80rpx;
}
.noimageuinput {
width: 98% !important;
}
}
}
.title {
width: 100%;
padding: 10rpx 0 10rpx 35rpx;
.left {
vertical-align: middle;
display: inline-block;
width: 10rpx;
height: 30rpx;
background: #26A888;
border-radius: 1rpx;
}
.right {
vertical-align: middle;
display: inline-block;
font-size: 30rpx;
font-weight: 500;
color: #26A888;
line-height: 30rpx;
margin-left: 20rpx;
}
}
}
</style>
@import './createnewconsultation.scss';
</style>

View File

@ -0,0 +1,94 @@
.app {
width: 96%;
margin: 20rpx auto;
background-color: #fff;
.list {
width: 100%;
.item {
width: 96%;
margin: 0 auto;
padding-bottom: 60rpx;
border-bottom: 2rpx solid #E6E6E6;
position: relative;
height: 300rpx;
.zixunbtn {
width: 169rpx;
height: 61rpx;
background: #26A888;
border-radius: 5rpx;
font-size: 28rpx;
font-weight: 400;
color: #FFFFFF;
line-height: 61rpx;
text-align: center;
position: absolute;
top: 65%;
right: 10rpx;
}
.title {
position: absolute;
top: 70%;
left: 210rpx;
font-size: 18rpx;
font-weight: 500;
color: #FFA733;
line-height: 30rpx;
height: 30rpx;
background: #FFFFFF;
border: 1px solid #FFA115;
border-radius: 5rpx;
text-align: center;
padding: 0 15rpx;
}
.phone {
position: absolute;
top: 38%;
left: 210rpx;
font-size: 28rpx;
font-weight: 400;
color: #959595;
}
.name {
position: absolute;
font-size: 28rpx;
font-weight: 500;
color: #333333;
top: 20%;
left: 210rpx;
}
image {
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 5rpx;
width: 180rpx;
height: 180rpx;
}
}
}
.teamname {
padding: 20rpx 0 0 30rpx;
display: flex;
align-items: flex-end;
image {
width: 40rpx;
height: 36rpx;
}
.name {
padding-left: 15rpx;
font-size: 28rpx;
font-weight: 500;
color: #000000;
}
}
}

View File

@ -28,7 +28,7 @@
<script>
import {
getDoctorList
getDoctorListtwo
} from '@/api/pagesB/myfamilydoctorteam/index.js'
export default {
data() {
@ -46,7 +46,7 @@
},
methods: {
info() {
getDoctorList(this.pageNum, this.pageSize, this.teamNo, '1').then(res => {
getDoctorListtwo(this.pageNum, this.pageSize, this.teamNo, '1').then(res => {
this.list = res.rows
this.total = res.total
})
@ -61,7 +61,7 @@
onReachBottom() { //
if (this.list.length >= this.total) {} else {
this.pageNum++;
getDoctorList(this.pageNum, this.pageSize, this.teamNo, '1').then(res => {
getDoctorListtwo(this.pageNum, this.pageSize, this.teamNo, '1').then(res => {
res.rows.forEach(e => {
this.list.push(e)
})
@ -80,98 +80,5 @@
</script>
<style lang="scss">
.app {
width: 96%;
margin: 20rpx auto;
background-color: #fff;
.list {
width: 100%;
.item {
width: 96%;
margin: 0 auto;
padding-bottom: 60rpx;
border-bottom: 2rpx solid #E6E6E6;
position: relative;
height: 300rpx;
.zixunbtn {
width: 169rpx;
height: 61rpx;
background: #26A888;
border-radius: 5rpx;
font-size: 28rpx;
font-weight: 400;
color: #FFFFFF;
line-height: 61rpx;
text-align: center;
position: absolute;
top: 65%;
right: 10rpx;
}
.title {
position: absolute;
top: 70%;
left: 210rpx;
font-size: 18rpx;
font-weight: 500;
color: #FFA733;
line-height: 30rpx;
height: 30rpx;
background: #FFFFFF;
border: 1px solid #FFA115;
border-radius: 5rpx;
text-align: center;
padding: 0 15rpx;
}
.phone {
position: absolute;
top: 38%;
left: 210rpx;
font-size: 28rpx;
font-weight: 400;
color: #959595;
}
.name {
position: absolute;
font-size: 28rpx;
font-weight: 500;
color: #333333;
top: 20%;
left: 210rpx;
}
image {
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 5rpx;
width: 180rpx;
height: 180rpx;
}
}
}
.teamname {
padding: 20rpx 0 0 30rpx;
display: flex;
align-items: flex-end;
image {
width: 40rpx;
height: 36rpx;
}
.name {
padding-left: 15rpx;
font-size: 28rpx;
font-weight: 500;
color: #000000;
}
}
}
</style>
@import './myfamilydoctorteam.scss';
</style>

View File

@ -190,7 +190,7 @@
//
gocontractsigningprotocol() {
uni.navigateTo({
url: `/pagesC/contractsigningprotocol/contractsigningprotocol?orgNo=${this.list.orgNo}`
url: `/pagesC/contractsigningprotocol/contractsigningprotocol?orgNo=${this.list.orgNo}&cardNo=${this.list.identity}`
})
},
//
@ -215,4 +215,4 @@
<style lang="scss">
@import './mysigning.scss';
</style>
</style>

View File

@ -105,7 +105,7 @@
</view>
<view class="name">
签约周期()
<u-input v-model="query.signYears" type='number' :border="true" placeholder="请输入签约周期(单位年)"/>
<u-input v-model="query.signYears" type='number' :border="true" placeholder="请输入签约周期(单位年)" />
</view>
<view class=" signing">
<view class="agency">
@ -148,6 +148,7 @@
</u-checkbox-group>
</scroll-view>
</u-popup>
<protocol></protocol>
<u-toast ref="uToast" />
</view>
</template>
@ -163,7 +164,11 @@
getSex,
getBirthday
} from '@/api/conversion.js'
import protocol from '@/components/protocol/index.vue'
export default {
components: {
protocol
},
data() {
return {
showGroup: 1,
@ -461,4 +466,4 @@
</script>
<style lang="scss">
@import "./Onlinesigning.scss";
</style>
</style>

View File

@ -28,10 +28,14 @@
import {
getDoctorList
} from '@/api/pagesC/choosedoctor/index.js'
import {
getDoctorListtwo
} from '@/api/pagesB/myfamilydoctorteam/index.js'
export default {
data() {
return {
orgNo: null,
teamNo: null,
doctorlist: [],
doctortotal: 0,
pageNum: 1,
@ -39,10 +43,17 @@
},
methods: {
getDoctorListinfo() {
getDoctorList(this.pageNum, this.orgNo, '1').then(res => {
this.doctorlist = res.rows
this.doctortotal = res.total
})
if (this.orgNo) {
getDoctorList(this.pageNum, this.orgNo, '1').then(res => {
this.doctorlist = res.rows
this.doctortotal = res.total
})
} else {
getDoctorListtwo(this.pageNum, 10, this.teamNo, '1').then(res => {
this.doctorlist = res.rows
this.doctortotal = res.total
})
}
},
emitdata(item) {
uni.$emit('doctordata', {
@ -54,18 +65,32 @@
},
},
onLoad(options) {
this.orgNo = options.orgNo
if (options.orgNo) {
this.orgNo = options.orgNo
} else {
// this.teamNo = uni.getStorageSync('userinfo').teamNo
this.teamNo = "00bf7f5a02f3460aa975721ff9f5e533"
}
this.getDoctorListinfo();
},
onReachBottom() { //
if (this.doctorlist.length >= this.doctortotal) {} else {
this.pageNum++;
getDoctorList(this.pageNum, this.orgNo, '1').then(res => {
res.rows.forEach(e => {
this.doctorlist.push(e)
if (this.orgNo) {
getDoctorList(this.pageNum, this.orgNo, '1').then(res => {
res.rows.forEach(e => {
this.doctorlist.push(e)
})
this.doctortotal = res.total
})
this.doctortotal = res.total
})
} else {
getDoctorListtwo(this.pageNum, 10, this.teamNo, '1').then(res => {
res.rows.forEach(e => {
this.doctorlist.push(e)
})
this.doctortotal = res.total
})
}
}
},
onPullDownRefresh() { //

View File

@ -1,22 +1,128 @@
<template>
<view class="app">
<!-- <u-parse :html="content"></u-parse> -->
<view class="" @tap='show =true'>
111111111111111
<view class="agreement-title-box">
家庭医生签约服务协议书
</view>
<u-mask :show="show" @click="show = false">
<view style="position:absolute;bottom:0;height:900rpx;width:100%;background-color: #fff;" v-if='show'>
<view class="agreement-content-container">
<view class="agreement-content_parta-box">
<h4>甲方</h4>
<h4 class="box-line">{{list.signInfo.agencyOrgName}}</h4>
</view>
<view class="agreement-content_parta-box">
<h4>乙方</h4>
<h4 class="box-line">{{list.signInfo.residentName?list.signInfo.residentName:''}}</h4>
</view>
<uni-table border stripe emptyText="暂无更多数据">
<uni-tr>
<uni-th>姓名</uni-th>
<uni-th>性别</uni-th>
<uni-th>年龄</uni-th>
<uni-th>身份证号</uni-th>
<uni-th>现住址</uni-th>
<uni-th>手机号码</uni-th>
<uni-th>选择签约基础服务包 </uni-th>
<uni-th>选择签约个性服务包</uni-th>
</uni-tr>
<uni-tr>
<uni-td>{{list.signInfo.residentName?list.signInfo.residentName:''}}</uni-td>
<uni-td>{{list.signInfo.gender === '1' ? '男' : '女'}}</uni-td>
<uni-td>{{list.signInfo.age?list.signInfo.age:''}}</uni-td>
<uni-td>{{list.signInfo.identity?list.signInfo.identity:''}}</uni-td>
<uni-td>{{list.signInfo.address?list.signInfo.address:''}}</uni-td>
<uni-td>{{list.signInfo.phone?list.signInfo.phone:''}}</uni-td>
<uni-td>{{list.basePackagesName?list.basePackagesName:''}} </uni-td>
<uni-td>{{list.specialPackagesName?list.specialPackagesName:""}}</uni-td>
</uni-tr>
</uni-table>
<view>
<p style='padding-top: 30rpx;line-height: 46rpx;'>甲乙双方本着平等尊重和自愿的原则签订此协议接受以下条款的约定</p>
<p style='padding: 30rpx 0;line-height: 46rpx;'>甲乙双方共同确定
<text class="box-line">{{list.signInfo.teamName}}</text>为乙方的家庭医生服务团队
</p>
<uni-table border stripe emptyText="暂无更多数据">
<uni-tr>
<uni-th>专病管理服务团队成员</uni-th>
<uni-th>姓名</uni-th>
<uni-th>职称</uni-th>
<uni-th>固定电话</uni-th>
<uni-th>联系电话</uni-th>
</uni-tr>
<uni-tr v-for="(member, index) in list.signInfo.dutyDoctorList" :index="index" :key="index">
<uni-td v-if="member.teamLeader">
团队长
</uni-td>
<uni-td v-else>
{{member.teamMemberType=='0'?'全科医生':''}}
{{member.teamMemberType=='1'?'专科医生':''}}
{{member.teamMemberType=='2'?'社区护士':''}}
{{member.teamMemberType=='3'?'公共卫生人员':''}}
</uni-td>
<uni-td>{{member.realname?member.realname:''}}</uni-td>
<uni-td>
{{member.profTitle=='0'?'初级':''}}
{{member.profTitle=='1'?'中级':''}}
{{member.profTitle=='2'?'高级':''}}
{{member.profTitle=='99'?'其他':''}}
</uni-td>
<uni-td>{{member.landline?member.landline:''}}</uni-td>
<uni-td>{{member.mobilePhone?member.mobilePhone:''}}</uni-td>
</uni-tr>
</uni-table>
<u-parse style="margin-top: 30rpx;" :html="list.protocolContent.content"></u-parse>
<h4 style='padding-top: 30rpx;font-weight: 600;'>服务收费</h4>
<p style='padding-top: 30rpx;line-height: 46rpx;'>1. 根据自愿选择的原则乙方选择<text
class="box-line">{{list.basePackagesName?list.basePackagesName:''}}{{list.specialPackagesName?''+list.specialPackagesName:''}}</text>由甲方提供相应服务服务费为<text
class="box-line">{{list.packSignCost}}</text>/</p>
<p style='padding-top: 30rpx;line-height: 46rpx;'>2.服务过程中根据医生判断及患者临时需求增加的服务内容按照国家相关规定和当地物价部门规定收费
</p>
<p style='padding-top: 30rpx;line-height: 46rpx;'>3.乙方应于<text
class="box-line">{{list.signInfo.signTime}}</text>
前将签约服务费缴纳至甲方机构指定科室不得由签约团队成员代收
</p>
<h4 style='padding-top: 30rpx;font-weight: 600;'>其他约定服务<text class="box-line">{{' '}}</text></h4>
<h4 style='padding-top: 30rpx;font-weight: 600;'>
保密条款签约居民授权其所签约的家庭医生及其团队成员可调阅其电子健康档案和在其他医疗机构的诊疗记录信息甲方有义务对签约居民的电子健康档案和在其他医疗机构的诊
疗记录信息予以保密除法律法规规定外未经签约居民允许不得泄露给第三方
</h4>
<h4 style='padding-top:30rpx;font-weight: 600;'>本协议未尽事宜经双方协商一致签订补充协议补充协议具有同等效力</h4>
<h4 style='padding-top: 30rpx;font-weight: 600;'>
本协议解释权归甲方协议一式两份乙双方各执一份自双方签字之日起生效
<text
class="box-line">{{list.signInfo.signTime}}{{' —— '}}{{list.signInfo.signDeadline}}</text>有效期<text
class="box-line">{{list.signYears}}</text>
</h4>
</view>
</view>
<view class="agreement-execute_container-img">
<view class="parta-execute_box">
<view class="textparta">甲方(团队长)签字</br><text style="padding-left: 15rpx;">(单位盖章)</text></view>
<image :src="list.doctorBase64" mode="aspectFill" style="width: 280rpx; height: 200rpx;"></image>
</view>
<view class="parta-execute_box">
<view class="textparta">乙方(居民)签字</br><text style="padding-left: 8rpx;">或拍照</text></view>
<image :src="list.residentBase64" mode="widthFix" style="width: 180rpx; height: 180rpx;"></image>
</view>
<view class="parta-execute_box">
<view class="textparta">机构公章</view>
<image :src="list.orgBase64" mode="widthFix" style="width: 180rpx; height: 180rpx;"></image>
</view>
</view>
<!-- <u-mask :show="signatureshow" @click="signatureshow = false">
<view style="position:absolute;bottom:0;height:900rpx;width:100%;background-color: #fff;"
v-if='signatureshow'>
<signature @userSignaturePictureUrl='userSignaturePicture' @click.native.stop
style='background-color: #F4F5F7;width: 100%;height: 900rpx;'></signature>
</view>
</u-mask>
</u-mask> -->
<!-- <uni-fab ref="fab" horizontal="left" vertical="bottom" :content="fabContent" @trigger="fabTrigger" /> -->
</view>
</template>
<script>
import baseurl from '@/api/baseurl.js'
import signature from '@/components/signature/signature.vue'
import {
getContent
getSignProtocol
} from '@/api/pagesC/contractsigningprotocol/index.js'
export default {
components: {
@ -24,25 +130,74 @@
},
data() {
return {
orgNo: null,
content: null,
show: false,
signatureshow: false,
list: null,
fabContent: [{
iconPath: '/static/pageC/signature-unselected.png',
selectedIconPath: '/static/pageC/signature-selected.png',
text: '居民签字',
active: true
}, {
iconPath: '/static/pageC/camera-unselected.png',
selectedIconPath: '/static/pageC/camera.png',
text: '居民拍照',
active: true
}],
};
},
methods: {
//
fabTrigger(e) {
if (e.index === 0) {
this.signatureshow = true
} else if (e.index === 1) {
this.openCamera()
}
},
openCamera() {
let that = this
setTimeout(function() {
uni.chooseImage({
sizeType: ['compressed'],
sourceType: ['camera'],
success: function(res) {
let tempFilePath = res.tempFilePaths[0]
uni.saveImageToPhotosAlbum({
filePath: tempFilePath,
success: (resp) => {
uni.uploadFile({
url: baseurl +
'/applet/sign/apply/residentSignatureUpload',
filePath: tempFilePath,
name: 'file',
header: {
region: '1'
},
timeout: 10000,
success(respp) {
// residentAutographPath
console.log(respp)
}
})
}
})
}
})
},
150)
},
// //
userSignaturePicture(data) {
console.log(data)
this.show = false
this.signatureshow = false
},
info() {
getContent(this.orgNo, '1').then(res => {
this.content = res.data.content
getSignProtocol(this.cardNo, '1').then(res => {
this.list = res.data
})
},
},
onLoad(options) {
this.orgNo = options.orgNo
this.cardNo = options.cardNo
this.cardNo = '372424194703207523'
this.info();
},
}
@ -50,7 +205,59 @@
<style lang="scss">
.app {
margin-top: 100rpx;
padding: 0 40rpx;
width: 98%;
margin: 10rpx auto;
background-color: #fff;
}
</style>
.agreement-title-box {
padding-top: 20rpx;
margin: 0 0 30rpx;
font-size: 40rpx;
font-weight: 600;
text-align: center;
}
.agreement-content-container {
margin: 10rpx 10rpx;
font-size: 16px;
color: #333333;
padding-bottom: 100rpx;
}
.agreement-content_parta-box {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
margin-bottom: 20rpx;
}
.box-line {
display: inline-block;
padding: 0 20rpx;
text-align: center;
border-bottom: 1px #808080 solid;
}
.agreement-execute_container-img {
display: flex;
flex-wrap: wrap;
padding-bottom: 200rpx;
.parta-execute_box {
width: 50%;
.textparta {
display: inline-block;
width: 100%;
text-align: center;
}
image {
display: block;
margin: 30rpx auto;
}
}
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
static/pageC/camera.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB